语音质量和语音质量的测量

来源:互联网 发布:php中观察者模式 编辑:程序博客网 时间:2024/04/28 11:18

语音质量和语音质量的测量

 

前言

声音是日常生活中最常见的信息传递方式,人们通过声音彼此交流联系,人的声音的频率范围是20Hz到20KHz,我们通常说话时的频率大部分都集中在300—3300Hz的范围内。早期的电话采用炭精麦克风、电池和磁性耳机组成,人的声波通过空气压迫炭精电阻器的膜片,可以使炭精的电阻发生变化,使得流过炭精的电流发生变化,这样就把声音信号转换为强弱不同的电流信号,强弱不同的电流通过电话线到达对端,耳机接收到大小不同的电流,引起耳机膜片进行不同频率的震动,这种震动通过空气反馈到人耳。这也是我们平常使用的普通电话的工作原理。随着IP无处不在,越来越多的话音以IP为承载,VOIP不再是仅仅为了通过广域IP链路承载来节省长途通话费,它现已发展成可以提供更多更丰富的话音业务,成为运营商的获利方式,企业降低通讯成本与增强协同工作的工具。但是包交换网络与生俱来的特点决定了VOIP的话音质量面临比PSTN更多的问题,本文简要介绍了在VOIP网络中话音质量的定义和测量。下文中所提及的语音质量均是指在IP网络中的语音质量。

1 语音质量

语音质量对于大多数情况来说是一个主观因素,对于清晰、低时延、低抖动的话音我们认为其质量是可以接受的。比如我们通常的对外测试,请客户听一听话音的质量,客户的评价就是语音质量的主观评价。当然ITU也有可以量化的语音质量评判标准,这在后文中会有说明。无论是主观的评判还是客观的量化的指标,清晰、低时延、低抖动都是高质量话音的保证。那么为了得到清晰、低时延、低抖动的话音,我们如何从设备侧和网络侧来保证上述的要素呢?那我们先看看影响语音质量的因素有哪些?

1.1 影响语音质量的因素

1.1.1 时延

什么是时延(Delay)?时延很好理解,就是我说话你听见的这个时间段。对于VOIP网络可以认为是端到端包传递的时间。如果大家以前用卫星线路打过电话或前些年的免费PC-TO-PHONE的VOIP国际长途电话,大家会切身感觉到时延对我们通话的影响。ITU G.114规范建议,在传输语音流量时,单向语音包端到端延迟要低于150ms(对于国际长途呼叫,特别是卫星传输时,可接受的单向延迟为300ms。如果超过300ms则通话的质量会变的让人不能忍受。过多的包延迟可以引起通话声音不清晰、不连贯或破碎。例如,当通话的一方不能及时接收到期望的回复时,说话者可能会重复所说的话,这样会与远端延迟的回复碰撞,导致重复。大的时延也往往说明承载网络的某个地方发生了拥塞,队列中的报文等待时间过长,拥塞不仅仅是增加了包的时延,而很可能导致部分包被丢弃,这时听者会感觉到声音会发生异变、破碎。大多数用户察觉不到小于100毫秒的延迟,当延迟在100毫秒和300毫秒之间时,说话者可以察觉到对方回复的轻微停顿。这种停顿可以影响到通话双方的交流。超过300毫秒,延迟就会很明显,用户开始互相等待对方的回复,通话过程变成类似对讲机式的模式。而且较长的时延也会将回声问题的影响放大。

时延的产生有多种因素,下面列出了主要的时延源:

编码的处理:模拟形式的声音信号在CODEC被采样和量化为PCM信号,DSP对PCM信号进行压缩处理所产生的时延为编码处理时延。 这种时延产生在设备侧,如果设备的编码器固定,则编码时延也固定。

各编码方式时延:

编码技术

比特率(K bps)

MOS值

编码时延(ms)

G.711

64

4.4

0.75

G.723.1(5.3K)

5.3

3.6

30

G.723.1(6.3K)

6.3

3.4

30

G.729

8

4.0

10

包化(Packetization):包化就是将编码器输出的语音净荷放置到RTP/UDP/IP包中的过程,相对于编码的时延,包化的时延很小,因为包化的过程没有复杂的运算,仅仅是增加包头和计算校验和,而编码则有大量的数学运算。

队列(Queuing):语音的净荷放置到IP包中后,要被设备转发到目的地,这些包会在设备的出接口队列中,等待被调度。转发设备不同的队列机制对IP包的处理有很大不同。可以通过合理的配置来减少语音包在队列中等待的时间,进而减少队列时延。

串行化(Serialization):接口队列中的语音IP包,被送离设备前会放置到接口的物理队列当中,如果物理队列中有一个较大分组,还在发送状态,则语音分组必须等待这个较大的分组发送完毕后才能发送,这个等待的时间就是串行化时延。比如一个时钟速率为64kbps的链路要发送一个1600Bytes大小的FTP分组,则串行化产生的时延会达到200ms(1600×8/64000×1000)。这对于后面等待的语音包来说已经是很大的时延了。

广域网时延:对于ISP提供的广域网链路,对于用户来说只是一个黑盒子,除了上述的编码时延外,构成广域网链路的路由器交换机都会产生包化、队列、串行化的时延。而且到达同一目的的路径不同,其每个包的时延也不同,而这些时延对于用户来说是不可控的,当然我们在租用ISP的线路时,可以要求ISP提供符合时延要求的线路。

1.1.2 抖动

变化的时延被称作抖动(Jitter),抖动大多起源于网络中的队列或缓冲,尤其是在低速链路时。而且抖动的产生是随机的,比如你无法预测在语音包前的数据包的大小,既便你使用LLQ(低延迟队列),如果大数据包正在传输过程中,当语音分组到达时,它还是要等待数据分组被发送完。而在低速的链路中,语音数据混传时,抖动是不可避免的。通常使用LFI(链路分段和交叉)将大包拆小,来减少大包对时延的影响。

1.1.3 丢包率

丢包(Packet Loss)是影响语音质量的重要的因素,当丢包超过一定的比率时,语音质量会变的不可接收,听者会听到,含混、爆破似的声音,在VOIP通话时,接收方的编解码器能够接受一定程度的丢包律,一旦检测到有分组丢失,接收方的编码器就会对丢失时间内的波形进行推算。绝大多数的编解码器都能接受随机5%的丢包率,而不会明显影响通话的质量。这里说随机是因为如果这5%的包是连续丢失的,也会对语音质量造成很大问题。

1.1.4 回声

回声(Echo)一般分为说话者的回声和倾听者的回声。说话者的回声就是在通话过程中,说话者听到了自己的声音。倾听者的回声就是倾听者重复听到说话者的声音。回声的产生的原因一般分为两种,一种是电信号回声,一种是声学回声。电信号回声产生于电话网络的模拟部分。hybrid是4线变2线的混合器,大部分的电信号回声是由于hybrid的阻抗不匹配引起。声学回声是指,声音从扩音器(如耳机、听筒)扩散到扬声器(话筒、麦克)。下图说明了hybrid的作用。

在大多数的PSTN环境中,回声是存在的,但是回声的产生时间是如此接近正在讲话的人的声音,以至于给人的感觉,这只是简单适度的侧音,就像我们平常说话时,我们通过颚骨听到自己的声音,这样的侧音对我们来说是习惯的。但当回声通过网络以过大的延迟返回时,回声不利的影响就会被说话者察觉,语音质量就变得有问题了。注意回声虽然只能在网络的模拟部分产生,但是IP网络累积的延迟能够导致回声从合适的侧音变成令人困扰的语音质量问题。为了消除回声干扰,可以在尽可能靠近回声源的地方部署被称为回声抑制器的装置。回音抑制( Echo Cancellation Algorithm)其定义由ITU-T G.168给出。回音抑制的功能是用相位补偿的方法抵消串入远端发送信号中的远端接收信号。其目标是消除时延超过25毫秒的回声,因为当回音超过25毫秒时,说话方就能够听到反射回来、滞后的自己的声音。

1.1.5 沿切割

丢失说话人的第一个或最后一个音节或单词的现象叫沿切割(Clipping),沿切割由延迟和IP网络中的静音抑制机制的使用而引起。人们为了更有效地使用网络带宽,会经常使用静音检测机制,例如静音检测(VAD)或者舒适噪音生成器(CNG)。静音检测器(VAD = Voice Activation Detector) 该器件在信号电平低于某一特定的门限值时,将限制数据包的传输,此时其提供空闲(Idle)或者“舒适噪音”(Comfort Noise) 以避免电话用户感到“断线”(Dead Air)。网关中相应部件对从静音~讲话和从讲话~静音之间的过渡状态的响应速度如果过慢,就会丢失开始或最后的音节。VAD是产生“前沿切割”(“Leading Edge Clipping”)和 “后沿切割”(“Trailing Edge Clipping”)的主要因素。有时这对于商务通话来说是不可接收的,开始和结束时礼貌的问候如果都没有让对方听到,会给对方不好的印象。

许多影响语音质量的因素不是单一产生的,而时常常伴随出现,比如说时延,抖动,和沿切割

1.1.6 编解码

不同编解码(Codec)对语音质量的影响,下表为不同编解码的MOS值:

ITU Standard

Coding Method Name

MOS

G.711

PCM

4.4

G.723.1

H.323

3.98 to 3.5

G.726

ADCPM

4.2

G.728

CELP

4.2

G.729

ACELP

4.2

MOS值越高,代表语音质量越好,当带宽允许时,选用MOS较高的编解码可以获得较好的通话质量。

2 使用QoS机制来保障语音质量

QoS的实现需要两个前提,一是流量所经过的所有设备支持QoS机制并进行了合理的配置,二是只有在线路发生拥塞时QoS机制才起作用。线路不拥塞时,QoS是不生效的。提高语音数据的优先级,保证语音数据的带宽是保证语音质量的前提。

在VoIP网络中,为了保证语音包优先我们经常使用的QoS机制有CBQ、RTPQ,CBQ保证语音信令流的带宽和优先级,CBQ也可以保证实时的RTP流的带宽和优先级。RTPQ保证实时语音流的带宽和优先级。

在CBQ的配置中,用ACL精确的定义了数据报文的源端口号目的端口号,屏蔽掉了那些源端口号匹配但是目的端口不匹配的TCP报文,弥补了PQ的不足。同时,对于有些应用如3Com NBX的语音流使用UDP端口号从2093~2096的报文,CBQ都能够匹配上从而进入设置好的队列,不会出现某些端口不能匹配从而报文入不了队列中的情况,这也弥补了RTPQ的一些缺陷,因此也保证了语音质量。

RTPQ进行匹配时,匹配的目的端口号都是偶数,因此配置的RTPQ只对偶数的目的端口号的UDP报文生效。在有的应用中,如3Com NBX的语音流使用UDP端口号从2093~2096的报文,因此配置RTPQ的时候,会导致那些端口为2093,2095的报文不进RTP队列,得不到优先发送。既然RTPQ只对偶数的端口号匹配,奇数端口号的报文不进队列,为何大多数情况都用RTPQ保证语音业务呢?因为通常VoIP使用的呼叫信令是H.323或SIP协议,语音流使用RTP承载,其UDP端口号范围为16384~32768。然而在实际中,用到的UDP端口号是从16384开始以每4位增加,也就是说所用到的UDP端口号都是偶数(尤其16388被用到的非常多),不会出现奇数。这就是为什么做VoIP的QoS时用RTPQ保证语音质量的原因了。

当然,接口启用了qmtoken也是减小语音延迟的原因之一,qmtoken提供了一种底层队列的流量控制机制,它可以根据令牌的数量控制向底层接口队列发送的报文数量。对于语音应用,我们一般在端口上设置qmtoken1

3 语音质量的测量

语音质量测量的目的是通过主观或客观的测量方法,即通过人为的测量项或基于软硬件的测量工具,对一种或多种以上的呼叫质量类别给出一个可信的估计。

3.1 主观质量测量

随着IP电话技术的发展,人们不断寻求语音质量的测试方法,以便能规范IP电话设备的技术标准。ITU-T建议P.830描述了一种对语音的主观评定方法-MOS(Mean Opinion Score)方法。根据P.830建议的要求,特定的发话者与听话者在特定的环境下,通过收集测试者在各种不同情景下的主观感受,根据P.830的分析法则得出该语音的品质。P.830对测试的要求非常严格,所有的操作都要严格地服从操作流程,对录音系统、语音采样、语音输入级别、听者级别、不同发话者(8男、8女、8儿童,至少在16人以上)、多发话者(多人同时讲话)、差错处理、不同语音编码方式的兼容性、过失、环境噪音、音乐等等,都做出了详细严格的规定。测试者的主观感受结果也被分为很多不同的范畴,如听者感受的网络质量结果、质量降级结果、比较结果等。做出语音质量的判别标准:5:最佳 4:好(4.5~4.0 =可收费电信级) 3:中级(4.0~3.5 =可通话通信级) 2:较差(3.5~2.5=可建立连接级) 1:差。 很显然,MOS方法是一种模糊的评估方法,但是它能体现出使用者对IP语音质量的最直观的判断。

3.2 客观质量测量

MOS方法是一种模糊的评估方法,其测试结果很难对VoIP系统的改进和不同VoIP设备之间性能的比较,做出有实际意义的判别。因此,有人提出借用ITU-T 在P.861 中建议的 PSQM (Perceptual Speech Quality Measurement, ITU-T P.861)方法,用来作为客观质量度量的评估。

ITU开发了P.861(PSQM)和更新的P.862(PESQ),用成本更低的客观测量法来作为主观收听质量测量的补充。采用这些测量技术,可以通过比较送入系统中的一个原始参考文件与输出的受损文件之间的差异,得到由传输系统或CODEC引入的失真。这些技术的初衷是为了CODEC的实验室测量,但在VoIP网络测量中也得到了广泛使用。

P.861和P.862算法将参考信号和受损信号都分成较短的交迭样本块,计算每一块的傅立叶变换系数,并比较他们的系数。P.862算法最后给出一个PESQ得分,该得分与MOS的范围相近,但它并不是MOS的准确映射。新的PESQ-LQ得分更接近收听质量MOS。这些算法都同时要求访问源文件和输出文件才能测量后者相对于前者的失真。

 PESQ(Perceptual Evaluation of Speech Quality ,ITU-T P.862)是评价各类端对端网络条件和语音编码与解码的较新的标准。PESQ可以根据一些感知标准来客观地评价语音信号的质量,从而提供可以完全量化的语音质量衡量方法,而这些衡量标准又是与人类对语音质量的感受完全吻合的。PESQ由荷兰的KPN公司和英国电信公司协作开发的,比其前身PSQM有了较大的进展。

2004年,ITU制定了P.563标准,这是一个单端客观测量算法,能够只对接收到的音频流进行操作。P.563测量得到的MOS得分比P.862更广,要使结果更稳定,必须多次测量并对结果进行平均。这一方法并不适合测量个别呼叫,但在测量多个呼叫的服务质量时,能够得到可信的测量结果。

3.3 语音测试仪器

常用的语音质量测试仪器有Agilent公司的Telgra VQT,VQT提供FXO和E&M接口可以很方便的接入到被测设备,VQT可以完成End-to-End delay、Voice Signal Clarity 、Voice Activity Detector measurement的测试,可以提供标准的PSQM测量。下图是VQT的Application的应用界面,测试过程中的数据可以实时的显示在图形化的界面。


Abacus 5000是Spirent公司的语音测试产品,其接口类型丰富、容量大。它可以模拟用户侧、交换侧以及模拟话音交换。主要是用于语音产品的性能测试,同时可以提供多种标准的语音质量测试,比如PSQM、PSQM+、PESQ等。下面的两个典型的场景可以用来测试FXS口和EIVI接口设备的语音质量。具体的测试方法可以参考文献《Abacus 5000配置初步》(张宇翔)。

下图是对于单设备环境下使用Abacus5000进行测试的环境。Abacus5000使用ECG来模拟普通电话,向被测试的语音网关发起呼叫,和被测试语音网关上pots实体匹配后,连通和Abacus5000连接的另外8路模拟语音用户线,完成一个通话的过程。

下图是使用PCG卡来模拟中继线动作,用Abacus的一块PCG3卡上的两个CE1接口,分别模拟30路R2信令中继呼出和30路R2信令中继呼入。呼叫由入中继进入被测试设备,从另外一条中继线呼出到Abacus,从而形成一个中继呼叫的环路。

原创粉丝点击