StyleTTS:把“怎么说”作为可独立控制的对象
大多数 TTS 模型把两个截然不同的问题捆在一起:说的是什么,以及这些话是怎么说出来的。由哥伦比亚大学开发的 StyleTTS 则有意将二者拆开。它借鉴了图像生成中的一种技术——也就是让神经网络把一张图像的纹理应用到另一张图像内容上的风格迁移方法——并将其用于语音,把韵律、节奏和表达方式视为一种独立且可控的“风格”,而不是隐含在说话人身份中的特征。
什么是 StyleTTS?
StyleTTS 是一个非自回归文本转语音模型,也就是说,它会并行生成整段话,而不是每次生成一个 token——这种结构选择使其推理速度明显快于自回归方案。它的架构由八个各司其职、协同工作的模块组成:文本编码器、风格编码器、判别器、文本对齐器、音高提取器、语音解码器、时长预测器和韵律预测器。与许多较新的端到端模型相比,这种设计更加模块化,而这种模块化是有意为之的——正因如此,风格才能作为一个独立组件被操控,而不是与其他一切纠缠在一起的副产物。
风格向量:究竟是什么让它成为“基于风格”的模型
这一部分值得理解,因为它正是模型名称的核心所在。StyleTTS 的风格编码器接收参考梅尔频谱图,并从中提取风格向量——它的作用类似于说话人嵌入,但捕捉到的内容不只是“谁在说话”。它还会捕捉说话的方式:语速、重音、情绪色彩,以及表达中的声学质感。
随后,这个风格向量会通过自适应实例归一化(Adaptive Instance Normalization,AdaIN)注入语音解码器——这与神经风格迁移图像模型把一张图像的视觉风格应用到另一张图像内容上所使用的归一化技术相同。在这里,它对音频发挥着类似作用:解码器的输出会在网络中的多个位置反复依据风格向量重新归一化,让单一参考风格能够影响整段生成语音,而不是在开头被压缩成一次静态的条件输入。
用对抗训练提升自然度
除了基于风格的设计,StyleTTS 还使用判别器进行训练——其核心思路与生成对抗网络相同——推动解码器生成难以与真实人声录音区分的输出,而不是只针对重建损失进行优化。再结合专门处理时间安排和音高轮廓的时长预测器与韵律预测器,这套组合让 StyleTTS 的输出拥有自然节奏,而不是简单非自回归模型可能产生的那种更平、更机械的韵律。
零样本风格与说话人迁移
StyleTTS 支持对训练中未见过的说话人进行零样本适配;这一能力通过 LibriTTS 语料库中未参与训练的留出测试说话人得到了展示——只需提供一段新说话人的参考音频,风格编码器就能从中提取可用的风格向量,无需任何额外微调。由于风格和内容在架构上彼此分离,这也带来了比典型克隆模型更不同寻常的组合方式:可以把一个说话人的表达风格应用到另一个说话人的声音身份上,而不再把“声音”视为一个不可分割的整体属性。
StyleTTS 入门
- 克隆代码仓库。 从 GitHub
git clone官方的yl4579/StyleTTS项目,以获取代码和推理 notebook。 - 安装
phonemizer。 StyleTTS 的推理流程依赖它在合成前把文本转换为音素——请在尝试运行所提供的 notebook 前完成安装。 - 下载适合你使用场景的预训练检查点。 项目提供了一个在单说话人 LJSpeech 语料库上训练的模型,适合保持一致的单人旁白;另一个在 LibriTTS 上训练的检查点则支持多说话人和零样本生成。
- 获取与之匹配的 HiFi-GAN 声码器检查点。 StyleTTS 输出的梅尔频谱图需要搭配相应训练的 HiFi-GAN 模型才能生成最终波形——声码器与声学模型检查点不匹配会降低输出质量。
- 使用
inference.ipynb完成第一次生成。 提供的 notebook 会引导你加载预训练模型并根据文本进行生成;在搭建自定义流程之前,这是亲自听到风格迁移效果的最快方式。 - 如果想尝试零样本演示,请下载 LibriTTS test-clean 数据集划分。 只有在测试使用模型训练期间从未见过的参考说话人进行生成时,才特别需要这份数据。
获得更好结果的技巧
- 选择参考音频时要看风格,而不只是说话人身份。 风格编码器捕捉表达特征的程度不亚于声音身份,因此,一段韵律清晰、录制良好的参考音频,会比技术上干净但平淡单调的音频带来更可信的迁移效果。
- 让检查点与项目对说话人的需求相匹配。 在 LJSpeech 上训练的模型适合保持一致的单人旁白;只有在需要多说话人或零样本能力时,才应选择 LibriTTS 检查点。
- 让文本对齐器和音高提取器与训练数据保持一致。 如果计划用自定义音频进行微调或重新训练,项目的预训练对齐器和音高提取器是针对特定的梅尔频谱图预处理方式训练的——偏离这套方式意味着也要重新训练这些组件,而不能只训练主模型。
- 适当披露合成语音。 与大多数为研究而发布的声音模型一样,使用某人的声音形象或基于真实录音构建声音时,有责任取得声音来源者的同意,或明确披露输出为合成内容——在这里这点更为重要,因为可直接辨认的“风格”会让克隆后的表达显得格外真实。
- 如果手头没有参考音频,可以考虑 StyleTTS 2。 原版 StyleTTS 需要参考音频样本来提取风格向量;其后继版本 StyleTTS 2 随后重新设计了这一机制,让风格可以通过扩散采样得到,完全不需要参考语音——如果你的工作流并不总能拿到干净的参考音频,这一点值得了解。
StyleTTS 与其他非自回归及克隆方案的对比
| StyleTTS | 典型的说话人嵌入 TTS | 自回归克隆模型 | |
|---|---|---|---|
| 生成模式 | 非自回归(并行) | 不一 | 自回归(顺序生成) |
| 风格控制 | 显式,通过 AdaIN 注入的风格向量实现 | 隐式,与说话人嵌入纠缠在一起 | 隐式,与参考音频绑定 |
| 推理速度 | 快(并行生成) | 不一 | 通常更慢 |
| 零样本说话人适配 | 支持 | 有限,取决于架构 | 支持,是常见设计目标 |
| 训练方式 | 对抗式(基于判别器) | 不一 | 不一 |
| 架构模块化程度 | 高(8 个独立模块) | 较低 | 通常更趋向端到端 |
StyleTTS 的独特贡献,在于证明说话风格值得被视为一个独立可控的变量,而不是与说话人身份不可分割的特征——后来更侧重扩散的模型,包括它自己的后继版本,都直接沿用了这一区分。
常见问题
具体来说,StyleTTS 中的“风格”指什么?
它指的是表达特征——韵律、节奏、重音和情绪色彩——这些特征会从参考音频中提取为风格向量,与参考说话人的声音身份有所区别(尽管二者相关)。
StyleTTS 像基于 GPT 的克隆模型一样是自回归模型吗?
不是。StyleTTS 是非自回归模型,会并行生成整段话,而不是逐个 token 生成,因此其推理速度通常快于自回归方案。
StyleTTS 工作时需要参考音频吗?
原版 StyleTTS 需要——它的风格编码器会从参考梅尔频谱图中提取风格向量。它的后继版本 StyleTTS 2 后来通过把风格建模为由扩散采样的变量,移除了这一要求。
StyleTTS 能克隆未见过的说话人声音吗?
可以。它支持适配训练中未见过的说话人,并使用 LibriTTS 测试集中留出的说话人展示了这一零样本能力。
StyleTTS 使用什么声码器?
HiFi-GAN,需要搭配与你所用的特定声学模型(LJSpeech 或 LibriTTS)一同训练的匹配检查点。
在浏览器中把文字转换为语音
如果你希望完成相近的“文字 → 单人语音”流程,可以使用 Echora 的文字转语音。输入最多 5,000 个字符,选择内置音色或已保存的自定义音色,按需添加支持的表达标签并调整语音稳定度,然后试听结果并下载生成的 MP3。