DiffSinger AI 渲染|神经网络歌声合成的新范式
DiffSinger 是什么
DiffSinger = Diffusion-based Singing Voice Synthesis,基于扩散模型的歌声合成。由 OpenVPI 团队维护(开源社区)。
工作原理和 Classic 重采样管线完全不同:
| Classic 管线 | DiffSinger |
|---|---|
| 音频片段 → 重采样 → 拼接 → 输出 | 音素符号 → 神经网络推理 → 波形生成 → 输出 |
| 依赖 oto.ini | 不依赖 oto.ini |
| 音质天花板 = 声库音频质量 | 音质由训练模型决定(可以远好于原始声库录音) |
| flags 是后处理 | 模型本身就包含演唱表现力(颤音、气声、重音) |
在 OpenUtau 里用 DiffSinger 的流程
前置条件
| 平台 | 最低要求 |
|---|---|
| Windows | Windows 10+ + .NET 8 Desktop Runtime |
| macOS | macOS 11 Big Sur+ + .NET 8 Runtime(Apple Silicon 推荐,Intel 也能跑) |
| Linux | .NET 8 Runtime(CPU 渲染,无 GPU 加速) |
| vocoder | nsf_hifigan(Windows diffsingerpack 已内置,macOS/Linux 需单独下载) |
分步操作
第一步:vocoder 导入(macOS / Linux)
下载 nsf_hifigan.oudep 文件,拖到 OpenUtau 主窗口导入。Windows diffsingerpack 版跳过这步。
第二步:装 DiffSinger 声库
从 OpenVPI / DiffSinger 社区下载 .zip,拖 zip 到 OpenUtau 窗口 → 编码选 UTF-8 → Install。
第三步:选引擎和音素器
- 轨道头 Singer → 选刚装的 DiffSinger 声库
- 引擎下拉(最上层)→ 切到 DiffSinger
- 音素器下拉 → 自动变成 DIFFS ZH / EN / JP(根据声库语言)
选完你会发现:齿轮图标里的重采样器和 Wavtool 选项消失了——因为 DiffSinger 有自己的端到端管线,不走 Classic 重采样器。
第四步:写歌词
歌词输入方式取决于声库训练配置:
| 声库语言 | 输入格式 |
|---|---|
| 中文 DiffSinger | 拼音(ni hao)或汉字(你好)——看 character.yaml 里的设置 |
| 英文 DiffSinger | ARPAbet 音标或自然单词 |
| 日文 DiffSinger | 假名或罗马音 |
滑音标记 + 和 DIFFS 系列的控制标记通用。
第五步:渲染
DiffSinger 渲染比 Classic 管线慢得多(CPU 上 10-30 倍),但自然度高几个档次。偏好设置里可以调渲染速度倍率(默认 50x,值越大越快但音质略降)。
DiffSinger 专属曲线参数
DiffSinger 引擎比 Classic / WORLDLINE-R 支持更多曲线参数(曲线在 Piano Roll 底部表达式面板里画):
| 缩写 | 名称 | 说明 |
|---|---|---|
| PITD | Pitch Curve | 音高曲线 |
| DYN | Dynamics | 音量曲线 |
| GENC | Gender Curve | 性别曲线(formant 位移) |
| VELC | Velocity Curve | 元音头尾速度(每 +100 速度×2) |
| ENE | Energy Curve | 能量曲线(含浊音量) |
| PEXP | Pitch Expressiveness | 音高表现力曲线 |
| TENC | Tension Curve | 张力曲线(力量/鼻音) |
| VOIC | Voicing Curve | 浊音曲线 |
| BREC | Breathiness Curve | 气声曲线 |
| SHFC | Tone Shift Curve | 音色位移曲线 |
重要:声库必须支持
这些曲线参数的可用性取决于声库训练时是否开启对应数据增强——检查声库的 character.yaml 里 data_augmentation 字段,某个参数是 false 就表示声库不支持,画了也白画。
添加表达式到工程
DiffSinger 新工程不会自动加载全部 DiffSinger 曲线表达式。需要在 Piano Roll 底部的表达式面板里点:
Add all expressions suggested by renderer
才会把 VELC / ENE / PEXP / TENC / VOIC / SHFC 这些曲线全部加载进工程的表达式列表。
导出 DiffSinger 脚本
OpenUtau → File → Export Project → Export DiffSinger Script
导出 .ds 文件可以直接喂给 DiffSinger 官方推理管线——如果你需要更高性能的批处理、GPU 集群渲染、或者和其他 DiffSinger 工具链集成,这个脚本是通用格式。
DiffSinger vs Classic 的选择
| 维度 | Classic | DiffSinger |
|---|---|---|
| 音质自然度 | 中(受限于重采样 + 拼接) | 高(端到端生成) |
| 渲染速度 | 快(毫秒级) | 慢(CPU 10-30 倍) |
| 可控性 | 高(每音素每 alias 可精调) | 中(靠曲线参数,不暴露底层) |
| 声库生态 | 极其丰富(UTAU 社区 10 年积累) | 快速增长中(但总量少得多) |
| 硬件要求 | 低 | 中(DiffSinger GPU 加速需要独显) |
| 新手友好 | 难(重采样器/flag/oto.ini 门槛) | 易(只选声库 + 音素器 + 写歌词) |
DiffSinger 常见问题
问题:DiffSinger 渲染完全静音
逐项排查:
- vocoder 装了吗?Tools → Singers 里检查 vocoder 条目
- 引擎是不是选了 DiffSinger?别选 Classic 或 WORLDLINE-R
- 音素器是不是 DIFFS 系列?别选 JA VCV / EN VCCV
- 歌词输入格式对吗?中文声库用拼音 vs 汉字的区别
问题:DiffSinger 声库渲染出奇怪噪声
大概率是 vocoder 版本不对——某些高级 DiffSinger 声库需要特定版本的 vocoder(如 pc-nsf-hifigan 支持 SHFC)。去声库发布页看推荐用哪个 vocoder。
问题:DiffSinger 声库也能 Classic 引擎吗
不能——DiffSinger 声库没有 oto.ini,Classic 管线找不到 alias。DiffSinger 声库和 UTAU Classic 声库是完全不同的生态。
问题:想同时用 Classic 声库和 DiffSinger 声库在同一首歌里
分两条轨道——不同轨道选不同引擎。Classic 引擎那条轨道选 Classic 声库 + Classic 音素器;DiffSinger 引擎那条轨道选 DiffSinger 声库 + DIFFS 音素器。两条轨道可以同时播放、同时混音。