radtts
NVIDIA开源的基于归一化流的高保真语音合成系统,支持F0/Energy精细控制
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
NVIDIA开源的基于归一化流的高保真语音合成系统,支持F0/Energy精细控制
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
图1:NVIDIA 官方 GitHub 头像
你用 Text-to-Speech(TTS)工具生成过一段自我介绍吗?大多数情况下,合成语音听起来总是有一股「机械感」——语调平板、重音位置奇怪、遇到数字和缩写时乱读。这不是模型不够大,而是传统 TTS 系统在「对齐文本与音频」这一步就埋下了祸根。
NVIDIA 推出的 RADTTS(Robust Alignment Diverse TTS)正是为了解决这个问题而来。它由 NVIDIA 的语音研究团队开发,发表在 ICASSP 2022 和 ICML 2021 等顶会,并在 GitHub 上获得了近 300 颗星(截至 2026 年 7 月)。与其前身 RAD-TTS 相比,RADTTS++ 版本引入了对基频(F0)和能量(Energy)两大声学属性的精细控制,让合成语音第一次真正做到了「像人说话」。
RADTTS 的核心技术是归一化流(Normalizing Flow),一种通过可逆变换将复杂数据分布逐步简化为简单高斯分布的深度生成模型。在 TTS 任务中,RADTTS 的 bipartite flow 架构将文本 phoneme 序列映射到 mel-spectrogram(梅尔频谱图),每一步 flow 都保持可逆性,使得训练过程可以用精确的对数似然(log-likelihood)作为目标函数,而不是依赖单一的判别器。
最关键的一步是对齐模块(Alignment Module)。传统的 Tacotron 系列使用单调注意力机制,但面对长文本或特殊发音时容易「跑偏」。RADTTS 引入了一个独立训练的对齐模块,通过动态规划(MAS,Monotonic Alignment Search)自动学习 phoneme 与音频帧之间的对应关系,且不依赖预对齐数据。这种设计被论文《One TTS Alignment to Rule Them All》总结为:任何能学到的对齐都是好对齐,模型自适应即可。
RADTTS 的完整推理链路分为三层:
第一层:文本处理(tts_text_processing/) 仓库内置完整的英文文本预处理管线(cleaners.py、symbols.py、cmudict.py),负责将原始文本转换为 phoneme 序列。它能处理缩写展开(abbreviations.py)、数字转读(numerical.py)、日期时间格式(datestime.py)等,确保每个 token 都有对应的发音。
第二层:RADTTS 模型(radtts.py + transformer.py) 核心模型继承自 PyTorch 的 nn.Module,使用 Transformer 编码器处理文本上下文,经 FlowStep 模块序列地变换隐变量。每个 FlowStep 包含:Invertible 1×1 Convolution(可逆1×1卷积)用于通道重排,和 Affine Transformation Layer(仿射变换层)用于特征调制。alignment.py 中实现的 MAS 搜索负责建立 phoneme 与 mel-spectrogram 的精确对齐。
第三层:HiFi-GAN 声码器(hifigan_models.py) 生成的 mel-spectrogram 需要转换为最终音频波形。RADTTS 搭配 NVIDIA 自研的 HiFi-GAN 声码器,使用生成对抗网络(GAN)将频谱图高效地上采样为 22kHz 的高保真 wav 文件。inference.py 中的 Denoiser 模块还能进一步去除声码器引入的机械噪声。
RADTTS++ 允许对 pitch(F0)和 energy 两个声学属性进行条件控制,通过 attribute_prediction_model.py 实现,有三种预测策略:
每种策略对应独立的训练配置文件(config_ljs_dap.json / agap.json / bgap.json),可按需组合使用。
RADTTS 是一个纯研究级工具包,完全没有 Web UI。训练流程需要:准备 LJSpeech 数据集 → 配置 filelist 和 JSON → 执行 python train.py -c config.json → 分布式训练时加 --nproc_per_node=NUM_GPUS。推理同样需要命令行调用 python inference.py -c CONFIG -r MODEL -v VOCODER,输入文本文件和说话人 ID。
部署难度属于中等偏上:提供官方 Dockerfile(基于 NVIDIA PyTorch 21.03 容器),可快速构建 Cuda + cuDNN 环境;但需要手动准备音频数据集、配置路径,且 8GB 以上显存的 NVIDIA GPU 是硬性要求。整个训练+推理链路对新手并不友好,适合有深度学习经验的开发者或学术研究者。
RADTTS 最大的贡献在于证明了「对齐问题」才是 TTS 的核心瓶颈——当对齐足够鲁棒时,简单的 flow 模型也能超越复杂的自回归 Transformer。在 RADTTS 基础上发展出的 FastSpeech 2s、Grad-TTS 等后续工作进一步推动了并行 TTS 的工程落地。
对于想要复现论文结果或构建自定义语音合成 pipeline 的开发者而言,RADTTS 提供了难得的「参考实现」:从数据预处理、模型训练到声码器联合调用的完整闭环,且代码注释清晰(SPDX MIT License),可直接用于学术发表。
图2:NVIDIA 作为项目维护者,持续为开源社区提供高质量深度学习参考实现