为什么你的语音助手说话不像人?关于TTS技术原理及挑战
使用AI合成声音时,工程师对这个问题过度简化,导致没有准确的刻画声音生成的过程。这种简化一方面是来自于我们人类自己对语言,和人类语音生成的认识还不足够;另外一方面也来自于商用语音合成系统在运转的时候要对成本控制进行考量。 下面我们具体来聊聊造成AI语音助手说话不自然的前端错误和后端错误问题。 前端错误 前端系统,做为一个语言学家,是整个TTS系统里最复杂的部分。为了从纯文本生成出最后的“语言学规格书”,这个语言学家做的事情要比我们想像的多得多。
一个典型的前端处理流程是: 文本结构分析 我们给系统输入一个文本,系统要先判断这个文本是什么语言,只有知道是什么语言才知道接下来如何处理。然后把文本划分成一个一个的句子。这些句子再送给后面的模块处理。 文本正则 在中文场景下,文本正则的目的是把那些不是汉字的标点或者数字转化为汉字。 比如”这个操作666啊”,系统需要把“666”转化为“六六六”。 文本转音素 也就是把文本转化为拼音,由于中文中多音字的存在,所以我们不能直接通过像查新华字典一样的方法去找一个字的读音,必须通过其他辅助信息和一些算法来正确的决策到底要怎么读。这些辅助信息就包括了分词和每个词的词性。 韵律预测 用于决定读一句话时的节奏,也就是抑扬顿挫。但是一般的简化的系统都只是预测句子中的停顿信息。也就是一个字读完后是否需要停顿,停顿多久的决策。 从上面四个步骤可以看出,任何步骤都是有可能出错的,一但出错,生成的语言学规格书就会错,导致后端合成的声音也会错。一个TTS系统,典型的前端错误有以下几种类型: 1、文本正则错误 由于我们的书写形式和朗读形式是不一样的,所以在前端非常早期的阶段,需要把书写形式转化为我们实际朗读的形式。这个过程在专业领域里叫“文本正则”。比如我们前面说到的“666” 要转为“六六六”。我们非常容易感受到TTS系统中文本正则的错误。比如下面这句: “我花了666块住进了一个房号是666的房间。”(点击听音频) 我们知道前面的“666”应该读成“六百六十六”,后面的“666”应该要读“六六六”。但是TTS系统却很容易搞错。 另外一个例子:“我觉得有2-4成的把握,这场比分是2-4。” 这两个“2-4”到底应该是读“二到四”,“两到四”,还是“二比四”呢?你应该一眼就能知道到底怎么样读才是正确的。但是,对于前端系统来说,这又是一个难题。 2、注音错误 中文是一门博大精深的语言,正确的朗读它可并没有好么容易。其中一个比较棘手的问题就是,面对多音字时,到底应该选择哪一个音来朗读呢? 比如这两句:“我的头发又长长了。”和“我的头发长长的。”这里的“长”到底应该是读二声的“chang”还是读四声的“zhang”呢? 当然,人可以很轻松的挑选出正确的答案。那么下面这一句呢: 人要是行,干一行行一行,行行都行,要是不行,干一行不行一行,行行不行。(点击听音频) 可能你也要略加思索,才能读对这中间的所有“行”。对于AI来说就更难了。 你可能时不时的就能听到AI助手在朗读多音字时读错了,这种错误很容易就被你的耳朵捕捉到,并让你立刻有一个印象:“这绝对不是真人在说话~”。 当然,多音字错误只是注音错误中的一种,还有其他的一些错误,如轻声,儿化音,音调变调等。总之,准确的让你的AI助手朗读所有的内容并不容易。 3、韵律错误 (编辑:西安站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |