郑杰文作家Rokid根源

为啥你的语音帮忙语言不像人?关于TTS技能原理及挑衅

每一位刚(wan)铁(nian)直(dan)男(shen),都抱负下班道上偶遇影戏《Her》中的板滞人女友萨曼萨。虽然“只闻其声不睹其人”,但仅听声响就能感觉到种种心情的标明。

萨曼萨背后的真人配音来自斯嘉丽约翰逊。有人说,“光听声响就已满意我对她通通的幻念。”

可以说,消弭人与板滞之间的隔膜,拉近之间的间隔,声响是至关主要的。

而实行生存中,AI 语音帮忙语言还远远达不到我们抱负的声响。

为啥你的板滞人女友语言不像斯嘉丽约翰逊?本日,Rokid A-Lab 语音合成算法工程师郑杰文将从语音合成技能道起,给大师剖析此中启事。以下,Enjoy

TTS背后的技能原理——前端和后端系统

让语音帮忙语言的技能叫 TTS(text-to-speech),也便是语音合成。

打制自然、实、动听的 TTS,是 AI 范畴的科学家和工程师不停起劲的偏向。但行进进程中总会碰到种种“拦道虎”,它们终究是什么?我们先从 TTS 的根底原理讲起。

TTS 技能实质上办理的是“从文本转化为语音的题目”,通过这种方法让板滞启齿语言。图 1语音合成,一个从文本转化为语音的题目但这个进程并禁止易,为了低沉板滞了解的难度,科学家们将这个转化进程拆分成了两个部分——前端系统和后端系统。

图 2前端和后端一同构成的TTS

前端认真把输入的文本转化为一个中心结果,然后把这个中心结果送给后端,由后端生成声响。

接下来,我们先来了解一下前端和后端系统是怎样分工协作的?

生成“言语学规格书”的前端系统

小时分我们认字之前需求先进修拼音,有了拼音,我们就可以用它去拼读我们不看法的字。关于 TTS 来说,前端系统从文本转化出的中心结果就仿佛是拼音。

不过,光有拼音还不可,因为我们要朗读的不是一个字,而是一句一句的话。假如一私人语言的时分不行准确的运用抑扬抑扬的语调来掌握本人语言的节奏,就会让人听着不舒适,以致歪曲语言人念要传达的意义。以是前端还需求加上这种抑扬抑扬的新闻来告诉后端怎样准确的“语言”。

我们将这种抑扬抑扬的新闻称之为韵律(Prosody)。韵律是一个十分归纳的新闻,为了简化题目,韵律又被剖析成了如停留,重读等新闻。停留便是告诉后端句子的朗读中应当怎样停,重读便是朗读的时分应当着重夸张那一部分。这些所有的新闻归纳到一同,我们可以叫”言语学规格书”。图 3.前端通过生成“言语书规格书”来告诉后端我们念要合成什么样的实质。前端就像一个言语学家,把给它的纯文本做种种各样的剖析,然后给后端开出一份规格书,告诉后端应当合成什么样的声响。

实行的系统中,为了让板滞能准确的语言,这份儿“规格书”远远比我们这里描画的要繁杂。

饰演“发音人”的后端系统

当后端系统拿到“言语学规格书”后,目标是生成尽量契合这个规格书里描画的声响。

当然,板滞是不行捏制直接生成一个声响的。这之前,我们还需求录音棚里录上几个到几十个小时不等的音频数据(依据技能差别,运用的数据量会差别),然后用这些数据来做后端系统。

目前主流的后端系统有两种方法:一种是基于波形拼接的方法,一种是基于参数生成的方法。

波形拼接的方法思道很简单:那便是把事先录制好的音频存储电脑上,当我们要合成声响的时分,我们就可以依据前端开出的“规格书”,来从这些音频里去寻找那些最适合规格书的音频片断,然后把片断一个一个的拼接起来,着末就变成了最终的合针言音。

比如:我们念要合成“你真悦目”这句话,我们就会从数据库里去寻找“你、真、好、看”这四个字的音频片断,然后把这四个片断拼接起来。图外 4运用拼接法合成“你真悦目”当然,实行的拼接并没有这么简单,起首要挑选拼接单位的粒度,选好粒度还需求计划拼接价钱函数等。

参数生成法和波形拼接法的原理很不相同,运用参数生成法的系统直接运用数学的方法,先从音频里总结出音频最分明的特征,然后运用进修算法来进修一个怎样把前端言语学规格书映照到这些音频特征的转换器。

一但我们有了这个从言语学规格书到音频特征的转换器,同样合成“你真悦目”这四个字的时分,我们先运用这个转换器转换出音频特征,然后用另一个组件,把这些音频特征还原成我们可以听到的声响。专业范畴里,这个转换器叫“声学模子”,把声响特征转化为声响的组件叫“声码器”。

啥你的AI语音帮忙语言不像人

假如简单的给这个题目一个谜底的话,主要有两个方面的启事:

  1. 你的AI会堕落。为了合成作声响,AI需求做连续串的决议,一但这些决议堕落,就会导致最终合成出来的声响有题目,有激烈的机械感,听着不自然。TTS的前端系统和后端系统都有堕落的可以。
  2. 运用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 运用的是波形拼接的方法。而国内,大大都公司都是运用参数法。Rokid的若琪也是运用参数法,以是我们要害来看一下参数法可以的后端过失。

后端系统拿到前端给的言语新闻后,要做的第一件事故是,决议每个汉字终究要发音众长时间(以致是每个声母,韵母要发音众长时间)。这个决议发音好坏的组件专业范畴里叫“时长模子”。

有了这个时间新闻后,后端系统就可以通过我们前面说的一个转换器(也啼声学模子)把这个言语学规格书转化为音频特征了。然后再用另一个叫“声码器”的组件把这些音频特征还原成声响。从时长模子到声学模子,再到声码器,这内中的每一步都可以堕落或者不行完美的生成我们念要的结果。

一个 TTS 系统里,典范的后端过失有以下几品种型:

1、时长模子过失

一句话朗读的时分,依据上下文语境的差别,每个字朗读发音时间是不相同的。TTS系统必需依据上下文去决议终究哪些字应当读音拖长一点,哪些字应当读短少许,此中一个比较典范的例子便是语气词的朗读。

一般这些语气词因为带领了语言人的语气心情,它们的发音都会比一般的字要长少许,比如这句:嗯。。。我念他是对的。”

这里的“嗯”,这个场景下,很分明需求被拖长,用于外示一种“考虑之后的判别”。

可是并不是所有的“嗯”都要拖这么长,比如这一句:嗯?你方才说什么?

这里的“嗯”代外是一种疑问的语气,发音就要比上面句子中的“嗯”要短得众。假如时长模子不行准确的计划动身音时长的话,就会给人一种不自然觉得。当然,Rokid语气词发音上也有本人的一套专利方法,用于生成十分自然的语气词发音。后续的作品中,我们将会推一个专题作品先容。

2、声学模子过失

最主要的声学模子过失便是碰到教练后端这个“发音人”时,没有睹过的发音。声学模子的感化是从教练音库里,进修到种种“言语学规格书”所对应的语音声学特征。假如合成的时分碰到了教练进程中没有睹过的言语学外现,那么板滞就不太容易输出准确的声学特征。

一个常睹的例子是儿化音。准绳上来说,每个汉语拼音都有对应的儿化音,但实行语言中有些儿化音被运用到的频次极低,于是录制音库的时分一般并不会掩盖所有的儿化音,而是仅仅保管最常睹的少许。这个时分就会呈现少许儿化音发不出来,或者发欠好的现象。 

3、声码器过失

声码器的品种比较众,可是比较古板、比较常睹的声码器一般都会用到基频新闻。那什么是基频呢?基频便是你语言的时分声带震动的速慢程度。这里教你一个简单的方法来感觉本人语言的基频:把本人的除大拇指以外的其他四个手指按压到本人的喉咙部分,然后本人开端对本人随便语言。

这个时分你就会感觉到你的喉咙震动,这个震动的新闻便是我们的基頻新闻。发浊音时会随同声带振动,声带不振动发出的音称为清音。辅音有清有浊,而元音一般均为浊音。以是合针言音中元音和浊辅音的位置都应当对应有基频,假如我们前面提到的声学模子输出的基频呈现偏向,声码器合成的声响就会听起来很奇异。

教练后端这个“发音人”时,我们也要通过算法来盘算出基频新闻。欠好的基频提取算法可以会变成基频丧失、倍频或者半频的现象。这些都会直接影响基频预测模子的效果。假如应当有基频的地方没有预测出基频,合成声响听起来便是嘶哑的,对听感的影响十分明显。

一个好的声码器还要处理好基频调和波的联系。假如高频谐波过于分明,听感上会变成嗡嗡的声响,机械感分明。

总结

这篇作品里,我们先容了 TTS 的根底原理,以及剖析了语音帮忙不行像真人相同语言的启事:TTS 做种种计划中会堕落,导致朗读堕落或者不自然。同时,为了让电脑可以合成声响,工程师会对文本转语音题目做简化,导致没有准确的描写声响生成的进程。这种简化一方面来自于对语音言语生成进程的认知范围,同时也受限制于目前的盘算东西。

尽管现这个范畴内有许众新的方法,特别是运用深度进修(Deep Learning)方法来直叫■文本到语音的转化,而且曾经展现出来了十分自然的声响,可是让你的 AI 帮忙完备像人相同语言仍然是一项十分具有挑衅性的义务。Rokid ALab 团队也努力于与大师一同探究 TTS 技能的打破与运用,等候为用户带来更加自然的声响。                                                    

作家先容:郑杰文,爱丁堡大学人工智能硕士,师从国际出名语音合成专家Simon King传授。 现任职Rokid ALab 语音合成算法工程师,认真语音合成引擎架构计划,后端声学模子开辟等义务。

财产TTS语音帮忙
21
LipcPro
有点意义...