导出 DiffSinger 脚本|喂给外部推理管线的 .ds 文件
什么时候用 .ds 导出
OpenUtau 内置的 DiffSinger 渲染对一般项目够用,但某些场景需要脱离 OpenUtau 独立渲染:
- 你有一台GPU 集群服务器想批量渲染大量 DiffSinger 工程
- 你在做 DiffSinger 声库训练(.ds 是训练管线的输入格式)
- 你要和 OpenVPI / RVCTF / DiffSinger 官方工具链集成
- 你要写自己的 DiffSinger 推理脚本
这些情况下,导出 .ds 文件比直接在 OpenUtau 里渲染更灵活。
导出步骤
OpenUtau → File → Export Project → Export DiffSinger Script
保存位置默认在工程旁边的 Export/ 文件夹,文件名 .ds。
导出前检查
- 确认引擎选了 DiffSinger(Classic / WORLDLINE-R / ENUNU / VOICEVOX 引擎导出的 .ds 可能不完整)
- 确认音素器选了 DIFFS 系列(DIFFS ZH / DIFFS EN / DIFFS JP)
- 确认歌词已经通过 DIFFS 音素器正确展开(包络编辑器里能看到展开的音素序列)
- 如果你想导出 GENC / VELC / ENE 等曲线,确认这些曲线已经画好并且声库的
data_augmentation声明支持
导出后如果要分享给别人,分享 .ustx 源文件而不是 .ds 文件——.ds 是中间格式,OpenUtau 工程文件 .ustx 是唯一真相源。
.ds 文件是什么格式
.ds 文件是 DiffSinger 中间格式:
[version] # DiffSinger 版本号
[metadata] # 声库名、采样率、歌词语言等元信息
[phonemes] # 展开后的音素序列(每个音素带时间戳)
[pitch] # 音高曲线(F0 序列)
[curves] # GENC / VELC / ENE 等曲线参数(如果声库支持)
[notes] # 原始音符信息(音高、时值、歌词)
.ds 是文本格式(可直接用文本编辑器打开),不是二进制。这意味着:
- 可以用 Python 脚本批量处理和修改 .ds 文件
- 可以手动调整音素时间戳 / 曲线值
- 可以比较两个 .ds 文件差异(用于排查渲染问题)
在 DiffSinger 官方管线里用 .ds
. ds 文件是 DiffSinger 官方推理脚本 infer.py 的标准输入:
python infer.py --model <你的DiffSinger声库目录> --input script.ds --output output.wav
DiffSinger 官方管线比 OpenUtau 内置渲染支持更多高级选项(如 vocoder 选择、推理步数调整、批量处理等)。
常见问题
问题:导出 .ds 后某些信息丢失
- 引擎是不是选了 DiffSinger?Classic / WORLDLINE-R 引擎的工程导出 .ds 可能只有部分信息
- 声库是不是 DiffSinger 格式?ENUNU 或 Classic 声库不支持导出 .ds
- 曲线参数是不是画了但没导出?检查声库的
character.yaml→data_augmentation→ 对应开关是不是 true
问题:导出的 .ds 在 DiffSinger 官方管线里渲染不一样
OpenUtau 的 DiffSinger 渲染和 DiffSinger 官方管线可能有微小差异——OpenUtau 内置的是经过适配的版本。如果要严格和官方管线对齐:
- 确保两边用的是同一个声库
- 确保 vocoder 版本一致
- 确保 DiffSinger 版本一致(OpenUtau 内置的可能比官方管线更新或更旧)
问题:我要分享工程给别人,分享 .ds 还是 .ustx
分享 .ustx。.ds 是中间格式,只能在 DiffSinger 官方管线里用;.ustx 是 OpenUtau 原生格式,能打开、编辑、再次渲染。.ds 应该作为"给特定 DiffSinger 工具链用"的输出。