基于机顶盒VoIP语音解码模块的设计与验证
2012-09-12高健
高健
(1 重庆邮电大学 重庆 400065;2 重庆四联微电子有限公司 重庆 401121)
0 引言
VoIP是Voice Over Internet Protocol的缩写,是建立在IP技术上的分组化,数字化传输技术[1],其基本原理如图1所示。近年来,VoIP以其低带宽和低廉的通信费得到了广泛应用。随着三网融合,将VoIP应用于机顶盒已成为该行业关注的热点。本文依托重庆四联微电子有限公司机顶盒VoIP项目,基于公司机顶盒硬件平台,提出了一种机顶盒VoIP解码模块软件设计方案,对机顶盒VoIP的开发实现具有重要意义。
图1 VoIP基本原理图
1 机顶盒VoIP硬件平台
图2为机顶盒硬件平台,该系统由微处理器、电源模块、音频处理模块、串口和USB接口模块、以太网口模块、数据存储模块以及系统工作状态指示模块构成[2]。其中,该微处理器采用重庆四联微电子公司自主研发的sic8008高清解码芯片。通过外接USB话机对语音信号进行采样和播放,从而完成终端VoIP功能。
图2 机顶盒硬件平台
2 基于机顶盒的VoIP软件架构
图3为基于机顶盒硬件平台在Linux系统构架的VoIP语音终端软件系统。此系统依据iLBC编解码算法、SIP信令协议、UDP、TCP/IP协议以及RTP实时传输协议等完成语音压缩编码、语音传输和解压缩解码恢复原始语音数据等功能来实现VoIP语音终端的会话功能,其VoIP语音会话过程如下。
图3 基于机顶盒的VoIP系统架构图
说话方:USB话机采集模拟语音信号→USB话机语音芯片采样量化编码成PCM信号→ sic8008芯片对信号进行压缩编码→ RTP格式打包→UDP格式打包→ IP格式打包→ Internet网络传输。
收听方:接收语音数据→去IP/UDP/RTP包头→ 将接收到的有效信号存放在sic8008芯片的硬件平台上,然后对该信号解压缩、解码还原成PCM信号 USB话机语音芯片将PCM转为模拟信号→扬声器播放。
3 VoIP解码难点——实时性
3.1 丢包
丢包率定义为在网络传输数据包时丢弃数据包的最高比率。丢包率应小于5%,当丢包率超过10%时将极大影响服务质量。丢包的原因:线路误码或网络路由故障;传输时延过长或网络拥塞导致分组被丢弃。
3.2 时延
时延是接收到的数据包与发送数据包的时间差。时延又分为算法时延、处理时延、网络传输时延和抖动缓冲时延。
3.3 抖动
抖动也叫时延变化,是指由于各种延时的变化导致网络中的数据分组到达速率的变化。如果网络抖动比较严重,那么有的话音包会因迟到而被丢弃,会产生话音的断续及部分失真,严重影响音质。延迟的变化应该在10%以内为好。
抖动原因:排队时延;可变的分组大小;中间链路和路由器上的相对负载。
3.4 包乱序
当网络较差的时候,语音包在传输过程中很容易出现乱序现象,从而影响接收端播放。但是根据每个语音包的时间戳,可以方便地判断出语音包的发送顺序。通常采用的解决方法是在接收端使用抖动缓存,对失序包进行调整,从而重现发端顺序。
4 VoIP语音解码端设计与验证
针对影响解码端实时性因素,本设计从语音编解码选取、解码端缓存技术和终端采用网络控制策略3个角度确定了解码端具体设计方案,并通过VoIP系统通话测试验证了方案可行性。
4.1 语音编解码的选取
好的语音编解码应具有低码率、低带宽、低时延和适当算法复杂度。iLBC是一种开源编解码算法,以窄带语音为设计基础,具有8kHz的采样率,它对每个数据包的处理都能够独立于其它数据包来进行,是数据包通信的理想选择。如表1可知,iLBC的MOS及编解码延时优于目前流行的G.729、G.723.1。
表1 语音编解码性能比较
另外,iLBC对丢包进行了特有处理,即便在丢包率相当高的网络环境下,仍可获得较清晰的语音效果。如图4给出了不同网络丢包环境下,iLBC,G.729A和G.723.1编解码算法的语音质量性能仿真。该仿真以网上实际IP包丢失的观察统计为基础,模拟了(0—15)%丢包率。由图观察可以发现,当没有丢包时,MOS值分别为3.981,3.880,3.695,由此可以看出,iLBC编解码器的语音质量和G.729A及G.723.1相比相差不大。然而。当丢包严重时,iLBC比G.729A和G.723.1的语音质量明显好。
图4 丢包率为(0-15)%时iLBC,G.729A和G.723.1的MOS对比
iLBC编解码的出现,改善了在包交换的IP网络中,传输语音所遇到的网络丢包严重影响通话质量等实际问题,实现了“语音质量的飞跃”,是语音包通信的理想选择。
4.2 解码端缓存技术
本设计将在解码端采用动态确定时限和动态分配缓冲区的策略。当网络状况好的时候,网络时延和抖动都比较小,此时缓冲区可以设定为一个较小的值,以减少端到端的时延和抖动。当网络发生拥塞时,时延和抖动都比较大,此时缓冲区可以设定为一个较大的值等待迟到的那些语音分组,减少丢包率。
4.3 终端采用的网络控制策略
所谓网络控制策略是合理利用现有的各种协议和语音处理技术,综合带宽、时延和丢包率因素找到相对好的平衡点,从而提高VoIP语音通话性能指标,满足语音通话要求。具体设计方案如下。
4.3.1 采用RTP/RTCP协议[3-4]
RTP作为实时传输协议用于传输实时数据,能为实时业务提供端到端的传递服务。其功能是提供净荷类型指示(即数据类型和编码方式)、数据分组序号、数据发送时间戳和数据源指示,接收端则能根据这些信息正确地重组原始信号。
RTCP(实时传输控制协议)是RTP协议中的控制功能协议,它单独运行在底层协议上。RTP本身并不能为按顺序传送数据包提供可靠的传送机制,也不提供流量控制或者拥塞控制,它依靠RTCP提供这些服务。RTCP采用与数据包相同的分配机制,周期性地向RTP会话的参与者发送控制包,应用程序通过接收这些数据包,从中获取会话参与者的相关资料,以及网络状况、分组丢失概率等反馈信息,从而能够对服务质量进行控制或者对网络状况进行诊断,并能够对网络拥塞进行有效的控制。
4.3.2 采用Qos机制
(1) 采用静音检测技术
静音检测是数字信号处理器应用的一种静音压缩技术。大多数会话中一方说话和听对方说话的时间约各占一半,而且说话时还有停顿间隙,因此话音活动度只占40左右,而约60的时间是安静的。由于分组交换中的传输通道是统计复用的,因此,在静音时间段里可以不发送话音分组,从而进一步降低话音比特率[5]。
(2) 采用资源预留协议
资源预留协议(RSVP)可以为应用提供有保障的带宽,有效减少了传输延迟和抖动,保证信息传输的实时性和可靠性。当终端需要在一条路径上预留带宽时,会通过RSVP协议向目的端发出一条消息,该消息作用于路径上的所有节点,并含有数据流信息,包括平均速率、突发数据包长度等。当路径上的节点收到消息后,分析数据流信息,决定应保留多少带宽。如果此时可用带宽不足则拒绝申请,否则设置队列管理方法,同时将消息向下一个节点传送[6-7]。
4.3.3 采用SIP信令技术[8]
完成用户定位,呼叫的建立,应答和交互用户信息等功能,保证会话的顺利进行。
综上所述,本文机顶盒VoIP解码模块具体设计如图5所示。该设计采用了上述iLBC解码算法、解码缓存技术以及相关协议,从理论上保证了VoIP解码端语音实时性。
图5 机顶盒VoIP解码模块设计方案
4.4 设计验证
本设计基于Linux系统编写C代码实现,并结合整个项目资源对机顶盒VoIP原型系统进行了通话测试,测试结果如图6所示。由图6可知,通过运行voip.elf可执行程序,拨打接听方IP,该机顶盒VoIP能够完成“建立连接-通话-结束通话”整个过程,从而验证了本文提出的机顶盒VoIP解码端设计方案。
图6 机顶盒终端的VoIP通话测试
5 结论
本文提出了一种实现机顶盒VoIP解码模块的设计方案,并通过测试验证了设计方案的可行性。为后续开发实现稳定实时的机顶盒VoIP终端奠定了基础。
[1]Daniel Collins.VoIP 技术与应用[M].北京:人民邮电出版社,2003:20-30.
[2]SIC8008芯片使用说明[P].重庆四联微电子,2011(2):18-19.
[3]方立杰,刘毓.VoIP中关键技术的研究[J].科技广场,2010(3):42-45.
[4]张钶,谢忠诚,鞠丸滨.基于实时传输协议的丢包实时修复[J].软件学报,2001,12(7):1042-1049.
[5]徐山峰.基于SIP协议的VoIP系统的OoS机制的研究[J].无线通信,2009(12):58-62.
[6]王建新,裴慧民.基于IP的QoS体系结构及路由策略研究[J].电信快报,2001(1O):26-28.
[7]陈宏.提高VoIP服务质量的关键技术[R].信息通信,2005(2):24-26.
[8]Handly M,Schulzrinne H,Schooler E,et a1.RFC2543 SIP:Session Initiation Protocol[S].March 1999.