@mymy
2020-12-10T09:41:15.000000Z
字数 2071
阅读 4193
机器学习
实验
You can click here to get the English version.
团队协作完成
基于神经网络的语音合成模型的实现代码可参考示例代码,详细步骤如下:
下载LJSpeech数据集,并解压为./data/LJSpeech-1.1
提取真实声音的Mel-Spectrogram
python extract_mel_spec.py -i data/LJSpeech-1.1/wavs -o data/LJSpeech-1.1-spectrogram -n 16
训练Tacotron2
# 单GPU训练
CUDA_VISIBLE_DEVICES=7 python train.py save_dir ckpt/v2 batch_size 48 val_epoch 20 audio_root data/LJSpeech-1.1/wavs mel_spectrogram_root data/LJSpeech-1.1-spectrogram
# 多GPU训练
CUDA_VISIBLE_DEVICES=6,7 python distributed.py save_dir ckpt/v1 batch_size 48 val_epoch 20 audio_root data/LJSpeech-1.1/wavs mel_spectrogram_root data/LJSpeech-1.1-spectrogram
Inference
CUDA_VISIBLE_DEVICES=6 python inference.py checkpoint_path ckpt/v1/model_00052130
[可选1] 感兴趣的同学可调整配置文件中的参数, 如encoder_kernel_size, learning rate
[可选2] 分析随着模型训练的epoch数的增加,生成声音的Mean Opinion Score (MOS)变化趋势
[可选3] 感兴趣的同学可自行探索使用WaveGlow将预测的Mel-Spectrogram还原为Waveform(替换示例代码中的Griffin-Lim算法),代码可参考GitHub仓库(注意:训练WaveGlow过程中Mel-Spectrogram提取方法和参数以及数据集划分应与训练Tacotron2保持一致)
扩展建议:
[扩展1] 感兴趣的同学可以训练一个中文语音合成模型
[扩展2] 感兴趣的同学可以自己设计个软件(简单的手机APP或者网页),例如页面有一个输入框和一个播放按钮,输入一段英文,点击播放按钮可以听到朗读这段英文的声音
[扩展3] 同学也可以展示一些声音生成失败的例子,例如单词被跳过或重复朗读
评分项 | 占比 | 说明 |
---|---|---|
出勤 | 40% | 特殊情况可向学院请假 |
代码有效 | 20% | 代码可以编译通过,没有任何编译错误 |
实验报告 | 30% | 是否按照实验模板填写 |
代码规范 | 10% | 主要考核代码变量命名是否规范 |
有任何的意见或者建议都可以直接在qq群中向助教反映。
[1] http://fancyerii.github.io/dev287x/ssp
[2] Speech Signal Processing for Machine Learning
[3] Shen J, Pang R, Weiss R J, et al. Natural tts synthesis by conditioning wavenet on mel spectrogram predictions. In ICASSP, 2018.
[4] Prenger R, Valle R, Catanzaro B. Waveglow: A flow-based generative network for speech synthesis. In ICASSP, 2019.