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的信息。

基于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 的可控性。

基于声学token或语义token的TTS-VoiceCraft—VALL-E的后续改进

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

VoiceCraft的建模流程,标记重排过程和建模框架的示例。重排过程包括两个步骤:(1) 因果掩码,其中掩码的跨度被掩码标记替换并移动到末尾,以及 (2) 延迟堆叠,其中标记根据其码簿索引在时间维度上移动。

VoiceCraft 通过重新排列神经编解码器的输出标记,将序列填充(用于语音编辑)和延续(用于零样本 TTS)转换为简单的从左到右的语言建模。重排包括两个步骤:(1) 因果掩码以实现双向上下文的自回归延续/填充,以及 (2) 延迟堆叠以确保高效的多码簿建模。VoiceCraft 采用仅限解码器的 Transformer,并使用自回归序列预测 进行训练。

重排步骤 1:因果掩码:

给定一个连续的语音波形作为输入,我们首先使用 Encodec将其量化成一个 T by K codec 矩阵 X ,其中 T 是时间帧的数量,是 K RVQ 码本的数量。 X 可以写成 (X1,⋯,XT) ,其中 Xt 是一个长度 K 向量,表示在时间步 t 中来自不同码本的代码,我们假设 Codebook k 中的代码对 Codebook k−1 中的残差进行建模。在训练过程中,我们的目标是随机屏蔽一些 span 的标记 (Xt0,…,Xt1) ,然后以所有未屏蔽的标记为条件自动回归预测这些被屏蔽的标记。这在 时 t1<T 是个问题,因为在执行自回归生成时,我们无法以未来的输出为条件。我们需要修改掩码, X 使其具有因果关系,方法是将要掩码的跨度移动到序列的末尾,以便在填充这些标记时,模型可以针对过去和未来未掩码的标记。

只需将所有被屏蔽的 span 移动到序列的末尾,即可轻松地将上述过程扩展到多个被屏蔽的 span。要屏蔽 n 的 span 数从 Poison⁢(λ) 中采样,然后对于每个 span,我们采样一个 span length l∼Uniform⁢(1,L) 。最后,我们在约束 X 下随机选择 span 的位置,确保它们彼此不重叠。然后,选定的 n 范围将替换为掩码标记 ⟨M1⟩,⋯,⟨Mn⟩ 。这些掩码 span 中的原始标记将移动到 sequence X 的末尾,每个 span 前面都有其相应的掩码标记。

重排步骤 2:延迟堆叠

在因果掩码标记重新排列之后,重新排列矩阵 Y 的每个时间步都是标记向量 K 。Copet et al. ( 2023) 观察到,当对堆叠的 RVQ 令牌进行自回归生成时,应用延迟模式是有利的,这样时间对码簿 k 的预测 t 就可以以同一时间步长对码簿 k−1 的预测为条件。我们采用与本文类似的方法。假设 span Ys 的形状为 Ls×K .应用延迟模式会将其重新排列到 Zs=(Zs,0,Zs,1,⋯,Zs,Ls+K−1) 中,其中 Zs,t,t∈[Ls+K−1] 定义为

其中 Ys,t−k+1,k 表示位于 matrix Ys 中 coordinate (t−k+1,k) 处的标记,即 (t−k+1) 第 个时间步的 k 第 个 Codebook 条目。为了确保 ∀t∈[Ls+K−1] , Zs,t 包含 K 有效的标记,我们引入了一个特殊的可学习 [空] 标记并定义 Ys,t−k+1,k≜[empty],∀t∈{s:s⁢<k∪s−k+1>⁢Ls} 。请注意,掩码标记不是任何 span 的一部分,并且在延迟堆叠期间不会更改。我们定义延迟堆叠的结果矩阵 Z=(Z1,⟨M1⟩,Z2,⟨M1⟩,⋯,⟨MS−12⟩,ZS) 

推理:

语音编辑。语音编辑的设置如下:我们有语音记录 R 及其转录 W ,我们希望模型仅修改 的 R 相关跨度,以便它与目标转录 W′ 匹配。我们假设 是 W′ 的编辑版本 W ,其中插入、替换或删除了一些单词。这个任务和训练任务几乎一模一样,有两个区别: 1) 在训练过程中,输入的成绩单只是原始录音 W 的成绩单,而在推理过程中,它是一个修改后的成绩单 W′ 2) 在训练过程中,要屏蔽的跨度(即 编辑)是随机选择的。在推理过程中,我们通过比较原始转录本和目标转录本来识别应该屏蔽掉的单词来选择它们,然后使用原始转录本的单词级强制对齐来识别与这些要屏蔽的单词相对应的编解码器标记跨度。为了确保已编辑的语音和未编辑的语音之间的平滑过渡,还需要对要编辑的 span 周围的相邻单词进行轻微修改,以便对协同发音效果进行建模。因此,我们指定了一个小的 margin 超参数 ϵ ,并在左侧和右侧将掩码跨度长度 ϵ 延长.

在自回归生成过程中,我们将所有未屏蔽的跨度的目标转录本提供给模型,并在应进行编辑的位置插入掩码标记。然后,我们让模型自回归地继续这个序列,从而填充被掩盖的 span。然后,生成的编解码器令牌被拼接回它们在话语中的正确位置,我们使用 Encodec 解码器网络将完整的编解码器令牌序列映射回波形。

Zero-shot TTS。正如我们之前提到的,我们模型的零样本 TTS 很简单,因为它只对应于在原始话语的末尾执行插入编辑。在这种情况下,会为模型提供语音提示及其转录,以及要生成的语音的目标转录。这三个输入连接在一起并馈送到模型,然后它自动回归地生成目标转录本的编解码器序列。

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: 字节高质量音乐生成模型

字节音乐大模型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。音乐家和制作人可以在保持对旋律、和声和节奏元素的熟悉控制的同时,利用生成模型的强大功能。此外,能够编辑和操控录制的音乐,同时保持其音乐语义,将为行业节省大量时间和成本。我们对未来在音轨生成和编辑方面的发展特别感兴趣,这将超越声乐轨道。这些能力将使专业人士能够更高效地探索音乐创意,从而增加发现“意外惊喜”的可能性,这通常对创作过程至关重要。

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

OpenVoice: Versatile Instant Voice Cloning

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

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

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

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

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

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

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

OpenVoice V2的新增特性:

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

背景

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

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

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

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

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

方法

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

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

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

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

Model Structure

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

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

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

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

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

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

Training

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

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

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

总结

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

Seed-TTS 字节跳动-高质量通用语音生成模型

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

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

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

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

主要贡献如下:

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

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

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

Seed-TTS主要功能:

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

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

Seed-TTS方法:

Seed-TTS是基于自回归transformer-based(LLaMA:decoder only)的模型,如图1所示。我们的系统由四个主要的构建块:一个语音tokenizer,一个token语言模型,一个token扩散模型,和一个声学声码器。我们强调,Seed-TTS是在大量数据(比以前最大的TTS系统大的数量级)上训练的,以实现强大的泛化和涌现能力。

首先,语音标记器将语音信号转换为一系列语音标记,然后使用类似于 BASE TTS所描述的方法对标记语言模型进行训练。我们研究了连续和离散语音标记器,发现标记器的设计对整个系统的性能至关重要。语言模型是在成对的文本序列和语音标记上训练的。在推理过程中,模型自回归地生成语音标记。请注意,在本技术报告中,我们专注于语音生成任务,因此文本序列的损失是被掩蔽的。这些生成的标记随后由扩散模型处理,以增强声学细节。然后输出通过声学声码器处理,以预测最终的波形。

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

与基于文本的语言模型类似,Seed-TTS经历三个训练阶段:预训练,微调和后训练。预训练阶段的目标是最大限度地提高场景和说话人的覆盖率,同时为通用语音建模建立一个强大的骨干。如前所述,在该阶段,Seed-TTS利用了比先前的语音生成模型大数量级的大量训练数据和模型规模。

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

我们观察到 Seed-TTS 模型相较于之前的模型有两个主要优势。首先,Seed-TTS 在不同场景下(包括如喊叫、哭泣或高度情感化的语音等具有挑战性的情境)展示了出色的语音合成自然度和表现力。在开发过程中,我们在被认为对于以前的 TTS 系统难以或无法处理的情境中对模型进行了严格测试,结果显示其相对于之前的最先进系统具有明显的优势。

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

作为语音生成的基础模型,Seed-TTS可以执行各种任务,例如语音ICL【 zero-shot voice continuation】,可控TTS,跨语言TTS,语音转换,音色生成和说话风格转换。

ICL(上下文学习)结果,也称为零样本语音延续。ICL 被定义为生成一个具有与短参考语音片段相同音色和韵律的全新口语表达。这些 ICL 结果是通过使用预训练的 Seed-TTS 模型对音频和文本提示进行延续而获得的。

Experiments

Zero-shot in-context learning

采用了词错误率(WER)和说话人相似度(SIM)指标进行客观评价。我们确保每个样本包含同一说话人说出的一个参考话语和一个目标话语。所提出的Seed-TTS系统用于基于参考语音生成目标文本的语音作为音频提示。通过这种方式,我们可以直接将合成语音与来自真实的人类的地面真实语音进行比较。参考发音的持续时间范围从3到20秒。

值得注意的是,较低的WER不一定会导致说话者相似性的主观分数提高。我们凭经验观察到,较低的WER通常表明该模型产生更“标准化”的语音,这更容易被ASR系统识别,但以牺牲其他期望的质量为代价。例如,在提示语音包含强口音或高表达力的情况下,从生成的语音获得较低的WER通常指示在模型的输出空间中具有有限变化的较不带口音的语音,这可能听起来不太自然并且当在主观评估中测量时具有降低的说话者相似性。

言语理解评估

我们通过在生成的语音上训练ASR模型来进一步验证Seed-TTS的生成质量。为此,我们生成了LibriSpeech 960小时训练集的合成版本通过“文本波洗牌”策略,并使用合成语料库从头开始训练ASR模型,然后我们使用该模型在原始LibriSpeech开发和测试集上转录语音。具体地说,我们通过采用训练集中的每个话语作为音频提示来生成训练集中的每个话语的合成版本,以使用来自训练集中的随机采样的文本来合成新句子,同时确保所有话语和文本仅被采样一次。通过这种方式,我们创建了一个合成LibriSpeech训练语料库,该语料库保持与原始语料库相同的总说话者和内容信息,以使用WeNet工具包。我们采用了12层挤压成形器作为ASR编码器和3层双向Transformer作为ASR解码器。ASR基线模型也在原始LibriSpeech训练语料库上训练。所有模型均使用相同的超参数进行训练,例如:每个模型都在LibriSpeech开发和测试集上进行了测试,结果如表2所示。

对于干净集,即,dev_cleantest_clean,使用合成数据训练的模型实现了与使用真实的数据训练的模型非常相似的ASR性能。在有噪声的dev_othertest_other集合上分别观察到1.81%和1.6%的绝对WER下降,我们推测这是由于Seed-TTS在生成过程中倾向于减少背景噪声,从而导致对噪声的鲁棒性降低。这一结果表明,在语音理解模型的开发中使用合成数据的潜力,这进一步推动了语音理解和生成的统一。

说话人相似性分析:

为了验证合成语音中音色的保真度,我们使用与上述相同的混排方法生成了 VoxCeleb1 测试集中的英语语句,并使用基于 WavLM 的说话人验证模型获取了它们的说话人嵌入。我们在图 3 中使用 t-SNE绘制了 25 位说话人真实语音和合成语音的说话人嵌入分布图。

我们观察到,同一说话者的真实语音和合成语音的嵌入可靠地聚集在一起,这表明 Seed-TTS 生成的语音在质量和说话者相似性方面与真实人类语音非常接近。

说话人微调

我们在 Seed-TTS 预训练模型的基础上进行了说话人微调(SFT)。在该实验中,我们选择了 5 位说话者(3 位女性和 2 位男性),每位说话者的语音数据时长在 1 到 10 小时之间。我们使用这些说话者的总计 20 小时的合并数据对 Seed-TTS 进行微调,并引入了一个额外的说话人索引标记,用于在推理时选择目标说话者的音色。对于这些选定的说话者,我们使用 WER(词错误率)和 SIM(相似度)客观指标以及主观 CMOS(主观质量评分)研究,评估了微调模型(Seed-TTS SFT)与基础预训练模型(Seed-TTS ICL)生成的语音效果。对于基础模型,每位说话者使用了随机采样的 20 秒语音片段作为音频提示。说话人微调实验的结果在表 3 中进行了汇报。

通过指令微调实现可控性

为了进一步增强说话人微调模型的可控性,我们尝试集成了额外的指令微调(IFT)。IFT 使模型能够灵活控制生成语音的各个方面,例如表现力、语速、风格、情感等。在本报告中,我们仅以情感控制为示例进行展示。

为了验证情感可控性,我们训练了一个类似于Chen等人的语音情感识别(SER)模型,选择了四个主要情感(即,愤怒、高兴、悲伤和惊讶),并测量了从合成语音预测情绪的准确性。我们为每种情绪生成并评估了100个话语,其中合成文本的主题被设计为与目标情绪相匹配。

结果总结于表4中。我们发现,即使没有一个明确的控制信号, Seed-TTSSFT 仍然获得了中等精度的情绪控制。我们推测这是因为该模型能够根据所提供的文本内容推断出适当的目标情感。当与附加的控制信号结合时,获得了显著提高的精度。

低延迟推理和流处理

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

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

部署模型和离线模型之间的比较。

模型扩展

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

自蒸馏的语音分解:

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

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

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

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

通过强化学习的偏好偏向

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

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

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

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

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

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

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

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

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

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

ChatTTS

https://github.com/2noise/ChatTTS/blob/main/docs/cn/README.md
https://2noise.com/
https://github.com/libukai/Awesome-ChatTTS
  1. 对话式 TTS: ChatTTS 针对对话式任务进行了优化,能够实现自然且富有表现力的合成语音。它支持多个说话者,便于生成互动式对话。
  2. 精细的控制: 该模型可以预测和控制精细的韵律特征,包括笑声、停顿和插入语。
  3. 更好的韵律: ChatTTS 在韵律方面超越了大多数开源 TTS 模型。我们提供预训练模型以支持进一步的研究和开发。

数据集和模型

  • 主模型使用了 100,000+ 小时的中文和英文音频数据进行训练。
  • HuggingFace 上的开源版本是一个在 40,000 小时数据上进行无监督微调的预训练模型。
###################################
# Sample a speaker from Gaussian.

rand_spk = chat.sample_random_speaker()
print(rand_spk) # save it for later timbre recovery

params_infer_code = ChatTTS.Chat.InferCodeParams(
    spk_emb = rand_spk, # add sampled speaker 
    temperature = .3,   # using custom temperature
    top_P = 0.7,        # top P decode
    top_K = 20,         # top K decode
)

###################################
# For sentence level manual control.

# use oral_(0-9), laugh_(0-2), break_(0-7) 
# to generate special token in text to synthesize.
params_refine_text = ChatTTS.Chat.RefineTextParams(
    prompt='[oral_2][laugh_0][break_6]',
)

wavs = chat.infer(
    texts,
    params_refine_text=params_refine_text,
    params_infer_code=params_infer_code,
)

###################################
# For word level manual control.

text = 'What is [uv_break]your favorite english food?[laugh][lbreak]'
wavs = chat.infer(text, skip_refine_text=True, params_refine_text=params_refine_text,  params_infer_code=params_infer_code)
torchaudio.save("output2.wav", torch.from_numpy(wavs[0]), 24000)

模型组成:LlamaModel、DVAE(VQVAE)、VOCOS声码器

文本控制

  • 1. Input Text : 需要转换的文本,支持中文和英文混杂
  • 2. Refine text : 是否对文本进行口语化处理
  • 3. Text Seed : 配置文本种子值,不同种子对应不同口语化风格
  • 4. 🎲 : 随机产生文本种子值
  • 5. Output Text : 口语化处理后生成的文本

音色控制

  • 6. Timbre : 预设的音色种子值
  • 7. Audio Seed : 配置音色种子值,不同种子对应不同音色
  • 8. 🎲 : 随机产生音色种子值
  • 9. Speaker Embedding : 音色码,详见 音色控制

情感控制

  • 10. temperate : 控制音频情感波动性,范围为 0-1,数字越大,波动性越大
  • 11. top_P :控制音频的情感相关性,范围为 0.1-0.9,数字越大,相关性越高
  • 12. top_K :控制音频的情感相似性,范围为 1-20,数字越小,相似性越高

系数控制

  • 13. DVAE Coefficient : 模型系数码
  • 14. Reload : 重新加载模型系数

播放控制

  • 15. Auto Play : 是否在生成音频后自动播放
  • 16. Stream Mode : 是否启用流式输出
  • 17. Generate : 点击生成音频文件
  • 18. Output Audio : 音频生成结果
  • 19. ↓ : 点击下载音频文件
  • 20. ▶️ : 点击播放音频文件

示例控制

  • 21. Example : 点击切换示例配置

快速体验

网址类型
Original Web原版网页版体验
Forge WebForge 增强版体验
LinuxPython 安装包
Samples音色种子示例
Cloning音色克隆体验

热门分支

功能增强

项目Star亮点
jianchang512/ChatTTS-ui提供 API 接口,可在第三方应用中调用
6drf21e/ChatTTS_colab提供流式输出,支持长音频生成和分角色阅读
lenML/ChatTTS-Forge提供人声增强和背景降噪,可使用附加提示词
CCmahua/ChatTTS-Enhanced支持文件批量处理,以及导出 SRT 文件
HKoon/ChatTTS-OpenVoice配合 OpenVoice 进行声音克隆

功能扩展

项目Star亮点
6drf21e/ChatTTS_Speaker音色角色打标与稳定性评估
AIFSH/ComfyUI-ChatTTSComfyUi 版本,可作为工作流节点引入
MaterialShadow/ChatTTS-manager提供了音色管理系统和 WebUI 界面