Skip to content

音源开发者文档

oxygen-dioxide edited this page Jul 28, 2023 · 23 revisions

注意事项

  • 以下内容适用于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中指定

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

character.txt

只有第一行name是必要的,其他行均可选

name=音源名
image=图标文件(如果使用了这一行,就需要把图标png或bmp文件打包到音源中)
author=作者
voice=声音提供者
web=音源官网

例如:

name=Zhibin Diffsinger
image=zhibin.png
author=Chisong
voice=Chisong
web=http:zhibin.club/

character.yaml

请勿手动修改此文件

text_file_encoding: utf-8
portrait_opacity: 0.67
default_phonemizer: OpenUtau.Core.DiffSinger.DiffSingerPhonemizer
singer_type: diffsinger

dsconfig.yaml

(注意:不是训练音源时的配置文件!!不是训练音源时的配置文件!!请参照下面的格式)

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由所训练的模型导出,暂不支持多说话人。多说话人模型请冻结为其中一个说话人。

dsconfig.yaml

phonemes: phonemes.txt      #音素列表
linguistic: linguistic.onnx #语言学编码器模型
dur: dur.onnx               #音素时长模型
hop_size: 512
sample_rate: 44100
predict_dur: true

dsdict.yaml

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同上。

dsconfig.yaml

phonemes: phonemes.txt      #音素列表
linguistic: linguistic.onnx #语言学编码器模型
pitch: pitch.onnx           #音高时长模型
hop_size: 512
sample_rate: 44100
predict_dur: true

导出DiffSinger脚本(.ds)

DiffSinger脚本(.ds)文件是DiffSinger命令行推理使用的输入文件。使用ds文件,音源开发者可在训练音源时预览音源的渲染效果。

注意:ds脚本文件仅包含音素与参数信息,无法编辑或转换为歌声合成工程格式,且无法保证跨音源训练选项、跨版本兼容。因此不建议公开分享导出的ds脚本文件。如需分享,请分享ustx源文件。

ds文件可通过以下方式导出:

  1. 选择合适的音素器,确保能在OpenUtau中正常播放。如需导出性别参数,请选择一个支持性别参数的DiffSinger音源,且该音源训练时的数据增强选项与你正在训练的音源相同。
  2. 在主界面点击“文件→导出工程→导出DiffSinger脚本”。
Clone this wiki locally