字节打造大模型TTS:不仅能高保真合成,而且支持调整编辑
首先来听一段《凡人修仙传》:
试听链接:https://mp.weixin.qq.com/s/BZFtJJA5UMmHygO2trvoaw
你猜的没错,这段有声书并非来自某个专业制作团队,而是一个 AI 模型 Seed-TTS,而这个模型则是来自字节跳动的 Seed Team。
TTS 是指文本转语音,这是一种具备诸多妙用的技术,像是让个人智能助理说话、为视频或游戏配音、辅助视障人士、制作有声书等等。对于 TTS 技术研发者来说,流畅自然的表达一直以来都是值得追求的重要目标。
字节跳动 Seed Team 发布的 Seed-TTS 不只是一个模型,而是一整个模型系列。
论文标题:Seed-TTS: A Family of High-Quality Versatile Speech Generation Models
论文地址:https://arxiv.org/pdf/2406.02430
演示网站:https://bytedancespeech.github.io/seedtts_tech_report/
据介绍,该系列模型有能力合成自然度和表现力达到人类水平的语音。不仅如此,Seed-TTS 还能以零样本方式基于一段较短的录入语音片段生成可控的、高保真度的合成语音。
该团队在三个任务上评估了 Seed-TTS:零样本语音上下文学习、说话人微调、情绪控制。为了方便未来的基准测试,他们还发布了测试数据集的配置,并讨论了该模型在产品部署方面的行为。
此外,该团队还提出了两种可大幅提升模型性能的新型扩展技术:通过自蒸馏实现语音分解以及通过强化学习实现偏好偏向。
然后,他们还比较了两类主要的语音生成技术的优劣:基于语言模型的方法和基于扩散的方法。为此,他们为 Seed-TTS 开发了一种非自回归式的变体 Seed-TTS_DiT,这是一种完全基于扩展的语音生成模型,能以端到端的方式直接预测输出语音的隐含表征。
方法
Seed-TTS 是一种基于自回归 Transformer 的模型,如图 1 所示。
该系统包含 4 个主要模块:语音 token 化器、token 语言模型、token 扩散模型和声学声码器。
该团队还强调,Seed-TTS 的训练使用了大量数据(比之前最大的 TTS 系统多几个数量级),因而具备强大的泛化和涌现能力。
首先,语音 token 化器将语音信号转换成语音 token 序列,然后基于其训练一个 token 语言模型。该团队研究了连续和离散的语音 token 化器,结果发现 token 化器的设计对整个系统的性能来说至关重要。这个语言模型的训练使用了成对的文本和语音 token。在推理期间,该模型则以自回归方式生成语音 token。
然后,生成的 token 交由扩散模型处理,以增强其声学细节。其输出再经过声学声码器处理,得到最终声波波形。这个声学声码器是单独训练的。
类似于基于文本的语言模型,Seed-TTS 也要经历三个训练阶段:预训练、微调和后训练。
预训练阶段的目标是尽可能多地覆盖不同的场景和说话人,同时为一般语音建模确立一个稳健的骨干。在这一阶段,Seed-TTS 使用的训练数据量和模型规模都超过了之前的语音生成方法几个数量级。
微调阶段包含说话人微调和指令微调。说话人微调的重点是提高所选说话人组的表现,而指令微调旨在提高可控性和交互性。后训练通过强化学习完成,从而整体提升模型。
该团队表示,相比于之前的模型,Seed-TTS 有两大优势。
由于使用了一个基础模型来生成语音,因此 Seed-TTS 可以执行多种不同任务,比如语音上下文学习、可控式 TTS、跨语言 TTS、语音转换、音色生成和说话风格迁移。
实验
零样本上下文学习
该团队为实验准备了两个测试集:客观集(objective-set)和主观集(subjective-set)。客观集的样本提取自英语(EN)和汉语普通话(ZH)的公共语料库;这些语料库曾被用于测量模型在多种客观基准上的性能表现。
具体来说,客观集包含 1000 个来自 Common Voice 数据集的样本和 2000 个来自 DiDiSpeech 数据集的样本。主观集则来自他们的内部数据集,用于主观评估,其中的样本语音比客观集丰富得多,包括多种口音、方言、情绪和说话风格。该数据集包含英语和普通话的各 100 个样本。
评估指标。对于客观评估,该团队采用了词错率(WER)和说话人相似度(SIM)指标。对于主观评估,则使用了 CMOS,即比较平均意见分数(Comparative Mean Opinion Scores)。
在实践中,如果 CMOS 分数绝对值低于 0.1,则认为相比较的两个系统差别不大。表 1 给出了在这两个测试集上的结果。为便于基准测试,该团队发布了客观集的配置:https://github.com/BytedanceSpeech/seed-tts-eval/tree/main
上下文学习结果。从表 1 中可以看到,Seed-TTS 的 WER 与真人语音相近,并且 SIM 也明显更高。该结果也许可以这样解释:可以观察到,在使用不同的说话风格和在不同的背景环境中时,即使是同一说话人,真人语音和参考语音依然会有所不同。相较之下,Seed-TTS 可以准确地捕获参考语音的特性并基于其生成目标语音,进而更一致、更忠实地再现录入语音片段。下面我们来听几个示例:
输入 prompt:
试听链接:https://mp.weixin.qq.com/s/BZFtJJA5UMmHygO2trvoaw
合成语音:
试听链接:https://mp.weixin.qq.com/s/BZFtJJA5UMmHygO2trvoaw
在主观测试中,Seed-TTS 在英语和普通话上的表现与真人语音接近 ——CMOS 分数分别为 -0.07 和 -0.08。
此外,该团队还为之前一些模型执行了同样的评估,结果发现它们的 CMOS 结果都低于 -1,这说明这些合成语音和真人语音之间的差异很明显。该团队表示,Seed-TTS 的主观测试结果表明,在使用自然语音 prompt 的零样本 ICL 设置中,Seed-TTS 是首个能生成与真人语音难以区分的结果的 TTS 系统实例。
对比传统的说话人微调式 TTS 模型。该团队将他们的零样本 ICL 系统与一组传统的基于 FastSpeech 的说话人微调式 TTS 模型进行了比较。他们收集了 10 个说话人的语音,并将其分为两组:普通组(7 个说话人)和困难组(3 个说话人)。
对于每个说话人,每个系统都生成 30 段语音,涵盖不同的场景、上下文和情绪。然后再由 10 位人类评估者给出偏好情况,之后计算平均偏好率,结果见图 2。
可以看到,对于普通组,相比于传统的微调式 TTS 系统,新的零样本 ICL 系统有 47.9% 的样本更受偏好。人类评估者表示,Seed-TTS 明显在自然度和表现力方面更有优势。但是,对于困难组而言,传统的微调模型表现更好。该团队推测,原因是新的零样本 ICL 系统无法忠实地保持口音和特有的说话人风格,尤其是当 15 秒 prompt 中并不包含说话人代表性的韵律时。因此,如果能使用更长的 prompt 或让 prompt 更好地覆盖训练数据,应当可以缓解这个问题。
语音理解评估。为了进一步验证 Seed-TTS 的生成质量,该团队对生成的语音执行了 ASR。结果见表 2。
可以看到,相比于真人数据,Seed-TTS 生成的数据在 clean 集上表现很好,在 other 集上表现较差。该团队猜测这是因为 Seed-TTS 在生成过程中倾向于降低背景噪声,从而对噪声的稳健性降低。
可视化真人语音与 ICL 语音的说话人相似度。为了验证合成语音中音色的保留情况,该团队使用 t-SNE 绘制了 25 个说话人的真人语音和合成语音的说话人嵌入,结果见图 3。
可以看到,来自同一说话人的真人语音与合成语音紧密地聚类在一起,这也佐证了之前的发现:Seed-TTS 的语音生成质量很好,并且与真人语音很相似。
说话人微调
在基础的 Seed-TTS 预训练模型上,该团队又执行了说话人微调(SFT)。
他们使用 WER 和 SIM 客观指标与 CMOS 主观指标评估了微调版 Seed-TTS_SFT 和基础版 Seed-TTS_ICL 生成语音的表现。实验结果见表 3。
可以看到,微调版模型与基础版在客观指标上表现相近,而微调版在主观指标上有 +0.37 的优势。这表明,微调版 Seed-TTS_SFT 模型能捕获目标说话人的更多细微细节,例如细微的韵律变化和句尾的独特发音模式。
通过指令微调实现可控性。为了进一步提高说话人微调模型的可控性,该团队又尝试了整合额外的指令微调(IFT)。指令微调可让模型灵活控制生成语音的各个方面,比如表现力、语速、风格、情绪等。
结果见表 4。该团队发现,即使没有明确的控制信号,Seed-TTS_SFT 依然在情绪控制方面得到中等准确度。
他们猜想,这是因为该模型有能力基于所提供的文本内容推断适当的目标情绪。如果再加上额外的控制信号,准确度能大幅提升。这里来听一个示例:
文本:哇!恭喜你中了大乐透,八百万可真不少呢!有什么特别的计划或想法吗?
生成语音:
试听链接:https://mp.weixin.qq.com/s/BZFtJJA5UMmHygO2trvoaw
低延迟推理和流式处理
在实际部署应用时,除了准确度等性能指标外,还有其它一些考虑因素,比如延迟、成本等。相比于传统的 TTS 模型,Seed-TTS 的模型要大得多,这就会给部署带来额外的阻碍。
为了解决这些难题,该团队采用了多种技术来降低推理成本和延迟。具体来说,他们模型部署时三方面的难题。
首先,他们实现了一个因果扩散架构。这能在扩散模块中实现流式处理,并显著降低处理延迟和首包延迟。
其次,他们采用了一致性蒸馏技术和一种修改版的流匹配算法,以降低扩散模型的计算成本。
另一方面,他们也研究了降低大模型内存和计算消耗的常用方法,比如分组式查询注意力、分页注意力、flash 注意力和模型量化。
这样三板斧下来,如表 5 所示,经过优化的模型在保证客观和主观性能的同时,还显著降低了延迟、计算和内存消耗。
模型扩展
为了进一步提升 Seed-TTS 模型的性能并拓宽其应用场景,该团队还为其提出了两项扩展。一是用于提升音色可控性的自蒸馏方法。二是使用强化学习方法来全面提升模型的能力。
通过自蒸馏实现语音分解
语音分解(speech factorization)是指将语音分解为不同的分立的属性。如果 TTS 系统具备这样的功能,就能在合成语音时灵活地组合使用不同说话人的音色、韵律和内容。
该团队为此提升了自蒸馏方案。该方法的核心原理是创建受控的语音对 —— 这些语音对的大部分信息都一样,但有少量特定的目标属性不同。使用这样的数据对,再加上一点对模型架构的细微更新,可让 Seed-TTS 实现高质量的属性分解。
该团队在音色属性方面做了实验。他们注意到,通过在 Seed-TTS 生成期间向扩散模块引入说话人扰动,就能合成内容与韵律模式相同但音色不一样的语音。如图 4 所示,这一任务也被称为零样本语音转换(zero-shot voice conversion)。
通过使用原始语音以及修改过音色的语音组成的增强型合成数据对,该团队对 Seed-TTS 系统的扩散模型进行了重新训练。
实验结果见表 6。
可以看到,新提出的自蒸馏方法可通过增强型的音色分解显著提升 SIM 指标,同时在所有其它维度上也更优。下面给出了一个示例:
源音频:
试听链接:https://mp.weixin.qq.com/s/BZFtJJA5UMmHygO2trvoaw
音色 prompt:
试听链接:https://mp.weixin.qq.com/s/BZFtJJA5UMmHygO2trvoaw
转换后的音频:
试听链接:https://mp.weixin.qq.com/s/BZFtJJA5UMmHygO2trvoaw
通过强化学习实现偏好偏向
该团队也探索了使用强化学习方法来提升 Seed-TTS。他们比较了使用外部奖励模型的强化学习方法(如 PPO 和 REINFORCE)以及不使用外部奖励模型的方法(如 DPO)。
结果发现这两种方法都很有效。前者可实现对特定语音属性的更清晰控制,而后者的优势是实现起来更简单。这篇论文主要关注的是前者。
表 7、8、9 报告了客观和主观评估结果。
从表 7 和 8 可以看出强化学习所带来的好处。
从表 9 则可以看到,相比于上面的说话人微调式 Seed-TTS_SFT 模型,Seed-TTS_{RL-SER} 的情绪可控性下降了,但相比于 Seed-TTS_ICL,使用强化学习能大幅提升在各种情绪上的情感控制准确度。下面是一组示例:
prompt:
试听链接:https://mp.weixin.qq.com/s/BZFtJJA5UMmHygO2trvoaw
喜:
试听链接:https://mp.weixin.qq.com/s/BZFtJJA5UMmHygO2trvoaw
怒:
试听链接:https://mp.weixin.qq.com/s/BZFtJJA5UMmHygO2trvoaw
哀:https://bytedancespeech.github.io/seedtts_tech_report/audios/RL_ICL_samples/-5282986181050362834.wav
惊:https://bytedancespeech.github.io/seedtts_tech_report/audios/RL_ICL_samples/-7183650758233635696.wav
完全基于扩散的语音生成
为了进一步理解语言建模和扩散模型这两种建模方法的特性,该团队提出了一种完全基于扩散的 Seed-TTS 模型变体,记为 Seed-TTS_DiT。在这种变体中,移除了扩散模型和声学 token 化器之间的依赖关系,这样一来扩散模型就需要直接基于输入文本将高斯噪声转换成声码器的隐含表征。
对于这种修改版的 Seed-TTS_DiT 设计,他们在扩散模型中直接采用了端到端的处理方式。该模型不会估计音素层面的持续时间,而是事先估计生成语音的总持续时间。然后优化该模型,以估计音频和文本之间的局部对齐。通过这种方式,Seed-TTS_DiT 可以动态调整每个音素的持续时间,从而得到高度自然的语音。
结果发现,只要得到适当训练,Seed-TTS_DiT 就能预测输入语音的合适总持续时间。但是,该团队并未选择以这种方式训练,而是选择直接为模型提供总持续时间,这能实现一些可用于内容编辑和语速编辑的额外性质。为此,在训练时,向模型提供音频 prompt、目标文本和一段有总持续时间的高斯噪声片段,然后预测有同样总持续时间的生成语音的隐含表征,之后再由声码器将该表征转换成波形。
相比于采样下一 token 语言建模的方法,这种纯粹的扩散模型的工作流程更简单。Seed-TTS_DiT 是一种非流式模型,很自然支持内容编辑应用,如图 5 所示。话虽如此,语言建模方法也有自己的优势:流式处理以及能够整合基于文本的语言模型。
该团队使用之前的测试集评估了 Seed-TTS_DiT 的零样本 TTS 能力,评估结果见表 10。
可以看到,相比于 Seed-TTS_ICL,完全基于扩散的方法在 SIM 上性能更优,而在 WER 指标上的表现也相差不大。
内容编辑和语速编辑。该团队进一步评估了 Seed-TTS_ICL 在两个语音编辑任务上的能力:内容编辑和语速编辑。
图 6 和 7 给出了评估结果。
可以明显看出,在内容编辑时,Seed-TTS_DiT 在不同的掩蔽率下表现很稳健。而 Seed-TTS_DiT 也确实能在不同语速下合成高说话人相似度的语音,但当语速过快时,WER 指标会变差一些。
最后展示一个内容编辑的示例:
源文本:对,这就是我,万人敬仰的太乙真人,虽然有点婴儿肥,但也掩不住我逼人的帅气。
目标文本:对,这就是我,众人尊崇的太白金星,虽然有点娃娃脸,但也遮不住我迷人的魅力。
源语音:https://bytedancespeech.github.io/seedtts_tech_report/audios/DITEdit_samples/source/-40165564411515767.wav
编辑后的语音:https://bytedancespeech.github.io/seedtts_tech_report/audios/DITEdit_samples/generated/5710927739229863116.wav