【导读】Parakeet旨在为开源社区提供一个灵活,高效和最新的文本到语音工具包。它建立在PaddlePaddle基础上,包含百度研究和其他研究小组提出的许多具有影响力的TTS模型。
Github地址:https://github.com/PaddlePaddle/Parakeet
它应用了百度研究提出的最新WaveFlow模型。
在Nvidia V100 GPU上,WaveFlow可以以比实时快40倍的速度合成22.05 kHz高保真语音,比WaveGlow与WaveNet。
WaveFlow是用于原始音频的基于足迹的流模型。它只有5.9M参数,比WaveGlow(87.9M)小15倍。
WaveFlow使用最大似然训练,而不像WaveNet和ClariNet那样使用的使用概率密度蒸馏和辅助损失,从而简化了训练流程并降低了开发成本。
概览
为了便于直接利用现有的TTS模型并开发新的模型,Parakeet选择了典型模型并在PaddlePaddle中提供了其参考实现。更进一步,Parakeet对TTS管道进行了抽象,并使数据预处理,通用模块共享,模型配置以及训练和综合过程标准化。此处支持的模型包括声码器和端到端TTS模型:
Vocoders
WaveFlow: A Compact Flow-based Model for Raw Audio
ClariNet: Parallel Wave Generation in End-to-End Text-to-Speech
WaveNet: A Generative Model for Raw Audio
TTS models
Deep Voice 3: Scaling Text-to-Speech with Convolutional Sequence Learning
Neural Speech Synthesis with Transformer Network (Transformer TTS)
FastSpeech: Fast, Robust and Controllable Text to Speech
配置
保证libsndfile1 库安装
sudo apt-get install libsndfile1
安装PaddlePaddle
参考链接:
https://www.paddlepaddle.org.cn/install/quick
安装Parakeet
git clone https://github.com/PaddlePaddle/Parakeet
cd Parakeet
pip install -e .
安装CMUDict
import nltk
nltk.download("punkt")
nltk.download("cmudict")
使用
以使用WaveFlow为例
下载解压数据集:
wget https://data.keithito.com/data/speech/LJSpeech-1.1.tar.bz2
tar xjvf LJSpeech-1.1.tar.bz2
在单个GPU下训练
export CUDA_VISIBLE_DEVICES=0
python -u train.py \
--config=./configs/waveflow_ljspeech.yaml \
--root=./data/LJSpeech-1.1 \
--name=${ModelName} --batch_size=4 \
--parallel=false --use_gpu=true
在多个GPU下训练
export CUDA_VISIBLE_DEVICES=0,1,2,3
python -u -m paddle.distributed.launch train.py \
--config=./configs/waveflow_ljspeech.yaml \
--root=./data/LJSpeech-1.1 \
--name=${ModelName} --parallel=true --use_gpu=true
评估模型
export CUDA_VISIBLE_DEVICES=0
python -u benchmark.py \
--config=./configs/waveflow_ljspeech.yaml \
--root=./data/LJSpeech-1.1 \
--name=${ModelName} --use_gpu=true