新网杯top1方案:手把手构建中文语音合成模型!
基于Parakeet的中文语音合成方案
-
方案地址:
https://aistudio.baidu.com/aistudio/projectdetail/2792887
1
第一步 安装Parakeet
源码:https://github.com/PaddlePaddle/Parakeet
中文语音合成方案:https://aistudio.baidu.com/aistudio/projectdetail/2791125?contributionType=1
PaddleSpeech源码:https://github.com/PaddlePaddle/PaddleSpeech
Parakeet 旨在为开源社区提供灵活、高效和最先进的文本转语音工具包。它建立在 PaddlePaddle 动态图上,包括许多有影响力的 TTS 模型。
Parakeet
Parakeet 概述
为了便于直接利用现有的 TTS 模型并开发新的模型,Parakeet 选择了典型模型并在 PaddlePaddle 中提供了它们的参考实现。此外,Parakeet 对 TTS 管道进行了抽象,并将数据预处理、通用模块共享、模型配置以及训练和合成过程标准化。此处支持的模型包括文本前端、端到端声学模型和声码器:
文本前端
基于规则的中文前端。
声学模型
【FastSpeech2】FastSpeech 2:快速、高质量的端到端文本到语音
【SpeedySpeech】SpeedySpeech:高效的神经语音合成
【Transformer TTS】基于Transformer网络的神经语音合成
【Tacotron2】在梅尔谱图预测上通过调节WaveNet进行自然TTS合成
声码器
【Parallel WaveGAN】Parallel WaveGAN:一种基于多分辨率频谱图的生成对抗网络的快速波形生成模型
【WaveFlow】WaveFlow:一种用于原始音频的紧凑型基于流的模型
语音克隆
从说话人验证到多说话人文本到语音合成的迁移学习
【GE2E】用于说话人验证的广义端到端损失
安装Parakeet
源码安装Parakeet
git clone https://github.com/PaddlePaddle/Parakeetcd Parakeet
pip install -e 。
2
第二步 安装依赖
运行依赖:linux,PaddlePaddle 2.1.2
确保库libsndfile1已安装,例如在 Ubuntu 上。
sudo apt-get installlibsndfile1
nltk依赖下载
import nltk
nltk.download("punkt")
nltk.download("cmudict")
[nltk_data] Downloading package punkt to /home/aistudio/nltk_data...
[nltk_data] Package punkt is already up-to-date!
[nltk_data] Downloading package cmudict to /home/aistudio/nltk_data...
[nltk_data] Package cmudict is already up-to-date!
3
第三步 数据准备和预处理
中文标准女声音库(10000句)
下载链接:https://test.data-baker.com/data/index/source/
【中文标准女声音库】采集对象的音色风格知性阳光、亲切自然,专业标准普通话女声,听感乐观积极。录制环境为专业录音室和录音软件,录音环境和设备自始至终保持不变,录音环境的信噪比不低于35dB;单声道录音,用48KHz 16比特采样频率、pcm wav格式。录音语料涵盖各类新闻、小说、科技、娱乐、对话等领域,语料设计综合语料样本量,力求在有限的语料数据量内,对音节音子、类型、音调、音连以及韵律等尽可能全面的覆盖。根据合成语音标注标准对音库进行文本音字校对、韵律层级标注、语音文件边界切分标注。
技术参数
数据内容:中文标准女声语音库数据
录音语料:综合语料样本量;音节音子的数量、类型、音调、音连以及韵律等进行覆盖。
有效时长:约12小时
平均字数:16字
语言类型:标准普通话
发 音 人:女;20-30岁;声音积极知性
录音环境:声音采集环境为专业录音棚环境:1)录音棚符合专业音库录制标准;2)录音环境和设备自始至终保持不变;3)录音环境的信噪比不低于35dB。
录制工具:专业录音设备及录音软件
采样格式:无压缩pcm wav格式,采样率为48KHz、16bit
标注内容:音字校对、韵律标注、中文声韵母边界切分
标注格式:文本标注为.txt格式文档;音节音素边界切分文件为.interval格式
质量标准:1. 语音文件为48k 16bit wav格式,音色、音量、语速一致,无漂零无截幅;2.标注文件字准率不低于99.8%;3.音素边界错误大于10ms的比例小于1%;音节边界准确率大于98%.
存储方式:FTP存储
文件格式:音频文件:wav 文本标注文件:TXT 边界标注文件:INTERVAL
版权所属者:标贝(北京)科技有限公司
数据预处理
解压数据:
!unzip data/data117129/BZNSYP.zip > /dev/null 2>&1
特征提取
#!/bin/bashstage=0
stop_stage=100# export MAIN_ROOT=`realpath ${PWD}/../../../`
export MAIN_ROOT=./echo $MAIN_ROOT
if [ ${stage} -le 0 ] && [ ${stop_stage} -ge 0 ]; then# get durations from MFA's resultecho "Generate durations.txt from MFA results ..."python3 ${MAIN_ROOT}/utils/gen_duration_from_textgrid.py \--inputdir=./baker_alignment_tone \--output=durations.txt \--config=conf/default.yaml
fiif [ ${stage} -le 1 ] && [ ${stop_stage} -ge 1 ]; then# extract featuresecho "Extract features ..."python3 ./preprocess.py \--dataset=baker \--rootdir=~/BZNSYP/ \--dumpdir=dump \--dur-file=durations.txt \--config=conf/default.yaml \--num-cpu=20 \--cut-sil=True
fiif [ ${stage} -le 2 ] && [ ${stop_stage} -ge 2 ]; then# get features' stats(mean and std)echo "Get features' stats ..."python3 ${MAIN_ROOT}/utils/compute_statistics.py \--metadata=dump/train/raw/metadata.jsonl \--field-name="speech"fiif [ ${stage} -le 3 ] && [ ${stop_stage} -ge 3 ]; then# normalize and covert phone/speaker to id, dev and test should use train's statsecho "Normalize ..."python3 ./normalize.py \--metadata=dump/train/raw/metadata.jsonl \--dumpdir=dump/train/norm \--speech-stats=dump/train/speech_stats.npy \--pitch-stats=dump/train/pitch_stats.npy \--energy-stats=dump/train/energy_stats.npy \--phones-dict=dump/phone_id_map.txt \--speaker-dict=dump/speaker_id_map.txt
fi
生成预处理的数据集如下:
dump
├── dev
│ ├── norm
│ └── raw
├── phone_id_map.txt
├── speaker_id_map.txt
├── test
│ ├── norm
│ └── raw
└── train├── energy_stats.npy├── norm├── pitch_stats.npy├── raw└── speech_stats.npy
4
第四步 模型训练
使用 ./run.sh来完成训练任务,具体参数如下
usage: train.py [-h] [--config CONFIG] [--train-metadata TRAIN_METADATA][--dev-metadata DEV_METADATA] [--output-dir OUTPUT_DIR][--device DEVICE] [--nprocs NPROCS] [--verbose VERBOSE][--phones-dict PHONES_DICT] [--speaker-dict SPEAKER_DICT]Train a FastSpeech2 model.optional arguments:-h, --help show this help message and exit--config CONFIG fastspeech2 config file.--train-metadata TRAIN_METADATAtraining data.--dev-metadata DEV_METADATAdev data.--output-dir OUTPUT_DIRoutput dir.--device DEVICE device type to use.--nprocs NPROCS number of processes.--verbose VERBOSE verbose.--phones-dict PHONES_DICTphone vocabulary file.--speaker-dict SPEAKER_DICTspeaker id map file for multiple speaker model.
5
第五步 模型预测:“语音合成”
加载模型进行预测
usage: synthesize.py [-h] [--fastspeech2-config FASTSPEECH2_CONFIG][--fastspeech2-checkpoint FASTSPEECH2_CHECKPOINT][--fastspeech2-stat FASTSPEECH2_STAT][--pwg-config PWG_CONFIG][--pwg-checkpoint PWG_CHECKPOINT] [--pwg-stat PWG_STAT][--phones-dict PHONES_DICT] [--speaker-dict SPEAKER_DICT][--test-metadata TEST_METADATA] [--output-dir OUTPUT_DIR][--device DEVICE] [--verbose VERBOSE]
以上是利用公开数据集进行训练和预测的步骤,关于模型训练提升的思路,比较直接的方式大家可以尝试合并aishell3 和baker两个数据集进行预测
6
第六步新网杯比赛数据集预测
使用exp目录下的训练模型来预测结果(时间问题,暂未训练完成)
直接使用官方提供预训练模型来预测 我们下面直接使用Parakeet提供的中文预训练模型
FLAGS_allocator_strategy=naive_best_fit
FLAGS_fraction_of_gpu_memory_to_use=0.01
python3 synthesize_e2e.py
--fastspeech2-config=fastspeech2_nosil_baker_ckpt_0.4/default.yaml
--fastspeech2-checkpoint=fastspeech2_nosil_baker_ckpt_0.4/snapshot_iter_76000.pdz
--fastspeech2-stat=fastspeech2_nosil_baker_ckpt_0.4/speech_stats.npy
--pwg-config=pwg_baker_ckpt_0.4/pwg_default.yaml
--pwg-checkpoint=pwg_baker_ckpt_0.4/pwg_snapshot_iter_400000.pdz
--pwg-stat=pwg_baker_ckpt_0.4/pwg_stats.npy
--text=../sentences.txt
--output-dir=exp/default/test_e2e
--device="gpu"
--phones-dict=fastspeech2_nosil_baker_ckpt_0.4/phone_id_map.txt
如果使用数据集训练的模型,可以将fastspeech2
相关参数改成exp目录的权重路径即可。
大赛要求上传音频采样率为16k,本案例生成音频采样率为24k,通过下面的命令进行采样率转换:
# #!/bin/bash
# %cd exp/default/
# !for x in ./test_e2e/*.wav
# !do
# ! b=${x##*/}
# ! sox ./test_e2e/$b -r 16000 ./致Great/$b
# !done!sed -i 's/\r$//' ./xw_predict.sh
!chmod +x ./xw_predict.sh
!./xw_predict.sh
线上 64.410
大赛报名方式 ▼
大赛交流群
▼
新网杯top1方案:手把手构建中文语音合成模型!相关推荐
- 端到端的TTS深度学习模型tacotron(中文语音合成)
TACONTRON: A Fully End-to-End Text-To-Speech Synthesis Model 通常的TTS模型包含许多模块,例如文本分析, 声学模型, 音频合成等.而构建这 ...
- 天池广东工业智造大数据创新大赛--铝型材表面瑕疵识别 --top1方案
天池广东工业智造大数据创新大赛--铝型材表面瑕疵识别 --top1方案 共同启动"广东工业智造大数据创新大赛",旨在通过数据开放召集全球众智,将重点围绕工业制造大数据展开,以应用为 ...
- python语音合成 标贝_tacotronV2 + wavernn 实现中文语音合成(Tensorflow + pytorch)
TacotronV2 + WaveRNN 开源中文语音数据集标贝(女声)训练中文TacotronV2,实现中文到声学特征(Mel)转换的声学模型.在GTA模式下,利用训练好的TacotronV2合成标 ...
- html文本分类输出,构建中文网页分类器对网页进行文本分类
网络原指用一个巨大的虚拟画面,把所有东西连接起来,也可以作为动词使用.在计算机领域中,网络就是用物理链路将各个孤立的工作站或主机相连在一起,组成数据链路,从而达到资源共享和通信的目的.凡将地理位置不同 ...
- 对“科大讯飞2021丨广告点击率预估挑战赛 Top1方案(附完整代码)_Jack_Yang的博客-CSDN博客”的补充。
这篇文章的初衷是针对科大讯飞2021丨广告点击率预估挑战赛 Top1方案(附完整代码)_Jack_Yang的博客-CSDN博客进行补充. 博客的信息量很少,对任务背景的介绍也不太对,说实话令人费解.我 ...
- 《手把手构建人工智能产品》-产品经理的AI实操手册
<手把手构建人工智能产品>-产品经理的AI实操手册 <手把手构建人工智能产品>-产品经理的AI实操手册一书,由电子工业出版社于2020年4月出版,作者是高飞.该书概括了人工智能 ...
- 清华 词向量库_word2vec 构建中文词向量
词向量作为文本的基本结构--词的模型,以其优越的性能,受到自然语言处理领域研究人员的青睐.良好的词向量可以达到语义相近的词在词向量空间里聚集在一起,这对后续的文本分类,文本聚类等等操作提供了便利,本文 ...
- word2vec 构建中文词向量
2019独角兽企业重金招聘Python工程师标准>>> word2vec 构建中文词向量 词向量作为文本的基本结构--词的模型,以其优越的性能,受到自然语言处理领域研究人员的青睐.良 ...
- Android中文语音合成(TTS)各家引擎对比 .
Android中文语音合成(TTS)各家引擎对比 Yao.GUET 2012-02-03,转载请注明出处:http://blog.csdn.net/Yao_GUET Android系统从1.6版本开始 ...
最新文章
- 基于zookeeper实现系统配置中心
- python硬件测试开发_用python实现高性能测试工具(一)
- Apache Shiro权限控制框架简介
- java 优秀源码_想要快速进阶Java架构师?这份超强(长)学习计划单 请签收!...
- LeetCode 881. 救生艇(贪心,双指针)
- C++基础18-抽象类-电脑组装练习
- window安全模式的用途
- mac怎么看cpu温度?教你不装软件查看 Mac CPU芯片温度
- JAVA实验面向对象程序设计,面向对象程序设计a(java)实验报告.docx
- 数字图像处理-直方图均衡化,直方图规定化
- 网盘容量背后的技术秘密
- 带你从头到尾梳理大图片加载OOM处理问题
- 数字图像处理第五章笔记
- multiprocessing.Pool(pool.map pool.apply pool.apply_async poo.map_async)
- 五分钟GO、KEGG和COG注释和富集分析
- 如何建立用户画像和用户体系?
- PHP使用ffmpeg压缩视频
- 计算机软考网络工程师难度大吗,国家软考的网络工程师与CCNP相比,哪个难?...
- Android开发者跳槽面试,Android面试题及解析
- 计算机网络——IP地址的作用
热门文章
- EasyRTMP手机直播推送rtmp流flash无法正常播放问题
- windows server2012怎样关机怎样重启-详细教程
- Delphi实现WebService带身份认证的数据传输
- 参考答案:02 矩阵及其运算
- 【怎样写代码】向现有类型“添加”方法 -- 扩展方法(三):为枚举类型创建方法
- Android项目驱动式开发教程 第2版,《Android项目驱动式开发教程》第一章开发入门.ppt...
- java可以调用python程序吗_我们可以从java调用python方法吗?
- AI 语言模型真的是越大越好吗?这个模型优于 Gopher
- 2021 IDEA大会开启AI思想盛宴,用“创业精神”做科研
- 联邦学习,为何而生?