语音合成(Text To Speech,TTS)技术将文本转化为声音,目前广泛应用于语音助手、智能音箱、地图导航等场景。TTS的实现涉及到语言学、语音学的诸多复杂知识,因合成技术的区别,不同的TTS系统在准确性、自然度、清晰度、还原度等方面也有着不一样的表现,如何从多维度综合评价TTS系统质量成了TTS测试人员的一大挑战。AI评测实验室针对TTS前端、后端的存在的问题,选取TTS评测指标,制定各指标评测方法,形成了一套系统的TTS评测方案。
当前常见的TTS系统可分为前端、后端两部分,前端完成输入文本的归一化、分词、发音预测、韵律结构预测等处理,后端对声音建模,用学习得到的声音参数,通过声码器合成声音。
由于自然语言本身的复杂性和开放性,前端处理部分难度较大,难以覆盖所有情况,可能引入的问题举例如下:
后端训练模型预测声音参数,声音参数通过声码器(WaveNet等不在此列)合成语音波形。无论是声音参数、还是声码器都是对实际发音过程的有损建模,无法百分百还原人声,可能引入的问题如下:
针对上文提到的前后端可能存在的问题,选择如下指标来评测TTS。
线上语料中频繁出现的多音字、数字、符号、夹杂英文会给TTS前端带来很大的挑战,对这类case的发音错误会给用户带来较差的体验。为了评估并提升前端的正确发音的能力,AI评测实验室建立大规模前端测试语料,通过TTS前端输出快速验证语料上的发音准确性。
前端文本处理过程中会对文本做分词处理和时长预估,为评估TTS停顿和发音时长的合理性,可以准备不同领域不同句式的不同情感的文本,通过众测主观判断合成语音是否可接受,计算TTS韵律准确性。
为检查语音合成系统对汉字的覆盖程度,建立覆盖汉普通话不同等级的字库和生僻字库的测试语料,通过TTS前端输出工具,检查是否能正常处理,统计字典覆盖率,实际评测中,因为测试发音准确性需要准备庞大语料,覆盖了大量汉字,可以在测试发音准确性时顺便发现字典覆盖中的badcase。
采用汉语清晰度诊断押韵测试(DRT)法测试字清晰度,TTS合成DRT基本字表,覆盖浊音、鼻音、低沉音等不同特征的押韵字,听应音人根据TTS读音在问卷上选出听到的字,最后由测试人员统计结果计算清晰度等级,详见《GB-T 13504-1992》。现有TTS合成的字清晰度较高,可以根据产品实际情况选择是否需要评测此项。
采用语义不可测句(Semantic Unpredictable Sentence, SUS)测试单词清晰度,语义的不可测可以避免听音人的经验猜测,使评测结果更可靠。可根据产品实际情况选择是否需要评测此项。
业界对语音的整体评测,一般是使用MOS。邀请听音人试听合成语音,根据分值描述,从拟人性、连贯性、韵律感等方面为语音选择合适的分数。
本章详细介绍评测时重点关注的发音准确性评测和MOS评测。
发音准确性测试的目的是评估前端发音预测能力,挖掘badcase,通过多轮修复和回归,提升系统发音准确率。
可能影响到TTS发音准确的语料类型较多,具体可细分为以下几类:
建设语料时,如此详的分类对于评估准确率、挖掘Badcase无额外收益,徒增工作量,因此实践中将准确性测试语料分为多音字、数字、符号三大类分别建设。
完备的测试用例是评测TTS前端准确性的基础,多音字语料建设流程如下:
根据北京理工大学的研究,现代汉语词典中共查到1036个多音字,其中有688个多音字以单字词的形式在人民日报语料中至少出现过一次。AI评测实验室目前已建立的多音词测试语料共覆盖469个多音字的791种读音,覆盖包含12760个词组的语料120w句。
合成语音后,通过听语音来判断发音正确下的效率太低,实际评测过程中可直接对前端的发音预测结果进行校验,测试语料通过TTS前端,输出每个字的读音和音调,对比实际输出与期望输出判断对错。
注意TTS输出拼音时已经做过变调调整,测试时可以专门打包一个不变调的版本或者对输出的拼音做一次变调。评测形式如下:
评测进度应该按照第一轮摸底测试、多轮回归测试、错误率高的多音字专项测试、生僻字专项测试的顺序进行,不断挖掘badcase,逐步提高TTS的多音字发音准确性。
符号类语料的建设需要考虑标点符号、单位、英文夹杂等情况,我们整理了39个可能发音的重点关注符号(:-~%)。建立语料时从文本集搜寻包含重点符号、单位、英文夹杂、其他符号的语料,分别进行评测。
重点符号类和单位类:测试语料通过TTS前端工具,输出归一化结果,建立众测标准,人工标注输出结果是否符合预期,形式如下:
英文夹杂类:这类语料只通过前端输出无法准确判断对错,需要合成语音后,听音判断是否自然切换,发音准确。
其他符号:剩下的这类符号如颜文字、小语种符号大概率不参与发音,而这类爬取得到的语料数量又最多,实际测试时抽样了部分,检查TTS是否能正常跳过此类符号不发音。
数字类语料需覆盖电话、QQ、分数小数百分数、型号数字等不同case,实际建设这部分语料时比较暴力,凡文本集中包含数字的句子均拿来做测试用例,优于数字和符号常一起出现,为避免重复标注,一个句子不同时加入数字和符号的测试语料。
评测方法
数字部分的评测方法与符号类似,为加快标注速度直接对前端归一化输出做判断,而不是对测试语料进行标注后再与前端输出结果做比较,形式如下:
MOS常见于各类TTS的PR文或论文中,被用于评测TTS的整体得分。因为是主观评测,MOS在不同人群、不同时间、不同测试语料下结果波动较大,在TTS产品不断迭代中,通过传统的MOS评测很难反映新旧模型差异、当前模型与竞品的差异。因此我们将MOS评测与两两比较法相结合,并引入上标锚定打分标准,使结果相对稳定。
前端的评测通过发音准确、韵律准确等来评测,MOS评测应该专注于整体自然度,因此准备测试语料的时候尽量避开了多音字、符号、数字语料,从各领域和TTS实际应用场景摘选常规文本作为测试语料。为避免听音人疲惫,语料数量不能太多,需要控制评测时间。
当前TTS得分大都高于4分,因此我们在传统MOS五档分值中加入了4.5分档,打分及描述如下:
级别 | MOS值 | 描述 |
---|---|---|
优 | 5.0 | 非常自然。语音达到了广播级水平,很难区分合成语音和广播语音的区别,听起来非常相似。从整体上来说语音清晰流畅,声音悦耳动听,非常容易理解,听音人非常乐意接受。 |
4.5 | 自然,听起来完整没有明显不正常的韵律起伏,比较清晰流畅,比较容易理解,达到了人们普通对话的质量,听音人愿意接受。 | |
4.0 | 还可以。没有出现明显的分词错误和严重的语言韵律错误,有很少的一两个音节不太清楚,听音人可以没有困难的理解语音的内容,听音人多数认为可以接受。 | |
良 | 3.5 | 不太自然。语音还算流畅,语音中的错误比较少,偶尔有几个音节不太清楚,韵律起伏比较正常,错误比较少,多数听音人勉强可以接受。 |
中 | 3.0 | 可接受。语音不太流畅,有比较容易察觉的语言错误,有一些不太正常韵律起伏,一般情况下可以努力理解语音的内容,不太愿意接受。 |
差 | 2.0 | 比较差。语音不流畅,听起来只是把单独的音节简单的堆砌到一起,没有正常的韵律起伏,有一些词不是太清晰,难于理解,整体上听音人可以听懂一些内容,但是不能接受。 |
劣 | 1.0 | 明显的是机器音。很不清楚,语音无流畅可言,只能听懂只言片语,基本上无法理解,完全不能接受。 |
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。