专利名称:Ip手机的制作方法
技术领域:
本发明属于移动通信技术领域,更具体地说是涉及拨打语音IP电话的手机。
背景技术:
目前在手机拨打语音IP电话即VoIP实现方案中,将语音通过分组数据网络进行传输,使得线路的利用率提高,并且能够降低手机用户的通信费用。但是现在语音IP电话通话存在很明显的缺点,首先IP数据包的传输是面向非连接的,数据通信的属性是突发的,数据流量是变化的,这会给语音数据的传输带来一定的延时和帧丢失,其次变长的IP数据包还会引入抖动。
抖动是指IP包传输时间的长短变化。当网络上的话音延时即声音采样、数字化、压缩、传输延时的总共时间超过300ms时,通话双方一般就只能倾向选择采用半双工的通话方式,一方说完后另一方再说。另一方面,如果传输网络抖动较严重,那么有的话音包因传输时间太长,到达手机后因迟到数据被丢弃,会产生话音的断续及部份失真,严重影响通话音质。
所以在语音IP电话的目前实现方案中,主要存在的问题是时延、抖动和数据包丢失。而对话音业务来说,比较严重的随机性延迟、抖动、帧丢失等引起的通话质量低劣绝对不能被用户所容忍。
发明内容
本发明的目的,就在于消除或减小VoIP的抖动和帧丢失问题给用户带来的语音通话质量低的影响,提供给用户一个语音通话质量高的IP手机。
为实现上述目的,本发明的IP手机,包括射频发送单元,射频接收单元,语音编解码器,声码器,微处理器和存储器。
用于把2-20个语音帧放在一个IP数据包中通过中央处理芯片和射频发送单元传输的声码器;用于通过射频接收单元、微处理器接收到IP数据包后,建立并存储语音RTP数据的存储器缓冲区;用于读取数据缓冲区的RTP语音数据,把IP数据包分成2-20个语音帧,每隔一定时间播放一帧的声码器。
声码器把3个每20ms一帧的语音帧放在一个IP数据包中进行传输,语音解码器的存储器中建立5个RTP数据的缓冲区。
语音解码器把接收到来的新的语音帧的序列号同存储器缓冲区中的数据帧序列号进行比较,将该帧插到序列号比该帧大与序列号比该帧小的两帧之间,如果比较判断新的语音帧的序列号比缓冲区中所有帧的最小序列号还要小,则丢弃该帧。
对于丢帧的处理,如果声码器需要的播放顺序序列号对应帧不存在时,声码器播放NULL空帧,并把下一个要播放的帧的序列号加1。
下面结合附图和实施例对本发明作进一步描述。
图1为本发明的硬件设备连接框图;图2为本发明的RTP数据处理示意图;图3为本发明的插入语音帧示意图;图4为本发明的丢帧处理示意图。
具体实施例方式
在手机发送端,先由声码器每隔20ms产生一个原始语音帧,然后将n个(n>=2)20ms语音帧进行RTP/UDP/IP/PPP包封装,最后通过微处理器、射频发送单元将该语音IP包发送到空中接口;在手机接收端,在语音解码器的存储器中建立RTP数据的缓冲buffer,该缓冲buffer的大小,可以取2以及比2大的自然数,具体数值取决于语音延迟、抖动等各种参数。该缓冲区用于存放RTP数据包。由射频接收单元从空中接口接收到数据包,对数据包进行PPP/IP/UDP解包,然后语音解码器将该RTP语音帧的序列号同存储器缓冲区中的RTP语音帧序列号进行比较,将该帧插到序列号比该帧大和序列号比该帧小的两帧之间,如果新的RTP语音帧的序列号比缓冲区中所有RTP帧的最小序列号还要小,则丢弃该帧。最后,声码器每隔(20*n)ms从RTP缓冲buffer中读取出一个RTP语音帧,将该RTP帧分解成n个原始语音帧,每隔20ms播放一个原始语音帧。如果声码器不能从RTP缓冲buffer中读取出数据,或者声码器需要播放的顺序序列号所对应的帧不存在时,就播放NULL空帧,并把下一个要播放的帧的序列号加1。
如图1所示,声音经过麦克,A/D转换,编码进入声码器,声码器每隔20ms产生一个原始语音帧,然后将n个(n>=2)语音帧进行RTP/UDP/IP/PPP包封装,通过ARM微处理器,射频发送单元将该语音IP包发送到空中无线接口;接收信号时,射频接收单元从空中接口接收到数据包,对数据包进行PPP/IP/UDP解包,解码器存储器中建立RTP数据的缓冲buffer,声码器读取RTP语音帧,经CODEC解码、D/A转换通过听筒、耳机或扬声器播放语音。声码器采用QDSP2000,手机主芯片采用高通MSM5100。
实施例1,采用把3个20ms语音帧放在一个RTP包中传输,缓冲buffer长度为5的方式来说明本发明。
在CDMA移动手机终端,语音帧是以20ms为周期进行发送和接收的。声码器(vocoder)每隔20ms,就会产生一个语音帧并发送,同时播放一个接收到的语音帧。由于IP网络数据到达时间的不确定性,在20ms有可能到来几帧,也可能一帧也不会到来。所以对语音帧的处理采用两个进程同时进行的方式来完成,如图2所示,一个进程为底层协议RTP/UDP/IP/PPP,当空中接口有数据到来时,底层协议从空中接口接收到数据包,将该数据包进行解包处理,将解出来的RTP语音包放到RTP缓冲buffer中;另一个进程为声码器,声码器从RTP缓冲buffer中取出语音帧进行播放。我们将这种两个进程同时进行对语音帧处理的方式简单的称为RTP推,声码器拉的处理方式。这种处理方式可以保证播放语音数据的实时性,并且便于处理数据抖动和丢帧情况。
对于数据抖动和丢帧的情况,我们采用在RTP协议建立缓冲区buffer,并且采用RTP推、声码器拉的方式来处理。抖动主要是因为不同的IP包在网络上传送所需的时间不同,从而导致到达目的端的先后顺序不一致导致的。可以采取两方面措施来减小抖动。
一方面由于CDMA声码器的周期是20ms,所以不同的语音数据在传输时,很容易就会相差20ms,从而造成抖动、丢帧的发生。我们将声码器的3帧语音数据放在一个IP数据包中传输,这样前后两个IP包相差60ms,可以大大减少抖动的次数。当IP包到达对方手机后,再将该IP数据包进行解包,分成3帧,每隔20ms播放一帧。
另一方面在数据的接收端,我们采用缓冲buffer,给延迟帧一个缓冲时间。缓冲buffer的大小,决定了能够处理抖动的最大时间。缓冲buffer越大,处理抖动的能力越强,但是,缓冲buffer变大,相应的语音延迟也会相应的变大。所以该缓冲buffer的大小,需要根据用户对延迟、抖动容忍的程度来取一个最好的折衷值。具体的实现方法为将最先到来的5帧语音帧放到缓冲buffer中,暂时不播放。当第6帧到来的时候,播放缓冲buffer里的第一帧。每次将到来的新的数据帧的序列号(seq)同缓冲buffer中的数据帧序列号进行比较,将该帧插到比它序列号大的帧与比它序列号小的两个帧之间。
如图3所示,存储器缓冲buffer中有n、n+1、n+2、n+4、n+5共5帧数据帧,当语音解码器接收到新的一个数据帧n+3,将新的数据帧n+3与缓冲buffer中存放的5帧数据帧进行序列号比较,比较判断后把n+3这帧数据插入到n+2与n+4数据帧之间,声码器播放第n帧数据。
对于丢帧的处理丢帧主要是因为数据在网络传输过程中,由于网络的问题而导致所需的数据帧丢失,或是没有在要求的时间内到达。如果数据帧在声码器需要播放前仍然没有到达,则认为该帧为丢失帧。
处理丢帧的情况时,如果我们仅采用声码器拉的方式,则会出现问题。因为为了处理抖动,我们在缓冲buffer中始终存放5帧,以对数据帧进行排序。如果某一帧丢失,而声码器还是从缓冲buffer中取走下一帧播放,则缓冲buffer中只剩下4帧,如果这种情况出现几次后,缓冲buffer中将一帧也没有了。这样就不能再很好的进行抖动的处理了。
具体的处理丢帧的步骤如图4所示序列号n,(n+1)的帧已经播放结束,接下来应该播放序列号为(n+2)的帧。在当前的20ms内,并没有从空中接口收到语音帧,即图上显示的NULL空帧,并且缓冲buffer中只有序列号为(n+3)、(n+4)、(n+5)、(n+6)的帧,没有序列号为(n+2)的帧。此时声码器应该放弃从缓冲buffer中取数据播放,而是播放一个NULL帧。并且将下一次要播放的帧的序列号加1。
经过上述对语音帧的处理,在最大程度上减小了由于数据帧抖动和丢帧所带来的影响。消除了通话过程中出现的停顿、话音模糊的现象,保证了用户通话的连续性和清晰性。
权利要求
1.一种IP手机,包括射频发送单元,射频接收单元,语音编解码器,声码器,微处理器和存储器,其特征在于用于把2-20个语音帧放在一个IP数据包中通过微处理器和射频发送单元传输的声码器;用于通过射频接收单元、微处理器接收到IP数据包后,建立并存储语音RTP数据的存储器缓冲区;用于读取数据缓冲区的RTP语音数据,把IP数据包分成2-20个语音帧,每隔一定时间播放一帧的声码器。
2.根据权利要求1所述的IP手机,其特征在于把3个每20ms一帧的语音帧放在一个IP数据包中进行传输的声码器。
3.根据权利要求1所述的IP手机,其特征在于语音解码器的存储器中建立5个RTP数据的缓冲区。
4.根据权利要求1至3任何一项所述的IP手机,其特征在于语音解码器把接收到来的新的语音帧的序列号同存储器缓冲区中的数据帧序列号进行比较,将该帧插到序列号比该帧大与序列号比该帧小的两帧之间,如果比较判断新的语音帧的序列号比缓冲区中所有帧的最小序列号还要小,则丢弃该帧。
5.根据权利要求4所述的IP手机,其特征在于声码器需要的播放顺序序列号对应帧不存在时,播放NULL空帧,并把下一个要播放的帧的序列号加1。
全文摘要
本发明公开了一种提高IP语音通话质量的IP手机,包括射频发送单元,射频接收单元,语音编解码器,声码器,微处理器和存储器,用于把n个语音帧放在一个IP数据包中通过微处理器和射频发送单元传输的声码器,用于通过射频接收单元、微处理器接收到IP数据包后,建立并存储语音RTP数据的存储器缓冲区,用于读取数据缓冲区的RTP语音数据,把IP数据包分成n个语音帧,每隔20ms播放一帧的声码器,本发明减小了由于数据帧抖动和丢帧所带来的影响,保证了用户通话的连续性和清晰性。
文档编号H04B1/38GK1555185SQ20031011455
公开日2004年12月15日 申请日期2003年12月25日 优先权日2003年12月25日
发明者万初旭, 周春松, 陈验方, 朱平洋, 曲喜维 申请人:海信集团有限公司, 青岛海信通信有限公司