转自--tacotron-2 安装及使用笔记

发布时间 2024-01-04 19:42:18作者: 独上兰舟1

https://blog.csdn.net/Lucas23/article/details/107401756?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170424942116800185824960%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=170424942116800185824960&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-107401756-null-null.142^v99^pc_search_result_base6&utm_term=%E5%AE%89%E8%A3%85tacotron2&spm=1018.2226.3001.4187

 

apt-get install module-init-tools kmod
./NVIDIA-Linux-x86_64-440.100.run -no-x-check -no-nouveau-check -no-opengl-files

https://www.nvidia.cn/Download/driverResults.aspx/160186/cn

 

安装Tensorflow 版本及对应的CUDN.
https://tensorflow.google.cn/install/source

 

CUDA安装

CUDA下载链接

下载文件示例格式
cuda_10.0.130_410.48_linux.run
使用命令
sh cuda_10.0.130_410.48_linux.run来安装此文件
按照提示一步一步走

安装完成后用命令检查是否安装成功

cat /usr/local/cuda/version.txt
即可查看cuda版本
或者是输入 nvcc -V命令查看cuda版本
如果输入nvcc -V提示找不到命令
请输入
进入bashrc文件下 加入环境变量
vi ~/.bashrc
export CUDA_HOME=/usr/local/cuda-10.0

export LD_LIBRARY_PATH=${CUDA_HOME}/lib64

export PATH=${CUDA_HOME}/bin:${PATH}

下载cudnn
https://gist.github.com/ypwhs/cad8f8db61944e524910c2fb0a213bd1

 

下载之后是一个压缩包,如下:

cudnn-10.0-linux-x64-v7.4.2.24.tgz
然后对它进行解压,命令如下:

tar -zxvf cudnn-10.0-linux-x64-v7.4.2.24.tgz
解压之后可以得到以下文件:

cuda/include/cudnn.h
cuda/NVIDIA_SLA_cuDNN_Support.txt
cuda/lib64/libcudnn.so
cuda/lib64/libcudnn.so.7
cuda/lib64/libcudnn.so.7.4.2
cuda/lib64/libcudnn_static.a

使用以下两条命令复制这些文件到CUDA目录下:

cp cuda/lib64/* /usr/local/cuda-10.0/lib64/
cp cuda/include/* /usr/local/cuda-10.0/include/

拷贝完成之后,可以使用以下命令查看CUDNN的版本信息:

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

安装完成后就可以下载安装TensorFlow-GPU版本
pip install tensorflow-gpu==1.14.0

测试是否能用TensorFlow-GPU版本
print(tf.contrib.eager.num_gpus())

 

安装Tacotron2
https://github.com/Rookie-Chenfy/Tacotron-2

流程:
首先,下载LJSpeech数据集:https://keithito.com/LJ-Speech-Dataset/,或者下载new M-AILABS speech 数据集:http://www.m-ailabs.bayern/en/the-mailabs-speech-dataset/

接下来,您需要安装一些Linux依赖项以确保音频库正常工作:

apt-get install -y libasound-dev portaudio19-dev libportaudio2 libportaudiocpp0 ffmpeg libav-tools

然后,cd到Tacotron-2目录下,使用pip install -r requirements.txt,安装py库

pip install -r requirements.txt

falcon==1.2.0
inflect==0.2.5
audioread==2.1.5
librosa==0.5.1
matplotlib==2.0.2
numpy==1.14.5
scipy==1.0.0
tqdm==4.11.2
Unidecode==0.4.20
pyaudio==0.2.11
sounddevice==0.3.10
lws
keras==2.3.1

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.

ps: tensorboard 查看

Tacotron-2-master/logs-Tacotron-2$ tensorboard --logdir ./

注意:

如果未提供模型参数,则训练将默认为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

————————————————
版权声明:本文为CSDN博主「Lucas23」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Lucas23/article/details/107401756