主页(http://www.pttcn.net):有信:如何做好VoIP语音质量评测? 1 背景介绍 VoIP(Voice over IP)即IP电话,是将话音编码、压缩转换成数据包,在IP网络中进行传输的技术。语音通信因其特有的可靠性和高QoS(Quality of Service)一直被大家广发使用。但现在的人们通过手机通话时已经不仅仅满足于信息的获取,而更多地关注语音质量如何,是否能高保真地还原声音的效果,并表达最真实的情感。 有信以实时语音通话为核心,经过几年的深耕细作,用户总注册量已经超1.2亿,日活跃用户达600万。能够获得这么多的用户与有信电话高水平的语音通话质量密不可分,语音质量也是有信电话与传统电话公司竞争的一项关键因素。 业界各方为了提高VoIP语音质量各显其能,语音质量的评测方案层出不穷,但都以主观评测为主流。我们在对有信VoIP网络电话做评测时,会从抗时延、抗丢包、噪声抑制以及音量大小等多种维度去考虑,本文主要介绍了客观评测语音质量的一些方法和案例。 2 测试环境搭建 2.1 测试设备 测试设备:PC +测试手机2部+音频线2条+耳机麦克风二合一转接线。 以上设备按照图2-1方式连接后,在 PC 上播放音频,声音从 PC 的扬声器通过音频线和转接线传入到主叫A的麦克里,然后主叫A中的通话软件采集声音并经过网络传到被叫B,之后声音从被叫B通过音频线连接PC的麦克风传入到PC上,在PC上进行音频录制操作。这里需要注意的是,由于主叫和被叫都有麦克风权限,为了保证测试过程中数据的准确性,不受外界声音的影响,连接电脑mic端的被叫B一定要保持静音,主叫A一定要插出耳机模式。
图2-1 2.2 网络环境模拟 VoIP决定了对网络的强依赖性,因此需要评定在不同网络状态下的语音质量的各项指标。这里推荐使用网络模拟软件 Network Emulator Toolkit 模拟网络丢包、抖动等网络异常情况。在电脑上安装网络模拟软件,然后将电脑网络作为 WiFi 热点(可以使用 360 随身 wifi 等工具实现),测试机连接热点 wifi,通过设置不同的参数实现丢包和网络抖动等网络异常的情况。 网络丢包设置方法:可以通过设置 Periodic Loss (周期性丢包)参数实现(如设置参数为 10,表示每 10 个包丢一个包,即丢包率为 10%),也可以设置Random Loss(随机丢包)参数实现(Random Loss 中的数值若填写0.05,则表示随机丢包率为5%),一般随机丢包更贴近真实的网络情况。 网络抖动设置方法:可以通过设置变化的延时 Linear 参数来实现,Linear 设置项表示在设置时间内 period,延时会从设置的最小值 Min 逐渐变化到设置的最大值 Max (如设置 min 为 0,max 为 100,表示抖动幅度为 100ms),也可以设置Normal Distributed 的参数来模拟。 2.3 音频文件以及分析工具的选择 分析音频的软件有很多,本文采用Cool Edit Pro,方便易用。将音频文件在Cool Edit Pro中打开,可以看到音频是否满足测试条件,例如,在音质测试时,要保证波形适中,振幅分布均匀。 由于 PESQ 算法的特殊性,对声音源文件的选择有一定的要求。 1. 源声音文件的长度在6s~8s之间,过长或过短都会影响计算结果。 2. 静音区和非静音区的比例要适中,尽量保正[非静音:静音=6:4 ]或 [非静音:静音=5:5 ]或[非静音:静音=4:6 ]。使用 PESQ 计算 MOS 分时,要用纯净的不带噪声的文件。 3. 使用 Cool Edit Pro 录音时,应保证输出的波形适中,可通过调节音频播放音量和 PC 录音音量来控制。 3 测试指标以及测试方法 3.1 音质(QV) 音质(Quality of Voice)是指经传输、处理后 音频信号的保真度,是对音量音高、音调、音色等一些列影响因素的综合评价。本文所用的音质的测试方法,是利用python的音频插件pyAudio来输入源文件以及录制输出音频,通过国际通用的PESQ(Perceptual evaluation of speech quality)算法来对比两个输入和输出的音频,最终计算出MOS(Mean Opinion Score)值。以上整个过程都是通过脚本完成,避免了人工参与引入的误差。如1.1中的示意图连接好设备后,两台手机通过AppA进行通话,通话过程中执行脚本,脚本中一些变量的值,例如执行次数、采样率、Delay时长等都可以根据测试对象的实际情况进行灵活调整,以尽量找到测试对象的天花板。 3.2 语音时延(DV) 语音时延(Delay of Voice),两个移动终端进行通话过程中,主观感受的时延是指输出音频的时间减去输入音频的时间,即被叫听到声音的时间减去主叫发出声音的时间。DV过大,比较容易出现响应迟缓、或者双讲的情况,非常影响通话体验。本文中对DV的测试方法是,如 1.1 中的示意图连接好设备后,两台手机通过AppA进行通话,通过脚本来计算音频输入的时间和录制音频的输出时间,这个过程相比主观测试,排除了人耳的差异性带来的误差,使得测试结果更精准。通过脚本跑出的时延数据,取 50~100组延时数据算平均值即可。 3.3 噪声抑制(NS) 大多数情况下,VoIP通信系统的输入端不可能接受到纯净的原始语音,只能接受到被背景噪声干扰后的含噪语音。背景噪声极大地干扰了语音通信的质量,降低了语音的清晰度和可懂性。噪声抑制(Noise Suppression)的主要目的在于从含噪语音中提取尽可能纯净的原始语音。但是,过度的NS可能会产生降低语音音量等级、处理后的语音中的噪声不均匀,导致体验差等的负面效应。 如果是分析同一个app不同版本的降噪效果,可以使用语音音量和噪声音量的Average RMS Power差值进行比对,单位是dB,一般为正数(语音音量大于噪声音量),差值越大,NS效果越好。但是,如果要分析不同app的NS效果,PESQ 差距大时,则认为 PESQ 低的 NS 对音质的损伤高,NS 效果差(但有噪声的文件计算出来的PESQ的值并不准确,因此不建议使用该方法),我们要同时考虑到NS的负面影响。因此,当PESQ 差距较小时, 我们定义 d1= RMS(产品 1 的非噪声)-RMS(产品 2 的非噪声) d2= RMS(产品 1 的噪声)-RMS(产品 2 的噪声) 如果: d1 > d2,则产品1的NS优于产品2; d1 = d2,则产品1、2的NS效果基本一致; d1 < d2,则产品1的NS差于产品2。 3.4 音量大小(VV) 音量大小(Volume of Voice)即音频的强度和幅度。不同的群体对音量大小的适应度存在一定的差异性。因此衡量音量的大小要从不同的维度来考量。本文中音量大小的评定是在不同播放音量条件下,播放同一个源声音文件,同时录制输出的音频,分析不同文件的Average RMS Power,单位是dB,为负数,绝对值越大,音量越小。其中,不同的播放音量大小的定义为: 小音量——30%; 正常音量——50%; 大音量——70%。 4 测试结果 4.1 抗丢包性能 以5%为步长,从无丢包率逐级递增到30%的随机丢包率,分别评测AppA和AppB在不同丢包率条件下的语音时延和MOS分。测试结果如下:
从上图可以看出,随着丢包率的递增,AppA和AppB的MOS分均没有明显的变化趋势,整体的MOS分,AppA高于AppB。随着丢包率的递增,AppA和AppB的语音时延均表现出先增加后下降的趋势(由于测试时网络状态不同,导致数据结果有一定的差异性),整体的语音时延,AppA的大于AppB。 4.2 抗时延性能 以50ms为步长,从0ms的网络时延逐级递增至400ms,分别评测AppA和AppB在不同网络时延条件下的语音时延和MOS分。测试结果如下:
从上图可以看出,随着网络时延的增加,AppA的MOS分整体处于轻微的下降趋势,下降幅度不明显,AppB整体趋势较平稳,MOS分变化不大。在语音时延方面,随着网络时延的增加,AppA的语音时延整体处于增加趋势,且增加幅度较大,无网络时延时的语音时延为400.92ms,当网络时延400ms时的语音时延为489.44ms;AppB的语音时延随着网络时延的增加变化不大。整体看,不同网络时延下,AppA的语音时延高于AppB。 4.3 通话过程中语音时延的变化情况分析 通过分析不同网络时延下的语音时延数据流,观察不同的网络时延条件下,从通话开始到通话结束整个过程中,不同app的语音时延变化情况。
注:上图中横坐标轴表示的是通话20分钟左右的语音时延数据,每通通话取100组数据来分析。粗略估计第10组数据大概在通话5-10分钟左右。 从上图可以看出,网络时延较大的条件下,AppA在通话开始的几分钟,语音时延一直处于较高的状态,大概通话10分钟左右,语音时延数据逐渐趋于平稳,并可维持平稳状态一直到通话结束,因此可以推测,AppA在通话开始时质量不是很稳定,但是随着通话时长的增加,会逐步进入一个较好的通话质量状态。 从AppB的数据上来看,无论网络时延增加到多少,AppB的语音时延从通话开始就一直处于一个平稳状态,但是在通话过程中,会有偶尔的语音时延波动,可以推测,AppB的整体通话质量较平稳,但中间偶尔会有质量不佳的情况。 4.4 噪声抑制 使用语音音量(图4-1)和噪声音量(图4-2)的Average RMS Power差值进行比对,单位是dB,一般为正数(语音音量大于噪声音量),差值越大,NS效果越好。
图4-1 截取的200ms语音(非噪声)部分音频
图4-2 截取的200ms噪声部分音频 在竞品分析时,可用不同竞品之间的非噪音差减去噪音差,若差值大于0,则可以认为噪声抑制效果较好。 注:我们定义播放音量的级别分别为:小音量=30%,正常音量=50%,大音量=70%。
从上表可以看出,无论是小音量、正常音量还是大音量的条件下,AppA的非噪声减去噪声的值均大于AppB。音量越大,差值越大。用AppA的音量减去AppB的音量得到音量差,用AppA的噪声减去AppB的噪声得到噪音差,最后用音量差-噪音差,得出的值,见上表。在小音量、正常音量和大音量的条件下,所有的差值均大于0,可以认为AppA的噪声抑制效果较好。 从上图看出,同一个源声音文件(噪声RMS均值为-32.54dB,非噪声RMS均值为-23.87dB)通过AppA输出的音频,小音量时,噪声能量减少1.21dB,非噪声基本保持不变,正常音量时,噪声能量减少2.18 dB,非噪声减少3.37 dB;大音量时,噪声减少3.97 dB,非噪声减少6.1 dB。可以看出,对于AppA,播放音量越大,噪声抑制过程所减弱的音量越多。 通过AppB输出的音频,小音量时,噪声能量减少7.2dB,非噪声减少5.87 dB,正常音量时,噪声能量减少9.54 dB,非噪声减少8.23 dB,大音量时,噪声能量减少9.21 dB,非噪声能量减少7.69 dB。可以看出,对于AppB,不同音量下输出的噪声和非噪声能量减少相当,无明显差别。 4.5 音量 注:源声音文件的Average RMS Power为:-18.69dB。见图4-3.
图4-3 输入的源音频文件 输出的声音文件的音量大小如下表所示:
从上图可以看出,不同的播放音量下,AppB的输出音量均大于AppA。其中,小音量时,AppB比AppA大4.1dB,正常音量时,差别不大,大播放音量时,AppB比AppA大2.0dB。 从变化趋势上可以看出,AppA的播放音量越大,输出的音量也越大,AppB在小音量和正常音量时,输出的音量无明显差别,但是在大音量时,输出的音量相应增加2.19dB。 5 小结 影响语音质量的因素是多维度的,主要包括时延、丢包、抖动,这也预示着VoIP对网络的强依赖性。语音质量的好坏是影响用户体验的直接因素,因此对VoIP语音质量进行客观有效的分析和测量是十分重要的。本文介绍了利用脚本和工具分析时延、音质、音量、降噪等不同指标的客观评测方法,并且把具体的案例结果呈现出来以供探讨。 (中国集群通信网 | 责任编辑:李俊勇) |