首发于 深度学习笔记整理

手把手教你打造端到端语音合成系统

参考项目(将这些项目改成中文的语音合成)

一些相关组件的参考项目(欢迎补充)

Github 项目推荐 | 一个简单的英文字形转音素的 Python 模块

自然语言处理_The CMU Pronouncing Dictionary(卡耐基梅隆大学发音词典)

1.传统语音合成技术简介

语音合成,通常又称文语转换(Text To Speech,TTS),是一种可以将任意输入文本转换成相应语音的技术,是人机语音交互中不可或缺的模块之一。如果说语音识别技术是为了让机器能够“听懂”人说话,那么语音合成技术则让机器能够跟人“说话”。无论是在地图导航、语音助手、教育、娱乐等软件应用,还是在智能音箱、家电、机器人等硬件设备中,都有语音合成技术的身影。 如图 1 所示,语音合成系统通常包含前端和后端两个模块。 前端模块主要是对输入文本进行分析,提取后端模块所需要的语言学信息。对中文合成系统来说,前端模块一般包含文本正则化、分词、词性预测、多音字消歧、韵律预测等子模块。后端模块根据前端分析结果,通过一定的方法生成语音波形。后端模块一般分为基于统计参数建模的语音合成(Statistical Parameter Speech Synthesis,SPSS,以下简称参数合成),以及基于单元挑选和波形拼接的语音合成(以下简称拼接合成)两条技术主线。

图1 语音合成系统基本框架

传统TTS是基于拼接和参数合成技术,效果上同真人语音的自然度尚有一定差距,效果已经达到上限,在实现上也依赖于复杂流水线,比如以文本分析为前端的语言模型、语音持续时间模型、声学特征预测模型、将频谱恢复成时域波形的声码器(vocoder)。这些组件都是基于大量领域专业知识,设计上很艰难,需要投入大量工程努力,对于手头资源有限的中小型玩家来说,这种“高大上”的技术似乎有些玩不起。

2.端到端语音合成的简介

为了解决传统语音合成的弊端促使了端到端语音合成的出现,研究者希望能够使合成系统能够尽量的简化,减少人工干预和对语言学相关背景知识的要求。近年来基于神经网络架构的深度学习方法崛起,使得原本在传统专业领域门槛极高的TTS应用上更接地气。端到端合成系统直接输入文本或者注音字符,系统输出音频波形。前端模块得到极大简化,甚至可以直接省略掉。端到端合成系统相比于传统语音合成,降低了对语言学知识的要求,可以方便的在不同语种上复制,批量实现几十种甚至更多语种的合成系统。借助于深度学习模型的强表达能力,端到端语音合成系统表现出令人惊艳的合成效果和强大丰富的发音风格与韵律表现力。

2017年初,Google 提出了一种新的端到端的语音合成系统——Tacotron。Tacotron是一种端到端的TTS生成模型。所谓“端到端”就是直接从字符文本合成语音,打破了各个传统组件之间的壁垒,使得我们可以从<文本,声谱>配对的数据集上,完全随机从头开始训练。从Tacotron的论文中我们可以看到,Tacotron模型的合成效果是优于要传统方法的,如图2。

图2 平均意见得分(MOS)测试结果

论文地址: Tacotron: Towards End-to-End Speech Synthesis

注明:Tacotron和Tacotron2师出同门,总体思路是一样的,以后再具体讲解它们的结构,这里不展开

端到端的语音合成系统整体技术架构选型如图3所示,红色为今天所使用的技术栈。

图3 端到端的语音合成系统技术栈

3.基于Tacotron普通话语音合成的实践

3.1 项目运行所需的软硬件环境

3.2 开始实践

注意,~/tacotron是默认的路径,之后运行Python程序会直接把~/tacotron作为根目录,如果你的项目根目录不一样,那么你必须修改程序的默认路径参数,否则会出现运行错误。

根据所需数据集更改datasets/thchs30.py
这一步如果遇到”FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; “错误,请参考以下内容。

注意到除了拉丁字母的拼音,还有1~5个阿拉伯数字,表示声调(四种声调加上轻声)。 也可以使用 音素(声母+韵母)为单元标注:

根据实验结果要指出,如果以字符为单位[a-z1-5],其实上述两种标注方法没有本质区别,故我们只要使用汉语拼音标注方案即可。

音频分析所使用的工具为Adobe Audition,如下:

思考:如何实现中英文混合的合成语音出来?

上叙说明只是自己的猜想,后续会有实验说明

预处理命令成功运行的效果

这条命令会在根目录下生成training目录,里面存放了每个音频文件的mel频谱和线性频谱(通过短时傅里叶变换STFT而得),后缀为"npy"的文件,用numpy库加载即可得到多个narray数组(可以视为多个特征向量组成的多维矩阵),用作语音的声学特征提取。除此之外还有个train.txt文件,里面基本上就是csv的格式将拼音标注同每个文件的声谱对应起来。

training文件
打开.npy文件
训练命令成功运行的效果

我们使用了nohup命令来屏蔽一切中断信号,同时将Python进程置于后台,这是由于训练过程十分漫长(一般收敛需要10个小时,得到好的效果需要2天),免得网络中断或者终端断开导致Python进程被杀死。训练过程中的输出将会保存在logs-thchs30目录下,可能是这样的:

以上是92K次迭代后保存下来的模型和alignment图,顺便说一下我们不需要关注step-92000-align.wav这个音频文件,这并不是通过模型预测的实际效果,只是在训练中使用了teacher forcing方法,不代表evaluation效果,可以不去管它。 如何判断训练是否达到预期呢?个人经验有两个:一看学习是否收敛;二看损失(loss)低于某个值。由于Tacotron模型本质上是基于编码器解码器模式的seqtoseq模型,所以学习是否收敛可以从编码器序列和解码器序列是否对齐(alignment)判断。

step=140000,loss=0.08663

step=92000,loss=0.07889

这里放了两张alignment图对比,上图训练了140K次迭代,可以看到没有出现对齐,说明没有收敛。可能的原因很多,比如数据集质量不好,标注不正确等等。下图是92K次迭代,可以看到对齐情况良好,表明基本上可以通过文本来合成出有效的语音。这里要指出,所谓对齐并不是一定要笔直的斜线,它只是代表编码器序列(文本)和解码器序列(声谱)是否对应起来,而且像素点越亮,效果越好。 第二个判断点是loss值,越小表明越接近地真值(ground truth),当然必须在收敛的前提下,loss会趋于稳定。在实际训练中有可能出现loss值很低,但是仍然没出现alignment的情况,这是是无法合成语音的。 当我们从训练日志上看到,loss值低于0.07的时候,基本表示学习收敛并且效果稳定了。可以杀掉后台Python进程,别担心,logs-thchs30目录下已经保存了之前训练过程中产生的模型,你可以从任意时刻生成模型随时恢复继续训练,比如我们需要从92K次迭代生成的模型基础上继续训练,命令行如下:

在训练过程中我们可以使用Tensorboard观察训练的过程,参考以下命令:

好了,现在终于到了检验我们录音效果的时刻了!不过我们无法直接输入汉字文本,而是拼音标注,好在有开源项目 python-pinyin帮我们搞定. 比如我们想合成一句“每个内容生产者都可以很方便地实现自我价值,更多的人有了微创业的机会。”我们使用python-pinyin输出的拼音标注拷贝到eval.py里,输入命令行:

一段时间后,就会在logs-thchs30目录下生成了eval-133000-0.wav,这就是我们想要的结果,一起来听听看吧~

播放音频

当然我们可以使用web server方式检验我们的合成的效果:

聚圣源舵爷1070tiboilsoftvideosplitter男儿本色粤语三个土男孩起名大全打分测免费白酒起名卢布与人民币汇率一个陌生女人的来信读后感美味的陷阱繁体字个性签名传媒公司起名大全2021最新版的蜜桃图片男孩起名叫嘉铭查姓男孩起名男孩金山数据恢复大师非分熟女女孩起名用字大全梦见骨灰盒牛博免费起名字生辰八字周易金玫瑰花张姓女娃起名男人与母狗男宝宝徐姓起名公孙九娘修神外传仙界篇男孩缺水应该起什么名字哈尔滨起名3rat.com淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化