![de924e0cf6a1b6d37b7e6c79e7663c27.png](https://i-blog.csdnimg.cn/blog_migrate/52bba9f48413110e99183cee691677f5.jpeg)
智能语音专题第五章:语音合成。如何让我们的语音设备像人一样说话,语音合成的基本原理是怎样的,如何系统的评估语音合成的质量,目前语音合成的发展水平如何,当前的热点以及未来的方向主要是哪些,本章将进行解答。
语音合成(Text To Speech)技术将输入的文本合成为能够播放的人类语音,处理过程上可以理解成语音识别的反向过程,所以应用的目标上必然是做到能够合成媲美人声的语音。而在老式的科幻片中,机器人都是这样说话的:
“大 - 家 - 好,我 - 是 - 机 - 器 - 人 ”
逐字发音,声音粗糙没有韵律,缺乏连贯性。模仿机器人说话的调调,机械式的摇头晃脑挥动着手臂,这是我女儿4岁之前非常喜欢的游戏。
但为何机器人一定是这样说话的呢?根本原因还是早期的语音合成技术瓶颈造成的:无法合成高音质、自然韵律的声音,造成了机器发音的固有印象。而随着语音合成技术的持续发展,目前我们已经能够合成出拟人度非常高的语音了。
当前语音合成技术通常将整个合成系统分成前端和后端两大部分:
![41f252e285994c2f2f0d8ed6561a616f.png](https://i-blog.csdnimg.cn/blog_migrate/137cf0fe2d3beb6171b01edabd697aeb.jpeg)
语音前端:负责进行语言学分析
- 语种判断:首先要判断当前输入的文本是什么语言,中文普通话,英文,粤语还是什么。
- 文本规范:知道是中文普通话之后,需要转换为规范化的文本,尤其针对各种符号、数字
1)数字进制:宝马4系列的轿车需要896,500元,"896,500"应展开为"八十九万六千五百;
2)年代:如中国在4000年前就开始物种驯化,中"4000"应该是进制读法"四千";秦朝建立与公元前221年,中"211"应该是位制读法"两百二十一年";马克思生于1818年,中"1818"应该采用顺序读法"一八一八"。
3)长数字:如"0724-4356333","182-3123-3213","(+86)182-3123-3213 ,身份证,邮编;
4)分数小数百分数: 如"1/2""2%""0.9882;
5)时间:如"2019/9/11","23:11","5pm"
6)电台频率 FM940,FM101.7
- 语言学特征提取:通常都会基于一个发音词典,得到当前文本的发音标注,作为后端模型的主要输入,描述当前文本的语言学特征音素。中文普通话中影响特征提取的两大音素一个是分词,另一个就是多音字:
- 分词:不同的分词,会导致不同的断句结构,影响合成的韵律甚至发音的准确性。
- 多音字:汉字当中有大量的多音字,会影响最终发音的准确性。
“南京市#长江大桥”“nan2jing1shi4#chang2jiang1da4qiao3”。
“南京/市长/江大桥”“nan2jing1#shi4zhang3#jiang1da4qiao2”
他那像哄(hǒng)小孩似的话,引得人们哄(hōng)堂大笑,大家听了一哄(hòng)而散
天气暖和(huo),小和(hé)在家和(huó动词)泥抹墙;他讲原则性,是非面前,从不和(huò)稀泥,也不随声附和(hè动词)别人,更不会在麻将桌上高喊:“我和(hú)了。”
- 韵律分析和预测:为了让合成音贴近真人,我们希望在合成对应的文本时各个词语、各个文字用分别用多长的语气,哪些地方应该连读,哪些地方应该要停顿,语调上是轻读还是重读,怎么体现抑扬顿挫和高低曲折。这部分会涉及大量语言学(甚至自然语言处理)的知识,针对于不同的文本内容进行不同的合成演绎,也是语音合成的难点。
例如:定义四级韵律结构:#1 #2 #3 #4,和发音的长短及停顿相关。
#1 韵律词最小单元,无停顿
#2 有重读,带有很短的停顿
#3 韵律短语,有正常停顿
#4 表示一个完整的句子结束
在#1狱中#3,张明宝#1悔恨#1交加#2,写了#1一份#1忏悔书#4。
声学后端:基于语言学特征,合成为音频
前端部分核心是从文本当中获得足够多的特征信息,后端部分则基于这些对应的特征找到匹配的音库,合成语音并生成波形。目前这一部分主要的技术思路有三种:基于拼接、基于参数合成和基于端到端。
- 基于拼接:
为了更好的拟合人声,我们准备一个非常大容量的真人音库,将这个音库按照音素和不同的特征参数标注起来。合成时基于语言学特征找到音库中不同的音素,拼接起来完成语音合成,找不到的情况下再用基本音素拼接,后期再逐步完善音库。
优点:基于真人语音拼接,效果接近真人,运算量低。
缺点:拼接而成,导致语音不连贯,对音库的质量依赖非常高,录制成本巨大。
- 基于参数合成:
不需要非常大容量的音库,基于有限的音库进行建模,通过深度学习构建文本特征和音库之间的映射关系,构建参数合成模型。当输入一个语言学特征时,基于神经网络给出音频特征再通过声码器合成语音波形,能够实现简单的修改语音的一些基本参数(基频,基频波动范围,语速,甚至音色等)就达到发音的调整和变化。
主要的难点在声码器,声码器的作用是复现声音信号,难在重现声音细节,并且让人听不出各种杂音、沉闷、机械感等等。目前常见的声码器都是对声音信号本身作各种理论模型以及简化假设,效果比不上拼接式合成的原声音质是自然。
优点:音库数量要求不高,合成语音连结平稳,质量很好。
缺点:音质弱于拼接法,依赖声码器质量,有一定机械音。
- 基于端到端:
而目前比较火的技术方案是端到端的语音合成,通过文本或者文本特征和语音直接建模,跳过了声码器阶段,整个引擎对于用户来说就是黑盒,前端的概念被弱化,输入文本直接输出语音。对于语言学的依赖降低了,对于声码器的依赖也降低了,不依赖任何发音理论模型,最后出来的音质细节十分丰富,基本达到了与原始语音类似的音质水准。
比如目前DeepMind的Wavenet,tactron等等都是端到端的模型,但是此种方式的运算量非常大,合成耗时长,同时因为整个模型通过多层神经网络黑盒封装,人为可以调优的空间很少(深度学习的通病,知其然而无法知其所以然),通常只能通过增加和修改数据后观察实际效果,在产品应用会有较多问题。
优点:语音自然度高,前端处理简化。
缺点:运算量大,无法人为调优,实时性低。
目前的语音厂商提供的语音合成能力通常都是基于以上方案的,针对于不同业务场景我们需要选择合适我们的语音合成产品,那如何评估好坏,怎么挑选了?
- 应用场景
首先判断应用场景,希望使用语音合成的是阅读场景、客服场景、交互场景还是哪些?例如
阅读场景希望的是能够演绎不同的文本内容,对于实时性的要求较低。
客服场景通常期望的是女声,声音知性,和蔼、或者活波,有一定的实时性要求。
交互场景则需要更快的语速,及时的回复,较高的实时性要求。
![fa3d20accacc88a004980cc3c17ad871.png](https://i-blog.csdnimg.cn/blog_migrate/4dc62bc207c52f2be5aefd81196cea22.jpeg)
同时场景中对于中英文混合播报是否有要求。针对中英文混合播报,通常有两种方式实现:
- 中文使用中文引擎,英文时切换为英文模型。带来的问题就是中英文混合播报时会出现两个不同的声音,影响体验,适用于对于中英文混合要求较低的场景。
- 中文和英文使用同一个引擎,同一个发音人。音库准备时需要相应的录音人覆盖中英两种基本音,制作的成本更高,但是效果佳,价格也更贵。
- 合成质量
基于场景选定期望的发音人风格之后,如何评估哪一个TTS的质量是能够满足产品要求的?音色、韵律、自然度、音质、发音准确性怎么衡量?
- TTS主观评测
以上的这些描述通常都是主观的,所以针对TTS采用的主要评估方式是进行MOS评测,从各个维度打分,最后给出一个平均分。
![4cc5faf2a09028ca9083e8210b9c0fd1.png](https://i-blog.csdnimg.cn/blog_migrate/f26693ea8052784ec858a2d7ccbae053.jpeg)
确认顺序:音质 - > 语音流畅度 -> 发音正确性 -> 韵律自然度 -> 分词和停顿 -> 音色
毕竟是主观评测,为了尽量减少人为干扰,一般都会同时选择多个音库的发音人,使用同样的文本语料进行对比打分。如果能够拿到音库的原始录音,再同TTS合成音进行混合打分,效果最佳。
2. 客观评测
除了主观评测之外,TTS也能够针对语言学部分进行客观评测,以中文普通话为例:我们有400多个基本音节,5000多个多音字。可以准备相应的文本语料,覆盖主要的基本音节,覆盖常用的多音字,查看输出的前端结果中拼音标准是否和预期一致。
另外就是上方提到的数字、符号的等等句式是否结合上下文正确输出。
今天是2019年9月20日 jin1 tian1 shi4 er4 ling2 yi1 jiu3 nian2 jiu3 yue4 er4 shi2 ri4拨打电话120 bo1 da3 dian4 hua4 yao1 er4 ling2
19% bai3 fen1 zhi1 shi2 jiu3
有货不愁无处卖,但怕无货买卖空you3 huo4 bu4 chou2 wu2 chu3 mai4 dan4 pa4 wu2 huo4 mai3 mai4 kong1
我到处都找了,也没有找到那本书。wo3 dao4 chu4 dou1 zhao3 le ye3 mei2 you3 zhao3 dao4 na4 ben3 shu1
- 实时性
实时性是智能语音产品当中很重要的指标,语音交互期望的端到端时延能够小于2秒,在1.5秒以内是最好的。这里包含了VAD超时、ASR、NLP、TTS所有的时间,所以对应的TTS合成时间(从输入文本到开始语音播报)应该在500ms以内,当然越短越好。
合成的耗时同文本的长度一般正相关,如果TTS是整体合成完成之后再吐出音频文件,通常耗时不固定,不适合做语音交互;另外一种TTS能够基于文本预测进行分词断句,逐步的输出音频流就能够保证最高耗时,这类产品只需要关注首包输出的响应时间,更适合作为语音交互的TTS方案。TTS合成的耗时同ASR一样,采用实时率RTF(Real Time Factor)进行评估,例如:正常人的语速每秒钟4个字左右,10个字对应3秒的语音,如果能够在400ms内完成10个字的合成,开始语音播报基本能满足语音的实时性要求,对应
RTF = 合成时间 / 音频长度
RTF = 400 / 3000 = 0.13
语音合成的质量和实时性一般是互斥的,合成的语音质量越高,对于算力的要求越高,实时性也越差。目前的TTS产品通常分为云端版本和离线版本,还有高品质和普通发音人等等版本,对应不同的合成质量,不同的算力要求。
- 云端的TTS因为算力更强,配套的是端到端或者多层神经网络的算法,能输出更高音质的语音,对应的实时性再结合网络延时等原因,通常不是作为语音交互的优选方案。
2. 离线TTS随着终端设备算力的提升,算法的优化,通过参数化合成的不少TTS都能够达到10个字/100ms左右的延时,合成质量还不错,大幅的提升语音交互体验。
所以语音交互类产品,算力足够的情况下,优选离线TTS方案。
- 定制化
各语音公司制作音库时都会首先确认希望制作的发音人风格,再寻找播音主持专业的相关人士进行录音和授权,按照不同的情景进行演绎,得到音色优美、韵律自然、发音标准的音库。最后用户在成品的发音人库中,选择合适自己产品的声音,当然也有找不到的情况,此时就需要定制,目前有两种方式:
一种是定制TTS,定制某种风格的发音人或者直接定制林志玲的声音,语音公司找到相应的录音人进行录音和授权,单独训练词发音人的TTS供你专用。期望的音质越高,需要的录音时长也越高(2小时以上的录音),当然收费也很可观。
一种是个性化TTS,目前的一个热点。只需要上传少量的语音,TTS就能够生产基于上传语音的个性化语音包,可以将你自己或者亲朋好友的声音赋予你的智能设备。
![a71772071f7ff2d535d984fbedf5c5bb.png](https://i-blog.csdnimg.cn/blog_migrate/dc56db1a4f982a8f3b529b0a95c1f35c.jpeg)
个性化TTS的合成效果同样同录音的质量和数量成正比,普通用户通常没有足够的耐心进行1-2个小时的连续录制,所以目前的各个产品通常录音采集数量在20句左右,得到的TTS模型合成效果也差不多在3.5分左右,属于基本能用型,不要期望太高。
除了个性化TTS,另一个业界热点是带有情绪的TTS,让合成的语音能够更丰富的表达高兴、悲伤、兴奋、低落等等情绪,而当前的主流TTS要表达除抑扬顿挫外的语气就要通过大量音频数据学习,录音成本比较高,同时需要做大量的人工标注和上下文理解。
各个厂商从成本考虑优先做的是通用TTS,整体上成熟度也比较高,然后再准备基于不同情绪的音库,高兴和低落两种最为主要的情绪,在不同场景下调用不同的音库合成音频目前已经能覆盖大多数的情绪化的语音交互场景,提升设备的拟人性。
整体上TTS的主要目标是达到多维的拟人化语音交互效果,展现丰富和情绪化的声音,各种新兴技术都是以此为目标,再考虑怎么落地产品化。在高音质、高自然度的前提下,用最少量的录音得到最优质的声库,同时进一步的提升实时性,减小对于算力的依赖。
拟人化 -> 情绪化 -> 减小声库 -> 减小算力 -> 提高实时性
最终得到人们期望的声音。