shartoo +

merlin语音合成方案mandarin_voice操作步骤

本文总阅读量
欢迎star我的博客

0 概览

本文详细解释Merlin Mandarin_voice下脚本一步一步所做的事。

01_setup

脚本merlin/egs/mandarin_voice/s1/01_setup.sh

主要工作是创建一个目录,做好准备工作。主要创建了如下文件夹:

─ mandarin_voice(voice name)
    ├── acoustic_model
    │ ├── data
    │ ├── gen
    │ ├── inter_module
    │ ├── log
    │ └── nnets_model
    ├── duration_model
    │ ├── data
    │ ├── gen
    │ ├── inter_module
    │ ├── log
    │ └── nnets_model
    └── test_synthesis
        ├── gen-lab
        ├── prompt-lab
        ├── test_id_list.scp
        └── wav
 feats
│ ├── bap
│ ├── lf0
│ └── mgc
├── labels
│ └── label_phone_align
├── prompt-lab
│ ├── A11_0.lab
│ ├── A11_1.lab
│ ├── A11_2.lab
└── wav
    ├── A11_0.wav
    ├── A11_100.wav
    ├── A11_101.wav

将一些基本参数写入到conf/global_setting.cfg文件中

merlinmandarin voice操作

注意:一定要在setup.sh里面定义好train,valid,test的数量,不然修改global_config.cfg里面的值也没用。这三者相加的值要等于(duration_model/FileIdList下)file_id_list.scp总行数

02_prepare_lab

需要两个参数:

2.1 准备文件夹

2.2 生成文件列表

03_prepare_acoustic_feature

需要两个参数

使用merlin/misc/scripts/vocoder/world/extract_features_for_merlin.py脚本抽取,注意,其中的声码器可以是WORLD也可以是其他的,比如straight,WORLD_2。其实依然是在python中调用以下脚本:

world = os.path.join(merlin_dir, "tools/bin/WORLD")
sptk = os.path.join(merlin_dir, "tools/bin/SPTK-3.9")
reaper = os.path.join(merlin_dir, "tools/bin/REAPER")

生成的特征目录如下:

sp_dir = os.path.join(feat_dir, 'sp' )
mgc_dir = os.path.join(feat_dir, 'mgc')
ap_dir = os.path.join(feat_dir, 'ap' )
bap_dir = os.path.join(feat_dir, 'bap')
f0_dir = os.path.join(feat_dir, 'f0' )
lf0_dir = os.path.join(feat_dir, 'lf0')

如果我们使用world作为vocoder的话,会使用misc/scripts/vocoder/world/extract_features_for_merlin.py脚本,生成步骤其实是:

  1. 直接从原始wav文件,使用world analysis抽取 sp,bapd特征。straightvocoder 会产生 ap,如果使用reaper会产生f0特征。
  2. f0$\rightarrow$ lf0,bapd$\rightarrow$ bap,sp$\rightarrow$ mgc

3.2 复制特征到声学特征目录下

将所有feat_dir下的所有文件,包括sp,mgc,ap,bap,f0,lf0复制到experiments/mandarin_voice/acoustic_model/data下。

04_prepare_conf_files

执行./scripts/prepare_config_files.sh

duration相关配置

acoustic相关配置

执行./scripts/prepare_config_files_for_synthesis.sh配置测试(或合成)语音相关的参数。基本和上面的./scripts/prepare_config_files.sh 一样,需要配置durationascoustic参数。新增了【Processes】

DurationModel: True
GenTestList: True
# sub-processes
NORMLAB: True
MAKEDUR: False
MAKECMP: False
NORMCMP: False
TRAINDNN: False
DNNGEN: True
CALMCD: False

05_train_duration_model

实际执行的是./scripts/submit.sh merlin/src/run_merlin.py conf/duration_mandarin_voice.conf

其中./scripts/submit.sh是theano相关参数的配置。

06_train_acoustic_model

训练声学模型,实际执行的是./scripts/submit.sh merlin/src/run_merlin.py conf/acoustic_mandarin_voice.conf

07_run_merlin

需要两个参数

我的博客

观点

源码