DeepMind的Tacotron-2的Tensorflow实现。 本文描述的深度神经网络结构:: Natural TTS synthesis by conditioning Wavenet on MEL spectogram predictions
github地址:https://github.com/Rookie-Chenfy/Tacotron-2
这个 github 包含了对该论文的其他改进和尝试, 因此我们使用paper_hparams.py文件,该文件保存精确的超参数以重现了paper的结果,而无需任何额外的附加功能。默认使用的建议hparams.py文件包含带有额外内容的超参数,在大多数情况下可以提供更好的结果。 按照自己的需要随意修改参数
差异将在文件中突出显示。
待补充
步骤 (0): 获取数据集, 这里我设置了Ljspeech,en_US和en_UK(来自M-AILABS)的示例。
步骤 (1): 预处理您的数据。这将为您提供training_data文件夹。
步骤 (2): 训练你的Tacotron模型。产生logs-Tacotron文件夹。
步骤 (3): 合成/评估Tacotron模型。给出tacotron_output文件夹。
步骤 (4): 训练您的Wavenet模型。产生logs-Wavenet文件夹。
步骤 (5): 使用Wavenet模型合成音频。给出wavenet_output文件夹。
注意:步骤2,3和4可以通过Tacotron和WaveNet(Tacotron-2,步骤(*))的简单运行来完成。
注意:
您可以在此处.查看模型性能的一些主要见解(在训练的早期阶段)。
作者描述的模型可分为两部分:
要深入探索模型体系结构,训练过程和预处理逻辑,请参阅 作者的 wiki
首先,您需要与Tensorflow一起安装python 3 。
接下来,您需要安装一些Linux依赖项以确保音频库正常工作:
apt-get install -y libasound-dev portaudio19-dev libportaudio2 libportaudiocpp0 ffmpeg libav-tools
最后,您可以安装 requirements.txt. 如果你是一个 Anaconda 用户: (可以用 pip3 代替 pip 并 用python3 代替 python)
pip install -r requirements.txt
或者,可以构建docker镜像以确保自动设置所有内容并使用docker容器内的项目。
Dockerfile is insider “docker” folder
docker image可以用以下内容构建:
docker build -t tacotron-2_image docker/
然后容器可以运行:
docker run -i --name new_container tacotron-2_image
该github在 ljspeech dataset数据集上测试了上面的代码,该数据集有近24小时标记的单个女演员录音。(下载时,README文件中提供了有关数据集的更多信息)
该github还在 新的M-AILABS语音数据集 上运行当前测试,该数据集 包含超过700种语音(超过80 Gb的数据),超过10种语言。
下载数据集后, 解压压缩文件, 而该文件夹放在克隆的github里。
在继续之前,您必须选择最适合您需求的超参数。 虽然可以在预处理/训练期间从命令行更改超参数,但我仍然建议直接在hparams.py文件上一劳永逸地进行更改。
为了选择最佳的fft参数,我制作了一个griffin_lim_synthesis_tool笔记本, 您可以使用它来反转实际提取的梅尔/线性光谱图,并选择预处理的好坏程度。所有其他选项都在hparams.py中得到了很好的解释,并且具有有意义的名称,因此您可以尝试使用它们。
AWAIT DOCUMENTATION ON HPARAMS SHORTLY!!
在运行以下步骤之前,请确保您在Tacotron-2文件夹中
cd Tacotron-2
然后可以使用以下命令开始预处理:
python preprocess.py
可以使用**–dataset参数选择数据集。如果使用M-AILABS**数据集,则需要提供 language, voice, reader, merge_books and book arguments 以满足您的自定义需求。默认是 Ljspeech.
示例M-AILABS:
python preprocess.py --dataset=‘M-AILABS’ --language=‘en_US’ --voice=‘female’ --reader=‘mary_ann’ --merge_books=False --book=‘northandsouth’
或者如果你想一个说话人使用所有书籍:
python preprocess.py --dataset=‘M-AILABS’ --language=‘en_US’ --voice=‘female’ --reader=‘mary_ann’ --merge_books=True
这应该不会超过几分钟。
按顺序训练两个模型:
python train.py --model=‘Tacotron-2’
特征预测模型Tacotron-2可以分别被训练使用:
python train.py --model=‘Tacotron’
每5000步记录一次,并存储在logs-Tacotron文件夹下。
当然,单独训练wavenet是通过以下方式完成的:
python train.py --model=‘WaveNet’
logs will be stored inside logs-Wavenet.
注意:
合成音频 以 端到端 (文本到音频) 的方式 (两个模型同时运行):
python synthesize.py --model=‘Tacotron-2’
对于频谱图预测网络,有三种类型的mel谱图的预测结果:
python synthesize.py --model=‘Tacotron’
python synthesize.py --model=‘Tacotron’ --mode=‘synthesis’ --GTA=False
python synthesize.py --model=‘Tacotron’ --mode=‘synthesis’ --GTA=True
用先前合成的Mel频谱合成波形:
python synthesize.py --model=‘WaveNet’
注意: