OpenMusic:音乐生成更高质量,更有乐感

中科大&科大讯飞重磅开源OpenMusic

文章链接:https://arxiv.org/pdf/2405.15863
代码链接:https://github.com/ivcylc/qa-mdt
Huggingface链接:https://huggingface.co/spaces/jadechoghari/OpenMusic
Demo链接:https://qa-mdt.github.io/  (chatgpt * 30, musiccaps * 30)

  • 提出了一种质量感知训练范式,使模型在训练过程中能够感知数据集的质量,从而在音乐性(美学角度)和音频质量方面实现卓越的音乐生成效果。
  • 创新性地将masked扩散Transformer引入到音乐信号中,展示了其在建模音乐潜在空间上的独特效果,以及其在质量控制感知方面的卓越能力,从而进一步提升了生成音乐的质量和音乐性。
  • 解决了大型音乐数据集中文本与音频低相关性的问题,有效提高了文本对齐度和生成的多样性。

背景

近年来,基于扩散的文本到音乐(TTM)生成方法逐渐受到重视,提供了一种创新的方法,将文本描述合成音乐内容。要在这一生成过程中实现高准确性和多样性,必须依赖大量高质量的数据,包括高保真音频波形和详细的文本描述,但这些通常仅占现有数据集中的一小部分。在开源数据集中,低质量音乐波形、标签错误、弱标签和无标签数据等问题显著阻碍了音乐生成模型的发展。为了解决这些挑战,今天和大家分享一种全新的高质量音乐生成范式,该范式结合了质量感知训练策略,使生成模型能够在训练过程中辨别输入音乐波形的质量。利用音乐信号的独特特性,首先针对TTM任务调整并实现了一个掩码扩散Transformer(MDT)模型,展现出其在质量控制和音乐性增强方面的独特能力。此外,还通过字幕优化数据处理方法解决了TTM中低质量字幕的问题。实验结果表明,在MusicCaps和Song-Describer数据集上取得了当前最先进的(SOTA)性能。

当前音乐生成(音效生成)领域的问题为质量低,具体来说分为三个方面:

  • 大部分的开源数据集音质低(FMA,AudioSet,MSD),旋律杂乱
  • 音乐性(美学角度)差
  • 文本对齐度低,大多数的音频处于少标签,弱标签,错标签。其中, 第1点可以由下图蓝色分布CLAP分数表征,2,3点可以由数据集的平均MOS分布表征(颜色由 μ +α * σ 分割)
图 1:大规模开源音乐数据库 AudioSet 和 FMA 的 CLAP 相似性和伪 MOS 的分布曲线,其中较暗的区域代表较高的文本音频对齐或音频质量。

创新方法及思路

质量信息注入

解决: 引入质量感知训练策略。采用主观数据集中的MOS分训练出的质量评分模型,在训练过程中注入(伪MOS分)音频质量信息。

两种注入方法:

  • 利用 text encoder 对分级后的 low quality, medium quality, high quality 质量文本进行cross attn嵌入 【粗粒度,适配unet架构和transformer类架构】
  • 参考U-ViT内 时间信息和label信息的融入方式,以量化(阈值由 决定)后转换为quality embedding, 以token 形式进行控制注入,【细粒度,并且只适配transformer类架构】

结论:质量感知策略允许了在推理阶段以高质量文本和质量token进行引导,从而生成显著高于训练集平均质量的音频。

以类似解耦的方式在训练中感知音频的质量(类似TTS中分离出音色训练),从而更好地促进了模型的训练(大幅降低FAD,KL,并提升IS,REL,CLAP等指标)

我们还发现,粗粒度文本控制和细粒度token控制相结合,更有助于模型训练中解耦,感知,并控制更高质量音频的生成,从而解决训练数据集影响的问题

质量感知型 masked扩散Transformer

解决:从音乐性建模角度,我们发现 U-ViT/DiT 类架构对频谱隐空间建模也具有图像上表达的scale ability,并能更好建模谐波,音色等方面(反应在主观评分)

优化

  • 对频谱切片而言,此类结构的收敛速度慢。消融数据集中,20w步时依然不能很好控制收敛,推测来源于时域/频域相关性弱。故在预训练阶段加入掩码,加速训练速度和频谱关联性。微调阶段以高质量数据进一步强化模型(5W步就有收敛迹象)。
  • 相比于U-Net,transformer based架构对text encoder的质量信息感知能力增强,并且U-ViT 式 token 质量融入策略显著有效进一步提升质量并降低客观指标
  • 图像中切块未考虑 overlap,探究了overlap策略在合成中的作用(大幅降低FAD,但在主观听感上有trade off)

优化音乐标注描述

解决:首次在音乐生成领域使用预训练标注模型(LP-Musiccaps)进行大规模标注优化

  • 考虑到标注模型的不充分训练导致错标,以CLAP文本-音频分数+阈值筛选低分数据
  • 考虑到原始标注中有些词(例如说American,R&B等标注器不一定能标注出的词)。使用CLAP分数过滤出生成的与原始的文本相似度低低数据,利用语言模型 融合原始标注中有用信息

实验

总体对比与,对比U-net架构和transformer based架构

对比overlap策略和patch size:

质量感知消融

此图证明了相比于无质量感知,大幅提升了生成质量和客观指标。并且,MDT(我们的架构)比 U-Net 在文本质量控制感知上的独特优势(生成质量更高,总体客观指标更好)

左图展示了 token as control 的准确感知控制生成能力,生成的高质量数据(黄色区域)显著高于训练集MOS分。

右图展示了文本质量控制和token质量控制的结合效果与单纯token和文本控制的对比。

主观评测结果

  • PO:产品运营
  • PMP:专业音乐制作人
  • VE:视频编辑人
  • BEGINNERS:不懂音乐的小白

各个人的评分下,均有优势。

结论与展望

本研究识别出大规模音频质量不均和文本标注未对齐所带来的挑战,这些挑战阻碍了基于扩散的文本到音乐(TTM)生成的发展。通过采用基于p-MOS的新型质量感知学习方法,以及以masked扩散Transformer作为扩散过程的主干,在音乐生成中实现了更高的生成质量和音乐性。

基于MEL谱+VAE的latents的TTS相关工作

Zero-Shot TTS目前有不少工作用了MEL谱作为中间特征,然后在梅尔谱的基础上,或是用VQ提供离散token,或是用CNN来提取连续latent。对于MEL+latents的工作,有:AudioLDM 1&2、StyleTTS 1&2。我们来简单看看是它们是怎么做的。

AudioLDM 1&2

AudioLDM: Text-to-Audio Generation with Latent Diffusion Models

[Paper on ArXiv][Code on GitHub][Hugging Face Space]

AudioLDM 2: Learning Holistic Audio Generation with Self-supervised Pretraining

[Paper on ArXiv][Code on GitHub][HuggingFace Demo][Discord Community]

AudioLDM 1&2使用的语音latents是一致的,均通过MEL+VAE获得。既然是连续的latents,使用扩散模型来建模也合情合理。解码过程也相当简单:VAE decoder获得梅尔谱,然后用声码器转换为音频波形。该系列工作的核心创新点是利用多模态模型统一了扩散模型条件输入侧的信息:AudioLDM 1用CLAP统一了文本模态和音频模态,用单模态的音频数据就能完成模型的训练;AudioLDM 2则包含了图像、文本、转录文本等更多模态,模型泛用性也更强,既能做语音合成,也能做音乐生成、音频事件生成。

StyleTTS 1&2

StyleTTS: A Style-Based Generative Model for Natural and Diverse Text-to-Speech Synthesis

StyleTTS 2: Towards Human-Level Text-to-Speech through Style Diffusion and Adversarial Training with Large Speech Language Models

StyleTTS系列的模型一众zero-shot TTS模型显得比较老派,整体结构基本上沿袭了非自回归的FastSpeech 2,不同之处在于增加了基于参考音频抽取的风格信息。说是风格,其实跟megatts的音色很像。StyleTTS 2的工作则将风格进一步拆分成声学风格和韵律风格。训练时的风格信息由音频提供,推断时的风格信息则由扩散模型提供。StyleTTS 2通过一个扩散模型桥接了文本韵律和语音风格之间的联系,摆脱推断时对参考音频的依赖。不用参考音频其实对产品的意义还挺大的,要都用现实世界中真人尤其是名人的声音作为参考音频,那这势必会引起版权纠纷。这种纠纷在国内国外都有相关的事件。最近寡姐投诉OpenAI的事件就是一例。

在 StyleTTS 中,我们提出了“全局风格迁移”(GST),这是一个在Tacotron(最先进的端到端语音合成系统)中联合训练的嵌入库。嵌入在没有明确标签的情况下进行训练,但学会了对大范围的声学表现力进行建模。商品及服务税会带来一系列丰富的重要结果。它们生成的软可解释“标签”可用于以新颖的方式控制合成,例如改变速度和说话风格 – 独立于文本内容。它们还可用于风格转换,在整个长格式文本语料库中复制单个音频剪辑的说话风格。当对嘈杂的、未标记的发现数据进行训练时,GST 学会分解噪声和说话人身份,为高度可扩展但强大的语音合成提供了一条途径。

StyleTTS 2的不同之处在于,通过扩散模型将风格建模为潜在随机变量,以生成最适合文本的风格,而无需参考语音,实现高效的潜在扩散,同时受益于扩散模型提供的多样化语音合成。 此外采用大型预训练SLM(如WavLM)作为鉴别器,并使用新颖的可微分持续时间建模进行端到端训练,从而提高了语音自然度。

TTS+指令prompt的遵循 系列工作

SLM(speech language model, SLM)不仅要合成合乎上下文语义的高表现力语音,合成的语音还要符合用户的即时要求。一些text-guided zero-shot TTS的工作值得参考。这些工作一般都是在已有的zero-shot TTS模型或者text-to-audio模型上改造而来,同时吸收transcription和description两路条件。其中的重点还是在于数据集的构建。这方面的工作有:PromptTTS、InstructTTS、ParlerTTS、VoiceLDM和Audiobox。

TTS模型同样可以遵循文本指令或者语音指令,合成符合用户即时要求的语音,摆脱对参考音频的依赖。text-guided zero-shot TTS在模型架构上和zero-shot TTS有非常大的相似性,但训练数据可能较为缺乏。因此,先开发zero-shot TTS,再用类似SALMONN 或者 Qwen2-audio那样的多模态理解模型来打标签(类似DALLE3的做法),这样数据集构造方式,可能会是更好的选择

ParlerTTS

 Natural language guidance of high-fidelity text-to-speech with synthetic annotations

训练代码开源:https://github.com/huggingface/parler-tts

ParlerTTS。VALL-E/VoiceCraft的增强版,通过T5编码器和cross-attention旁路引入了描述性文本的信息。该工作的目的是想使用自然语言prompt来指定说话风格和环境信息,摆脱对参考音频的依赖。描述性标签文本的收集过程也显得相当朴素:通过定制化的监督式模型获取语音数据的口音特征、录音质量特征、音高语速特征。然后用LLM将这些特征转换为自然语言的描述。在我看来,这个工作有这么几点局限性吧:其一,缺乏情绪标签;其二,语音描述性标签的收集并不具备通用性,较为繁琐,远不如一个强大的多模态语音理解模型来得实在。文章demo虽然达到了预期的效果,但场景似乎局限在朗读的情景中。

VoiceLDM

VoiceLDM: Text-to-Speech with Environmental Context

VoiceLDM。在VoiceLDM1的基础上增加了转录文本的输入。这个工作和AudioLDM 1很像,同样使用CLAP注入语音的描述性信息。不同地是,为了做TTS任务,该工作通过cross-attention旁路增加了transcription的信息。

QWen-Audio语音大模型

https://github.com/QwenLM/Qwen-Audio

Qwen-Audio:通过统一的大规模音频语言模型推进通用音频理解

Qwen-Audio 🤖 🤗  | Qwen-Audio-Chat 🤖 🤗  |    Demo 🤖 | 🤗

  Homepage  |   Paper   |    WeChat   |   Discord

本文提出了Qwen-Audio模型,旨在通过扩大音频语言预训练的范围,覆盖超过30个任务和多种音频类型,如人声、自然声音、音乐和歌曲,从而促进通用音频理解能力的提升。然而,直接联合训练所有任务和数据集可能导致干扰问题,因为不同数据集相关的文本标签由于任务焦点、语言、标注的细粒度和文本结构的差异而存在显著变化。为了解决一对多的干扰问题,我们精心设计了一个多任务训练框架,通过对解码器的分层标签序列进行条件化,促进知识共享并通过共享和特定标签分别避免干扰。值得注意的是,Qwen-Audio在多种基准任务中实现了卓越的性能,而无需任何任务特定的微调,超越了同类模型。在Qwen-Audio的基础上,我们进一步开发了Qwen-Audio-Chat,允许多种音频和文本输入,实现多轮对话并支持多种以音频为中心的场景。

Qwen-Audio 可以以多种音频 (包括说话人语音、自然音、音乐、歌声)和文本作为输入,并以文本作为输出。Qwen-Audio 系列模型的特点包括:

  • 音频基石模型:Qwen-Audio是一个性能卓越的通用的音频理解模型,支持各种任务、语言和音频类型。在Qwen-Audio的基础上,我们通过指令微调开发了Qwen-Audio-Chat,支持多轮、多语言对话。Qwen-Audio和Qwen-Audio-Chat模型均已开源。
  • 兼容多种复杂音频的多任务学习框架:为了避免由于数据收集来源不同以及任务类型不同,带来的音频到文本的一对多的干扰问题,我们提出了一种多任务训练框架,实现相似任务的知识共享,并尽可能减少不同任务之间的干扰。通过提出的框架,Qwen-Audio可以容纳训练超过30多种不同的音频任务;
  • 出色的性能:Qwen-Audio在不需要任何任务特定的微调的情况下,在各种基准任务上取得了领先的结果。具体得,Qwen-Audio在Aishell1、cochlscene、ClothoAQA和VocalSound的测试集上都达到了SOTA;
  • 支持多轮音频和文本对话,支持各种语音场景:Qwen-Audio-Chat支持声音理解和推理、音乐欣赏、多音频分析、多轮音频-文本交错对话以及外部语音工具的使用。
图3
图 1:Qwen-Audio 和多任务音频文本学习模型之前的顶级性能,例如 SpeechT5、SpeechNet、SpeechLLaMA、SALMONN和 Pengi。我们展示了 12 个数据集的测试集结果,包括自动语音识别 (ASR)、语音到文本翻译 (S2TT)、自动音频字幕 (AAC)、声学场景分类 (ASC)、语音情感识别 (SER)、音频问答 (AQA)、声音分类 (VSC) 和音符分析 (MNA)。ASR 数据集(例如 Librispeech、Aishell1 和 Aishell2)的结果引用 1 – WER%。CoVoST2 的结果是七个翻译方向(en-de、de-en、en-zh、zh-en、es-en、fr-en 和 it-en)的平均 BLEU 分数。Qwen-Audio 无需任何特定于任务的微调即可实现卓越的性能,超越了同类产品。

Methodology 

本节提供了Qwen-Audio和Qwen-Audio-Chat的详细信息,这些模型旨在实现通用音频理解和基于人类指令的灵活互动。首先,在第1节中介绍了Qwen-Audio和Qwen-Audio-Chat的模型结构。我们的模型训练过程分为两个阶段:多任务预训练监督微调。我们在第2节中描述了通过多任务学习进行的Qwen-Audio训练。随后,在第3节中描述了Qwen-Audio-Chat的监督微调过程,使其能够实现灵活的人机互动。

模型架构

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

Audio Encoder 音频编码器

音频编码器Qwen-Audio采用单一音频编码器处理多种类型的音频。该音频编码器基于Whisper-large-v2模型初始化,该模型为32层Transformer结构,包含两个卷积下采样层作为前端。音频编码器由640M参数构成。尽管Whisper是针对语音识别和翻译进行监督训练的,其编码表示仍然包含丰富的信息,如背景噪声,甚至可以用于恢复原始语音。在音频数据预处理过程中,Whisper将其重采样至16kHz,并使用25ms的窗口大小和10ms的步长将原始波形转换为80通道梅尔谱图。此外,模型还包含一个步幅为2的池化层,以减少音频表示的长度。因此,编码器输出的每一帧大约对应于原始音频信号的40ms片段。在训练时,采用SpecAugment作为数据增强技术。

大型语言模型Qwen-Audio将大型语言模型作为其基础组件。该模型使用从Qwen-7B中获得的预训练权重进行初始化。Qwen-7B是一个32层的Transformer解码器模型,隐藏层大小为4096,总参数量为7.7B。

多任务预训练

在音频处理领域,已开发出多样化的音频数据集以应对特定任务,如表1所示。Qwen-Audio旨在利用广泛的音频数据集进行联合训练,目标是训练一个统一的模型,能够支持所有音频任务,从而消除在处理不同任务时繁琐的模型切换需求。更重要的是,在联合训练过程中,各任务可以相互受益,原因在于:1)相似任务能够通过知识共享和协同学习而获益,因为它们关注音频信号中嵌入的基本信息;2)依赖于低层次感知能力的任务可以帮助需要高层次理解或推理能力的任务。

然而,由于任务聚焦、语言、标注的细粒度和文本结构等方面的差异,不同数据集在文本标签上存在显著变化(例如,有些数据是结构化的,而其他数据则是非结构化的)为了训练适用于不同任务的网络,仅仅混合这些多样化的数据集无法实现相互增强;相反,它会引入干扰。目前大多数现有的多任务训练方法要么将相似任务分组(例如,音频描述、转录),要么为每个数据集分配一个数据集ID,以避免干扰。尽管这些方法取得了一定效果,但仍有很大的改进空间。Whisper提出了一种多任务训练格式,通过将任务和条件信息作为输入特定令牌的序列传递给语言解码器,如语音活动检测、语言识别和句子级时间戳标签。然而,Whisper主要集中于语音翻译和识别任务。

多任务训练格式框架

受到Whisper的启发,为了融合不同类型的音频,我们提出了一种多任务训练格式框架,具体如下:

  • 转录标签:预测的启动由转录标签表示。使用<|startoftranscripts|>来指示涉及准确转录口语和捕捉语音录音语言内容的任务,如语音识别和语音翻译任务。对于其他任务,则使用<|startofanalysis|>标签。
  • 音频语言标签:然后,我们引入一个语言标签,指示音频中所说的语言。该标签使用分配给训练集中每种语言的唯一令牌,共计八种语言。当音频片段不包含任何语音(例如自然声音和音乐)时,模型训练预测<|unknown|>令牌。
  • 任务标签:后续令牌指定任务。我们将收集的音频任务分为五类:<|transcribe|>、<|translate|>、<|caption|>、<|analysis|>和<|question-answer|>任务。对于问答(QA)任务,我们在标签后附加相应的问题。
  • 文本语言标签标签令牌指定输出文本序列的语言。
  • 时间戳标签:<|timestamps|>或<|notimestamps|>令牌的存在决定模型是否需要预测时间戳。与Whisper使用的句子级时间戳不同,包含<|timestamps|>标签要求模型进行细粒度的单词级时间戳预测,简称为SRWT(具有单词级时间戳的语音识别)。这些时间戳的预测与转录单词交错进行:开始时间令牌在每个转录令牌之前预测,而结束时间令牌在之后预测。根据我们的实验,SRWT提高了模型将音频信号与时间戳对齐的能力。这种改进的对齐有助于模型对语音信号的全面理解,从而在语音识别和音频问答任务等多个任务中取得显著进展。
  • 输出指令最后,我们提供输出指令,以进一步指定任务和不同子任务所需的格式,然后开始文本输出。

我们框架的指导原则是通过共享标签最大限度地提高相似任务之间的知识共享,从而提升它们的性能。同时,我们确保不同任务和输出格式可以区分,以避免模型的一对多映射问题。有关Qwen-Audio多任务格式的概述,请参见图3。

监督微调

多任务模型的广泛预训练赋予了它们对音频的广泛理解。在此基础上,我们采用基于指令的微调技术,以提高模型与人类意图的对齐能力,从而形成一个交互式聊天模型,称为Qwen-Audio-Chat。为实现这一目标,我们手动创建每个任务的示例。这些示例包括原始文本标签、问题和答案。随后,我们利用GPT-3.5基于提供的原始文本标签生成更多的问题和答案。此外,我们还通过手动标注、模型生成和策略串联创建了一套音频对话数据集。该数据集帮助我们将推理、故事生成和多图像理解能力融入模型中。

为了有效处理多音频对话和多个音频输入,我们引入了用“Audio id:”标记不同音频的约定,其中id对应于音频输入对话的顺序。在对话格式方面,我们使用ChatML(OpenAI)格式构建指令调优数据集。在这种格式中,每个交互的声明用两个特殊令牌(<im_start>和<im_end>)进行标记,以便于对话结束。

为了促进在多轮对话中来自音频和纯文本模态的多样化输入,我们在此训练过程中结合使用上述以音频为中心的指令数据和纯文本指令数据。这种方法使模型能够无缝处理多种输入形式。指令调优数据的总量为20k。

Experiments

设置

多任务预训练阶段,我们冻结大型语言模型(LLM)的权重,仅优化音频编码器。该训练模型被称为Qwen-Audio。在随后的监督微调阶段,我们固定音频编码器的权重,仅优化LLM。最终模型被标记为Qwen-Audio-Chat。两个阶段的详细训练配置列在表6中。

评估

为了评估Qwen-Audio的通用理解能力,如表2所示,我们进行了全面的评估,涵盖多种任务,包括自动语音识别(ASR)、语音转文本翻译(S2TT)、自动音频描述(AAC)、声学场景分类(ASC)、语音情感识别(SER)、音频问答(AQA)、声乐声音分类(VSC)和音乐音符分析(MNA)。此次评估涉及12个数据集。评估数据集严格排除在训练数据之外,以避免数据泄露。两个阶段的详细训练配置列在表6中。

主要结果

在本节中,我们对Qwen-Audio模型进行了全面评估,评估其在各种任务上的表现,而无需任何任务特定的微调。首先,我们检查其在英语自动语音识别(ASR)方面的结果,如表3所示,Qwen-Audio的表现优于以往的多任务学习模型。具体而言,它在librispeech的test-clean和test-other数据集上分别取得了2.0%和4.2%的词错误率(WER)。同样,中文普通话的ASR结果显示Qwen-Audio在与之前方法的对比中表现出竞争力。根据我们所知,Qwen-Audio在Aishell1的开发集和测试集上达到了最新的研究成果。此外,我们还评估了Qwen-Audio在CoVoST2数据集上的语音翻译性能。结果显示,Qwen-Audio在所有七个翻译方向上均显著超越基线模型。

最后,我们分析了Qwen-Audio在各种音频分析任务上的表现,包括AAC、SWRT、ASC、SER、AQA、VSC和MNA,结果汇总在表3中。在这些任务中,Qwen-Audio始终显著优于基线模型。特别地,它在CochlScene、ClothoAQA和VocalSound上取得了最新的研究成果,展示了模型强大的音频理解能力。

表3:自动语音识别(ASR)、语音转文本翻译(S2TT)、自动音频描述(AAC)、带有词级时间戳的语音识别(SRWT)、声学场景分类(ASC)、语音情感识别(SER)、音频问答(AQA)、声乐声音分类(VSC)和音乐音符分析(MNA)任务的结果。在SRWT任务中,Forced-aligner(McAuliffe等,2017)的结果是基于真实转录文本预测时间戳,而Paraformer-large-TP(Gao等,2023)和Qwen-Audio则在更具挑战性的场景中,通过直接生成包含转录文本和时间戳的序列来应对。

互动聊天结果

我们通过图2中的示例案例展示了Qwen-Audio-Chat的对话能力。此外,我们计划向公众开放训练好的模型,以便进行在线聊天互动。

词级时间戳预测分析

我们通过训练Qwen-Audio提出了带有词级时间戳的语音识别任务(SRWT),旨在不仅识别语音转录,还预测每个单词的时间戳。SRWT的目的有两个:首先,改善模型将音频信号与细粒度时间戳对齐的能力;其次,支持Qwen-Audio-Chat中的语音和音频的基础对接,以及基于对接的问答任务,例如找到提到某人姓名的音频片段的开始和结束时间,或识别给定音频中是否出现某种声音。

在本节中,我们在多任务预训练中排除了SRWT任务的训练,同时保持其他任务不变。值得注意的是,去除SRWT并不影响训练的音频数据集的覆盖范围,因为SRWT任务与自动语音识别(ASR)任务共享相同的音频数据集。结果如表4和表5所示,训练中包含SRWT的模型在自动语音识别和音频问答任务中表现优越,包括自然声音问答和音乐问答。这些结果突显了将细粒度词级时间戳纳入模型以增强通用音频信号对接能力,并进而提高声音和音乐信号问答任务性能的有效性。

结论

在本文中,我们提出了Qwen-Audio系列,这是一个具备通用音频理解能力的大规模音频语言模型集合。为了融合不同类型的音频进行共同训练,我们提出了一个统一的多任务学习框架,该框架促进了相似任务之间的知识共享,并避免了由于不同文本格式引起的一对多映射问题。在没有任何任务特定微调的情况下,所得到的Qwen-Audio模型在各种基准测试中超越了以往的工作,证明了其通用音频理解能力。通过监督指令微调,Qwen-Audio-Chat展示了与人类意图对齐的强大能力,支持来自音频和文本输入的多语言和多轮对话。

SALMONN-语音大模型

code:https://github.com/bytedance/SALMONN/

paper:https://arxiv.org/abs/2310.13289

SALMONN 是一个大型语言模型 (LLM),支持语音、音频事件和音乐输入,由清华大学电子工程系和字节跳动开发。SALMONN 可以感知和理解各种音频输入,从而获得多语言语音识别和翻译、音频语音共推理等新兴能力,而不是纯语音输入或音频事件输入。这可以被视为赋予 LLM “耳朵”和认知听力能力,这使得 SALMONN 向具有听力的通用人工智能迈出了一步。

SALMONN 的模型架构如下所示。窗口级 Q-Former 用作连接模块,将 Whisper 语音编码器和 BEATs 音频编码器的输出融合为增强音频令牌,这些令牌与 LLM 输入空间对齐。LoRA 适配器将增强的 LLM 输入空间与其输出空间对齐。文本提示用于指示 SALMONN 回答有关一般音频输入的开放式问题,答案位于 LLM 文本响应中。

相较于语音识别、音频字幕等传统语音和音频处理任务,SALMONN 利用 LLM来实现认知导向的音频感知,极大地提高了模型的通用性和任务的丰富性。此外,SALMONN 能够以相对较高的准确性遵循文本命令甚至语音命令。由于 SALMONN 只使用基于文本命令的训练数据,因此聆听语音命令也是一种跨模态新兴能力。

为了解决由于在预训练和微调阶段出现的任务过拟合问题,即LLM局限于在指令微调中使用的特定任务,而对于没有出现的任务能力很差,而提出了一个额外的少量样本激活微调阶段,以使SALMONN重新获得LLM的突现能力。

Introduction

在本文中,我们提出了一种语音音频语言音乐开放神经网络(SALMONN),它是一种单一音频-文本多模态大语言模型(LLM),能够感知和理解三种基本类型的声音,包括语音、音频事件和音乐。为了增强在语音和非语音音频任务上的表现,SALMONN采用了双编码器结构,其中包括来自Whisper语音模型的语音编码器(Radford等,2023)和BEATs音频编码器(Chen等,2023c)。使用窗口级查询Transformer(Q-Former)(Li等,2023a)作为连接模块,将可变长度的编码器输出序列转换为可变数量的增强音频token,以输入到Vicuna LLM(Chiang等,2023),并能够以高时间分辨率实现音频-文本对齐低秩适应(LoRA)方法(Hu等,2022)应用于Vicuna,作为跨模态适配器,将Vicuna的增强输入空间与其输出空间对齐,从而进一步提升其性能。在窗口级Q-Former和LoRA的跨模态预训练和指令微调阶段使用了一系列语音、音频和音乐任务最终得到的多模态LLM局限于在指令微调中使用的特定任务,特别是语音识别和音频描述,表现出有限或没有的跨模态突现能力,我们称之为任务过拟合问题。本文中,跨模态突现能力指的是在训练中未见的跨模态任务的执行能力,实质上是LLM的突现能力(Wei等,2022b),在指令微调过程中丧失。为此,我们提出了一个额外的少量样本激活微调阶段,以使SALMONN重新获得LLM的突现能力,并减轻对已训练任务的显著灾难性遗忘。

为了评估 SALMONN 的认知听力能力,使用了广泛的语音、音频事件和音乐基准。 任务可以分为三个级别。 第一级对经过指令调优训练的八个任务进行基准测试,例如语音识别、翻译和音频总结,而其他两个级别对未经训练的任务进行基准测试。 第二级包括五个基于语音的 NLP 任务,例如翻译为未经训练的语言和槽填充(slot filling,即从文本中提取特定信息并填充到预定义的槽位中),这依赖于语音和文本标记之间的多语言和高质量对齐。 最后一级的任务,包括基于音频的讲故事和语音音频协同推理,不仅需要理解语音,还需要理解非语音听觉信息。 实验结果表明,SALMONN 作为单一模型可以执行所有这些任务,并在标准基准上实现具有竞争力的性能,这揭示了构建能够“听到”并理解通用音频输入的人工智能 (AI) 的可行性由语音、音频事件和音乐的混合组成。

本文的主要贡献可以总结如下。

• 我们提出了SALMONN,尽我们所知,这是第一个能够感知和理解包括语音、音频事件和音乐在内的一般音频输入的多模态LLM。
• 我们通过调整LoRA缩放因子来研究跨模态涌现能力的存在,并提出了一种低成本的激活调优方法,作为额外的训练阶段,能够激活跨模态涌现能力,并减轻对训练中已见任务的灾难性遗忘。
• 我们在一系列反映一般听觉能力的任务上评估SALMONN,并提出了两个新任务:基于音频的讲故事和语音音频共同推理。

模型和训练

模型架构

SALMONN 的模型架构如图 1所示。



图1:SALMONN的模型架构。窗口级Q-Former作为连接模块,用于融合来自Whisper语音编码器和BEATs音频编码器的输出,生成增强音频标记,这些标记与LLM输入空间对齐。LoRA适配器将增强的LLM输入空间与其输出空间对齐。文本提示用于指导SALMONN回答有关一般音频输入的开放式问题,答案则以LLM文本响应的形式呈现。在训练过程中,LLM和编码器保持固定,而其余部分可以更新。

两个互补听觉编码器【用于建模语音音频和非语音音频】的输出特征被同步并结合在一起。Q-Former被用作连接模块,并应用于帧级别,其输出序列与文本指令提示集成,并通过LoRA适配器输入到LLM中,以生成文本响应。

双重听觉编码器:使用了OpenAI的Whisper模型(Radford等,2023)的语音编码器和BEATs音频编码器(Chen等,2023c)。(Whisper模型经过大量弱监督数据的训练,适用于语音识别和翻译,其编码器输出特征适合建模语音并包含背景噪音的信息(Gong等,2023a)。BEATs经过迭代自监督学习训练,提取高级非语音音频语义信息,并提出有效的声学tokenizer,将连续音频特征量化为丰富的语义离散标签)输入音频首先被标记化,然后在训练中被掩蔽和预测。标记器通过提炼音频标记的语义知识进行更新(Chen等,2023c)。因此,这两个编码器的结果听觉特征是互补的,适合包含语音和非语音信息的一般音频输入。由于两个编码器具有相同的输出帧率50Hz,连接后的输出特征表示为:

Z=Concat(Encoderwhisper​(X),Encoderbeats​(X)),

其中 X 是可变长度的一般音频输入序列,Encoderwhisper​(⋅) Encoderbeats​(⋅) 分别是Whisper和BEATs编码器,Concat(⋅) 是在特征维度上逐帧连接的操作,Z 是具有 T 帧的连接编码器输出序列。

窗口级Q-Former:Q-Former结构通常用于将图像编码器的输出转换为固定数量的LLM文本输入标记(Li等,2023a),在处理可变长度的音频输入时需要进行修改。具体而言,将输入图像的编码器输出表示为 Zl​,Q-Former使用固定数量的可训练查询 Q 将 Zl​ 转换为 N 个文本标记 Hl​,这需要多个堆叠的Q-Former块。Q-Former块类似于Transformer解码器块(Vaswani等,2017),但在第一个块中使用固定数量的可训练静态查询 Q,并从自注意力层中移除因果掩码。通过这种方式,Q-Former允许查询在 Q中首先使用自注意力层相互引用,然后使用交叉注意力层与 Zl​ 进行交互。

对于一个变长的通用音频输入Z=[Zt​]t=1T,通过将 Z 分割成大小为 L 的窗口,并用零填充最后一个窗口,可以表示为{{Zt​}t=(l−1)×L+1l×L​}l=1T/L⌉​。而不是在序列级别使用 Q-Former 将整个 Z转换为 N 个文本标记,SALMONN 在窗口级别使用 Q-Former,就好像每个窗口中的编码器输出帧堆叠在一起形成一幅图像一样。因此,文本标记序列 H 变为:

其中 Q-Former(·) 是 Q-Former 函数,H 的形状为 ⌈T/L⌉×N 的文本标记。窗口级的 Q-Former 使用可变数量的文本标记,因此在处理可变长度序列时效率更高。此外,H 被强制与 Z 具有单调对齐,从而提高了时间分辨率,这对于语音识别非常重要。

LLM 和 LoRA:本工作中使用的是预训练的 Vicuna LLM(Chiang et al., 2023),该模型是针对指令微调的 LLaMA LLM(Touvron et al., 2023)。LoRA(Hu et al., 2022)是一种广泛使用的参数高效微调方法,用于 LLM 适应,在 SALMONN 中用于调整 Vicuna 自注意力层中的查询和数值权重矩阵。在本工作中,LoRA 是可训练的,而 Vicuna 不是。

训练方法

本节介绍了 SALMONN 的三阶段跨模态训练方法。除了最近视觉 LLM 所采用的预训练指令微调阶段(Dai et al., 2023; Zhang et al., 2023b),还提出了一个额外的激活微调阶段,以解决指令微调中对语音识别和音频描述任务的过拟合问题

预训练阶段:基于语音识别和语音描述音频进行预训练

为了减小预训练参数(LLM 和编码器)与随机初始化参数(连接模块和适配器)之间的差距,使用大量的语音识别和音频描述数据对窗口级 Q-Former 和 LoRA 进行预训练。这两个任务包含关于语音和非语音音频事件内容的关键听觉信息,并且都不需要复杂的推理和理解,因此可以帮助 SALMONN 学习听觉信息与文本信息之间的高质量对齐。

指令微调阶段:

类似于 NLP(Wei et al., 2022a)和视觉语言(Dai et al., 2023),音频-文本指令微调使用了一系列监督的语音、音频事件和音乐任务,如表 1 所示,作为 SALMONN 训练的第二阶段。根据任务的重要性(例如语音识别和音频描述)以及在测试中拥有此能力的不可或缺性(例如重叠语音识别、电话识别和音乐描述)选择这些任务。指令提示基于与音频数据配对的文本生成。

任务过拟合:

尽管仅通过前两个训练阶段构建的 SALMONN 可以在指令微调中训练的任务上产生有竞争力的结果,但它在执行未训练的跨模态任务时表现出有限或几乎没有能力,尤其是那些需要跨模态共同推理能力的任务。特别是,该模型有时会违反指令提示,生成与其所接受的任务无关的响应,仿佛它接收到的指令与训练中常见的任务相关(例如语音识别)。我们将这一现象称为任务过拟合。在这里,我们对该问题进行了理论分析,详细的实验验证见第 5.3 和 5.4 节。

我们将任务过拟合归因于两个原因。首先,与用于 LLM 训练的纯文本数据相比,我们的跨模态指令微调中仅使用了更简单的指令提示(Wei et al., 2022a),因此生成的响应并不复杂且多样。同时,指令微调中包含的一些任务,特别是语音识别和音频描述,具有比其他任务(如语音和音频问答)更确定的输出这两个原因结合导致内在条件语言模型(LM)偏向于一个缺乏良好泛化能力的错误分布,阻止了 SALMONN 执行未训练的跨模态任务。更具体地,在测试时,给定新指令提示 I 的测试输入 X 的响应文本序列 Y^ 可以生成为 Y^=argmaxY​PΛ​(Y|X,I),这也是训练中要最大化的目标。利用贝叶斯法则,有

由于在 SALMONN 训练中仅看到有限的文本响应,内在条件 LM PΛ(Y∣X) 偏向于与 X 强对齐的 Y 序列,例如自动语音识别(ASR)和自动音频描述(AAC)任务的转录,尤其是简单且短的转录。根据公式(3),这导致 I′(具有更多样本响应的zero-shot 指令)具有小的 PΛ(Y∣X,I′)。

激活微调阶段:

缓解任务过拟合的有效方法是对内在条件 LM PΛ​(Y∣X) 进行正则化。实现这一点的简单方法是对具有更长和更多样化响应的任务进行微调,例如基于听觉信息的问答和讲故事。这类任务的配对训练数据可以基于与语音识别或音频和音乐字幕数据配对的文本生成,可以由人工注释者手动生成,也可以通过提示文本基础 LLM 自动生成。

我们采用一种高效的方法,使 SALMONN 能够通过简单地降低 LoRA 适配器的缩放因子来生成长且多样化的响应。这是一种正则化 PΛ​(Y∣X) 的替代方法,因为内在条件 LM 只能通过窗口级 Q-Former 和 LoRA 学习,因为它们是训练中唯一更新的模块。降低 LoRA 缩放因子的效果在第 5.2 节中可以找到,确实可以激活问答和讲故事能力,并生成长且多样化的响应,但也会显著降低在训练任务上的结果。为了在恢复跨模态突现能力的同时保持竞争力的结果,我们建议使用以降低的 LoRA 缩放因子生成的 SALMONN 响应来执行称为激活微调的第三阶段微调。随后在第 5.4 节中展示的实验结果表明,激活微调是一种高效且有效的少样本自监督训练方法。

实验设置

模型设置

SALMONN 使用 Whisper-Large-v2(Radford et al., 2023)模型的编码器作为语音编码器,使用微调后的 BEATs(Chen et al., 2023c)编码器作为音频编码器,以及具有 13B 参数的 Vicuna LLM(Chiang et al., 2023)作为基础 LLM。对于窗口级 Q-Former,我们使用 N = 1,仅有一个可训练查询,设置L = 17,这大约对应于每个窗口 0.33 秒。因此,对于 30 秒的音频,Q-Former 输出 88 个文本标记。关于 LoRA(Hu et al., 2022)的超参数,我们将秩设置为 8,缩放因子设置为 4.0。在训练中,仅更新 Q-Former 和 LoRA 的参数,结果约为 3300 万(M)参数,约占整个 SALMONN 模型的 0.24%。

数据设置

采用第 3.2 节中提出的三阶段训练。用于第一预训练阶段的数据包括 960 小时的 LibriSpeech 训练集(Panayotov et al., 2015)和 1000 小时的 GigaSpeech M 集(Chen et al., 2021)用于语音识别,以及 2800 小时的 WavCaps(Mei et al., 2023)(去除音频片段超过 180 秒的部分)、AudioCaps(Kim et al., 2019)和 Clotho(Drossos et al., 2020)数据集用于音频描述生成。

第二个指令调优阶段涉及多个任务,包括自动语音识别(ASR)、自动语音翻译(AST)、自动音频字幕(AAC)、音素识别(PR)、情感识别(ER)、音乐字幕(MC)、重叠语音识别(OSR)、说话人验证(SV)、性别识别(GR)、语音问答(SQA)、音频问答(AQA)和音乐问答(MQA)。在SQA、AQA和MQA任务中,问题是基于文本字幕标签使用ChatGPT生成的,模型需要根据通用音频输入和带有问题的文本提示提供答案。本阶段使用的数据列在表1中,其中“En2Zh”指的是从英语到中文的AST。

在最后的激活调优阶段,SALMONN基于音频片段编写了十二个故事,使用了reduced的LoRA。然后,模型使用基于教师强制的交叉熵训练进行12步训练,每一步只使用一个故事样本,以激活SALMONN的跨模态突现能力。

任务设置

由于文本LLM具备通过指令调优进行zero-shot学习的能力(Wei et al., 2022a),因此当将基于文本的主干LLM与多模态编码器连接时,期望能实现高质量的跨模态对齐,从而出现这样的能力。为了评估SALMONN的zero-shot跨模态突现能力,选择了15种语音、音频和音乐任务,并将其分为三个不同的层次。

任务层级1包括在指令调优中使用的任务,因此对SALMONN来说最容易执行。这些任务及其训练数据的列表在第4.2节中给出,各任务的评估指标见表2。

任务层级2包括未训练的任务,因此比层级1更具挑战性。层级2的任务是基于语音的NLP任务,包括语音关键词提取(KE),评估基于语音内容提取的关键词的准确性;基于口语查询的问题回答(SQQA),评估根据语音中的问题检索的常识知识;基于语音的槽填充(SF),评估从语音内容中获得的所需槽值(通常是命名实体)的准确性。还包括两个AST任务,En2De(英语到德语)和En2Ja(英语到日语),它们也被视为跨模态突现能力,因为指令调优中仅训练了En2Zh。SALMONN的主干LLM Vicuna可以根据语音转录执行所有层级2的任务,因此SALMONN将以完全端到端的方式实现这些任务,而无需任何显式的语音识别。

任务层级3是最具挑战性的任务,包括基于音频的故事讲述(Story)和语音音频共同推理(SAC)。基于音频的故事讲述是根据来自一般音频输入的听觉信息编写有意义的故事。SAC要求模型理解嵌入在输入音频片段中的口语问题,从背景音频事件或音乐中寻找证据,并根据此进行推理以回答问题。根据我们的知识,这两个层级3的任务是首次在本文中提出的,要求SALMONN以完全端到端的方式感知语音、音频和音乐,并根据听觉信息进行理解和推理。

表2列出了所有测试集及其评估指标。跟随率(FR)是某些层级2和层级3任务的额外指标,测量SALMONN能够成功遵循指令的百分比。考虑到所选任务复杂,且更容易因任务过拟合导致指令违反,因此引入FR。值得注意的是,我们仅通过计算故事中不同单词的数量来计算故事任务的多样性指标,这仅代表故事的丰富性,而非质量

表2:三层任务中使用的测试集、指标及参考值来源。SQQA和KE中使用的语音数据是通过商业文本转语音产品合成的。
参考值说明:“Whisper”指使用Whisper-Large-v2进行自动语音识别(ASR),“Whisper + Vicuna”指将Whisper-Large-v2 ASR输出的转录结果输入到Vicuna中,其余则是我们所知的最新成果。

实验结果

所有15个任务的完整结果:
表3展示了SALMONN在所有15个任务上的结果。从结果来看,无论是否进行激活调优,SALMONN在所有一级任务上都能产生竞争力的结果。然而,未进行激活调优的模型在二级和三级任务上表现严重受限,几乎无法执行。特别是在SQQA、故事和SAC等强调多模态交互的任务中,未调优的SALMONN几乎无法遵循指令。进行激活调优后,SQQA、SF、故事和SAC任务的执行成功率显著提高。图2展示了在激活调优不同训练步骤中,模型在ASR和PR、SQQA、故事和SAC任务上的表现变化趋势,表明激活调优只需少量训练样本和步骤即可激活新兴能力:ASR和PR的结果几乎保持不变,而SQQA、故事和SAC的结果则出现了新兴趋势。由于篇幅限制,结果的更详细分析在附录B中讨论。

降低LoRA缩放因子的影响
本节探讨在未进行激活调优的情况下,测试时降低LoRA缩放因子对缓解任务过拟合问题的影响。如图3所示,当LoRA缩放因子降至约2.0,即其原始值的一半时,模型突然展现出跨模态推理能力,这与%PER的下降一起证明了LoRA中嵌入的内在条件语言模型的存在。

任务过拟合与激活调优分析
为了验证内在条件语言模型的影响,我们计算了每个激活调优阶段步骤的困惑度(PPL)。具体而言,对于给定的音频 X,使用基于特定任务的文本指令提示I 的教师强制方法计算与探测任务对应的 Y 序列的概率,或在不使用 I 的情况下进行计算。

如图4所示,比较了故事/SAC任务的真实响应(通过折扣LoRA缩放因子生成)与由于任务过拟合而导致模型错误执行的任务响应(本例中为AAC)。在子图(a)和(b)中,计算 PΛ(Y∣X) 时未使用文本指令提示,结果显示未进行激活调优时,AAC的 Y 的PPL明显低于Story/SAC的 Y。在激活调优过程中,这些任务之间的PPL差距得到缓解,表明对主导AAC任务的偏向显著降低。在子图(c)和(d)中,我们探测了带有Story和SAC指令的 PΛ(Y∣X,I)。结果表明,在激活调优之前,即使文本指令提示是执行Story/SAC,AAC的PPL仍低于Story/SAC,这解释了模型未能遵循指令的原因。在激活调优过程中,Story/SAC的 Y 的PPL值逐渐低于AAC,最终模型能够执行指令任务。

使用不同任务和数据的激活调优:
我们探索了几种激活方法来激活模型,包括基于音频编写的长故事、带有长答案的文本问答(QA)任务对,以及长语音转录的ASR任务。这三种方法都对LoRA和Q-Former进行了微调。通过忽略Q-Former和音频输入,Vicuna和LoRA被微调为适应的文本基础LLM。作为另一对照组,进行了使用LoRA和Q-Former但不微调Q-Former的实验。

结果如表4所示。从结果来看,ASR(长)即用长标签训练的ASR任务,或仅基于文本提示输入的故事(文本基础)都无法激活模型。而使用长答案的故事或QA训练(故事或QA(长))则能够激活模型。这是因为ASR任务强调提高高质量的跨模态对齐,使得分布更加偏向内在条件语言模型。至于基于文本的故事微调,实际上影响的是P(Y∣Tx,I) 而不是 P(Y∣X,I),其中Tx 是语音的参考文本。因此,基于文本的训练无法缓解任务过拟合。带有长答案的QA数据能够激活LLM,但激活模型的性能不如使用故事任务激活的模型,尤其导致生成响应的重复率较高。这可能是因为QA任务的配对答案多样性低于故事任务,从而导致内在条件LM PΛ(Y∣X) 的正则化效果不如预期。

附录:EXAMPLES OF SALMONN

Moshi-开源版GPT-4o

自然聊天,情绪丰富,随意打断,拒绝呆板和回合制!

来自法国的初创团队Kyutai,发布了这个对标GPT-4o的神奇的端到端语音模型。并将代码、模型权重和一份超长的技术报告开源。

整个模型的参数量为7.69B,pytorch平台上只有bf16版本,如果在本地跑的话对显存有一定要求,而candle上提供了8bit版本,mlx上更是有4bit版本可供使用。

moshi作为一个全双工口语对话框架,由几部分组成:首先是Mimi,目前最先进的流式神经音频编解码器,能够以完全流式的方式(延迟80毫秒)处理24 kHz音频(12.5 Hz表示,带宽1.1 kbps(8个量化器,2048的码本 12.5*8*11))。

token/s Nq 量化器数量
带宽Bandwidth码本大小
Mini8*12.5=10081.1kbps2048
WavTokenizer-small4010.5kbps4096
WavTokenizer-small 7510.9kbps4096
SpeechTokenizer30043.0kbps1024
Encodec 30043.0kbps1024
Encodec15021.5kbps1024
常见神经音频编解码器的对比:计算公式 假设码本大小2^n,每秒语音的hz=BW/(Nq*n),token=Nq* 每秒语音的hz , 每秒语音的hz =token/Nq
Overview of Moshi。Moshi 是一种语音文本基础模型,它支持实时语音对话。 Moshi 架构的主要组成部分是:一个定制的文本语言模型骨干Helium,参见第 3.2 节);一个具有残差矢量量化和从自监督语音模型中提取的语义知识的神经音频编解码器(Mimi,第 3.3 节);用户和 Moshi 语义和声学词元的流式分层生成以及在使用 Inner Monologue 时 Moshi 的时间对齐文本词元(第 3.4 节)。

然后是负责知识储备、理解和输出的Transformer部分,包括Helium Temporal Transformer和Depth Transformer。其中小型的深度Transformer负责对给定时间步长的码本间依赖性进行建模,而大型(7B参数)时间 Temporal Transformer对时间依赖性进行建模。作者还提出了「内心独白」:在训练和推理过程中,对文本和音频进行联合建模。这使得模型能够充分利用文本模态传递的知识,同时保留语音的能力

Moshi模拟两种音频流:一种来自Moshi自身(模型的输出),另一种来自用户(音频输入)。沿着这两个音频流,Moshi预测与自己的语音(内心独白)相对应的文本,极大地提高了生成的质量。Moshi的理论延迟为160毫秒(Mimi帧大小80毫秒 + 声学延迟80毫秒),在L4 GPU上的实际总延迟仅有200毫秒。

论文解读

摘要

Moshi,一个语音文本基础模型和全双工口语对话框架。目前的口语对话系统依赖于独立组件的管道,包括语音活动检测、语音识别、文本对话和文本转语音。这种框架无法模拟真实对话的体验。首先,它们的复杂性导致交互之间的延迟达到几秒。其次,文本作为对话的中介模态,会丢失修改意义的非语言信息,比如情感或非语言声音。最后,它们依赖于说话者轮次的分段,这并未考虑重叠发言、打断和插话。

Moshi 通过将口语对话视为语音到语音的生成,解决了这些独立问题。Moshi 从文本语言模型的骨干开始,从神经音频编解码器的残差量化器生成语音作为标记,同时将自身语音和用户语音建模为并行流。这使得可以去除显式的说话者轮次,并建模任意的对话动态。此外,我们扩展了之前工作的分层语义到声学标记生成首先预测与时间对齐的文本标记,作为音频标记的前缀。这种“内心独白”方法不仅显著提高了生成语音的语言质量,还展示了它如何提供流式语音识别和文本转语音。我们开发的模型是首个实时全双工口语大型语言模型,理论延迟为 160 毫秒,实际为 200 毫秒

Moshi突破了传统AI对话模型的限制:延迟、文本信息瓶颈和基于回合的建模。

Moshi使用较小的音频语言模型增强了文本LLM主干,模型接收并预测离散的音频单元,通过理解输入并直接在音频域中生成输出来消除文本的信息瓶颈同时又可以受益于底层文本LLM的知识和推理能力。Moshi扩展了之前关于音频语言模型的工作,引入了第一个多流音频语言模型,将输入和输出音频流联合显式处理为两个自回归token流,完全消除了说话者转向的概念,从而允许在任意动态(重叠和中断)的自然对话上训练模型。

贡献:

  • 我们训练了Mimi,一个神经音频编解码器,使用残差向量量化(RVQ)将音频转换为Moshi预测的离散标记,并反向转换音频语言模型通常将声学标记与自监督语音模型的语义标记结合,以便在缺乏文本条件下生成可理解的语音。我们通过将语义信息蒸馏到声学标记的第一层【RVQ第一层作为语义信息】,扩展了Zhang等人的方法,并引入了改进的训练技巧。
  • 我们提出了Moshi,这是一种新的音频语言建模架构,将Helium与一个较小的Transformer模型结合,以分层和流式的方式预测音频标记。我们展示了这种无条件音频语言模型生成可理解语音的挑战,并提供了解决方案,超越了非流式模型的可理解性和音频质量,同时以流式方式生成音频。我们进一步扩展该架构以并行建模多个音频流,允许概念上和实际处理全双工对话的简单处理。
  • 我们介绍了内心独白,这是一种新的音频语言模型训练和推理设置通过在音频tokens之前预测时间对齐的文本tokens,显著提高了生成语音的事实性和语言质量。Moshi是一个语音到语音模型,能够推理用户音频和Moshi音频中的非语言信息。然而,这并不妨碍Moshi在语音输出的同时生成文本。基于以往的观察,粗到细的生成(从语义到声学标记)对生成一致的语音至关重要我们将这一层次扩展为在每个时间步使用文本标记作为语义标记的前缀。我们的实验表明,这不仅显著提高了生成语音的长度和质量,还显示强制文本和音频tokens之间的延迟允许从Moshi模型中推导出流式ASR和流式TTS。
  • 我们沿多个维度评估了Moshi的所有组件,包括文本理解、语音可懂性和一致性、音频质量以及口语问答。我们的实验结果表明,我们的模型在现有语音-文本模型中处于最前沿,适用于语音建模和口语问答,同时兼容流式处理,并能够建模数分钟的上下文(在我们的实验中为5分钟)。

模型

Moshi是一个多流语音到语音的Transformer模型,凭借其创新的架构实现了与用户的全双工口语对话,如图1所示。Moshi基于Helium构建,这是一个从零开始开发的文本LLM,依赖高质量的文本数据为模型提供强大的推理能力。我们还提出了”内心独白“,这是一种训练和推理程序,在其中我们共同建模文本和音频标记。这使得模型能够充分利用文本模态所 impart 的知识,同时保持语音到语音的系统特性

为了实现实时对话,我们从一开始就将Moshi设计为多流架构该模型能够同时与用户说话和倾听,无需显式建模说话者轮次。此外,为了以高质量和高效的方式捕捉用户输入音频和Moshi输出的声音,我们提出了Mimi,这是一种神经音频编解码器,通过使用残差向量量化和知识蒸馏,将语义和声学信息结合成一个单一的tokenizer。为了共同建模来自Moshi和用户的音频流,以及Moshi的文本标记,我们依赖于与流式推理兼容的Depth Transformer。

Helium 文本语言模型

架构:

Helium 是一种自回归语言模型,基于 Transformer 架构。 遵循该领域之前的研究,我们对原始架构进行了以下更改:首先,我们在模型的注意力块、前馈块和输出线性层的输入处使用 RMS 归一化。 我们使用旋转位置嵌入RoPE,4,096 个token的上下文长度和 FlashAttention来进行高效训练。 最后,我们改变了前馈块的架构,并使用门控线性单元,以 SiLU 激活函数作为门控函数。 我们的分词器基于 SentencePiece的 unigram 模型,包含 32,000 个元素,主要针对英语。 我们将所有数字拆分为单个数字,并使用字节回退以确保我们的分词器不会丢失信息。 我们使用 AdamW优化器训练模型,使用固定学习率,然后进行余弦学习率衰减。

ps:SentencePiece是谷歌推出的子词开源工具包,它是把一个句子看作一个整体,再拆成片段,而没有保留天然的词语的概念。一般地,它把空格也当作一种特殊字符来处理,再用BPE或者Unigram[切分subword的算法]来构造词汇表。他是一种无监督的文本 tokenizer 和 detokenizer,主要用于基于神经网络的文本生成系统,其中,词汇量在神经网络模型训练之前就已经预先确定了。 SentencePiece 实现了subword单元(例如,字节对编码 (BPE))和 unigram 语言模型),并可以直接从原始句子训练子词模型(subword model)。 这使得我们可以制作一个不依赖于特定语言的预处理和后处理的纯粹的端到端系统。SentencePiece开源代码地址:https://github.com/google/sentencepiece,详细讲解

预训练数据过滤

训练数据是训练 LLM 的关键要素之一:我们现在介绍我们获得大型高质量文本数据集的方法。 我们从高质量的数据源开始,例如维基百科、Stack Exchange 和大量的科学文章。 由于这些数据源的数据量不足以训练 LLM,我们还依赖于从 CommonCrawl 【Common Crawl是一个501非营利组织,它对Web进行爬网,并向公众免费提供其档案和数据集。】爬取的网络数据来扩展我们的数据集。 网络数据需要大量处理才能获得高质量的训练集:我们执行去重、语言识别和质量过滤。 接下来,我们将更详细地描述每个操作。

去重。我们从WET文件开始,这些文件仅包含网页的文本内容,是由CommonCrawl【它对Web进行爬网,并向公众免费提供其档案和数据集】项目提取的。由于这种格式包含页面的所有文本,因此包含了大量的样板内容,如导航菜单。 因此,我们管道的第一步是在行级别对每个分片(每个抓取有 100 个分片)进行去重,以去除这些模板代码。为此,我们计算每行的FNV哈希值,并使用布隆过滤器来去除重复项。我们还训练了一个fastText(Joulin等,2016)分类器来区分重复和非重复项,以进行模糊去重:在这里,我们仅删除被分类为重复的至少三行连续的块。

语言识别。 一旦去重完成,我们就应用基于 fastText 的语言识别器来仅保留英语数据。 语言识别是在文档级别进行的,我们只保留超过一定阈值(0.85)的文档。

质量过滤。 最后一步是过滤剩余的数据,只保留高质量的网页。 为了执行此步骤,我们训练了一个 fastText 分类器,它使用来自我们高质量数据源和随机 CommonCrawl 网页的行。 我们得到一个包含 9 个类别的分类器,对应于我们的不同高质量来源,例如维基百科或维基教科书,以及 StackExchange 的子集,例如 STEM 或人文科学。 其动机是获得对保留哪些文档的更精细控制,不仅基于与高质量来源的相似性,还基于它们的领域。 此分类器在行级别应用,并通过计算每行的平均分数(按其长度加权)来获得聚合分数。 同样,我们保留对应于超过一定阈值的文档。

音频token化

参考了 SpeechTokenizer采用蒸馏技术将非因果的高层次语义信息转移到由因果模型生成的令牌中(用NAR直接生成语义token)

为了将波形离散化为音频符元,我们引入了 Mimi,一个作为具有离散瓶颈的自动编码器运行的神经音频编解码器(参考EnCodec)。 在文献中,遵循 Borsos 等人 (2022) 定义的术语,这些符元被称为 acoustic 声学token,因为它们模拟了细致的音频细节,并且针对高质量重建进行了优化。 虽然这些 acoustic声学token为有条件文本到音频模型提供了合适的目标 (例如文本到语音 或文本到音乐 )但无条件的语音生成需要将其与从自监督语音模型中提取的语义令牌结合。 与它们的 acoustic声学对应物不同, semantic 语义符元不允许重建高质量音频,但与语言内容高度相关。 这种与语言的相似性允许通过使用 semantic 语义音频符元作为预测 acoustic 声学符元的词缀来生成可理解且一致的语音,即使没有文本条件。 然而,这种混合符元化方法与实时生成不兼容。 语义令牌通常不是因果的,因此只能以离线方式计算。此外,使用单独的编码器生成声学和语义令牌会带来不可忽视的计算负担。因此,Mimi受到之前关于SpeechTokenizer工作的启发,采用蒸馏技术将非因果的高层次语义信息转移到由因果模型生成的令牌中 (用NAR直接生成语义token) ,从而实现语义-声学令牌的流式编码和解码。

ps:“非因果的高层次语义”指其中的语义信息不依赖于时间顺序。这种语义通常能够捕捉到更广泛的上下文或抽象概念,但无法用于实时生成,因为它不能逐步构建,而是需要完整的数据输入。“因果模型生成的令牌”指的是通过因果模型(例如,基于自回归的方法)逐步生成的输出。在这种模型中,每个时间步骤的生成都只依赖于当前和之前的输入,而不依赖于未来的输入。这种方式确保了生成过程的顺序性和一致性,因此非常适合实时应用,比如语音生成或文本生成。通过这种方式生成的令牌通常用于构建连贯的序列,以便后续的处理或合成。

架构

我们的基线架构借鉴了 SoundStream 和 Encodec,它由一个 SeaNet 自动编码器和一个残差向量量化器组成。 编码器通过级联残差卷积块来将单通道波形x ∈ RL投影到潜在表示 enc(x) ∈ RS×D ,这些卷积块交替使用膨胀和步进卷积,以及 ELU非线性函数和权重归一化。所有卷积都是因果的( 每个时间步骤的生成都只依赖于当前和之前的输入,而不依赖于未来的输入。关于因果卷积:https://zhuanlan.zhihu.com/p/422177151,因此该自动编码器可以在流式方式下运行。 具有 4 个卷积块和相应的步幅因子(4, 5, 6, 8) ,以及最终步长为 2 的 1D 卷积,Mimi的编码器能够将24kHz的波形转换成每秒12.5帧且维度为D=512的潜在表示。对称地,解码器采用了类似的结构,但使用转置卷积代替步进卷积,以将潜在表示重新投影回24kHz音频。 我们使用残差矢量量化器对潜在空间进行离散化,该量化器迭代地将矢量量化 (VQ) 应用于先前量化器的残差。 具有Q个量化器,每个量化器都有一个包含NA个质心的码本,RVQ 将潜在空间离散化为{1, . . . , NA}S×Q。 作为基线,我们使用重建损失和对抗性损失的组合来训练此模型,遵循 Encodec( Defossez 等人, 2023)的设置。 我们将在下面详细介绍 Mimi 相对于此默认配置的主要变化。

基于 Transformer 的瓶颈。 为了提高 Mimi 将语音编码为紧凑表示并同时重建高质量音频的能力,我们在瓶颈中添加了 Transformer 模块,一个在量化之前,另一个在量化之后。 这些 Transformer 有 8 层、8 个头、RoPE 位置编码、250 帧(20 秒)的有限上下文、GELU 激活、512 的模型维度和 2048 的 MLP 维度。 为了稳定训练,我们使用 LayerScale,其对角线值的初始化为 0.01。 两个 Transformer 都使用因果掩码(mask),这保留了整个架构与流式推理的兼容性。 两个 Transformer 都证明对感知音频质量很有用,而编码器中的 Transformer 还改善了下面描述的语义信息的提取 (见表 3 的消融研究)。

因果关系和流式传输。 使用上述超参数,Mimi 是因果的,可以在编码和解码时以流式方式使用。 其初始帧大小和整体步长均对应于 80 毫秒,这意味着给定 80 毫秒的第一个音频帧,Mimi 输出第一个潜在时间步,该时间步可以解码为 80 毫秒的输出音频。

优化。 与纯粹使用 Adam的卷积编解码器不同,在架构中引入 Transformer 需要使用权重衰减和 AdamW优化器进行额外的正则化。 更准确地说,我们仅对 Transformers 的参数应用权重衰减,权重为 5 · 10−2。 我们使用8 · 10−4的学习率,0.5 的动量衰减和 0.9 的平方梯度衰减,以及 0.99 的权重指数移动平均值。 我们使用 128 的批量大小,在12 s的随机窗口上进行 4M step2的训练,而 Transformers 的上下文限制在 10 秒(编码器最后降采样层的 250 帧,以及解码器的对称帧)。

量化率。我们使用了Q=8个量化器(如图二所示),每个量化器的码本大小为NA=2048在12.5Hz时,这表示比特率为1.1kbps。尽管潜在维度是512,我们在应用RVQ之前将输入(基于图2中的“Lin”线性层)投影到256维,并在解码前再将其投影回512维。与先前的工作一致,我们采用了量化器dropout以提供编解码器的比特率可扩展性。此外,我们在训练过程中不以一定概率进行量化可以改善音频质量。更准确地说,我们在训练过程中仅50%的时间对序列进行量化。与Kumar等人不同的是,这意味着将未经量化的嵌入传递给解码器,而不是将所有量化器量化的嵌入传递过去。表3显示这种方法显著提高了客观质量指标,而人类评价结果则不够明确。在我们的实验中,我们观察到一个有些反直觉的现象:随着比特率降低,这种改进效果变得更加明显。

仅使用对抗损失训练。作为基线,我们按照Défossez等人(2023)的方式,使用重构损失与对抗损失的组合来训练Mimi,即一个多尺度梅尔频谱重构损失加上一个多尺度STFT判别器。具体的参数可以在Audiocraft代码库中找到。虽然之前的神经编解码器依赖于这种重构损失和对抗损失的组合,但我们尝试了纯对抗训练,在这种训练方式下我们只保留特征损失和判别器损失。我们注意到,Hauret等人(2023)之前在带宽扩展的背景下也进行了类似的实验。尽管移除重构损失显著降低了客观指标的表现,但在开发过程中我们观察到生成的音频听起来比根据上述指标预期的好得多。表4报告的主观评价确认了这一观察,并展示了仅使用对抗损失进行训练对音频质量有显著提升。

使用分裂RVQ学习语义-声学token

类似于SpeechTokenizer,我们从一个自监督模型(在我们的案例中是WavLM8 (Chen等人,2022))中提取语义信息,并将其蒸馏到RVQ的第一层。WavLM将16kHz的波形映射成以50Hz采样的1024维嵌入,而Mimi则将24kHz的波形映射成12.5Hz下的512维嵌入。在训练过程中,我们通过将输入波形降采样到16kHz来生成蒸馏目标,然后计算WavLM嵌入。接着,我们用一个输出维度为1024的线性投影,随后进行步幅为4、核大小为8的平均池化,以达到12.5Hz的频率。有趣的是,我们观察到非因果地执行这种平均池化对于性能至关重要,这与流式推理兼容,因为这些嵌入仅在训练期间使用。我们将输出维度为1024的线性liner投影层应用于RVQ第一层的输出,同时保持实际进入解码器的嵌入。随后,我们计算第一个量化器输出与变换后的WavLM嵌入之间的余弦距离,以进行知识蒸馏。

表3显示,蒸馏损失与针对质量的重建和对抗损失存在冲突。确实,虽然蒸馏显著提高了第一个量化器的音素辨别能力(通过ABX测量),但也对音频质量产生了负面影响。我们假设这是由于将语义信息蒸馏到单个RVQ的第一层:由于高阶量化器在第一个量化器的残差上操作,后者需要在音频质量与音素辨别能力之间进行权衡。我们通过提出分离RVQ来解决此问题。我们不再使用单个具有8个层级的RVQ而是将语义信息蒸馏到一个普通的VQ中并并行应用具有7个层级的RVQ我们将它们的输出相加,使得两者均可用于重建,同时去除保持声学信息在语义量化器残差中的约束。图2展示了该架构,表3表明此解决方案在整体上提供了更好的语义与声学权衡。

表3:关于Mimi编解码器超参数的消融研究。我们通过报告音素ABX可辨识性任务的错误率来评估语义建模。为了评估重建质量,我们计算了VisQOL和MOSNet,并通过MUSHRA协议收集人类评判。“量化率”指在训练期间仅对潜在空间应用量化50%的时间(与量化器丢弃无关)

生成式音频建模

我们现在描述如何扩展基础Helium模型,以支持Mimi编解码器提供的音频令牌建模。我们的目标是实现真实的对话交互,因此我们进一步展示如何同时建模两个音频流,一个代表用户,另一个代表系统。最后,我们详细介绍一种新功能——内心独白,它在系统侧对文本和音频模态进行联合建模,以提高交互质量。

使用 RQ-Transformer 的分层自回归建模

ps:关于RQ-Transformer https://zhuanlan.zhihu.com/p/666422373

Autoregressive Image Generation using Residual Quantization论文截图:RQ-Transformer的流程,输入各个量化器Sstep,i的和作为S-transformer的输入,输出Vstepi,Vstepi作为D-transforemr的输入,输出下一个时间步各个量化器的离散值。
首先对于图中的下采样得到的编码图,通过Reshape的方式,按照D方向为一个整体,使其减少一个大维度,得到了T×D的矩阵,这里的T=H×W。
这样就得到了Transformer经典的输入序列,我们直接按照D方向为一个整体输入t-1个序列到Spatial Transformer中可以得到第t个序列ht,然后再经过一系列的操作,将我们的ht加入到vtd中去,具体而言是一个迭代填入信息的过程,具体细节可以去看论文的描述,此处就不赘述了。之后将一个序列v输入到Depth Transformer中得到具体的每个层的值。

设 U∈{1,…,N}S 为一个离散随机序列,其基数为 N 且序列长度为 S。为方便起见,我们还将 U0​=0 作为一个确定性的初始令牌值。自回归建模的核心在于通过估计条件分布 P[Us​∣U0​,…,Us−1​] 来估计联合分布 P[U1​,…,US​],其中 1≤s≤S。文本语言模型,如GPT(Radford等人,2019)或Helium,符合这一范式。

图3 :RQ-Transformer将长度为 KS 的扁平化序列分解为 S 个时间步长,供一个大型的时间变换器(Temporal Transformer)处理,该变换器生成一个上下文嵌入,用于条件化一个小规模的深度变换器(Depth Transformer),后者在 K 个步骤上进行操作。这种设计允许通过增加 S来扩展更长的序列,或者通过增加 K 来增加深度,而不是使用单一模型来建模整个扁平化序列。在图中,为了便于说明,我们使用了 K=4。

在建模口语时,依赖于经过标记化的文本比音频令牌提供了更紧凑的表示:使用Mimi编解码器,假设有8个码本,帧率为12.5Hz,每秒钟的音频生成需要100step的序列长度。要建模5分钟的音频,这将需要30,000个timesteps,这代表了显著的计算成本,并且每秒生成100个令牌与流式推理不兼容。相比之下,一段英语语音的表示大约只需要每秒3到4个文本令牌。

如何解决:使用RQ-Transformer

我们不仅对建模单一序列(Us)感兴趣,还对建模多个子序列感兴趣,比如不同的音频码本,以及可选的文本流。我们可以将这些子序列堆叠为Vs,k,其中1 ≤ s ≤ S 且 1 ≤ k ≤ K。同样地,我们定义V0,k = 0,作为所有子序列确定性的初始标记值。对于每个1 ≤ s ≤ S 和 1 ≤ k ≤ K,Vs,k ∈ {1, …, Nk},这里Nk是第k个子序列的基数。可以将这K个序列展平为一个单一序列,从而增加K的预测数量。Lee等人提出沿着K维使用较小的(depth transformer)自回归模型,结合沿时间维度较大的(time transformer)模型,形成RQ-Transformer。之后,Yu等人建议了类似的方法用于字节级建模,而Yang等人(2023)和Zhu等人(2024)将其应用于音频标记建模

RQ-Transformer。形式上,RQ-Transformer由两个Transformer模型组成,如图3所示。它包括一个时间Transformer(Temporal Transformer),其架构与Helium相同,以及一个较小的深度Transformer。。我们将时间Transformer所代表的功能记为TrTemp,而深度Transformer所代表的功能记为TrDepth。为了简化起见,并对于所有步骤s ≤ S,我们用Vs = (Vs,1, …, Vs,K)表示在步骤s时所有子序列的联合值。对于给定的序列步骤1 ≤ s ≤ S,时间Transformer将(V0, …, Vs−1)映射到一个时间上下文向量。

如果我们进一步考虑子序列索引1 < k ≤ K对应声学token,用tansformer进行预测),深度Transformer将同时映射zs和(Vs,1, . . . , Vs,k−1)到logits估计。这个过程使得模型能够综合多个子序列的信息,从而生成更准确的预测。

我们进一步定义第一层ls,1 = Lin(zs) ∈ RN1对应语义token,zs直接接一个liner的输出作为语义token),其中Lin是一个专用的线性层。我们训练TrTemp、TrDepth和Lin,以使得softmax(ls,k)能够很好地近似Vs,k的分布,该分布以前一步的所有子序列以及当前步骤的前子序列作为条件。例如,这种训练方式确保模型能够有效捕捉上下文信息,从而提升生成质量。

重要的是,时间Transformer中的步骤数始终等于S,而不是K·S,并且深度Transformer中的步骤数最多为K。实际上,时间Transformer在每一步s接收的输入是K个学习到的嵌入表之和,这些嵌入表代表了Vs-1的最后一个值。对于1 < k ≤ K的情况,深度Transformer接收的输入是zs与一个表示Vs,k-1的学习到的嵌入之和。

如表1所示,我们的深度Transformer有6层,维度为1024,包含16个注意力头。与Lee等人(2022)、Yang等人(2023)、Zhu等人(2024)不同,我们在深度Transformer中对线性层、投影和全连接使用了针对每个索引k的不同参数。确实,不同的子序列可能需要不同的变换。鉴于此Transformer较小的规模,这样做对训练和推理时间没有影响,而表6显示这种深度参数化是有益的。

表1:模型的超参数。我们7B参数的Helium语言模型和Moshi语音文本对话模型的架构和训练超参数。Moshi的训练分为四个阶段:在无监督数据上进行预训练(使用从Helium初始化的时间变换器);基于分离的多流模拟进行后训练;在Fisher数据集(Cieri等,2004)上进行微调,以实现其全双工能力;在从合成交互脚本构建的自定义数据集上进行指令微调。在预训练阶段,我们一半的时间在与Helium使用的相同数据集上对完整的文本批次进行训练,使用一个独立的优化器状态。

ps:Fisher电话对话收集协议,该协议旨在解决开发人员构建强大的自动语音识别(ASR)系统时的关键需求。特点是少数说话人拨打电话的时间相对较长,并且整个集合的词汇量很窄。CALLHOME 对话非常自然和亲密。根据费舍尔协议,允许大量参与者最多拨打 3 个 10 分钟的电话。对于每次通话,参与者将与通常不认识的另一参与者配对,以讨论指定的主题。这最大限度地提高了说话者之间的差异和词汇呼吸,同时也增加了正式感。

音频建模

音频编解码器Mimi,输出Q个子序列,音频每秒有12.5个步长。我们将这些序列表示为At,q​∈{1,…,NA​}(码本对应的特征向量),其中1≤tTT=12.5×音频时长,1≤qQ,且Q=8。我们将音频子序列插入由RQ-Transformer建模的多序列V中。请记住,第一个码本At,1​对应语义信息,而其他码本对应声学特征。

声学延迟。我们首先尝试简单地将V设为A进行建模。然而,我们发现在语义和声学标记之间引入轻微延迟能够生成更稳定的结果。Copet等人(2023)表明,这样做可以减少给定时间步长下各子序列之间的依赖性(基于过去的条件),从而允许使用较弱的模型来近似联合分布 P[Vs,k​∣V0​,…,Vs−1​](在他们的情况下,作为条件边缘分布的乘积)。Lemercier等人(2024)进一步展示了在给定步骤中子序列之间的互信息与生成质量之间的联系:自然地,相互依赖关系越复杂,估计这些关系所需的模型就越强大【ps:这里目的就是解构声学和语义之间的强相互依赖关系,作者放弃使用sppechtokenizer 中的多层RVQ,而是分别对声学和语义token并行建模,也会降低相互依赖的关系】

如第5.3节所示,在语义特征和声学特征之间引入1到 2步的延迟可以极大地提高生成的质量。这使得更大的时间Transformer能够对语义和声学特征之间的相互依赖性进行建模。形式上,给定一个延迟τ∈N,对于所有步骤s,我们有:

需要注意的是,使用RQ-Transformer来建模音频的方法已被Yang等人(2023)Zhu等人(2024)成功应用。在这里,我们引入了在Depth Transformer中使用每个码本参数的方法,以及声学延迟的使用。与Zhu等人(2024)首先生成所有语义标记的方法相比,我们同时生成语义标记和声学标记,这首次实现了语义标记和声学标记的流式联合建模。

ps:关于RQ-Transformer建模音频的方法

Yang等人(2023) UniAudio: An Audio Foundation Model Toward Universal Audio Generation
Zhu等人(2024) Generative Pre-trained Speech Language Model with Efficient Hierarchical Transformer,先生成语义s token,然后是声学a token

多流建模

仅对单一音频流进行建模不足以完全模拟对话。我们的框架可以扩展到双人对话的建模:给定两个音频流(At,q​)和(A′​t,q),我们只需对两者都应用声学延迟,然后将它们 concatenate 成V,从而扩展了公式4。实际上,A将对应于Moshi,而A′则用于建模用户。

内心独白

尽管仅在音频领域操作已经能够产生令人信服的结果(见表7),我们观察到让Moshi也对其自身语音的文本表示进行建模,可以提供一个框架,从而提高其生成内容的语言质量。形式上,我们定义了一个文本流W∈{1,…,NW​}T,该文本流是从通过将SentencePiece分词器(Kudo和Richardson,2018)应用于由Whisper(Radford等人,2023)转录的对应于Moshi的音频所获得的文本token序列中导出的我们将W作为V中的第一个子序列插入,使其作为语义标记生成的前缀。这可以看作是Borsos等人(2022)引入的层次化从语义到声学生成方法的一种扩展。需要注意的是,我们不使用与用户音频流相对应的文本表示,因为实时转录这个流会非常具有挑战性,并且依赖外部自动语音识别系统与我们的端到端语音到语音方法相矛盾。第5.3节中的消融研究表明,在为Moshi所做的设计选择中,内心独白对生成语音的质量有着至关重要的影响。

ps:注意基于whisper的文本流是为了用于训练,以及制作文本和时间戳的label,在推理的时候,moshi输出的V序列中第一个子序列就是对应于文本的token预测结果(用whisper做gt训练),并将其作为第一个输入流进行建模。

对齐文本和音频token。为了将文本 token 与以恒定帧率12.5Hz运行的音频 token 结合起来,我们需要将它们对齐到这个帧率。为此,我们利用了Whisper提供的word级时间戳。转录中的第 i 个单词word被映射到第 ni​∈N∗个文本toekn :wi,j​ ,其中jni​,以及一个起始索引ti​∈{1,…,T},简单地定义为其起始时间戳除以12.5 Hz的帧率。我们定义了两个特殊的标记:PAD和EPAD,这些标记永远不会出现在任何单词标记中。我们构建W,使得当一个单词开始时,(Wt​)包含它的文本token,之后跟随PAD直到下一个单词。在下一个单词对应的索引之前插入EPAD以指示填充结束。虽然这不是严格必要的,但我们观察到这样做通过将决定一个单词何时结束以及接下来应该跟随哪个单词的过程分为两步,为模型提供了有用的指导。

首先,序列(Wt​)用PAD标记初始化,例如∀t,Wt​←PAD。然后,我们按照以下方式迭代地修改它。对于每个单词i及其起始索引ti​,我们更新WW如下:

需要注意的是,如果ti​=1,我们则在索引1处插入EPAD,并将文本标记向后移位如果插入EPAD标记会覆盖前一个单词的文本标记,我们则不插入EPAD标记。由于文本标记比相应的音频标记更紧凑,在Wt​中单词之间通常不会重叠。在英语对话中,我们观察到填充标记大约占总标记的65%。

推导流式ASR和TTS。可以进一步在文本序列 (Wt​) 和音频token (At,q​) 之间引入一些延迟。这控制了语言模型在生成音频内容时所依据的模态通过将音频提前于文本,文本的内容将由之前步骤中采样的音频决定。具体来说,通过仅采样文本token,同时使用真实的音频token并丢弃模型的预测,可以获得一个流式自动语音识别(ASR)模型并提供精确的单词级对齐。另一方面,通过调整文本延迟,使文本位于音频token之前,音频的内容将由文本内容决定。再次给定一个适当填充的文本token序列,可以获得一个流式文本到语音(TTS)模型。我们在附录C中进一步描述了如何适应带有延迟文本的语言模型推理,以获得zero-shot的适当填充文本token序列。第5.7节展示了如何通过单一的延迟超参数在ASR和TTS模型之间切换,而无需更改损失函数、架构或训练数据。

Moshi的联合序列建模。将多流和内心独白结合在一起,我们得到用于建模的最终序列集合 V 定义为:

总共有 K=2Q+1 条流,其中实验中 Q=8。总结见图4

图4:Moshi建模的联合序列表示。每一列代表联合序列(Vs,k​)在给定步骤中的标记,如公式6中所述,声学延迟τ=1,例如该步骤Temporal Transformer的输入。标记在Depth Transformer中从下到上进行预测。在推理时,虚线以下的标记(对应于Moshi)被采样,而虚线以上的标记则由用户提供。这种设计使得我们的模型能够处理重叠的说话轮次。

Moshi的推理。由公式6给出的联合序列是我们模型在训练时的目标:在任何时间步s,模型输入为0,V1​,…,Vs−1​,并输出一个估计的概率分布V^s​(0,V1​,…,Vs−1​)。在推理时,我们从V^s,k​中采样所有对应于Moshi输出的子序列索引即对于k=1(对应于Moshi语音的文本标记),以及对于k∈{2,…,2+Q}(对应于Moshi的音频标记)在实际应用中,用户音频(k>2+Q)的预测输出结果实际上被忽略,因为使用的是真实的用户音频,而非模型预测的。然而,将用户流作为输出进行建模可以生成模拟对话,这对于如第5.6节中的离线评估是必要的。

有趣的是,用户和Moshi之间的轮流发言没有明确的界限:Moshi可以在任何时候说话和倾听,并且在需要时同时进行这两项操作。特别是,当用户说话而Moshi保持沉默时,Moshi流对应的音频标记会解码成“自然静音”,这是一种接近静音的波形,而不是具有固定、明确定义的值;同时,Moshi的文本流将填充PAD标记。因此,文本流可以提供有趣的控制Moshi的方式,例如,强制采样EPAD标记将使Moshi立即开始说话。

Datasets and Training

文本数据

我们的训练数据集由高质量数据源和来自CommonCrawl的过滤网络数据混合而成。更具体地说,我们的数据集中有12.5%来自以下经过整理的来源:维基百科、维基教科书、维基文库、维基新闻、StackExchange以及科学文章集合pes2o。我们使用了2017、2018、2019、2021和2022年的五个不同的维基百科数据转储,而不是对维基百科进行多次访问。其余的87.5%数据来自CommonCrawl,并按照第3.2.2节中描述的管道进行过滤。我们使用了以下十个抓取:2018-30、2019-04、2019-30、2020-05、2020-34、2021-04、2021-31、2022-05、2022-33、2023-40。

9. https://dumps.wikimedia.org/
10. https://archive.org/details/stackexchange
11. https://github.com/allenai/peS2o

Audio Data

我们使用一个包含700万小时音频的音频集合,称之为无监督音频数据集这些音频内容大多数为英语语音。我们使用Whisper(Radford et al., 2023)对该数据集进行转录,使用的是large-v3模型。我们在音频预训练阶段使用这些数据,此时不使用第3.4.3节中描述的多流方法,而是使用一个单一的音频流来代表所有说话者。同样,第3.4.4节中描述的文本流代表了来自所有说话者的单词。所有音频都重新采样到24kHz并降混为单声道。

为了实现多流,我们需要模型具备同时倾听和说话的能力。为此,我们进一步利用Fisher数据集(Cieri et al., 2004)。该数据集由随机配对参与者之间的2000小时电话对话组成,讨论特定主题。Fisher的一个特点是每个对话的一方在不同的通道上录制,这使得可以为Moshi提供真实的分离流。原始音频的采样率为8kHz,我们使用AudioSR(Liu et al., 2023a)将其上采样到24kHz。

最后,我们收集了170小时的自然对话和脚本对话,这些对话由多个参与者之间的配对录制,且每个说话者使用单独的通道,以提供一个小型数据集,用于微调模型,以超过仅使用 Fisher 时获得的质量。我们称这个数据集为监督多流数据集。我们并不直接在该数据集上训练Moshi,而是利用它训练一个真实的多流TTS模型,并按照第4.3节【 语音-文本指令数据 】和第4.4节【training Stages and Hyper-parameters】中的说明,使用真实对话的转录微调Helium。

对于Fisher和这个最后的数据集,我们随机选择一个说话者作为主说话者(即Moshi发言),并将另一个说话者放在第二个音频流上。对于Fisher,文本流仅包含主说话者的转录。为了在每个流中尽管存在长时间的沉默仍能获得可靠的时间戳,我们使用 whisper-timestamped 包 (Louradour,2023) 以及中等 Whisper 模型获得的转录。

语音-文本指令数据

早期使用基于文本的指令数据集(如Open Hermes,Teknium,2023)进行的实验证明不适合用于口语对话系统的指令微调。特别是,数据格式往往无法通过TTS正确渲染(例如URL无法使用TTS合成正确的语音),并且问题和回答的格式不符合自然的口语流程(例如项目符号、长列举)。相反,我们利用在Open Hermes【主要包含生成的指令和聊天样本】和真实对话转录上微调过的Helium来生成基于语音的AI模型与用户之间的现实交互。然后,我们使用附录C中描述的多流流式TTS合成这些交互,从而生成超过20,000小时的合成语音数据。

为了给Moshi一个一致的声音,我们还让TTS引擎基于单一演员的声音进行条件化处理,该演员录制了涵盖70多种说话风格的独白,详见表19。第6.3节中报告的关于声音一致性的实验表明,仅在指令微调期间为Moshi使用一致的声音就足以几乎确保它不会使用其他声音,而无需在推理过程中进一步控制相比之下,第二个音频流(用户)的声音在每个示例中随机采样,以增强对不同说话条件和口音的鲁棒性。

为了从 微调后的Helium 中生成转录,我们使用不同的提示,旨在捕捉用户和 Moshi 之间不同类型的交互。 首先,我们通过从一些维基百科段落或 StackExchange 帖子(我们称之为上下文context)开始,生成关于一般知识的对话。 这确保了 Moshi 的对话涵盖了广泛的主题,例如历史、烹饪建议或流行文化。更具体地说,使用给定的上下文,我们通过以下提示获得潜在讨论的摘要:

其中{{context}}指的是来自维基百科或StackExchange的段落,而{{title}}是相应的标题。然后,我们使用以下提示生成完整的对话转录:

同样,为了向 Moshi 提供有关自身及 Kyutai 实验室的信息,我们生成了描述两者的段落,并将其用作额外的上下文。

其次,我们生成包含关于 Moshi 声音的指令的交互内容,例如另一个说话者要求 Moshi 用愤怒的声音或像海盗一样说话。我们的第一种策略是生成单轮交互,在这种情况下,模型被指示用特定的声音讲述关于某个实体的句子、独白或诗歌,这些实体属于“体育”或“动物”等高级类别。另一位说话者要求的声音和实体是随机采样的,因此它们完全不相关。我们的第二种策略是生成角色扮演情境,涉及不同的情绪或说话风格,使用以下提示:

编写一个关于{{voice}} {{character}}的10个情境列表。每个情境必须以“一个{{voice}}的{{character}},他/她……”开头,且长度不得超过8个单词。

声音形容词的示例包括“开心”或“惊讶”,角色的示例则包括“侦探”或“超级英雄”。然后,我们使用以下提示生成交互内容:

写一段Blake和Moshi之间的对话,{{情景}}。使用大量的回应。

为了增强 Moshi 对错误发音词汇的鲁棒性,我们还生成包含拼写错误的用户问题指令,接着 Moshi 会要求用户重复问题或澄清问题。我们还生成包含错误或误导性事实的问题(例如“埃菲尔铁塔在北京吗?”),以训练模型回答“否”并纠正用户。除此之外,大多数生成的对话仅包含用户的问题,Moshi 应给出肯定回答。我们生成了基础的数学、语法或小知识的单轮问答,因为我们注意到 Moshi 起初在处理简单的事实任务(如数字相加)时表现不佳。最后,我们生成了安全对话,在这些对话中,用户会提出不道德或不适合公开讨论的问题,而 Moshi 会拒绝回答这些请求。

训练阶段和超参数

Helium预训练:表1提供了训练阶段和超参数的概述。对于每个阶段,我们使用AdamW(Loshchilov和Hutter,2019),权重衰减为0.1,动量衰减为0.9,平方梯度平均值的衰减为0.95。所有模型都在H100 GPU上进行训练,并使用FSDP和激活检查点。仅文本的语言模型Helium训练了500,000步,批量大小为420万个标记,采用从3·10^(-4)开始的余弦学习率调度,并带有线性预热。

Moshi 预训练:我们首先使用 Helium 初始化 Moshi 的时间 Transformer,而 3.4.1 节描述的深度 Transformer 则随机初始化。我们首先在 4.2 节中介绍的700wh无监督音频数据集上进行训练,使用单一音频流,批次大小覆盖 16 小时的音频,每个批次项为 5 分钟序列。我们以 30% 的概率mask相应的文本 tokens,并将文本和音频 tokens 之间的延迟随机化,范围为 -0.6 至 +0.6 秒。为了防止灾难性遗忘,我们还使用与 Helium 相同数据集中的文本数据,进行一半的文本批次训练。总共进行 100 万步训练,时间 Transformer 的学习率为 3·10⁻⁵,深度 Transformer 为 2·10⁻⁴,且有线性预热。为了确保纯文本批次的更新与音频数据集的更新平衡,我们使用两个独立的优化器状态。此外,当在音频批次的文本流上操作时,我们将文本嵌入和文本线性层的学习率乘以 0.75。最后,由于音频批次中的填充 tokens 占主导地位,我们将它们在交叉熵损失中的权重降低 50%。

Moshi 后训练:在前一阶段模型的基础上,我们训练它的多流能力。首先,我们使用 PyAnnote (Bredin, 2023) 对无监督音频数据集的音频进行分离,随机采样一个说话者作为主要说话者,并在波形上生成二元掩码,当该说话者根据分离结果活跃时,值为 1,其他时候为 0。这个掩码为我们提供了两个波形:一个是主要说话者的,另一个是残留波形(可能有多个说话者),它们分别编码,然后作为 3.4.3 节中描述的两个输入音频流使用。文本流仅包含选定主要说话者的文本 tokens,并且文本和音频 tokens 之间的延迟固定为 0。我们训练了 10 万步,批次大小为 8 小时的音频,时间 Transformer 的固定学习率为 3·10⁻⁶,深度 Transformer 为 5·10⁻⁵。与预训练阶段类似,我们有 10% 的时间采样全文本批次。

Moshi 微调:前面描述的模拟多流提供了一个良好的预训练任务,但远远不足以捕捉自然对话的复杂性。例如,它不包含不同说话人的重叠部分,并且不活跃说话者的音频流是完全静音的。因此,我们使用 Fisher 数据集 (Cieri et al., 2004) 来训练模型学习真实的多流交互。我们从两个说话者中随机选择一位作为主要说话者,训练 10k 批次,批次大小为 40 分钟的音频,主要和深度 Transformer 的学习率分别为 2 · 10⁻⁶/4 · 10⁻⁶。我们不再采样完整的文本批次。

指令微调 :最后,我们为第一个说话者流设置了 Moshi 的身份,使其成为一个有用的对话助手,并进行最后阶段的指令微调。我们使用 4.3 节中描述的合成指令数据集,批次大小为 2.7 小时的音频,训练 30k 步,两个 Transformer 的学习率均为 2 · 10⁻⁶。

在此阶段,我们对用户的音频流进行数据增强,使 Moshi 能够应对各种情况。具体而言,我们在 50% 的时间内对用户音频流应用随机增益,范围为 -24 dB 至 +15 dB。30% 的时间,我们进一步添加来自 Deep Noise Suppression 挑战 (Dubey et al., 2023) 的噪声片段,并将其拼接以覆盖每个示例的整个持续时间。噪声被放大到相对于原始音源的目标音量,范围在 -30 dB 至 +6 dB 之间。每次需要采样新噪声时,我们会以 50% 的概率使用最长 30 秒的随机静音片段,从而使模型能够处理从嘈杂到安静或反之亦然的音频条件。

我们通过将Moshi的音频流的一个缩小副本[scaled down copy]添加到用户流中来模拟Moshi到用户麦克风的回声,缩放因子在[0, 0.2]之间均匀采样,延迟在[100ms, 500ms]之间均匀采样。最后,我们对用户的音频流(可能已经增加了回声)应用类似于Defossez等人(2020)引入的混响增强。回声和混响一起应用的概率为30%。

TTS 训练:我们还训练了一个流式的多流文本到语音(TTS)模型,使用 3.4.4 节中描述的方法。音频预训练阶段与 Moshi 共享,而后训练阶段在音频流相对于文本有 2 秒延迟的情况下完成。该模型在包含两个说话者高质量互动录音的监督多流数据集上进行微调,并用于生成 4.3 节中描述的合成微调指令数据集。需要注意的是,Moshi 本身并未在该监督多流数据集上训练。更多详细信息见附录 C。

训练损失:Moshi 被训练为建模联合序列,如公式 6 所示。给定真实的离散 token (Vs,k​)s≤S,k≤K和来自公式 2 的估计 logits(ls,k​)s≤S,k≤K​,我们使用以下损失,其中 CE 代表交叉熵:

因此,我们对文本 token (k=1) 和组合音频 tokens 赋予相同的重要性。对于语义 tokens,αk 设置为 100,而对于声学 tokens,αk 设置为 1。

表 2:文本语言模型评估. 在标准基准上的性能,用于评估大型语言模型,包括闭卷问答,推理和多项选择问答考试。 我们以粗体显示在少于 2.5T 个token上训练的最佳模型。

Evaluation

文本语言建模

评估指标:我们在以下标准基准上评估 Helium(仅使用文本数据训练):AI2 推理挑战(Clark et al., 2018, ARC)、开放书籍问答(Mihaylov et al., 2018, OBQA)、HellaSwag(Zellers et al., 2019, HS)、WinoGrande(Sakaguchi et al., 2021, WG)、物理交互问答(Bisk et al., 2020, PIQA)、社会交互问答(Sap et al., 2019)、TriviaQA(Joshi et al., 2017, TQA)、自然问题(Kwiatkowski et al., 2019, NQ)和大规模多任务语言理解基准(Hendrycks et al., 2020, MMLU)。这些基准涵盖了广泛的任务,包括常识推理、封闭书籍问答或高中和大学科目的多项选择问答。我们遵循 GPT-3 和 Llama 等前期工作的评估协议:在 TriviaQA、NQ 和 MMLU 上进行 5-shot 评估,在其他数据集上进行 0-shot 评估。在 TriviaQA 上,我们报告未过滤和维基百科拆分的性能。

基准模型:作为基准,我们考虑现有的参数量约为 7B 的大型语言模型,这些模型的训练计算量与 Helium 大致相当。更具体地说,我们包括在少于 2.5T tokens(相比于用于训练 Helium 的 2.1T tokens)上训练的模型,即 MPT(Team, 2023)、Falcon(Almazrouei et al., 2023)、Llama 2(Touvron et al., 2023b)和 OLMo(Groeneveld et al., 2024)。我们还包括 Mistral 和 Gemma,这两个流行的开放权重模型,其训练计算量显著高于 Helium。

结果:我们在表 2 中报告结果,观察到在大多数基准上,Helium 的表现与使用相似训练计算量的模型相当或更好。即使与使用多达 3 倍计算进行训练的 Mistral 和 Gemma 相比,Helium 在某些基准(如 ARC、开放书籍问答或自然问题)上也获得了具有竞争力的结果。这验证了我们预训练文本数据的质量。

Audio Tokenization

指标:接下来,我们评估我们的神经编解码器 Mimi 的语义和声学性能。首先,我们评估其产生的语义 token 是否提供适合语言建模的目标。为此,我们计算基于三音素的 ABX(Schatz et al., 2013)错误率,该指标通过比较同一三音素(如“beg”)的两个实例和一个最小差异的负三音素(如“bag”)之间的距离来表征表示空间的语音可区分性。更精确地说,我们计算“同一说话者”的 ABX,三实例由同一说话者发音,并在 Librispeech(Panayotov et al., 2015)dev-clean 上报告错误率,使用 Librilight(Kahn et al., 2020)库的默认参数。结果显示,该得分是下游音频语言模型产生连贯语音能力的强预测指标(Lakhotia et al., 2021)。由于我们只关心语义 token,因此我们计算量化后仅使用语义 VQ 生成的潜在空间中的距离(即在与声学 tokens 相加之前)。其次,我们评估重建音频的声学质量。作为目标的自动指标,我们依赖于 VisQOL(Hines et al., 2015)——一个完整参考模型的声学相似性——和 MOSNet(Lo et al., 2019)——一个无参考音频质量模型。考虑到自动评估音频质量的局限性,我们还使用 MUSHRA 协议进行人类评估。我们依赖 20 名听众的判断,每位听众对 30 个 10 秒的样本进行评分。表 3 报告了使用客观指标的消融研究,表 4 则提供了与以往工作的比较,包括客观和主观评估。

表 3:Mimi 编解码器超参数的消融研究。我们通过报告在语音 ABX 可区分性任务上的错误率来评估语义建模。为了评估重建质量,我们计算 VisQOL 和 MOSNet,并使用 MUSHRA 协议收集人类评估。“量化率”指的是在训练过程中仅对潜在空间应用量化 50% 的时间(与量化器 dropout 独立),如 3.3 节所述。
表 4:音频质量评估。基准神经音频编解码器的客观和主观(MUSHRA)音频质量评估——RVQGAN(Kumar et al., 2024)、SemantiCodec(Liu et al., 2024)和 SpeechTokenizer(Zhang et al., 2024b)——以及 Mimi 的最重要变体。为了与 SemantiCodec 和 SpeechTokenizer 进行公平比较,我们还在 MUSHRA 研究中包含了我们编解码器的下采样版本。fs 是音频采样率,fr 是编解码器帧率。两个 Mimi 编解码器都经过蒸馏训练,并使用与 Encodec 相同的重建和对抗损失组合(见 3.3 节)或仅使用对抗损失。

基准模型:我们与 RVQGAN(Kumar et al., 2024)、SemantiCodec(Liu et al., 2024)和 SpeechTokenizer(Zhang et al., 2024b)进行比较。RVQGAN 是一个纯声学分词器,因为它不编码语义信息。因此,我们仅在音频质量方面进行评估。RVQGAN 以 75Hz 的速率生成 token,因此我们只保留前两个 RVQ 级别,以获得 1.5kbps 的比特率,更接近于 Mimi 的比特率。另一方面,SpeechTokenizer 依赖蒸馏将语义信息编码到其第一个 token 中,因此我们可以评估其语义和声学属性。我们保留其前三个 RVQ 级别以获得 1.5kbps 的比特率。类似地,SemantiCodec 也编码语义和声学信息,因此可以沿两个轴进行评估。

结果 – 语义 token:表 3 显示,在没有蒸馏的情况下,Mimi 的语义 token 的语音可区分性较差,与以往工作的声学 token 相当(Borsos et al., 2022):这意味着这些语义 token 不适合捕捉语音中的语言内容。相反,将 WavLM 蒸馏到语义 token 中显著提高了它们的语音可区分性,尤其是在 Mimi 的编码器中使用 Transformer 时。这可以解释为,将大型基于 Transformer 的编码器蒸馏到纯卷积编码器中具有挑战性,而提高编码器的容量和感受野有助于改善。然而,我们观察到声学损失与语义蒸馏之间的冲突,因为改善 ABX 意味着降低重建质量(如 MUSHRA 所测量)。使用 3.3.2 节中描述的分割 RVQ 改善了语义属性与音频质量之间的权衡,使 MUSHRA 从 57.8 提高到 64.0,同时将 ABX 从 6.5% 中等降至 8.1%。

结果 – 声音token。表 3 还显示,当在解码器中添加 Transformer 时,MUSHRA 评分显著提高。同样,使用 50% 的量化率显著改善了 VisQOL[声学指标]。然而,量化率并未改善主观感知质量。更一般地说,我们观察到 VisQOL 和 MOSNet 之间的相关性较差。特别是,表 4 显示,仅使用对抗损失训练 Mimi 导致非常低的 VisQOL(1.84),这与实际较高的感知音频质量结果相反。因此,我们依赖 MUSHRA,人类评估者被要求判断重建音频与其真实锚点的相似性,得分范围在 0 到 100 之间。该人类评估显示,使用仅对抗损失的 MUSHRA 评分为 81.0,相较于使用 Encodec 的混合损失函数的 58.8,显著提高。此外,尽管以更低的比特率和建模语义信息,Mimi 仍显著优于 RVQGAN(Kumar et al., 2023)。Mimi 的重建质量也高于 SemantiCodec(Liu et al., 2024),同时以 4 倍更低的帧率运行。这一特性对于实现 Moshi 的低延迟至关重要,因为生成一个音频令牌的时间帧需要通过 Temporal Transformer 完成完整的前向传播。最后,RVQGAN 和 SemantiCodec 是非因果的,而 Mimi 是完全因果的,因此兼容流式推理和实时对话建模

讨论。Mimi 在编码语义信息的同时,整体提供高重建质量,完全因果,且在低帧率和比特率下运行。因此,Mimi 证明是一个适合训练实时音频语言模型的音频标记器。我们研究的一个附带发现是,客观音频质量指标与主观音频质量之间缺乏相关性的令人担忧的现象。特别是,我们发现VisQOL(声学指标)在修改生成器架构时提供了可靠的感知质量代理指标。然而,当改变训练目标(例如移除重建损失)时,VisQOL的评分变化方向与人类感知完全不相关。这一观察强调了设计可靠客观代理指标以反映感知质量的开放挑战。

生成建模的消融研究

指标。我们进行了消融研究,以评估使用RQ-Transformer的影响,以及比较不同的延迟模式和各种标记级别的权重。所有模型的时间Transformer都用Helium初始化,并在音频数据上预训练。当比较具有相同延迟模式且没有内部独白(Inner Monologue)的模型时,我们依赖于困惑度(perplexity),并将其在语义和声学标记上取平均。然而,不同延迟的模型之间的困惑度是不可比的,因为它们建模的是不同的条件分布。为了比较不同的延迟模式,我们通过Whisper(Radford等人,2023)转录生成的语音(基于3秒的提示)并用外部文本语言模型对结果进行评分来衡量Moshi生成可理解、一致语音的能力。我们依赖一个轻量级的文本模型——LiteLlama-460M-1T14——因为它更适合于训练过程中的连续评估。我们还报告了转录本的长度(以字符为单位),因为我们发现它是一个强的模型质量预测因子(弱模型通常会崩溃为静音)。

ps:困惑度(Perplexity)是自然语言处理(NLP)中常用的一种评估语言模型的指标。它衡量的是模型对测试数据的预测能力,即模型对测试集中单词序列出现概率的预测准确度。困惑度越低,表示模型对数据的预测越准确。

结果 – RQ-Transformer 表5报告了使用RQ-Transformer的消融研究结果。我们首先复制了Copet等人(2023)的设置,使用[0, 1, 2, 3, 4, 5, 6, 7]的延迟模式,这意味着每个RVQ标记级别在前一个级别之后的一个时间步生成。在这种情况下,我们发现使用RQ-Transformer并不是必需的,因为它仅在困惑度上有微小的改进。然而,这种延迟模式导致了8个时间步的理论延迟,即640毫秒,这对于实时对话模型来说是不兼容的。因此,我们将延迟减少到240毫秒,使用模式[0, 2, 2, 2, 2, 2, 2, 2]。在这种情况下,使用RQ-Transformer对RVQ标记进行建模显著提高了困惑度,超过了使用单独分类头的方法。因此,在严格的延迟约束下,RQ-Transformer成为RVQ标记生成模型的关键组件。

表 5:RQ-Transformer 使用的消融研究。所有模型均以 Helium 初始化,并在音频上预训练。当不使用 RQ-Transformer 时,我们使用独立的分类头预测 8 个级别的令牌,遵循 Copet 等人(2023)的做法。请注意,困惑度仅在具有给定延迟的模型之间可比较,因为对于较高的令牌,分类任务在延迟更多时会更容易。

额外的消融研究表6报告了额外的消融研究,包括额外的延迟模式、语义标记损失的权重以及我们提出的内部独白程序,所有这些都使用了RQ-Transformer。首先,我们比较了三种与实时对话兼容的延迟配置。[0, 0, 0, 0, 0, 0, 0, 0]模式代表了在12.5Hz Mimi标记下可以获得的最小延迟80毫秒。允许额外80毫秒的延迟(一个时间步的延迟)显著提高了生成语音的质量,而240毫秒【3个step延迟】的延迟则带来了进一步的适度改进。在早期实验中,我们还观察到每个RVQ级别的个别损失之间存在冲突,尽管每个级别在最终的可理解性和音频质量上比下一个级别更重要。因此,我们对架构和训练过程进行了两个更改。首先,我们将预测语义标记的损失权重增加到100,而其他所有音频标记级别的损失权重保持为1。这进一步提高了语音的可理解性。此外,我们通过使用深度参数化(如第3.4.1节所述)减少了RVQ级别之间的竞争,使得每个RVQ级别由Depth Transformer中的自己的一组权重预测,而不是在各级别之间共享权重。最后,启用内部独白对生成语音的质量和长度带来了最显著的改进。

表 6:延迟模式、语义令牌权重和内心独白的消融研究。所有模型均以 Helium 初始化,在音频上预训练,并使用 RQ-Transformer。我们调整语义令牌的权重,同时将其他令牌(包括使用内心独白时的文本令牌)的权重保持为 1。由于不同的延迟模式无法通过困惑度进行比较,我们从有效集中的 3 秒提示生成续写,用 Whisper(Radford 等人,2023)转换为转录,并报告其与 LiteLlama-460M-1T13 的负对数似然及其长度(以字符为单位),作为语言质量的代理。

讨论:除了架构和延迟模式的选择,这些消融研究表明,在音频到音频的设置中,将文本令牌建模为音频令牌的前缀(使用 Inner Monologue)是非常有帮助的。鉴于深度参数化和对语义令牌权重设定为100的积极影响,这两者在我们后续的所有实验中均被使用,同时也纳入了最终的训练程序。此外,如表1所述,我们通过以2的声学延迟预训练 Moshi,并以1的声学延迟进行微调,确定了160毫秒【(1+1)*80】的理论延迟。

Audio Language Modeling

指标。我们首先测量Moshi在大规模音频数据上进行下一个标记预测训练时,对语音序列建模的能力。为此,我们依赖于“无文本NLP”(Lakhotia等人,2021)指标,这些指标通过比较表示为音频标记的正例和负例语音示例的似然性来评估音频语言模型的语言知识。

具体指标:

  • sWUGGY: 评估模型从语音中学习词汇表的能力,通过比较一个现有单词和一个无效变体(例如,“oxidation”和“accidation”)的似然性。
  • sBLIMP: 评估语法对比。
  • Spoken StoryCloze (Hassid等人,2023): 通过比较常识性的五句故事,最后一句要么与上下文连贯,要么不连贯,从而评估语义对比。
  • Spoken Topic-StoryCloze (Hassid等人,2023): 这是一个变体,其中负例延续是从不相关的句子中随机采样(而不是微妙地不连贯),从而得到更高的分数。

对于所有这些指标,我们使用按序列长度归一化的负对数似然来评分。由于我们的模型每个时间步生成多个标记,我们将每个时间步的所有标记用训练时使用的权重相加,即语义标记权重为100,声学标记权重为1。我们不在这些评分中包括内部独白的文本标记,因为这些指标旨在比较未经转录的音频序列,应仅在音频标记上计算。同样,在指令调优后评估多流模型时,我们只对用户流对应的标记进行评分,因为它不包含文本标记。最后,我们还报告了Spirit-LM和Moshi在MMLU(Hendrycks等人,2020)上的文本理解评估(不包括音频标记),以此衡量音频训练如何影响原始检查点的文本知识。

基准。我们对比了来自音频语言建模文献中的基线模型,在三种设置下进行比较。我们在三个设置中与音频语言建模文献中的基准进行比较。第一类包括从随机初始化开始的仅音频模型,包括GSLM(Lakhotia等,2021)、AudioLM(Borsos等,2022)和TWIST-1.3B(Hassid等,2023)。在这种情况下,我们报告仅在音频数据上随机初始化的单流Moshi的指标,并且没有Inner Monologue。第二类包括从预训练文本语言模型开始,然后仅在音频上训练的模型。这包括TWIST-13B,以及VoxtLM的仅音频版本(Maiti等,2023年,表3的第一行)和Spirit-LM的仅音频版本(在(Nguyen等,2024,表5)中报告为“Speech Only”)。相应的Moshi模型类似于上述提到的模型(仅音频数据,无Inner Monologue),但从预训练的Helium检查点开始。最后一类由实际的多模态模型组成,这些模型在语音和文本数据上联合训练。在这种背景下,我们报告Moshi的三种配置的结果。单流数据预训练:报告Moshi在单流数据上的预训练结果。多流后训练和微调:报告最终模型的结果,该模型经过多流后训练和微调,使用真实录音来调节合成数据的生成。合成声音的Moshi:最后一个模型与前一个相同,只是它使用合成声音。

请注意,即使这些模型是用内部独白训练的,它们在评估时也不使用内部独白,以提供与基线的公平比较。

结果。表7报告了音频语言建模的结果。在“仅音频 – 冷启动”设置中,Moshi已经提供了强大的基准,特别是在sTopic-StoryCloze上大幅提高了先前工作的表现。当使用Helium检查点初始化并仅在音频数据上训练时,Moshi在这一类别的大多数指标上超越了以前的工作。最后,尽管多模态训练改善了语音中的常识推理(如sStoryCloze性能所示),但与仅在音频数据上训练的模型相比,我们观察到在词汇和句法判断(sWUGGY和sBLIMP)上的混合效果。特别是,单流预训练在一定程度上降低了sWUGGY和sBLIMP的表现,而指令微调严重影响了sWUGGY,这意味着受指令影响的模型在解决词汇判断时更困难。我们假设这与对不同质量数据的微调有关,并且对用户流(用于为表7中所有音频指标评分的口语对)模拟嘈杂和混响条件,这使得细致的词汇判断更难解决。最后,Moshi在MMLU上的得分比Spirit-LM高出12分,从而展示了更高的常识和文本理解能力。我们还强调,Moshi是表7中唯一将语义和声学令牌集成到单一生成模型中的模型,而AudioLM使用三个独立阶段,VoxTLM、TWIST和Spirit-LM仅建模语义令牌并依赖外部声码器。因此,Moshi是此比较中唯一能够在语音和文本中展示强大语言建模能力的模型,同时能够以任意声音和条件建模语音。

表7:音频和文本语言建模的性能。我们报告基于负对数似然的准确率,并按序列长度进行标准化。MMLU在5-shot设置下进行评估。沿用Nguyen等(2024)的术语,∅表示不支持的模态,而-表示未报告的数字。

讨论。尽管“无文本NLP”基准帮助开发了首个音频语言模型,但我们观察到它们在开发像Moshi这样的对话模型时并未始终提供良好的指导。特别是,我们发现常识指标 Spoken StoryCloze 与词汇sWUGGY /句法判断之间缺乏相关性是频繁且易于解释的,原因在于我们在训练中使用的声学条件的多样性。此外,我们没有观察到模型的词汇多样性或可懂性在微调模型时下降,这与sWUGGY的下降相矛盾。这就是为什么我们在下一部分中也评估口语问答,以探测模型的常识、知识和词汇能力。

口语问答

指标。我们评估最终多流Moshi模型的口语问答能力。我们依赖于Nachmani等人(2024)提出的口语网页问题和Llama问题。同时,我们合成TriviaQA的音频版本作为另一个基准。在评估Moshi时,我们将问题的音频标记插入用户流中,以模拟用户交互。

基准。我们与Spectron以及Nachmani等人(2024)使用的基准进行比较,除了SpeechGPT(Zhang等,2024a)外,所有基准已经在第5.4节中介绍。为了衡量内心独白对口语流利度的影响,我们比较了使用和不使用内心独白训练的Moshi与这些基准。由于GSLM、AudioLM和TWIST仅为音频模型,因此不使用内心独白的Moshi提供了公平的比较。另一方面,Spectron和SpeechGPT依赖于链式模式(Chain-of-Modality)——它们首先生成文本答案,然后生成语音——因此我们将其与使用内心独白的Moshi进行比较。此外,为了量化由于在音频数据上训练可能导致的知识下降,我们还将Moshi与Helium进行了比较,后者在评估每个口语数据集的文本对应物时被使用。

表8:口语问答评估。在Web Questions(Berant等,2013)、LlaMA-Questions(Nachmani等,2024)和Trivia QA(Joshi等,2017)基准上进行口语问答(0-shot),使用TTS引擎合成。对于前两个基准,我们使用Nachmani等(2024)报告的数字。对于LlaMA-Questions,我们使用Nachmani等(2024)提供的音频。对于Web Questions和Trivia QA,我们合成了自己的音频,保留了所有问题。对于Moshi,我们仅在指令微调期间预先添加了一个随机引言。我们还提供了Helium文本模型的性能作为对照。

结果。表8报告了在三个基准上的准确率。尽管仅使用音频的Moshi在其类别中显著优于基准,但最引人注目的结果是内心独白对Moshi性能的影响,使其在所有基准上的准确率几乎增加了三倍。这一点尤其显著,因为内心独白仅略微增加了推理成本(每个多流时间步需要生成17个标记,而不使用内心独白时为16个)。我们再次强调,在所有比较的模型中,Moshi不仅提供了最佳的口语问答性能,而且是唯一一个能够同时建模语义和音频标记的模型,从而能够在多种条件下处理任意声音之间的交互。此外,不但Moshi显著优于SpeechGPT和Spectron,而且它也是唯一一个与流式推理兼容的模型,因为链式模式需要先生成完整的文本答案,然后再生成语音,而内心独白则以流式方式生成两者。

讨论。尽管Moshi表现强劲,但我们观察到其性能低于原始的Helium,这与表7中报告的MMLU从Helium的54.3降至49.7相一致虽然Web Questions和Llama Questions上的适度差异可以通过在音频数据上进行训练从而减少用于文本知识的参数量来解释,但在Trivia QA上的巨大差异促使我们更仔细地检查错误模式。我们发现,特别是多句提问(例如:“《怪物的恐惧》是一本畅销小说的早期标题,激发了1970年代中期的一部高票房电影。最终它以什么名字让读者和观众感到恐惧?”)或具有特定句法结构的问题(例如:“在人类身体上,瘢痕是一种什么类型的?”)对Moshi尤其具有挑战性,因为它在以口语风格的对话上进行了微调,而这些对话并没有展示这样的模式。因此,我们假设在微调过程中覆盖更多句法场景可以缩小这个差距。

生成对话的质量和统计数据

指标。除了单轮问答外,我们还通过外部语言模型对生成对话的语言质量进行评估,同时关注轮换(turn-taking)指标。我们遵循Nguyen等人(2023)的研究方法。轮换(turn-taking)指标定义如下:

  • 间歇单位(IPU, Inter-Pausal Units):由至少0.2秒的静默分隔的连续语音段。
  • 停顿(Pauses):同一说话者之间的IPU间的静默。
  • 间隙(Gaps):不同说话者之间的IPU间的静默。
  • 重叠(Overlaps):双方都有IPU的时间。

根据Nguyen等人(2023)的研究,语义评估使用开源的DialoGPT模型(Zhang等,2019),我们通过使用DialoGPT所期望的<|endoftext|>标记将每位发言者分开,计算转录对话的困惑度。我们从Fisher数据集中随机选择1000个10秒的提示,并使用Moshi生成续写。对于每个提示,生成32个续写,并提供3种不同温度的结果,因为温度显著影响结果。

基线。我们与dGSLM(Nguyen等,2023)进行比较,因为它也是一个全双工生成模型,基于Fisher数据集训练。Nguyen等(2023)使用50个提示,每个提示生成50个续写,并报告他们对话模型的结果以及级联顶线模型(ASR + LM + TTS)。

结果。表9显示,尽管Moshi是一个音频到音频模型,但在语言质量方面表现与级联模型相当。两者的困惑度均优于真实数据,这可以解释为这些模型训练于与DialoGPT训练数据更相近的数据,而不是Fisher数据集。这相较于Nguyen等(2023)中非级联模型的表现是一个显著改进,该模型在此场景下无法生成连贯的语音。

表9:生成对话的语言质量和轮换统计数据。由于我们训练多流模型以生成对话的双方,因此可以在无需与真实用户互动的情况下生成对话。这使得评估Moshi学习自然对话动态的能力成为可能。

流式语音识别(ASR)和文本转语音(TTS)

指标。 第3.4.4节和附录C描述了如何通过简单地改变文本和音频标记之间的延迟,使用Inner Monologue提供流式TTS或流式ASR系统。我们描述了如何通过简单地改变文本标记和音频标记之间的延迟,使内部独白(Inner Monologue)提供流式TTS或流式ASR系统。具体来说,我们通过将音频标记延迟2秒来训练流式TTS模型,为文本标记提供一些前瞻,并在推理时使用教师强制(teacher forcing)文本标记。类似地,我们通过将文本标记延迟2秒来训练流式ASR模型,允许模型在生成文本标记之前先听取音频内容。在这种情况下,在推理时我们对音频标记使用教师强制。我们在TTS中使用0.6的温度进行生成,而在ASR中使用贪婪解码,并在LibriSpeech(Panayotov等人,2015)的test-clean子集上以词错误率(WER)进行评估。对于TTS,我们首先使用在LibriSpeech 960小时数据上微调的HuBERT-Large(Hsu等人,2021)转录音频,仅考虑4到10秒之间的序列,以便与Vall-E等基线进行比较。我们强调,在我们的ASR和TTS系统的训练过程中没有使用任何LibriSpeech数据。

结果。 我们的流式TTS模型在LibriSpeech测试集上的WER为4.7%,优于Vall-E的5.9% WER,但不如NaturalSpeech 3(Ju等,2024)的1.81%。然而,Moshi只需2秒的前瞻性,而Vall-E和NaturalSpeech 3则需要访问完整的序列。我们的ASR系统的WER为5.7%,而Streaming FastConformer(Noroozi等,2024)在类似的前瞻性下获得了3.6%。值得注意的是,我们的ASR系统还提供与文本的对齐的时间戳,精度为80毫秒(时序变换器的帧速率)。

讨论。 这有限的实验并非旨在与最先进的系统(尤其是ASR)竞争,而是旨在展示Inner Monologue的灵活性,可以将多个任务映射到同一框架中。我们还强调,LibriSpeech测试集的标准评估并未提供展示我们TTS系统强大能力的测试平台,特别是在多流建模中建模两个说话者的能力以及生成长达5分钟的一致、自发且富有表现力的对话(而Vall-E只评估4到10秒之间的朗读语音)我们将流式TTS的全面评估留待未来工作。

压缩Moshi及其对语音质量的影响

随着大多数现代大型语言模型(LLMs)的参数达到数十亿,模型大小成为在资源受限设备(例如,使用用户级GPU的笔记本电脑)或模型部署(例如,在线网络演示服务多用户)等实际应用中的一个众所周知的瓶颈。为了解决这个问题,后训练量化(PTQ)是一种广泛使用的效率技术,用于压缩模型权重和激活,但可能会导致性能下降。最近的研究表明,LLMs通常可以成功量化为8位整数,有时甚至可以使用更先进的技术来处理异常权重,进一步降低到更低的位宽(Dettmers和Zettlemoyer, 2023; Dettmers等人, 2022; Frantar等人, 2023; Tseng等人, 2024)。然而,关于语音模型量化的文献远少于LLMs。因此,在本节中,我们调查量化Moshi如何影响其性能,特别是在语言学和声学方面,强调某些由于模型量化加剧的音频降质问题。

量化格式。 为了量化Moshi,我们遵循PTQ文献中的常见设计选择。在以下所有结果中,我们采用以下设置:

(i)激活以bfloat16精度(BF16)存储,并在每个线性层的输入处动态量化为8位,使用对称量化(即AbsMax);

(ii)模型权重使用非对称量化(即MinMax)进行不同位宽和块大小的量化。这包括时序 Transformer和深度Transformer的权重。实际上,我们发现深度Transformer对量化具有相当好的鲁棒性,因为仅保持其权重的高精度并不会显著改善音频质量

(iii)只有初始嵌入层(文本和音频)、RMSNorms和Mimi编解码器保持未量化

注意:虽然权重范围设置也是常见的做法(Nagel等人, 2021),但我们没有使用均方误差(MSE)微调获得的量化尺度,因为我们发现这对生成样本的质量影响很小。

结果 – 语言评估。 为了评估量化对模型推理能力的影响,我们在MMLU基准测试上评估了量化模型的性能,包括作为Moshi基础的仅训练文本数据的Helium基础模型(见表10)和Moshi本身(见表11)。一般来说,Helium对量化更具鲁棒性,特别地,假设量化块的大小为32,将Helium权重量化为4位可以得到一个缩小3.43倍的模型,其MMLU评分与浮点基线相差不到2分。该量化格式几乎与llama.cpp的Q4_0相同,因此可以方便地用于高效推理。

相比之下,对Moshi使用相同的量化方法则导致了性能的显著下降,MMLU评分降低了5到10分。在在线演示中,我们将权重保持在8位格式,因为这导致模型的MMLU下降约2分,而模型大小大约是浮点基线的两倍。

表10:量化对Helium模型的语言影响,以MMLU衡量。‘WXA8’表示权重量化为‘X’位,激活量化为8位,使用整数标量PTQ。模型大小(以GygaBytes为单位)在括号中给出,基于量化块大小为32,考虑了模型权重和以float16存储的量化参数。通过足够精细的量化块,4位模型的MMLU评分仍在浮点基线的2分之内。
表11:量化对Moshi模型的语言影响,以MMLU衡量,针对由Inner Monologue直接生成的文本令牌的不同量化Moshi模型进行评估。与之前的表格一样,模型大小以块大小为32时进行指示。

结果 – 音频质量。为了评估量化模型生成的样本的音频质量,我们使用Lo等人(2019)在speechmetrics中实现的MOSNet指标。具体来说,我们从未量化模型生成一个短提示(64个令牌),然后以温度t = 0.8和序列长度1024个令牌生成每个量化模型的完成。我们重复此过程500次,并报告非重叠窗口的MOSNet得分分布(见图5)。虽然MOSNet得分在样本之间表现出较大的方差,但在将模型权重量化到4位后,音频质量通常几乎没有退化。然而,对于较低的位宽,我们观察到MOSNet得分对一些更严重的音频退化缺乏敏感性,这些退化是由激进量化引起的。例如,它无法区分纯音频伪影(如嘈杂的声音)和语音模式中的伪影(如模型重复性增加)。这与我们在第5.2节中观察到的客观和主观音频质量指标之间缺乏一致性相符。此外,MOSNet是为一种非常不同的基准设计的,即模仿人类对转换语音的评估,因此它对这些伪影不够敏感也不足为奇。相反,为了衡量音频样本中这种退化的存在或缺失,我们首先观察到某些音频伪影可以通过生成的文本和音频令牌的熵谱识别:图6展示了一些示例,附录D中详细描述了伪影类型及其测量方法。

图5:模型压缩对Moshi的声学影响。对不同位宽压缩模型生成的样本进行MOSNet评估。我们在非重叠的5秒窗口中评估MOSNet得分,并报告每个模型的500个样本的得分分布。
图6:模型压缩引起的音频伪影。捕捉到由模型量化引起的特定音频伪影的典型熵谱示例。对于每个时间步,我们独立计算过去128个token的熵,分别针对文本和音频代码本的token。然后,我们在非重叠的64个token窗口中测量不同伪影的存在或缺失,具体说明见附录D。

根据这一见解,我们测量了在与之前MOSNet分析相同的生成音频样本中不同音频伪影的存在或缺失。结果如表12所示,附录D的图11提供了更详细的逐时间步分析。在4位宽度下,我们再次观察到音频降解很少。降到3位格式时,音频降解变得更加明显,并且随着生成时间步的增加而变得更频繁,尽管较细粒度的量化格式通常对这些伪影更具鲁棒性。然而,当权重被激进地量化为2位时,这两种量化格式的音频质量显著下降,我们也在定性上观察到了这一点。

讨论:Moshi的语言能力对模型权重和激活的量化比输出音频质量更敏感。具体而言,音频质量在精度降到4位时仍接近浮点基线,即使量化了整个模型,包括深度变换器。相比之下,当模型权重量化到6位以下时,仅使用后训练量化,MMLU性能遭遇显著下降。根据最近的量化技术(Tseng等,2024),我们可能期望通过使用量化感知微调而不是PTQ,在较低的位宽下改善性能。然而,由于Moshi的训练管道涉及多个阶段和训练数据集,这需要对设计量化训练阶段和校准数据集进行更深入的研究,以保留量化后丢失的所有Moshi能力。

安全性

在Moshi的开发过程中,我们探索与AI生成内容安全相关的不同方向。在本节中,我们具体考虑几个与Moshi生成的内容相关的问题,每个问题都在专门的小节中进行探讨:

  1. 我们的模型在生成有毒内容方面表现如何?
  2. 如何避免模型重复训练集中的音频内容?
  3. 我们如何确保模型使用我们希望赋予Moshi的声音?
  4. 如何识别给定内容是否由Moshi生成?

有毒性分析

科学界在过去几年中对文本生成模型的偏见和有毒性问题投入了一些努力。相比之下,音频安全的研究尚不成熟。由于音频和文本模型在使用上有所不同,且通过非语言信号(如讽刺、语调等)传达多重意义,因此进行公平比较并不简单。尽管存在这些局限性,为了便于将Moshi与文本生成模型进行比较,本次分析将我们的有毒性分析限制在模型生成的文本上。我们采用ALERT基准(Tedeschi et al., 2024),该基准在多个类别(仇恨、自残、武器、犯罪、性、物质)下评估安全性。附录D中的表18报告了我们在该基准上的详细有毒性分析结果。Moshi与流行的仅文本模型的综合得分如下:

通过这项分析,我们发现Moshi在排名中处于中间位置。行业模型表现最佳,这是可以预期的,因为这些模型受益于大量的私人注释、红队测试和反馈循环。

再现分析

模型生成其在训练时见过的内容的问题,我们称之为再现,与过拟合密切相关:模型在训练期间看到的序列或子序列越多,它在生成过程中生成该序列的可能性就越大。需要注意的是,对于语音模型,不仅文本可能被再现,语音的音调、语气,以及如果在训练时存在的背景旋律也可能被再现。因此,重要的是要减轻与再现相关的潜在知识产权问题,例如未经许可复制受版权保护的内容或使用某个人的声音进行音频生成。

评估协议。对于每个模型,我们测量生成中再现训练数据集中最常见音频片段的比例(总共100,000次生成)。为此,我们首先开发了一个匹配系统,以检测整个训练数据集中最频繁的音频片段,详细信息见附录B。我们选择一个足够长(16秒)且易于从文本和音频中检测的最常见片段。我们测量与此最常见片段完全匹配的生成比例。在匹配过程中,我们最初使用音频和文本匹配,但观察到基于文本的匹配在初始匹配步骤中具有更高的召回率。我们手动验证所有生成的内容,以过滤掉不完全匹配的异常值。

无条件与提示生成。我们首先测量无条件生成的情况,以评估模型在未通过提示引导时是否倾向于生成特定序列。作为补充,我们使用最常见音频片段的前3秒来提示模型,并测量继续生成与该训练集音频相同的次数。表13报告了这些再现结果。

表13:不同模型在无条件生成中的训练数据再现情况
我们测量每个模型在生成过程中,重复训练数据中最频繁音频片段的次数,并对不同温度值进行比较。通过数据集去重,我们在100,000次生成中并未观察到最频繁片段的确切再现,即使在使用该音频片段的前三秒进行提示时也是如此。

结果与微调的影响。我们观察到,预训练模型在原始数据集上训练时,往往会生成训练集中频繁出现的序列。采样温度对再现率有重要影响:通常用于生成的值(0.6–1.0)更容易出现再现现象。在1000次生成中,经过对话微调的模型并未生成最频繁的训练序列。需要说明的是,微调可能会被覆盖,因此可能不足以单独避免再现现象。

类似于文本模型的情况(Carlini等,2022),再现现象受模型在训练中使用特定序列的次数显著影响。因此,我们通过识别所有频繁的音频片段并在训练时过滤掉这些片段,评估去重训练数据集的影响。在表13中,我们观察到这一预处理步骤[附录B:deduplicated]将最频繁序列的再现次数降至零,即使没有进行微调。

系统声音一致性

一个潜在的语音到语音模型的风险是未经授权的声音生成。该模型应该使用其目标声音,而不是可能模仿用户的声音。为了评估Moshi在多大程度上采用用户的声音而不是目标声音,我们使用以下协议:

  • 生成100小时Moshi与第二个合成发言者之间的对话。
  • 在每个段落上运行一个说话人验证模型(WavLM(Chen等,2022)large)以提取说话人嵌入。
  • 计算每个主说话者段落的嵌入与(i)主说话者的第一个段落和(ii)生成说话者的第一个段落之间的余弦相似度。
  • 注意:我们排除所有开始时间在15秒之前的段落,以避免将主说话者的第一句作为参考。

在生成的数据集中,主说话者的声音在10,249次(98.7%)情况下更接近主说话者的参考段落,而在133次(1.3%)情况下更接近另一说话者的参考段落。我们还关注说话者的一致性随时间的演变。根据Borsos等(2023),我们计算与上述相同的比例,但针对在特定时间开始的段落组,以测量随时间的漂移。表14显示说话者的一致性在时间上保持稳定,这意味着我们没有观察到对话进行时的漂移。这表明,在指令调优期间简单选择使用一致的声音足以在推理时提供稳健性。

表14:随时间变化的说话者一致性。我们测量在计算远离参考段落的段落的说话人嵌入时,Moshi的段落中的说话人嵌入与其参考段落的相似度有多高,相较于用户的参考段落。

Moshi生成内容的识别:水印技术

为了确定给定的音频是否由Moshi生成,我们研究了两种互补的解决方案:索引和水印。第一种,即音频索引,仅在我们能够访问生成内容的机器时适用,例如在Moshi演示的情况下。我们在附录B中描述了我们的音频匹配系统。以下小节中,我们将更具体地讨论水印,其目标是向生成的音频添加不可察觉的标记。

信号基础水印的评估。我们调查现有的音频水印方法是否可以用作重新识别Moshi生成内容的一种方式。为此,我们分析了Audioseal方法(San Roman等,2024b)在我们上下文中的鲁棒性。该方法作为开源库可用。为了进行评估,我们将音频信号重采样到16kHz,以使采样率与Audioseal说明中推荐的采样率相匹配。我们在以下设置中测量平均标记检测得分:

  • 无水印:测量未添加标记时的检测得分。
  • 无攻击水印:未修改水印音频信号;
  • 粉红噪声:我们向水印音频中添加小幅粉红噪声(σ = 0.2);
  • RVQGAN:我们使用最近的先进自编码器(Kumar等,2023)对音频信号进行压缩和解压缩。我们使用公开可用的预训练16kHz模型,该模型与第5.2节中用作基线的24kHz模型不同。
  • Mimi自编码器:我们使用自己的分词器对信号进行压缩和解压缩。此操作使用24kHz音频进行,因此涉及两个重采样阶段(从16kHz到24kHz,再回到16kHz)。

我们在表15中报告了结果。我们观察到,当音频未更改时,标记的检测率很高。在激进的粉红噪声下,需要相对较长的序列才能获得高检测得分。然而,标记对强压缩的鲁棒性较差:我们考虑的两个自编码器都具有低比特率,因此会丢弃与信号重构无关的任何内容。因此,我们的Mimi编解码器将mark删除到一个水平,使水印音频与非水印音频难以区分,从而在这种情况下使信号基础水印变得无用。

关于生成音频水印的讨论。上述基于采样的水印方法缺乏幂等性,这对检测器在测量采样偏差时的可靠性造成了问题。值得注意的是,为了使这些方法正常工作,提供哈希密钥上下文的n元组在多个连续标记期间必须足够稳定。减少上下文长度可以提高稳定性,但会大幅增加产生退化音频序列的可能性,类似于(Holtzman等,2019)观察到的退化问题。

虽然我们将这种采用基于文本的水印的方法视为一个负面结果,但在此我们讨论了一些可能的绕过上述标记稳定性问题的潜在方法,通过重新编码实现:

  • 仅标记RQ的第一级可以提高稳定性。在我们的初步实验中,将这些索引作为哈希函数中的上下文,并限制对之前时间戳的依赖,显著提高了稳定性(尽管还不够)。
  • 通过在离散潜在空间中添加特定损失,可以改善幂等性,使音频标记在自编码过程中保持稳定。
  • 这种自编码可能被学习为对信号变换具有鲁棒性,类似于学习基于神经网络的图像水印时提出的方案(Zhu,2018;Fernandez等,2022)。根据我们的分析,增加对适度时间偏移的容忍度尤其重要。
  • 可以标记文本而不是音频。一个缺点是,文本作为添加标记的通道容量较低,对于短对话来说并不足够。另一个问题是,检测标记需要可靠的转录。

最后但并重要的是,需要一些探索,以确保在开源模型时去除水印程序并不简单。举个例子,与稳定扩散模型相关的实现中,去除水印的唯一方法就是注释掉一行代码。22 Sander等(2024)的研究在这方面是一项有前景的工作,他们展示了检测模型是否在水印文本上训练是可能的。San Roman等(2024a)刚刚分享了一种利用这一观察结果的方法:水印是通过训练数据隐式添加的,遵循Sablayrolles等(2020)提出的“放射性数据”的精神。

结论

在这项工作中,我们介绍了Moshi,首个实时全双工语音对话系统。Moshi的第一个组成部分是Helium,一个拥有70亿参数的文本LLM,其性能与计算预算相似的开放权重模型竞争。为了将音频编码为适合语言建模的离散单元,我们引入了Mimi,一个语义声学神经音频编解码器,它在低比特率下提供了最先进的音频质量,同时以与实时生成兼容的低帧率运行。接着,我们提出了一种新的层次化多流架构,支持以语音到语音的方式生成任意对话。此外,我们展示了通过Inner Monologue,这种新方法在音频标记前生成文本标记,能够显著改善语音到语音的生成,同时保持流式推理的兼容性。我们的实验表明,Moshi在语音问答和对话建模方面展现了最先进的水平,同时在不生成有害内容和保持声音一致性方面显示出令人满意的安全性。总之,我们介绍了一整套模型和方法,从文本LLM到神经音频编解码器,再到生成音频模型,结合成一个具有160毫秒理论延迟的实时语音对话系统,能够进行长达5分钟的复杂多轮对话。我们发布了Mimi和Moshi,以促进此类应用的发展。此外,我们展示了Inner Monologue方法如何通过改变文本和音频标记之间的延迟,设计流式TTS和流式ASR。我们相信,Inner Monologue和多流建模将在语音到语音和音频到音频的应用中产生积极影响,超越对话建模。

附录

附录A. Additional Ablation on Mimi Codec

表17:Mimi编解码器超参数的消融研究。我们通过报告在音素ABX可区分性任务上的错误率来评估语义建模。为了评估重构质量,我们计算VisQOL和MOSNet。“量化率”指在训练期间仅在50%的时间内对潜在空间应用量化(与量化器丢弃无关)。

附录B. 音频匹配与去重

我们开发了一个音频匹配系统,其目标有两个方面:

  1. 源内容去重:去除频繁的重复内容,以避免过拟合和数据集中音频内容的过度再现,如第6.2节所评估。
  2. 索引解决方案:通过在生成时收集样本的签名,我们可以直接检索,判断某些内容是否由我们的在线演示生成。

我们的音频匹配解决方案受到Wang(2003)工作的启发,因为它在效率和有效性之间提供了良好的折衷。该方法是一个检索系统:给定一个查询,它在预先索引的数据集中检测相似音频。在我们的案例中,签名设计更倾向于去重用例,这需要更高的效率:形式上,我们需要将数据集中每个音频与整个数据集进行比较,这引发了效率问题。签名提取的过程如下。

星座图:生成签名的第一步涉及计算一组称为星座图的关键点。我们的程序受到Wang(2003)的启发,如图7所示。首先,(1)我们从音频信号计算梅尔谱图,时间以40Hz的频率离散化,频率范围分为64个频段。然后,我们应用三个滤波器以选择时频位置:(2)能量滤波器确保我们仅选择足够鲁棒的位置;(3)时间滤波器和(4)频率滤波器确保我们选择相对于时间和频率的极大值。这些滤波器的组合是(5)一个星座,从中提取哈希值。

梅尔谱关键点提取。对音频梅尔谱应用三个滤波器,以提取一个关键点的星座,基于这些关键点计算哈希签名

成对匹配和一对多比较。通过我们的签名提取,我们可以通过比较两个音频的签名集来比较它们,这相当于计算哈希键的交集。当想要将查询音频与一个包含多个音频的数据集进行比较时,使用倒排文件或哈希表进行比较更加高效。在这种情况下,索引结构返回与每个音频匹配的签名列表和匹配时间戳。与 Wang(2003)类似,我们仅保留在时间上具有一致性的匹配,这得益于一个简单的霍夫1D时间投票方案。可选地,我们在匹配签名时在时间戳 tbt_btb​ 和 tft_ftf​ 上引入 ±1 的容忍度。由于这一容忍度增加了复杂性,因此在数据集去重的情况下我们不使用它。

去重:签名融合集。对于我们的去重策略,我们首先交叉匹配数据集中所有音频片段,并提取足够频繁发生的匹配片段(通常 ≥ 10 次匹配)。由于它们的签名是冗余的,我们删除在相同相对时间戳处发生的所有重复签名,以产生一个单一的重复签名集。在训练时,为了确定某个音频片段是否是要过滤的频繁重复片段,我们只需将其签名集与重复签名集进行比较。换句话说,我们仅在假定的训练片段和合成的重复签名文件之间执行简单的音频到音频匹配。只有在得分低于预定义的匹配阈值时,我们才会使用该片段进行训练。

附录C 延迟文本语言模型作为zero-shot流式ASR和TTS:

如第3.4.4节所述,Moshi模型音频标记,并与通过特殊填充标记在音频帧率上对齐的文本流结合,如图4所示。我们可以通过在音频和文本标记之间引入延迟来调整此方法以用于ASR和TTS。在这两种情况下,模型以全流式模式运行,具有固定的延迟(此处为2秒)。

ASR模式:如果音频领先于文本,我们忽略模型对音频标记的预测,而是使用某些音频输入的标记,并自由采样文本标记。然后,文本流包含音频转录,具有单词级的精细对齐,如图8所示。

TTS模式:如果文本领先于音频,我们可以对称地推导出一个TTS引擎。为此,我们需要一个正确填充的文本标记集。我们通过允许模型自由采样PAD和EPAD标记以zero-shot方式获得这些。当模型试图采样不同的标记时,我们将输入下一个要生成的单词。需要注意的是,我们可以通过保持填充标记的在线平均比例来进一步控制语音速率。当该比例低于给定目标值时,我们通过在其logits上引入小的奖励,确保在所有情况下保持合理的速率和良好的可懂性。最后,使用同时包含文本和音频标记的前缀,我们可以控制说话者的声音。图9给出了表示。

多流TTS:我们在单流和多流模式中都使用此机制。在多流模式下,模型输出两组音频标记。文本在单个流中提供,使用<bos>和<eos>标记将文本与两个说话者分开。

图8:Moshi用于自动语音识别(ASR)时建模的联合序列表示。每一列代表联合序列中某个步骤的标记(Vs,k),类似于公式6中的描述,但经过调整以适应ASR。文本延迟了2秒,同时我们使用声学标记延迟τ = 2。标记从底部到顶部在深度Transformer中进行预测。音频标记与输入音频保持一致,而文本标记则自由采样。这还提供了精确的单词时间戳。

图9:Moshi在文本到语音(TTS)模式下建模的联合序列表示。每一列代表联合序列中某个步骤的标记(Vs,k),类似于公式6中的描述,但经过调整以适应TTS。音频延迟了2秒,同时我们使用声学标记延迟τ = 2。标记从底部到顶部在深度Transformer中进行预测。文本预测通常被忽略,而是使用要生成的文本的标记。然而,这个文本输入缺乏填充标记。在每个单词结束时,我们允许模型自由采样PAD和EPAD标记。如果模型尝试采样其他标记,我们则使用下一个单词的标记。语义和声学音频标记正常采样,由于使用的延迟而隐式地依赖于文本。通过记录给定单词被模型消耗的时间,这种方法还提供了生成音频中单词的精细对齐。

附录 F. 合成转录生成用于微调

合成转录生成用于微调,我们提供合成转录的示例:

Qwen2 技术报告

Abs:https://arxiv.org/abs/2407.10671
Code:https://github.com/QwenLM/Qwen2

Qwen 团队近日发布了目前最强开源大模型 Qwen2 的技术报告。文中介绍了预训练和对齐过程中所采用的技术和方法,最后对模型进行了详细的评估。

 Abstract

发布了一系列的 Base 模型和 Instruct 模型,参数量从 0.5B 到 72B,包括 dense 系列模型和一个 MoE 模型。Qwen2 超越了包括 Qwen1.5 在内的大多数先前的开源模型。与闭源模型相比,在语言理解、生成、多语言、代码、数学、推理等不同基准上也表现出了有竞争力的性能。旗舰的 Qwen2-72B-Base 和 Qwen2-72B-Instruct 在许多评测集上表现出卓越的性能。此外,Qwen2 也展示出了鲁棒的多语言性能,精通大约 30 种语言,凸显了其全能性。Qwen2 模型权重在 Hugging Face 和 ModelScope 上进行了开源,样例代码在 Github 上进行了开源。

支持的语言:

Introduction

随着 ChatGPT 的问世,在全球掀起了 LLM 的热潮。Llama 系列模型的发布进一步激发了开源社区的兴趣。最近,Claude-3 Opus 和 GPT-4o 迅速登顶 Chatbot Arena 王座。此外,Llama-3 已经成为 SOTA 的开源系列模型,缩小了与领先的闭源模型的差距,被认为达到了 GPT-4 水平。越来越多的 LLM 正在追求 OpenAI 的 GPT 系列的进步,其中包括 Qwen、Mistral、Gemma 等在内的许多系列都是以开源形式发布的。

近几个月来,Qwen 团队成功发布了 Qwen 系列模型并进化为 Qwen1.5。同时,Qwen 团队推出了 vision-language 模型 Qwen-VL 和 audio-language 模型 Qwen-Audio。

在这篇技术报告中,Qwen 团队发布了最新的 Qwen2 系列 LLM。Transformer 架构,next-token prediction 训练。发布了包括 0.5B、1.5B、7B、72B 在内的 4 个 dense 模型以及 1 个 57B 的 MoE 模型(每个 token 激活其中 14B 参数)。所有的模型在一个超过 7T tokens 的高质量大规模数据集上进行预训练,数据涵盖广泛的领域和语种。与之前的 Qwen 版本相比,Qwen2 包含了更广泛的语言数据,提高了代码和数学数据的数量和质量。通常认为这可以提高 LLM 的推理能力。预训练后,所有模型都进行了 SFT 和 DPO。

Qwen 团队对 Qwen2 进行了全面评估,基本都优于竞品模型。Qwen2-72B-Instruct 在 MT-Bench 得分为 9.1,Arena-Hard 48.1,LiveCodeBench 35.7。Qwen2-72B-Base 在 MMLU 得分 84.2,GPQA 37.9,HumanEval 64.6,GSM8K 89.5,BBH 82.4。

Tokenizer & Model

这一节介绍 Qwen2 的 Tokenizer 和模型设计。

Tokenizer

采用与 Qwen 相同的基于 byte-leval 的 BPE Tokenizer。值得注意的是,这种 Tokenizer 具有很高的编码效率,从而促进了 Qwen2 的多语言能力。【字节对编码(BPE, Byte Pair Encoder),又称 digram coding 双字母组合编码,是一种数据压缩 算法,用来在固定大小的词表中实现可变⻓度的子词。该算法简单有效,因而目前它是最流行的方法。】

词汇表包含 151643 个常规 tokens 和 3 个 特殊控制 tokens。

Model Architecture

基于decoder-only Transformer 架构,带有 causal masks 的 self-attention。

包括 4 个规模的 dense 模型和 1 个 MoE 模型。

Qwen2 Dense Model:

模型架构包括多个 Transformer 层,每层具有 causal attention 机制和 FFN。

与先前 Qwen 系列模型的主要区别如下:

1、采用 GQA 来代替了传统的 multi-head attention。GQA 在推理过程中优化了 KV cache,可以显著提升吞吐量。

Paper:GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints
Abs:https://arxiv.org/abs/2305.13245

2、为了扩展 Qwen2 的上下文窗口,实现了 DCA,将长序列分割成具有可管理长度的 chunks。如果输入可以在一个 chunk 中处理,则 DCA 跟原始 attention 输出相同的结果。否则,DCA 通过有效捕获 chunks 内和 chunks 之间 tokens 的相对位置信息来提升上下文性能。此外,还通过 YARN 来重新缩放注意力权重,以实现更好的长度外推。

  • Paper:Training-Free Long-Context Scaling of Large Language Models
    Abs:https://arxiv.org/abs/2402.17463
  • Paper:YaRN: Efficient Context Window Extension of Large Language Models
    Abs:https://arxiv.org/abs/2309.00071

3、激活函数 SwiGLU,位置编码 RoPE,QKV bias,RMSNorm,pre-norm。

Qwen2 Mixture-of-Experts Model

Qwen2 MoE 的架构和 Qwen1.5-MoE-A2.7B 非常相似。

MoE FFN 由 n 个单独的 FFN 组成,每个 FFN 是一个专家。输入的每个 token 被定向到特定的专家 Ei 来根据门控网络 G 分配的概率进行计算:

接下来,介绍 Qwen2 MoE 中重要的设计考虑。

  •  Expert Granularity

MoE 模型和 dense 模型间的关键结构差异在于 MoE 层有多个 FFN,每个 FFN 是一个独立的专家。因此,直接将每个专家的参数设置为原始 dense 模型中 FFN 的参数即可从 dense 架构过度到 MoE 架构。

Mistral-7B 到 Mixtral 8x7B 每次从 8 个专家中激活 2 个。而 Qwen2 MoE 采用细粒度专家,在创建小规模专家的同时激活更多数量的专家。给定相同数量的专家参数和激活参数,细粒度专家可以提供更丰富的专家组合。

通过利用这些细粒度专家,Qwen2 MoE 促进了更多样和动态的专家使用,从而提高了整体的性能和适配性。

  • Expert Routing

专家路由机制的设计对提升 MoE 模型的性能至关重要。

近期,在 MoE 层内整合 shared 和 routing-specific 专家有着显著趋势。Qwen2 MoE 采用了这种方法,因为这样促进了 shared 专家在不同任务中的应用,同时保留了其他专家在特定路由场景中的选择性应用。shared 和 specialized 专家的引入为 MoE 路由机制提供了一种适应性更强、更有效的方案。

  • Expert Initialization
Paper:Sparse Upcycling: Training Mixture-of-Experts from Dense Checkpoints
Abs:https://arxiv.org/abs/2212.05055

初始化专家的方式与 upcycling 相似,利用 dense 模型的权重。但 Qwen2 MoE 的方法强调细粒度专家之间的多样化。

给定指定细粒度专家的中间层大小 hE ,专家数量 n ,原始 FFN 中间层大小 hFFN ,则将 FFN 复制 ⌈hFFNn×hE⌉ 次。可以容纳任意数量的专家。

为了促进每个 FFN copy 的多样性,对参数沿着中间层纬度进行 shuffle。这保证了每个细粒度专家即使在不同的 FFN copy 中表现出独特的特征。

之后,从 FFN copies 中提取出细粒度专家,丢弃其余的维度。

对于每个细粒度专家,将 50% 的参数重新随机初始化。这个过程引入了额外的随机性,可能有助于增强模型在训练过程中的探索能力。

Model Configuration

5 个不同规模的模型:

  •  Qwen2-0.5B
  •  Qwen2-1.5B
  •  Qwen2-7B
  •  Qwen2-57B-A14B
  •  Qwen2-72B

Qwen2-57B-A14B 是从 Qwen2-7B 升级而来。

值得注意的是,与 Qwen1.5 相比,Qwen2 模型每个 token 的 Key-Value(KV)大小要低得多。这样可以减少内存占用,在长上下文推理中更有优势。

Pre-Training

对于 Qwen2 的预训练,重点是优化数据集并且探索上下文长度扩展的有效方法。

Pre-Training Data

一个新的、大规模、高质量的多语言数据集。

与之前的 Qwen 和 Qwen1.5 相比,在语料库上有所改进,增强了几个关键领域的数据规模、质量和多样性。

Quality Enhancement

通过额外的启发式算法和基于模型的方法对数据过滤算法进行改进,包括使用 Qwen 模型过滤出低质量的数据。此外,这些模型被用于合成高质量的预训练数据。

Data Expansion

与 Qwen1.5 相比,Qwen2 收集了大量高质量的代码、数学和多语言数据,增强了模型对应的能力。

新的数据集支持大约 30 种语言,例如英语、中文、西班牙语、法语、德语、阿拉伯语、俄语、韩语、日语、泰语和越南语。

Distribution Improvement

为了确保模型学习的分布类似于人类,对小模型进行了实验来优化不同来源和领域数据的混合。

基于此,预训练数据从 Qwen1.5 的 3T tokens 增加到了 7T tokens。进一步放宽阈值则有 12T tokens。

然而,在 12T tokens 数据集上训练的模型(0.5B)没有比 7T tokens 上的模型有显著的性能提升。可以怀疑数据量的增加不一定有益于模型的训练。

因此,考虑到成本,选择使用更高质量的 7T tokens 数据集来训练更大的模型。

所有的 Qwen2 dense 模型(不包括 Qwen2-0.5B)都是在 7T tokens 数据集上预训练的。Qwen-0.5B 在 12T tokens 数据集上预训练。MoE 模型根据 upcycling 原则额外经过了4.5T tokens 预训练。

与之前的 Qwen 模型类似,高质量的多任务 instruction 数据被整合到 Qwen2 的预训练之中,以提高模型的 ICL 和 instruction-following 能力。

Long-Context Training

为了增强 Qwen2 的长上下文能力,在预训练的结束阶段将上下文长度从 4096 tokens 增加到了 32768 tokens。这一扩展过程引入了大量高质量、更长的数据。同时将 RoPE 的基频从 10000 修改为 1000000,以优化长上下文场景中的性能。

为了充分利用模型的长度外推潜力,采用了 YARN 机制和 Dual Chunk Attention 机制。这些策略使模型可以处理多达 131072 tokens 序列,同时保持较高的性能。

Post-Training

在大规模预训练之后,对 Qwen2 进行了 post-training。这一过程对于提升模型在包括代码、数学、逻辑推理、指令遵循、多语言理解等领域的能力很重要。此外,这一过程也确保了模型生成的内容与人类价值观对齐,使模型 helpful、诚实、无害。

与严重依赖大量人工监督的传统方法不同,Qwen2 更侧重于可扩展的对齐,尽量减少人工标注。具体来说,研究了获取 SFT 和 RLHF 高质量数据的方法,旨在提升数据质量和可靠性的同时减少对人类标柱的需求。

Post-Training Data

数据主要由两部分组成:

  •  demonstration 数据 D={(xi,yi)}
  • • 偏好数据 P={(xi,yi+,yi−)}

其中, xi 表示指令(instruction), yi 表示 response, yi+ 和 yi− 是 xi 的两个 response,但 yi+比yi− 更符合人类偏好。SFT 使用的数据集为 D ,RLHF 使用的数据集为 P 。

训练数据的构建包括两个步骤:协作式数据标注和自动化数据合成。

首先,从大规模的指令语料库中提取数据本体,从而得到一批广泛而多样的高质量指令。这些指令通过系统化增强来增加复杂性。通过人工标注,得到了 targetresponseyi 和正负例对 (yi+,yi−) 。

随后,许多自动化对齐策略被应用于大量合成代码、数学、指令遵循、创作、角色扮演、安全等领域的人工标注数据。

Collaborative Data Annotation

  • Automatic Ontology Extraction
Paper:InsTag: Instruction Tagging for Analyzing Supervised Fine-tuning of Large Language Models
Abs:https://arxiv.org/abs/2308.07074

首先应用一个开放式细粒度标注器 InsTag 来从大规模指令数据中提取出底层本体。后续进行手工优化确保提取的本体的准确性。

  • Instruction Selection
Paper:How Abilities in Large Language Models are Affected by Supervised Fine-tuning Data Composition
Abs:https://arxiv.org/abs/2310.05492

每个带有 tag 标记的指令都会根据 tag 多样性、语义丰富行、复杂性、意图完整性进行评估。选择一组具有代表性的指令。

  • Instruction Evolution
Paper:ChatGLM: A Family of Large Language Models from GLM-130B to GLM-4 All Tools
Abs:https://arxiv.org/abs/2406.12793

为了丰富指令数据集,采用了 self-evolution 策略来 prompt Qwen 模型向现有的指令添加约束或要求,从而增加指令的复杂度并确保数据集中难度分布的多样性。

  • Human Annotation

使用不同的生成策略和不同规模的 Qwen 模型获得对指令的多个 responses。标注者根据他们的偏好对这些 responses 进行排序,确保最佳 response 符合要求,进而产生 demonstration 和偏好数据。

Automated Data Synthesis

保证指令 response 的标注质量是一个巨大的挑战,特别是那些需要专业知识、经验、细心或耐心的标注。因此,设计了多种自动对齐策略来大规模合成数据。

  • Rejection Sampling
Paper:Scaling Relationship on Learning Mathematical Reasoning with Large Language Models
Abs:https://arxiv.org/abs/2308.01825

对于数学等带有明确最终答案的任务,采用拒绝采样来提升 solution 的质量。

LLM 被用来为每个指令生成多个推理路径 responses。保留可以得出准确结果并且被模型认为合理的推理路径,作为 demonstration 数据。通过对比正确和不正确的推理路径来获得偏好数据。

  • Execution Feedback

对于代码任务,LLM 被用来生成解决方案和相关测试用例。通过根据测试用例编译和执行生成的解决方案来评估其有效性,从而得到 demonstration 和 偏好数据。

Paper:Self-play with Execution Feedback: Improving Instruction-following Capabilities of Large Language Models
Abs:https://arxiv.org/abs/2406.13542

这种方法也可以应用于评估指令遵循能力。对于有约束条件的指令,LLM 可以生成 Python 验证函数,确保 response 符合指令的要求。

  • Data Repurposing

对于没有受过专业训练的标注人员来说,在文学写作任务中很难给出熟练的 response。为了解决这个问题,从公开领域收集高质量的文学作品,用 LLM 来给出带有不同程度的细节的指令。得到的指令和原始文学作品一起作为 demonstration 数据。

Paper:Large Language Models are Superpositions of All Characters: Attaining Arbitrary Role-play via Self-Alignment
Abs:https://arxiv.org/abs/2401.12474

例如,为了得到生动逼真的角色扮演 responses,从维基百科等知识库中获取详细的角色简介,然后指示 LLM 生成相应的指令和 responses。这个类似阅读理解任务的过程可以确保保持角色简介的完整性。

  • Constitutional Feedback
Paper:Constitutional AI: Harmlessness from AI Feedback
Abs:https://arxiv.org/abs/2212.08073

Constitutional AI 指的是通过引导 LLM 来基于预定义的规则生成 responses 的过程。为了确保遵守安全和价值观等准则,编制了 constitution 数据集。数据集描述了 LLM 应该遵循和应该避免的原则,用于指示 LLM 做出与这些规则一致或者偏离的 responses,进而作为 demonstration 和偏好数据的参考。

Supervised Fine-Tuning

收集了一个大规模 SFT 数据集,包含了超过 50 万条数据,涵盖指令遵循、代码、数学、逻辑推理、角色扮演、多语言、安全等领域。

模型微调 2 个 epoch,序列长度 32768 tokens。学习率从 7×10−6 逐渐降低到 7×10−7 。

为了解决过拟合问题,应用了 0.1 的 weight decay,并进行上限为 1.0 的梯度裁剪。

Reinforcement Learning from Human Feedback

Paper:Direct Preference Optimization: Your Language Model is Secretly a Reward Model
Abs:https://arxiv.org/abs/2305.18290

Paper:Online Merging Optimizers for Boosting Rewards and Mitigating Tax in Alignment
Abs:https://arxiv.org/abs/2405.17931

RLHF 训练包括两个连续的阶段:offline 和 online 训练。

在 offline 训练阶段,使用预先准备好的偏好数据集 P 进行 DPO 训练。

在 online 训练阶段,模型利用奖励模型(Reward Model,RM) 实时地迭代式提升。具体来说,从当前的 policy 模型中采样多个 response,用 RM 来选择最佳和最差的 response 来形成每一段 DPO 训练的偏好 pair 数据。此外,还采用 Online Merging Optimizer 来缓解对齐税问题(模型与人类对齐过程中造成的性能下降)。

Evaluation

为了全面评估 Qwen2 Base 模型和 Instruct 模型,实施了一个全面评估协议。协议考差了包括一般知识理解、语言理解、生成、代码、数学、推理和其他专业领域等一系列能力。

具体来说,除非另有说明,用 LLM 通过 few-shot prompting 对 Base 模型进行 benchmark 评估。对于 Instruct 模型,除了 benchmark 评估外,还优先考虑人类偏好评估。

Base Language Models

Core Capabilities

只放 72B 和 7B 结果,更多更详细的结果见原始论文。

Instruction-Tuned Model

Open Benchmark Evaluation

In-House Automatic Evalution

 Long Context Capabilities

Multilingual Evaluation

Safety & Responsebility

Conclusion

本技术报告介绍了 Qwen2 系列,一套多功能的 Base 和 Instruct 语言模型,参数从 0.5B 到 72B 不等,包括 dense 模型和 MoE 模型。

Qwen2 超越了之前的开源模型,在语言理解、生成、多语言能力、代码、数学、推理等广泛的 benchmark 评估中表现出了与闭源模型的竞争力。

在本次的 Qwen2 更新中,我们特别关注长上下文、多语言、代码、数学、安全和 responsibility。

为了促进社区的发展和开放,我们开源了 Qwen2 模型权重,使研究人员和开发人员能够在各种应用和研究项目中充分利用 Qwen2 的潜力。我们的目标是为 AI 技术的进步及其对社会的积极影响做出贡献。

基于MEL谱+VQ的TTS相关工作

Zero-shot TTS中有不少工作用了MEL谱作为中间特征,然后在梅尔谱的基础上,或是用VQ提供离散token,或是用CNN来提取连续latent。对于MEL+VQ的工作,有tortoise-tts、xtts 1&2、megatts1&2、base TTS。

Tortoise-tts

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

该工作是著名的开源英文TTS模型。其作者目前在OpenAI就职,同时也是GPT-4o的重要Contributor(他自个儿在博客中说的)。Tortoise-tts使用MEL+VQVAE的方法得到语音的MEL token,然后对MEL token以及text token做GPT自回归建模。对于语音的解码,自然也是分为两步:先是用扩散模型将MEL token转换为MEL谱,这一步和文生图很像,用扩散模型是很自然的选择;然后用声码器将MEL谱转换为音频波形。tortoise-tts和VALL-E的主体都是自回归建模,二者的不同主要在于token的不同。

MegaTTS 1&2

Mega-TTS: Zero-Shot Text-to-Speech at Scale with Intrinsic Inductive Bias

Mega-TTS 2: Boosting Prompting Mechanisms for Zero-Shot Speech Synthesis

字节跳动的MegaTTS系列对语音token编码信息做了显式的信息压缩处理,让语音token仅编码上下文依赖强的韵律信息,然后用GPT自回归来建模语音的韵律。对于其他方面的信息,模型的处理显得较为常规:音色一般具有全局性,使用单一的音色编码器从参考音频中提取就性;对于文本语义内容的处理,模型在很大程度上参考了非自回归的FastSpeech 2。

对于语音的解码,也是分为两步:先通过MEL decoder还原为MEL谱,然后通过声码器解码为音频波形。MegaTTS 2和1总体上类似,在音色编码(音素级编码、多条参考音频)、语音提示长度(扩展同speaker语音上下文长度硬train,音频prompt长度更长)和时长建模(也用GPT自回归)上做了改进,同时堆了更大规模的数据。剪映的后端TTS模型用的就是megatts2。该工作在各论文的评测中表现也都不错。

认为语音可以分解为几个属性(例如,内容、音色、韵律和相位),每个属性都应该使用具有适当归纳偏差的模块进行建模。从这个角度出发,我们精心设计了一个新颖的大型零样本 TTS 系统,称为 Mega-TTS,该系统使用大规模的野生数据进行训练,并以不同的方式对不同的属性进行建模:1) 我们没有使用音频编解码器编码的潜在作为中间特征,而是仍然选择频谱图,因为它很好地分离了相位和其他属性。Phase 可以由基于 GAN 的声码器适当构建,不需要由语言模型建模。2) 我们使用全局向量对音色进行建模,因为音色是一个随时间缓慢变化的全局属性。3) 我们进一步使用基于 VQGAN 的声学模型来生成频谱图,并使用潜在代码语言模型来拟合韵律的分布,因为句子中的韵律会随着时间的推移而快速变化,并且语言模型可以捕获局部和长期依赖关系。

本文介绍了一种通用的零样本 TTS 提示机制 Mega-TTS 2,以应对上述挑战。具体而言,我们设计了一个强大的声学自动编码器,将韵律和音色信息分别编码到压缩的潜在空间中,同时提供高质量的重建。然后,我们提出了一个多参考音色编码器和一个韵律潜在语言模型 (P-LLM),用于从多句提示中提取有用信息。我们进一步利用从多个 P-LLM 输出得出的概率来产生可转移和可控制的韵律。实验结果表明,Mega-TTS 2 不仅可以使用来自任意来源的看不见的说话者的简短提示来合成身份保留语音,而且当数据量从 10 秒到 5 分钟不等时,其表现始终优于微调方法。

Zero-shot TTS技术路线汇总

参考:

1、OpenAI的生肉博客:https://openai.com/index/hello-gpt-4o/

2、别慌!一文教你看懂GPT-4o背后的语音技术

Zero-shot TTS模型通常会将低信息密度、长序列的连续语音数据压缩为高信息密度的tokens 或者 latents (其实就是码本中具体的 token embedding )。这些模型本质上做的事情就是:如何高效实现语音tokens / latents 到音频波形的映射。这些模型给出的解决方案基本上都遵循一个准则:语义token和声学token层次化解码,先语义后声学,或者先解码成Mel再后接声码器,并且非必要不做自回归(毕竟自回归上线虽高,但太吃数据了)!

1、语义token的解码:语义解码大概率是自回归解码语义token毕竟是建模上下文依赖关系,自回归方法已经在NLP上证明了这一点。

2、声学token的解码:使用扩散模型或者flow-matching可能是更好的选择扩散模型或者流匹配可以很好地修补语音的细节;

3、要做流式推理外接类似HIFIGAN这样的声码器的方式可能不是好的选择。HIFIGAN并不天然支持流式解码。相反地,诸如SoundStream和Encodec这样的方法,同时有流式变体和非流式变体;

上面说到,要实现语音的合成,需要对语义token和声学token同时进行建模,语义token保证生成语音与对话上下文的连贯性,声学token保证了合成语音的质量和表现力。要想做到合成上下文连贯的高自然度语音,有两个问题必须要解决:

  • 1、语音既有语义token,又有声学token,应该要如何解码成语音?
  • 2、在合成语音的过程中是否能够遵循多轮对话中的文本指令和语音指令?这个很重要!这允许模型根据用户的即时要求来生成语音回复。比如说,OpenAI演示视频中出现的:“将语速提高两倍”、“采用更加机械化的语气”这样的要求。

对于第一个问题,以VALL-E为代表的诸多zero-shot TTS模型给出了不同的解决方案,这些方案虽有不同,但也有不可忽视的共同点;对于第二个问题,以VoiceLDM和ParlerTTS为代表的text/prompt-guided zero-shot TTS工作给出了肯定的答案。简单解释一下text/prompt-guided zero-shot TTS是怎么回事,通常的语音合成就是将文本(transcription)转换成声音,该任务在transcription之外,又增加了description的输入,来描述合成语音的情感情绪、口音、语气、语速、音高、说话环境、氛围等等信息。我们逐个来看这些工作。

基于声学token或语义token的工作

先是微软的VALL-E[16]。这是zero-shot TTS的开山之作,首次在TTS任务上采用了上万小时的数据。它采用Encodec将语音转换为离散的token,然后用GPT 【only 解码器】 在token上做语言模型的任务。但是,语音毕竟不是文本,如果直接在语音的所有特征上都做自回归的话,那训练的成本会相当高。考虑到Encodec RVQ特征的层次性,低层特征表示语义内容这样的重要特征,高层特征则表征声学细节。前者具有比较强的上下文依赖关系,适合用自回归来建模,后者诸如音色这样的特征,具有全局性,用非自回归特征也可以搞定,所以就有了VALLE中自回归+非自回归的层次建模方式。

VALL-E的模型架构
语义token跟声学token的合成

尽管VALL-E[16]在用GPT 【only 解码器】 建模token的上下文关系的时候,基于token的层次化特性做了分治处理,可能是限于当前语音数据集的规模(几万小时可能不够),这种GPT 【only 解码器】 自回归的难度还是相当大的,解码过程存在常见的错误传播现象,鲁棒性非常差,极其不稳定。根据Ilya Sutskever此前对于自回归的论述,GPT 【only 解码器】 自回归相比于BERT这种双向结构是非常data-hungry的,万小时的数据可能不够。根据本人以及一些同行的经验,VALL-E模型这一类的自回归模型,也包括tortoise-tts[20]和xtts v2,要想显出威力,至少要有十几万小时的数据才行。

既然GPT【only 解码器】自回归的难度这么大,就有不少人想方设法地来降低GPT学习的难度了。他们的解决方案也非常类似:给GPT提供额外的条件信息不就行了。比较典型的工作就是微软的RALL-E[21]和吉利的HAM-TTS[22]。RALL-E先生成了时长信息和音高信息,作为GPT自回归的先验,之所以会补充时长和音高,这大概是受到FastSpeech2[23]这样的非自回归模型的启发,这两个指标的引入,有助于提升合成的鲁棒性;HAM-TTS则是补充了基于HuBERT的语义信息。值得注意地是,HAM-TTS将模型的训练数据扩充到了65万小时,其中有50万小时的数据是合成数据。合成数据也能大幅度提升合成语音的音质。

RALL-E的模型架构,框出来的就是辅助信息
HAM-TTS的模型架构

说到VALL-E的后续改进,VoiceCraft不得不提。我愿意称之为“优雅的VALL-E”。它的优雅主要体现在两个方面:casual masking和delayed stacking。所谓的causal masking,是为了用自回归GPT架构来做语音编辑任务,就是把被mask的部分移动到序列末尾去预测,一套架构同时做合成和编辑任务;所谓的delay stacking,是为了适配自回归和RVQ,通过delay错位让当前码本的token预测正好可以利用前面那些token的预测结果,比起VALL-E那样自回归和非自回归缝合在一起的结构要优雅不少。

基于声学/语义latents的工作

我们通常所说的语音token是离散的。如果使用对应码本中的embedding来表示语音的话,它也可以是连续的低维度的latent变量。既然是低维度的连续latent变量,那图像合成领域中大火的LDM(latent diffusion model,其实就是stable diffsion 1&2采用的模型)模型自然也可以用到语音的合成上。这方面的经典工作有很多,比如说:NaturalSpeech 2&3[25, 26]、AudioLDM 2[27]、VoiceLDM[18]。但这里面只有NaturalSpeech2用到了语音离散化部分提及的声学/语义token,NaturalSpeech3的属性分解形式的VQ更像是另一种形式的RVQ。我们先来看NaturalSpeech 2&3,其他的工作后面再来看。

首先是NaturalSpeech 2[26],利用带有残差向量量化器的神经音频编解码器来获得量化的潜在向量,并使用扩散模型来生成这些以文本输入为条件的潜在向量。它基本上就是VALL-E的连续版本。它用的latent也是来自Encodec,对其中不同层次的latent做了求和,然后将其作为扩散模型的训练目标。值得注意地是,扩散模型和FastSpeech2一样也用了时长和音高作为合成的先验条件。这一点也被后来的RALL-E采用。该工作中的扩散模型采用WaveNet实现,同时预测不加噪的latent和后验均值,和图像合成领域的扩散模型在实现方式上还是有所不同的。

此图片的alt属性为空;文件名为image-82-1024x537.png
NaturalSpeech2的模型架构

然后是NaturalSpeech 3,还是非自回归的,而且非自回归的正统性味道更加浓厚,借用了不少FastSpeech2和megatts1&2的设计思想。像megatts 1&2一样,同样采用(自)监督信号对语音token编码的内容做了限制,而不再像是VALL-E/NaturalSpeech2那样一把抓。相应地,语音token化的方法也用VQ就行。具体而言,文章将语音信号分解为时长、内容、韵律和细节四个部分,然后每个部分用离散化的扩散模型来建模。不过,原文使用GRL来促进语音属性的分解,这一点的靠谱程度存疑。我也尝试过文章的FACodec,但效果很差。三级扩散模型级联的结构,预测起来似乎也非常麻烦。

基于MEL谱+VQ的TOKEN的工作

当然,也有不少工作用了MEL谱作为中间特征,然后在梅尔谱的基础上,或是用VQ提供离散token,或是用CNN来提取连续latent。对于MEL+VQ的工作,有tortoise-tts[20]、xtts 1&2、megatts1&2[28, 29]、base TTS[30]。对于MEL+latents的工作,有:AudioLDM 1&2[27]、StyleTTS 1&2[31, 32]。我们来简单看看是它们是怎么做的。

Tortoise-tts[20]。该工作是著名的开源英文TTS模型。其作者目前在OpenAI就职,同时也是GPT-4o的重要Contributor(他自个儿在博客中说的)。

Tortoise-tts使用MEL+VQVAE的方法得到语音的MEL token,然后对MEL token以及text token做GPT自回归建模。对于语音的解码,自然也是分为两步:先是用扩散模型将MEL token转换为MEL谱,这一步和文生图很像,用扩散模型是很自然的选择;然后用声码器将MEL谱转换为音频波形。tortoise-tts和VALL-E的主体都是自回归建模,二者的不同主要在于token的不同。

tortoise-tts的模型架构

MegaTTS 1&2[28, 29]。字节跳动的MegaTTS系列对语音token编码信息做了显式的信息压缩处理,让语音token仅编码上下文依赖强的韵律信息,然后用GPT自回归来建模语音的韵律。对于其他方面的信息,模型的处理显得较为常规:音色一般具有全局性,使用单一的音色编码器从参考音频中提取就性;对于文本语义内容的处理,模型在很大程度上参考了非自回归的FastSpeech 2。

对于语音的解码,也是分为两步:先通过MEL decoder还原为MEL谱,然后通过声码器解码为音频波形。MegaTTS 2和1总体上类似,在音色编码(音素级编码、多条参考音频)、语音提示长度(扩展同speaker语音上下文长度硬train,音频prompt长度更长)和时长建模(也用GPT自回归)上做了改进,同时堆了更大规模的数据。剪映的后端TTS模型用的就是megatts2。该工作在各论文的评测中表现也都不错。

megatts1的模型架构

基于MEL谱+VAE的latents的工作

AudioLDM 1&2[27]。AudioLDM 1&2使用的语音latents是一致的,均通过MEL+VAE获得。既然是连续的latents,使用扩散模型来建模也合情合理。解码过程也相当简单:VAE decoder获得梅尔谱,然后用声码器转换为音频波形。该系列工作的核心创新点是利用多模态模型统一了扩散模型条件输入侧的信息:AudioLDM 1用CLAP统一了文本模态和音频模态,用单模态的音频数据就能完成模型的训练;AudioLDM 2则包含了图像、文本、转录文本等更多模态,模型泛用性也更强,既能做语音合成,也能做音乐生成、音频事件生成。

AudioLDM 1的模型架构
AudioLDM2的模型架构

StyleTTS 1&2[31, 32]。StyleTTS系列的模型一众zero-shot TTS模型显得比较老派,整体结构基本上沿袭了非自回归的FastSpeech 2,不同之处在于增加了基于参考音频抽取的风格信息。说是风格,其实跟megatts的音色很像。StyleTTS 2的工作则将风格进一步拆分成声学风格和韵律风格。训练时的风格信息由音频提供,推断时的风格信息则由扩散模型提供。StyleTTS 2通过一个扩散模型桥接了文本韵律和语音风格之间的联系,摆脱推断时对参考音频的依赖。不用参考音频其实对产品的意义还挺大的,要都用现实世界中真人尤其是名人的声音作为参考音频,那这势必会引起版权纠纷。这种纠纷在国内国外都有相关的事件。最近寡姐投诉OpenAI的事件就是一例。

StyleTTS 1的模型架构
StyleTTS 2的模型架构(a)
StyleTTS 2的模型架构(b)

TTS对指令的遵循

SLM不仅要合成合乎上下文语义的高表现力语音,合成的语音还要符合用户的即时要求。一些text-guided zero-shot TTS的工作值得参考。这些工作一般都是在已有的zero-shot TTS模型或者text-to-audio模型上改造而来,同时吸收transcription和description两路条件。其中的重点还是在于数据集的构建。这方面的工作有:PromptTTS[33]、InstructTTS[34]、ParlerTTS[19]、VoiceLDM[18]和Audiobox[35]。我们主要谈谈ParlerTTS和VoiceLDM。

ParlerTTS[19]。VALL-E/VoiceCraft的增强版,通过T5编码器和cross-attention旁路引入了描述性文本的信息。该工作的目的是想使用自然语言prompt来指定说话风格和环境信息,摆脱对参考音频的依赖。描述性标签文本的收集过程也显得相当朴素:通过定制化的监督式模型获取语音数据的口音特征、录音质量特征、音高语速特征。然后用LLM将这些特征转换为自然语言的描述。在我看来,这个工作有这么几点局限性吧:其一,缺乏情绪标签;其二,语音描述性标签的收集并不具备通用性,较为繁琐,远不如一个强大的多模态语音理解模型来得实在。文章demo虽然达到了预期的效果,但场景似乎局限在朗读的情景中。

ParlerTTS的模型架构

VoiceLDM[18]。在VoiceLDM1的基础上增加了转录文本的输入。这个工作和AudioLDM 1很像,同样使用CLAP注入语音的描述性信息。不同地是,为了做TTS任务,该工作通过cross-attention旁路增加了transcription的信息。


TTS总结

林林总总说了这么多zero-shot的TTS方法,想说明的结论有这么几点:

  1. 在LLM大行其道、scaling law大显神威的时代,TTS模型的训练数据规模已经突破了万小时,甚至达到了数十万小时的级别。在大数据的加持下,TTS任务上也涌现出了in-context learning能力。
  2. 语音信息的解码通常都要层次化或者多步进行,不能一步到位。自回归、扩散模型和流匹配都能在TTS中发挥作用;
  3. 借鉴NLP instruction fine-tuning和文生图的经验,TTS模型同样可以遵循文本指令或者语音指令,合成符合用户即时要求的语音,摆脱对参考音频的依赖,这或许也能规避一些知识产权的困扰(比如最近有名的寡姐投诉OpenAI事件)。同时,用户也能在对话过程中随时切换语音回复的风格,这一点在OpenAI的demo中有很明确的体现。另外,不知道大家有没有注意,GPT-4o合成的语音是可以是放映所处的声学环境的:有一段语音背后似乎是有钢琴声的。
  4. text-guided zero-shot TTS在模型架构上和zero-shot TTS有非常大的相似性。但训练数据可能较为缺乏。先开发zero-shot TTS,再用类似SALMONN那样的多模态理解模型来打标签(类似DALLE3的做法),这样数据集构造方式,可能会是更好的选择。

Zreo-TTS — 基于声学/语义 latents 的扩散模型工作

我们通常所说的语音token是离散的。如果使用对应码本中的embedding来表示语音的话,它也可以是连续的低维度的latent变量。既然是低维度的连续latent变量,那图像合成领域中大火的LDM(latent diffusion model,其实就是stable diffsion 1&2采用的模型)模型自然也可以用到语音的合成上。这方面的经典工作有很多,比如说:NaturalSpeech 2&3、AudioLDM 2、VoiceLDM。但这里面只有NaturalSpeech2用到了语音离散化部分提及的声学/语义token,NaturalSpeech3的属性分解形式的VQ更像是另一种形式的RVQ。

NaturalSpeech 2

NaturalSpeech 2基本上就是VALL-E的连续版本。它用的latent也是来自Encodec,对其中不同层次的latent做了求和,然后将其作为扩散模型的训练目标。值得注意地是,扩散模型和FastSpeech2一样也用了时长和音高作为合成的先验条件。这一点也被后来的RALL-E采用。该工作中的扩散模型采用WaveNet实现,同时预测不加噪的latent和后验均值,和图像合成领域的扩散模型在实现方式上还是有所不同的。

NaturalSpeech 3

NaturalSpeech 3,还是非自回归的,而且非自回归的正统性味道更加浓厚,借用了不少FastSpeech2和megatts1&2的设计思想。像megatts 1&2一样,同样采用(自)监督信号对语音token编码的内容做了限制,而不再像是VALL-E/NaturalSpeech2那样一把抓。相应地,语音token化的方法也用VQ就行。具体而言,文章将语音信号分解为时长、内容、韵律和细节四个部分,然后每个部分用离散化的扩散模型来建模。不过,原文使用GRL来促进语音属性的分解,这一点的靠谱程度存疑。尝试过文章的FACodec,但效果很差。三级扩散模型级联的结构,预测起来似乎也非常麻烦。

AudioLDM 2

  • AudioLDM2 :https://arxiv.org/abs/2308.05734
  • Code:https://audioldm.github.io/audioldm2/
  • 核心思想是引入一种新的“音频语言”(LOA),它是表示音频剪辑语义信息的向量序列。 这种方法使我们能够将人类可理解的信息转换为 LOA,并合成以 LOA 为条件的音频表示。具体来说,我们利用基于 GPT 的语言模型(Radford等人,2019)将调节信息转换为 AudioMAE 特征。 GPT的输入条件很灵活,包括文本、音频、图像、视频等的表示。然后,我们使用潜在扩散模型(Rombach等人,2022)基于AudioMAE 功能。 潜在扩散模型可以以自监督的方式进行优化,从而允许使用大规模未标记的音频数据进行预训练。 我们的语言建模方法使我们能够利用语言模型的最新进展(Zhao等人,2023),同时缓解先前音频自回归模型中出现的高推理计算成本和错误累积等挑战(Zeghidour 等人,2021;Agostinelli 等人,2023)。 这是由于连续 AudioMAE 特征的长度较短,它也比以前使用的离散标记提供了更丰富的表示能力(Lam 等人,2023;Borsos 等人,2023;Agostinelli 等人,2023) 。
AudioLDM 2 架构概述。 AudioMAE 功能是连接音频语义语言模型阶段 (GPT-2) 和语义重建阶段(潜在扩散模型)的代理。 概率切换器使用地面真值 AudioMAE (Pgt) 和 GPT-2 生成的 AudioMAE 特征 (Ppred) 作为条件来控制潜在扩散模型的概率。 AudioMAE 和潜在扩散模型都是使用音频数据进行自我监督预训练的。

VoiceLDM

VoiceLDM 概述。VoiceLDM 使用大量真实音频数据进行训练。 textcont在数据准备期间通过使用 Whisper(一种自动语音识别 (ASR) 模型)处理音频而生成。textdesc 仅在推理期间使用。带有锁定图标的模块表示它在训练期间被冻结。

 VoiceLDM,这是一种旨在生成准确遵循两种不同自然语言文本提示的音频的模型:描述提示和内容提示。前者提供有关音频的整体环境上下文的信息,而后者则传达语言内容。为了实现这一目标,我们采用了基于潜在扩散模型的文本到音频 (TTA) 模型,并扩展了其功能以将额外的内容提示作为条件输入。通过利用预先训练的对比语言音频预训练 (CLAP) 和 Whisper,VoiceLDM 可以在大量真实音频上进行训练,而无需手动注释或转录。此外,我们采用双无分类器指导来进一步增强 VoiceLDM 的可控性。