-
Notifications
You must be signed in to change notification settings - Fork 28
音源开发者文档
- 以下内容适用于Diffsinger no-midi模式,基于DiffSinger(OpenVPI维护版)训练的音源。
- 目前的声码器与音源打包格式是临时的,以后可能会改变,且无法保证兼容。
- 所有文本文件的编码均为utf-8。如果你不知道这是什么,请只使用英文字母和数字。
- 所有文件名和文件夹名只能使用英文字母和数字。
- 在使用过程中遇到了任何Bug,都可以向我反馈。在反馈时,建议提供发生 bug 时的 OpenUtau 窗口完整截图、工程文件,以及 OpenUtau 日志文件。
要制作一个Diffsinger音源,需要完成以下步骤:
- 录制自己的歌声
- 音频标注
- 模型训练
- 音源打包
以下介绍如何将训练好的音源打包为适用于OpenUtau的格式。请先按照DiffSinger文档中的方法完成前面各步骤。
注意:打包音源后,请先在自己的OpenUTAU for Diffsinger上安装并使用,确保能正常合成后再分享给其他用户使用
多说话人音源的打包方法,请见多说话人功能说明
由于音源的训练与合成依赖声码器,每个声码器都有一个不同的包名。包名只能使用小写英文字母、数字和下划线。这里以nsf_hifigan为例
声码器位于OpenUTAU安装目录下的Vocoders文件夹,目录结构如下:
OpenUtau.exe
Vocoders
└─nsf_hifigan #声码器包名
├─vocoder.yaml #声码器信息文件,必须叫vocoder.yaml
└─nsf_hifigan.onnx #声码器模型文件,文件名在vocoder.yaml中指定
#声码器包名,必须和文件夹名称相同
name: nsf_hifigan
#声码器模型文件名
model: nsf_hifigan.onnx
#以下为声码器参数
num_mel_bins: 128
hop_size: 512
sample_rate: 44100
声码器安装包为zip压缩包,将后缀名改为.dsvocoder。声码器信息文件和模型文件必须位于压缩包根目录,不能嵌套文件夹。在openutau中安装声码器时,将自动解压到包名对应目录中。
音源位于OpenUTAU安装目录下的Singers文件夹,目录结构如下:
OpenUtau.exe
Singers
└─mysinger #文件夹可任意命名
├─dsdur #音素时长模型文件夹
| ├─dur.onnx #音素时长模型,onnx
| ├─linguistic.onnx #语言学编码器,onnx
| ├─dsconfig.yaml
| ├─dsdict.yaml #OpenUtau yaml格式词典
| └─phonemes.txt #音素列表
├─dspitch #音高模型文件夹
| ├─pitch.onnx #音高模型,onnx
| ├─linguistic.onnx #语言学编码器,onnx
| ├─dsconfig.yaml
| ├─dsdict.yaml #OpenUtau yaml格式词典
| └─phonemes.txt #音素列表
├─character.txt #音源基本信息文件
├─character.yaml #OpenUTAU音源信息文件
├─dsconfig.yaml #Diffsinger音源信息文件
├─phonemes.txt #音素列表
└─acoustic.onnx #声学模型,onnx
只有第一行name是必要的,其他行均可选
name=音源名
image=图标文件(如果使用了这一行,就需要把图标png或bmp文件打包到音源中)
author=作者
voice=声音提供者
web=音源官网
例如:
name=Zhibin Diffsinger
image=zhibin.png
author=Chisong
voice=Chisong
web=http:zhibin.club/
请勿手动修改此文件
text_file_encoding: utf-8
portrait_opacity: 0.67
default_phonemizer: OpenUtau.Core.DiffSinger.DiffSingerPhonemizer
singer_type: diffsinger
(注意:不是训练音源时的配置文件!!不是训练音源时的配置文件!!请参照下面的格式):
phonemes: phonemes.txt #音素列表
acoustic: acoustic.onnx #声学模型
vocoder: nsf_hifigan #所使用的声码器包名
# 以下是参数相关设置
# 这一部分可以直接从训练使用的配置文件中复制过来
# random_pitch_shifting和use_key_shift_embed为性别参数相关,参见 https:github.com/openvpi/DiffSinger/releases/tag/v1.6.0:
# 只有当你的音源导出时使用了--expose_gender时,才需要这两项
# random_time_stretching和use_speed_embed为发音速度参数相关,参见 https:github.com/openvpi/DiffSinger/releases/tag/v1.7.0:
# 只有当你的音源导出时使用了--expose_velocity时,才需要这两项
augmentation_args:
random_pitch_shifting:
range: [-5., 5.]
scale: 1.5
random_time_stretching:
domain: log
range: [0.5, 2.0]
scale: 1.5
use_key_shift_embed: true
use_speed_embed: true
phonemes.txt会在onnx导出时一并导出
在音源内创建一个名为“dsdur”的文件夹,其中各文件如下:
linguistic.onnx、dur.onnx、phonemes.txt由所训练的模型导出,暂不支持多说话人。多说话人模型请冻结为其中一个说话人。
phonemes: phonemes.txt #音素列表
linguistic: linguistic.onnx #语言学编码器模型
dur: dur.onnx #音素时长模型
hop_size: 512
sample_rate: 44100
predict_dur: true
OpenUtau yaml格式字典,包含了单词到音素的字典及每个音素的类型。下载opencpop-extension字典。使用这一字典格式的原因是OpenUtau需要各音素是元音还是辅音的信息来拆分音节,以支持多音节语言。
在OpenUtau中,vowel指一个音节中的主要元音,具有如下性质
- 位于音符时值的开头。即主要元音的起始位置卡拍
- 随着音符长度拉伸而拉伸
字典格式如下:
# symbols部分:每个音素的类型,需要包含音源支持的所有音素。
# type可为vowel、stop、affricate、aspirate、liquid、nasal、fricative、semivowel,但OpenUTAU只管一个音素是不是vowel,别的都一样。
symbols:
- symbol: SP
type: vowel
- symbol: AP
type: vowel
- symbol: a
type: vowel
- symbol: h
type: fricative
# entries部分:单词到音素的字典。
- grapheme: SP
phonemes: [SP]
- grapheme: AP
phonemes: [AP]
- grapheme: a
phonemes: [a]
- grapheme: ha
phonemes: [h, a]
在音源内创建一个名为“dspitch”的文件夹,其中各文件如下:
- linguistic.onnx、dur.onnx、phonemes.txt由所训练的模型导出,暂不支持多说话人。多说话人模型请冻结为其中一个说话人。
- dsdict.yaml同上。
phonemes: phonemes.txt #音素列表
linguistic: linguistic.onnx #语言学编码器模型
pitch: pitch.onnx #音高时长模型
hop_size: 512
sample_rate: 44100
predict_dur: true
DiffSinger脚本(.ds)文件是DiffSinger命令行推理使用的输入文件。使用ds文件,音源开发者可在训练音源时预览音源的渲染效果。
注意:ds脚本文件仅包含音素与参数信息,无法编辑或转换为歌声合成工程格式,且无法保证跨音源训练选项、跨版本兼容。因此不建议公开分享导出的ds脚本文件。如需分享,请分享ustx源文件。
ds文件可通过以下方式导出:
- 选择合适的音素器,确保能在OpenUtau中正常播放。如需导出性别参数,请选择一个支持性别参数的DiffSinger音源,且该音源训练时的数据增强选项与你正在训练的音源相同。
- 在主界面点击“文件→导出工程→导出DiffSinger脚本”。