StyleTTS 2:当听众认为合成声音比真人录音更自然
声称一个 TTS 模型听起来“几乎像真人”,如今已司空见惯,几乎成了背景噪声。StyleTTS 2 由开发原版 StyleTTS 的哥伦比亚大学同一团队打造,它提出了一项更具体、也更容易检验的主张:在使用单说话人 LJSpeech 数据集开展的听感评测中,以英语为母语的听众认为其合成结果比训练它所用的真实人类录音更自然。在多说话人 VCTK 数据集上,它与人类录音打成平手,而非超越后者——面对难度更高、变化更丰富的任务,这一结果较为克制,但依然值得关注。
相比原版 StyleTTS 有哪些变化
StyleTTS 2 保留了前代的核心理念——将风格作为生成过程中一个明确分离、可控的组成部分——但改变了风格的获取方式,并围绕一种新的反馈来源重构了训练过程。
通过扩散采样风格,而不是从参考片段中提取。 原版 StyleTTS 需要一段参考梅尔频谱图,由风格编码器从中提取风格向量。StyleTTS 2 则把风格建模为通过扩散生成的潜在随机变量,这意味着模型无需任何参考语音,就能为任意给定文本生成合适且自然的说话风格。这是两个版本之间最重要的实际变化——使用 StyleTTS 2 获得富有表现力且多样的输出时,不必预先准备声音样本。
把大型语音语言模型用作判别器。 StyleTTS 2 不再只依靠传统判别器训练,而是引入包括 WavLM 在内的大型预训练语音语言模型,用来判断生成语音听起来有多像真人;同时采用新的可微分时长建模方法,使整个系统可以端到端训练,而不必分阶段进行。
消融实验数据:真正发挥作用的是什么
StyleTTS 2 背后的研究并非只是宣称这些设计选择有效,而是通过比较平均意见分(CMOS)测试衡量了每一项选择的独立贡献——每次移除一个组件,再重新测量感知自然度:
- 移除风格扩散(改用随机参考风格向量)造成了所有受测组件中最大的质量下降——这是最明确的证据,表明依赖文本的风格扩散对达到人类水平的输出有多大贡献。
- 移除可微分时长上采样器,以及移除基于 WavLM 的判别器,都会分别造成显著的质量下降,证实两个新的架构组件都真正发挥了作用,而不是只有其中一个有效。
- 完全移除韵律风格编码器同样会明显损害自然度,这进一步说明原版 StyleTTS 的底层风格向量概念仍然是实质性的贡献因素,并非被新的扩散方法简单取代。
- 专门从对抗训练中排除分布外文本,会降低模型面对陌生输入时的稳健性;在受测组件中,这项影响最小,但依然具有实际意义。
零样本说话人适配
在 LibriTTS 上训练时,StyleTTS 2 在零样本说话人适配这一特定任务上优于此前已有的开放模型——只需一小段参考片段,它就能为模型从未遇到过的声音生成可信的语音。结合基于扩散的风格采样后,StyleTTS 2 便有两种彼此独立的方式来引入变化:即使没有参考音频也能产生新颖的说话风格,而在有参考片段时则可以克隆说话人身份。
开始之前值得了解的事项
以下几个实际细节会影响 StyleTTS 2 的真实运行方式:
完整质量的推理依赖一个 GPL 许可组件。 由于许可原因,主仓库没有直接打包这一组件;采用 GPL 许可的社区 fork 提供了可导入的推理脚本(包括实验性流式 API),另有一个完全采用 MIT 许可、改用 gruut 音素化器的独立软件包——不过,由于音素化器与 gruut 之间存在不匹配,这种替代方案的输出质量会略低。
较旧的 GPU 可能引入可听见的伪影。 一个已知问题会在较旧的显卡上产生高频背景噪声,其原因是浮点精度差异——文档给出的解决方法是使用更新的 GPU,或改用 CPU 推理。
非英语合成需要匹配的 PL-BERT 模型。 StyleTTS 2 可以在其他语言上训练,但需要针对该语言预训练的 PL-BERT 模型;社区已经提供了一个覆盖 14 种语言的多语言 PL-BERT,可用于这一用途。
这里的声音克隆需要遵守同意要求。 如果使用预训练模型时,参考说话人并不来自原始开放访问训练数据集,项目使用条款要求你获得该说话人的许可,或者在公开结果音频之前明确披露该音频由合成生成。
StyleTTS 2 入门
- 克隆仓库。 对官方
yl4579/StyleTTS2项目执行git clone,并根据质量需求与许可限制,在 MIT 许可的推理路径和 GPL 许可的 fork 之间进行选择。 - 下载预训练的 LibriTTS 检查点。 该检查点可从 Hugging Face 获取,是零样本说话人适配和通用生成的推荐起点。
- 设置扩散采样参数。 推理会开放
alpha、beta、diffusion_steps和embedding_scale等参数——由于采样器采用祖先采样,更多扩散步数会以降低生成速度为代价产生更多样的样本,因此应根据实际用途更看重多样性还是速度来调节。 - 先用附带的演示 notebook 听听实际效果。 仓库中的推理 notebook 会复现模型已发布的演示样本,并直接计算实时因子,让你可以在自己的硬件上得到具体的速度基准。
- 让 GPU 代际与预期输出质量相匹配。 如果遇到意外的高频伪影,先检查是否正在使用较旧的 GPU,再判断问题是否来自配置错误。
- 如果需要非英语输出,先设置 PL-BERT。 在开始训练前确认目标语言已有预训练 PL-BERT 模型(或使用社区多语言 PL-BERT),不要等训练进行到一半才发现这一要求。
获得更好结果的技巧
- 增加扩散步数是为了多样性,而不只是质量。 更多步数会让同一文本的多次生成结果更加多样——当你需要几个不同版本时很有用,但如果速度很重要,就不应默认把它调到最高。
- 如果输出质量优先且许可允许,请使用 GPL 许可的 fork。 纯 MIT 路径专门为许可灵活性而存在,同时承认存在质量取舍——应根据项目更看重哪项约束来谨慎选择。
- 正式采用前,用具体目标声音测试零样本克隆。 已发布结果所描述的强大零样本适配能力,针对的是 LibriTTS 基准;请在自己的参考说话人上验证质量,不要假定所有声音都能获得一致效果。
- 在实际语境中理解“超越人类录音”的主张。 它来自单说话人 LJSpeech 数据集上的一项特定听感评测——在难度更高的多说话人 VCTK 任务中,结果是与人类录音相当,而不是胜过人类;这是一种更典型、但依然令人印象深刻的表现。
- 尊重克隆声音相关的披露与同意要求。 这不只是一项法律形式——鉴于输出可以如此逼真,认真对待这些要求是负责任使用这项技术的一部分。
StyleTTS 2、StyleTTS 与其他克隆模型对比
| StyleTTS 2 | StyleTTS(原版) | XTTS-v2 | |
|---|---|---|---|
| 风格来源 | 扩散采样,无需参考 | 通过风格编码器从参考音频中提取 | 基于参考片段的说话人潜变量 |
| 判别器 | 大型语音语言模型(如 WavLM) | 标准对抗判别器 | 不适用(架构不同) |
| 零样本说话人适配 | 较前代有所提升 | 支持 | 支持 17 种语言 |
| 报告的自然度 | 在 LJSpeech 上超越人类录音,在 VCTK 上与人类相当 | 表现强劲,早于这一主张 | 表现强劲,未直接与人类录音进行基准比较 |
| 训练方式 | 端到端、可微分时长建模 | 多模块、对抗式 | GPT 风格自回归 |
| 多语言 | 通过社区 PL-BERT 模型支持 | 以英语为主 | 原生支持 17 种语言 |
StyleTTS 2 的核心进步,是在生成表达性风格时摆脱对参考音频的依赖,同时把自然度推进到至少在一个标准基准上与人类录音相当或超过人类录音的程度——在一个通常只含糊使用“接近真人”说法的领域,这是一项真正罕见、具体且可以独立检验的主张。
常见问题
StyleTTS 2 听起来真的比人类录音更好吗?
在一项特定评测中,以英语为母语的听众认为 StyleTTS 2 在单说话人 LJSpeech 数据集上的输出比真实人类录音更自然。在难度更高的多说话人 VCTK 数据集上,它与人类录音相当,而不是超过后者——两项结果都值得关注,但应记住具体评测语境,不要把它当成普遍结论。
使用 StyleTTS 2 时需要参考音频片段吗?
一般来说,生成富有表现力且自然的语音并不需要——风格可以通过扩散在没有任何参考音频的情况下采样。只有在对特定说话人进行零样本声音克隆时,参考片段才依然有用。
为什么仓库会提到 GPL 许可问题?
完整质量的推理依赖一个采用 GPL 许可的组件,因此它没有直接打包进以 MIT 风格许可为主的主仓库。你可以使用 GPL 许可的社区 fork 获得完整质量,也可以使用采用 gruut 音素化器、完全遵循 MIT 许可的替代方案,并接受一定的质量取舍。
StyleTTS 2 能生成英语以外的语音吗?
可以,但目标语言需要有预训练的 PL-BERT 模型——社区训练的多语言 PL-BERT 已经覆盖 14 种语言,其他语言也可以自行训练模型。
一些用户报告的高频噪声是由什么引起的?
这是一个与旧款 GPU 硬件浮点精度差异有关的已知伪影;使用更新的 GPU 或切换到 CPU 推理即可解决。
在浏览器中把文字转换为语音
如果你希望完成相近的“文字 → 单人语音”流程,可以使用 Echora 的文字转语音。输入最多 5,000 个字符,选择内置音色或已保存的自定义音色,按需添加支持的表达标签并调整语音稳定度,然后试听结果并下载生成的 MP3。