导航软件想必大家都不陌生。在软件中,我们可以选择让林志玲、岳云鹏或者其他明星给我们进行指路和导航。不知你是否想过这里面的导航语音真的是这些明星一句一句录的么?答案可想而知,当然是不可能的。暂不谈明星们是否有这么多时间或者公司有没有这么多经费来请明星录音,就连全国这么多地名一句一句录音都是不现实的。之所以能听到这么多明星的语音,其实主要是依靠本文的主角——语音合成技术。
语音合成顾名思义就是合成语音,又称作文本转语音技术(Text to speech,TTS)。通过各种方法将输入的任意文本内容实时的模仿人的方式朗读出来。就像计算机视觉仿佛让冰冷的计算机有了眼睛,语音识别技术让计算机有了耳朵,那么语音合成技术就是让计算机有了嘴。它赋予了计算机像人一样能够自由说话的能力。如果能够实现让计算机具有在任意状态下可以将文本转化成语音的能力,那么冰冷的机器就可以真的像人一样开口说话。
语音合成听起来非常神奇,但其实其中的技术并没有那么神秘。整体上语音合成技术都是由软件来实现的,具体可以分为两大部分:文本分析模型和声学模型。这可以简单的类比为网站的前端和后端。文本分析模型对应前端,接收想要翻译成语音的文字,将文字转换成为声学模型能够看懂的形式,也就是想好将要怎么读;之后声学模型再对文本分析模型得到的结果进行处理,得到真实的语音。下面具体介绍一下语音合成中的两个部分的具体内容。
文本分析模型的整体作用就是告诉后面的声学模型,这段话要该怎么读。那么如果想要知道怎么读,最基本的就是首先确定这是什么语言。如果把中文按照英文的方式去读,恐怕就成了笑话,最后得到的语音效果也不会好。了解是哪种语言后就可以将得到的文本切分成各个句子。这就是文本结构与语种判断部分。
在得到了各个句子之后进行正式处理之前,需要把整个文本数据进行预处理,就是我们在平常实验时所说的Normalization。这部分主要将各个句子不属于正常文字的部分进行处理,例如汉语句子中出现的数字或者字母。我们是将“123”说成“一二三”还是“一百二十三”,这些都是需要进行提前规定好的,这部分被称作文本标准化。
拿平常生活中接触最多的汉语举例,在文本标准化之后,就需要真正告诉后面的模型这些文本究竟该怎么读。这里往往拿拼音对汉字进行标注,汉语本身是多态的,就需要使用数字对拼音进行音调的标注。举个文本分析中最常用的例子:“南京市长江大桥”,我们既可以把它看作南京市的长江大桥,也可以把它看作南京市的市长叫做江大桥。这就需要通过拼音的部分将汉语的歧义区分开。前者就被标注成为“nan2jing1shi4zhang3jiang1da4qiao2”,后者就被标注成了“nan2jing1shi4chang2jiang1da4qiao3”。通过拼音和数字的组合不仅将文字中的歧义区分开,也为后面告诉声学模型怎么读提供了基础。
在进行完文本的分析进入声学模型的处理之前,有没有觉得还少了些什么?如果只是将文字直接送入声学模型那么直接得到的结果就会是硬邦邦没有感情的机器发出的声音。所以为了模拟真实的声音,就需要加入我们平常朗读课文中需要的抑扬顿挫,在这里我们称为韵律,对韵律进行预测就可以在最后的语音中知道哪里需要停顿,并且每次停顿需要停多久,哪里需要重读或者轻读等。
说完了步骤较多的文本分析模型之后,就可以进入声学模型的部分。当前的前沿论文也主要都集中在了这个部分。目前的主要技术实现方式主要分成了三个流派:波形拼接合成、语音参数合成、端到端的语音合成。
波形拼接流派在其中最容易理解。不知大家还是否记得我们小时候见过的磁带,像下图这样的磁带,在小的时候非常的常见。我们都知道声音可以理解成一段波形,磁带中的每一段就相当于是一段波形。例如张信哲的《爱如潮水》中的“我的爱如潮水,爱如潮水把我想你推”,在磁带中就是某一段纸带。如果我们想要听张信哲对我们说“我爱你”,其实就可以把上面这句话的“我”、“爱”、“你”三个字剪下来,拼到一起再送回到磁带中。如果保证整个过程的顺利,就可以听到张信哲对我们说“我爱你”。这其实就是波形拼接的思想,只是更复杂和细致一些。它通过前期录制大量合成人的音频来尽量覆盖每个音节和音素,在我们需要进行合成时,从语料库中选择对应的音素拼接到一起。这样做非常明显的缺点就是语料库需要足够的大,在前文中提到的语音导航的例子中,如果想让林志玲进行几十个小时的录音也是有些不现实的,但因为声音是直接拼接的,最后的音质会在当前技术条件下比另外两种方法更高,情感也更加的饱满。
在初中的时候,我们就知道声音中有强度、频率、音色三个特性。但其实描述声音的参数不只这些,参数合成技术就是通过对语料库中的声音特征进行建模,将文本分析模型的结果通过特征建模得到语音特征,生成新的参数。也就是通过我们以前的话来获得我们每个人说话的特点,再根据想让我们说出的话进行映射得到生动的语音。这种方法和之前的语音拼接相比最明显的就是不再需要将每个音素都录音下来了,更可能在实际中进行应用,但比较直接的问题就是这种方法往往获得的结果不够理想,声音是一个多维的特征,简单的建模往往无法进行完美的映射,得到的结果很容易被踢出有机械感。
第三种方法就是近十几年来非常火的深度学习应用到语音合成中的体现。整个端到端的语音合成技术直接体现了当前神经网络模型的特点。一边输入文本数据,一边获得生成语音。这是对前两种模型的极大简化,只要将中间的黑盒模型训练的足够好,就能够得到非常真实的语音。相比于前两种方法不仅所需要的语音样本小,而且生成语音也比参数方法更加自然。
语音合成已经不知不觉进入了我们生活中的每个角落。在我们接到陌生来电时,在我们拨打语音客服时,在我们进行地图导航时,在手机上进行听书时,甚至在我们进行语音聊天时,面对我们的可能都是语音合成的产物。相信读到这里的你或多或少都对语音合成有了基本的了解,语音合成不是多么晦涩难懂的技术,随着它的发展,将会有着越来越优异的表现,提升我们生活的高度。