乐趣区

关于神经网络:什么语音合成开源代码不会跑follow-me

摘要:本文形容的深度神经网络模型构造:: Natural TTS synthesis by conditioning Wavenet on MEL spectogram predictions。
本文分享自华为云社区《什么?语音合成开源代码不会跑,我来教你跑 Tacotron2》,作者:白马过平川。

Tacotron-2:
TTS 论文大全:https://github.com/lifefeel/S…
  DeepMind 的 Tacotron- 2 的 Tensorflow 实现。本文形容的深度神经网络模型构造:: Natural TTS synthesis by conditioning Wavenet on MEL spectogram predictions
github 地址:https://github.com/Rookie-Che…
还有一些其余版本的 Tacotron2 开源我的项目:

https://github.com/Rayhane-ma…
https://github.com/NVIDIA/tac…
这个 github 蕴含了对该论文的其余改良和尝试, 因而咱们应用 paper_hparams.py 文件, 该文件保留准确的超参数以重现了 paper 的后果,而无需任何额定的附加性能。默认应用的倡议 hparams.py 文件蕴含带有额定内容的超参数,在大多数状况下能够提供更好的后果。依照本人的须要随便批改参数,差别将在文件中突出显示。

Repository Structure:
步骤 (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,步骤(*))的简略运行来实现。
原有 github 的预处理仅反对 Ljspeech 和相似 Ljspeech 的数据集(M-AILABS 语音数据)!如果以不同的形式存储数据集,则须要制作本人的 preprocessing 脚本。
如果同时对两个模型进行训练,则模型参数构造将不同。
一些预训练模型和 demo:
您能够在此处. 查看模型性能的一些次要见解(在预训练阶段)。

模型架构:

图 1:Tacotron2 模型结构图

作者形容的模型可分为两局部:

谱图预测网络
Wavenet 声码器
要深刻摸索模型体系结构,训练过程和预处理逻辑,请参阅 作者的 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 镜像以确保主动设置所有内容并应用 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 设置:
在持续之前,您必须抉择最适宜您需要的超参数。尽管能够在预处理 / 训练期间从命令行更改超参数,但我依然倡议间接在 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.

留神:

如果未提供模型参数,则训练将默认为 Tacotron- 2 模型培训。(与 tacotron 模型构造不同)
训练模型的参数能够参考 train.py 有很多选项能够选
wavenet 的预处理可能得独自应用 wavenet_proprocess.py 脚本
合成
合成音频 以 端到端 (文本到音频) 的形式 (两个模型同时运行):

python synthesize.py –model=’Tacotron-2′
对于频谱图预测网络,有三种类型的 mel 谱图的预测后果:

推理测试(对自定义句子的综合评测)。这是咱们在领有残缺的端到端模型后通常会应用的。
python synthesize.py –model=’Tacotron’
天然合成 (让模型通过将最初一个解码器的输入输出到下一个工夫步来独自进行预测).
python synthesize.py –model=’Tacotron’ –mode=’synthesis’ –GTA=False
无效的对齐合成 (默认: 模型是在无效实在的标签下强制训练产生的). 当预测用于训练 wavenet 的 mel 频谱时,应用该合成办法. (如文中所述,产生更好的后果)
python synthesize.py –model=’Tacotron’ –mode=’synthesis’ –GTA=True
用先前合成的 Mel 频谱合成波形:

python synthesize.py –model=’WaveNet’
留神:

如果未提供模型参数,则默认应用 Tacotron- 2 模型合成。(End-to-End TTS)
抉择的合成参数,你能够参考 synthesize.py
参考文献和源码:
Natural TTS synthesis by conditioning Wavenet on MEL spectogram predictions
Original tacotron paper
Attention-Based Models for Speech Recognition
Wavenet: A generative model for raw audio
Fast Wavenet
r9y9/wavenet_vocoder
keithito/tacotron
想理解更多的 AI 技术干货,欢送上华为云的 AI 专区,目前有 AI 编程 Python 等六大实战营供大家收费学习。(六大实战营 link:http://su.modelarts.club/qQB9)

点击关注,第一工夫理解华为云陈腐技术~

退出移动版