← 开源
lturing

tacotronv2_wavernn_chinese

tacotronV2 + wavernn 实现中文语音合成(Tensorflow + pytorch)

ModelsAudio/Speech modelsPython
在 GitHub 打开
增长势头
+024 小时新增 Star0.0%
535
Star
132
Fork
+0
本周
1
贡献者
创建于 2020-04-23 · 更新于 2026-10-06 · 今日第 17525 名
主要开发者

lturing/tacotronv2_wavernn_chinese 排名第 17,525,有 535 个星标。

同类别比较

lturing/tacotronv2_wavernn_chinese 排名第 17,525,此处有 8 个同类条目;NVlabs/Dancing2Music 排名第 17,513。

同类别比较
名称排名指标
poloclub/unitable17,499
语言:
Jupyter Notebook
星标数:
536
分叉数:
38
简介:
NeurIPS'24 Workshop - UniTable: Towards a Unified Table Foundation Model
FoundationVision/UniTok17,506
语言:
Python
星标数:
535
分叉数:
16
简介:
[NeurIPS 2025 Spotlight] A Unified Tokenizer for Visual Generation and Understanding
MIC-DKFZ/MedNeXt17,512
语言:
Python
星标数:
535
分叉数:
71
简介:
[MICCAI 2023] MedNeXt is a fully ConvNeXt architecture for 3D medical image segmentation.
NVlabs/Dancing2Music17,513
语言:
Python
星标数:
535
分叉数:
88
OpenBMB/DeepThinkVLA17,561
语言:
Python
星标数:
533
分叉数:
50
简介:
DeepThinkVLA: Enhancing Reasoning Capability of Vision-Language-Action Models
xin1u/UltraFlash17,576
语言:
Python
星标数:
533
分叉数:
1
简介:
⚡ Ultra Flash: Scaling Real-Time Streaming Video Generation to High Resolutions
IvanDrokin/torch-conv-kan17,579
语言:
Python
星标数:
532
分叉数:
45
简介:
This project is dedicated to the implementation and research of Kolmogorov-Arnold convolutional networks. The repository includes implementations of 1D, 2D, and 3D convolutions with different kernels, ResNet-like and DenseNet-like models, training code based on accelerate/PyTorch, as well as scripts for experiments with CIFAR-10 and Tiny ImageNet.
mbzuai-oryx/XrayGPT17,616
语言:
Python
星标数:
531
分叉数:
62
简介:
[BIONLP@ACL 2024] XrayGPT: Chest Radiographs Summarization using Medical Vision-Language Models.
关键参数与规格
关键参数与规格
参数值
语言Python
类别Models
子类别Audio/Speech models
关键词Multilingual, TTS
星标数535
分叉数132
贡献者1
创建日期2020-04-23
更新日期2026-10-06
1 天星标数0
7 天星标数0
排名17,525
上次排名17,311
排名变化-214
7 天星标排名16,152
上次 7 天星标排名16,157
7 天星标排名变化5
总星标排名18,364
上次总星标排名18,339
总星标排名变化-25
国家China
README 摘录

开源中文语音数据集标贝(女声)训练中文TacotronV2,实现中文到声学特征(Mel)转换的声学模型。 在GTA模式下,利用训练好的TacotronV2合成标贝语音数据集中中文对应的Mel特征,作为声码器WaveRNN的训练数据。 在合成阶

段,利用TactornV2和WaveRNN合成高质量、高自然度的中文语音。 从THCHS-30任选一个speaker的语音数据集,微调TacotronV2中的部分参数,实现说话人转换branch adaptive。 Tensorflow serving + Flask 部署TacotronV2中文语音合成服务。 由于TacotronV2TacotronV2中采用Location sensitive attention,对长句字的

建模能力不好(漏读、重复),尝试了GMM attention、Discrete Graves Attentionissue、Forward attention,能有效地解决对长句的建模能力,加快模型收敛速度。 中文到拼音转换code 利用字拼音文件和词拼音文件,实现中文到拼音转换,能有效消除多音字

的干扰。 对于每个句子中汉字从左到右的顺序,优先从词拼音库中查找是否存在以该汉字开头的词并检查该汉字后面的汉字是否与该词匹配,若满足条件,直接从词库中获取拼音,若不满足条件

,从字拼音库中获取该汉字的拼音。 对于数字(整数、小数)、ip地址等,首先根据规则转化成文字,比如整数2345转化为二千三百四十五,再转化为拼音。 *注优先从词文件中寻找拼音,也会带来错误的拼音(也

许先分词能解决),所以本项目支持中文和拼音混合输入* TacotronV2训练数据集预处理 修改hparams. py中标贝数据集的路径 执行如下脚本,生成TacotronV2的训练数据集 训练TacotronV2模型 执行如下脚本,训练TacotronV2模型 TacotronV2合成Mel

频谱 TacotronV2生成Mel文件,利用griffin lim算法恢复语音,修改

常见问题

记录了多少星标和分叉?

lturing/tacotronv2_wavernn_chinese 有 535 个星标和 132 个分叉。

仓库排名是多少?

lturing/tacotronv2_wavernn_chinese 排名第 17,525。

记录的语言和类别是什么?

lturing/tacotronv2_wavernn_chinese 有 535 个星标,语言为 Python,类别为 Models。

哪个仓库排名最接近?

lturing/tacotronv2_wavernn_chinese 与 NVlabs/Dancing2Music 比较,后者排名第 17,513,有 535 个星标。

README

TacotronV2 + WaveRNN


update at 2020-10-3 添加微调分支adaptive

  1. 开源中文语音数据集标贝(女声)训练中文TacotronV2,实现中文到声学特征(Mel)转换的声学模型。在GTA模式下,利用训练好的TacotronV2合成标贝语音数据集中中文对应的Mel特征,作为声码器WaveRNN的训练数据。在合成阶段,利用TactornV2和WaveRNN合成高质量、高自然度的中文语音。
  2. 从THCHS-30任选一个speaker的语音数据集,微调TacotronV2中的部分参数,实现说话人转换branch adaptive。
  3. Tensorflow serving + Flask 部署TacotronV2中文语音合成服务。

由于TacotronV2TacotronV2中采用Location sensitive attention,对长句字的建模能力不好(漏读、重复),尝试了GMM attention、Discrete Graves Attentionissue、Forward attention,能有效地解决对长句的建模能力,加快模型收敛速度。

demo page

tensorflow-gpu的版本为1.14.0

测试语音合成的效果

**参照requirements.txt**安装相应的库

git clone https://github.com/lturing/tacotronv2_wavernn_chinese.git
cd tacotronv2_wavernn_chinese
python tacotron_synthesize.py --text '现在是凌晨零点二十七分,帮您订好上午八点的闹钟。'
#合成的wav、attention align等在./tacotron_inference_output下
#由于在inference阶段,模型中的dropout没有关闭,相同的输入text,合成的wav的韵律等有轻微的不同

训练TacotronV2模型

训练数据集预处理

中文标点符号处理

对于中文标点符号,只保留',。?!'四种符号,其余符号按照相应规则转换到这四个符号之一。

中文到拼音转换code

利用字拼音文件和词拼音文件,实现中文到拼音转换,能有效消除多音字的干扰。具体步骤如下:

  1. 对于每个句子中汉字从左到右的顺序,优先从词拼音库中查找是否存在以该汉字开头的词并检查该汉字后面的汉字是否与该词匹配,若满足条件,直接从词库中获取拼音,若不满足条件,从字拼音库中获取该汉字的拼音。
  2. 对于数字(整数、小数)、ip地址等,首先根据规则转化成文字,比如整数2345转化为二千三百四十五,再转化为拼音。
  3. 由于输入是文字转化而来的拼音序列,所以在合成阶段,允许部分或全部的拼音输入。

注优先从词文件中寻找拼音,也会带来错误的拼音(也许先分词能解决),所以本项目支持中文和拼音混合输入

TacotronV2训练数据集预处理

修改hparams.py中标贝数据集的路径

dataset = '/home/spurs/tts/dataset/bznsyp', #标贝数据集的根目录,其wav文件在 dataset/bznsyp下
base_dir = '/home/spurs/tts/dataset',
feat_out_dir = 'training_data_v1',
tacotron_input = '/home/spurs/tts/dataset/bznsyp/training_data_v1/train.txt', 

执行如下脚本,生成TacotronV2的训练数据集

python tacotron_preprocess.py

训练TacotronV2模型

执行如下脚本,训练TacotronV2模型

python tacotron_train.py

TacotronV2合成Mel频谱

TacotronV2生成Mel文件,利用griffin lim算法恢复语音,修改脚本 tacotron_synthesize.py 中text

python tacotron_synthesize.py

或命令行输入

python tacotron_synthesize.py --text '国内知名的视频弹幕网站,这里有最及时的动漫新番。'

TacotronV2 pretrained model

改进部分

由于TacotornV2中采用的注意力机制是Location sensitive attention,对长句子的建模能力不太好,尝试了以下注意力机制:

由于语音合成中的音素(拼音)到声学参数(Mel频谱)是从左到右的单调递增的对应关系,特别地,在合成阶段,对forward attention中的alignments的计算过程的特殊处理,能进一步提高模型对长句子的语音合成效果,以及控制语速。

说话人转换(speaker adaptive)

TactronV2支持finetune,固定decoder层前的参数(embedding层、CHBG、encoder层等),用新数据集(数据量很少)训练从checkpoint中恢复的模型,达到speaker adpative的目的。

训练WaveRNN模型

Wavernn训练数据集准备

利用训练好的TacotronV2对标贝语音数据集在GTA(global teacher alignment)模式下,生成对应的Mel特征。需要注意的如下:

  • TacotronV2中的mel输出的范围为[-hparmas.max_abs_value, hparams.max_abs_value],而WaveRNN中的mel的范围[0, 1],故需要将TacotronV2输出mel特征变为[0, 1]范围内。
  • TacotronV2中的hop_size为275,需要将WaveRNN中的voc_upsample_factors的值改为(5, 5, 11)(注上采样的比例, 或者(x, y, z),并且x * y * z = hop_size)。
  • Wavernn中voc_mode设为RAW,bits为10,故需要将wav文件转换到相应格式。
python wavernn_preprocess.py #利用训练好的TacotronV2生成Wavernn的训练数据

Wavernn模型训练

训练前需要切换到pytorch conda环境,例如:

conda activate torch1.0 #切换到pytorch分支

训练模型

python wavernn_train.py

Wavernn模型评估

python wavernn_gen.py --file path_to_mel_generated_by_tacotronv2 

Wavernn pretrained model

服务部署

website
采用Tensorflow Serving + Docker 来部署训练好的TacotronV2语音服务,由于需要对文本进行处理,还搭建了Flask后台框架,最终的语音合成的请求过程如下:
请求过程:页面 -> Flask后台 -> Tensorflow serving
响应过程:Tensorflow serving -> Flask后台 -> 页面

额外参照文献

排名相邻
同类项目