萨曼萨背后的真人配音来自斯嘉丽约翰逊。有人说,“光听声音就已知足我对她全部的抱负。”
可以说,肃清人与机器之间的隔阂,拉近之间的间隔,声音是至关主要的。
而在现实生活中,AI 语音助手说话还远远达不到我们空想的声音。

为什么你的机器人女友说话不像斯嘉丽约翰逊?本日,Rokid A-Lab 语音合成算法工程师郑杰文将从语音合成技能谈起,给大家剖析个华夏因。以下,Enjoy
TTS背后的技能事理——前端和后端系统
让语音助手说话的技能叫 TTS(text-to-speech),也便是语音合成。
打造自然、真实、悦耳的 TTS,是 AI 领域的科学家和工程师一贯努力的方向。但提高过程中总会碰到各种“拦路虎”,它们究竟是什么? 我们先从 TTS 的根本事理讲起。
TTS 技能实质上办理的是“从文本转化为语音的问题”,通过这种办法让机器开口说话。
图 1语音合成,一个从文本转化为语音的问题
但这个过程并不随意马虎,为了降落机器理解的难度,科学家们将这个转化过程拆分成了两个部分——前端系统和后端系统。
图 2前端和后端一起组成的TTS
前端卖力把输入的文本转化为一个中间结果,然后把这个中间结果送给后端,由后端天生声音。
接下来,我们先来理解一下前端和后端系统是如何分工协作的?
天生“措辞学规格书”的前端系统
小时候我们在认字之前须要先学习拼音,有了拼音,我们就可以用它去拼读我们不认识的字。对付 TTS 来说,前端系统从文本转化出的中间结果就彷佛是拼音。
不过,光有拼音还弗成,由于我们要朗读的不是一个字,而是一句一句的话。如果一个人说话的时候不能精确的利用抑扬抑扬的语调来掌握自己说话的节奏,就会让人听着不舒畅,乃至误解说话人想要传达的意思。以是前端还须要加上这种抑扬抑扬的信息来见告后端怎么精确的“说话”。
我们将这种抑扬抑扬的信息称之为韵律(Prosody)。韵律是一个非常综合的信息,为了简化问题,韵律又被分解成了如停顿,重读等信息。停顿便是见告后端在句子的朗读中该当怎么停,重读便是在朗读的时候该当着重强调那一部分。这些所有的信息综合到一起,我们可以叫”措辞学规格书”。
图 3.前端通过天生“措辞书规格书”来见告后端我们想要合成什么样的内容。
前端就像一个措辞学家,把给它的纯文本做各种各样的剖析,然后给后端开出一份规格书,见告后端该当合成什么样的声音。
在实际的系统中,为了让机器能精确的说话,这份儿“规格书”远远比我们这里描述的要繁芜。
扮演“发音人”的后端系统
当后端系统拿到“措辞学规格书”后,目标是天生只管即便符合这个规格书里描述的声音。
当然,机器是不能凭空直接天生一个声音的。在这之前,我们还须要在录音棚里录上几个到几十个小时不等的音频数据(根据技能不同,利用的数据量会不同),然后用这些数据来做后端系统。
目前主流的后端系统有两种方法:一种是基于波形拼接的方法,一种是基于参数天生的方法。
波形拼接的方法思路很大略:那便是把事先录制好的音频存储在电脑上,当我们要合成声音的时候,我们就可以根据前端开出的“规格书”,来从这些音频里去探求那些最适宜规格书的音频片段,然后把片段一个一个的拼接起来,末了就形成了终极的合针言音。
比如:我们想要合成“你真好看”这句话,我们就会从数据库里去探求“你、真、好、看”这四个字的音频片段,然后把这四个片段拼接起来。
图表 4利用拼接法合成“你真好看”
当然,实际的拼接并没有这么大略,首先要选择拼接单元的粒度,选好粒度还须要设计拼接代价函数等。
参数天生法和波形拼接法的事理很不相同,利用参数天生法的系统直策应用数学的方法,先从音频里总结出音频最明显的特色,然后利用学习算法来学习一个如何把前端措辞学规格书映射到这些音频特色的转换器。
一但我们有了这个从措辞学规格书到音频特色的转换器,在同样合成“你真好看”这四个字的时候,我们先利用这个转换器转换出音频特色,然后用另一个组件,把这些音频特色还原成我们可以听到的声音。在专业领域里,这个转换器叫“声学模型”,把声音特色转化为声音的组件叫“声码器”。
为什么你的AI语音助手说话不像人?
如果大略的给这个问题一个答案的话,紧张有两个方面的缘故原由:
你的AI会犯错。为了合成出声音,AI须要做持续串的决定,一但这些决定出错,就会导致终极合成出来的声音有问题,有强烈的机器感,听着不自然。TTS的前端系统和后端系统都有犯错的可能。
利用AI合成声音时,工程师对这个问题过度简化,导致没有准确的刻画声音天生的过程。这种简化一方面是来自于我们人类自己对措辞,和人类语音天生的认识还不敷够;其余一方面也来自于商用语音合成系统在运转的时候要对本钱掌握进行考量。
下面我们详细来聊聊造成AI语音助手说话不自然的前端缺点和后端缺点问题。
前端缺点
前端系统,做为一个措辞学家,是全体TTS系统里最繁芜的部分。为了从纯文本天生出末了的“措辞学规格书”,这个措辞学家做的事情要比我们想像的多得多。
图表 5范例的前端处理流程
一个范例的前端处理流程是:
文本构造剖析
我们给系统输入一个文本,系统要先判断这个文本是什么措辞,只有知道是什么措辞才知道接下来如何处理。然后把文本划分成一个一个的句子。这些句子再送给后面的模块处理。
文本正则
在中文场景下,文本正则的目的是把那些不是汉字的标点或者数字转化为汉字。
比如”这个操作666啊”,系统须要把“666”转化为“六六六”。
文本转音素
也便是把文本转化为拼音,由于中文中多音字的存在,以是我们不能直接通过像查新华字典一样的方法去找一个字的读音,必须通过其他赞助信息和一些算法来精确的决策到底要怎么读。这些赞助信息就包括了分词和每个词的词性。
韵律预测
用于决定读一句话时的节奏,也便是抑扬抑扬。但是一样平常的简化的系统都只是预测句子中的停顿信息。也便是一个字读完后是否须要停顿,停顿多久的决策。
从上面四个步骤可以看出,任何步骤都是有可能出错的,一但出错,天生的措辞学规格书就会错,导致后端合成的声音也会错。一个TTS系统,范例的前端缺点有以下几种类型:
1、文本正则缺点
由于我们的书写形式和朗读形式是不一样的,以是在前端非常早期的阶段,须要把书写形式转化为我们实际朗读的形式。这个过程在专业领域里叫“文本正则”。比如我们前面说到的“666”
要转为“六六六”。我们非常随意马虎感想熏染到TTS系统中文本正则的缺点。比如下面这句:
“我花了666块住进了一个房号是666的房间。”
我们知道前面的“666”该当读成“六百六十六”,后面的“666”该当要读“六六六”。但是TTS系统却很随意马虎搞错。
其余一个例子:“我以为有2-4成的把握,这场比分是2-4。”
这两个“2-4”到底该当是读“二到四”,“两到四”,还是“二比四”呢?你该当一眼就能知道到底怎么样读才是精确的。但是,对付前端系统来说,这又是一个难题。
2、注音缺点
中文是一门博大精湛的措辞,精确的朗读它可并没有好么随意马虎。个中一个比较棘手的问题便是,面对多音字时,到底该当选择哪一个音来朗读呢?
比如这两句:“我的头发又长长了。”和“我的头发长长的。”这里的“长”到底该当是读二声的“chang”还是读四声的“zhang”呢?
当然,人可以很轻松的挑选出精确的答案。那么下面这一句呢:
人假如行,干一行行一行,行行都行,假如弗成,干一行弗成一行,行行弗成。
可能你也要略加思虑,才能读对这中间的所有“行”。对付AI来说就更难了。
你可能时时时的就能听到AI助手在朗读多音字时读错了,这种缺点很随意马虎就被你的耳朵捕捉到,并让你急速有一个印象:“这绝对不是真人在说话~”。
当然,多音字缺点只是注音缺点中的一种,还有其他的一些缺点,如轻声,儿化音,腔调变调等。总之,准确的让你的AI助手朗读所有的内容并不随意马虎。
3、韵律缺点
如前面所说,为了更准确的通报信息,人在说一句话的时候须要有节奏感。如果一个人在说话的时候中间不做任何的停顿,会让我们很难明得他说的意思,乃至我们会以为这个人不礼貌。我们的科学家,工程师,都在费尽心机的让TTS朗读得更具备节奏感一些,更礼貌一些。但是在很多时候TTS的表现却总是差强人意。
这是由于措辞的变革太丰富了,根据不同的高下文,乃至不同的场合,我们的朗读的韵律节奏都不太一样。韵律中,最主要的便是谈论一句话的停顿节奏,由于停顿是一句话朗读精确的根本,如果停顿不对,缺点很随意马虎被人耳朵捉住。
比如这句:”为你切换单曲循环模式”。如果我们用“|”来表示停顿,那么一个正常的人朗读的停顿节奏一样平常是这样的:“为你切换|单曲循环模式”。
但是如果一但你的AI助手说“为你切|换单曲循环模式”这种奇怪的节奏感时,你内心可能是奔溃的。
后端缺点
聊完前面这个“常常犯错的措辞学家”,我们再来看看后端:这个按照“措辞学家”给的 “规格书”来读稿子的“发音人”。
前面提到,后端紧张有拼接法和参数法两种办法。现在苹果,亚马逊的AI助手Siri和Alexa 利用的是波形拼接的方法。而在海内,大多数公司都是利用参数法。以是我们关键来看一下参数法可能的后端缺点。
后端系统在拿到前端给的措辞信息后,要做的第一件事情是,决定每个汉字到底要发音多永劫光(乃至是每个声母,韵母要发音多永劫光)。这个决定发音是非的组件在专业领域里叫“时长模型”。
有了这个韶光信息后,后端系统就可以通过我们前面说的一个转换器(也叫声学模型)把这个措辞学规格书转化为音频特色了。然后再用另一个叫“声码器”的组件把这些音频特色还原成声音。从时长模型到声学模型,再到声码器,这里面的每一步都可能犯错或者不能完美的天生我们想要的结果。
一个 TTS 系统里,范例的后端缺点有以下几种类型:
1、时长模型缺点
在一句话朗读的时候,根据高下文语境的不同,每个字朗读发音韶光是不一样的。TTS系统必须根据高下文去决定到底哪些字该当读音拖长一点,哪些字该当读短一些,个中一个比较范例的例子便是语气词的朗读。
常日这些语气词由于携带了说话人的语气情绪,它们的发音都会比普通的字要长一些,比如这句:“嗯。。。我想他是对的。”
这里的“嗯”,在这个场景下,很明显须要被拖长,用于表示一种“思考之后的判断”。
但是并不是所有的“嗯”都要拖这么长,比如这一句:“嗯?你刚才说什么?”
这里的“嗯”代表是一种疑问的语气,发音就要比上面句子中的“嗯”要短得多。如果时长模型不能精确的决策出发音时长的话,就会给人一种不自然觉得。
2、声学模型缺点
最紧张的声学模型缺点便是碰着在演习后端这个“发音人”时,没有见过的发音。声学模型的浸染是从演习音库里,学习到各种“措辞学规格书”所对应的语音声学特色。如果在合成的时候碰着了演习过程中没有见过的措辞学表现,那么机器就不太随意马虎输出精确的声学特色。
一个常见的例子是儿化音。原则上来说,每个汉语拼音都有对应的儿化音,但在实际说话中有些儿化音被利用到的频次极低,因此录制音库的时候常日并不会覆盖所有的儿化音,而是仅仅保留最常见的一些。这个时候就会涌现一些儿化音发不出来,或者发不好的征象。
3、声码器缺点
声码器的种类比较多,但是比较传统、比较常见的声码器常日都会用到基频信息。那什么是基频呢?基频便是你在说话的时候声带震撼的快慢程度。这里教你一个大略的方法来感想熏染自己说话的基频:把自己的除大拇指以外的其他四个手指按压到自己的喉咙部分,然后自己开始对自己随便说话。
这个时候你就会感想熏染到你的喉咙在震撼,这个震撼的信息便是我们的基頻信息。发浊音时会伴随声带振动,声带不振动发出的音称为清音。辅音有清有浊,而元音一样平常均为浊音。以是合针言音中元音和浊辅音的位置都该当对应有基频,如果我们前面提到的声学模型输出的基频涌现偏差,声码器合成的声音就会听起来很奇怪。
在演习后端这个“发音人”时,我们也要通过算法来打算出基频信息。不好的基频提取算法可能会造成基频丢失、倍频或者半频的征象。这些都会直接影响基频预测模型的效果。如果该当有基频的地方没有预测出基频,合成声音听起来便是沙哑的,对听感的影响十分明显。
一个好的声码器还要处理好基频和谐波的关系。如果高频谐波过于明显,在听感上会造成嗡嗡的声响,机器感明显。
总结
在这篇文章里,我们先容了 TTS 的根本事理,以及剖析了语音助手不能像真人一样说话的缘故原由:TTS 在做各种决策中会犯错,导致朗读出错或者不自然。同时,为了让电脑可以合成声音,工程师会对文本转语音问题做简化,导致没有准确的刻画声音天生的过程。这种简化一方面来自于对语音措辞天生过程的认知局限,同时也受限定于目前的打算工具。
只管现在在这个领域内有很多新的方法,特殊是利用深度学习(Deep Learning)方法来直接做文本到语音的转化,而且已经展示出来了非常自然的声音,但是让你的 AI 助手完备像人一样说话仍旧是一项非常具有寻衅性的事情。
雷锋网按:本文作者郑杰文,爱丁堡大学人工智能硕士,师从国际著名语音合成专家Simon King教授。 现任职Rokid ALab 语音合成算法工程师,卖力语音合成引擎架构设计,后端声学模型开拓等事情。