团员分享_语音合成的效果指标和性能指标_@HeNg氏_20200313
2020年6月15日 更新
开启更多功能,提升办公效能

前言:本文是团员HeNg氏的第2篇输出,欢迎有更多的团员们也来分享你的AI干货~


随着语音合成技术的发展,语音合成(TTS)已经应用于生活中的各个场景,实现了语音合成技术的应用落地。例如,在高铁,机场的语音播报工作,医院的叫号业务,以及现在比较火热的语音交互产品。语音合成的各种应用说明它不仅仅是一项技术,更是一款产品,作为产品,可以用哪些指标来衡量这款产品呢?


下面将介绍两种衡量TTS产品的指标,效果指标和性能指标。


效果指标


1、MOS值

 

       目前关于TTS合成效果的评判标准,行业内一致认可的是mos值测试,找一些业内专家,对合成的音频效果进行打分,分值在1-5分之间,通过平均得到最后的分数,这就是mos值测试。很显然这是一个主观的评分,没有具体的评分标准,这和个人对音色的喜好,对合成音频内容场景的掌握情况,以及对语音合成的了解程度是强相关的,所以算是仁者见仁,智者见智的测试方式。


由于TTS合成效果的评判主观性,导致在一些项目的验收中,不能明确出具体的验收标准,例如在定制音库的项目中,客户想做一个独有的定制音库,最后验收肯定是客户对合成音频效果满意,则成功验收,这是一个很主观的标准,怎么样才算满意呢?对于TTS厂商而言,这是不公平的。所以需要找一些可以量化的标准使得项目可以更好的验收,双方也不会因为合成效果出分歧。这里推荐一条验收标准,可以将语音合成效果量化,分别对原始录音和合成音频进行盲测打分(mos值测试),合成音频的mos值能达到原始录音的85%(数值可以根据项目情况来定)以上,就可验收,这样就可以把验收标准确定下来,且进行了量化。当然打分团队可以是客户和TTS厂商的人,也可以请第三方的人来打分,确保公平。


虽然mos值是一个比较主观的测试方式,但也有一些可评判的标准。例如在合成的音频中,多音字的读法,当前场景下数字的播报方式,英语的播报方式,以及在韵律方面,词语是否连在一起播报,应该重读的地方是否有重读,停顿的地方是否合理,音色是否符合应用于当前的这个场景,都可以在打分的时候做为得分失分的依据。


分享一个简单的评分标准,可作为参考依据。


 


2、ABX测评

 

合成效果对比性测试,选择相同的文本以及相同场景下的音色,用不同的TTS系统合成来对比哪个的合成效果较好,也是人为的主观判断,但是具有一定的对比性,哪一个TTS更适合当前的场景,以及合成的效果更好。

 

性能指标


1、实时率


在语音合成中,合成方式分为非流式合成和流失合成,非流失合成指的是一次性传入文本,一次性返回合成的文本音频;流式合成指的是文本传输给TTS时,TTS会分段传回合成的音频,这样可以减少语音合成的等待时间,在播报的同时也在合成,不用等到整段音频合成完再进行播报,所以对于语音合成时间的一个指标就是实时率。实时率等于文字合成所需时长除以文字合成的音频总时长,下面是实时率的计算公式:

为什么讲实时率会说到非流失合成和流式合成,因为在流式合成场景中,开始合成的时候也就已经开始播报了,音频合成完成也就播报完成了,不会产生等待的过程,这种过程主要用于语音交互的场景,智能机器人收到语音信号之后,马上就可以给予答复,不会让用户等太久。所以为了确保用户的最佳体验,要求“文字合成所需时长”≤“文字合成出的音频时长”,也就是实时率要小于等于1 。

2、首包响应时间

在流式合成中,分段合成的音频会传输给客户端或者播放系统,在合成首段音频时,也会耗费时间,这个耗时称为“首包响应时间”。为什么会统计这个时间呢,因为在语音交互中,根据项目经验以及人的容忍程度,当用户说完话时,在1200ms之内,机器人就要开始播报回复,这样就不会感觉有空白时间或者停顿点,如果时间超过1200ms,明显感觉会有一个等待的时间,用户体验不佳,性子急的用户可能就终止了聊天。1200ms的时间不只是TTS语音合成的首包时间,还有ASR(语音识别)和NLU(自然语言理解)所消耗的时间,所以TTS首包响应时间要控制在500ms以内,确保给ASR,NLU留有更多的时间。


3、并发数

人工智能的发展主要有三个方面,分别为算法,算力,数据,其实讲的性能指标相当于是算力的部分,目前承载算力的服务器有CPU服务器和GPU服务器。前面说到实时率的指标是要小于等于1,那如果实时率远小于1,是不是会对服务器造成浪费呢,因为只要实时率小于等于1,就可以满足用户的需求,让用户体验良好。所以上面说的实时率是针对CPU服务器单核单线程时,或者GPU单卡单线程时,那实时率的公式可以为:

为了资源的最大利用化,我们只需确保实时率接近1,或者等于1就行,没必要远小于1,所以当在单核单线程实时率远小于1时,则可以实现一核二线,一核三线的线程数,使得实时率为1,这个一核“二线”,“三线”,这个“几线”说的就是几并发数,准确说是单核并发数。那这个并发数怎计算呢,举个例子,如果单核单线程的并发数是0.1,则一核10线程的并发就是1,也是满足需求的,就可以按照这个并发数给客户提供。所以并发数的计算公式如下:

所以当用户需要200线程的语音合成并发数使,按0.1的实时率,一核十线,只需要20核的cpu服务器,则可以跟客户要求24核的cpu服务器即可满足客户的需求,也为客户节省了成本。

再说一下这个线程和并发的概念,线程,并发算是同一个概念,例如200线并发,指的是需要同时支持200线的语音合成,200线是同时合成音频的,合成内容可以相同也可以不同。

4、合成100个字需要多少时间(1s能合成多少个字)


有些客户对于实时率,响应时间这些概念是比较模糊的,他会问你们的TTS合成100个字需要多少时间或者1s能合成多少个字,所以这个时候为了方便和客户沟通,我们需要知道合成100个字TTS消耗的时间。这个数据是可以大概算出来的,当然也可以直接让测试测出一百字消耗的时间。这里主要讲一下计算的方法。


按照正常的播报速度,1秒可以播报4个字左右,我们就按照四个字计算,100个字的音频,音频时长大概就是25s(100除以4),假如实时率为0.1,再根据当前的实时率计算公式,算出合成时间为2.5s,也可以计算出1s合成的字数(100/2.5)为40个字。


总结:

简单介绍了语音合成产品会涉及到的一些参数指标,还有一些测试时需要了解的指标数据,例如cpu占用,内存占用,DPS(单位时间合成的音频总时长),TPS(单位时间合成的音频任务数)以及TP99,感兴趣的朋友可以查询研究一下,这些数据也主要用于项目poc的测试中,或者TTS产品整体的测试中,可以算是对于TTS产品的一个整体的了解。


附:团员HeNg氏的文章汇总:


-END-


以上内容,来自饭团“AI产品经理大本营”,点击这里可关注:http://fantuan.guokr.net/groups/219/ (如果遇到支付问题,请先关注饭团的官方微信服务号“fantuan-app”)


---------------------

作者:黄钊hanniman,图灵机器人-人才战略官,前腾讯产品经理,7年AI实战经验,10年互联网背景,微信公众号/知乎/在行ID“hanniman”,饭团“AI产品经理大本营”,分享人工智能相关原创干货,200页PPT《人工智能产品经理的新起点》被业内广泛好评,下载量1万+。