main_function
1 准备
读取配置文件
日志设置,画图
获取训练的相关文件列表,网络隐藏层参数
路径
inter_data_dir
nn_cmp_dir
nn_cmp_norm_dir
model_dir
gen_dir
nn_cmp_file_list
nn_cmp_norm_file_list
norm_info_file
file_paths相关的路径
binary_label_dir
nn_label_dir
nn_label_norm_dir
in_label_align_file_list
binary_label_file_list
nn_label_file_list
nn_label_norm_file_list
label_norm_file
test_id_list
2. 【可选】标注数据的归一化NORMLAB
label_normaliser对所有输入的HTS格式的标注文件做归一化
如果有其他新的特征,则将新特征合并到上面的HTS标注数据中
移除标注文件中所有的静音
3. 【可选】数据是否最大最小值归一化MinMaxNormalisation
使用MinMaxNormalisation将标注数据归一化
4. 【可选】是否输出时域文件MAKEDUR
为时域模型准备归一化的数据
5. 【可选】是否输出声学文件MAKECMP
【可选】是否为测试集生成cmp
【可选】dur如果在特征关键词中,需要做对齐
移除静音
如果定义的是用binary_labels,则使用LabelComposer
如果定义的是用hts_labels,则使用SilenceRemover
6. 【可选】对cmp数据归一化NORMCMP
【可选】是否计算MVN(MeanVarianceNorm)
计算训练集上的均值和标准差,并应用于整个数据集
【可选】是否计算MINMAX
计算整个训练集上的MinMAX
【可选】如果没有指定测试集
保存数据的归一化信息到文件
保存数据所有特征项(mgc,bap等)的全局标准差矩阵到文件
7. 使用HTSLabelNormalisation获取标注数据的维度,在训练DNN之前需要知道
8. 【可选】是否使用keras或者tensorflow
重新设置cfg配置项中的值
输入/输出维度
输入/输出特征路径
9. 【可选】是否使用keras
run_keras_with_merlin_io
10. 【可选】是否使用tensorflow
run_tensorflow_with_merlin_io
11. 【可选】是否训练DNN TRAINDNN
载入协方差向量var_dict
获取cmp的最小最大值 cmp_min_max,均值和标准差向量
训练模型
使用keras: keras_instance
使用tensorflow: tf_instance
默认使用theano: train_DNN
12. 【可选】是否从DNN中获取bottleneck特征 GENBNFEA
获得bottleneck的特征路径,尺寸
准备文件列表
dnn_hidden_generation
13. 从DNN中生成参数
14. 【可选】是否生成测试列表 GenTestList
15.【可选】是否从DNN中生成预测结果参数 DNNGEN
准备要生成的文件列表
【3选1】使用keras
test_keras_model
【3选1】使用tensorflow
test_tensorflow_model
【3选1】使用theano
dnn_generation
获取cmp_min_max
输出特征的normalisation方法
MVN
MINMAX
【可选】是否生成声学模型参数AcousticModel
ParameterGeneration.acoustic_decomposition()
【可选】是否生成时域模型参数DurationModel
准备要生成的时域文件列表,标注文件列表,输入标注对齐文件列表
ParameterGeneration.duration_decomposition()
修改标注HTSLabelModification.modify_duration_labels()
16. 【可选】是否生成wav GENWAV
generate_wav
17. 【可选】是否生成测试列表 GenTestList
准备输入标注对齐文件列表,二进制标注文件列表,文件id列表
18. 【可选】是否为时域模型评估MCD,CALMCD & DurationModel
准备引用文件ref_data和文件列表
IndividualDistortionComp
移除静音
【2选1】remove_silence_using_binary_labels
【2选1】SilenceRemover.remove_silence
使用InvididualDistortionComp.compute_distortion计算rmse,corr
19. 【可选】是否为声学模型计算MCD,CALMCD & AcousticModel
准备引用数据ref_data,以及引用的lf0文件列表
为各个声码器准备文件列表
straight或者world
ref_mgc_list
ref_bap_list
magphase
ref_mag_list
ref_real_list
ref_imag_list
GlottDNN
ref_lsf_list
ref_slsf_list
ref_gain_list
ref_hnr_list
pulsemodel
ref_pdd_list
IndividualDistortionComp
【可选】是否使用二进制标注文件移除静音
LabelComposer
根据in_dimension_dict中声码特征计算失真
mgc
bap
lf0
mag
real
imag
lsf
slsf
hnr
gain
pdd
1. 移除静音(使用binary_labels或者hts_labels或者其他) 2. 使用IndividualDistortionComp计算失真
计算时域模型的rmse,corr
计算声码模型失真
train_DNN
1. 初始化网络训练的各种超参数
2. 准备训练集,验证集数据
3. 当前只支持DNN
初始化一个DeepRecurrentNetwork 的dnn模型
4. 如果存在与训练模型
使用pickle.load 载入模型
遍历模型所有参数,主要是为了LHUC层,只学习部分参数
5. 微调模型 build_finetune_functions
6. epoch中设置学习率,获取训练集批次,训练模型
此步骤才更新数据
dnn_generation
1. 载入DNN模型
2. 读入验证集的标注数据特征
3. 使用dnn_model.parameter_prediction预测参数
4. 将预测参数写入cmp文件
dnn_hidden_generation
1. 载入DNN中间模型文件
2. 读入验证集的标注数据特征
3. 使用dnn_model.generate_hidden_layer预测隐藏层的参数
4. 将预测参数写入cmp文件
perform_acoustic_composition_on_split
为并行处理声学特征做好准备
perform_acoustic_composition
并行处理声学特征