Zero-shot TTS –微软研究院 VALL-E系列论文阅读

微软研究院发布了一系列的TTS相关的论文:

微软研究院;https://www.microsoft.com/en-us/research/project/vall-e-x/

VALL-E:https://arxiv.org/abs/2301.02111

VALL-E X https://github.com/Plachtaa/VALL-E-X https://arxiv.org/abs/2303.03926

VALL-E R https://arxiv.org/abs/2406.07855

VALL-E 2 https://arxiv.org/abs/2406.05370

MELLE https://arxiv.org/abs/2407.08551

RALL-E https://arxiv.org/abs/2404.03204

综述:

我们介绍了一种用于文本到语音合成(TTS)的语言建模方法。具体而言,我们使用从一个现成的神经音频编解码器模型中提取的离散编码训练了一个神经编解码器语言模型(称为 VALL-E),并将 TTS 视为一个条件语言建模任务,而不是像以往工作中那样的连续信号回归任务。VALL-E 展现了上下文学习的能力,只需一个未见过的说话者3秒钟的录音作为提示,就可以合成高质量的个性化语音。VALL-E 在语音自然度和说话者相似性方面显著优于现有的零样本 TTS 系统。此外,VALL-E 可以在合成时保留提示音频中的说话者情感和声学环境。为了扩展其能力,VALL-E X 能够适应多语言场景,促进跨语言零样本 TTS。而 VALL-E R 引入了音素单调对齐策略,增强了语音生成的稳健性。通过整合重复感知采样和分组编码建模技术,VALL-E 2 实现了一个突破性的里程碑:在 LibriSpeech 和 VCTK 数据集上达到了零样本 TTS 性能的“人类水平”。这是该领域首次取得如此成就,设立了新的标准。MELLE 是一种新颖的基于连续值标记的语言建模方法,用于文本到语音合成(TTS)。MELLE 直接从文本条件中自回归地生成连续的 mel 频谱图帧,绕过了矢量量化的需求,后者最初是为音频压缩设计的,与 mel 频谱图相比,会牺牲保真度。

尽管VALL-E系列在用GPT 【decoder only 模型】建模token的上下文关系的时候,基于token的层次化特性做了分治处理,可能是限于当前语音数据集的规模(几万小时可能不够),这种GPT自回归的难度还是相当大的,解码过程存在常见的错误传播现象,鲁棒性非常差,极其不稳定。根据Ilya Sutskever此前对于自回归的论述,GPT自回归相比于BERT这种双向结构是非常data-hungry的,几万小时的数据可能不够,至少需要十几万小时的数据。既然GPT自回归的难度这么大,就有不少人想方设法地来降低GPT学习的难度了。解决方案也非常类似:给GPT提供额外的条件信息不就行了比较典型的工作就是微软的RALL-E,RALL-E先生成了时长信息和音高信息,作为GPT【only decoder】自回归的先验,之所以会补充时长和音高,这大概是受到FastSpeech2这样的非自回归模型的启发,这两个指标的引入,有助于提升合成的鲁棒性

VALL-E

论文:https://arxiv.org/abs/2301.02111

VALL·E也和VQVAE类似,将音频量化成一系列离散tokens,其中第一个量化器负责捕捉音频内容和说话者身份特征,后几个量化器则负责细化信号,使之听起来更自然。随后以文本和3秒钟的声音提示作为条件,自回归地输出第一层离散音频编码,NAR根据上一层的输出,并行输出第二到第八层的离散编码。

条件编解码器语言建模

神经语音编码器模型使我们能够对离散音频表示进行操作。由于神经编码器模型中的残差量化,令牌具有层次结构:来自先前量化器的令牌恢复声学属性,如说话者身份,而连续量化器则学习细微的声学细节。每个量化器的训练旨在建模来自前一个量化器的残差。因此,我们设计了两个以层次方式进行的条件语言模型。

对于来自第一个量化器的离散令牌 C:,1​,我们训练一个自回归(AR)解码器语言模型。该模型以音素序列 x声学提示 C~:,1为条件,公式化为:

由于 VALL-E 是一个仅解码的语言模型,c~:,1​ 和 c:,1​ 的拼接形成一个完整的序列,在训练过程中我们并不区分它们或插入特定的标记。只有c:,1​ 在推理时被预测,而前缀 c~:,1​ 在推理中给出。

对于从第二个到最后一个量化器的离散令牌 c:,j​(其中 j∈[2,8]),我们训练一个非自回归(NAR)语言模型。由于在 NAR 方式中,令牌之间无法相互访问,因此使用声学提示矩阵 C~ 作为声学提示,从而约束说话者身份。因此,模型以音素序列 x、声学提示 C~属于前一个代码本的预测声学令牌 C:,<j​ 为条件进行训练

AR 模型和 NAR 模型的结合在语音质量和推理速度之间提供了良好的平衡。一方面,生成语音的速率应与已注册的录音一致,但由于不同说话者的语速可能差异很大,训练一个针对不同说话者的长度预测器是困难的。在这种情况下,AR 模型是更自然的选择,因为它在声学序列长度预测上具有灵活性。另一方面,对于后续阶段,由于输出槽的数量遵循第一阶段的序列长度,NAR 可以将时间复杂度从O(T) 降至 O(1)。总体而言,C 的预测可以建模为:

自回归编解码语言建模

自回归语言模型生成来自第一个量化器的标记。该模型包括音素嵌入 Wx​、声学嵌入 Wa​、一个变换器解码器和一个预测层。为了生成具有特定内容的语音,我们使用音素序列作为语言模型的音素提示。因此,模型输入是 x 和 c:,1​ 的连接,并在每个序列后附加两个特殊的 <EOS> 标记。我们为提示和输入标记分别计算波动的位置嵌入。对于因果变换器模型,每个标记 ct,1​ 可以关注到(x,c<t,1​)。该模型的优化目标是最大化第一个代码本中下一个标记的概率。我们共享输出投影层的参数与声学嵌入 Wa​ 的参数。

在自回归模型中,我们不在训练时显式提取音频片段作为提示。训练过程完全是因果语言模型训练。通过这种方式,任何前缀序列c<t,1​ 被视为后续序列 c≥t,1的提示。在推理过程中,给定已注册的录音,我们应将已注册录音的音素序列与合成的音素序列连接起来。同时,将已注册录音的声学标记序列用作自回归解码中的前缀。

在通过自回归模型获得第一个量化器的代码后,我们使用非自回归(NAR)模型生成其他七个量化器的代码。NAR 模型的架构与 AR 模型类似,只是包含八个独立的声学嵌入层。在每个训练步骤中,我们随机抽取一个训练阶段i∈[2,8]。该模型的训练目标是最大化来自第 i 个量化器代码本的声学标记。来自阶段 1 到阶段i−1 的声学标记被嵌入并求和作为模型输入:

其中 ⋅ 表示索引选择。音素序列同样被视为语言模型的提示。此外,为了克隆给定说话者的独特声音,我们还使用来自已注册语音的声学标记作为声学提示。具体来说,我们首先使用神经编解码模型对已注册语音进行标记,得到C~T×8​。来自八个代码本的嵌入表示被求和作为声学提示。为了预测来自第 i 个代码本的声学标记,变换器输入是音素嵌入ex​、声学提示 ec~​ 和 c:,<i​ 的连接。位置嵌入也分别为提示和声学序列计算。当前阶段 iii 通过自适应层归一化(AdaLN)操作注入到网络中,即 AdaLN(h,i)=aiLayerNorm(h)+bi,其中 h 是中间激活,ai​ 和 bi​ 是通过阶段嵌入的线性投影获得的。与 AR 不同,NAR 模型允许每个标记在自注意力层中关注所有输入标记。我们还共享声学嵌入层和输出预测层的参数,这意味着第 j 个预测层的权重与第 j+1 个声学嵌入层相同。

VALL-E X

论文:https://arxiv.org/abs/2303.03926

受VALL-E启发的跨语言编解码语言模型VALL-E X:受VALL-E的启发,跨语言编解码语言模型VALL-E X(记为φ)利用一个多语言自回归编解码语言模型和一个多语言非自回归编解码语言模型来生成不同粒度的声学标记,如图2左侧所示。我们还采用了神经编解码模型EnCodec [Défossez等人,2022] 作为声学量化器,这是一个具有L层量化层的编码器-解码器模型。在我们的实验中,我们选择L = 8,每一层以75Hz的频率生成1024个条目的量化码。

多语言自回归编解码语言模型:多语言自回归编解码LMφMAR是一个单向Transformer解码器,它基于语义标记(音素序列)自回归地生成声学标记。为了使句子级训练更高效并在推理过程中加速解码,类似于VALL-E,跨语言自回归编解码LMφMAR仅用于预测EnCodec模型第一层量化器的声学标记。

形式上,基于任何语言中的配对语音-转录数据,设S表示转录的音素序列,A:,1 = {ai,1 | i = 1, …, N} 表示从语音X中提取的第一层声学标记。解码器φMAR建模拼接序列〈S, A:,1〉,并被训练来自回归地预测A:,1。通过最大化对数似然来进行优化:

⟨⟩ 表示序列拼接操作。p(⋅) 是softmax函数。

多语言非自回归编解码语言模型:与自回归生成模式不同,多语言非自回归编解码语言模型φMNAR是一个非自回归Transformer语言模型,旨在迭代地从第一层生成其余层的声学标记。它由当前句子的音素序列 S 和具有相同说话人的另一句子的声学标记序列 A~ 提示。这里的 A~ 通常取自数据集中的前一句子,这些调整后的句子通常是从同一段落中分割出来的。预期 A~ 具有与当前句子相同的语音特征(如说话人、语速、背景等),并用作克隆目标语音的额外参考。

类似于VALL-E,对于生成每一层l∈[2,8] 的声学标记,前l−1层声学标记A:,1:l−1​的嵌入按层相加作为输入。第 l 层声学标记 A:,l 的学习目标可以计算为:

其中〈〉表示序列拼接。pNAR(.) 计算 A:,l 的逐点概率。

多语言训练:为了学习跨语言的声学转换信息,以支持跨语言TTS和语音到语音翻译任务,我们利用双语语音-转录(ASR)语料库,即 (Ss, As) (St, At) 的配对数据来训练我们的多语言编解码语言模型 φMAR 和 φMNAR,其中 s t 分别代表两种不同的语言(源语言和目标语言)。

语言ID模块:借鉴多语言TTS的方法,我们使用语言ID来指导VALL-E X中特定语言的语音生成。一方面,如果没有语言ID,VALL-E X可能会因为在多语言数据上进行训练而难以选择适合特定语言的声学标记。另一方面,某些语言具有非常不同的特征,例如,中文是一种声调语言,而英语是非声调语言,这增加了跨语言调整说话风格的难度。我们的实验发现,在多语言自回归编解码语言模型 φMAR 的输入中添加语言信息对于引导正确的说话风格和缓解L2口音问题非常有效,这一点将在第5.5节中详细介绍。具体来说,我们将语言ID嵌入到密集向量中,并将其添加到声学标记的嵌入中。

跨语言推理

训练完成后,VALL-E X 可以执行跨语言语音合成,如图 3 所示。具体来说,我们首先将源音素 Ss 和目标音素St 作为提示符进行拼接,并将第一层源声学标记A:,1s​ 作为解码前缀,基于此,多语言自回归编解码语言模型ϕMAR​ 生成第一层目标声学标记A:,1t​

其中 ∼ 表示基于概率的采样。采样过程会在{<end-of-sentence>} 标记被采样到时停止。如 3.3 节所述,语言 ID 用于控制生成语音的说话风格。在从ϕMAR​ 获得第一层目标声学标记 A:,1t​ 后,使用多语言非自回归编解码语言模型 ϕMNAR​ 来预测剩余的声学标记层 {A:,lt​∣l=2,…,8},通过贪心搜索,即选择最大概率的标记,

最后,我们使用 EnCodec 的解码器来综合完整的目标声学标记 A:,1:8t​ 生成目标语音。

VALL-E R

论文:https://arxiv.org/abs/2406.07855

图 1: VALL-E R 的概述。它同步预测声学符元(蓝色)及其对应的音素序列(绿色),这可以加强音素和音频之间的对齐,从而提高 VALL-E 模型的鲁棒性。 请注意,VALL-E R 通过在其自回归模型中采用提议的合并编解码器代码来实现更快的推理速度。

一种鲁棒且高效的零样本 TTS 系统,名为 VALL-E R。我们首先介绍了编解码器合并方法,该方法可在不重新训练编解码器的情况下提高推理速度,然后阐述了仅解码器神经编解码器 LM 中的单调对齐策略。

编解码器合并方法。

在借鉴 Encodec 基础工作的基础上,我们引入了合并编码器的概念。这一创新方法通过改变推理前向过程,实现了在各层离散码的下采样,显著地提高了对音频数据表示的高效操作。这一突破无需对模型进行重新训练或微调,标志着在音频数据表示操作上的重要进展。

如图 2 所示,所提出的编码器在视觉上进行了描述。整体架构与 Encodec 保持一致,包括以下三个组件:1)基于卷积的编码器,将波形数据x1×L​ 映射为潜在表示序列 zF×T​,其中 F 是通道数,T 是提取码的长度;2)解码器,从量化的潜在表示 z^F×T​ 中重建数据 x^1×L​ ;3)8 层残差向量量化器(RVQ)模块,可以将连续的潜在向量 zF×T​ 逐步转换为离散码表示 C8×T​。主要区别在于,我们的合并编码器在向量量化器模块之前插入了一个编码器合并模块,以对表示 zF×T​ 进行下采样。

假设第 d 层的合并率为 md​,rdF×T​ 代表第 d 层的残差输入。合并编码器模块包含两个步骤:第一步是通过平均池化将残差输入rdF×T 下采样为 rmd​​F×(T/md​),然后通过repeat操作将 rmd​​ 上采样回其原始长度。接着,经过合并模块处理的残差表示将被输入到后续的 VQ 层,通过对码本嵌入进行最近邻查找,量化为离散码Cd1×T​。通过合并模块,我们确保了连续 md​ 帧的码的一致性,从而降低了 Cd1×T 的分辨率。

具有单调对齐的神经编解码器 LM

以前,单调策略仅适用于编码器-解码器结构。 为了解决基于解码器-仅 Transformer 的 TTS 中的鲁棒性问题,我们将音素预测集成到神经编解码器 LM 的训练中,并在推理过程中设计了单调对齐策略。 概述如图 3 所示。

为了在语音质量和推理速度之间取得良好的平衡,我们的 VALL-E R 包含两个模型:自回归 (AR) 和非自回归 (NAR),这与 VALL-E (Wang et al., 2023a) 相一致。 具体来说,给定一个训练数据对 {𝐬,𝐩},其中 𝐬 是语音样本,𝐩={p1,p2,…,pL} 是其相应的音素转录。 然后,编解码器合并模型用于将语音波形 𝐬 压缩成具有 8 个量化器的离散声学符元 𝐀,公式为:MergeCodec⁢(𝐱)=𝐀8×T={𝐚1,…,𝐚8},其中 T 是离散码的长度,𝐚i={a1,…,aT} 表示第 i 层的符元。 由于 VALL-E R 的训练需要对齐的音素和声学符元,因此此处采用对齐工具将 𝐩 与声学符元 𝐀 对齐,表示为 𝐩^1:T={p1^,p2^,…,pL^},其中 p^i 包含 Ni 个重复的 pi 和 ∑i=1LNi=T。

对于 AR 阶段,为了增强音素和声学序列之间的联系,我们构建了一个神经编解码器 LM θA⁢R,以使用音素预测对来自编解码器合并模型的第一个量化器的离散声学符元 𝐚1:T1 进行建模。 如图 3 所示,它以音素序列 𝐩 为条件,同时生成声学符元 𝐚1:T1 和对齐的音素 p^1:T,公式为最大化以下概率:

在第二阶段,我们训练了一个 NAR LM θN⁢A⁢R,以从第 2n⁢d 到第 8-t⁢h 层量化器迭代地生成声学符元。 它以音素序列 𝐩、先前几层生成的声学符元 𝐚1:n 和音素对齐 l1:T 为条件,以预测下一层声学符元 𝐚n+1,公式为最大化:

我们还共享声学嵌入层和输出预测层的参数,这意味着第 j 个预测层的权重与第 (j+1) 个声学嵌入层相同。

在推理过程中,利用语言模型强大的上下文学习能力,我们提出的 VALL-E R 可以通过自回归预测声学和音素来自动克隆提示中说话人的音色和韵律。 由于 VALL-E R 明确地对音素进行建模,因此它对韵律具有很强的控制力:当我们在推理过程中使用预设的音素序列替换自预测的音素序列时,我们可以使用预设的韵律来生成语音,从而实现分别控制韵律和音色的效果。 它也可以被认为是一种语音转换任务,其目标是在不改变源语音的语言信息和韵律的情况下,使目标语音的音色听起来像提示语音。

VALL-E 2

论文: https://arxiv.org/abs/2406.05370

基于其前身 VALL-E,新迭代引入了两项重大增强功能:重复感知采样通过考虑解码历史中的词符重复来改进原始核心采样过程。 它不仅稳定了解码,还避免了无限循环问题。 分组代码建模将编解码器代码分组,有效缩短序列长度,不仅提高了推理速度,还解决了长序列建模的挑战。 

基于过往经验,研究员们发现 VALL-E 在推理中使用的随机采样可能会导致输出不稳定。尽管错误编码(图3中的红色方块)的概率很低,但由于采样步骤太多,它们仍然不可避免地会被采样到。为了稳定推理过程,通常会利用 Nucleus 采样来从累积概率低于预设阈值的最可能标记集合中进行采样。Nucleus 采样方法可以减少说错词的错误,但也可能导致模型为了减少错误而只生成静音。

因此,为了平衡随机采样和 Nucleus 采样,研究员们提出了重复感知采样的方法。在给定 AR 模型预测的概率分布基础上,研究员们首先使用预定义的 top-p 值通过 Nucleus 采样生成目标编码。然后使用固定的窗口大小来计算预测编码在前面的编码序列中的重复比例。如果重复比例超过预定义的重复阈值,研究员们就会使用随机采样从原始概率分布中获得新的预测结果来替换原来的目标编码。通过这种重复感知采样的方法,解码过程既可以受益于 Nucleus 采样的稳定性,还可以借助随机采样避免陷入静音的无限循环。

继VALL-E之后,我们使用现成的神经音频编解码器模型将语音信号表示为离散编解码器代码序列,并将TTS视为条件编解码器语言建模任务。 为了提高效率,VALL-E 2引入了分组编解码语言建模方法,将编解码代码序列划分为一定大小的组,并将每组编解码代码建模为一帧。 这样我们就可以摆脱现成的神经音频编解码模型的帧率约束,将帧率降低整数倍。 它不仅有利于推理效率,而且通过缓解长上下文建模问题也有利于整体语音质量。

VALL-E 2 的训练概述,由自回归和非自回归 Transformer 组成。 请注意,自回归 Transformer 旨在生成分组编解码器代码。

通过 TTS 训练目标,VALL-E 2 被优化以最大化给定文本条件的分组代码序列的可能性。 具体来说,给定一个音频样本 𝐲 及其相应的标记化文本转录 𝐱=[x0,x1,…,x(L−1)],其中 L 是文本序列长度,我们首先使用预训练的神经音频编解码器模型,用于将音频样本𝐲转换为编解码器代码序列𝐂T×J=[𝐜0,𝐜1,…,𝐜(T−1)],其中T是代码序列长度,J(这里J=8)是编解码器模型中量化器的数量,每个𝐜t代表每个时间步的8个代码。 然后我们将其划分为分组代码序列𝐂G=[𝐂0:G,𝐂G:2⁢G,…,𝐂(T−G):T],组大小为G,𝐂0:G代表组[𝐜0,𝐜1,…,𝐜(G−1)]。 由于话语开头通常有短暂的沉默,我们可以从代码序列的开头剪掉一些代码,让代码序列长度T为组大小的整数倍,而不需要删除任何代码。语音信息。 最后,我们训练 VALL-E 2 模型 θ 以最小化以文本序列 𝐱 为条件的分组代码序列 𝐂G 的负对数概率:

其中𝐂t⋅G:(t+1)⋅G是第t组编解码器代码[𝐜t⋅G,…,𝐜((t+1)⋅G−1)],𝐂<t⋅G是前面(t−1) 组。

推理过程中,VALL-E 2根据提示执行零样本TTS任务。 给定文本输入(包含语音提示的转录和要合成的文本)和来自看不见的说话者的分组编解码器代码,作为条件和提示,该模型可以生成具有相应内容和说话者语音的目标分组编解码器代码。 具体来说,给定文本序列𝐱和未见过的说话人的登记语音样本𝐲′,我们可以获得相应的分组代码序列𝐂P=𝐂<T′G=[𝐂0:G,𝐂G:2⁢G,…,𝐂(T′−G):T′]。 然后,我们以文本序列 𝐱 和代码提示 𝐂P 为条件生成目标分组代码序列 𝐂T=𝐂≥T′G=[𝐂T′:(T′+G),…,𝐂(T−G):T]:

最后,我们可以使用现成的神经编解码器将目标代码序列 𝐂T 转换为目标语音波形。

在 VALL-E 的基础上,VALL-E 2 还使用分层结构:自回归 (AR) 编解码器语言模型和非自回归 (NAR) 编解码器语言模型。 AR模型以自回归的方式生成每一帧的第一编解码器代码的序列,而NAR模型以非自回归的方式基于前面的代码序列生成每个剩余的代码序列。 两种模型都使用相同的 Transformer 架构,其中包含文本嵌入层、代码嵌入层和代码预测层。 我们对来自不同编解码器量化器的代码使用不同的嵌入,并与代码嵌入层的参数共享代码预测层的参数。 此外,AR模型还有一个组嵌入层,用于将代码嵌入投影到组嵌入,以及一个组预测层,用于预测一组中的代码。 NAR模型有一个代码ID嵌入层来指定要预测的代码序列的ID。 AR 模型和 NAR 模型具有不同的注意力掩码策略:AR 模型使用因果注意力策略,而 NAR 模型使用完全注意力策略,如图 2 的右侧所示。

为了加速推理过程,研究员们在 VALL-E 2 中采用了分组编码建模方法,将编码序列划分为一定大小的分组,并将每组编码建模为一步。在自回归模型中,研究员们利用分组嵌入层将编码嵌入结果映射到分组嵌入并作为网络的输入,并在输出层使用分组预测层对一组中的编码进行预测。通过这种方式,现有神经音频编码模型的帧率限制得以摆脱,帧率成倍数地降低得到实现。这不仅有利于推理效率的提高,还可以缓解长上下文建模的问题并提升整体语音质量。

图3 VALL-E 2 的推理概述,利用所提出的重复感知采样方法在自回归模型推理期间预测分组代码序列。

VALL-E 2的训练只需要简单的语音转录对数据,不需要任何复杂的数据,例如力对齐结果或同一说话者的额外音频片段以供参考。 这极大地简化了训练数据的收集和处理过程。

MELLE

论文:https://arxiv.org/abs/2407.08551

ELLE 是一种基于连续值令牌的新型语言建模方法,用于文本到语音合成 (TTS)。MELLE 直接从文本条件自回归生成连续的 mel 频谱图帧,绕过了向量量化的需求,与梅尔频谱图相比,矢量量化最初是为音频压缩和牺牲保真度而设计的。具体来说,(i) 我们应用回归损失和提出的频谱图通量损失函数,而不是交叉熵损失来模拟连续值标记的概率分布。(ii) 我们已将变分推理纳入 MELLE 以促进采样机制,从而提高输出多样性和模型稳健性。实验表明,与两阶段编解码器语言模型 VALL-E 及其变体相比,单阶段 MELLE 通过避免采样离散代码的固有缺陷来缓解健壮性问题,在多个指标上实现卓越的性能,最重要的是,它提供了一个更简化的范式。

MELLE包含以下主要组件:预网络,分别将文本转换为子词标记并在投影之前从语音中提取梅尔频谱图模型尺寸;充当语言模型的自回归 (AR) Transformer 解码器;潜在采样模块,从预测的高斯分布中采样潜在嵌入,然后将其投影回频谱图空间;确定语音结尾的停止预测层和用于声谱图细化的卷积后网络,类似于(Shen等人,2018;Li等人,2019)中描述的方法。 最后,使用声码器从生成的梅尔频谱图中恢复语音。

与迭代预测多层编解码器代码的神经编解码器语言模型不同,由于梅尔谱图的完整性,我们不需要额外的非自回归(NAR)模型。 这种简化显着提高了计算和存储效率。 此外,通过调整缩减因子,MELLE可以一步生成多个梅尔谱图帧,进一步提高效率,同时仍保持卓越的性能。

在每个自回归步骤中,MELLE 预计会根据文本提示 𝒙 和之前生成的 mel- 来预测下一个梅尔谱图帧 𝒚t。

在推理过程中,MELLE通过像VALL-E一样的提示来执行零样本TTS任务。 给定用于合成的文本内容𝒙、文本转录𝒙~和语音提示的梅尔频谱图𝒚~,该模型旨在生成目标梅尔频谱图𝒚对应的内容,同时保留提示中原说话人的特征,每一步的最大似然概率为arg⁢max𝒚⁡p⁢(𝒚t⋅r:(t+1)⋅r∣[𝒙~;𝒙;𝒚~;𝒚<t⋅r];θ),其中[;]表示串联操作,如果 r=1,则返回标准模式。

我们采用单向 Transformer 解码器作为语言模型(LM),根据文本输入和声学提示自回归生成声学连续特征。 具体而言,输入文本标记 x,在附加了 <EOS> 标记后,首先通过基于其索引的文本嵌入层转换为嵌入表示。同时,我们采用多层感知器(称为 pre-net)将梅尔谱图 𝒚 投影到语言模型维度。 LM 由多头注意力块和前馈层组成,将文本和声学嵌入的串联作为输入来对语义和声学信息之间的依赖关系进行建模。 LM 𝒆t 在时间步 t 的输出随后由 MELLE 的以下模块处理,以合成下一帧输出

我们在MELLE中集成了一种新颖的潜在采样模块,旨在增强表达多样性和鲁棒性,如图2(左)所示。 该模块根据 LM 的输出 𝒆t 预测分布,并从中采样潜在嵌入 𝒛t。

我们使用线性层作为二元分类器,用 𝒆t 来确定生成是否应该结束,如图 2(中)所示。 继之前的神经 TTS 模型(Wang 等人,2017;Shen 等人,2018)之后,我们采用多个卷积块作为后网络来产生残差并添加到 𝒚′={𝒚0′,𝒚1′,…,𝒚T−1′},得到精炼的梅尔谱图𝒚′′={𝒚0′′,𝒚1′′,…,𝒚T−1′′},如图2(右)所示。 在训练过程中,模型使用教师强制进行训练;而在推理过程中,后网络在 AR 生成结束后处理𝒚′。

RALL-E

论文:https://arxiv.org/abs/2404.03204

RALL-E背后的核心思想是思想链(CoT)提示,它将任务分解为更简单的步骤,以增强基于LLM的TTS的稳健性。 为了实现这个想法,RALL-E 首先预测输入文本的韵律特征(音调和持续时间),并将它们用作中间条件来预测 CoT 风格的语音标记。 其次,RALL-E利用预测的持续时间提示来指导Transformer中自注意力权重的计算,以强制模型在预测语音标记时关注相应的音素和韵律特征。

 RALL-E的核心思想是CoT提示,生成中间结果来辅助和稳定语音标记的生成,提高基于LLM的TTS的鲁棒性。 为了实现这个想法,我们首先建议在预测语音标记之前预测两种音素级韵律标记:音调和持续时间。 韵律标记的分布由单个 Transformer 与语音标记一起建模,以便它们可以影响预测的语音标记的持续时间和音调。 为了进一步利用预测的持续时间来指导生成并提高鲁棒性,我们提出了持续时间引导的掩蔽来增强语言模型学习的语音标记、音素和韵律标记之间的对齐。 在语音标记的每个解码步骤中,RALL-E 根据持续时间信息屏蔽与当前语音词符的合成无关的音素和韵律标记。

Prosody 标记作为思路提示。基于LLM的TTS的问题之一是它直接从音素生成语音,对韵律没有限制,例如:音高、时长等,通常会导致语音韵律不稳定。 CoT提示的思想是将一个复杂的任务分解为几个简单的任务,以便大语言模型利用中间结果得出最终答案。通过 CoT 提示,LLMs 在复杂任务上的正确率可以得到显著提高。 这促使我们通过在生成语音标记之前生成中间韵律标记来将 CoT 提示适应基于 LLM 的 TTS,以缓解基于 LLM 的 TTS 的鲁棒性问题。 为了将音高和持续时间合并到 VALL-E 的 AR Transformer 中,我们首先获得音素和语音标记之间的对齐,并提取每个语音词符的音高值。 然后,我们根据持续时间计算音素级音高值,并将其线性量化为 Mp 桶。 我们定义一个最大持续时间值Md,所有超过Md的持续时间值将被截断为最大值。 RALL-E 以 CoT 风格预测语音标记之前的两个韵律标记。 形式上,假设𝐩,𝐝是目标语音标记𝐂的离散音高和持续时间序列,𝐩~,𝐝~是提示𝐂~的离散音高和持续时间序列,我们对以下分布进行建模并最大化:

其中 L 是 𝐱 的长度。 在实践中,模型用两个独立的头来预测 pt 和 dt,它们的嵌入被总结并输入到模型中以进行下一步的预测。 然后,RALL-E 使用 𝐩 和 𝐝 作为新的条件预测语音符元,这使得等式 2 变成:

上述两个方程可以通过 AR Transformer 联合优化。 虽然所提出的方法增加了额外的L解码步骤,但由于L≪T,直观上对效率影响很小。

对于 NAR Transformer,我们只需将音素、音高和持续时间的嵌入求和作为输入。 这使得等式 3 变成:

如图 2 左侧所示,由于语音符元会关注 VALL-E 的 AR Transformer 中的所有音素,因此音素和语音符元之间的对齐由 VALL-E 的自注意力隐式建模。 这可能不精确并会导致诸如遗漏或幻觉之类的错误。 尽管RALL-E引入了韵律CoT提示来指导和稳定生成,但我们仍然发现模型在实验中可能无法对齐。 因此,我们提出持续时间引导掩蔽,以充分利用中间持续时间结果并提高鲁棒性。

如图 2 右侧所示,在提出的持续时间引导掩蔽中,语音符元被限制为仅关注以其对应音素(韵律符元)为中心的音素(韵律符元)窗口。 我们将窗口大小定义为k,因此每个语音词符可以参与2⁢k+1音素和2⁢k+1韵律标记。 其他位置的所有音素和韵律标记都将被屏蔽,因此它们的注意力权重始终为零。 当k=0时,语音词符严格关注其对应的音素。 如果对齐完美,这应该就足够了。 然而,在实验中,我们发现我们的对齐工具得到的对齐结果通常存在误差。 因此,我们通过允许语音词符出现在相应音素的附近音素处来放宽限制。 这种设计的另一个原因是音素的发音通常依赖于附近的音素。 正如将在第 4.3 节和附录 A 中看到的,实验结果验证了这种设计的有效性。 对于 NAR Transformer,我们在基础知识实验中应用所提出的掩蔽策略时几乎没有获得任何增益。 因此我们只在 AR Transformer 上应用屏蔽策略。

一般推理过程遵循 VALL-E [29],但有两个不同之处。 首先,在对语音词符 𝐜:,1 进行采样之前,先根据音素序列 𝐱 和声音提示 𝐩~,𝐝~ 对前音词符 𝐩 和 𝐝 进行采样。 其次,尽管普通语言模型依赖于一个特殊的词符 <eos> 作为停止条件,但由于我们知道总时长 D=∑t=1Ldt,因此我们提出了一种时长引导推理方法,强制推理在 D 步停止。 如果在 D 步之前预测到 <eos> 词符,该方法就会继续推理,并根据预测的持续时间在正确的步骤停止,从而确保不会遗漏或重复任何音素。

Seed-Music: Generating High-Quality Music in a Controlled Way

字节音乐大模型Seed-Music发布,支持一键生成高质量歌曲、片段编辑等

关键内容

关键技术贡献如下:

  • 提出了一种基于新型 token 和语言模型(LM)的方法,并引入了一种能够根据不同类型用户输入生成专业生成内容(PGC)质量音乐的训练方法。
  • 提出了一种全新的基于扩散模型的方法,特别适合音乐编辑
  • 引入了一种在歌唱声音背景下的零样本声音转换的新颖方法。系统可以根据用户短至 10 秒的参考歌唱或甚至普通语音的音色生成完整的声乐混音。

据豆包大模型团队官网介绍,Seed-Music 是一个具有灵活控制能力的音乐生成系统,包含 Lyrics2Song(歌词转歌曲)、Lyrics2Leadsheet2Song(歌词转简谱再转歌曲)、Music Editing(音乐编辑)、Singing Voice Conversion (歌声转换)四大核心功能,具体涵盖十种创作任务。

目前,业界在 AI 音乐领域的研究主要集中在以下几个核心问题:

  • 音乐信号的复杂性:音乐信号包含多个重叠音轨、丰富的音调和音色以及广泛的频率带宽,不仅要保持短期旋律的连贯性,还要在长期结构上展现出一致性。
  • 评估标准的缺乏:音乐作为一种开放、主观的艺术形式,缺乏一套通用的问题表述和用于比较的黄金指标,评估局限性大。
  • 用户需求的多样性:不同的用户群体,如音乐小白、音乐初学者、资深音乐人等,对音乐创作的需求差异很大。

无论是传统的音乐辅助创作工具,还是当下热门的 AI 音乐生成的研究和产品,面向上述问题,均还处于摸索阶段。
比如针对音乐信号复杂性,Google、Meta、Stability AI 等各家在音频、演奏、曲谱层面上做了建模尝试,效果各有优缺,而且各家的评估方法均有局限,人工评测仍必不可少。
面对这些挑战,字节 Seed-Music 采用了创新的统一框架,将语言模型和扩散模型的优势相结合,并融入符号音乐的处理。

如上图所示,从高层次来看 Seed-Music 有着统一的音乐生成框架,主要包含以下三个核心组件:一个表征模型,用于将原始音频波形压缩成某种压缩表征形式;一个生成器,经过训练可以接受各种用户控制输入,并相应地生成中间表征;一个渲染器,能够从生成器输出的中间表征中,合成高质量的音频波形
基于统一框架,Seed-Music 建立了三种适用于不同场景的中间表征:音频 token、符号音乐 token 和声码器 latent。

  • 音频 token:通常以低于音频采样率的标记率学习,旨在有效编码语义和声学信息,能轻松桥接不同模态,但不同音乐信息高度纠缠,给生成器带来挑战。对应图二Audio Tokenizer的输出。
  • 符号音乐 token:如 MIDI、ABC 记号或钢琴卷帘记号等,本质上离散,可被大型语言模型操作,具有可解释性,便于用户在辅助音乐创作中交互,但缺乏声学信息,依赖渲染器生成声学细节。对应图二的MIDI编码器输出。
  • 声码器 latent在探索基于扩散模型的音乐音频生成中可作为中间表征,与量化音频标记相比,信息损失少、渲染器权重更轻,但生成器输出不可解释,且由于仅用波形重建目标训练,可能不够有效作为训练生成器的预测目标。对应图二扩散模型的输出部分。
模型架构跟Seed-TTS类似

满足多元需求专门提供高灵活编辑

Seed-Music 创新点之一,在于能通过 lead sheet(领谱)来编辑音乐,这增加了音乐创作可解释性。
在官方视频的 Lead2Song 部分,可以看到同一版歌词,通过领谱增减音轨、改变输入风格后,就能得到不同结果的歌曲,显著提高模型的实用性。
除领谱外,Seed-Music 也能直接调整歌词或旋律。比如,“情人节的玫瑰花,你送给了谁 / 你送给别人”,歌词修改前后,旋律保持不变,音乐的连贯性得以保持,过渡效果非常平滑。

输入内容除了文本,也可以是音频,它能基于原曲输出续作或仿作。下面这首英文歌曲“摇身一变”,仿写成了中文古风歌。

哪怕输入临时录制的 10 秒人声, Seed-Music 的零样本音频转换技术都能够将其转化为流畅的声乐。惊喜的是,Seed-Music 能将中文人声输入转换为英文声乐输出,实现了跨语种人声克隆,扩大了音乐小白们的创作空间。

Seed-Music pipeline:模型架构

如图所示,中间表征对整个系统来说很重要,每种表征都有其特点和适用场景,具体选择取决于用户的音乐创作任务。

  • 基于音频 token 的链路:包括 tokenizer、自回归语言模型、token 扩散模型和声码器,音频 token 有效地存储了原始信号的显著音乐信息,语言模型根据用户控制输入生成音频 token,token 扩散模型处理音频 token 以生成具有增强声学细节的音频波形
  • 基于符号音乐 token 的链路:采用符号音乐 token 作为中间表征,与音频 token 基于的管道类似,但有一些区别,如 lead sheet tokenizer 将信息编码为 token,语言模型学习预测 lead sheet token 序列,lead sheet token 是可解释的,并且允许在训练和推理中注入人类知识,但扩散模型从 lead sheet token 预测声码器 latent 更具挑战性,需要更大的模型规模。
  • 基于声码器 latent 的链路:遵循通过 latent 扩散建模从文本直接生成音乐到声学声码器 latent 表征的工作,通过变分自编码器和扩散模型将条件信号映射到归一化和连续的声码器 latent 空间。

在上述链路中,Seed-Music 经历三个训练阶段:预训练、微调和后训练。预训练旨在为音乐音频建模建立强大的基础模型;微调包括基于高质量音乐数据集的数据微调,以增强音乐性,或者针对特定创作任务提高可控性、可解释性和交互性的指令微调后训练是通过强化学习进行的,从整体上提高了模型的稳定性。
此外,在推理时,样本解码方案对于从训练模型中诱导出最佳结果至关重要。研究者们同时会应用模型蒸馏和流式解码方案来提高系统的延迟。

论文:《Seed-Music: Generating High-Quality Music in a Controlled Way》

摘要:

我们推出 Seed-Music,这是一套音乐生成和编辑系统,旨在通过细粒度的风格控制来制作高质量的音乐。我们的统一框架利用自回归语言建模和扩散方法来支持两个关键的音乐创作工作流程:受控音乐生成和后期制作编辑。为了控制音乐生成,我们的系统可以通过多模式输入的性能控制来生成声乐,包括歌词、风格描述、音频参考、乐谱和语音提示。对于后期制作编辑,它提供了交互式工具,可直接在现有音乐音轨中编辑歌词、旋律和音色。我们鼓励读者探索 https://team.doubao.com/seed-music 上的演示音频示例。

贡献。鉴于这些挑战,我们强调Seed-Music的多功能性。它支持声乐和器乐音乐生成、歌唱声合成、歌唱声转换、音乐编辑等。我们的方法、实验和解决方案旨在满足多样化的使用案例。我们提出一个统一框架,适应音乐家的不断发展工作流程,而不是依赖于单一的建模方法,如自回归(AR)或扩散。我们的关键贡献包括:

  • 我们介绍了一个统一框架,该框架结合了自回归语言建模和扩散方法,以实现基于多种多模态输入的高质量声乐生成
  • 我们提出了一种基于扩散的方法,能够对音乐音频进行细粒度编辑。
  • 我们提出了一种新颖的零样本歌唱声转换方法,仅需用户提供10秒的歌唱或语音录音。

第三部分介绍框架,该框架建立在三种基本表示上:音频标记、符号标记和声码器潜变量。将详细说明相应的流程和设计选择。在第四部分,我们深入探讨了我们的统一框架如何配置和训练以支持各种音乐生成和编辑任务。在第五部分和第六部分,我们讨论了Seed-Music的潜在应用和局限性,包括构建安全和道德生成AI系统的相关问题。

Method

我们的音乐生成系统由三个核心组件组成,如 Figure 1 所示:一个 表示学习模块,它将原始音频波形压缩为中间表示,作为训练后续组件的基础;一个 生成器,它处理各种用户控制输入并生成相应的中间表示;以及一个 渲染器,它根据生成器中的中间表示合成高质量的音频波形。

主要设计选择是中间表示。如第2节所述,我们确定了三种实用的选项:音频标记、符号音乐标记和声码器潜变量。每种选项的优缺点总结在表1中。

音频token旨在以远低于音频采样率的速率高效编码语义和声学信息。当与基于自回归语言模型的生成器一起使用时,音频标记可以有效连接不同的模态。然而,它们的主要限制在于缺乏可解释性,诸如声乐发音、音色和音高等音乐属性以高度纠缠的格式嵌入。先前的研究探讨了某些音频标记与语义特征的对应关系,而其他标记则捕捉声学方面。这种纠缠使生成器在生成音频标记时难以控制音乐的特定元素,如旋律和音色

符号token(如MIDI、ABC符号和MusicXML)是离散的,可以轻松地被标记化为与语言模型兼容的格式。与音频标记不同,符号表示是可解释的,允许创作者直接读取和修改。然而,它们缺乏声学细节,这意味着系统必须高度依赖渲染器生成音乐表演的细腻声学特征。训练这样的渲染器需要大量的配对音频和符号转录数据集,而这种数据集在声乐音乐中尤其稀缺。

来自变分自编码器的声码器潜变量作为连续的中间表示,尤其是在与扩散模型结合使用时。这些潜变量捕获比量化音频标记更细致的信息,使得在此流程中渲染器可以更轻量化。然而,与音频标记类似,声码器潜变量也是不可解释的。此外,由于声码器潜变量是为了音频重构而优化的,它们可能编码过多的声学细节,这对生成器的预测任务帮助不大。

选择中间表示取决于具体的下游音乐生成和编辑任务。在本节的其余部分,我们将介绍系统设计的技术细节,以及这三种中间表示的应用案例,详见第4节。

Audio Token-based Pipeline

基于音频令牌的管道,如图2所示,包含四个构建块:(1) 音频令牌化器,将原始音乐波形转换为低速率离散令牌;(2) 自回归语言模型(即生成器),接收用户控制输入,将其转换为前缀令牌,并预测目标音频令牌序列;(3) 令牌扩散模型根据音频令牌预测声码器潜变量;(4) 声学声码器,渲染最终的44.1kHz立体声音频波形。目标音频令牌到潜变量扩散模块和潜变量到波形声码器模块共同形成令牌到波形的过程,称为渲染器。

图2. Seed-Music管道概述,使用音频令牌作为中间表示。(1) 输入嵌入器将多模态控制输入(如音乐风格描述、歌词、参考音频或乐谱)转换为前缀嵌入序列。(2) 自回归语言模型生成一系列音频令牌。(3) 扩散变换模型生成连续声码器潜变量。(4) 声学声码器生成高质量的44.1kHz立体声音频。

音频tokenizer。音频tokenizer的有效性对该管道的成功至关重要。音频令牌嵌入了原始信号中的关键信息,如旋律、节奏、和声、音素和乐器音色。我们的实现受到Betker [2023]、Wang等 [2023b] 和Łajszczak等 [2024]的启发,并在架构和训练上进行了进一步优化,以实现以下目标:
在低压缩率下高保留关键信息,提高自回归语言模型的训练效率。
在语义和声学特征之间保持平衡,确保有足够的语义细节来优化生成器的训练,同时保持足够的声学细节以便渲染器准确重建波形。这个令牌生成与信号重建之间的权衡 [Blau和Michaeli,2019] 被仔细管理。

生成器。自回归语言模型通过对控制信号进行条件处理生成音频令牌,这些控制信号引导生成期望的音频输出。每个训练示例由配对的注释和音频组成,注释被转换为一系列嵌入,作为语言模型的前缀。不同控制信号模态的处理总结如下:

分类信号:闭合词汇标签(如音乐风格)通过查找表转换为分类嵌入,而自由形式的文本描述则使用MuLan [Huang et al., 2022]的通用文本编码器进行处理
浮点信号:旋律音符持续时间或歌曲长度等变量使用xVal编码 [Golkar et al., 2023] 嵌入,以表示连续数值输入。
歌词信号:歌词被转换为音素序列,以捕捉发音,改善模型对未见单词的泛化能力。
参考音频信号:tokenizer从参考音频中提取离散令牌序列,然后将其映射到与tokenizer的码本大小相同的连续嵌入查找表中,或者进一步聚合为轨道级嵌入。
在训练过程中,模型通过使用教师强制在下一个令牌预测任务上最小化交叉熵损失。在推理阶段,用户输入根据指定模态转换为前缀嵌入,然后自回归地生成音频令牌。

渲染器。一旦自回归语言模型生成音频令牌,这些令牌就由渲染器处理,以生成丰富的高质量音频波形。渲染器是一个级联系统,由两个组件组成:扩散变换器(DiT)和声学声码器,两者均独立训练。DiT采用标准架构,具有堆叠的注意力层和多层感知机(MLP)。其目标是逆转扩散过程,从噪声中预测干净的声码器潜变量,通过在每一步估计噪声水平。声学声码器是低帧速率变分自编码器声码器的解码器,设计类似于[Kumar et al., 2024, Lee et al., 2022, Cong et al., 2021, Liu and Qian, 2021]。我们发现,将声码器潜变量结构化为级联系统中的信息瓶颈,并结合可控的模型大小和训练时间进行优化,能够产生优于直接将音频令牌转换为波形的单一模型的音频质量和更丰富的声学细节

Symbolic Token-based Pipeline

与音频令牌基础管道不同,符号令牌生成器(如图3所示)旨在预测符号令牌,以提高可解释性,这对解决Seed-Music中音乐家的工作流程至关重要。

图3. 使用符号令牌作为中间表示的管道概述。(1) 自回归语言模型根据用户提示生成对应于乐谱的符号令牌。(2) 扩散变换模型根据符号令牌生成连续声码器潜变量。(3) 然后,声码器生成高质量的44.1kHz立体声音频波形。

先前的研究提出了旋律生成算法 [Ju et al., 2021; Zhang et al., 2022]。然而,它们缺乏对声乐音乐生成至关重要的明确音素和音符对齐信息。此外,它们仍然仅限于符号音乐生成,无法进行音频渲染。在另一条研究线上,有一些特定任务的先前工作研究了通过和声 [Copet et al., 2024]、力度和节奏 [Wu et al., 2023] 等音乐可解释条件来引导音乐音频生成的方法。受到爵士音乐家如何使用乐谱来勾勒作品旋律、和声和结构的启发,我们引入了“乐谱令牌”作为符号音乐表示。我们强调乐谱令牌与音频令牌相比的关键组成部分、优点和局限性如下。

• 为了从音频中提取符号特征以训练上述系统,我们利用内部开发的音乐信息检索(MIR)模型,包括节拍跟踪 [Hung et al., 2022]、调性和和弦检测 [Lu et al., 2021]、结构部分分段 [Wang et al., 2022]、五种乐器的MIDI转录(即人声、钢琴、吉他、贝斯和鼓) [Lu et al., 2023; Wang et al., 2024a],以及歌词转录。乐谱令牌表示音符级细节,如音高、持续时间、在小节中的位置、与音符对齐的声乐音素,以及轨道级属性,如段落、乐器和节奏。

• 乐谱令牌与可读乐谱之间的一对一映射使创作者能够直接理解、编辑和与乐谱互动。我们尝试了不同的方法来生成乐谱令牌序列:REMI风格 [Huang和Yang, 2020] 和 xVal [Golkar et al., 2023]。REMI风格的方法将乐器轨道交错到量化的基于节拍的格式中,而xVal将起始和持续时间编码为连续值。虽然xVal风格编码在更贴合我们生成模型的最终产品——音乐表现,但我们发现REMI风格更适合与音乐家的用户互动。

• 乐谱令牌允许在训练和推理过程中融入人类知识。例如,可以在预测序列中下一个令牌时应用音乐理论规则作为约束,以提高预测准确性。

• 由于乐谱令牌缺乏声学特征表征,我们需要在级联渲染器中扩大令牌到潜变量的扩散模型,以实现与音频令牌基础系统相同的端到端性能。

Vocoder Latent-based Pipeline

先前的研究 [Evans et al., 2024c,d; Levy et al., 2023; Rombach et al., 2022] 表明,“文本到音乐”的任务可以通过直接预测声码器潜变量来实现高效的方法。类似地,我们训练了一个在低潜变量帧率下运行的变分自编码器(VAE),并配合一个扩散变换器(DiT),将条件输入映射到标准化的连续声码器潜变量,如图4所示。

图4. Seed-Music管道,使用声码器潜变量作为中间表示。(1) 通过交叉注意、前缀或时间条件将各种输入类型输入到扩散变换器(DiT)。(2) 扩散变换模型预测连续声码器潜变量。(3) 然后,声学声码器生成高质量的44.1kHz立体声音频

基于音频令牌的管道相比(见第3.1节),自回归变换器模块被省略,尽管DiT和声码器的架构仍然大体相似。为了实现可比的性能,其他剩余模块的模型大小被扩大。在自回归方法中,所有条件输入被编码为前缀序列中的令牌,这可能导致过长的前缀,从而在处理更大和更复杂的输入时性能下降。相反,基于声码器潜在设计提供了更大的灵活性,能够更好地融入更广泛的条件信号,并支持多通道输入和输出。我们总结了不同类型提示的使用方式如下:

  • 声码器潜在空间中的上下文条件:这使得音频修补场景成为可能,例如音频延续和编辑。
  • 输入噪声空间中的上下文条件:对于歌词和风格描述等可变长度输入,交叉注意层在每个变换器块中应用,以融入这些输入。
  • 跨多个轨道的时间输入:时间变化信号(如旋律轮廓、强度曲线和时间对齐的乐器音轨)可以在去噪过程中每一步添加作为条件输入。
  • 多通道输出:在训练期间提供多通道输出示例时得到支持。例如,模型可以生成多个音乐上不同的音轨(如人声、贝斯、鼓和吉他),从而实现混音和重混等下游制作场景。这些音轨级别的训练示例可以通过音乐源分离(MSS)获得。

Model Training and Inference

对于上述所有管道,Seed-Music经历三个训练阶段:预训练、微调和后训练,类似于Seed-TTS和其他基于文本的语言模型。预训练阶段旨在为通用音乐音频建模奠定更好的基础。微调阶段包括数据微调以增强音乐性,或指令微调以提高特定创作工作流程的可控性、可解释性和互动性。

Seed-Music的后训练通过强化学习(RL)进行,这已被证明在文本和图像处理方面是一种有效的学习范式。近期研究表明,近端偏好优化(PPO)可以扩展到音乐和语音生成。受这些发现的启发,我们探索了RL方法,以改善生成输出与各种输入控制信号的对齐,并增强音乐性。我们考虑的奖励模型包括:原歌词提示与从生成音频提取的歌词转录之间的编辑距离,输入流派与音频输出检测流派的比较精度,以及歌曲结构提示与生成音频检测结构之间的匹配。此外,基于节奏、乐器、音频参考和用户语音提示的额外奖励模型可以用于指示生成输出中强调哪些音乐属性。此外,结合人类反馈可以产生捕捉用户细微偏好的奖励模型。我们将对RL的深入研究留待未来工作。

在推理过程中,样本解码方案的选择对自回归和扩散模型的输出质量和稳定性至关重要。我们观察到,仔细调整无分类器引导至关重要,以确保音乐性和对提示的遵循。为了减少延迟,我们应用模型蒸馏以最小化DiT模型所需的迭代步骤。此外,我们开发了一种流式解码方案,允许在自回归模型继续生成令牌序列的同时进行音频流生成。

Experiments

在本节中,我们展示了四个基于模型能力的应用:Lyrics2Song(第4.1节)、Lyrics2Leadsheet2Song(第4.2节)、MusicEDiT(第4.3节)和zero-shot唱歌声音转换(第4.4节)。

Lyrics2Song中,我们介绍了一个基于用户提供的歌词和音乐风格输入生成高质量人声音乐的系统。Lyrics2Leadsheet2Song在Lyrics2Song的基础上,结合了符号音乐表示,以增强可解释性,并生成乐谱,用户可以访问并调整旋律和节奏,从而更精细地控制最终音频输出。MusicEDiT探索了一种基于扩散的修补系统,使用户能够编辑现有音乐音频的歌词和旋律,作为后期制作工具来修改歌曲的人声。在zero-shot唱歌声音转换中,我们提供了一种解决方案,允许用户基于自己的声音在现有音频中修改人声音色,且仅需最少的参考数据。这一应用以低准备成本促进了人声个性化。对于上述每个应用,我们讨论了与中间表示、模型架构和其他配置相关的设计选择,以优化系统以适应各自的用例。

Lyrics2Song

Lyrics2Song生成基于用户提供的音乐风格描述和带有章节标签(如“段落”、“副歌”和“桥段”)的歌词的声乐音乐表演。这项任务利用音频基于令牌的管道,借助令牌化和自回归技术对多模态数据(即歌词、风格、标签和音频)进行对齐,并支持流式解码以实现快速、响应式的交互。

该系统支持短音频片段的生成和完整曲目的制作。生成的音频展示了富有表现力和动态的人声表演,旋律动人,并且乐器种类繁多,涵盖多种风格,展现出成熟的音乐性。

带音频参考的人声音乐生成

除了风格描述外,我们的系统还支持音频输入作为提示来指导音乐生成。通过收听示例,可以看到输出是如何参考音频提示的音乐风格生成的。由于用文本或标签描述所需音乐对新手用户来说可能不够直观,因此音频提示提供了一种更有效的交流音乐意图的方式。

我们的系统支持两种音频提示模式:继续模式和混音模式。在继续模式中,从音频参考提取的音频令牌被连接到前缀中,以继续自回归生成,从而确保与参考音频在结构、旋律和声响上的高度相似。在混音模式中,音频参考被转换为预训练的联合文本-音频嵌入空间中的嵌入向量。这一嵌入总结了音频参考的全局特征,然后被纳入前缀中以指导生成,使生成的音频能够采纳不同的风格。

在这两种模式下,我们的模型展示了强大的能力,能够保持输入歌词与音频参考中固有歌词之间的连贯性,即使在没有自动歌词转录的帮助下。当输入歌词在结构和语义上与音频参考中的歌词相似时,模型倾向于模仿参考的旋律和结构。然而,当输入歌词在风格上显著不同(例如语言、结构、押韵)时,连贯性会减弱。尽管如此,模型仍能有效保持自然的节奏模式、乐器、声乐质量和整体音乐主题。

器乐音乐生成

虽然音频基于令牌的管道主要设计用于声乐音乐生成,但如果歌词输入仅包含章节标签而没有文本,它也支持器乐音乐生成。我们提供了多种风格的器乐生成示例,每个部分按指定时间展开,并展示了部分之间清晰的结构转换(例如,从段落到副歌)。

评估指标

我们使用以下定量指标在开发过程中评估生成质量。这些指标也被重新用于自回归语言模型的强化学习过程中的奖励模型。

  • 词错误率(WER):我们使用内部开发的唱歌歌词转录模型,该模型支持英语和中文,以转录生成的音频并计算与歌词提示的词(或拼音)错误率。虽然有用,但由于延长元音、辅音、音高变化和类似非语言节奏等因素,WER并不是评估音乐声乐质量的完美指标。这些特征可能会引入噪声。
  • 音乐标签性能:为了评估生成音频与输入风格描述之间的对齐,我们使用内部开发的音乐标签和结构分段模型,从生成的音频中预测高层次的音乐属性,包括流派、情绪、声乐音色、声乐性别和结构部分。这些预测属性与输入的风格描述和章节标签进行比较,以平均精确度分数作为相关性的定量指标。

对于定性评估,我们使用比较平均意见得分(CMOS),基于一组音乐训练评审员的反馈。我们定义了以下三个评估维度:

  • 音乐性:评估音乐属性,包括声乐旋律的新颖性、和声的适当使用、惯用音乐形式(例如主题、变奏)、连贯结构、合适的和弦进行、特征节奏模式和完善的乐器配器。
  • 音频质量:评估声学特性,如声乐清晰度、乐器真实感、频谱细节以及鼓的瞬态和起音的清晰度。评审员还考虑任何不希望的音频伪影,如失真、闷音或某些频段能量缺失。
  • 提示遵循:衡量生成音频与输入歌词和风格提示的吻合程度。

在语音领域,基准数据集已建立用于评估TTS系统,采用WER和自动说话人验证(ASV)等指标。然而,目前没有相应的音乐生成基准提供定量评分。此外,音乐性—评估音乐生成质量的关键因素—具有高度的主观性,并且难以用客观指标量化。我们鼓励读者收听提供的音频示例,以更好地评估我们系统的质量。

音频令牌与声码器潜在

我们还使用声码器潜在基础管道进行Lyrics2Song实验,取得了与音频令牌基础管道相当的性能。然而,我们发现自回归语言模型在交互应用中固有地更适合于扩散模型。其因果架构使流式解决方案能够提供近乎实时的体验,同时还允许与多模态模型的未来集成。

Lyrics2Leadsheet2Song

Lyrics2Leadsheet2Song管道是一个两步过程,用于实现Lyrics2Song任务:Lyrics2Leadsheet和Leadsheet2Song。在第一步中,从输入的歌词和风格描述生成乐谱令牌。在第二步中,从乐谱令牌生成音乐音频。整体管道如第3.2节所示。乐谱令牌使用户能够参与生成过程,在最终渲染之前编辑旋律、和弦、乐器和节奏。

Lyrics2Leadsheet

我们基于[Chen et al., 2024c]开发了一种基于规则的符号音乐编码方案,以将音乐音频片段的符号特征编码为乐谱令牌序列。如图5所示,该方案编码了歌词和各种音乐事件。它识别八种事件类型:歌词音素、小节、和弦、声乐音符、低音音符、钢琴音符、吉他音符和鼓音符。除“小节”外,每种事件类型在乐谱令牌中都表示为一个独特的“轨道”。小节事件定义了基本的时间结构,各轨道按小节交错排列。

对于轨道内的每个事件(例如,音素、音符、和弦),我们在适用时编码开始时间、持续时间和音高值。

如第3.2节所述,生成器使用我们内部的MIR模型提取的乐谱令牌进行训练。以下是一些示例,展示了自回归语言模型如何根据输入的歌词和风格提示预测与音素对齐的音符,以及适合流派的旋律和节奏。

Leadsheet2Song

Leadsheet2Song管道涉及从一系列乐谱令牌渲染完整的音频混音。在演示示例中,我们展示了生成的声乐音乐如何遵循给定乐谱令牌中的声乐旋律、音素、节奏、和弦进行和乐器音符。渲染器有效地生成自然且富有表现力的多乐器音乐表演的细微差别,为专业人士提供了一种强大的工具,以快速回顾音频结果,而无需在合成器中进行细致的参数调整。

Leadsheet2Vocals

除了生成完整的音频混音外,Lyrics2Leadsheet2Song系统可以配置为生成单独的音轨,包括人声、鼓、低音、钢琴和吉他,既可以使用符号表示也可以生成音频。唱歌声音合成(SVS)是该系统的一个应用,其中模型设置为仅输出人声音轨,如这些示例所示。

Music Editing

在本节中,我们探讨音乐音频编辑作为后期制作过程。第3.3节中描述的基于扩散的方法的非因果特性使其特别适合此类任务。例如,在文本条件下的修补中,扩散模型能够在遮蔽音频段前后访问上下文,从而确保更平滑的过渡[Wang et al., 2023c]。我们将此框架视为乐谱条件下的修补任务,以训练DiT模型。在推理过程中,修改后的乐谱作为条件输入,遮蔽与乐谱中修改部分对应的音频段并重新生成。

在这些听力示例中,我们展示了系统在保持旋律和伴奏的同时,精确修改演唱歌词的能力,支持英语和普通话的演唱。在某些情况下,歌词在同一语言内进行修改,而在其他情况下,系统允许在语言之间交替。此外,在这些示例中,我们展示了用户如何在指定的时间段内精确调整旋律,同时保持歌词、其余旋律和伴奏轨道不变。这种新的“生成音频编辑”范式让我们感到兴奋,因为它保留了原始曲目的音乐表现和基本特质,而这一点在没有重新录制人声及原始乐器音轨的情况下以往是复杂或几乎不可能实现的。

Zero-shot Singing Voice Conversion

为创作者编辑声乐音乐的最直观方式之一是将声乐音色转换为与其自身声音相匹配的音色。本节探讨了作为Seed-Music套件最终组成部分的唱歌声音转换(VC)系统。尽管我们的唱歌VC方法与Seed-TTS中介绍的语音VC有相似之处,但在声乐生成背景下的声音克隆和转换面临更大的挑战[Arik et al., 2018]:

  • 声乐混合:声乐音乐通常由声乐和背景乐器伴奏组成,两者在和声和节奏方面具有强一致性。相比之下,语音信号往往包含与语音内容无关的背景环境声音。尽管现代MSS模型可以隔离声乐,但通常会引入降低质量的伪影。我们的目标是开发一个可扩展的系统,能够直接处理声乐与背景轨道的混合,而不依赖MSS,从而避免这些伪影。
  • 声乐范围:唱歌声音的音高范围远大于语音。在零-shot唱歌VC中,系统必须将参考声音的音高范围推广到合成的唱歌声音,这对模型的鲁棒性提出了很高要求。
  • 声乐技巧:唱歌声音具有高度表现力,并涉及比语音更多的技巧。同一位歌手在歌剧中、音乐剧或爵士即兴中演唱时,听起来可能截然不同。唱歌VC系统必须准确捕捉和重现这些表现性技巧,同时处理清晰发音和韵律等常规语音特征。
  • 唱歌与语音参考:在VC应用中,用户通常提供语音作为参考声音,无论是用于语音还是唱歌合成。我们的系统专门设计为能够接受无论是语音还是唱歌的参考声音,并能够有效地使用短语音片段作为参考进行唱歌VC。
  • 业余与专业唱歌:与语音VC数据相比,业余唱歌与专业唱歌的配对数据显著较少。这使得唱歌VC特别具有挑战性,因为模型必须适应非专业唱歌输入,并将其转换为专业质量的表现。例如,如果用户提供的唱歌参考音调不准,唱歌VC系统不仅要捕捉其声音的音色,还必须纠正音高。

听力示例展示了我们的唱歌VC系统在不同场景下的表现。结果的质量在很大程度上取决于参考声音与目标唱歌信号之间的相似性。例如,当两者都是用英语演唱的男性声音时,效果最佳。然而,处理跨性别和跨语言的情况更具挑战性,往往会导致伪影、失真和发音不一致等问题。

结论

在本报告中,我们介绍了Seed-Music,这是一个全面的音乐生成和编辑系统套件,旨在支持多样化的音乐创作工作流程。我们展示了该系统如何基于多模态输入(包括歌词、风格描述、音频参考、乐谱和声音提示)生成高质量的声乐音乐。我们的统一框架通过三种中间表示(即音频标记、乐谱标记和声码器潜在表示)及其相关管道,满足各种用例,为用户提供灵活的工具,从创意到生成和编辑。

从应用的角度来看,Seed-Music 降低了艺术创作和音乐表达的门槛。我们相信本报告中的演示可以赋能从初学者到专业人士的广泛创作者。例如,文本到音乐系统与零-shot唱歌声音转换的结合,使初学者能够更深入地参与创作过程。初学者不仅是从远处与音乐互动,而是能将自己独特的声音和身份融入到过程中,增强创意的构思。

音乐也是短视频、电影、游戏和增强现实/虚拟现实体验等补充媒体的重要组成部分。实时条件控制和生成音乐的渲染引入了全新的互动形式,超越了传统的音频播放。我们展望新的艺术媒介,在这些媒介中,生成音乐能够响应来自文本、游戏叙事和视觉艺术风格的条件信号。

对于专业人士而言,提议的乐谱标记旨在无缝集成到音乐家、作曲家、歌手和艺术家的工作流程中。我们相信,这些标记有潜力发展成为音乐语言模型的符号标准,类似于传统音乐制作中的MIDI。音乐家和制作人可以在保持对旋律、和声和节奏元素的熟悉控制的同时,利用生成模型的强大功能。此外,能够编辑和操控录制的音乐,同时保持其音乐语义,将为行业节省大量时间和成本。我们对未来在音轨生成和编辑方面的发展特别感兴趣,这将超越声乐轨道。这些能力将使专业人士能够更高效地探索音乐创意,从而增加发现“意外惊喜”的可能性,这通常对创作过程至关重要。

Qwen2-Audio:让LLM 拥有“耳朵”

Qwen2-Audio-7B 🤖 🤗  | Qwen-Audio-7B-Instruct 🤖 🤗  | Demo 🤖 | 🤗 

论文链接https://arxiv.org/abs/2407.10759

代码链接github.com/QwenLM/Qwen2-Audio

Qwen2-Audio作为一个大规模音频语言模型,Qwen2-Audio能够接受各种音频信号输入,并根据语音指令执行音频分析或直接响应文本。我们引入两种不同的音频交互模式:

  • 语音聊天:用户可以自由地与Qwen 2-Audio进行语音交互,无需文字输入;
  • 音频分析:用户可以在交互过程中提供音频和文本指令进行分析;
  • 多语言支持:该模型支持超过8种语言和方言,例如:中文、英语、粤语、法语、意大利语、西班牙语、德语和日语。

Qwen 2-Audio是一个大规模的音频语言模型,它能够接受各种音频信号输入,并对语音指令进行音频分析或直接的文本响应。与复杂的分层标签相比,我们通过利用不同数据和任务的自然语言提示简化了预训练过程,并进一步扩大了数据量。我们提升了Qwen 2-Audio的语音追踪能力,并实现了语音聊天和音频分析两种不同的音频交互模式。在语音聊天模式下,用户可以自由地与Qwen 2-Audio进行语音交互,无需文字输入。在音频分析模式下,用户可以在交互过程中提供音频和文本指令进行分析。请注意,我们不使用任何系统提示来在语音聊天和音频分析模式之间切换。 Qwen 2-Audio能够智能地理解音频中的内容,并按照语音命令做出适当的响应。例如,在同时包含声音、多说话者对话和语音命令的音频片段中,Qwen 2-Audio可以直接理解命令并提供对音频的解释和响应。

Qwen2-Audio、Qwen-Audio 以及之前 LALM 顶级产品的性能,例如 SpeechT5 、SpeechNet、 SpeechLLaMA、SALMONN、Whisper、Pengi,和 SpeechVerse。 我们展示了 10 个数据集的测试集结果,涵盖自动语音识别 (ASR)、语音到文本翻译 (S2TT)、语音情绪识别 (SER)、声音分类 (VSC) 和指令跟踪基准。 ASR 数据集(例如 Librispeech 和 Aishell2)的结果参考 1 – WER%。 CoVoST2的结果是七个翻译方向(en-de、de-en、en-zh、zh-en、es-en、fr-en和it-en)的平均BLEU得分。 AIR-Bench 聊天基准测试的结果包含四个维度:语音、声音、音乐和混合。 每个维度的分数由 GPT-4 自动评估,值范围为 0 到 10。 Qwen2-Audio 无需任何针对特定任务的微调即可实现卓越的性能,超越了同类产品。
图2:Qwen2-Audio的三阶段训练过程概述。

介绍

音频是人类和其他生物之间互动和交流的重要媒介,承载着丰富的信息内容。 全面理解各种形式的音频信号对于实现通用人工智能 (AGI) 至关重要。Qwen2-Audio主要重点是增强其指令跟踪能力。 Qwen2-Audio 是一种大型音频语言模型 (LALM),旨在处理音频和文本输入以生成文本输出。 与之前的模型相比,Qwen2-Audio 显着扩展了训练数据集。 为了减少训练前和训练后阶段之间的差距,我们通过直接使用自然语言提示各种数据和任务来简化预训练过程,如下图所示。 遵循大语言模型(OpenAI,2023;Qwen,2023)的实践,我们进一步进行指令调优和直接偏好优化,使模型的输出与人类偏好保持一致。

Qwen2-Audio 以两种不同的模式运行:音频分析语音聊天。 这两种模式从功能上有所区别,但用户在使用过程中无需区分。 在音频分析模式下,用户可以利用Qwen2-Audio来分析多种音频类型,包括语音、声音、音乐或各种混合音频形式。 命令可以通过音频或文本发出,Qwen2-Audio 将自动识别音频中的命令片段。 相反,在语音聊天模式下,用户可以与 Qwen2-Audio 进行交互,就好像它是一个会话代理一样,进行不受限制的对话。 提供音频交互,用户可以随时切换到文本交互。 例如,如果用户输入一个音频剪辑,其中初始部分是键盘打字的声音,然后用户询问“这是什么声音?”在口语中,Qwen2-Audio 预计会直接回复“这是键盘的声音”。

方法

模型架构

Qwen2-Audio的训练过程如图2所示,其中包含音频编码器和大语言模型。 给定配对数据(𝒂,𝒙),其中𝒂和𝒙表示音频序列和文本序列,训练目标是最大化下一个文本词符的概率为:

以音频表示和先前文本序列 𝒙<t 为条件,其中 θ 和 ϕ 分别表示大语言模型和音频编码器的可训练参数。

与Qwen-Audio不同的是,Qwen2-Audio的音频编码器的初始化是基于Whisper-large-v3模型。 为了预处理音频数据,我们将其重新采样到 16kHz 的频率,并使用 25ms 的窗口大小和 10ms 的跳跃大小将原始波形转换为 128 通道梅尔频谱图。 此外,还合并了步长为 2 的池化层,以减少音频表示的长度。 因此,编码器输出的每一帧大约对应于原始音频信号的 40ms 片段。 Qwen2-Audio 仍然采用大型语言模型 Qwen-7B 作为其基础组件。 Qwen2-Audio的总参数为8.2B参数。

预训练数据集的统计(小时)。

预训练

在预训练阶段,我们用自然语言提示替换分层标签。 如图2所示。 我们发现使用语言提示可以提高更好的泛化能力和更好的指令跟随能力。

有监督微调

Qwen2-Audio的彻底预训练使模型对音频内容有了全面的理解。 在此基础上,我们采用基于指令的微调技术来提高模型与人类意图保持一致的能力,从而形成交互式聊天模型。 我们的初步研究强调了 SFT 数据的质量和复杂性对模型性能的关键影响。 因此,收集了一组精心策划的高质量 SFT 数据,并实施了严格的质量控制程序。

我们考虑两种不同的人类互动模式:

  • 音频分析:在音频分析模式下,用户可以灵活地让 Qwen2-Audio 分析各种音频。 用户指令可以通过音频或文本给出。该模式常用于音频文件的离线分析。
  • 语音聊天:在语音聊天模式下,鼓励用户与Qwen2-Audio进行语音对话,提出各种问题。 请随意将其视为您的语音聊天助手。该模式常用于与 LALM 的在线交互。

为了一致性和模型统一性,两种交互模式都经过联合训练,用户在使用过程中不会出现模式差异化,也无需使用单独的系统提示在不同模式之间切换。 两种模式在实际使用中是无缝结合的。

直接偏好优化(DPO)

我们采用 DPO (Rafailov 等人, 2024) 来进一步优化模型以遵循人类偏好。 通过获取带有三元组数据(𝒙,𝒚𝒘,𝒚𝒍)的数据集𝒟,其中𝒙是带有输入音频的输入序列,𝒚𝒘和𝒚𝒍 分别是人工注释的好响应和坏响应,我们对模型 𝒫θ 进行如下优化:

其中𝒫ref表示用𝒫θ初始化的参考模型,σ表示sigmoid函数,β是超参数。 图2说明了Qwen2-Audio的三阶段训练过程。

实验

在实践中,我们发现之前的许多测试数据集都非常有限,无法充分反映现实场景中的性能,例如一些SLU(口语理解)和SER(语音情感识别)数据集。 因此,我们主要直接在AIR-Bench上评估性能。 我们发现 AIR-Bench 的分数更符合实际的用户交互体验。 同时,为了评估Qwen2-Audio的通用理解能力,如表1所示,我们仍然进行了涵盖各种任务的综合评估,即自动语音识别(ASR)、语音识别-文本翻译(S2TT)、语音情感识别(SER)、语音分类(VSC)。 评估是在 13 个数据集上进行的。 评估数据集被严格排除在训练数据之外,以避免数据泄露。 我们比较的模型包括开源模型和可调用的 API,例如 Gemini。

表2:自动语音识别 (ASR)、语音到文本翻译 (S2TT)、语音情绪识别 (SER)、声音分类 (VSC) 和 AIR-Bench 聊天基准测试的结果。 请注意,对于 Qwen2-Audio,Fleurs 的结果是零样本,而 Common Voice 的结果不是零样本。

案例:

结论:

在本文中,我们提出了 Qwen2-Audio,它建立在 Qwen-Audio 分析各种类型音频的能力之上,同时还被赋予了语音交互能力。 在预训练阶段,我们针对不同的数据和任务利用自然语言提示,进一步扩大了数据量。 在SFT阶段,我们通过提高SFT数据的数量、质量和复杂性来增强Qwen2-Audio与人类交互的一致性,从而实现无缝的语音和文本交互。 此外,我们还通过 DPO 阶段提高了 Qwen2-Audio 的响应质量。 在不同基准上测试的客观指标证明了 Qwen2-Audio 在音频理解和对话能力方面的熟练程度。 论文中的案例也说明了Qwen2-Audio流畅灵活的语音交互能力。

补充:语音/文本嵌入融合

Qwen-audio-chat模型如何将音频特征与文本提示无缝融合,通过特征编码、位置标记和信息整合,提升模型的跨模态理解能力。

系统会提取音频的特征,然后对文本提示进行嵌入(Embedding)处理。具体来说,它通过将音频特征转换成一个三维向量(如[1,56,4096]),并将这个向量嵌入到文本提示中。例如,考虑到一个文本提示信息,其中包括标记转换为ID的过程,随后是与音频特征的结合,即在文本中通过和标签指明音频的开始与结束位置。

在融合过程中,系统通过ID定位到这些标签所代表的位置,并用音频特征向量A替换掉文本提示中的“Audio_path/audio_name.flac”相对应的向量表示。这样,音频特征就被有效地融合到文本提示中,形成了一个语言模型能够理解的向量表示。

 // A code block
     <|im_start|>system
    You are a helpful assistant.<|im_end|>
    <|im_start|>user
    Audio 1:<audio>Audio_path/audio_name.flac</audio>
    what does the person say?<|im_end|>
    <|im_start|>assistant

代码实现:

// An highlighted block
bos_pos = torch.where(input_ids == self.config.audio['audio_start_id'])
eos_pos = torch.where(input_ids == self.config.audio['audio_start_id'] + 1)
audio_pos = torch.stack((bos_pos[0], bos_pos[1], eos_pos[1]), dim=1)
if audios is not None:
	for idx, (i, a, b) in enumerate(audio_pos):
	     hidden_states[i][a : b+1] = audios[idx]
	output_shape = input_shape + (hidden_states.size(-1),)

InternVL家族:通过开源组件缩小与商业多模态模型的差距 —— GPT-4o的开源替代方案

InternVL家族:用开源组件缩小与商业多模态模型的差距——一个开创性的开源替代方案,旨在平替GPT-4o

https://github.com/OpenGVLab/InternVL/

[🆕 博客] [🚀 InternVL2 博客] [🗨️ 对话Demo] [🤗 HF Demo] [📖 文档] [🌐 API] [🚀 快速开始]

[📜 InternVL 1.0 论文] [📜 InternVL 1.5 报告] [📖 1.0 中文解读] [📖 1.5 中文解读] [📖 2.0 中文解读]

我们的 InternVL2-Llama3-76B 在 OpenCompass 多模态排行榜上取得了比 GPT-4o 更高的分数。尽管这让我们感到兴奋,但我们必须指出,这个分数仅捕捉了模型性能的一部分,特别是在与视觉相关的任务方面。我们认识到,在指令跟随、用户体验、纯文本处理能力和整体理解能力等方面,我们的模型与 GPT-4 之间仍存在显著差距。我们致力于不断改进我们的模型,以更好地满足现实世界的应用需求。

书生·万象多模态大模型。万象,代表对多模态大模型的愿景,即理解真实世界一切事物和景象,实现全模态全任务的通用智能。它涵盖图像,视频,文字,语音、三维点云等5种模态,首创渐进式对齐训练,实现了首个与大语言模型对齐的视觉基础模型,通过模型”从小到大”、数据”从粗到精”的渐进式的训练策略,以1/5成本完成了大模型的训练。它在有限资源下展现出卓越的性能表现,横扫国内外开源大模型,媲美国际顶尖商业模型,同时也是国内首个在MMMU(多学科问答)上突破60的模型它在数学、图表分析、OCR等任务中表现优异,具备处理复杂多模态任务、真实世界感知方面的强大能力,是当之无愧的最强多模态开源大模型。

书生万象具有千亿规模参数,支持图像,视频,文字,语音、三维点云等模态。为了使模型能够支持丰富的输出格式,书生万象首次使用了向量链接技术,链接各领域专用解码器,打通梯度传输链路,实现通专融合,支持检测、分割、图像生成、视觉问答等百种细分任务,性能媲美各领域的专家模型。为了训练书生万象模型,我们从各类来源构建了最大图文交错数据集OmniCorpus,包含约160亿图像,3万亿文本词元,相比现有开源图文数据集 ,图像数量扩大了三倍,文本数量扩大了十倍。

传统的预训练范式直接使用大模型+大数据进行一步到位训练,需要大量的算力资源。为了提高训练效率,研究团队首创了渐进式训练策略,先利用小模型在海量带噪数据上进行高效预训练,然后再使用大模型在较少高质量精选数据上进行高效对齐,模型”从小到大”,数据”从粗到精”,仅需20%的算力资源即可取得同等效果。 采用这种训练策略,我们实现了首个与大模型对齐的视觉基础模型,同时,我们的多模态大模型,展现出卓越的性能,在MathVista(数学)、AI2D(科学图表)、MMBench(通用视觉问答)、MM-NIAH(多模态长文档)等评测上可比肩GPT-4o、Gemini 1.5 Pro等闭源商用大模型。

InternVL2系列基于以下设计构建:

1、渐进式与大型语言模型:我们引入了渐进式对齐训练策略,从而使第一个视觉基础模型与大型语言模型原生对齐。通过采用渐进式训练策略,即模型从小到大,而数据从粗到细,我们以相对较低的成本完成了大型模型的训练。这一方法在有限的资源下表现出了出色的性能。

2、多模式输入:通过一组参数,我们的模型支持多种输入模式,包括文本、图像、视频和医疗数据。

3、多任务输出:由我们最近的工作VisionLLMv 2提供支持,我们的模型支持各种输出格式,如图像,边界框和蒙版,展示了广泛的通用性。通过将MLLM与多个下游任务解码器连接,InternVL 2可以推广到数百个视觉语言任务,同时实现与专家模型相当的性能。

训练策略

性能:

InternVL2在处理复杂的多模态数据方面表现出强大的能力,在数学、科学图表、通用图表、文档、信息图表和OCR等任务中表现出色。例如,在MathVista基准测试中,InternVL2的准确率达到66.3%,大大超过了其他闭源商业模型和开源模型。此外,InternVL2在广泛的基准测试中实现了最先进的性能,包括通用图表基准测试ChartQA,文档基准测试DocVQA,信息图表基准测试InfographicVQA和通用视觉问答基准测试MMBench。

nameMMMU
(val)
MathVista
(testmini)
AI2D
(test)
ChartQA
(test)
DocVQA
(test)
InfoVQA
(test)
OCRBenchMMB-EN
(test)
MMB-CN
(test)
OpenCompass
(avg score)
GPT-4V*
(20240409)
63.1 / 61.758.189.478.187.267881.080.263.5
Gemini Pro 1.5*58.5 / 60.657.780.381.386.572.775473.973.864.4
Claude3.5-Sonnet*68.3 / 65.967.794.790.895.278879.780.767.9
GPT-4o*
(20240513)
69.1 / 69.263.894.285.792.873683.482.169.9
Cambrian-149.7 / 50.453.279.775.675.560081.458.3
LLaVA-NeXT Qwen1.550.149.080.479.785.780.5
InternVL2-Pro58.9 / 62.066.387.3 / 96.087.195.183.383787.887.271.8
nameMMMU
(val)
MathVista
(testmini)
AI2D
(test)
ChartQA
(test)
DocVQA
(test)
InfoVQA
(test)
OCRBenchMMB-EN
(test)
MMB-CN
(test)
OpenCompass
(avg score)
InternVL2-1B35.4 / 36.737.764.172.981.750.975465.460.748.3
InternVL2-2B34.3 / 36.346.374.176.286.958.978473.270.954.0
InternVL2-4B47.0 / 48.358.678.981.589.267.078878.673.960.6
InternVL2-8B49.3 / 51.258.383.883.391.674.879481.781.264.1
InternVL2-26B48.3 / 50.759.484.584.992.975.982583.482.066.4
InternVL2-40B53.9 / 55.263.787.186.293.978.783786.886.569.7
InternVL2-Llama3-76B55.2 / 58.265.587.688.494.182.083986.586.371.0
InternVL2-Pro58.9 / 62.066.387.3 / 96.087.195.183.383787.887.271.8

实例:

Mixtral 8x7B

  • 论文地址:https://arxiv.org/pdf/2401.04088.pdf
  • 项目地址:https://github.com/mistralai/mistral-src
  • 论文主页:https://mistral.ai/news/mixtral-of-experts/
专家层的混合。每个输入向量由路由器分配给 8 个专家中的 2 个。该层的输出是两个所选专家输出的加权和。在 Mixtral 中,专家是标准前馈块,就像普通变压器架构中一样

Mixtral 8x7B由法国的Mistral AI发布,性能直逼Llama2-70B,超越了GPT-3.5。此前,由于 OpenAI 团队一直对 GPT-4 的参数量和训练细节守口如瓶。Mistral 8x7B 的放出,无疑给广大开发者提供了一种「非常接近 GPT-4」的开源选项。要知道,很早之前就有人爆料,OpenAI 也是采用了「混合专家模型」(Mixture of Experts,MoE)的构架来搭建 GPT-4。

Mixtral 8x7B 是一种具有开放权重的稀疏专家混合模型 (Sparse Mixture of Experts : SMoE),在大多数基准测试中都优于 Llama 2 70B 和 GPT-3.5。Mixtral 可以在小批量大小下实现更快的推理速度,并在大批量大小下实现更高的吞吐量。Mixtral (即 Mixtral 8x7B)与单个 Mistral 7B 架构相同。Mistral 7B 模型同样来自这家法国人工智能初创公司 Mistral AI ,这篇论文发表于去年 10 月,在每个基准测试中,Mistral 7B 都优于 Llama 2 13B,并且在代码、数学和推理方面也优于 LLaMA 1 34B。

与 Mistral 7B 不同的是,Mixtral 8x7B 是一种仅包含解码器的模型,每层由 8 个前馈块(即专家)组成。对于每个 token,在每一层,路由器网络都会选择两名专家来处理当前状态并组合他们的输出。尽管每个 token 只看到两个专家,但所选的专家在每个时间步上都可能不同。因此,每个 token 可以访问 47B 参数,但在推理过程中仅使用 13B 激活参数
从这里我们也可以看出,Mixtral 8x7B 并不是大家认为的有 8 个 Mistral 7B 模型,名字中的 8 代表 8 个专家。

Mixtral 预训练上下文的大小为 32k,在多项基准测试中,它的性能达到或超过 Llama 2 70B 和 GPT-3.5。尤其是,Mixtral 在数学、代码生成和需要多语言理解的任务方面表现出了卓越的能力,并在这些领域显著优于 Llama 2 70B。实验表明,Mixtral 能够成功地从 32k token 的上下文窗口中检索信息,无论序列长度和信息在序列中的位置如何。
除了 Mixtral 8x7B,该研究还推出了 Mixtral 8x7B – Instruct 聊天模型,其性能在人类评估基准上明显超过了 GPT-3.5 Turbo、Claude-2.1、Gemini Pro 和 Llama 2 70B 聊天模型。在 BBQ 和 BOLD 等基准中,Mixtral – Instruct 也显示出更少的偏见。

不过,有研究者表示 Mixtral 中的专家似乎专注于语法而不是领域,特别是在初始层和最终层(参见路由分析部分)

Mixtral 8x7B 如此令人兴奋的原因在于它探索了一种新的架构范式,即「专家混合」的方法,与大多数 LLM 所遵循的方法形成鲜明的对比。MoE 结合了多个专家模型的优势来解决问题,在 MoE 中,仅使用一名或少数专家就能进行预测。这种方法有两个主要组成部分:

  • 路由器:决定对于给定输入信任哪个专家以及如何权衡每个专家对于特定输入的结果
  • 专家:专门研究问题不同方面的个体模型。

在 Mixtral 的案例中,有八位专家,其中两位是被选中的。我们接下来看具体细节。

架构细节

Mixtral 基于 Transformer 架构,支持上下文长度达到 32k token,并且前馈块被 Mixture-of-Expert(MoE)层取代。

稀疏专家混合

对于给定的输入 x,MoE 模块的输出由专家网络输出的加权和决定,其中权重由门控网络的输出给出。即给定 n 个专家网络 {E_0, E_i, …, E_(n−1)},则专家层的输出为:

这里,G (x)_i 表示第 i 个专家的门控网络的 n 维输出,E_i (x) 是第 i 个专家网络的输出。不过实现 G (x) 有多种替代方案,其中简单且高性能的方法是通过在线性层的 Top-K logits 上采用 softmax 来实现。即:

MoE 层可以在具有高性能专用内核的单个 GPU 上高效运行。例如,Megablocks 将 MoE 层的前馈网络(FFN)操作转换为大型稀疏矩阵乘法,显著提高了执行速度。此外,MoE 层可以通过标准模型并行技术以及一种称为专家并行 (EP) 的特殊分区策略分布到多个 GPU 上。 
在 MoE 层执行期间,本应由特定专家处理的 token 将被路由到相应的 GPU 进行处理,并且专家的输出将返回到原始 token 位置。
在 Transformer 模型中,MoE 层独立的应用于每个 token,并取代 Transformer 块的前馈 (FFN) 子块。对于 Mixtral,该研究使用与专家函数 E_i (x) 相同的 SwiGLU 架构,并设置 K = 2。这意味着每个 token 都被路由到具有不同权重集的两个 SwiGLU 子块。将所有这些放在一起,输入 token x 的输出 y 计算如下:

实验及结果

研究者将 Mixtral 与 Llama 进行了比较,并使用自己的评估 pipeline 重新运行了所有基准,以进行公平比较。该研究对以下各种任务的性能进行了测量:常识推理、世界知识、阅读理解、数学、代码等。具体任务详情见原论文.

表 2 列出了 Mixtral、Mistral 7B 和 Llama 2 7B/13B/70B 以及 Llama 1 34B 的详细结果。

图 2 比较了 Mixtral 和 Llama 在不同类别任务中的性能。在大多数指标上,Mixtral 都超过了 Llama 2 70B。特别是在代码和数学基准测试中,Mixtral 的表现更胜一筹。

研究者将 Mixtral 与 Llama 2 系列进行了比较。如图 3 所示,作为一个稀疏专家混合模型,Mixtral 每个 token 仅使用 13B 个激活参数。尽管激活参数减少了 5 倍,Mixtral 在大多数类别中仍然能够胜过 70 亿参数的 Llama 2。

多语言基准测试
与 Mistral 7B 相比,研究者在预训练时大幅提高了多语言数据的采样比例。额外的容量使 Mixtral 在多语言基准测试中表现出色,同时保持了较高的英语准确率。如表 4 所示,Mixtral 在法语、德语、西班牙语和意大利语方面的表现明显优于 Llama 2 70B。

长距离性能
图 4(左)结果表明,无论上下文长度或 passkey 在序列中的位置如何,Mixtral 的检索准确率都达到了 100%。图 4(右)显示,随着上下文大小的增加,Mixtral 在 proof-pile 数据集的一个子集上的困惑度单调降低。

图片

偏见基准测试
研究者使用他们自己的评估框架对 Llama 2 和 Mixtral 在 BBQ 和 BOLD 上进行基准测试,结果如表 5 所示。与 Llama 2 相比,Mixtral 在 BBQ 基准测试中展现出较少的偏见。在 BOLD 的中,更高的平均情感得分意味着更积极的情感,而更低的标准差表示该群组内的偏见较少。总体而言,Mixtral 比 Llama 2 显示出更积极的情感,并且各组内的差异类似。

图片

路由分析
研究者对路由器选择专家的情况进行了少量分析,他们尤其想知道在训练过程中,一些专家是否专攻某些特定领域,如数学、生物学、哲学等。
为了研究这一点,研究者测量了在 The Pile 验证数据集的不同子集中所选专家的分布情况。图 7 展示了第 0 层、第 15 层和第 31 层的结果。

图片

令人惊讶的是,研究者在根据主题分配专家时没有观察到明显的模式。例如,在所有层中,ArXiv 论文(用 Latex 编写)、生物学(PubMed Abstracts)和哲学(PhilPapers)文档的专家分配分布非常相似。只有在 DM 数学中,专家的分布略有不同。
这表明路由器表现出一些结构化的语法行为。
图 8 显示了不同领域(Python 代码、数学和英语)的文本示例,其中每个 token 都用与其所选专家相对应的背景色突出显示。从图 8 中可以看到,连续的 token 往往被分配给相同的专家。
每个 token 都用第一个专家选择着色。专家的选择似乎更符合语法而不是领域,特别是在初始层和最后层。

图片

表 5 显示了每个领域和层中连续 token 获得相同专家分配的比例。对于较高的层,重复连续分配的比例明显高于随机分配。

图片

多模态大模型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 中克服这些挑战,并继续推动开源多模态模型的发展。

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。

方法

虽然说SoundStream和Encodec这样的基于RVQ-VAE的压缩建模方法包含了语音的声学特征,但其中也不可避免地带入了语义特征。二者提取的实际上更像是一种语义特征和声学特征的混合体。基于此,SpeechTokenizer在二者的基础上,引入了语义引导信息来解耦语义特征和声学特征。语义特征和声学特征的解耦对于最终的语音合成有着相当的重要性。SpeechTokenizer的具体做法是:使用HuBERT的特征对RVQ1的特征做语义蒸馏,其余部分保留声学信息。

基于此,我们想统一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),模型结构如下图

在SpeechTokenizer上构建一个统一的语音语言模型。它由自回归模型和非自回归模型组成,可以对语音信息进行分层建模。自回归(AR)模型通过对来自第一RVQ量化器的令牌进行建模来捕获内容信息。非自回归(NAR)模型通过从以第一层令牌为条件的后续量化器生成令牌来补充AR模型的语言信息。我们在零拍TTS任务上验证了统一语音语言模型的有效性。

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

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

在推理过程中,我们将文本输入转换为音素序列,将语音提示转换为语音标记。它们连接在一起形成AR和NAR模型的提示。在此基础上,AR模型生成第一级令牌,而NAR模型迭代地生成后续级别的令牌。由AR和NAR模型生成的令牌然后被连接以构造语音令牌矩阵。最后,我们使用SpeechTokenizer解码器来生成以完整令牌矩阵为条件的波形。

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代码来表示声学令牌语义标记实现了与文本的高互信息,但其重新合成的语音具有低说话人相似性。声学标记实现低WER和高说话人相似度的再合成语音,但与文本的互信息低。

SpeechTokenizer

模型结构

我们的模型基于 RVQ-GAN 框架,遵循与 SoundStream和 EnCodec相同的模式。如图 2 所示,模型使用了 EnCodec 中基于卷积的编码器-解码器网络,通过选择的步长因子进行时间下采样。值得注意的是,我们将 EnCodec 编码器中卷积模块后原本使用的两层 LSTM 替换为两层 BiLSTM,以增强语义建模能力。我们在附录 B 中进行了模型结构的消融研究。我们使用残差矢量量化(RVQ)对编码器输出进行量化,这种方法可以在初始量化步骤后使用不同的码书对残差进行量化。模型结构的进一步细节可参见附录 D。在训练期间,一个语义教师为残差量化过程提供语义表示指导。

语义提炼

为了实现跨不同RVQ层的不同信息的分层建模,我们采用语义指导的第一个量化器,使其能够捕获内容信息。利用残差结构使得后续量化器能够补充剩余的非语言信息。

我们采用HuBERT(Hsu 等人,2021)作为我们在这项研究中的语义老师,因为HuBERT被证明包含大量的内容信息(Mohamed 等人,2022年)。我们介绍了两种类型的蒸馏:连续表示蒸馏和伪标签预测。

对于连续表示蒸馏,我们采用第9层HuBERT表示或所有HuBERT层的平均表示作为语义教师。训练目标是最大化RVQ第一层和语义教师表示的输出之间的所有时间步长在维度级别上的余弦相似性。形式上,连续蒸馏损失定义为:

其中 𝐐1 和 𝐒 分别表示RVQ第一层和语义教师表示的量化输出。 𝐀 表示投影矩阵, D 是语义教师表征的维度。上标 (:,d) 表示包括来自维度 d 处的所有时间步的值的向量。 cos⁡(⋅) 表示余弦相似性, σ⁢(⋅) 表示S形激活。这种连续蒸馏损失函数偏离了常用的方法,该方法基于学生和教师模型在同一时间步输出的表示来计算损失。附录C对这两种方法进行了比较分析。

对于伪标签预测,我们采用HuBERT单元作为目标标签。培训目标如下:

其中 𝐪1t 和 𝐮t 分别表示第一VQ层和HuBERT单元在时间步t的量化输出。 T 表示时间步长的数量, 𝐀 是投影矩阵。

Training Objective

我们的训练方法包括重建任务和语义蒸馏任务。在重建任务中,我们采用了GAN目标,优化了重建项,判别损失项和RVQ承诺损失的组合。在语义蒸馏任务中,训练目标涉及语义蒸馏损失项。在下文中, 𝐱 表示语音信号,并且 𝐱^ 表示通过网络重构的信号.

重建损失重建损失包括时域和频域损失。鉴别损失我们使用与HiFi-CodecYang等人(2023)相同的鉴别器,其中包括三个鉴别器:基于多尺度STFT(MS-STFT)的鉴别器;多周期鉴别器(MPD)和多尺度鉴别器(MSD)。鉴别器的更多详细信息可参见附录D。对抗性损失用于提高感知质量,并且它被定义为在多个鉴别器上和在时间上平均的在多个鉴别器的logits上的铰链损失。RVQ Commitment Loss 我们在预量化值和其量化值之间添加承诺损失 ℒw ,而不为量化值计算梯度。RVQ承诺损失被定义为: ℒw=∑i=1Nq∥𝐳i−𝐳qi∥22. ,其中 𝐳i 和 𝐳qi 分别表示对应码本中的当前残差和最近条目。

通常,生成器被训练以优化以下损失:

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:多模态多智能体系统的人机交互仿真

SpeechAlign:  
Aligning Speech Generation to Human Preferences
SpeechAlign: 使语音生成与人类偏好保持一致

paper:

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

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

SpeechGPT

SpeechGPT做的是兼具语音理解能力和语音生成能力的多模态模型。在模型的训练上,SpeechGPT大幅度向LLM看齐,使用了三段式的训练方法:第一阶段先做模态适应的预训练,其实就是拿ASR的语音数据来做预训练;第二阶段和第三阶段都是指令微调,不过根据指令模态的不同,细分为了跨模态的指令微调和模态链指令微调。指令微调的数据集都是来自ASR数据集。描述任务需求的指令由GPT-4生成。

在我看来,这个工作还是相当偏学术化的作品,文中有不少点都有值得商榷的地方:第一,语音的离散化仅仅用了HuBERT,模型只能看到语音的语义特征,这对模型合成语音的音质和表现力有非常大的影响,demo的语音也验证了我的判断;第二,指令微调数据集的构造上有问题。他们用的是ASR数据集,其实更好的选择应该是TTS数据集,可惜高质量的TTS数据集实在是太少了。ASR数据集中的文本和语音可能并不是严格对齐的,GPT-4产生的meta-prompt和语音本身的特征也有可能是对不上的,比如prompt要求大声朗读,但语音本身可能是特定低沉的。meta-prompt本身就无法做到足够复杂丰富,不能描述到语音的一些细粒度信息。

这一部分,最好要有像诸如SALMONN这样的多模态语音理解模型的介入,像DALLE3一样丰富指令的多样性。至于语音方面,可以考虑引入zero-shot的语音合成模型或者变声模型来做合成数据。第三,文中的训练方法也没有与人类偏好做对齐。

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

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-Gen中做了解决。解决思路的核心点就是:让模型不仅看到语音的语义token,也要看到语音的声学token。具体做法是:SpeechGPT的HuBERT特征替换成了SpeechTokenizer中的语义特征,用SpeechGPT这一LLM来自回归地建模语义特征,有了语义特征之后,再使用Flow-Matching这样的扩散模型来建模声学特征。这里选用Flow-Matching扩散模型,可能是受了SD3和Voicebox/Audiobox的影响。为了增强两阶段建模的依赖关系,作者将语义特征的先验信息注入到第二阶段扩散模型的先验分布中。可以看到,这里语音的解码其实也是一种层次化渐进式解码。

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 。 我们提出了两种感知建模的流匹配模式:显式链和隐式链

SpeechAlign :使语音生成与人类偏好保持一致

SpeechAlign做的则是SLM与人类偏好的对齐,彻底地向LLM的训练方法看齐。该工作构建了对比gold token和合成token的encodec数据集,然后进行偏好优化来进行改进。使用的偏好优化方法包括RLHF和Chain of Hindsight。

本文首先分析编解码器语言模型中的分布差距,强调它如何导致训练阶段和推理阶段之间的差异,从而对性能产生负面影响,从而解决这一差距。然后,我们探索利用从人类反馈中学到的知识来弥合分布差距。我们介绍了 SpeechAlign,这是一种迭代式自我改进策略,可将语音语言模型与人类偏好保持一致。SpeechAlign 涉及构建一个偏好编解码器数据集,将黄金编解码器令牌与合成令牌进行对比,然后进行首选项优化以改进编解码器语言模型。这个改进周期是迭代进行的,以稳步将弱模型转换为强模型。通过主观和客观评估,我们表明 SpeechAlign 可以弥合分布差距并促进语音语言模型的持续自我改进。此外,SpeechAlign 具有强大的泛化功能,适用于较小的模型。

大模型基本概念

什么是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 模型通过低精度量化技术减小了内存占用和计算复杂度,适合资源受限环境。