汽车垂直自媒体平台“车鸣兽”获维京传媒A+轮融资,估值1亿
06-17
每个位刚(wan)铁(nian)直(dan)男人(shen)都梦想在下班回家的路上遇到电影中的机器人女友萨曼萨《Her》工作。
虽然“只闻其声不见其人”,但光听声音就能感受到各种情绪的诠释。
萨曼萨背后的真人·配音来自斯嘉丽约翰逊。
有人说:“光听声音就满足了我对她的所有幻想”。
可以说,声音对于消除人与机器之间的障碍、缩短人与机器之间的距离至关重要。
现实生活中,AI语音助手的语音与我们理想中的语音相差甚远。
为什么你的机器人女友听起来像斯嘉丽约翰逊?今天,Rokid A-Lab语音合成算法工程师郑杰文将从语音合成技术入手,分析其原因。
下面,EnjoyTTS背后的技术原理——前端和后端系统用来让语音助手说话的技术称为TTS(text-to-speech),即语音合成。
创建自然、真实、悦耳的TTS是AI领域的科学家和工程师一直在努力的方向。
但我们在前进的过程中总会遇到各种“绊脚石”。
这些是什么?让我们从 TTS 的基本原理开始。
TTS技术本质上解决了“将文本转换为语音的问题”,让机器可以通过这种方式说话。
图 1 语音合成,将文本转换为语音的问题。
但这个过程并不容易。
为了降低机器理解的难度,科学家将转换过程分为两部分——前端系统和后端系统。
图2 由前端和后端组成的TTS前端负责将输入文本转换为中间结果,然后将中间结果发送到后端,后端产生声音。
接下来我们先来了解一下前端和后端系统是如何协同工作的?生成“语言学规范”的前端系统 当我们还是孩子的时候,我们需要学习拼音才能认识单词。
有了拼音,我们就可以用它来拼写我们不认识的单词。
对于TTS来说,前端系统将文本转换成的中间结果就像拼音一样。
然而,仅有拼音是不够的,因为我们要读的不是一个单词,而是一个句子。
一个人说话时如果不能用正确的语调来控制说话的节奏,就会让人感到不舒服,甚至误解说话者想要传达的意思。
因此,前端也需要添加这种节奏信息来告诉后端如何正确“说话”。
我们将这种节奏称为信息韵律。
Prosody 是一个非常全面的信息。
为了简化问题,韵律被分解为停顿和重音等信息。
暂停是告诉后端在读句子时如何暂停,重读是指朗读时应该强调哪一部分。
将所有这些信息放在一起,我们可以将其称为“语言规范”。
图3.前端通过生成“语言书规范”告诉后端我们要合成什么样的内容。
前端就像一个语言学家,对给它的纯文本进行各种分析,然后为后端写出规范,告诉后端应该合成什么样的声音。
在实际的系统中,为了让机器正确说话,这个“规范”远比我们这里描述的要复杂。
扮演“发声者”角色的后端系统。
当后端系统得到“语言规范”时,它的目标是生成尽可能符合这个规范中描述的声音。
当然,机器不能直接凭空产生声音。
在此之前,我们还需要在录音室录制几个小时到几十个小时的音频数据(使用的数据量会根据技术的不同而有所不同),然后使用这些数据来构建后端系统。
目前主流的后端系统有两种:一种是基于波形拼接的,另一种是基于参数生成的。
波形拼接的思路很简单:就是将预先录制好的音频存储在电脑上。
当我们想要合成声音时,我们可以根据前端下发的“规范”来寻找那些音频成分。
然后将最符合规范的音频片段一一拼接在一起,形成最终的合成语音。
例如,如果我们要合成“你真漂亮”这句话,我们就会从数据库中查找“你、真、好、好看”这四个词的音频片段,然后将这四个片段拼接在一起。
图4采用拼接的方式合成了《你真美》。
当然,实际的拼接并没有那么简单。
首先,必须选择拼接单元的粒度。
选择粒度还需要设计拼接成本函数等。
参数生成方法和波形拼接方法的原理有很大不同。
使用参数生成方法的系统直接使用数学方法首先从音频中总结出音频最明显的特征,然后使用学习算法学习如何结合前端语言规范。
将书籍映射到这些音频特征的转换器。
一旦我们有了这个从语言规范到音频特征的转换器,当我们也合成“你真美”这四个字的时候,我们首先使用这个转换器来转换音频特征,然后使用另一个组件,将这些音频特征恢复成我们的声音。
可以听见。
在专业领域,该转换器称为“声学模型”,而将声音特征转换为声音的组件称为“声码器”。
为什么你的人工智能语音助手听起来不像人类?如果你对这个问题给出一个简单的答案,那么主要有两个原因: 你的人工智能会犯错误。
为了合成声音,人工智能需要做出一系列决定。
这些决定一旦出错,最终合成的声音就会出现问题,机械感很强,听起来不自然。
TTS的前端和后端系统都可能出错。
在使用人工智能合成声音时,工程师将问题过于简单化,导致对声音生成过程的描述不准确。
一方面,这种简化来自于我们自己对语言和人类语音生成的理解不足;另一方面,也来自于商业语音合成系统运行时需要考虑成本控制。
下面具体说一下导致AI语音助手说话不自然的前端错误和后端错误。
前端错误前端系统作为语言学家来说是整个TTS系统中最复杂的部分。
为了从纯文本生成最终的“语言规范”,语言学家要做的事情比我们想象的要多得多。
图5 典型的前端处理流程 典型的前端处理流程是:文本结构分析。
我们在系统中输入一段文本。
系统首先要判断文本是什么语言,只有知道它是什么语言,才能知道下一步如何处理。
然后将文本逐句分成句子。
然后将这些句子发送到后续模块进行处理。
文本正则化 在中文场景中,文本正则化的目的是将非汉字的标点符号或数字转换为汉字。
例如“此操作”,系统需要将“”转换为“666”。
文字转音素就是将文字转换成拼音。
由于汉语多音字的存在,我们无法像查新华字典一样直接找到一个单词的读音。
我们必须利用其他辅助信息和一些算法来做出正确的决定。
如何阅读它。
这些辅助信息包括分词和每个单词的词性。
韵律预测用于确定阅读句子时的节奏或节奏。
但一般简化系统仅预测句子中的停顿信息。
即读完一个单词后是否停顿以及停顿多长时间的决定。
从上面四个步骤可以看出,任何一步都可能出错。
一旦出现错误,生成的语言规范就会错误,后端合成的声音也会错误。
在TTS系统中,典型的前端错误包括以下类型: 1.文本正则化错误。
由于我们的书写形式和阅读形式不同,所以在前端的很早期,我们需要将书写形式转换为我们实际朗读的形式。
形式。
这个过程在专业领域被称为“文本正则化”。
例如我们前面提到的“”应该改为“666”。
我们很容易感受到TTS系统中的文本正则化错误。
比如下面这句话:“我花钱住了有房间号的房间”。
(点击收听音频)我们知道前面的“”应该读成“六百六十六”,后面的“”应该读成“六六六”。
但TTS系统很容易出错。
另一个例子:“我感觉有20-40%的把握比分是2-4。
”这两个“2-4”到底应该读成“二比四”、“二比四”还是“二比四”呢?你应该一看就知道如何正确读。
然而,对于前端系统来说,这又是一个难题。
2、拼音错误。
汉语是一门博大精深的语言,正确读懂它并不容易。
比较困难的问题之一是,面对多音字时,应该选择哪个音标来朗读?比如这两句话:“我的头发又长长了”。
和“我的头发很长。
”这里的“长”到底应该读二声“长”还是四声“张”呢?当然,人们可以很容易地选出正确答案。
那么下面这句话呢:一个人如果擅长一件事,他就可以做任何事,如果他擅长,他就会没事。
(点击收听音频)您可能需要稍微思考一下,然后才能读懂中间的所有“行”。
对于人工智能来说就更难了。
有时,你可能会听到AI助手在朗读复音单词时出错。
这种错误很容易被你的耳朵察觉,并立即给你一个印象:“这绝对不是真人在说话~”。
当然,多音错误只是语音错误的一种,还有其他错误,如软调、罗音、音调变化等。
总之,要准确地让你的AI助手读完所有内容并不容易。
3、节奏错误前面提到,为了更准确地传达信息,人们说话时需要有节奏感。
如果一个人说话时没有任何停顿,我们就很难理解他的意思,甚至会认为这个人不礼貌。
我们的科学家和工程师都在努力让TTS阅读更有节奏、更有礼貌。
但很多情况下TTS的表现总是不尽如人意。
这是因为语言变化太大,导致我们的阅读节奏和韵律根据不同的语境甚至不同的场合而有所不同。
在节奏中,最要讨论的是句子中停顿的节奏,因为停顿是正确阅读句子的基础。
如果停顿不正确,人耳很容易发现错误。
比如这句话:“给你切换单循环模式”。
如果我们使用“|”代表暂停,那么正常人阅读的暂停节奏一般是这样的:“切换|单循环模式给你”。
但如果你的人工智能助手用一种奇怪的节奏说“为你切换到单循环模式”之类的话,你可能会伤心欲绝。
后端错误 说完了“经常犯错误的语言学家”,我们再来看看后端:按照“语言学家”给出的“规范书”读稿子的“发音者”。
前面说了,后端主要有两种方法:拼接法和参数法。
现在苹果和亚马逊的AI助手Siri和Alexa都使用波形拼接的方法。
在中国,大多数企业采用参数法。
那么我们重点看一下参数方法可能出现的后端错误。
从前端获得语言信息后,后端系统首先要做的就是确定每个汉字的发音需要多长时间(甚至每个声母和韵母的发音需要多长时间)。
这个决定发音长度的组件在专业领域被称为“时长模型”。
有了这个时间信息,后端系统就可以通过我们前面提到的转换器(也称为声学模型)将这种语言规范转换为音频特征。
然后,另一个称为“声码器”的组件用于将这些音频特征恢复为声音。
从时长模型到声学模型再到声码器,每一步都可能出错或者不能完美地产生我们想要的结果。
在TTS系统中,典型的后端错误包括以下类型: 1.时长模型错误 当朗读句子时,每个单词的发音时间根据上下文而不同。
TTS 系统必须根据上下文决定哪些单词应该发音更长,哪些单词应该发音更短。
比较典型的例子之一是模态粒子的读取。
通常这些语气词承载着说话者的语气和情感,而且它们的发音比普通单词要长,比如这句话:“嗯……我认为他是对的。
” (点击收听音频)这里的“嗯”,在这个场景中,显然需要拉长,用来表达“思考后的判断”。
但并不是所有的“嗯”字都要这么长。
对于例如这句话:“啊?你刚才说什么?”这里的“嗯”代表疑问语气,发音比上面这句话中的“嗯”要短得多。
如果时长模型不能正确确定发音时长,就会给人一种不自然的感觉。
2.声学模型错误 最重要的声学模型错误是在后端训练“发音者”时没有看到的发音。
声学模型的作用是从训练声音库中学习各种“语言规范”对应的语音的声学特征。
如果合成遇到训练期间没有见过的语言表示,机器将很难输出正确的声学特征。
一个常见的例子就是二化音。
原则上,每个汉语拼音都有对应的儿化音,但实际来讲,有些儿化音很少用到,所以在录制音库时,通常不会覆盖所有的儿化音。
相反,只保留最常见的。
这时,有些婴儿的声音可能不会发音,或者可能发音不好。
3.声码器错误 声码器的类型有很多种,但比较传统和常见的声码器通常使用基频信息。
那么什么是基频呢?基本频率是指说话时声带振动的快慢。
这里有一个简单的方法可以让你感受自己说话的基频:将除拇指外的四个手指按在喉咙上,然后开始随意地自言自语。
这时候你会感觉到你的喉咙在振动,这个振动信息就是我们的基频信息。
浊音是伴随声带振动而发出的声音,没有声带振动而产生的声音称为清音。
辅音可以是浊音或浊音,而元音一般是浊音。
因此,合成语音中元音和浊辅音的位置应与基频相对应。

如果我们前面提到的声学模型输出的基频出现偏差,声码器合成的声音听起来就会很奇怪。
在训练后端“发音者”时,我们还需要通过算法计算出基频信息。
不良的基频提取算法可能会导致基频丢失、倍频或半频。
这些将直接影响基频预测模型的有效性。
如果基频没有预测到应有的位置,合成的声音听起来就会沙哑,对听感会有非常明显的影响。
一个好的声码器还必须处理基频和谐波之间的关系。
如果高频谐波太明显,就会产生嗡嗡声和机械感。
总结 在这篇文章中,我们介绍了TTS的基本原理,并分析了语音助手不能像真人一样说话的原因:TTS在做出各种决定时出现错误,导致阅读不正确或不自然。
同时,为了让计算机能够合成声音,工程师会简化文本转语音的问题,导致对声音生成过程的描述不准确。
这种简化一方面来自于语音语言生成过程的认知局限性,同时也受到当前计算工具的限制。
虽然这个领域有很多新的方法,特别是利用深度学习(Deep Learning)的方法直接将文本转换为语音,并且已经表现出了非常自然的声音,让你的AI助手完全像人类一样说话仍然是一个非常困难的事情。
有挑战的工作。
雷锋网注:本文作者郑杰文拥有爱丁堡大学人工智能硕士学位,师从国际知名语音合成专家Simon King教授。
目前在Rokid ALab担任语音合成算法工程师,负责语音合成引擎架构设计、后端声学模型开发等。
雷锋网特约文章未经授权禁止转载。
详情请参阅转载说明。
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
标签:
相关文章
06-18
06-06
06-17
06-06
06-18
最新文章
Android旗舰之王的过去与未来
智能手表不被开发、AR眼镜被推迟,Meta的产品经历了一波三折
为什么Cybertruck是特斯拉史上最难造的车?
更新鸿蒙3后,文杰允许你在车里做PPT了
新起亚K3试驾体验:追求“性价比”,韩系汽车仍不想放弃
阿维塔15登场!汽车配备了增程动力,理想情况下会迎来新的对手吗?
马斯克宣布创建 ChatGPT 竞争对手! OpenAI的CEO给他泼了冷水, GPT-5可能会发生巨大变化
骁龙无处不在,是平台也是生态