多模态大模型VITA : GPT-4o的简易平替

Abs:https://arxiv.org/pdf/2408.05211
Demo:https://vita-home.github.io/
Code:https://github.com/VITA-MLLM/VITA

原文:https://zhuanlan.zhihu.com/p/714031459

腾讯优图开源多模态大模型

总览

传统的音频交互需要预定义的唤醒词,例如每次提问时都需要说“Hi! Siri∼”,或者需要按下按钮来控制输入的音频问题(限制1)。此外,当模型生成输出时,不能支持新的查询,因为以前的系统只能依次响应输入的查询(限制2)。VITA克服了这两个limitations。

GPT-4o 的卓越多模态能力和用户交互体验在实际应用中非常重要,但没有开源模型在这两个领域同时表现出色。本文介绍了 VITA,这是首个能够同时处理和分析视频、图像、文本和音频模态的开源多模态大语言模型(MLLM),并且具备先进的多模态交互体验。我们在以下三个关键特性,与现有的开源 MLLM 有所区分:

  • 全方位多模态理解能力VITA 展示了强大的多语言、视觉和音频理解基础能力,并在多种单模态和多模态基准测试中表现优异。
  • 非唤醒交互VITA 可以在不需要唤醒词或按钮的情况下被激活,并对环境中的用户音频问题做出响应。
  • 音频打断交互:VITA 能够实时跟踪和筛选外部查询,允许用户随时以新问题打断模型的生成,VITA 将根据新的查询做出相应的响应。

VITA 模型的详细介绍

VITA 的整体训练流程如上图所示,由三个阶段组成:LLM指令微调、多模态对齐和多模态指令微调

LLM 指令微调

我们选择 Mixtral 8x7B 作为基础语言模型,它是具有稀疏专家混合(SMoE)架构的代表性 LLM,性能在开源 LLM 中名列前茅,是我们工作的理想起点。然而,我们观察到官方的 Mixtral 模型在理解中文方面表现有限。为此,我们扩展了基础模型的中文词汇量,将词汇量从 32,000 增加到 51,747。这一扩展不仅增强了双语(中英文)理解能力,还减少了相同文本下的词元数量,从而提高了推理效率在扩展词汇后,我们使用 500 万条合成的双语语料库进行纯文本指令微调。

补充:Mixtral 8x7B 是一种具有开放权重的稀疏专家混合模型 (SMoE),在大多数基准测试中都优于 Llama 2 70B 和 GPT-3.5。Mixtral 可以在小批量大小下实现更快的推理速度,并在大批量大小下实现更高的吞吐量。Mixtral 8x7B 是一种仅包含解码器的模型,每层由 8 个前馈块(即专家)组成。对于每个 token,在每一层,路由器网络都会选择两名专家来处理当前状态并组合他们的输出。尽管每个 token 只看到两个专家,但所选的专家在每个时间步上都可能不同。因此,每个 token 可以访问 47B 参数,但在推理过程中仅使用 13B 激活参数。Mixtral 8x7B 并不是大家认为的有 8 个 Mistral 7B 模型,名字中的 8 代表 8 个专家。

多模态对齐

在这一阶段,我们旨在弥合文本与其他模态之间的表示差距,为多模态理解奠定基础。

视觉模态

视觉编码器:我们使用 InternViT-300M-448px 作为视觉编码器,该编码器接收 448×448 的图像作为输入,通过一个简单的两层 MLP 视觉连接器生成 256 个词元。对于高分辨率图像输入,我们实现了动态补丁策略来捕捉局部细节。视频被视为图像的特殊情况进行处理。如果视频长度小于 4 秒,我们均匀采样 4 帧;如果视频长度在 4 到 16 秒之间,我们每秒采样一帧;对于超过 16 秒的视频,我们均匀采样 16 帧。为了防止引入过多的视觉词元,我们不对视频的单个帧执行动态补丁。

视觉对齐:在视觉对齐阶段,我们仅训练视觉连接器。表 1 总结了使用的训练数据(不包括纯文本SFT部分)。此外,在此阶段我们不使用音频问题。

  • 对于一般图像描述任务,我们引入了来自 ShareGPT4V 的 GPT-4V 生成部分,以确保数据质量。我们还引入了 Allava-Caption 和 ShareGTP4o-Image,并补充了一些由现有 MLLM 生成的中文图像描述。
  • 对于一般图像问答(QA)任务,我们初步收集了三个数据集:LLaVA-Mixture-sample、Lvis-Instruct 和 ScienceQA。我们使用现有的 MLLM 生成了额外的 21.8K 中文 QA 数据。此外,我们从 LLaVA-150K 数据集中移除了标题子集,并将其余部分翻译为中文。
  • 对于 OCR 和图表任务,我们引入了 Anyword-3M、ICDAR2019-LSVT、ICDAR2017-RCTW、Open-Chart(包括 ChartQA、DVQA、InfoVQA、Pew 和 OpenCQA),以及一些由现有 MLLM 从其他开源数据中生成的合成数据。
  • 对于一般视频描述任务,我们使用 ShareGemini 数据集。
  • 对于一般视频 QA 任务,我们使用现有的 MLLM 重新标注了 Video-ChatGPT 和 VideoChat2 的开源数据。
不同的文本数据直接拼接到 6K 词元。图像首先被划分为局部补丁,然后将不同的图像-文本对进行拼接。视频数据则直接逐帧采样作为输入,无需进行拼接。通过这种方式,我们能够统一不同训练批次中的数据长度,从而提高训练效率。

数据拼接:对于纯文本数据和图像数据,我们的目标是将上下文长度拼接到 6K 词元,如上图所示。视频数据则不进行拼接。拼接不同的数据带来了两个好处:一是支持更长的上下文长度,使得从单一到多图像-问题交互成为可能,从而实现更灵活的输入形式和延长的上下文;二是提高了计算效率,因为视频帧通常包含大量视觉词元。通过拼接图像-问题对,我们在训练批次中保持了词元数量的平衡,从而提高了计算效率。此外,我们发现使用拼接数据训练的模型在性能上与未拼接数据的模型表现相当。

音频模态

音频编码器:输入音频首先通过 Mel 频率滤波器块处理,该块将音频信号分解为 Mel 频率尺度上的各个频带,模拟人类对声音的非线性感知。随后,我们使用 4 层 CNN 下采样层和 24 层的变换器,共计 341M 参数,处理输入特征。我们采用简单的两层 MLP 作为音频-文本模态连接器。最终,每 2 秒的音频输入被编码为 25 个词元。

音频对齐:在对齐任务中,我们选择了自动语音识别(ASR)。我们的数据集包括 Wenetspeech,该数据集涵盖了超过 10,000 小时的多领域语音识别数据,主要集中在中文任务上。同样,Gigaspeech 也包含 10,000 小时的高质量音频数据,大部分数据用于英语语音识别任务。另一个任务是音频字幕生成,依赖于 Wavcaps 的 AudioSet SL 子集,该数据集包含 400K 个音频片段及其对应的音频字幕。在对齐过程中,音频编码器和连接器都进行了训练。

多模态指令微调

在这一阶段,我们对模型进行指令微调,以增强其遵循指令的能力(文本 & 音频指令)。

训练数据

数据构建:指令微调阶段的数据来源与对齐阶段相同(见表1),并进行了如下改进:

  •  音频问题替换:我们使用 TTS 技术(如 GPT-SoVITS6)将大约一半的问题随机替换为其音频版本,以提升模型对音频查询的理解能力和指令跟随能力。音频问题和文本问题的数量见表1。
  •  系统提示设置:设置不同的系统提示,以避免不同类型数据之间的冲突(见下表)。例如,有些问题可以基于视觉信息或模型自身知识进行回答,这可能会导致冲突。此外,由于图像数据的补丁类似于视频数据的多个帧,可能会使模型感到困惑。系统提示明确区分不同的数据类型,使其更易于理解。

噪声音频构建:在人机交互过程中,并非所有的音频输入都需要响应,这些被称为噪声音频。一个具有良好交互能力的系统应能主动识别音频类型,并有选择性地执行后续输出。为此,我们需要构建各种噪声音频样本以供模型识别。具体而言,我们从现有的多模态和单模态 QA 数据中随机抽取 474K 个句子。这些负样本文本集中在不需要用户响应的非查询相关内容上,其长度分布与正向问题的长度分布一致。然后,我们使用 TTS 工具将这些句子转换为音频。噪声音频样本的构建使模型能够识别不需要响应的音频输入,这有助于实现非唤醒交互。具体的训练策略将在以下部分详细说明。

训练过程

根据上述构建的 QA 对,模型需要区分三种类型的查询:

  • 查询音频:问题由音频发起。
  • 噪声音频:输入为音频,但不包含问题。
  • 查询文本:问题由文本发起。

基于这些查询类型,我们设计了三种状态标记 <1>、<2> 和 <3>。在训练阶段,我们在答案的开头插入对应的状态标记,使模型能够灵活处理不同的交互行为。具体如下:

  • 状态标记 <1> 表示问题输入为查询音频。在这种情况下,模型的输出需要以文本或通过 TTS 工具转换的语音形式呈现给用户。
  • • 状态标记 <2> 表示问题输入为噪声音频。模型应输出 EOS 标记作为终止符。然而,我们发现训练过程中突然终止输出可能会显著降低性能。因此,我们将噪声音频对应的文本发送给 LLM,并使用其输出文本作为训练目标。在推理过程中,<2> 作为另一种特殊的 EOS 标记。
  • 状态标记 <3> 表示问题为纯文本,用于区分训练集中的前两种查询。

在训练过程中,视觉和音频编码器保持冻结状态,而连接器与 Mixtral 8×7B 一起进行训练。

模型部署:双工策略

在这一部分,我们主要讨论如何实现两种交互功能:非唤醒交互和音频中断交互。

非唤醒交互

非唤醒交互意味着模型可以在不需要唤醒词或按钮的情况下被激活,并对环境中的用户音频问题做出回应。部署过程必须满足以下要求:

  • • 实时跟踪环境声音:这涉及确定音频内容是否属于人类语言。
  • • 过滤噪声音频:模型应仅对有效的用户查询音频作出响应。

对于第一个要求,现有的语音活动检测(VAD)可以提供帮助。VITA 使用 SileroVAD ,该系统经过大规模语料库训练,涵盖超过 6,000 种语言,并且能够在各种背景噪声下表现良好。对于第二个要求,我们利用第 3.3.2 节中描述的状态标记 <2>。这使模型能够自动区分输入音频是否为有效查询。如果输入为非查询类型,模型将直接终止推理,从而仅对查询类型的输入作出响应。

音频中断交互

音频中断交互允许用户随时用新问题打断模型的生成过程。为实现这一点,部署环境必须满足以下要求:

  •  实时跟踪和过滤外部查询:在生成响应的同时,系统必须实时跟踪和过滤外部查询。
  •  回答新问题:当出现新问题时,系统必须停止当前生成,整合历史上下文,并对当前查询作出回应。

为实现这一目标,我们提出了双工部署框架。如上图所示,两个 VITA 模型同时部署。在典型条件下,生成模型负责回答用户查询。同时,监控模型在生成过程中检测环境声音。它忽略非查询用户声音(即噪声音频),但在检测到查询音频时会停止生成模型的进度。监控模型随后整合历史上下文,并对最新的用户查询做出回应。这时,生成模型和监控模型的身份会发生转变。

评估

语言表现:

为了验证我们训练过程对语言模型的有效性,我们将训练后的模型“Mixtral 8x7B Ours”与官方版本“Mixtral 8x7B Instruct”进行对比,评估使用了四个数据集:C-EVAL、AGIEVAL、MMLU 和 GSM8K。这些数据集涵盖了包括普通多项选择题、多学科问答,以及数学和逻辑推理任务的各种场景,涉及中文和英文上下文。结果如上表所示,我们的训练显著提升了模型在中文评估集(C-EVAL 和 AGIEVAL)上的能力,同时保持了在英文相关基准(MMLU)上的原有性能,并在数学推理任务(GSM8K)中显示出显著的改进。

音频表现:

为了验证我们模型所学的语音表示的鲁棒性,我们在 Wenetspeech 和 Librispeech数据集上进行了测试。Wenetspeech 具有两个评估拆分:test_net 和 test_meeting。前者的数据源与训练数据更为接近,较容易;后者则具有更大的挑战性。作为我们模型的留出数据集,Librispeech 评估了模型在未见数据集上的泛化能力。它有四个评估拆分:“dev” 开头的是验证集,“test” 开头的是测试集。“Clean” 指较不具挑战性的集合,而 “other” 指较具挑战性的集合。我们可以看到,VITA 在 ASR 基准上取得了可观的结果。

多模态表现:

为了评估 VITA 的多模态能力,我们在四个代表性基准上进行评估,包括 MME 、OCRBench、HallusionBench 和 Video-MME 。如上图所示,在图像理解方面,VITA 超越了图像专用的开源模型 LLaVA-Next,接近于闭源模型 Gemini 1.5 Pro。在视频理解方面,VITA 超过了视频专用的开源模型 Video-CCAM。尽管 VITA 与视频专用的 LLaVA-Next-Video 之间存在差距,但鉴于 VITA 支持更广泛的模态并优先考虑交互,这种差距是可以接受的。然而,值得注意的是,当前开源模型与专有模型在视频理解能力方面仍存在较大差距。

结论与未来工作

在本文中,我们介绍了 VITA,一个强大的开源多模态大语言模型,它将视频、图像、文本和音频理解整合到一个统一的框架中,并提供了先进的交互体验。除了强大的多模态基础能力,VITA 还在开源社区中开创了新的多模态交互方式,包括非唤醒交互和音频中断交互。然而,当前版本仍面临以下限制:

  • 基础能力的提升:虽然 VITA 在单模态和多模态任务中相较于领先的开源模型表现出色,但与专有模型相比仍存在显著差距。
  • 噪声音频构建的优化:使用现有数据的非查询响应作为噪声音频样本是一种简单而有效的方法。然而,VITA 有时会将噪声音频误分类为查询音频,这突显了需要更细致的构建方法。
  • 与 LLM 联合构建端到端 TTS我们目前使用额外的 TTS 工具将 LLM 生成的文本转换为语音,这一过程比较耗时。如果能够将 TTS 与 LLM 结合,实现端到端的语音输出,可能会大大提升实时交互性能。

未来的工作将集中在解决这些限制,并探索以下方向:

  • 提升多模态基础能力:引入更多数据并改进模型架构,以缩小与专有模型的性能差距。
  • 优化噪声音频识别:开发更复杂的噪声音频识别算法,以提高模型过滤无关音频的能力。
  • 实现端到端 TTS:研究如何将 TTS 功能直接集成到 LLM 中,以实现更高效的语音生成和实时交互。

我们期待在未来版本的 VITA 中克服这些挑战,并继续推动开源多模态模型的发展。

Seed-ASR基于大型语言模型(LLM)的语音识别模型

https://arxiv.org/abs/2407.04675

https://bytedancespeech.github.io/seedasr_tech_report/

字节推出Seed-ASR,支持复杂场景、语种、多方言超精准识别

Seed-ASR1是一种基于大型语言模型(LLM)的语音识别模型。Seed-ASR是在音频条件大语言模型(AcLLM)框架上开发的,利用了大型语言模型的强大能力,将连续的语音表示和上下文信息输入到语言模型中。通过分阶段的大规模训练以及语言模型中上下文感知能力的引入,Seed-ASR 在综合评估集上(涵盖多个领域、口音/方言和语言)比传统的端到端模型有了显著提升。

摘要

ASR模型需要在各种应用场景中准确地转录给定特定上下文信息的各种语音信号(来自不同领域、语言、口音等)。融合了额外语言模型的经典端到端模型表现良好,但主要应用在数据匹配场景中,并且逐渐接近瓶颈。Seed-ASR基于大语言模型(LLM)的语音识别模型。Seed-ASR是基于audio conditioned LLM(AcLLM)的框架开发的,通过将连续语音表示与上下文信息一起输入到LLM中来利用LLMs的功能。 通过阶段式大规模训练和LLM中的上下文感知能力的启发,Seed-ASR在综合评估集(包括多个域,口音/方言和语言)上展示了端到端模型的显着改进。此外,Seed-ASR可以进一步部署,以支持各种场景中的特定需求,而无需额外的语言模型。与最近发布的大型ASR模型相比,Seed-ASR在中文和英文公共测试集上的单词(对于中文字符)错误率降低了10%-40%,进一步证明了其强大的性能。

Introduction

Seed-ASR,一个基于LLM的大规模ASR模型。为了成为一个“更智能”的语音识别模型,通过将连续语音表示与指令和上下文信息一起输入到LLM中,利用LLMs的能力。Seed-ASR具有五大特点:

Seed-ASR 具有高识别率、大模型容量、多语言支持、上下文感知和分阶段训练五大特点。通过2000万小时语音和90万小时ASR数据训练,Seed-ASR(CN)和Seed-ASR(ML)在多个数据集上表现优异。其采用了包含20亿参数的音频编码器和数百亿参数的MoE大语言模型,支持普通话、13种方言以及多种语言,并计划扩展至40多种语言。通过整合包括历史对话、视频编辑历史和会议参与详细信息,来捕获与语音内容相关的重要指标。这种集成大大提高了各种场景中ASR评估集中的关键词召回率。【关键字召回率可以定义为 ASR 系统成功识别出的关键字的数量占所有实际出现的关键字数量的比例】,增强了多场景下的表现。Seed-ASR的开发经历了一个简单而有效的训练方案:音频编码器的自监督学习(SSL) → 监督微调(SFT) → 上下文SFT → 强化学习(RL)。每个阶段都有不同的作用,确保Seed-ASR的性能逐步提高。

数据集测评:

我们建立了一个高质量评估集的系列,包括广泛的语音输入,作为不同的主题,口音/方言,语言和语音持续时间。这些集合还包括一个ASR系统在不同应用场景下的定制能力评估例如,对话场景下的关键词识别准确性和一致性)。在Seed-ASR设计中,我们选择了大规模训练的路径,利用了大模型容量和扩展训练数据以增强泛化性。 我们考虑到提供给 AcLLM 框架的上下文,通过训练模型以来详细说明其定制化能力,从而形成一个适用于不同场景的统一且紧凑的模型结构。在我们的多维评估集上,与经典的端到端模型相比,Seed-ASR展示了更全面、更强大的模型能力。Seed-ASR的性能优势在公共测试集和我们的主观理解评估中得到了进一步证明。

Motivation

ASR模型的升级可以从LLM的技术进步中得到启发,主要可以归结为三个方面:

·统一模型框架。LLM采用基于下一个令牌预测的仅解码器框架。它对输入输出文本进行排序,依靠自注意机制建立序列中标记之间的依赖关系,从而统一文本理解和文本生成;

·缩放定律的力量。大规模模型参数为LLM提供了从不同数据源学习知识的关键能力。例如,从GPT-2 到GPT-3 ,参数数量从15亿增加到1750亿,使GPT-3表现出更好的泛化和涌现能力。

·全面的训练pipline,ChatGPT经历三个阶段:预训练,监督微调(SFT)和带有人类反馈的强化学习(RLHF)。在预训练阶段,LLM是在大量的文本数据上训练的,这使得它存储了大量的知识。在SFT阶段,LLM进一步针对更高质量的面向任务的数据进行微调,增强其根据上下文进行推理和理解任务指令的能力。最后,在RLHF阶段,训练目标转变为在强化学习的帮助下使LLM的行为与人类偏好保持一致;

由于ASR的任务是将语音转换为文本,因此其文本生成过程与LLMs一致。存储在LLMs中的广泛的文本知识和上下文推理能力使它们成为向ASR提供语义指导的潜在成分。剩下的核心挑战是如何使LLMs更好地“理解”语音,这是一种不同于文本的模态。

方法

Framework and Training Recipe

基于上述动机,我们提出了Seed-ASR,一个大规模的语音识别模型建立在音频条件LLM(AcLLM)的框架。通过将编码的连续语音表示与任务指令和相关上下文一起输入到预先训练的LLM中,Seed-ASR可以利用LLM的丰富文本知识和推理能力来生成语音的相应文本转录。总体框架如图2所示。

音频是与文本不同的模态。为了使LLMs更好地理解不同的语音输入,我们在LLMs中采用了大规模预训练的概念。具体来说,我们构建了一个具有近20亿个参数的音频编码器,并对数千万小时的数据进行了自监督学习(SSL)。预训练的音频编码器获得了强大的语音表示能力,这有助于在监督微调(SFT)期间快速收敛。在大规模SSL阶段之后,我们在AcLLM框架内实现了一个简单有效的阶段式训练方法(如图3所示)。在SFT阶段,我们通过对大量的语音-文本对进行训练,建立语音和文本之间的映射关系。在上下文SFT阶段,我们使用相对少量的上下文-语音-文本三元组来引出LLM从上下文中捕获语音相关线索的能力。 这些三重数据可以根据具体场景进行定制。在强化学习阶段,我们应用MWER的训练标准[传统Attention-based Sequence-to-Sequence model使用cross-entropy作为损失函数,不是直接对WER指标进行优化,而真正的目标是直接或间接地最小化WER => MWER Training]和一些改进来进一步加强我们模型的能力。在下面的小节中,我们将更详细地介绍这些方法。

语音编码器的自监督预训练

大规模SSL使音频编码器能够从语音中捕获丰富的信息。受基于BERT的语音SSL框架的启发,我们开发了我们的音频编码器,这是一种conformer-based的模型[Conformer 是 Google 在 2020 年提出的语音识别模型,主要结合了 CNN 和 Transformer 的优点,其中 CNN 能高效获取局部特征,而 Transformer 在提取长序列依赖的时候更有效。 Conformer 则是将卷积应用于 Transformer 的 Encoder 层,用卷积加强Transformer 在 ASR 领域的效果。],可以捕获存储在音频信号中的全局和局部结构。在这项工作中,我们主要关注语音信号。由于它是在大规模无监督数据上训练的,因此我们将训练后的音频编码器称为LUISE,它代表L规模无监督迭代SpeechEncoder

LUISE秉承BERT的概念,采用掩蔽语言预测的学习范式。训练过程如图4所示。具体地,首先将从波形提取的梅尔滤波器组特征的序列输入到 tokenizer模块以获得每个帧的离散标签。然后,使用交叉熵准则进行LUISE的训练,仅针对被掩蔽的帧计算损失函数。训练后,softmax层被移除,LUISE的编码器部分用于后续的监督微调。

我们利用一个迭代的固定 tokenizer的方法来获得相应的离散标签的每一帧。在第一次迭代中,我们应用随机projection层将语音特征投影到随机初始化的码本中,并通过找到码本中最近的向量将它们映射到离散标签。在第二次迭代中,我们对先前训练的编码器的中间层的表示执行K均值聚类以获得新的码本。然后通过在新码本中找到与来自相同中间层的表示最接近的向量来获得离散标签。在中间层的选择过程中,我们冻结了第一次迭代中训练的编码器参数,并为每个中间层添加了映射层和连接主义时间分类(CTC)损失,以进行监督微调。 图5显示了通过对每个中间层的表示进行监督微调获得的字错误率(WER)。对于具有20亿个参数的LUISE,第25层(32层中)的输出展示了最佳的语义表示,并用于在后续迭代中生成离散标签。

有监督微调SFT

经过对大规模纯语音数据的训练,LUISE已经开发出强大的语音表示能力。它以40ms/帧速率输出包含丰富语音和语义信息的连续表示。为了使AcLLM更好地理解语音中相应的文本内容,我们需要将编码表示的语义信息映射到LLM的语义空间中。LLM为了实现这一点,我们使用以下两种方法:

  1. 在模型结构中,我们引入了一个转换器模块来连接我们的音频编码器(LUISE)和LLM(如图2所示)。转换器包括下采样模块和线性投影层。我们发现不同的下采样方法同样有效,因此我们使用最简洁的方法:帧拼接。具体来说,我们在特征维度上拼接4个连续的语音表示帧,然后输入到线性层中。因此,输入到LLM中的语音表示帧率为160毫秒;
  2. 在训练方法上,我们采用“可学习音频编码器+可学习转换器+固定LLM“的策略,在保持LLM参数不变的情况下,最大限度地保留了LLM丰富的语义知识和推理能力。可学习的音频编码器和转换器参数确保语音表示中包含的语义信息与LLM的语义空间对齐。LLM在训练过程中,使用交叉熵损失函数,只有生成转录文本的标记位置参与交叉熵计算;

上下文SFT

在大规模语音-文本对数据上进行训练后,我们的SFT模型在覆盖多个领域的测试集上表现出色。然而,SFT模型的训练方式决定了它缺乏在给定上下文信息(上下文)的情况下识别模糊语音内容的能力这些问题在涉及口音(语音歧义)和同音异义词或稀有词(语义歧义)的情况下更加明显。因此,我们引入了上下文感知训练和联合波束搜索的方法,以增强模型有效利用上下文的能力(图6中给出了一个示例)。

  • 上下文感知训练:首先,我们使用我们的内部大型语言模型来生成与语音转录相关的上下文。在我们的实验中,它比使用长段语音中的开头和结尾的转录文本作为上下文表现得更好。使用生成的自然语言上下文还可以提供更完整的语义,从而除了从上下文复制相关转录内容之外还能够学习推理。然后,我们构建了一个<context,speech,text>三元组的数据集,并将其与一定比例的一般ASR数据(语音-文本对数据)混合用于上下文感知训练。如图2所示,在上下文感知训练期间,我们将上下文和语音表示输入到LLM中。LLM这种训练的目标是增强模型从上下文中捕获语音内容相关线索的能力。
  • 联合波束搜索:我们发现,直接使用本地波束搜索存在严重的幻觉问题。为了解决这个问题,我们提出了一种联合波束搜索的解码策略来缓解这个问题。具体地,我们使用联合波束搜索来找到最佳得分 Pjoint⁢(𝒚|𝒙,𝒄) ,其中 𝒚 表示预测的假设, 𝒙 是语音信息,并且 𝒄 是给定的上下文信息。超参数 α 用于在解码期间平衡语音信息和上下文信息的重要性:

同时,我们引入了一种修剪策略,首先使用上下文无关的得分 P⁢(𝒚|𝒙) 过滤出声学上不可信的候选令牌,然后对剩余的候选令牌应用联合波束搜索。修剪策略在缓解幻觉中起着重要作用。

强化学习

由于SFT和上下文SFT阶段中的训练基于交叉熵目标函数,因此与推断期间使用的评估度量(例如WER)不匹配。随着强化学习(RL)的发展,它可以在序列建模任务中学习相对最优的决策策略。因此,我们通过构建基于ASR度量的奖励函数来引入RL阶段。

单词错误率(WER)通常被认为是评估ASR模型性能的核心指标,但句子中的某些内容(例如关键字)在理解整个句子中起着更关键的作用。因此,我们还引入加权WER(WWER)作为额外的奖励函数,强调关键字错误的重要性具体来说,我们应用最小字错误率(MWER)作为另一个训练目标,在我们的RL阶段中使用交叉熵目标 ℒCE 进行插值:

    在传统的 MLE 训练中,损失函数通常是基于每个时间步的交叉熵损失。这意味着模型优化的目标是每个时间步的预测概率分布,这可能导致最终的序列输出与实际参考输出在词级别上不匹配。MWER 训练则直接优化序列的 WER,这是更接近于最终应用的评价标准,尤其是在语音识别和自然语言处理任务中。

MWER 训练的实现方法:
候选序列生成:在 MWER 训练过程中,模型会先使用其当前参数生成多个候选的输出序列(通常使用采样或束搜索策略)。这些候选序列代表了模型对给定输入的不同潜在输出。

损失计算:计算每个候选序列的词错误率(WER),然后通过比较这些候选序列与参考序列之间的WER来评估损失。具体来说,损失函数会惩罚那些与参考序列WER较高的候选序列,同时奖励那些WER较低的候选序列。

最小化损失:使用反向传播算法更新模型参数,以最小化平均 WER 损失。由于损失函数直接反映了序列级别的错误率,这种方法能够更有效地训练模型来生成更准确的输出。

为了提高强化学习的训练效率,我们部署了一个远程服务来生成假设,并在更新当前服务器上的模型参数的同时计算MWER损失。在强化学习训练过程中:1)我们使用前一阶段训练的上下文SFT模型初始化模型参数; 2)我们利用高质量的数据进行强化学习训练,数据规模为数千小时。3)为了保持初始化模型的上下文感知能力,我们的训练数据还包括一定比例的上下文、语音、文本三元组。在完成RL训练之后,我们获得了我们的Seed-ASR模型。

表1:RL阶段的消融研究。作为奖励函数的加权WER在所有三个评估集上显示出比WER更好的性能(这些集的详细信息在第4.1节中介绍)。在强化学习阶段使用的上下文、语音、文本三元组的训练数据保证了上下文感知能力的不下降。Seed-ASR使用最后一行中的策略。WER或加权WER的度量计算中文、日文和韩文的字符错误,以及英文和其他语言的单词错误。

Observations

在改进Seed-ASR性能的过程中,我们也得到了一些观察:

Scaling Law

在LLM领域,可以观察到,较大的模型可以通过在更多数据上进行训练来不断降低损失值。据我们所知,在基于LLM的框架下,没有关于音频编码器的缩放律的相关研究。在SSL阶段,我们进行实验,以探讨不同的模型大小的LUISE的性能。具体来说,我们选择了五组型号尺寸:75 M、0.2B、0.6B、2B和5B。训练数据包括770万小时的无监督语音数据,覆盖多个领域,确保模型容量的充分利用。不同大小的模型在大多数训练配置中保持一致性,只是随着模型大小的增加,我们会按比例扩大模型的宽度和深度,适当增加批量大小和权重衰减,并降低学习率。

图7:(a)描绘了我们的音频编码器(LUISE)的预训练损失与模型参数大小的以2为底的对数之间的相关性。(b)描述了SFT之后的贪婪WER与模型参数大小的以2为底的对数之间的相关性。(c)描述了SFT之后的贪婪WER与LUISE的预训练损失之间的相关性。

我们首先关注验证集上的交叉熵预训练损失值与模型大小之间的相关性。如图7所示,我们观察到两者之间几乎呈线性相关。此外,我们比较了基于训练的LUISE的小规模SFT数据训练后的性能。使用贪婪搜索进行推理。如图7所示,多域评估集上的WER度量也与LUISE的模型大小呈现出近乎线性的相关性。此外,这揭示了SFT之后测试集上的WER度量与图7中SSL阶段中的损失函数值之间的正相关性。这些关于缩放律的发现为我们的编码器选择(考虑性能和效率的平衡)和后续优化提供了指导。

Long-form Ability

我们的Seed-ASR是在AcLLM的框架下建模的,它自然地利用LLM的语义知识和长上下文建模能力。因此,我们还探索了直接将整个长格式语音输入LLM进行识别的选项。该方法有效地避免了与对多个独立推断的长形式语音进行分割相关联的两个问题:1)分割过程可能导致边界处的信息丢失,从而降低识别准确性; 2)分割过程破坏了长形式语音中的强全局上下文信息,从而影响识别的准确性和一致性。

具体来说,我们构建了一系列长格式视频测试集,包括来自不同来源的5个数据集。在训练过程中,整个长格式数据被输入到模型中,而没有任何分割处理。测试集的持续时间分布与训练集的持续时间分布相当。如表2所示,使用长形式数据进行训练和测试,与短形式训练相比,相对WER降低了近8.8%,短形式训练采用域自适应VAD将长形式语音分割成几个部分进行训练和测试。长格式视频测试集的最大持续时间为5分钟,并具有显著长度延长的调度器。

模型与评价

目前,我们专注于在多样化场景下全面提升中文和多语种(不含中文)语音识别性能。因此,我们提出了两个具有相同模型结构和训练配方的Seed-ASR模型:汉语多方言模型,称为Seed-ASR(CN),和多语言模型,称为Seed-ASR(ML)。虽然我们也有同时支持中文和多语言的模型,但本报告将特别详细介绍两种分别专注于中文和多语言(不包括中文)的Seed-ASR模型。

Seed-ASR(CN)不仅可以用单个模型对普通话和13种汉语方言进行转录,而且在多领域、多方言、多口音和公共集等多维评估集上,与其他已发布的大型模型相比,性能有了显著的提高。此外,在上下文SFT阶段的训练赋予种子ASR(CN)有效的上下文感知能力,如在对话上下文评估集上所示。同样,Seed-ASR(ML)在8种多语言公共集(包括英语)和多领域评估集上取得了与其他已发布模型相比具有竞争力的结果,并且正在扩展到40多种语言。在下面的部分中,字错误率(WER)的度量被用作主要的客观度量。除非另有说明,否则WER的度量计算中文、日语、韩语的字符错误,并计算英语和其他语言的单词错误。

Seed-ASR (CN)

Seed-ASR(CN)遵循图3所示的完整训练管道。在SSL阶段,我们使用了具有近2B参数的LUISE编码器,并对来自各个领域的近800万小时的普通话和汉语方言语音数据进行了训练。在SFT阶段,我们使用经过训练的LUISE和具有超过百亿个参数的LLM进行模型初始化。训练数据包括包含多个域的普通话数据和方言数据的混合。SSL和SFT阶段的详细数据分布见附录A.3。在上下文SFT阶段,我们使用一定比例的SFT阶段数据与一些上下文、语音、文本三元数据混合进行训练。在RL阶段,我们使用训练好的上下文SFT模型进行初始化,并构建高质量的训练数据进行训练。在这个全面的训练过程之后,我们获得了Seed-ASR(CN)

为了全面评估Seed-ASR(CN)模型的ASR能力,我们在公开数据集上将其与其他已发布的模型进行了比较,并构建了一系列评估集,包括多领域集、多源视频集、硬案例集、多方言集、多口音集、上下文感知集和主观可懂度评估。

最后的结果是上述6个测试集的WER(中文字符)的平均值。我们用于比较的基线包括Paraformer-Large、Qwen-Audio和最近发布的基于LLM的ASR模型,其结构为Hubert+ Baichuan 2。他们的研究结果来自他们各自的论文。如表3所示。Seed-ASR(CN)表现出比其他模型更显著的性能优势,在这些公共数据集上获得了最先进的结果。对于6套的平均WER,Seed-ASR(CN)比其他已发布模型实现了超过24%-40%的WER降低。

对多域多源视频集的评估:

我们还对多领域评估集进行了全面的性能比较,该评估集包含来自视频,直播,语音搜索,会议,智能助手等各种场景的高质量评估数据,并将多领域集合中总共7个集合的加权平均WER作为最终指标。我们选择基于传感器的端到端模型[20],其具有MoE编码器和超过300 M的参数作为基线之一。此外,我们还在多域评估集上运行Paraformer-large(离线解码)的结果作为另一个基线。从表4中的结果来看,Seed-ASR(CN)显示出显著的性能优势,与我们强大的端到端模型相比,WER指标相对降低了47%以上。在覆盖7个不同子集的视频评估集上,Seed-ASR(CN)也获得了相当大的性能改善。 这些结果证明了Seed-ASR(CN)强大的基础能力。

此外,我们通过引入10个硬案例测试集来评估高级ASR能力,这些测试集覆盖了包括书名、汽车名称、成语、药品名称、电影名称、古诗、产品名称、音乐名称等在内的话语。这些测试集旨在评估模型识别包含专有名词的语音内容的能力,这些专有名词具有很强的专业性和领域特异性,反映了ASR模型的知识储备和识别准确率。硬案例集的评估指标是每个句子中给定关键字的F1分数。如表4所示,与端到端模型基线相比,Seed-ASR(CN)模型实现了F1值3. 3%的绝对增长,证明了AcLLM模型框架在利用LLM常识知识和语义推理能力方面的有效性。

多方言集和多口音集的评估:

由于我们的Seed-ASR(CN)模型支持普通话和13种汉语方言的识别,我们还引入了方言评估集。这套共包括13种方言(广东话、西南话、吴语、吉鲁话、中原话、闽语等)。并使用汉字的相同或相似发音对文本进行人工标注。我们的方言评估集的具体演示可在我们的网站2上获得。我们使用WER作为这个方言评估集的客观度量。

我们使用微调的Whisper Medium-v2,769 M参数作为我们的基线。为了进行公平的比较,我们使用相同的方言训练集训练Whisper Medium-v2和Seed-ASR(CN)。Seed-ASR(CN)需要在保持普通话综合能力的同时提高方言上的ASR性能,因此它使用来自多个领域的更大比例的普通话数据进行训练。相比之下,Whisper Medium-v2在多域集等综合评估集上显示出较差的结果。尽管如此,具有更大建模能力的Seed-ASR(CN)模型在13种方言集上仍然显示出优于基线的性能优势,13种方言的平均WER从21.68下降到19.2(相对WER降低11.4%),并且在单个方言测试集上相对WER降低超过21%。

为了进一步验证Seed-ASR(CN)对不同语音的识别性能,我们引入了一系列口音评估集,包括来自安徽、福建、甘肃、广东、贵州、湖南、江西、辽宁、陕西、山西和云南的11个中国口音。具体的口音语音样本也可在我们的网站2.如表6所示,与从头开始训练的强E2 E模型相比,Seed-ASR(CN)在口音测试集上表现出显着的改进。我们还通过在训练过程中移除重音SFT数据来进行消融研究,但Seed-ASR(CN)仍然在重音集上实现了强大的性能。在多方言、多口音评价集上的实验结果表明,该算法对不同地区的汉语语音识别具有较强的鲁棒性。

对对话上下文集的评估:

在语境感知的评估中,我们构建了一个高质量的对话语境集,其中对话历史被用作语境信息。如图8所示,我们提供了两个对话示例。每个测试用例包括对应的对话历史文本和当前识别的语音内容。我们将对话语境评估分为严格和宽松两个子集。严格子集包含对历史对话有很强依赖性的样本,以准确识别语音内容,例如人名。松散子集的历史对话和演讲内容之间的依赖性较弱,如专有名词。我们使用关键字召回作为评估指标。

总结:

在包括SFT → context SFT → RL的逐步训练配方之后,我们的Seed-ASR(CN)模型产生了。在上述综合评估集上,我们观察到我们的Seed-ASR(CN)模型的某些能力在不同的训练阶段得到了增强。在这里,我们对每个阶段的效果进行了详细的消融研究,结果如表9所示。首先,RL阶段的引入带来了对大多数评估集的改进,例如多域,多源视频,多方言,硬案例和代码切换。重音测试集中的轻微降级可能是由于训练数据比率。此外,上下文SFT阶段的训练对大多数测试集产生了积极的影响,特别是在上下文严格测试集上的召回度量方面带来了显着的改善。这进一步证明了我们的上下文感知训练和解码策略在上下文SFT阶段的有效性。

Seed-ASR (ML)

如上所述,Seed-ASR(CN)在识别普通话和汉语方言方面表现出很强的性能。为了将这些优势扩展到其他国家用户使用的语言,我们还将Seed-ASR方法应用于多语言场景,从而形成了我们的多语言模型:Seed-ASR(ML)。Seed-ASR(ML)的训练与Seed-ASR(CN)的主要区别在于训练数据。Seed-ASR(CN)专注于普通话和中国方言,而Seed-ASR(ML)则是在各种多语言数据集上进行训练的。在SSL阶段,Seed-ASR(ML)的音频编码器也使用了具有2B参数的LUISE,并使用来自多域源的数千万小时无监督多语言数据进行训练。在随后的阶段中,我们从我们的多语言ASR训练集中选择训练数据,这些训练数据总计数十万小时,涵盖9种语言:英语,中文,阿拉伯语,西班牙语,法语,印度尼西亚语,日语,韩语和葡萄牙语。 SSL和SFT阶段的详细数据分布见附录A.3。我们对多个评估集和公共数据集进行性能比较。

Evaluation on Multi-domain and Multi-accent Sets:

在多域评估集上,覆盖的域与第4.1.2节中介绍的种子ASR(CN)上的多域评估集相同。硬盒测试集涵盖了医疗健康、食品和饮料、体育、技术、服装、游戏、娱乐和美容等领域。我们还建立了对不同口音的英语的评估,包括来自英国,美国,澳大利亚,加拿大,中国,印度,新加坡,新西兰和南非的发言者。对于多语言评估,我们报告了7种非英语语言的平均WER性能:阿拉伯语(AR),西班牙语(ES),法语(FR),印度尼西亚语(ID),日语(JA),韩语(KO)和葡萄牙语(PT)。如表10所示,用于比较的基线包括Google USM [50](API call 3)、Whisper Large v3 [39](离线解码)和Universal-1 [41](API调用4)。由于Universal-1在我们的多语言多域评估集中仅支持3种语言,因此其相应结果未包含在此处。我们将这些模型在多语言多域评估集上的语言性能比较附在附录A.1中。从表10中的结果来看,与最强的基线相比,Seed-ASR(ML)在英语和多语言多领域评估集上分别表现出相对超过42%和40%。在英语多重音和硬格评估集上也观察到类似的显着改进。

除了内部多域评估集之外,我们还将Seed-ASR(ML)与英语和其他语言的公共测试集上的其他模型进行了比较,包括Librispeech[36] test clean/other,MLS[38],Tedo 3[24],Callhome,Switchboard[19],AMI[30]和Fleurs[13]。测试集的详细信息见附录A.2。结果如表11所示。请注意,基线模型的所有结果都是由基线模型的相应论文或技术报告的WER(Whisper Large-v3结果来自Universal-1的技术报告[41])。 如表11所示,Seed-ASR(ML)在不同语言的大多数测试集上都实现了最佳性能,提高了10%到40%,这表明Seed-ASR(ML)对训练期间看不到的领域具有泛化能力。

与Seed-ASR(CN)类似,Seed-ASR(ML)在广泛的评估集上表现出与多个强基线相比的卓越性能。该模型在识别具有不同声学环境、语义上下文和多种语言口音的语音方面表现出色,强调了该模型的泛化能力及其在训练过程中处理来自各种看不见的领域的语音的有效性。总体而言,上述中文和多语言环境下的评估集的结果证明了Seed-ASR在涵盖多语言,多方言,多口音,多领域和多定制需求的多种应用场景中的泛化能力和强大的基础能力。

总结

通过包括SFT、上下文SFT和RL在内的逐阶段训练的Seed-ASR模型,与最近发布的强大端到端模型相比,在不同声学和语义领域、口音/方言/语言和长距离语音持续时间的各种评估集上展示了上级能力。大规模的LUISE预训练和连接LUISE和LLMSFT赋予Seed-ASR理解不同语音内容的能力。上下文SFT阶段的引入显著提高了模型对相关上下文的关键词的召回率,展示了模型在利用LLMs的上下文感知能力方面的强大定制能力。RL阶段进一步巩固了Seed-ASR的文本生成行为与准确转录的要求之间的一致性,特别是语义重要部分的转录。 总体而言,结果肯定了Seed-ASR作为涉及多种语言,方言,口音,域和定制需求的各种应用程序的最佳ASR模型的地位。未来,我们将专注于扩展Seed-ASR在单个模型中处理多个任务的能力,进一步增强长格式能力并增加支持的语言数量。

OpenVoice-语音克隆用于批量合成高质量语音数据

OpenVoice: Versatile Instant Voice Cloning

https://github.com/myshell-ai/OpenVoice

它能够仅使用一小段参考发言者的音频片段来复制其声音,然后能生成多种语言的语音。 OpenVoice被设计为尽可能地解耦语音中的组件。语言、音色和其他重要的语音特征的生成是相互独立的,从而能够灵活地操纵各个语音风格和语言类型。 解耦的结构降低了对模型大小和计算复杂性的要求 ,同时不使用自回归或者扩散模型,加快推理速度。支持训练数据集之外的说话人和语言,适合为语音大模型提供大规模的合成语音数据。【核心:将语音克隆任务解耦为独立的子任务,其中每个子任务都比耦合的任务更容易实现。

主要功能:可以用于合成音频数据

1.准确的音色克隆。OpenVoice可以准确地克隆参考音色,并生成多种语言和口音的语音。

2.灵活的语音风格控制。OpenVoice支持对语音风格的精细控制,例如情感和口音,以及其他风格参数,包括节奏、停顿和语调

3.零样本跨语言语音克隆。即使这些语言未在训练集中出现也能进行声音复制。

4、支持的语言包括英语(英国、美国、印度、澳大利亚)、西班牙语、法语、中文、日语、韩语

OpenVoice V2的新增特性:

  • 更好的音频质量: 采用新的训练策略以提升音频质量。
  • 原生多语言支持: V2 版本原生支持英语、西班牙语、法语、中文、日语和韩语。
  • 集成 MeloTTS: V2 版本引入了 MeloTTS 技术,通过 pip install git+https://github.com/myshell-ai/MeloTTS.git 进行安装,这是一个新的文本到语音转换系统,增强了声音的自然度和表现力。
  • 免费商业使用: 自2024年4月起,V1和V2版本均以 MIT 许可证发布,支持商业和研究用途的免费使用。
  1. 声音样式和语言的解耦设计:
    • OpenVoice 的设计哲学是将声音的不同特性(如音色、风格、语言)进行解耦,使得可以独立控制各个参数,从而达到灵活调整的目的。这一设计减少了模型的大小和复杂性,提高了操作的灵活性和推断速度。
  2. 基础发音者TTS模型与音色转换器:
    • 基础发音者TTS模型:这一模型允许对风格参数进行控制,如情绪和口音等。它是一个单发音者或多发音者模型,可以通过改变输入的风格和语言嵌入来输出不同风格的语音。
    • 音色转换器:这一组件采用编码器-解码器结构,负责将基础发音者的音色转换为参考发音者的音色。通过这种方式,即使基础声音与目标声音风格不同,也能保持原有风格的同时改变音色。
  3. 训练策略和数据处理:
    • 在训练过程中,采用了大量的多语种、多风格的音频样本。通过这些样本,模型学习如何准确复制音色并控制声音的不同风格。使用特定的损失函数来确保在保留风格的同时去除或转换音色,从而实现高质量的声音生成。

背景

目前语音克隆有以下问题:

1、除了克隆音色,如何灵活控制其他重要的风格参数,如情感,重音,节奏,停顿和语调?这些特征对于生成上下文中的自然语音和对话至关重要,而不是单调地叙述输入文本。以前的方法只能克隆参考说话人的单调音色和风格,但不允许灵活操纵风格。

2、zreo-shot能力:如果要生成的说话人没有训练集里 或者 要说话者的语言没有出现在训练集里,模型可以克隆参考语音并生成该语言的语音吗?

3.如何在不降低质量的情况下实现超高速实时推理,这对于大规模商业生产环境至关重要。

为了解决前两个问题,OpenVoice被设计为尽可能地解耦语音中的组件。语言、音色和其他重要的语音特征的生成是相互独立的,从而能够灵活地操纵各个语音风格和语言类型。这是在不标记MSML训练集中的任何语音风格的情况下实现的。我们想澄清的是,本研究中的零激发跨语言任务与VALLE-X中的任务不同。在VALLE-X中,所有语言的数据都需要包含在MSML训练集中,并且模型不能泛化到MSML训练集之外的未知语言。相比之下,OpenVoice被设计为推广到MSML训练集之外的完全看不见的语言。第三个问题是默认解决的,因为解耦的结构降低了对模型大小和计算复杂性的要求。 我们不需要一个大模型来学习一切。此外,我们避免了自回归或扩散成分,以加快推理

方法

将说话人音色和说话人风格、语言解耦,分别进行处理,base speaker TTS用于合成说话人风格参数(例如,情感、重音、节奏、停顿和语调)、重音和语言 。提取器用于控制合成音色信息。

很明显,同时为任何说话者克隆音色、实现对所有其他风格的灵活控制以及轻松添加新语言可能是非常具有挑战性的。它需要大量的组合数据集,其中受控参数相交,数据对只在一个属性上不同,并被很好地标记,以及一个相对大容量的模型来拟合数据集。

我们还注意到,在常规的单一说话人TTS中,不需要语音克隆,就可以相对容易地添加对其他风格参数的控制以及添加新语言。例如,在10K短音频样本的单说话人数据集,该10K短音频样本具有标记的情绪和语调,足以训练提供对情绪和语调的控制的单说话者TTS模型。添加新的语言或口音也很简单,只需要通过在数据集中添加另一个说话者。

OpenVoice背后的直觉是将IVC任务解耦为独立的子任务,其中每个子任务都比耦合的任务更容易实现。音色的克隆与对所有其余风格参数和语言的控制完全分离。我们提出使用基本说话人TTS模型来控制风格参数和语言,并使用音色转换器来将参考音色体现到生成的语音中。

Model Structure

OpenVoice的两个主要组件是base说话人TTS模型和音色转换器。base说话人TTS模型是单说话人或多说话人模型,其允许控制风格参数(例如,情感、重音、节奏、停顿和语调)、重音和语言。由该模型生成的语音被传递到音色转换器,该音色转换器将base说话人的音色改变为参考说话人的音色。

Base说话人TTS模型。Base Speaker TTS模型的选择非常灵活。例如,可以修改VITS模型,以在其文本编码器和持续时间预测器中接受样式和语言嵌入。其他选项如InstructTTS也可以接受样式提示。也可以使用商业上可用的(和便宜的)模型,例如Microsoft TTS,它接受指定情感,停顿和发音的语音合成标记语言(SSML)。人们甚至可以跳过基本说话人TTS模型,以他们想要的任何风格和语言自己阅读文本。在我们的OpenVoice实现中,我们默认使用VITS模型,但其他选择也是完全可行的。我们将基本模型的输出表示为 𝐗⁢(LI,SI,CI) ,其中三个参数分别表示语言、风格和音色。 类似地,来自参考说话者的语音音频表示为 𝐗⁢(LO,SO,CO) 。

音色转换器. 音色转换器是一个编码器-解码器结构,中间有一个可逆的归一化流程。编码器是一个1D卷积神经网络,它将 𝐗⁢(LI,SI,CI) 的短时傅立叶变换频谱作为输入。所有的卷积都是单步的。由编码器输出的特征图被表示为 𝐘⁢(LI,SI,CI) 。音色提取器是一个简单的2D卷积神经网络,它对输入语音的梅尔频谱图进行操作,并输出一个编码音色信息的单个特征向量。我们将其应用于  𝐗⁢(LI,SI,CI)  以获得矢量 𝐯⁢(CI) ,然后将其应用于 𝐗⁢(LO,SO,CO) 以获得矢量 𝐯⁢(CO) 。

标准化flow层将 𝐘⁢(LI,SI,CI) 和 𝐯⁢(CI) 作为输入,并输出消除色调音色信息但保留所有剩余样式属性的特征表示 𝐙⁢(LI,SI) 。 特征字母表(LI,SI)沿时间维度与国际音标(IPA)沿着对齐。然后,我们在反方向上应用归一化流层,其将 𝐙⁢(LI,SI) 和 𝐯⁢(CO) 作为输入并输出 𝐘⁢(LI,SI,CO) 。这是将来自参考说话者的音色 CO 体现到特征图中的关键步骤。然后 𝐘⁢(LI,SI,CO) 被HiFi-Gan解码为原始波形 𝐗⁢(LI,SI,CO) 。我们的OpenVoice实现中的整个模型是前馈的,没有任何自回归组件。音色转换器在概念上类似于语音转换,但是在其功能性、其模型结构上的归纳偏差和训练目标上具有不同的重点。 音色转换器中的flow层在结构上类似于基于流的TTS方法,但是具有不同的功能和训练目标。

替代方法和缺点。虽然有其他方法来提取 𝐙⁢(LI,SI) ,但我们根据经验发现,所提出的方法实现了最佳的音频质量。可以使用HuBERT来提取离散或连续的声学单元以消除音色信息,但我们发现这种方法也从输入语音中消除了情感和口音。当输入是看不见的语言时,这种类型的方法也存在保留音素的自然发音的问题。我们还研究了另一种方法,该方法仔细构建信息瓶颈以仅保留语音内容,但我们观察到这种方法无法完全消除音调音色。

OpenVoice的贡献在于提供了一个解耦的框架,将语音风格和语言控制从音色克隆中分离出来。这非常简单,但非常有效,特别是当你想控制风格,口音或推广到新的语言。如果想要在XTTS这样的耦合框架上拥有相同的控制权,可能需要大量的数据和计算,并且很难流利地说每种语言。在OpenVoice中,只要单扬声器TTS说话流利,克隆的语音就会流利。 将语音风格和语言的生成与音色的生成脱钩是OpenVoice的核心理念。

Training

为了训练base speaker TTS模型,我们从两个英语说话人(美国口音和英国口音)、一个汉语说话人和一个日语说话人收集了音频样本。共30K句,平均句长7s。中英文数据都有情感分类标签。我们对VITS模型【无需任何情感标注,通过对参考语音使用情感提取模型 提取语句情感embedding输入网络,实现情感可控的VITS合成】进行了改进,并将情感范畴嵌入、语言范畴嵌入和说话人id输入到文本编码器、时长预测器和flow层。培训遵循VITS作者提供的标准程序。训练后的模型能够通过在不同的基本说话人之间切换来改变口音和语言,并以不同的情绪来阅读输入文本。我们还用额外的训练数据进行了实验,证实了节奏、停顿和语调可以用和情绪完全一样的方式学习。

为了训练音色转换器,我们从20 K个人中收集了300 K音频样本。大约180K个样本是英语,60k个样本是中文,60k个样本是日语。这就是我们所说的MSML数据集。音色转换器的训练目标是双重的。首先,我们要求编码器-解码器产生自然的声音。在训练过程中,我们将编码器输出直接馈送到解码器,并使用具有mel频谱图损失和HiFi-GAN损失的原始波形来监督生成的波形。

其次,我们要求流层从音频特征中消除尽可能多的音色信息。在训练过程中,对于每个音频样本,其文本被转换为IPA中的音素序列,每个音素由可学习的向量嵌入表示。向量嵌入的序列被传递到Transformer编码器以产生文本内容的特征表示。将该特征表示为 𝐋∈ℝc×l ,其中 c 是特征通道的数量, l 是输入文本中的音素的数量。音频波形由编码器和流层处理以产生特征表示 𝐙∈ℝc×t ,其中 t 是特征沿时间维度沿着的长度。 然后,我们使用动态时间扭曲(替代方案是单调对齐)沿着时间维度对齐 𝐋 和 𝐙 以产生 𝐋¯∈ℝc×t ,并最小化 𝐋¯ 和 𝐙 之间的KL发散。由于 𝐋¯ 不包含任何音色信息,因此最小化目标将鼓励流层从其输出 𝐙 中移除音色信息。流层以来自音色编码器的音色信息为条件,这进一步帮助流层识别需要消除的信息。此外,我们不提供任何风格或语言信息供流层进行调节,这会阻止流层消除除音色以外的信息。 由于流层是可逆的,因此将它们调节在新的音色信息上并运行其逆过程可以将新的音色添加回特征表示,然后将特征表示解码为包含新的音色的原始波形。

总结

OpenVoice展示了卓越的实例语音克隆能力,并且在语音风格和语言方面比以前的方法更灵活。这种方法背后的直觉是,只要我们不要求模型能够克隆参考说话者的音调颜色,就可以相对容易地训练基本说话者TTS模型来控制语音风格和语言。因此,我们建议将音色克隆与其他语音风格和语言分离,我们认为这是OpenVoice的基本设计原则。

The Dataset of Speech Recognition数据集

语音识别数据集汇总:

https://github.com/double22a/speech_dataset/tree/main?tab=readme-ov-file

Chinese

nameduration/haddressremarkapplication
THCHS-3030https://openslr.org/18/
Aishell150https://openslr.org/33/
ST-CMDS110https://openslr.org/38/
Primewords99https://openslr.org/47/
aidatatang200https://openslr.org/62/
MagicData755https://openslr.org/68/
ASR&SD160http://ncmmsc2021.org/competition2.htmlif available
Aishell21000http://www.aishelltech.com/aishell_2if available
TAL ASR100https://ai.100tal.com/dataset
Common Voice63https://commonvoice.mozilla.org/zh-CN/datasetsCommon Voice Corpus 7.0
ASRU2019 ASR500https://www.datatang.com/competitionif available
2021 SLT CSRC398https://www.data-baker.com/csrc_challenge.htmlif available
aidatatang_1505zh1505https://datatang.com/opensourceif available
WenetSpeech10000https://github.com/wenet-e2e/WenetSpeech
KeSpeech1542https://openreview.net/forum?id=b3Zoeq2sCLqspeech recognition, speaker verification, subdialect identification, voice conversion
MagicData-RAMC180https://arxiv.org/pdf/2203.16844.pdfconversational speech data recorded from native speakers of Mandarin Chinese
Mandarin Heavy Accent Conversational Speech Corpus58.78https://magichub.com/datasets/mandarin-heavy-accent-conversational-speech-corpus/
Free ST Chinese Mandarin Corpushttps://openslr.org/38/

English

nameduration/haddressremark
Common Voice2015https://commonvoice.mozilla.org/zh-CN/datasetsCommon Voice Corpus 7.0
LibriSpeech960https://openslr.org/12/
ST-AEDS-201801004.7http://www.openslr.org/45/
TED-LIUM Release 3430https://openslr.org/51/
Multilingual LibriSpeech44659https://openslr.org/94/limited supervision
SPGISpeech5000https://datasets.kensho.com/datasets/scribeif available
Speech Commands10https://www.kaggle.com/c/tensorflow-speech-recognition-challenge/data
2020AESRC160https://datatang.com/INTERSPEECH2020if available
GigaSpeech10000https://github.com/SpeechColab/GigaSpeech
The People’s Speech31400https://openreview.net/pdf?id=R8CwidgJ0yT
Earnings-2139https://arxiv.org/abs/2104.11348
VoxPopuli24100+543https://arxiv.org/pdf/2101.00390.pdf24100(unlabeled), 543(transcribed)
CMU Wilderness Multilingual Speech Dataset13http://festvox.org/cmu_wilderness/Multilingual
MSR-86K9795.46https://huggingface.co/datasets/Alex-Song/MSR-86KMultilingual

Chinese-English

nameduration/haddressremark
SEAME30https://www.isca-speech.org/archive_v0/archive_papers/interspeech_2010/i10_1986.pdf
TAL CSASR587https://ai.100tal.com/dataset
ASRU2019 CSASR200https://www.datatang.com/competitionif available
ASCEND10.62https://arxiv.org/pdf/2112.06223.pdf

Japanese (ja-JP)

nameduration/haddressremark
Common Voice26https://commonvoice.mozilla.org/zh-CN/datasetsCommon Voice Corpus 7.0
Japanese_Scripted_Speech_Corpus_Daily_Use_Sentence18https://magichub.io/cn/datasets/japanese-scripted-speech-corpus-daily-use-sentence/
LaboroTVSpeech2000https://arxiv.org/pdf/2103.14736.pdf
CSJ650https://github.com/kaldi-asr/kaldi/tree/master/egs/csj
JTubeSpeech1300https://arxiv.org/pdf/2112.09323.pdf
MSR-86K1779.03https://huggingface.co/datasets/Alex-Song/MSR-86KMultilingual

Korean (ko-KR)

nameduration/haddressremark
korean-scripted-speech-corpus-daily-use-sentence4.3https://magichub.io/cn/datasets/korean-scripted-speech-corpus-daily-use-sentence/
korean-conversational-speech-corpus5.22https://magichub.io/cn/datasets/korean-conversational-speech-corpus/
MSR-86K10338.66https://huggingface.co/datasets/Alex-Song/MSR-86KMultilingual

Russian (ru-RU)

nameduration/haddressremark
Common Voice148https://commonvoice.mozilla.org/zh-CN/datasetsCommon Voice Corpus 7.0
OpenSTT20000https://arxiv.org/pdf/2006.08274.pdflimited supervision
MSR-86K3188.52https://huggingface.co/datasets/Alex-Song/MSR-86KMultilingual

French (fr-Fr)

nameduration/haddressremark
MediaSpeech10https://arxiv.org/pdf/2103.16193.pdfASR system evaluation dataset
MSR-86K8316.70https://huggingface.co/datasets/Alex-Song/MSR-86KMultilingual

Spanish (es-ES)

nameduration/haddressremark
MediaSpeech10https://arxiv.org/pdf/2103.16193.pdfASR system evaluation dataset
MSR-86K13976.84https://huggingface.co/datasets/Alex-Song/MSR-86KMultilingual

Turkish (tr-TR)

nameduration/haddressremark
MediaSpeech10https://arxiv.org/pdf/2103.16193.pdfASR system evaluation dataset

Arabic (ar)

nameduration/haddressremark
MediaSpeech10https://arxiv.org/pdf/2103.16193.pdfASR system evaluation dataset
MSR-86K873.84https://huggingface.co/datasets/Alex-Song/MSR-86KMultilingual

noise & nonspeech

nameduration/haddressremark
MUSANhttps://openslr.org/17/
Room Impulse Response and Noise Databasehttps://openslr.org/28/
AudioSethttps://ieeexplore.ieee.org/document/7952261

The Dataset of Speech Synthesis

Chinese

nameduration/haddressremark
Aishell385https://openslr.org/93/
Opencpophttps://wenet.org.cn/opencpop/download/Singing Voice Synthesis

English

nameduration/haddressremark
Hi-Fi Multi-Speaker English TTS Dataset291.6https://openslr.org/109/
LibriTTS corpus585https://openslr.org/60/
Speechocean762https://www.openslr.org/101/
RyanSpeech10http://mohammadmahoor.com/ryanspeech/

The Dataset of Speech Recognition & Speaker Diarization

Chinese

nameduration/haddressremarkapplication
Aishell4120https://openslr.org/111/8-channel, conference scenariosspeech recognition, speaker diarization
ASR&SD160http://ncmmsc2021.org/competition2.htmlif availablespeech recognition, speaker diarization
zhijiangcuphttps://zhijiangcup.zhejianglab.com/zhijiang/match/details/id/6.htmlif availablespeech recognition, speaker diarization
M2MET120https://arxiv.org/pdf/2110.07393.pdf8-channel, conference scenariosspeech recognition, speaker diarization

English

nameduration/haddressremarkapplication
CHiME-6https://chimechallenge.github.io/chime6/download.htmlif availablespeech recognition, speaker diarization

The Dataset of Speaker Recognition

Chinese

nameduration/haddressremarkapplication
CN-Celebhttps://openslr.org/82/
KeSpeech1542https://openreview.net/forum?id=b3Zoeq2sCLqspeech recognition, speaker verification, subdialect identification, voice conversion
MTASS55.6https://github.com/Windstudent/Complex-MTASSNet
THCHS-3040http://www.openslr.org/18/

English

nameduration/haddressremark
VoxCeleb Datahttp://www.robots.ox.ac.uk/~vgg/data/voxceleb/

中文语音识别数据集总结

OpenSLR国内镜像

http://openslr.magicdatatech.com/

Free ST Chinese Mandarin Corpus

1)基本信息:
参与者:855人
这个语料库是用手机在室内安静的环境中录制的。它有855个speakers。每个演讲者有120个话语。所有的话语都经过人仔细的转录和核对。保证转录精度

语料库包含:
1音频文件;
2转录;
3元数据;

2)链接

下载:(8.2G)

http://www.openslr.org/resources/38/ST-CMDS-20170001_1-OS.tar.gz

国内镜像:

http://cn-mirror.openslr.org/resources/38/ST-CMDS-20170001_1-OS.tar.gz

Primewords Chinese Corpus Set 1

1)基本信息
参与人数:296人
时长:178小时

这个免费的中文普通话语料库由上海普力信息技术有限公司发布。(www.primewords.cn)包含178个小时的数据。该语料由296名以中文为母语的人的智能手机录制。转录精度大于 98%,置信度为 95%。免费用于学术用途。转述和词句之间的映射以 JSON 格式提供。

2)链接

下载:(9.0G)

http://www.openslr.org/resources/47/primewords_md_2018_set1.tar.gz

国内镜像:

http://cn-mirror.openslr.org/resources/47/primewords_md_2018_set1.tar.gz

爱数智慧中文手机录音音频语料库(Mandarin Chinese Read Speech )

1)基本信息

时长:755小时

参与人数:1000人

音频格式:PCM

MagicData中文手机录音音频语料库包含755小时的中文普通话朗读语音数据,其中分为训练集712.09小时、开发集14.84小时和测试集28.08小时。本语料库的录制文本覆盖多样化的使用场景,包括互动问答、音乐搜索、口语短信信息、家居命令控制等。采集方式为手机录音,涵盖多种类型的安卓手机;录音输出为PCM格式。1000名来自中国不同口音区域的发言人参与采集。MagicData中文手机录音音频语料库由MagicData有限公司开发,免费发布供非商业使用。

2)链接

包:

https://freedata.oss-cn-beijing.aliyuncs.com/MAGICDATA_Mandarin_Chinese_Speech.zip

下载地址

http://www.imagicdatatech.com/index.php/home/dataopensource/data_info/id/101

THCHS30

1)基本信息

时长:40余小时

THCHS30是一个经典的中文语音数据集,包含了1万余条语音文件,通过单个碳粒麦克风录取,大约40小时的中文语音数据,内容以文章诗句为主,全部为女声。它是由清华大学语音与语言技术中心(CSLT)出版的开放式中文语音数据库。原创录音于2002年由朱晓燕教授在清华大学计算机科学系智能与系统重点实验室监督下进行,原名“TCMSD”,代表“清华连续”普通话语音数据库’。13年后的出版由王东博士发起,并得到了朱晓燕教授的支持。他们希望为语音识别领域的新入门的研究人员提供玩具级别的数据库,因此,数据库对学术用户完全免费。

2)链接

国内镜像:

https://link.ailemon.me/?target=http://cn-mirror.openslr.org/resources/18/data_thchs30.tgz

国外镜像:

https://link.ailemon.me/?target=http://www.openslr.org/resources/18/data_thchs30.tgz

ST-CMDS

1)基本信息:

时长:100余小时

参与人数:855人

ST-CMDS是由一个AI数据公司发布的中文语音数据集,包含10万余条语音文件,大约100余小时的语音数据。数据内容以平时的网上语音聊天和智能语音控制语句为主,855个不同说话者,同时有男声和女声,适合多种场景下使用。

2)链接

下载地址:

国内镜像:

https://link.ailemon.me/?target=http://cn-mirror.openslr.org/resources/38/ST-CMDS-20170001_1-OS.tar.gz

国外镜像:

https://link.ailemon.me/?target=http://www.openslr.org/resources/38/ST-CMDS-20170001_1-OS.tar.gz

MAGICDATA Mandarin Chinese Read Speech Corpus

1)基本信息

时长:755小时

参与人数:1080人

应用:语音识别,机器翻译,说话人识别和其他语音相关领域

Magic Data技术有限公司的语料库,语料库包含755小时的语音数据,其主要是移动终端的录音数据。邀请来自中国不同重点区域的1080名演讲者参与录制。句子转录准确率高于98%。录音在安静的室内环境中进行。数据库分为训练集,验证集和测试集,比例为51:1:2。诸如语音数据编码和说话者信息的细节信息被保存在元数据文件中。录音文本领域多样化,包括互动问答,音乐搜索,SNS信息,家庭指挥和控制等。还提供了分段的成绩单。该语料库旨在支持语音识别,机器翻译,说话人识别和其他语音相关领域的研究人员。因此,语料库完全免费用于学术用途。

2)链接

下载地址见参考:
https://blog.ailemon.me/2018/11/21/free-open-source-chinese-speech-datasets/
镜像:
http://www.openslr.org/68/

AISHELL

AISHELL开源版1

1)基本信息

时长:178小时

参与人数:400人

采样:44.1kHz & 16kHz 16bit

AISHELL是由北京希尔公司发布的一个中文语音数据集,其中包含约178小时的开源版数据。该数据集包含400个来自中国不同地区、具有不同的口音的人的声音。录音是在安静的室内环境中同时使用3种不同设备: 高保真麦克风(44.1kHz,16-bit);Android系统手机(16kHz,16-bit);iOS系统手机(16kHz,16-bit)。进行录音,并采样降至16kHz,用于制作AISHELL-ASR0009-OS1。通过专业的语音注释和严格的质量检查,手动转录准确率达到95%以上。该数据免费供学术使用。他们希望为语音识别领域的新研究人员提供适量的数据。

2)链接

下载地址:

http://www.aishelltech.com/kysjcp

AISHELL-2 开源中文语音数据库

1)基本信息

时长:1000小时

参与人数:1991人

希尔贝壳中文普通话语音数据库AISHELL-2的语音时长为1000小时,其中718小时来自AISHELL-ASR0009-[ZH-CN],282小时来自AISHELL-ASR0010-[ZH-CN]。录音文本涉及唤醒词、语音控制词、智能家居、无人驾驶、工业生产等12个领域。录制过程在安静室内环境中, 同时使用3种不同设备: 高保真麦克风(44.1kHz,16bit);Android系统手机(16kHz,16bit);iOS系统手机(16kHz,16bit)。AISHELL-2采用iOS系统手机录制的语音数据。1991名来自中国不同口音区域的发言人参与录制。经过专业语音校对人员转写标注,并通过严格质量检验,此数据库文本正确率在96%以上。(支持学术研究,未经允许禁止商用。)

2)链接

下载地址:

http://www.aishelltech.com/aishell_2

AISHELL-翻译机录制语音数据库

1)基本信息

时长:31.2小时

参与人数:12人

采样: 44.1kHz & 16kHz 16bit

文件:wav

来自AISHELL的开源语音数据产品:翻译机录制语音数据库

2)链接

下载地址:

http://www.aishelltech.com/aishell_2019C_eval

AISHELL-家居环境近远讲同步语音数据库

1)基本信息

时长:24.3小时

参与人数:50人

采样: 44.1kHz & 16kHz 16bit

文件:wav

AISHELL-2019A-EVAL 随机抽取 50 个发音人。每人从位置 A(高保真 44.1kHz,16bit)与位置 F(Android 系统手机 16kHz,16bit)中,各选取 232 句到 237 句。
此数据库经过专业语音校对人员转写标注,并通过严格质量检验,文本正确率 100%。

AISHELL-2019A-EVAL 是 AISHELL-ASR0010 的子库,共 24.3 小时。

2)链接

下载地址:

http://www.aishelltech.com/aishell_2019A_eval

AISHELL-语音唤醒词数据库

1)基本信息

时长:437.67小时

参与人数:86人

采样: 44.1kHz & 16kHz 16bit

文件:wav

来自希尔贝壳的语音唤醒词数据库

2)链接

下载地址:

http://www.aishelltech.com/aishell_2019B_eval

AISHELL-3 语音合成数据集

1)基本信息
希尔贝壳中文普通话语音数据库AISHELL-3的语音时长为85小时88035句,可做为多说话人合成系统。录制过程在安静室内环境中, 使用高保真麦克风(44.1kHz,16bit)。218名来自中国不同口音区域的发言人参与录制。专业语音校对人员进行拼音和韵律标注,并通过严格质量检验,此数据库音字确率在98%以上。(支持学术研究,未经允许禁止商用。)
2)下载链接
国内镜像: https://openslr.magicdatatech.com/resources/93/data_aishell3.tgz
国外镜像:https://www.openslr.org/resources/93/data_aishell3.tgz

Aidatatang

aidatatang_1505zh(完整的1505小时中文普通话语音数据集)

1)基本信息

参与人数:6408人

时长:1505小时

包含6408位来自中国不同地区的说话人、总计1505小时时长共3万条语音、经过人工精心标注的中文普通话语料集可以对中文语音识别研究提供良好的数据支持。采集区域覆盖全国34个省级行政区域。经过专业语音校对人员转写标注,并通过严格质量检验,句标注准确率达98%以上,是行业内句准确率的最高标准。

2)使用效果:

3)链接

数据申请:

https://www.datatang.com/webfront/opensource.html

Aidatatang_200zh(基于完整数据集精选的200小时中文普通话语音数据集)

1)基本信息
时长:200小时

参与人数:600人

采样: 16kHz 16bit

Aidatatang_200zh是由北京数据科技有限公司(数据堂)提供的开放式中文普通话电话语音库。语料库长达200小时,由Android系统手机(16kHz,16位)和iOS系统手机(16kHz,16位)记录。邀请来自中国不同重点区域的600名演讲者参加录音,录音是在安静的室内环境或环境中进行,其中包含不影响语音识别的背景噪音。参与者的性别和年龄均匀分布。语料库的语言材料是设计为音素均衡的口语句子。每个句子的手动转录准确率大于98%。数据库按7:1:2的比例分为训练集、验证集和测试集。在元数据文件中保存诸如语音数据编码和扬声器信息等详细信息。还提供分段转录本。

2)特点

该语料库旨在为语音识别、机器翻译、声纹识别等语音相关领域的研究人员提供支持。因此,该语料库完全免费供学术使用。

数据堂精选了200小时中文普通话语音数据在OpenSLR发布,并在Kaldi平台提供了训练代码,对应的训练方法也在github平台发布。

3)链接

训练:

https://github.com/datatang-ailab/aidatatang_200zh/blob/master/README.md

国内镜像:

https://link.ailemon.me/?target=http://cn-mirror.openslr.org/resources/62/aidatatang_200zh.tgz

国外镜像:https://link.ailemon.me/?target=http://www.openslr.org/resources/62/aidatatang_200zh.tgz

hkust

  1. 基本信息
    200h,16khz,16bit。中文电话数据集,电话对话,espnet,kaldi里面都有egs。
    2)链接下载链接:http://catalog.ldc.upenn.edu/LDC2005S15

Speechocean 10小时中文普通话语音识别语料库

1)基本信息
这是一个10.33小时的语料库,它同时通过4个不同的麦克风收集。在安静的办公室中,由20位说话者(10位男性和10位女性)录制​​了该语料库。每个扬声器在一个通道中记录了大约120声。包括转录文件。句子的转录精度高于98%。它完全免费用于学术目的。
2)下载链接
百度云盘(提取码:sktk):https://pan.baidu.com/share/init?surl=1glZHlKIXjlPOOht6_yQXQ

cn-celeb

1)基本信息
此数据是“在野外”收集的大规模说话人识别数据集。该数据集包含来自1000位中国名人的13万种语音,涵盖了现实世界中的11种不同流派。所有音频文件都编码为单通道,并以16位精度以16kHz采样。数据收集过程由清华大学语音与语言技术中心组织。它也由国家自然科学基金61633013和博士后科学基金2018M640133资助。
2)下载链接

HI-MIA

1)基本信息
内容为中文和英文的唤醒词“嗨,米娅”。使用麦克风阵列和Hi-Fi麦克风在实际家庭环境中收集数据。下文描述了基准系统的收集过程和开发。挑战中使用的数据是从1个高保真麦克风和1/3/5米的16通道圆形麦克风阵列中提取的。内容是中文唤醒词。整个集合分为火车(254人),开发(42人)和测试(44人)子集。测试子集提供了成对的目标/非目标答案,以评估验证结果。
2)下载链接
国内镜像(train) :http://openslr.magicdatatech.com/resources/85/train.tar.gz
国内镜像(dev) :http://openslr.magicdatatech.com/resources/85/dev.tar.gz
国内镜像(test) :http://openslr.magicdatatech.com/resources/85/test_v2.tar.gz
国内镜像(filename_mapping):http://openslr.magicdatatech.com/resources/85/filename_mapping.tar.gz

MobvoiHotwords

1)基本信息
MobvoiHotwords是从Mobvoi的商业智能扬声器收集的唤醒单词的语料库。它由关键字和非关键字语音组成。对于关键字数据,将收集包含“ Hi xiaowen”或“ Nihao Wenwen”的关键字语音。对于每个关键字,大约有36k语音。所有关键字数据均收集自788名年龄在3-65岁之间的受试者,这些受试者与智能扬声器的距离(1、3和5米)不同。在采集过程中,具有不同声压级的不同噪声(例如音乐和电视等典型的家庭环境噪声)会在后台播放。

2)下载链接
国内镜像 :http://openslr.magicdatatech.com/resources/87/mobvoi_hotword_dataset.tgz
国外镜像:http://www.openslr.org/resources/87/mobvoi_hotword_dataset.tgz

zhvoice: Chinese voice corpus

1)基本信息
zhvoice语料由8个开源数据集,经过降噪和去除静音处理而成,说话人约3200个,音频约900小时,文本约113万条,共有约1300万字。

zhvoice语料比较原始数据而言,更加清晰和自然,减少了噪声的干扰,减少了因说话人说话不连贯造成的不自然。

zhvoice语料包含文本、语音和说话人3个方面的信息,可适用于多种语音相关的任务。

zhvoice语料由智浪淘沙清洗和处理。
2)下载链接
https://github.com/fighting41love/zhvoice

AudioPaLM-可以听说的大模型

AudioPaLM,一个用于语音理解和生成的大型语言模型。AudioPaLM融合了基于文本和基于语音的语言模型,将PaLM-2和AudioLM集成到一个统一的多模式架构中,该架构可以处理和生成文本和语音,可以实现包括语音识别和语音到语音翻译。AudioPaLM继承了AudioLM保留说话人身份和语调等非语言信息的能力,以及仅存在于PaLM-2等文本大型语言模型中的语言知识。我们证明,使用纯文本大型语言模型的权重初始化AudioPaLM可以改善语音处理,成功地利用预训练中使用的大量文本训练数据来帮助语音任务。 由此产生的模型显著优于现有的语音翻译任务系统,并且能够为许多语言执行零样本语音到文本的翻译,这些语言在训练中没有看到输入/目标语言组合。

https://google-research.github.io/seanet/audiopalm/examples/

https://arxiv.org/html/2306.12925

AudioPaLM的核心是一个联合词汇表,它可以用有限数量的离散tokrn来表示语音和文本,结合任务的基本标记描述,允许在涉及任意交织的语音和文本的混合任务上训练单个仅解码器模型。这包括语音识别、文本到语音合成和语音到语音翻译,将传统上由异构模型解决的任务统一到单个架构和训练运行中。此外,由于AudioPaLM的底层架构是大型Transformer模型,因此我们可以使用在文本上预训练的大型语言模型的权重来初始化其权重,这允许其受益于诸如PaLM的模型的语言和常识知识。

图1:AudioPaLM模型,以语音到语音翻译和自动语音识别为例。我们采用一个预训练的纯文本模型(虚线),并扩展其嵌入矩阵来建模一组新的音频令牌,这里的token基于w2v-BERT 或者USM-v提取的,但token中同时含有语义信息和说话人声学信息【 k-means聚类之前不对嵌入进行归一化 ,用于保留说话人信息】。模型架构在其他方面没有改变:文本和音频令牌的混合序列作为输入被送入,并且模型解码文本或音频令牌。音频令牌通过后面的AudioLM阶段或SoundStorm转换回原始音频。

我们使用一个只有解码器的Transformer来建模由文本和音频令牌组成的序列。就模型而言,文本和音频只是任意整数的序列,因为输入在馈送到模型之前被标记化,并且任何输出在返回给模型的用户之前都被去token化。通过在有限的词汇表中用离散的标记来表示语音,我们可以构建一个多模态词汇表,它是这个音频词汇表和一个用于表示文本的SentencePiece的结合。因此,原则上,我们的设置和通常的纯文本解码器设置之间几乎没有区别,除了在我们的设置中,一些令牌代表音频和一些文本,并且我们使用预训练的纯文本检查点初始化我们的多模态模型。

方法

音频嵌入和令牌化

将原始波形转换为令牌。这涉及从现有的语音表示模型中提取嵌入,然后将这些嵌入离散化为有限的音频令牌集合。从w2v-BERT模型中提取嵌入,通过K-means进行离散化。在这项工作中,我们实验了以下方法来获得一组离散的音频令牌:

1、我们使用了一个w2v-BERT模型,该模型已经在多语言数据上进行了训练,其次,我们在执行k-means聚类之前不对嵌入进行归一化。虽然Borsos等人发现标准化在不降低性能的情况下删除了说话者身份信息,但我们发现在多语言环境中,标准化确实会导致性能下降保留了说话人的声学信息,所以这里的token可以认为是声学token+语义token】。该方法以25 Hz的速率产生令牌,令牌词汇表的大小为1024。

2、USM-v1:我们使用更高性能的通用语音模型(USM)编码器执行相同的过程,以替换w2v-BERT编码器。我们使用这个多语言语音编码器的最大2B参数变体,并从中间层提取嵌入。与w2v-BERT类似,该方法以25 Hz的速率生成令牌,令牌词汇表的大小为1024。

修改纯文本解码器以适应文本和音频

在Transformer解码器中,输入预处理后模型的第一层是标记嵌入矩阵 𝐄 ,它将整数值标记映射到密集嵌入;给定 t 标记的词汇表和大小为 m 的嵌入, 𝐄 是 t×m 矩阵,其第 i 行给出第 i 标记的嵌入。 另一个嵌入矩阵 𝐄′ 出现在最后的softmax层中,用于计算每个位置上所有标记的logit;它是一个 m×t 矩阵,与模型的 m 维输出相乘,以获得logit的 t 维向量,每个标记一个。 在PaLM架构中,这些矩阵具有共享变量,因此一个是另一个的转置,即 𝐄′=𝐄 。

解码器架构的其余部分对建模的令牌数量完全无关。 因此,我们只需要做一个小的修改,将纯文本模型转换为同时对文本和音频进行建模的模型:我们将嵌入矩阵 𝐄 的大小扩展为大小 (t+a)×m ,其中 a 是音频令牌的数量( 𝐄′=𝐄 的大小相应地改变)。

为了利用预训练的文本模型,我们通过向嵌入矩阵 𝐄 添加 a 新行来更改现有的模型检查点。实现细节是前 t 令牌(从零到 t )对应于SentencePiece文本令牌,而接下来的 a 令牌(从 t 到 t+a )表示音频令牌。 虽然我们可以重用预训练模型的文本嵌入,但新的音频嵌入是新初始化的,必须经过训练。我们发现有必要训练所有模型参数,而不是保持以前的权重固定。我们使用混合语音和文本任务进行训练。

3、将音频令牌解码为原始音频

为了从音频令牌合成音频波形,我们实验了两种不同的方法:i)自回归解码,遵循AudioLM的设置非自回归解码,ii) 使用最近提出的SoundStorm模型。在这两种情况下,音频令牌首先用于生成声音流令牌,然后用卷积解码器将其转换为音频波形。

AudioLM中的声学生成分两个阶段进行:先将音频token声音流令牌,然后再在合成语音“阶段2”是仅解码器的Transformer模型,其将AudioPaLM产生的音频令牌和语音调节作为输入,并生成SoundStream令牌,其可用于以所需语音实现语音,但比特率非常低。“阶段3”重建SoundStream的残差矢量量化器的更高级别,这增加了比特率并提高了音频质量。

SoundStorm提出了一种替代的非自回归解码方案,该方案应用了一种迭代方法,该方法在所有令牌上并行进行。SoundStorm产生的音频质量与AudioLM相同,但在语音和声学条件方面具有更高的一致性,同时速度快了两个数量级。

通过提供原始输入语音的一部分作为语音调节,该模型能够在将其语音翻译为不同语言时保留原始说话者的语。

实验

由于 AudioPaLM 是基于 Transformer 模型的大语言模型,它可以使用基础的文本预训练模型来初始化权重,从而受益于 PaLM 或 PaLM 2 等模型的语言和常识知识。由于统一的多模态架构,AudioPaLM 能够使用直接映射或组合任务的方式来解决语音识别、语音合成和语音翻译等问题。单一任务包括自动语音识别(ASR)、自动语音翻译(AST)、语音到语音翻译(S2ST)、文本到语音(TTS)和文本到文本机器翻译(MT)等。为了指定模型在给定输入上执行的任务,可以在输入前加上标签,指定任务和输入语言的英文名称,输出语言也可以选择加上。例如,[ASR French]表示执行法语的自动语音识别任务,[TTS English]表示执行英语的文本到语音任务,[S2ST English French]表示执行从英语到法语的语音到语音翻译任务,而组合任务的标签[ASR AST S2ST English French]表示依次进行从英语到法语的自动语音识别、自动语音翻译、语音到语音翻译。微调使用的数据集包含音频、音频的转录、音频的翻译、音频的翻译文本等。一个数据集可以用于多个任务,将同一数据集中的多个任务结合起来可以提高性能。

AudioPaLM 在语音翻译基准测试中展示了最先进的结果,并在语音识别任务上表现出竞争性能。利用 AudioLM 的语音提示,该模型还可以对未见过的讲话者进行 S2ST,超越现有方法,以客观和主观评估的方式衡量语音质量和声音保持。另外,该模型展示了零样本迁移的能力,可以使用训练中未曾出现过的语音输入/目标语言组合进行 AST。

SpeechTokenizer: Unified Speech Tokenizer for Speech Language Models

语音语言模型的统一语音标记器

https://github.com/ZhangXInFD/SpeechTokenizer

SpeechTokenizer: Unified Speech Tokenizer for Speech Language Models

SpeechTokenizer是一个统一的语音语言模型的语音分词器,它采用了编码器-解码器架构与残差矢量量化(RVQ)。统一语义和声学标记,SpeechTokenizer在不同的RVQ层上分层地解开语音信息的不同方面。具体地,RVQ的第一量化器输出的代码索引可以被认为是语义令牌,并且其余量化器的输出主要包含音色信息,其用作对由第一量化器丢失的信息的补充。

目前的Speech Langauge Model(speech LM)大多依赖于语音的离散表示。具体来说,这些模型首先将连续的语音信号转换成离散的tokens,进而像处理文本一样以自回归的方式进行训练,再通过一个解码器将离散tokens恢复为语音。

比较常用的语音离散表示大致可分为两种:语义semantic token和 声学acoustic token。token如其名,通常认为semantic token建模语音中较为global的内容信息,它们来自于以mask langauge modeling为training objective的自监督预训练模型,比较常见的有HuBERT, W2VBERT等;acoustic token建模语音中的局部声学细节,通常来自于以reconstruction为training objective的neural audio codec,比较常见的有SoundStream, EnCodec。

基于这两种token,目前已有的speech LM建模范式大致可分为三类

  1. Semantic language models: 基于semantic token的自回归模型,常外接一个unit-vocoder来恢复语音,比如SpeechGPT。这类模型虽然可以完成一些语音内容相关的任务,但是它们产生的音质比较一般,并且无法完成一些副语言学相关的任务,比如音色转换等。
  2. Acoustic language models: 基于acoustic token的speech LM,比如VALL-E。这类模型产生的语音音质比较好,并且可以较好地完成一些比如zero-shot TTS的任务,但是会存在内容不准确的问题。
  3. Hierarchical speech language models: 这类模型由Semantic language models和Acoustic language models 级联而成,既可以产生比较精确的内容,也可以产生较好的音质,比如AudioPaLM。但是这类模型,建模阶段太多,较为复杂,需要两种tokenizer的参与;而且在semantic token和acoustic token之间其实存在有很大的信息冗余,会带来一些不必要的建模难度。

因此,如果想要打造好的speech LM,需要有一个理想的speech tokens,它应该具有以下两个特征:

  1. 和文本的对齐程度比较高
  2. 保留了语音中各个方面的信息

但是现有的speech tokens都不是专门为构建speech LM而设计的,并不清楚它们和speech LM的适配性。因此我们建立了SLMTokBench来评估不同类型speech token在构建speech LM方面的适用性。它从文本对齐程度和信息保留程度两个方面来量化分析speech tokens,具体评测方法可以看我们论文。通过SLMTokBench,我们发现semantic tokens和文本的对齐程度比较高,但是损失了语音中很大一部分说话人信息。acoustic tokens保留了语音中的各个方面信息,但是和文本的对齐程度不够高。因此,他们都不适合于构建speechLM。

方法

基于此,我们想统一semantic token和acoustic token,我们提出了SpeechTokenizer,它基于EnCodec架构,在不同的RVQ层上对语音信息进行解耦和分层建模,从而让第一层token建模语音中的内容信息,剩下几层token补充除内容信息之外的其他信息,如下图。这是首个专为speech LM设计的语音离散化工具。

具体实现方法为在EnCodec的整体框架上,使用HuBERT representation对RVQ-1的quantized output进行semantic guidance,从而达到第一层token建模语音中的内容信息的效果,并且残差结构会使得剩下的几层来补充内容信息之外的其他信息。使用EnCodec的基于卷积的编码器-解码器网络,该网络使用选定的步幅因子执行时间缩减。值得注意的是,我们已经用两层BiLSTM代替了最初在EnCodec编码器中的卷积块之后的两层LSTM,以增强语义建模能力。我们对附录B中的模型结构进行了消融研究。我们使用残差向量量化(RVQ)来量化编码器的输出,RVQ是一种可以在初始量化步骤之后使用不同码本来量化残差的方法。有关模型结构的更多详细信息,请参见附录D。 在训练期间,语义教师提供语义表示以指导残差量化过程。

并且基于SpeechTokenizer,我们可以统一上面讲的三种speech LM建模范式,从而构建unified speech language model(USLM),模型结构如下图:

回归(AR)模型通过对来自第一RVQ量化器的令牌进行建模来捕获内容信息。非自回归(NAR)模型通过从以第一层令牌为条件的后续量化器生成令牌来补充AR模型的语言信息。

NAR模型可以是条件流匹配[speech-Gen]、扩散模型 【Seed-TTS】等

Speech Language Model Token Benchmark:

文本对齐评估:

下游模型采取语音令牌作为输入。具体来说,对于每个离散表示,我们首先建立一个嵌入矩阵,该矩阵可以随机初始化,也可以从离散化过程中获得的k均值质心矩阵或矢量量化码本中导出。我们使用嵌入矩阵来嵌入离散表示并获得连续表示,然后将其输入下游模型。我们在LibriSpeech train-clean-100子集上训练下游模型,并使用dev-clean子集来估计互信息。我们还计算了测试集上的单词错误率(WER)。

信息保存评估:

为了评估离散语音表示中语音信息的保留,我们将语音令牌转换回语音,并通过内容和音质的自动度量来评估重新合成的语音。我们训练一个单元-HiFIGAN(Polyak 等人,2021)在LibriSpeech数据集上将HuBERT单位转换为波形。值得注意的是,为了避免额外信息的干扰,我们在训练期间不提供任何说话人信息。对于Encodec令牌,我们使用Encodec解码器直接产生波形。通过使用Whisper en-medium模型转录重新合成的语音来计算WER来评估内容保存(拉德福 等人,2023年)。通过利用WavLM-TDNN(Chen 等人,2022)来计算合成语音和地面实况语音之间的说话人相似度。 我们从LibriSpeech测试集中随机抽取300个语音样本进行评估。

比较语义 & 声学令牌

我们使用HuBERT L9单元来表示语义令牌,使用EnCodec代码来表示声学令牌。如表3所示,语义标记实现了与文本的高互信息,但其重新合成的语音具有低说话人相似性。声学标记实现低WER和高说话人相似度的再合成语音,但与文本的互信息低。

RVQ token中信息解耦的效果如何?

我们做了one-shot voice conversion的实验。具体做法为把source speech的RVQ-1 token和reference speech的RVQ-2:8 token拼在一起送到decoder中得到converted speech。我们发现这种简单拼接RVQ token的做法也可以有不错的音色转换的效果,说明信息解耦是比较成功的。可以到我们的demo page上听效果。

SpeechTokenizer能否直接应用到unseen langauge上?

SpeechTokenizer在训练过程中只见过英语,我们直接用它直接来tokenize 德语和中文speech。发现RVQ-1送到decoder得到的speech比较机械,没有音色和韵律,说明也有比较好的解耦效果,大家可以去project page听demo。从下面频谱图也可以看出RVQ-1得到的语音丢掉了一些如共振峰等特征。

SpeechGPT系列:语音大语言模型

开源:https://github.com/0nutation/SpeechGPT

SpeechGPT (2023/05) - Empowering Large Language Models with Intrinsic Cross-Modal Conversational Abilities
SpeechGPT(2023/05)-为大型语言模型提供内在的跨模态会话能力

SpeechGPT-Gen (2024/01) - Scaling Chain-of-Information Speech Generation
SpeechGPT-Gen(2024/01)-缩放信息链语音生成

SpeechAgents: Human-Communication Simulation with Multi-Modal Multi-Agent Systems
SpeechAgents:多模态多智能体系统的人机交互仿真

paper:

   https://arxiv.org/abs/2401.03945 [SpeechAgents]
   https://arxiv.org/abs/2305.11000 [SpeechGPT]
   https://arxiv.org/abs/2401.13527 [SpeechGPT-Gen/SpeechGPT2]

SpeechGPT是一种基于深度学习的语言模型,它能够理解和生成自然语言。SpeechGPT是一种新型的大型语言模型,它不仅能够理解语音和文本,还能够在这两者之间自如转换。简单来说,它能够感知和表达情感,并根据上下文和人类指令提供多种风格的语音响应。无论是说唱、戏剧、机器人、搞笑还是低语,SpeechGPT都能够根据需要生成相应风格的语音。

SpeechGPT

这项技术的核心在于将连续的语音信号离散化,使其能够与文本模态统一,从而让模型具备感知和生成语音的能力。

SpeechGPT是一种大型语言模型,具有内在的跨模态会话能力,能够按照人类指令感知和生成多模型内容。本文首先利用离散语音表示构造了一个大规模的跨模态语音指令集SpeechInstruct。此外,我们采用了一个三阶段的训练策略,包括模态适应预训练跨模态指令微调,和链的模态指令微调。实验结果表明,SpeechGPT具有良好的多模态人机交互能力,并能在一个模型中处理多种模态。

模型训练过程:

第一阶段,使用LLaMA-7 B初始化,并在LibriLight语音单元上进一步预训练。第二阶段,使用上一步预训练的模型进行初始化,并在SpeechInstruct跨模态指令集上进一步微调。这是一个强大的基础模型,可以对齐语音和文本。第三阶段,在SpeechInstruct模态链指令集上进一步进行lora-finetuning。

数据集格式:

SpeechInstruct-cross-modal:跨模态指令集,mHuBERT从大规模英语ASR数据集中标记了大约900万个单元文本数据对。数据格式:

[
    {
        "prefix": "You are an AI assistant whose name is SpeechGPT.\n- SpeechGPT is a intrinsic cross-modal conversational language model that is developed by Fudan University.  SpeechGPT can understand and communicate fluently with human through speech or text chosen by the user.\n- It can perceive cross-modal inputs and generate cross-modal outputs.\n",
        "plain_text": "[Human]: Try to speak out this sentence, please. This is input: The alchemist rode in front, with the falcon on his shoulder.<eoh> [SpeechGPT]: <sosp><661><588><604><157><596><499><596><106><596><189><63><189><665><991><162><202><393><946><327><905><907><597><660><351><557><794><788><59><754><12><977><877><333><873><835><67><940><118><686><613><169><72><644><553><535><935><101><741><384><173><894><787><380><787><196><555><721><944><250><56><812><222><915><143><390><479><330><435><647><246><650><816><325><506><686><208><613><417><755><193><411><452><111><735><6><735><63><665><644><991><535><271><333><196><918><29><202><393><946><734><390><479><330><776><167><761><907><597><660><351><557><794><75><788><15><366><896><627><168><654><659><177><183><609><710><187><493><361><470><821><59><56><198><912><742><840><431><531><76><668><576><803><791><380><660><325><801><549><366><377><164><309><584><605><193><71><39><eosp><eoa> "
    },
]

SpeechInstruction-chain-of-modality:四种输入输出格式的思想链样式指令,即Speech Instruction-Speech Response、Speech Instruction-Text Response、Text Instruction-Speech Response和Text Instruction-Text Response。

[
    {
        "prefix": "You are an AI assistant whose name is SpeechGPT.\n- SpeechGPT is a intrinsic cross-modal conversational language model that is developed by Fudan University.  SpeechGPT can understand and communicate fluently with human through speech or text chosen by the user.\n- It can perceive cross-modal inputs and generate cross-modal outputs.\n",
        "plain_text": "[Human]: <sosp><661><987><511><732><951><997><111><982><189><63><665><991><535><101><741><173><945><944><503><641><124><565><734><870><290><978><833><238><761><907><430><901><185><403><557><244><583><788><663><969><896><627><143><515><663><969><660><691><251><412><260><41><740><677><253><380><382><268><506><876><417><755><16><819><80><651><80><651><80><987><588><eosp><eoh>. [SpeechGPT]: What is a bad term for poop?; [ta] A bad term for poop is excrement. It is usually used as a polite way to refer to fecal waste.; [ua] <sosp><497><63><264><644><710><823><565><577><154><331><384><173><945><29><244><326><583><728><576><663><969><896><627><143><38><515><663><24><382><251><676><412><260><41><740><677><253><382><268><876><233><878><609><389><771><865><641><124><878><609><423><384><879><487><219><522><589><337><126><119><663><748><12><671><877><377><385><902><819><619><842><419><997><829><111><666><42><277><63><665><644><389><771><685><437><641><124><258><436><139><340><11><59><518><56><948><86><258><436><139><340><347><376><940><118><944><878><173><641><124><362><734><179><961><931><878><609><423><384><879><219><522><866><337><243><935><101><741><822><89><194><630><86><555><105><79><868><220><156><824><998><870><390><422><330><776><663><969><523><105><79><799><220><357><390><479><422><330><776><485><165><86><501><119><716><205><521><787><935><101><741><89><194><664><835><67><940><118><613><417><755><902><415><772><497><eosp><eoa>."
    },
]

Introduction

在本文中,我们提出了SpeechGPT,一个大型的语言模型,具有内在的跨模态会话能力,能够感知和生成多模型内容。我们使用自监督训练的语音模型进行语音离散化,以统一语音和文本之间的模态。然后,离散的语音token扩展到LLM的词汇表中,从而赋予模型固有的感知和生成语音的能力。

为了使模型具有处理多模态指令的能力,我们构建了第一个语音-文本跨模态指令遵循数据集SpeechInstruct。具体地,我们将语音离散化为离散单元(Hsu 等人,2021),并基于现有的ASR数据集构建跨模态单元文本对。同时,我们使用GPT-4为不同的任务构建了数百条指令,以模拟实际的用户指令,如附录B所示。此外,为了进一步增强模型的跨模态能力,我们设计了模态链指令数据,即,该模型接收语音命令,以文本形式思考该过程,然后以语音形式输出响应。

为了更好地进行跨模态迁移和有效的训练,SpeechGPT经历了三个阶段的训练过程:模态适应预训练,跨模态指令微调和模态链指令微调。第一阶段使语音理解与离散语音单元连续任务的SpeechGPT。第二阶段采用SpeechInstruct来提高模型的跨模态能力。第三阶段利用参数有效的LoRA(Hu 等人,2021年)进行微调,以进一步调整模式。

SpeechInstruct Construction:

SpeechInstruct,一个语音文本跨模态解释跟随数据集。该数据集由两部分组成,第一部分称为跨模态指令[Cross-modal Instruction],第二部分称为模态链指令[Chain-of-Modality Instruction]。

Cross-modal Instruction数据集构造:

step1 数据收集: 收集了几个大规模的英语ASR数据集来构建跨模态教学,包括Gigaspeech(Chen et  al.,2021)、Common Voice(Ardila 等人,2020)和LibriSpeech(Panayotov 等人,2015年)。我们采用mHuBERT作为语音分词器,以将语音数据离散化为离散单元,并去除相邻帧的重复单元以获得缩减的单元。最终,我们获得了900万个单元文本数据对。

step2 任务描述生成:我们生成与语音-文本数据对兼容的ASR和TTS任务描述。与自我指导方法不同(Wang 等人,2022),我们通过零zero-shot 方法生成描述。具体来说,我们直接将附录A中所示的提示输入OpenAI GPT-4以生成任务描述。我们的生成方法为每个任务生成100条指令,附录B中显示了一些示例。

step3 数据构造Instruction Formatting :对于离散单元序列 U 及其相关联的转录 T ,我们基于概率 p 来确定它将被用于构造ASR任务还是TTS任务。随后,我们从step2相应的任务描述中随机选择一个描述 D 。表示为 (D,U,T) 。在此之后,使用模板[Human]:{D}。输入:{U}<eoh>。[SpeechGPT]:{T}<eos>。. 为了支持多轮对话,组装的指令以多轮对话的形式连接,遵守模型的最大输入长度。

Chain-of-Modality Instruction数据集构造:

语音指令生成: 由于缺乏语音输入和语音输出的指令数据,我们训练了一个文本到单元【text-to-unit】生成器来将文本指令数据转换为语音指令数据。具体地,文本到单元生成器采用Transformer编码器-解码器架构。我们在跨模态教学中对LibriSpeech unit-text pairs进行了训练。 我们从moss-002-sft-data数据集中选择了37,969个响应长度小于35个单词的样本,通过文本到单元生成器将它们的指令和响应转换为单元序列。结果,我们获得了由语音指令、文本指令、文本响应和语音响应组成的37,969个四元组,表示为 (S​p​e​e​c​h​I,T​e​x​t​I,T​e​x​t​R,S​p​e​e​c​h​R) 。

使用上述四元组,我们可以为四种输入输出格式构建思维链风格的指令,即语音指令-语音响应,语音指令-文本响应,文本指令-语音响应和文本指令-文本响应。其相应模板可参见附录C

Model Structure:

模型由三个主要组件组成:离散单元提取器大语言模型单元声码器。在这种架构下,LLM可以感知多模态输入并生成多模态输出。

离散单元提取器 离散单元提取器利用隐藏单元BERT(HuBERT)模型(Hsu 等人,2021)以将连续语音信号变换成离散单元的序列。HuBERT是一种自监督模型,它通过基于应用于模型中间表示的k均值聚类来预测掩蔽音频片段的离散标签来学习。它具有1-D卷积层和Transformer编码器的组合,将语音编码为连续的中间表示,k-means模型进一步将这些表示转换为聚类索引序列。随后,去除相邻的重复索引,得到表示为 U=(u1,u2,…,uT) 、 ui∈0,1,…,K−1 、 ∀1≤i≤T 的离散单元序列,其中 K 表示簇的总数。

LLM:采用Meta AI LLaMA(Touvron 等人,2023)模型作为我们的大型语言模型。LLaMA包括嵌入层、多个Transformer块和LM头层。LLaMA中的参数总数范围从7 B到65 B。从1.0万亿个令牌的广泛训练数据集中,LLaMA在各种NLP基准测试中与更大的175 B GPT-3相比表现出了竞争力。

Unit Vocoder:训练了一个多说话人 unit  HiFi-GAN来解码语音信号, 离散表示。 HiFi-GAN架构由生成器 𝐆 和多个鉴别器 𝐃 组成。该生成器使用查找表(LUT)来嵌入离散表示,并且嵌入序列由一系列由转置卷积和具有扩张层的残差块组成的块进行上采样。 扬声器嵌入被连接到上采样序列中的每个帧。 该滤波器具有多周期鉴别器(MPD)和多尺度鉴别器(MSD)。

Training:

为了将语音离散表示纳入LLM,我们首先扩展词汇表和相应的嵌入矩阵。我们将培训过程分为三个阶段。第一阶段是对未配对语音数据进行模态自适应预训练。第二阶段是跨模态教学微调。第三阶段是模态链教学微调。

扩大词汇 给定大小为 |V| 的原始LLM词汇表 V ,为了将语音离散表示集成到LLM中,我们用大小为 |V′|=K 的单元标记 V′ 的附加集合来扩展词汇表。扩展词汇表 V′′ 是原始词汇表 V 和新词 V′ 的联合:V′′=V∪V′

我们将原始词嵌入矩阵表示为 E∈ℝ|V|×d ,其中 d 是词嵌入的维数。为了适应扩展的词汇表,我们需要创建一个随机初始化的单词嵌入矩阵 E′∈ℝ|V′′|×d 。 我们通过将 E 的值复制到 E′ 的前 |V| 行来保留原始的单词嵌入:E′[0:|V|,:]=E

Stage 1: Modality-Adaptation Pre-training

为了使LLM能够处理离散单元模态,我们利用未标记的语音语料库在下一个令牌预测任务中训练LLM。这种方法与LLM的文本预训练目标一致。 给定由语音 U1,U2,…,Um 和表示为 L1 的LLM组成的未标记语音语料库 C ,负对数似然损失可以公式化为:

其中, m 是数据集 C 中的语音的数量, nj 是语音 Uj 中的离散单元标记的数量,并且 ui,j 表示第j个语音中的第i个单元标记

Stage 2: Cross-modal Instruction Fine-Tuning 

跨模态教学微调 在这个阶段,我们利用配对数据对齐语音和文本模态。我们将SpeechInstruct中的跨模态指令与moss-002-sft数据集混合以导出混合数据集 I ,其由样本 T1,T2,…,Tx 组成。我们在 I 上对从第一阶段获得的模型 L 进行微调。

由 t1,t2,…,tnj 组成的每个样本 Tj 通过连接前缀和文本来形成。训练目标是最小化负对数似然,损失计算只考虑文本部分,忽略前缀,可以格式化为:

其中 x 是语料库 I 中的样本数, yj 是样本 Tj 中的标记总数, pj 是 Tj 的前缀部分中的标记数,并且 ti,j 表示 Tj 中的第i个单词

Stage 3: Chain-of-Modality Instruction Fine-Tuning

获得阶段2中的模型之后,我们利用参数有效的低秩自适应(LoRA)(Hu 等人,2021年),以微调它的链的模态教学SpeechInstruct。我们将LoRA权重(适配器)添加到注意力机制中,并训练新添加的LoRA参数。我们采用与阶段2相同的损失函数。

附录A:Prompts to Generate Task Description

ASR:
You are asked to come up with a set of 100 diverse task instructions about automatic speech
recognition, which is about recognizing speech.
Here are the requirements:
1. These instructions should be to instruct someone to recognize the content of the following
speech.
2. Try not to repeat the verb for each instruction to maximize diversity.
3. The language used for instruction also should be diverse. For example, you should
combine questions with imperative instructions.
4. The type of instructions should be diverse.
5. The instructions should be in English.
6. The instructions should be 1 to 2 sentences long. Either an imperative sentence or a
question is permitted.
List of 100 tasks:
TTS:
You are asked to come up with a set of 100 diverse task instructions about text to speech,
which is about recognizing speech .
Here are the requirements:
1. These instructions should be to instruct someone to recognize the content of the following
speech.
2. Try not to repeat the verb for each instruction to maximize diversity.
3. The language used for instruction also should be diverse. For example, you should
combine questions with imperative instructions.
4. The type of instructions should be diverse.
5. The instructions should be in English.
6. The instructions should be 1 to 2 sentences long. Either an imperative sentence or a
question is permitted.
List of 100 tasks:

附录B:Examples of Task Description【gpt生成的一些例子】

ASR:
Begin by converting the spoken words into written text.
Can you transcribe the speech into a written format?
Focus on translating the audible content into text.
Transcribe the speech by carefully listening to it.
Would you kindly write down the content of the speech?
Analyze the speech and create a written transcription.
Engage with the speech to produce a text-based version.
Can you document the speech in written form?
Transform the spoken words into text accurately.
How about putting the speech’s content into writing?
TTS:
Can you please read this sentence out loud?
Recite the following words as if you were speaking normally.
Project your voice to clearly articulate this statement.
Would you mind speaking these words as naturally as possible?
Whisper the given sentence softly.
Enunciate each word in this sentence with precision. How would you express this sentence in
 a conversational tone?
Could you please relay the message below verbally?
Emphasize the key points while reading the sentence.
Sing the text provided in a melodic voice.

附录C: Chain-of-Modality Instructions Templates

Speech Instruction-Speech Response:
[Human]: This is a speech instruction: {SpeechI}. And your response should be speech.
 You can do it step by step. You can first transcribe the instruction and get the text Instruction.
Then you can think about the instruction and get the text response. Last, you should speak the
 response aloud <eoh>. [SpeechGPT]: [tq] {TextI}; [ta] {TextR}; [ua] {SpeechR}<eoa>.
Speech Instruction-Text Response:
[Human]: This is a speech instruction: {SpeechI}. And your response should be text. You
 can do it step by step. You can first transcribe the instruction and get the text instruction.
Then you can think about the instruction and get the text response. <eoh>. [SpeechGPT]:
[tq] {TextI}; [ta] {TextR}<eoa>.
Text Instruction-Speech Response:
[Human]: This is a text instruction: {TextI}. And your response should be speech. You can
 do it step by step. You can think about the instruction and get the text response. Then you
should speak the response aloud <eoh>. [SpeechGPT]: [ta] {TextR}; [ua] {SpeechR}<eoa>.
Text Instruction-Text Response:
[Human]: This is a text instruction: {TextI}. And your response should be text. You can
 think about the instruction and get the text response. [SpeechGPT]: [ta] {TextR}<eoa>.

SpeechAgents:多模态多智能体系统的人机交互仿真

SpeechAgents是一个基于多模态LLM的多智能体系统,旨在模拟人类的交流。与现有的基于LLM的多Agent系统不同,SpeechAgents使用多模态LLM作为单个Agent的中央控制,并使用多模态信号作为Agent之间交换消息的媒介。 此外,我们提出了多代理调整,以提高LLM的多代理功能,而不影响一般的能力。为了加强和评估人类通信仿真的有效性,我们建立了人类通信仿真基准。实验结果表明,SpeechAgents可以模拟人类交流对话一致的内容,真实的节奏,丰富的情感和表现出良好的可扩展性,即使多达25个代理,这可以适用于任务,如戏剧创作和音频小说生成。

图3:SpeechAgents中单个代理的训练和推理过程的图示。实心箭头表示推理过程中的数据流。在一个代理的回合中,它接收包括场景、背景、角色、简档和来自语音消息流库的消息流的输入。智能体的输出包括其内部思想、生成的语音响应和相应的风格。然后将具有样式的响应写入语音消息流库。虚线箭头表示训练过程中的数据流。从人类通信模拟基准测试中的脚本解析的代理轨迹指令以图中代理输入和输出的串联的形式可视化地表示,并用于多模态LLM的多代理调整。

Hmuan-Communication Simulation Benchmark构建过程概述。我们通过创建模拟人类交流的各种场景来启动这一过程。随后,为每个场景生成包含各种角色的角色池。然后从池中选择角色,并根据所涉及的特定场景和角色生成通信脚本。最终,通过文本到语音转换来制作多模态人类沟通脚本。

SpeechGPT-Gen[SpeechGPT2]: 缩放信息链语音生成

SpeechGPT 2是一种端到端的语音对话语言模型,类似于GPT-4 o。它可以感知和表达情感,并根据上下文和人类指令提供各种风格的适当语音响应,如说唱,戏剧,机器人,搞笑和耳语。为了解决冗长语音序列的问题,SpeechGPT 2采用了超低比特率语音编解码器(750 bps),该编解码器对语义和声学信息进行建模。它使用多输入多输出语言模型(MIMO-LM)。目前,SpeechGPT 2仍然是一个基于回合的对话系统。我们正在开发实时SpeechGPT 2的全双工版本,并且已经取得了一些有希望的进展。

得益于有效的语音建模,当前的语音大语言模型(SLLM)在上下文语音生成和对未知说话人的有效泛化方面表现出了卓越的能力。然而,流行的信息建模过程是由某些冗余,导致语音生成效率低下。我们提出了信息链生成(CoIG),在大规模语音生成的语义和感知信息解耦的方法。在此基础上,我们开发了SpeechGPT-Gen,这是一个在语义和感知信息建模方面具有80亿参数的SLLM。它包括一个基于LLM的自回归模型用于语义信息建模和一个采用流匹配的非自回归模型用于感知信息建模 [感知信息建模主要关注的是与感官输入(如视觉、听觉等)直接相关的信息处理,非自回归模型通常用于感知信息建模中,因为这些模型可以并行处理数据,更加适合需要实时处理或低延迟的应用场景]。此外,我们引入了新的方法,注入语义信息的先验分布,以提高流匹配的效率。 大量的实验结果表明,SpeechGPT-Gen在zero-shot文本到语音,zero-shot语音转换和语音到语音对话方面表现出色,强调了CoIG在捕捉和建模语音的语义和感知维度方面的卓越能力。

SpeechGPT-Gen基于信息链生成方法,依次进行语义建模和感知建模。SpeechTokenizer(Zhang 等人,2023 b)用于提取语义表示和感知表示。SpeechGPT-Gen由用于语义建模的基于LLM的自回归模型和用于感知建模的基于流匹配的非自回归模型组成。

Speech Tokenization:

SpeechTokenizer(Zhang 等人,2023 b)是基于残差矢量量化(RVQ)的语音标记化方法,并且跨不同RVQ层分层地解开语音信息的不同方面。具体地,第一RVQ量化器生成包含语义信息的令牌,而后续量化器补充剩余的感知信息。 SpeechTokenizer将单声道音频信号表示为 作为输入,其中 d 表示持续时间, fs⁢r 表示采样率。 SpeechTokenizer的输出包括用于对应RVQ层的 Q=8 分层RVQ令牌 (q1,…,qQ) 和 Q 码本 (C1,…,CQ) 。 qi∈ℝT 表示长度为 T 的一维序列。 RVQ令牌 qi 可以由码本 Ci∈ℝK×H 嵌入,从而产生连续矢量序列 vi∈ℝT×H ,其中 vij=Ci⁢(qij) 用于 i∈1,…,Q 、 j∈1,…,T 。 表示为 v1:8=∑i=1Qvi 的来自所有RVQ层的连续表示的总和包含语音内的所有信息。 我们利用来自第一RVQ层 q1 的标记作为包含语义信息的表示,并且利用从第二层到最后一层 v2:7=∑i=2Qvi 求和的连续向量作为包含感知信息的表示。

LLM用于语义建模:

SpeechGPT是一个大型的跨模态语言模型,可以执行跨模态指令跟随和语音到语音对话,表现出出色的语音语义建模能力。 利用HuBERT(Hsu 等人,2021)将语音离散化为单元,SpeechGPT执行模态适应预训练,跨模态指令微调和模态链指令微调。我们通过用SpeechTokenizer RVQ-1令牌 q1 替换HuBERT离散单元来使用SpeechGPT进行语音语义建模。 对于模型结构,我们采用LLaMA 2 – 7 B-Chat作为预训练的LLM。 对于训练数据,我们采用SpeechTokenizer RVQ-1令牌来表示语音,并遵循SpeechInstruct的过程和设置来构造训练数据集 D ,包括跨模态指令集和模态链指令集。我们使用Multilingual  Librispeech 、Gigaspeech(Chen 等人,2021)、Commonvoice(Ardila 等人,2020)和Librispeech(Panayotov 等人,2015年)构建跨模态指令集。 对于训练,我们跳过模态适应预训练,并使用跨模态指令集 I 对LLaMA 2 – 7 B-Chat执行跨模态指令微调。 在模态链指令微调中,我们选择全参数微调而不是模态链指令集上的LoRA微调。 这两个培训阶段的培训目标可以格式为:

感知建模的流程匹配:

给定语音 s 、语义表示 v1 、感知表示 v2:8 和由SpeechTokenizer提取的完整信息表示 v1:8=v1+v2:8 ,感知建模是指在给定提示语音 a 和语义表示 v1 的情况下预测完整表示 v1:8 。 我们提出了两种感知建模的流匹配模式:显式链和隐式链

Seed-TTS

A Family of High-Quality Versatile Speech Generation Models [字节跳动]

https://bytedancespeech.github.io/seedtts_tech_report/

Seed-TTS,一个大规模的自回归文本到语音(TTS)模型家族,能够生成与人类语音几乎不可区分的语音。Seed-TTS是语音生成的基础模型,具有良好的语音上下文学习能力,在说话人相似度和自然度方面的性能在客观和主观评价上都与真实人类语音相匹配。通过微调,我们在这些指标上获得了更高的主观分数。Seed-TTS提供了对各种语音属性(如情感)的上级可控性,并且能够为现实中的说话者生成高度表达性和多样化的语音。此外,我们提出了一种自蒸馏方法的语音分解,以及强化学习方法,以提高模型的鲁棒性、说话人相似性和可控性。 我们还提出了一个非自回归(NAR)的 Seed TTS模型的变体,命名为 Seed -TTSDiT,它利用了一个完全基于扩散的架构。与以前的基于NAR的TTS系统不同,Seed-TTSDiT不依赖于预先估计的音素持续时间,并且通过端到端处理来执行语音生成。我们证明了这种变体在客观和主观评价中与基于语言模型的变体具有可比性,并展示了其在语音编辑中的有效性。

图1. Seed-TTS推理流水线概述。(1)语音分词器从参考语音中学习标记。(2)自回归语言模型基于条件文本和语音生成语音令牌。(3)扩散Transformer模型以由粗到细的方式在给定生成的语音标记的情况下生成连续语音表示。(4)声学声码器从扩散输出产生更高质量的语音。

主要贡献如下:

1、Seed-TTS,这是一系列语音生成模型,能够生成高度表达性的类人语音。我们证明, Seed- TTS实现SOTA的性能在多个评估数据集。在zero-shot speech in-context learning (ICL)设置下,我们表明Seed-TTS能够生成与人类语音难以区分的鲁棒、相似和高度动态的语音。

2、提出了一种新的用于音色解耦的Seed-TTS自蒸馏扩展,并在语音转换任务中验证了SOTA的性能。

3、针对Seed-TTS模型,提出了一种新的基于RL的训练后扩展方法,从整体上提高了模型的性能。

Seed-TTS主要功能:

  • 高质量语音生成: Seed-TTS采用了先进的自回归模型和声学声码器技术、能够生成接近人类自然语音的高质量语音。模型在大量数据上进行训练,学习到丰富的语音特征和语言模式,从而能够合成清晰、流畅、自然的语音输出
  • 上下文学习: 该模型具备出色的上下文学习能力,可以在理解给定文本的上下文基础上、生成与上下文风格和语义相匹配的语音。无论是连续的对话还是单独的句子,Seed-TTS都能够保持语音的连贯性和一致性
  • 情感控制:Seed-TTS能够根据文本内容或额外的情感标签,控制生成语音的情感色彩。用户可以指定语音中应表达的情感,如愤怒、快乐、悲伤或惊讶等,模型会相应地调整语音的音调、强度和节奏,以匹配所选情感
  • 语音属性可控:除了情感,Seed-TTS还允许用户控制其他语音属性,包括语调、节奏和说话风格。用户可以根据应用场景的需求,调整语音使其更正式或非正式 或者更具戏剧化效果
  • 零样本学习能力(Zero-shot Learnina):即使没有特定说话者的训练数据,SeedTTS也能够利用其在大量数据上训练得到的泛化能力,生成高质量的语音。此能力使得Seed-TTS能够快速适应新的说话者或语言,而无需额外的训练过程
  • 语音编辑:Seed-TTS支持对生成的语音进行编辑,包括内容编辑和说话速度编辑。用户可以根据需要修改语音中的特定部分,或调整语速以适应不同的听众或应用场景。
  • 多语种支持:模型设计支持多种语言的文本输入、能够生成相应语言的语音,使得Seed-TTS可以服务于全球化的应用,满足不同语言用户的需求
  • 语音分解:Seed-TTS通过自我蒸馏方法实现了语音的属性分解。例如可以将语音的音色与其他属性(如内容和情感)分离,为语音合成提供了更高的灵活性和控制力,允许用户独立地修改和重组语音的不同组成部分

Seed-TTS 是一种基于自回归 Transformer 模型,如图 1 所示。我们的系统由四个主要构建模块组成:语音分词器、分词语言模型、分词扩散模型和声学声码器。我们强调,Seed-TTS 在大量数据上进行训练(数据量级比之前最大的 TTS 系统大得多),以实现强大的泛化能力和新兴能力。

Seed-TTS方法:

具体流程如下: 首先语音tokenizer将语音信号转换为语音token序列,在该语音token序列上训练token语言模型,我们研究了连续和离散语音token器,发现 tokenizer 的设计对整个系统的性能至关重要。语言模型在文本和语音token的配对序列上训练。在推理过程中,它自回归地生成语音token。这些生成的令牌,然后用扩散模型进行处理,以增强声学细节。输出被传递到声学声码器以预测最终波形。 声学声码器使用类似于Kumar等人【High-Fidelity Audio Compression with Improved RVQGAN】,并单独进行训练。

微调阶段包括说话人微调和指令微调。说话人微调的重点是提高选定说话人组的表现,而指令微调的目的是提高可控性和交互性。后期训练通过RL进行,从整体上改进了模型。

Seed-TTS解决了基于语言模型的TTS系统中普遍存在的稳定性问题,这些问题阻碍了它们在现实世界中的部署。稳定性是通过token和模型设计改进、增强的训练和推理策略、数据扩充和训练后强化学习的组合来实现的。因此,Seed-TTS在测试集上实现了显著更好的鲁棒性。

作为语音生成的基础模型,Seed-TTS可以执行各种任务,例如语音ICL【 zero-shot voice continuation】,可控TTS,跨语言TTS,语音转换,音色生成和说话风格转换。ICL被定义为生成具有与短参考语音片段相同的音色和韵律的新颖的口语话语

低延迟推理和流处理

TTS模型在实际应用中的部署从多个角度提出了一些实际挑战。例如,在基于聊天的应用中,等待时间和第一分组延迟对于用户体验是必不可少的。在时间和内存上的计算开销对于服务并发性是至关重要的。与传统TTS型号相比,Seed-TTS采用了明显更大的型号尺寸,为部署带来了额外的障碍。为了解决这些挑战,我们采用了各种技术来降低推理成本和延迟。

具体地说,我们解决了模型部署的三个方面。首先,实现了一种因果扩散结构,该结构使流处理能够在扩散模块中进行,并显著降低了处理延迟和首包延迟。 其次,我们采用稠度蒸馏(Song 等人,2023)和改进的流量匹配算法Esser 等人(2024),以降低扩散模型的计算成本。另一方面,我们研究了在语言模型侧减少内存和计算消耗的常用方法。

模型扩展

我们进一步提出了两个扩展的TTS模型,以提高其性能和扩大其适用性。首先,我们介绍了一种自蒸馏的方法,旨在增加音色的可控性。随后,我们提出使用强化学习来全面提高模型的能力。

自蒸馏的语音分解:

语音分解是指将语音分解为各种独立的、分离的属性的过程。该功能允许TTS系统灵活地合成来自不同说话者的具有不同音色、韵律和内容组合的语音,这对于零样本语音转换和因子化零样本TTS等应用至关重要。大多数现有方法通过特征工程特定损失函数或精确的网络架构调整实现属性解耦。然而,将这些方法集成到像Seed-TTS这样的通用语音生成系统中可能具有挑战性。

我们提出了一个自蒸馏方案来实现属性解耦。这种方法的核心原理是创建受控语音对,这些语音对共享大多数信息,但在一个或几个特定的目标属性上有所不同。利用这样的数据对,沿着对模型架构的微小更新,使得Seed-TTS模型能够实现高质量的属性解耦。鉴于Seed-TTS可以为几乎任何说话者生成高质量的零样本生成,生成这些具有不同目标属性的数据对是简单的。在这份报告中,我们特别强调了音色分解的过程和结果。

我们注意到,在Seed-TTS生成过程中,通过在扩散模块中引入说话人扰动,我们能够获得具有相同内容和韵律模式但音色发生变化的合成语音。我们将原始句子和音色改变的句子分别表示为 So⁢r⁢i 和 Sa⁢l⁢t 。

我们使用这些增强的合成数据对重新训练Seed-TTS系统中的扩散模型。具体地,在训练期间,从 Sa⁢l⁢t 提取的令牌被用作网络的输入。从 So⁢r⁢i 提取的音色参考也被集成为扩散输入的一部分。 该网络被优化以恢复从 So⁢r⁢i 中提取的声码器嵌入。值得注意的是, Sa⁢l⁢t 和 So⁢r⁢i 共享相同的内容和韵律,但音色不同。为了恢复 So⁢r⁢i ,网络必须忽略嵌入在来自 Sa⁢l⁢t 的令牌序列中的音色,并且仅依赖于所提供的音色嵌入。这种方法允许我们使用额外的音色参考来修改音色,同时保留原始内容和韵律。我们发现这种直接的方法使得Seed-TTS系统能够实现高质量的音色解缠结。

通过强化学习的偏好偏向

RL已被证明是文本和图像处理中的有效学习范例。我们比较了使用外部奖励模型的RL方法,如近端策略优化和REINFORCE,以及不使用外部奖励模型的RL方法,如DPO。我们的研究结果表明,这两种方法都是有效的。前者允许对特定语音属性进行清晰的控制,而后者受益于更简单的实现。在本报告中,我们展示了前一种方法的有效性。

具体来说,我们使用REINFORCE来微调两个版本,这两个版本基于原始的零触发ICL模型( Seed-TTSICL ),使用不同的奖励函数: Seed-TTSRL-SIM-WER ,使用SIM和WER客观指标作为奖励,以提高说话人相似性和鲁棒性, Seed-TTSRL-SER ,使用SER模型的准确性作为奖励,以提高情感可控性。

完全基于扩散的语音生成【去除token语言模型】

提出了一种仅基于扩散的Seed-TTS模型的变体,表示为 Seed-TTSDiT 。在该变型中,我们去除了扩散模型和声学表征器【acoustic tokenizer】之间的依赖性,使得扩散模型直接将高斯噪声转换成纯粹基于输入文本的声码器的潜在表示。

在我们修改后的 Seed-TTSDiT 设计中,我们直接在扩散模型中采用端到端处理。与估计音素级持续时间相反,该模型预先估计生成的语音的总持续时间。然后优化该模型以估计音频和文本之间的局部对齐。通过这种方式, Seed-TTSDiT 可以动态调整每个音素的持续时间,从而产生高度自然的语音。

我们发现 Seed-TTSDiT 在正确训练时能够预测输入语音的适当总持续时间。然而,不是以这种方式训练,而是选择直接向模型提供总持续时间,这实现了可用于内容编辑和语速编辑的若干附加的期望属性。为此,在训练过程中,扩散模型接收音频提示、目标文本以及一段高斯噪声的片段,所有样本的总时长都相同。模型预测生成语音的潜在表示,保持相同的总时长,然后通过声码器转换成波形。

与采用生成下一个token语言建模的方法相比,纯扩散模型具有更简单的流水线。作为非流模型, Seed-TTSDiT 自然支持内容编辑的应用。在内容编辑任务中,我们屏蔽了一定比例的音频,并使用模型根据每个测试样本提供的文本恢复被屏蔽的部分。

模型应用、局限性和安全性

尽管Seed-TTS具有这些功能,但它仍有一些局限性。虽然观察到了紧急行为,但该模型有时在需要细致入微的情感和上下文理解的场景中存在局限性。此外,尽管使用大量数据进行了训练,但场景覆盖率仍有改进的空间。例如,当前的Seed-TTS模型在唱歌或给出包含背景音乐或过度噪音的提示时表现不佳,通常会产生不一致的背景,例如完全忽略音乐。

考虑到滥用可能会造成有害的社会影响,我们在相关产品中实施了多项安全程序,以防止在该模型的开发和潜在部署过程中发生滥用。例如,我们开发了一种针对语音内容和扬声器音色的多步验证方法,以确保注册音频仅包含授权用户的语音。此外,我们实现了一个多层次的水印方案,这是强制性地包括在创建的内容,如视频背景水印和内容描述中的水印的各个层次。

paraformer-工业级非自回归端到端语音识别模型

论文地址:https://arxiv.org/abs/2206.08317

代码:https://github.com/modelscope/FunASR/

摘要:

Transformers在 ASR 领域占据主导地位。虽然能够产生良好的性能,但它们使用自回归(AR)解码器来逐一生成令牌,这在计算效率上是低效的。为了加快推理速度,可以使用非自回归 (NAR) 方法,例如单步 NAR 的设计是为了实现并行生成。然而,由于输出标签之间的独立性假设,单步 NAR 的性能不如 AR 模型,尤其是在大规模语料库的情况下。改进single-step NAR 面临两个挑战:首先是准确预测输出 token 的数量并提取隐藏变量;其次,增强输出标签之间相互依赖性的建模。为了应对这两个挑战,我们提出了一种快速且准确的并行Transformer,称为 Paraformer。该模型属于单步非自回归模型。这利用基于连续积分和激发的预测器来预测令牌的数量并生成隐藏变量。然后,扫视语言模型(GLM)采样器生成语义嵌入,以增强 NAR 解码器对上下文相互依赖进行建模的能力。最后,我们设计了一种策略来生成负样本以进行最小错误率训练,以进一步提高性能。使用公共 AISHELL-1、AISHELL-2 基准和工业级 20,000 小时任务的实验表明,所提出的 Paraformer 可以达到与最先进的 AR Transformer相当的性能,并且加速超过 10 倍。

1. Paraformer使用基于CIF的predictor预测输出标签的个数并产生隐变量;【文献18】

2. GLM sampler用于产生语义向量增强非自回归模型对上下文的建模能力;【文献19】

3. 最后作者设计了一个策略产生负例,并用MWER损失训练使模型的识别能力进一步提升。【文献20】

介绍:

过去几年,端到端(E2E)模型在自动语音识别(ASR)任务上的性能已经超越了传统层级系统。存在三种流行的 E2E 方法:连接主义时间分类 (CTC)、循环神经网络转换器 (RNN-T) 和基于注意力的编码器-解码器 (AED) 。其中,AED 模型由于其卓越的识别精度而在 ASR 的 seq2seq 建模中占据主导地位。例如 Transformer 和 Conformer。虽然性能良好,但此类 AED 模型内的自回归 (AR) 解码器需要一一生成令牌,因为每个令牌都以所有先前的令牌为条件。因此,解码器的计算效率低下,并且解码时间随着输出序列长度线性增加。为了提高效率并加速推理,有人提出使用非自回归(NAR)模型并行生成输出序列。

基于推理时需要的迭代次数,NAR 模型可以分为迭代模型或单步模型。在前者中,A-FMLM 是单步自回归模型的最早尝试,旨在通过不断迭代来预测以未屏蔽标记为条件的屏蔽标记。由于需要预先定义目标令牌长度,性能受到影响。为了解决这个问题,Mask-CTC 和变体提出通过 CTC 解码来增强解码器输入。即便如此,这些迭代 NAR 模型需要多次迭代才能获得有竞争力的结果,限制了实践中的推理速度。最近,提出了几种单步 NAR 模型来克服这一限制。它们通过消除时间依赖性同时生成输出序列。虽然单步 NAR 模型可以显着提高推理速度,但其识别精度明显不如 AR 模型,尤其是在大规模语料库上评估时。

前面提到的单步非自回归模型主要关注如何预测输出标签的个数和准确提取隐变量。和机器翻译通过predictor预测输出标签个数相比,ASR预测输出标签个数确实比较难,因为有很多的潜在影响因素,比如说话人的语速、静音、噪音。另一方面,经过作者的观察和分析,单步非自回归模型相比自回归模型具有更多的替换错误,如下图1。作者认为缺少上下文依赖信息导致预测标签个数准确率差不多,但替换错误上升明显(AR和vanilla NAR比较),尤其是单步自回归模型的条件独立假设。另外,所有的非自回归模型都是在学术基准阅读音频上实验的,并没有验证这些模型在工业基准数据上的效果。这篇论文的目标是提升单步非自回归模型的识别效果,使其达到和自回归模型相同的水准,并在大规模工业级数据上验证。

图1

文章提出了一个又快又准的并行transformer模型,可以克服上面提到的两个挑战。首先,不像前面的基于CTC的工作,作者提出了使用基于CIF【continuous integrate-and-fire】的predictor网络评估目标长度并产生隐变量。对于第二个挑战,作者设计了基于GLM【glancing language mode】的sampler模块增强非自回归解码器对输出上下文的建模能力。这个工作受到了机器翻译工作的启发。作者另外设计了一个包含负例的策略,利用MWER损失指导模型学习提升模型性能。

Paraformer是第一个在性能上可以和自回归模型媲美,并且在大规模数据集上相比自回归模型有10倍+的推理速度提升。

方法

整体框架

如上图所示,整个框架包含五个模块:encoder、 predictor、sampler、decoder、loss function。其中Encoder和自回归模型的Encoder一样,本文使用SAN-M【multihead-attention的部分换成了san-M】和FFN,也可以使用conformer等结构。Predictor用于生成声学特征指导解码。Sampler模块使用声学特征和标签特征生成语义特征【用于学习输入的上下文内容语义信息,增强非自回归解码器对输出上下文的建模能力】。Decoder和自回归解码器相同,只不过这里是双向解码器[类似bert]。解码器包含多个SAN-M、FNN和cross MHA模块。除了CE loss,还会使用MAE loss训练predictor,MWER损失也一起参与模型训练。

整个流程阐述:
输入音频为X,长度为T;音频对应的文本标签为Y,长度为N。Encoder的输入为X,输出为H。Predictor的输入为H,输出为预测的输出标签长度N’并生成声学向量Ea。第一轮解码Decoder的输入为H和Ea,输出为Y’。图中红色虚线Pass1标记部分表示输入Ea,但是并不对这个输入进行反向传播学习。第二轮解码前会首先经过Sampler模块。Sampler模块在声学向量Ea和输出标签向量Ec之间进行采样得到语义向量Es。其中Char指的是标签Y。采样过程依赖Y和Y’之间的距离。第二轮解码Decoder的输入为H和Es,输出为Y’‘,这次进行反向传播学习。此次反向传播学习指导decoder学习上下文语音信息,同时也会指导predictor和encoder的学习。Sampler使用Y’进行距离计算不会进行反向传播学习。最后输出的Y’’会被采样为MWER训练生成负例候选。使用N和N’计算MAE。MWER、MAE和CE loss一起作为loss进行训练。
推理时,sampler模块是不激活的,并且双向并行解码器只使用声学向量Ea和隐向量H通过一轮输出最终的预测结果。尽管decoder在每次训练时会前向推理两次,但是因为在推理时只进行了一次所以并不会使计算复杂度变大。

Predictor

Predictor由两个卷基层组成,输出的float weight α 在0~1之间。作者通过累计此权重预测输出标签的长度。MAEloss定义为:

其实就是将所有α 进行了累加,加起来的长度就是预测的长度。LOSS就是真实长度和预测长度差的绝对值。作者引入了CIF机制产生声学向量。CIF是一个软的(非0/1,可以是小数)和单一对齐的,在AED模型中作为流式解决方案的实现。声学向量的生成时,CIF对权重α 进行累计,如果超过了设定的阈值β ,说明某一个声学向量的边界确定了。对边界之内的向量H根据权重α 进行缩放累计即可得到某一个声学向量。此过程重复直到结尾,可得到所有的声学向量。如下图所示:

在训练时权重α会根据N进行缩放(比如累计的α为N’,使用N/N’对所有的α 进行缩放,使用缩放后的α计算声学向量Ea。缩放是为了让的Ea维度和Ec的维度保持一致),但是在推理时无法进行缩放,导致训练和推理之间存在不一致。为了弥补这个不一致,作者提出了使用动态阈值β而不是固定阈值。计算公式如下:

下面是一个向上取整,所以分子小于等于分母,阈值β < = 1 。

Sampler 【参考字节Glancing Transformer

GLM目的就是更好的学习输出序列的上下文语义关系,利用上下文进行当前的文本预测 学习输出标签之间的依赖关系

在普通的单步非自回归模型中,优化的目标为:

然而,正如上面所说的,单步非自回归模型中的输出标签独立性假设导致模型识别效果不如自回归模型。GLM模块的loss定义如下:

其中GLM(Y,Y′)表示Sampler模块在Ea​和Ec​中选中Ec​替换Ea​对应的Y′′中token的集合;GLMˉ(Y,Y′)表示Sampler模块在Ea​和Ec​中未选中Ec​替换Ea​对应的Y′′的token的集合;GLM(Y,Y′)的定义如下:

上面公式的含义是从Ec​中采样⌈αd(Y,Y′)⌉个向量替换对应位置的Ea​,生成新的向量为Es​。其中α是控制采样率的采样因子,越大表示使用Ec​替换Ea​的概率越大。该采样概率应该在最初模型效果不好时设置的稍微大一些,然后随着整个的训练过程的进行逐渐减小。为了达到这个目的,作者简单实用汉明距离,其定义为:

也就是,最开始的时候模型学习不好,d会比较大,当模型学习越来越好时,d也逐渐减小。表示最开始训练时,使用较多的Ec​替换Ea​,也就是上下文信息更多和准确,减小模型的学习难度;当模型学习的越来越好时,使用较少的标签信息迫使模型进一步学习。

总结,sampler模块结合了标注标签向量Ec​,实现方法是随机替换Ea​中⌈αd(Y,Y′)⌉个向量生成新的含有语义的向量Es​。训练并行decoder使用语义上下文GLM(Y,Y′)预测目标标签GLMˉ(Y,Y′),使模型学习输出标签之间的依赖关系

补充Glancing Transformer 原理:

自回归模型中最为常用的训练方式是最大似然估计(MLE),不少非自回归模型也直接使用 MLE 进行训练。但是非自回归模型的输出方式是并行的,输出语句中的任何部分在输出之前都无法获得输出语句中其余词的确切值。所以直接使用 MLE 训练并行输出的非自回归模型无法有效地建模输出语句中词之间的依赖关系。值得注意的是,词之间依赖关系的建模对输出通顺的语句至关重要,拥有良好生成质量的自回归模型和多轮迭代解码的模型均对这种依赖关系进行了有效的建模。

直接训练完全并行生成来学习目标语句中词之间的依赖关系对模型并不友好。一种更为简单有效的依赖关系学习方式是根据部分输入词预测其余目标词。但是这种学习方式需要部分目标词作为输入,不符合非自回归模型并行生成的要求。作者观察到随着模型自身更好地学习到词之间的依赖关系,模型对于依赖关系的学习可以逐渐摆脱使用目标语句部分词作为输入的需求。基于以上观察,Glancing Transformer(GLAT)利用了一种 glancing language model 的方法,通过渐进学习的方式进行词之间依赖关系的建模。在渐进学习的过程中,模型会先学习并行输出一些较为简单的语句片段,然后逐渐学习整句话的单步并行生成。

具体地,在第一次解码的时候,和常规的非自回归模型一样,模型使用完全并行解码的方式输出语句。然后将第一次解码得到的输出和训练数据中的目标语句进行对比。如果输出和目标语句差距较大,说明模型在训练中难以拟合该训练样本,因此这时 GLAT 会选择提供更多目标词作为输入来帮助学习词之间依赖关系。反之,如果输出和目标语句比较接近,则模型自身已经较好地学习了如何并行生成该目标语句,所需要的目标词数量也相应减少。

在第二步解码之前,模型的解码器可以得到部分目标词作为输入,这些词的数量由第一步的解码结果所决定。这时,模型在并行输出之前可以获得部分目标词的确切值,所以在学习输出剩余目标词的过程中就可以对目标语句中词之间的依赖关系进行建模。

随着训练的进行,模型对数据拟合程度更高,因此能够更准确地生成目标语句。与此同时,需要作为解码器输入的目标语句中的词的数量会越来越少,在训练后期逐渐接近学习完全并行生成的训练场景(例如上图右边的例子)。具体的方法细节和实现方式可以参考论文。

Loss Function:

一共定义了三个loss:CE、MAE、MWER。训练时进行联合训练:

对于MWER,具体的计算公式如下:

非自回归模型使用贪婪搜索,所以只有一个输出路径。正如前面提到的,在使用MWER训练时作者使用负例采样策略通过随机遮蔽top1分值标签产生多个候选路径。

实验

实验设置

在AISHELL-1、AISHELL-2以及工业级2wh数据集上验证上述方法的效果。其中工业级的测试集有两个:普通30h、远场15h。具体的工业级语料介绍可以参考文献21和28。RTF的测试在NVIDIA tesla V100上完成。

结果如上表格。在上述两个测试集上的测试都是在ESPNET框架上实现的,不包含LM和预训练模型。
AISHELL-1 的AR baseline参考文献15,效果在所有AR模型中是最好的(排除使用更多数据知识的模型)。因为作者当前的目标是通过模型结构提升模型效果而不是通过数据。普通的NAR和Paraformer的结构相同,但是没有Sampler。

结论:
1. 普通NAR的表现超过了其它的NAR工作,比如文献15和文献12
2. 普通NAR模型的表现比AR模型稍微差一些,因为缺乏了输出标签之间的上下文信息。
3. Paraformer通过使用基于GLM的Sampler模块对普通NAR模型增强,得到了和AR模型相近的识别表现。
4. Paraformer模型在dev和test测试上的CER分别为:4.6%和5.2%,推理速度比AR基线模型快12倍

工业级2wh数据集

结果如上表格所示,进行了多个扩展实验。动态β表示2.2节中的动态阈值,CTC表示带有LM的DFSMN-CTC-sMBR系统,参考文献32。RTF在OpenNMT上进行评估。
实验有两个模型,一个41M的一个63M的。AR基线模型中attention的维度为256,和文献21一致。这里的结论和前面有所不同。

结论

  1. 可以看到在大型数据集上,普通NAR模型和AR模型的识别效果差距很大(AISHELL上差别较小)。
  2. 普通NAR模型虽然和CTC都有输出标签独立假设限制,但是普通NAR模型效果优于CTC效果。
  3. 普通NAR模型结合GLM时,效果提升。
  4. 当进一步结合MWER训练方法时,效果进一步提升。
  5. Paraformer模型效果和AR模型效果很接近,差别在相对2%以内,但是推理速度提升10倍+。
  6. Paraformer结合动态β \betaβ,效果进一步提升。因为相比固定阈值,动态阈值减少了推理和训练的不一致,更准确地提取了声学向量信息。
  7. 将模型变大时,得到了和前面相似的结论。Paraformer相比普通NAR模型效果提升;和AR模型效果相当,但是推理速度提升10倍+。
  8. Paraformer-63M和AR transformer-41M模型相比较,尽管Paraformer模型较大,但是Paraformer推理速度更快。也就是说,在远场测试集上Paraformer-63M模型相比AR transformer-41M模型,识别效果相对提升6.0%,并且推理速度提升7.4倍。 也就是,在实际生产中,可以通过使用较大的Paraformer模型达到比AR模型更好的识别效果以及更快的推理速度。

对采样因子α的超参数测试结果参见上表格。和预期相同α变大时,模型效果变好,因为在训练时提供了更多的上下文信息;然而如果该参数太大会导致训练和测试不一致。基本上,α 在0.5~1.0之间的表现比较稳定。

  1. 在小型训练集上普通NAR和AR模型的识别性能差别不大,但是在工业级大数据集上差距明显。这是第一个在大规模工业级数据上验证NAR模型效果的研究。
  2. Paraformer相比普通NAR模型识别效果相对提升11%,和精细训练的AR模型效果相当。

分析:见文章第一张图。普通NAR模型相比AR模型,插入错误多一点,但是删除错误少一点。说明普通NAR模型的predictor预测输出的标签个数较准确。然而替换错误比较多,侧面反应两者性能差距很大。作者认为这是由普通NAR模型的条件独立假设造成的。Paraformer模型相比普通NAR模型替换错误下降很多,也暗示了识别效果提升很多。作者认为这是由于GLM模块使NAR模型学习到了标签之间的依赖关系。Paraformer模型相比AR模型替换错误稍微多一些,也暗示着识别准确率稍微差一些。作者认为AR模型中基于LM的beam search解码扮演了很重要的角色,相比GLM效果更好。为了减少这个性能差距,作者将在未来工作中在Paraformer模型上结合外部语言模型。

个人思考/疑问

  1. MWER loss没看懂,需要看文献20.
  2. Char 的 Embedding使用的torch.nn.Embedding,直接学习嘛?还是预设值好的。
  3. 端到端语音识别中的Embedding,例如wenet框架的token 的 Embedding能不能使用NLP领域用文字训练得到的Embedding,如果能的话为啥主流的不是这种的,这个Embedding不比直接学习更好嘛?
  4. wenet的重打分架构,decoder能不能直接根据CTC N-best结果得到矫正的识别结果,相当于做矫正/纠错?
  5. Paraformer能不能直接结合在当前的wenet框架中,使用conformer那套encoder,而不是SAN-M。从文章结论看,可以使用更大的模型训练Paraformer,效果比之前的模型效果好,且推理速度快,是一个可以实践的方向。
  6. Paraformer结构能不能和wenet重打分那套结合?Pafaformer的输出替代CTC的那一支,然后再加上decoder部分的重打分。这样相当于有了两个decoder。按道理就是训练会慢,但是推理应该还好吧?可能可行。——》Paraformer输出只有一个结果,重打分啥啊。。这个做不了。但是decoder可以作为纠错模型对结果进行纠错。
  7. 作者提出的在外面再结合一个语言模型应该是可行的。

[18] L. Dong and B. Xu, “CIF: Continuous integrate-and-fire for end-to-end speech recognition,” in ICASSP 2020-2020 IEEE Interna-tional Conference on Acoustics, Speech and Signal Processing(ICASSP). IEEE, 2020, pp. 6079–6083.
[19] L. Qian, H. Zhou, Y. Bao, M. Wang, L. Qiu, W. Zhang, Y. Yu,and L. Li, “Glancing transformer for non-autoregressive neural machine translation,” arXiv preprint arXiv:2008.07905, 2020.
[20] R. Prabhavalkar, T. N. Sainath, Y. Wu, P. Nguyen, Z. Chen, C.-C. Chiu, and A. Kannan, “Minimum word error rate training for attention-based sequence-to-sequence models,” in 2018 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2018, pp. 4839–4843

大模型基本概念

什么是Base模型?什么是chat模型?什么是instruct?什么是4Bit?什么是AWQ模型?

大模型库中的basechatinstruct4bit等通常指的是不同类型或配置的预训练语言模型。它们的区别主要在于训练目标、用途和模型参数的精度。以下是对这些术语的解释:

1. Base 模型 (base)

  • 定义Base模型通常是指未经特定任务微调的基础预训练模型,在训练过程中最初被开发和优化的,它旨在平衡性能和资源消耗。
  • 用途这些模型通常用于进一步的微调,以适应特定任务或应用场景。如:智能对话、文本内容生成等
  • 特点:它们包含了大量通用知识,但没有针对特定任务进行优化。

2. Chat 模型 (chat)

  • 定义Chat模型专门为对话系统(聊天机器人)设计和优化
  • 用途:用于生成自然语言对话,能够理解上下文并生成连贯且有意义的回复。如:聊天机器人、智能助力
  • 特点:通常经过大量对话数据微调,具备更好的上下文理解能力和对话生成能力。

3. Instruct 模型 (instruct)

  • 定义Instruct模型是为遵循指令或完成特定任务而设计和优化的模型
  • 用途:用于执行具体指令,如回答问题、生成文本、翻译等任务。
  • 特点:经过指令数据集微调,能够更好地理解和执行用户提供的指令。

4. 4-bit 模型 (4bit)

  • 定义:4-bit模型使用低精度(4位)进行量化,以减少内存占用和计算资源需求。
  • 用途:适用于资源受限的环境,如移动设备或嵌入式系统,同时保持较高的性能表现。
  • 特点:通过量化技术显著减少了模型大小和计算复杂度,但可能会牺牲部分精度。

5. AWQ 模型 (选择性量化)

AWQ即激活值感知的权重量化(Activation-aware Weight Quantization),是一种针对LLM的低比特权重量化的硬件友好方法。通过保护更“重要”的权重不进行量化,从而在不进行训练的情况下提高准确率。

我们的方法基于这样一个观察:权重并非同等重要,仅保护1%的显著权重可以大大减少量化误差。然后,我们建议通过观察激活而不是权重来搜索保护显著权重的最佳通道缩放。AWQ不依赖于任何反向传播或重构,因此可以很好地保留LLMs在不同领域和模态中的泛化能力,而不会过度拟合校准集。AWQ在各种语言建模和特定领域基准上优于现有工作。由于更好的泛化能力,它在面向指令调整的LMs上实现了出色的量化性能,并且首次在多模态LMs上取得了成功,论文地址

AutoAWQ 是一个易于使用的 4 比特量化模型包。 与 FP16 相比,AutoAWQ 将模型速度提高了 3 倍,并将对内存需求降低了 3 倍。 AutoAWQ 实现激活感知权重量化 (AWQ) 算法来量化 LLM。 AutoAWQ 是在 MIT 的 LLM-AWQ 基础上创建和改进的。

6、GPT-Q:GPT模型的训练后量化

GPTQ 是一种针对4位量化的训练后量化 (PTQ) 方法,主要关注GPU推理和性能。

该方法的思想是通过将所有权重压缩到4位量化中,通过最小化与该权重的均方误差来实现。在推理过程中,它将动态地将权重解量化为float16,以提高性能,同时保持内存较低。具体操作包括以下几个步骤:

缩放:将输入张量x除以缩放因子scale。这一步是为了将x的值范围调整到预期的量化范围。

四舍五入:将缩放后的结果四舍五入到最近的整数。这一步是为了将x的值离散化,即将其转换为整数。

限制范围:使用torch.clamp函数将四舍五入后的结果限制在0和maxq之间。这一步是为了确保量化后的值不会超出预期的量化范围。反缩放:将量化后的张量减去零点zero,然后乘以缩放因子scale。这一步是为了将量化后的值恢复到原始的值范围。

7、GGUF | GGML

GGUF是GGML的新版本。尽管 GPTQ 在压缩方面表现出色,但如果你没有运行它所需的硬件,它对 GPU 的依赖性可能会成为一个缺点。

GGUF是一种量化方法,是LLM库的C++复制品,支持多种LLM,如LLaMA系列和Falcon等。它允许用户在 CPU 上运行 LLM,同时将其部分层次转移到 GPU 上以加速运行。尽管使用 CPU 通常比使用 GPU 进行推理要慢,但对于在 CPU 或 Apple 设备上运行模型的人来说,这是一种非常好的格式。特别是我们看到出现了更小、更强大的模型,如 Mistral 7B,GGUF 格式可能会成为一种常见的格式它提供了从2到8位精度的不同级别的量化。我们可以获取原始的LLaMA模型,将其转换为GGUF格式,最后将GGUF格式量化为较低的精度。

8、PTQ 训练后量化(Post-Training Quantization)

PTQ是一种常用于深度学习领域的量化技术。它的基本原理是在模型训练后,通过对模型进行量化,将模型的浮点数权重和激活转换为较低精度的表示,从而减小模型大小和计算复杂度,同时保持模型的精度损失较小。PTQ方法分为两类:只量化模型权重的方法和同时量化权重和激活的方法,像后面要说的AQLM就是第一类方法

9、 QAT 训练感知的量化

QAT 的基本思想是根据该层权重的精度将输入量化为较低的精度。QAT 还负责在下一层需要时将权重和输入相乘的输出转换回较高的精度。这个将输入量化为较低精度,然后将权重和输入的输出转换回较高精度的过程也称为“伪量化节点插入”。这种量化被称为伪量化,因为它既进行了量化,又进行了反量化,转换成了基本操作。

10、AQLM (Additive Quantization LM)

增量语言模型量化(AQLM)于2024年2月发布,已经集成到了HuggingFace中。现有的仅权重量化算法在技术上可以将模型权重量化到2位范围。然而,它们未能有效地保持模型的准确性。AQLM是一种新的仅权重后训练量化(PTQ)算法,为2比特/每参数范围设定了新的技术水平。与现有方法相比,它还提供了更小的基准改进,适用于3位和4位范围。具体来说,AQLM优于流行的算法如GPTQ,以及更近期但较不知名的方法如SpQR和QuIP#。

总结

  • base 模型是通用基础模型,适合进一步微调以适应特定任务。
  • chat 模型专为对话系统设计,擅长生成自然语言对话。
  • instruct 模型专为执行具体指令设计,擅长理解和执行用户提供的任务。
  • 4bit 模型通过低精度量化技术减小了内存占用和计算复杂度,适合资源受限环境。