1. conf
    1. logging_config.conf
  2. scripts
    1. prepare_config_files.sh
      1. 准备当前流程的 时域配置参数文件
      2. 准备当前流程的 声学配置参数文件
    2. prepare_config_files_for_synthesis.sh
      1. 准备当前流程的语音合成时 时域 配置参数文件
      2. 准备当前流程的语音合成时 声学 配置参数文件
    3. prepare_labels_from_txt.sh
      1. 将文本转换为lab文件
        1. 1. 从txt文本使用前端工具生成scheme文件
        2. 2. 从scheme文件生成 utt文件
        3. 3. 将 festival utt转换为lab文件
        4. 4. state_align或phone_align,规范化lab
    4. remove_intermediate_files.sh
      1. 移除中间产生的文件
    5. run_phone_aligner.sh
      1. 执行音素对齐(phone align)
        1. 1. 使用festvox工具的ehmm clustergen做强制对齐
        2. 2. 将festival utts转换为lab文件
        3. 3. 规范化lab
    6. run_state_aligner.sh
      1. 执行状态对齐
        1. 1. 使用HTK的HVite做强制状态对齐
        2. 2. 先使用Festival前端工具准备无时间戳的上下文相关lab文件
    7. submit.sh
      1. 将theano训练任务提交到GPU
    8. test_nan.sh
  3. 01_setup.sh
    1. 创建一些目录
      1. experiments/mandarin_voice
        1. acoustic_model
          1. data
          2. bap
          3. label_phone_align
          4. lf0
          5. mgc
          6. file_id_list.scp
          7. gen
          8. feed_forward_6_tanh
          9. inter_module
          10. binary_label_467
          11. nn_mgc_lf0_vuv_bap_187
          12. nn_norm_mgc_lf0_vuv_bap_187
          13. nn_no_silence_lab_471
          14. nn_no_silence_lab_norm_471
          15. ref_data
          16. var
          17. label_norm_HTS_471.dat
          18. norm_info_mgc_lf0_vuv_bap_187_MVN.dat
          19. log
          20. nnets_model
        2. duration_model
          1. data
          2. dur
          3. label_phone_align
          4. file_id_list.scp
          5. gen
          6. feed_forward_6_tanh
          7. inter_module
          8. binary_label_467
          9. nn_dur_1
          10. nn_norm_dur_1
          11. nn_no_silence_lab_norm_467
          12. ref_data
          13. var
          14. label_norm_HTS_467.dat
          15. norm_info_dur_1_MVN.dat
          16. log
          17. nnets_model
          18. feed_forward_6_tanh.model
        3. test_synthesis
          1. gen-lab
          2. prompt-lab
          3. test_id_list.scp
          4. wav
      2. database
        1. feats
          1. bap
          2. lf0
          3. mgc
        2. labels
          1. label_phone_align
        3. prompt-lab
          1. A11_0.lab
        4. wav
          1. A11_0.wav
    2. 将一些参数写入到global_setting.cfg中
      1. MerlinDir
      2. voice_name
      3. Label
        1. phone_align
      4. QuestionFIle
      5. Vocoder
        1. WORLD
      6. SamplingFreq
        1. 16000或48000
      7. SilencePhone
        1. sil
      8. FileIdList
      9. Train
      10. Valid
      11. Test
      12. ESTDIR
        1. tools/speech_tools
      13. FESTDIR
        1. tools/festival
      14. FESTVOXDIR
        1. tools/festvox
      15. HTKDIR
        1. tools/bin/htk
      16. 训练网络
      17. 工具集路径
  4. 02_prepare_labels.sh
    1. 2.1 复制 database目录下的labels和prompt-lab文件到指定目录
    2. 2.2 生成文件列表
  5. 03_prepare_acoustic_features.sh
    1. 3.1 使用声码器world/extract_features_for_merlin.py抽取声码特征
    2. 3.2 sp,mgc,ap,bap,f0,lf0复制到acoustic_model/data
  6. 04_prepare_conf_files.sh
    1. 复制并修改conf/duration_mandarin_voice.conf
      1. 修改目录值
        1. MerlinDir
        2. WorkDir
        3. TOPLEVEL
        4. FileIdList
      2. 【Labels】
        1. 修改Label相关的配置项
          1. silence_pattern:修改为 ['*-sil+*']
          2. label_type : 修改为phone_align
          3. label_align:音素对齐文件目录mandarin_voice/duration_model/data/label_phone_align
          4. question_file_name问题集 : /misc/questions/questions-mandarin.hed
      3. 【Outputs】
        1. 输出配置
          1. state_align
          2. dur=5
          3. phone_align
          4. dur=1
      4. 【architechture】
        1. 神经网络的架构配置,如果当前声音文件是demo则修改hidden_layer_size
      5. 【data】
        1. 修改训练、验证、测试数据数量
          1. train_file_number: 200
          2. valid_file_number: 25
          3. test_file_number: 25
    2. 复制并修改conf/acoustic_mandarin_voice.conf
      1. 【Labels】
        1. 同duration
      2. 【architechture】
        1. 同duration
      3. 【data】
        1. 同duration
      4. 【outputs】
        1. mgc
        2. dmgc
        3. bap
        4. dbap
        5. lf0
        6. dlf0
      5. 【waveform】
        1. framelength
        2. minimum_phase_order
        3. fw_alpha
    3. 配置测试(或合成)语音相关的参数 scripts/prepare_config_files_for_synthesis.sh
      1. 需要配置duration和ascoustic参数。新增了【Processes】
  7. 05_train_duration_model.sh
    1. 训练时域模型
      1. ./scripts/submit.sh merlin/src/run_merlin.py conf/duration_mandarin_voice.conf
        1. 关键参数
          1. 【paths】
          2. 中间目录: inter_data
          3. 训练集文件名列表: file_id_list
          4. test_id_list
          5. 输出的时域特征路径: in_dur_dir
          6. 【Labels】
          7. silence_pattern: ['*-sil+*']
          8. label_type: phone_align
          9. 对齐标注文件路径label_align: label_phone_align
          10. 问题集question_file_name: question-mandarin.hed
          11. add_frame_features: False
          12. subphone_feats: None
          13. 【output】
          14. dur : 1
          15. 【waveform】
          16. test_synth_dir : None
          17. 【architercture】
          18. 默认使用theano,网络层,学习率,epoch次数等
          19. 【data】
          20. 训练集,验证集,测试集数目
          21. 【Process】
          22. DurationModel: True
          23. GenTestList: False
          24. sub-process
          25. NORMLAB
          26. MAKEDUR
          27. MAKECMP
          28. NORMCMP
          29. TRAINDNN
          30. DNNGEN
          31. CALCMD
  8. 06_train_acoustic_model.sh
    1. 训练声学特征模型
      1. ./scripts/submit.sh merlin/src/run_merlin.py conf/acoustic_mandarin_voice.conf
        1. 关键参数
          1. 【paths】
          2. 其他的与时域模型一样
          3. 输出的声学特征路径:
          4. in_mgc_dir
          5. in_bap_dir
          6. in_lf0_dir
          7. 工具路径: SPTK,straight,world,magphase
          8. 【Labels】
          9. 其他的与 时域模型一样
          10. add_frame_features
          11. True
          12. subphone_feats:
          13. coarse_codinig
          14. 【output】
          15. mgc
          16. 60
          17. dmgc
          18. 180
          19. bap
          20. 1
          21. dbap
          22. 3
          23. lf0
          24. 1
          25. dlf0
          26. 3
          27. 【waveform】
          28. vocoder_type
          29. WORLD
          30. samplerate
          31. 16000
          32. framelength
          33. 1024
          34. fw_alpha
          35. 0.58
          36. minimum_phase_order
          37. 511
          38. use_cep_ap
          39. True
          40. 【architercture】
          41. 同时域模型
          42. 【streams】那些特征会输出
          43. output_features
          44. [mgc,lf0,vuv,bap]
          45. gen_wav_features
          46. [mgc, lf0,bap]
          47. 【data】
          48. 同时域模型
          49. 【Process】
          50. AcousticModel: True
          51. GenTestList: False
          52. sub-process
          53. NORMLAB
          54. MAKECMP
          55. NORMCMP
          56. TRAINDNN
          57. DNNGEN
          58. CALCMD
          59. GENWAV
  9. 07_run_merlin.sh
    1. 主要是main_function函数的执行
      1. 1 准备
        1. 读取配置文件
        2. 日志设置,画图
        3. 获取训练的相关文件列表,网络隐藏层参数
        4. 路径
          1. inter_data_dir
          2. nn_cmp_dir
          3. nn_cmp_norm_dir
          4. model_dir
          5. gen_dir
          6. nn_cmp_file_list
          7. nn_cmp_norm_file_list
          8. norm_info_file
          9. file_paths相关的路径
          10. binary_label_dir
          11. nn_label_dir
          12. nn_label_norm_dir
          13. in_label_align_file_list
          14. binary_label_file_list
          15. nn_label_file_list
          16. nn_label_norm_file_list
          17. label_norm_file
          18. test_id_list
      2. 【可选】标注数据的归一化NORMLAB
        1. label_normaliser对所有输入的HTS格式的标注文件做归一化
        2. 如果有其他新的特征,则将新特征合并到上面的HTS标注数据中
        3. 移除标注文件中所有的静音
      3. 【可选】数据是否最大最小值归一化MinMaxNormalisation
        1. 使用MinMaxNormalisation将标注数据归一化
      4. 【可选】是否输出时域文件MAKEDUR
        1. 为时域模型准备归一化的数据
      5. 【可选】是否输出声学文件MAKECMP
        1. 【可选】是否为测试集生成cmp
        2. 【可选】dur如果在特征关键词中,需要做对齐
        3. 移除静音
          1. 如果定义的是用binary_labels,则使用LabelComposer
          2. 如果定义的是用hts_labels,则使用SilenceRemover
      6. 【可选】对cmp数据归一化NORMCMP
        1. 【可选】是否计算MVN(MeanVarianceNorm)
          1. 计算训练集上的均值和标准差,并应用于整个数据集
        2. 【可选】是否计算MINMAX
          1. 计算整个训练集上的MinMAX
        3. 【可选】如果没有指定测试集
          1. 保存数据的归一化信息到文件
          2. 保存数据所有特征项(mgc,bap等)的全局标准差矩阵到文件
      7. 使用HTSLabelNormalisation获取标注数据的维度,在训练DNN之前需要知道
      8. 【可选】是否使用keras或者tensorflow
        1. 重新设置cfg配置项中的值
          1. 输入/输出维度
          2. 输入/输出特征路径
      9. 【可选】是否使用keras
        1. run_keras_with_merlin_io
      10. 【可选】是否使用tensorflow
        1. run_tensorflow_with_merlin_io
      11. 【可选】是否训练DNN TRAINDNN
        1. 载入协方差向量var_dict
        2. 获取cmp的最小最大值 cmp_min_max,均值和标准差向量
        3. 训练模型
          1. 使用keras: keras_instance
          2. 使用tensorflow: tf_instance
          3. 默认使用theano: train_DNN
      12. 【可选】是否从DNN中获取bottleneck特征 GENBNFEA
        1. 获得bottleneck的特征路径,尺寸
        2. 准备文件列表
        3. dnn_hidden_generation
      13. 从DNN中生成参数
      14. 【可选】是否生成测试列表 GenTestList
      15. 【可选】是否从DNN中生成预测结果参数 DNNGEN
        1. 准备要生成的文件列表
        2. 【3选1】使用keras
          1. test_keras_model
        3. 【3选1】使用tensorflow
          1. test_tensorflow_model
        4. 【3选1】使用theano
          1. dnn_generation
        5. 获取cmp_min_max
        6. 输出特征的normalisation方法
          1. MVN
          2. MINMAX
        7. 【可选】是否生成声学模型参数AcousticModel
          1. ParameterGeneration.acoustic_decomposition()
        8. 【可选】是否生成时域模型参数DurationModel
          1. 准备要生成的时域文件列表,标注文件列表,输入标注对齐文件列表
          2. ParameterGeneration.duration_decomposition()
          3. 修改标注HTSLabelModification.modify_duration_labels()
      16. 【可选】是否生成wav GENWAV
        1. generate_wav
      17. 【可选】是否生成测试列表 GenTestList
        1. 准备输入标注对齐文件列表,二进制标注文件列表,文件id列表
      18. 【可选】是否为时域模型评估MCD,CALMCD & DurationModel
        1. 准备引用文件ref_data和文件列表
        2. IndividualDistortionComp
        3. 移除静音
          1. 【2选1】remove_silence_using_binary_labels
          2. 【2选1】SilenceRemover.remove_silence
        4. 使用InvididualDistortionComp.compute_distortion计算rmse,corr
      19. 【可选】是否为声学模型计算MCD,CALMCD & AcousticModel
        1. 准备引用数据ref_data,以及引用的lf0文件列表
        2. 为各个声码器准备文件列表
          1. straight或者world
          2. ref_mgc_list
          3. ref_bap_list
          4. magphase
          5. ref_mag_list
          6. ref_real_list
          7. ref_imag_list
          8. GlottDNN
          9. ref_lsf_list
          10. ref_slsf_list
          11. ref_gain_list
          12. ref_hnr_list
          13. pulsemodel
          14. ref_pdd_list
        3. IndividualDistortionComp
        4. 【可选】是否使用二进制标注文件移除静音
          1. LabelComposer
        5. 根据in_dimension_dict中声码特征计算失真
          1. mgc
          2. bap
          3. lf0
          4. mag
          5. real
          6. imag
          7. lsf
          8. slsf
          9. hnr
          10. gain
          11. pdd
        6. 1. 移除静音(使用binary_labels或者hts_labels或者其他) 2. 使用IndividualDistortionComp计算失真
      20. 计算时域模型的rmse,corr
      21. 计算声码模型失真
  10. run_demo.sh
    1. 简单的普通话语音合成示例,只使用了250句
  11. run_mandarin_voice.sh
    1. 完整版的语音合成示例,使用了THSCH30数据集