音频数据的发送处理方法与装置、接收处理方法与装置与流程

文档序号:15743867发布日期:2018-10-23 22:44阅读:160来源:国知局

本发明涉及音频技术领域,特别涉及音频数据的发送处理方法与装置、接收处理方法与装置。



背景技术:

VOLTE(Voice Over Long Term Evolution,基于长期演进的通话业务)电话业务是4G通信的核心业务之一,可以提供更好的语音质量,同时又能够节省网络资源,VOLTE电话属于PS(packet switching,分组交换)电话,其音频部分采用AMR(Adaptive Multi-Rate,自适应多速率)编码,一般默认采用AMR-WB(Adaptive Multi-Rate WideBand)编码,考虑到语音通信交互性强、要求传输延时低等特点,VOLTE电话业务和其他VOIP(Voice overInternet Protocol,网络电话)方案一样,为了保证语音的实时性,其音频传输机制也采用了类似的方案,即尽可能的快速发送音频数据包,但不对音频数据作任何反馈修复处理。根据中移动的规范要求,VOLTE电话中的调制解调器MODEM承载使用非确认模式,即无线信道出现丢包后底层不会进行重传修复,同时音频传输层采用RTP/AVP(Real-time Transport Protocol/AudioVideo Profile,实时传输协议/音频视频简介)传输模式,即RTP层也不会反馈音频丢包信息,然而,网络传输过程中的丢包是不可避免的,特别是无线通信环境中更容易出现丢包,以现有的技术规范一旦出现丢包就会造成语音解码数据不完整,受丢包多少的影响会产生语音卡顿、丢字、无声的各种问题,影响主观体验效果,虽然VOLTE采用更好的AMR-WB编码格式,但是如果不能控制丢包问题,不仅不能发挥高清语音的优势,可能还不如传统CS(Circuit Switched,电路交换)电话的效果。

目前,针对丢包处理的技术方案主要包括:方案一,采用类似视频的重传机制,即RTP采用RTP/AVPF(Real-time Transport Protocol/Audio VideoProfile,实时传输协议/音频视频简介反馈)机制,发现音频出现丢包后,向发送端反馈信息,等待发送端重传数据包。方案二,使用音频数据的冗余传输,即在后一个音频包内重传一次前一包的音频数据,出现丢包后可以直接通过后一包数据来恢复出前一包。方案三,使用前向纠错技术,在发送端对数据进行纠错编码,接收端发现丢包后直接根据纠错码恢复出丢包数据。

然而,在实现本发明的过程中,本申请的发明人发现,方案一在发送反馈信息后要等重传包到达了才能播放,大大增加了延时,即总延时至少增加等同于链路RTT(Round Trip Time,往返延时)的时间量,通常LTE现网下RTT时间在数百毫秒以上,信号差时RTT更长,通常传输延时大于200ms就能感觉出来,延时越长语音的交互性越差,可能还不如CS电话体验好。方案二,虽然没有延时问题但是效率很低,通常信号好点、中点下丢包率不会超过10%,而冗余传输实际增加了100%的数据量,对于VOLTE电话来说,承载带宽有最大值限定,一般不会有这么大的余量来传输冗余数据。方案三,一方面,需要先对数据包重新分组计算纠错码,再将纠错信息分散到每个数据包中携带,即发送端需要等待整组数据到齐后才能处理,接收端也要等整组数据到齐后才能纠错恢复,这就相当于在发送端和接收端都额外增加了延时,不能满足语音低延时的需要,另一方面,纠错能力有限,通常一个数据分组只能应对一个丢包,如果集中出现了两个丢包则无法恢复,即只能用于丢包很平均的场景,而且,纠错码字通常是固定的,即无法根据音频数据的变化进行动态适应,且纠错编码后的数据是比较长的,很可能超过网络给定的最大带宽,可见,方案三只适合单向传输且对延时不敏感的场景,并不适合用于VOLTE电话业务。



技术实现要素:

本发明实施方式的目的在于提供一种音频数据的发送处理方法与装置、接收处理方法与装置,使得在兼容现有技术规范下,有效降低音频数据丢包对语音造成的影响,而且冗余数据很少,不会额外占用大量传输带宽,有效避免了系统和网络开销的明显增加,同时,具有一定处理集中丢包的能力,有效避免了丢包造成的语音卡顿、丢字、无声的各种问题,极大提升了用户体验效果。

为解决上述技术问题,本发明的实施方式提供了一种音频数据的发送处理方法,包括:

获取待发送的脉冲编码调制音频数据;

将所述脉冲编码调制音频数据编码成当前帧的AMR音频数据;

根据当前时刻前最近连续发送的N帧的AMR音频数据,生成纠错码,其中,N为正整数;

将所述当前帧的AMR音频数据与所述纠错码组成数据包,并发送所述数据包。

本发明的实施方式还提供了一种音频数据的接收处理方法,包括:

解析当前接收到的数据包;

根据解析结果,判断当前时刻前是否存在所述数据包发生丢包;

如果当前时刻前存在所述数据包发生丢包,则根据当前时刻前最近连续接收的M帧的AMR音频数据,与当前时刻后最近连续接收的L帧的纠错码,恢复出已丢包的所述AMR音频数据与所述纠错码,并将恢复出的所述AMR音频数据编码成脉冲编码调制音频数据播放;否则,直接将所述当前接收到的所述数据包的所述AMR音频数据编码成所述脉冲编码调制音频数据播放。

本发明的实施方式还提供了一种音频数据的发送处理装置,包括:

获取模块,用于获取待发送的脉冲编码调制音频数据;

编码模块,用于将所述脉冲编码调制音频数据编码成当前帧的AMR音频数据;

纠错码模块,用于根据当前时刻前最近连续发送的N帧的AMR音频数据,生成纠错码,其中,N为正整数;

数据包封装模块,用于将所述当前帧的AMR音频数据与所述纠错码组成数据包;

发送模块,用于发送所述数据包。

本发明的实施方式还提供了一种音频数据的接收处理装置,包括:

解析模块,用于解析当前接收到的数据包;

判断模块,用于根据解析结果,判断当前时刻前是否存在所述数据包发生丢包;

第一执行模块,用于当当前时刻前存在所述数据包发生丢包时,根据当前时刻前最近连续接收的M个数据包的AMR音频数据,与当前时刻后最近连续接收的L个数据包的纠错码,恢复出已丢包的所述AMR音频数据与所述纠错码,并将恢复出的所述AMR音频数据编码成脉冲编码调制音频数据播放;

第二执行模块,用于直接将所述当前接收到的所述数据包的所述AMR音频数据编码成所述脉冲编码调制音频数据播放。

本发明实施方式相对于现有技术而言,获取待发送的脉冲编码调制音频数据,并将脉冲编码调制音频数据编码成当前帧的AMR音频数据,使得音频数据采用AMR编码格式,根据当前时刻前最近连续发送的N帧的AMR音频数据,生成纠错码,其中,N为正整数,使得接收端能够根据纠错码及时恢复出传输过程中发生丢包的数据包,将当前帧的AMR音频数据与纠错码组成数据包,并发送数据包,从而将待传输的音频数据转换成适合网络传输要求的数据包进行传输,在兼容现有技术规范下,有效降低音频数据丢包对语音播放造成的影响,而且冗余数据很少,不会额外占用大量传输带宽,有效避免了系统和网络开销的明显增加,同时,具有一定处理集中丢包的能力。

另外,所述将所述脉冲编码调制音频数据编码成当前帧的AMR音频数据,具体包括:根据预设的信道质量与AMR编码模式的对应关系,获取与当前所述信道质量相对应的所述AMR编码模式;根据所述AMR编码模式,将所述脉冲编码调制音频数据,编码成所述当前帧的AMR音频数据。根据当前信道质量实时、准确的选择相匹配的AMR编码模式,以便充分利用当前的信道质量进行音频数据传输,提高传输效率。

另外,所述根据当前时刻前最近连续发送的N帧的AMR音频数据,生成纠错码,具体包括:按发送时间的从早到晚的顺序,依次从第i帧的AMR音频数据中取出第N-i+1个子数据块,并根据各所述子数据块生成所述纠错码,其中,i=1,2,...,N,所述第i帧的AMR音频数据在逻辑上被预先均分为N个子数据块。根据该过程生成的纠错码,有效降低音频数据丢包对语音播放造成的影响,而且冗余少,避免了系统和网络开销的明显增加。

另外,所述N取值为8;所述根据当前时刻前最近连续发送的N帧的AMR音频数据,生成纠错码,具体包括:判断所述AMR编码模式是否为所述AMR编码模式的模式5至所述AMR编码模式的模式8;如果所述AMR编码模式为所述模式5至所述模式8,则按发送时间的从早到晚的顺序,依次从第r帧的AMR音频数据取出第N-r+1个子数据块,其中,r=1,2,...,8,所述第r帧的AMR音频数据在逻辑上被预先均分为8个子数据块;如果所述AMR编码模式非所述模式5与所述模式8,则按发送时间的从早到晚的顺序,依次从第j帧的AMR音频数据取出第j个子数据块,依次从第k帧的AMR音频数据取出第N-k+1个子数据块,其中,j=1,2,3,4,k=5,6,7,8,所述第j帧的AMR音频数据与所述第k帧的AMR音频数据在逻辑上均被预先均分为4个子数据块。针对不同的AMR编码模式,生成合理有效的纠错码,从而在特定AMR编码模式下,具有处理集中丢包的能力。

附图说明

图1是根据本发明第一实施方式的一种音频数据的发送处理方法流程图;

图2是根据本发明第一实施方式的纠错码生成过程示意图;

图3是根据本发明第一实施方式的常用RTP的头部格式示意图;

图4是根据本发明第一实施方式的扩展RTP的头部格式示意图;

图5是根据本发明第二实施方式的一种音频数据的发送处理方法流程图;

图6是根据本发明第二实施方式的AMR编码模式5至8的纠错码生成过程示意图;

图7是根据本发明第二实施方式的AMR编码模式0至4的纠错码生成过程示意图;

图8是根据本发明第三实施方式的一种音频数据的接收处理方法流程图;

图9是根据本发明第三实施方式的AMR编码模式0至8的一个丢包的AMR音频数据的恢复过程示意图;

图10是根据本发明第三实施方式的AMR编码模式5至8的一个丢包的AMR音频数据的恢复过程示意图;

图11是根据本发明第三实施方式的AMR编码模式0至4的一个丢包的AMR音频数据的恢复过程示意图;

图12是根据本发明第三实施方式的AMR编码模式0至4的连续丢包的AMR音频数据的恢复过程示意图;

图13是根据本发明第四实施方式的一种音频数据的发送处理装置的结构示意图;

图14是根据本发明第五实施方式的一种音频数据的发送处理装置的结构示意图;

图15是根据本发明第六实施方式的一种音频数据的接收处理装置的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。

本发明第一实施方式涉及一种音频数据的发送处理方法。具体流程如图1所示。

在步骤101中,获取待发送的脉冲编码调制音频数据。

具体地说,终端设备获取待发送的脉冲编码调制音频数据,例如VOLTE电话的脉冲编码调制音频数据。

在步骤102中,将脉冲编码调制音频数据编码成当前帧的AMR音频数据。

具体地说,根据中国移动通信集团的相关规范,终端设备的VOLTE电话的音频部分采用AMR编码,AMR编码是一种多速率音频编码算法,结合参数编码和波形编码的特点,较多应用于语音压缩,AMR编码包括AMR-NB和AMR-WB,两者在帧格式上基本相同,AMR-WB编码码率更高可以提供更好的音质,是VOLTE电话中的默认编码格式,后续提到的AMR编码均指AMR-WB编码,当然,AMR-NB编码也可以采用同样的方法处理。

其中,在具体编码过程中,终端设备根据预设的信道质量与AMR编码模式的对应关系,获取与当前信道质量相对应的AMR编码模式,根据所该AMR编码模式,将脉冲编码调制音频数据,编码成当前帧的AMR音频数据,其中,不同的AMR编码模式对应着不同的编码速率与数据长度,当信道质量较好时,可以用高速率的AMR编码模式,例如AMR编码模式7、AMR编码模式8,当信道质量一般时,可以用中速率的AMR编码模式,例如AMR编码模式5、AMR编码模式6,当信道质量较差时,可以用低速率的AMR编码模式,例如AMR编码模式0至AMR编码模式4,其中,信道质量可以根据实际传输速率或数据丢包率预先判断。

进一步地说,通常AMR帧包含以下部分:AMR头信息、AMR辅助信息与AMR音频数据,具体格式如下表1所示,其中,AMR头信息具体包括:帧类型与坏帧指示,帧类型用于指示当前帧编码类型,除非编码模式改变,否则该字段不会变化,坏帧指示主要用于CS电话,表示帧内有误码出现,而PS电话中该字段不使用,因为出现坏帧时链路层会直接丢包,能接收到的都是无误码的好帧。AMR辅助信息具体包括:编码模式、请求模式与CRC校验,编码模式用于指示当前帧编码模式,除非编码模式改变,否则该字段不会变化,请求模式用于请求对方改变编码模式,实际编码模式由传输层控制,该字段不使用,CRC校验通常不使用。AMR音频数据具体包括类A、类B与类C,类A为关键数据,丢失后无法解码,类B为在类A数据的基础上提高音质,类C为在类B数据的基础上提高音质。

表1

在步骤103中,根据当前时刻前最近连续发送的N帧的AMR音频数据,生成纠错码。

具体地说,根据上述表1的AMR帧结构可以看出,只有AMR音频数据部分是每帧不同的,其他字段在数据流中保持不变,所以只需要用纠错码保护AMR音频数据部分即可,其中,终端设备在具体生成纠错码时,按发送时间的从早到晚的顺序,依次从第i帧的AMR音频数据中取出第N-i+1个子数据块,并根据各子数据块生成纠错码,其中,i=1,2,...,N,第i帧的AMR音频数据在逻辑上被预先均分为N个子数据块,其中,N为正整数,需要说明的是,N的具体取值由本领域技术人员根据信道质量、纠错能力及传输时延等情况的综合衡量而定。

进一步地说,以N取值6为例,简要介绍一下纠错码的生成过程,当N取其它值时,该纠错码的生成过程也同样适应。如图2所示,每帧AMR音频数据部分均被均分为6块,分别标记为A、B、C、D、E、F,其中,数据块的划分仅用于计算纠错码ECC,实际传输时音频部分还是完整的一帧,于是,当前帧的AMR音频数据的纠错码ECC,即图2所示的Packn的ECCn,需要根据当前时刻前最近连续发送的6帧的AMR音频数据生成,即需要根据Packn-6、Packn-5、Packn-4、Packn-3、Packn-2、Packn-1的A、B、C、D、E、F等子数据块生成,即依次将Fn-6、En-5、Dn-4、Cn-3、Bn-2、An-1组成码字的信息位,然后计算出监督位,即纠错码ECCn,并存放到Packn内。

需要说明的是,为了提高纠错效率选用RS(Reed-Solomon,里所)码作为纠错码,RS码是建立在GF(2m)(Galois Field,伽罗华域)域上的一种线性分组码,有很强的纠错能力。根据AMR的数据长度可以选取m=7,即每个符号7比特,码字最大长度127(包括信息位和监督位),而纠错能力是监督位长度的一半,不同AMR编码模式下的AMR数据长度和纠错码长度信息如下表2所示,以表2中的AMR编码模式0为例,音频帧长为132比特,分成4个数据块(长度向上取整),即每个数据块35比特(对应为5个符号,信息位由8个数据块组成,即40个符号,监督位长度为10个符号(数据块长度的2倍),即每个纠错码能恢复一个数据块,数据包总长度为音频帧长加监督位长度,即202比特,通常在VOLTE电话中,音频部分申请的数据带宽在40kbps左右(按照最高AMR速率计算出的IP层数据带宽),增加纠错码后总数据带宽基本没有超过此限制,不用额外增加数据带宽。

表2

在步骤104中,将当前帧的AMR音频数据与纠错码组成数据包。

具体地说,终端设备将当前帧的AMR音频数据与纠错码组成实时传输协议RTP数据包,其中,当前帧的AMR音频数据被存放到RTP数据包的有效载荷部分,纠错码被存放到RTP数据包的报头的头扩展部分。

进一步地说,由于RTP数据包的报头的头扩展部分,只有在将RTP数据包的报头的扩展标志位置1后才能使用,所以在将当前帧的AMR音频数据与纠错码组成实时传输协议RTP数据包之前,预先将RTP数据包的报头的扩展标志位置1。其中,常用的RTP的头部格式如图3所示,当把RTP数据包的报头的扩展标志位置1后,可以启用RTP数据包的报头的头扩展部分,扩展标志位置1后的RTP的头部格式如图4所示,版本号字段占用2比特,用来标志使用的RTP版本,填充位字段占用1比特,如果该位置位的话,则该RTP包的尾部就包含附加的填充字节,扩展位字段占用1比特,如果该位置位的话,则RTP固定头部后面就跟有一个扩展头部,CSRC计数器字段占用4比特,含有固定头部后面跟着的CSRC的数目,标记位字段占用1比特,该位的解释由配置文档来承担,载荷类型字段占用7比特,标识了RTP载荷的类型,序列号占用16比特,发送方在每发送完一个RTP包后就将该域的值增加1,接收方可以由该域检测包的丢失及恢复包序列,序列号的初始值是随机的,时间戳字段占用32比特,记录了该包中数据的第一个字节的采样时刻,同步源标识符字段占用32比特,同步源就是指RTP包流的来源,文档定义字段用于区分不同的RTP头部扩展,该字段可以根据实际使用环境来约定,如果遇到不支持本方案的终端设备,可以跳过纠错码信息,不影响正常解码,长度字段表明头部扩展的具体长度,头部扩展用于存在纠错码信息,纠错码之后可以根据需要填充零,以保持32比特对齐。

在步骤105中,发送数据包。

具体地说,终端设备通过网络发送组装完成的RTP数据包,同时将该数据包存放到已发送缓存中,用于后续纠错编码。

与现有技术相比,在本实施方式中,终端设备根据预设的信道质量与AMR编码模式的对应关系,获取与当前信道质量相对应的AMR编码模式,并将脉冲编码调制音频数据,编码成当前帧的AMR音频数据,从而根据当前信道质量实时、准确的选择相匹配的AMR编码模式,使得音频数据采用符合传输要求的AMR编码格式,充分利用当前的信道质量进行音频数据传输,提高传输效率;按发送时间的从早到晚的顺序,依次从第i帧的AMR音频数据中取出第N-i+1个子数据块,并根据各子数据块生成纠错码,使得接收端能够根据纠错码及时恢复出传输过程中发生丢包的数据包,而且纠错码所占冗余少,有效避免了系统和网络开销的明显增加;将当前帧的AMR音频数据被存放到RTP数据包的有效载荷部分,纠错码被存放到RTP数据包的报头的头扩展部分,组成RTP数据包,从而将待传输的音频数据转换成适合网络传输要求的RTP数据包进行传输。

本发明第二实施方式涉及一种音频数据的发送处理方法。第二实施方式与第一实施方式大致相同,主要区别之处在于:在第一实施方式中,对于所有的AMR编码模式,均按发送时间的从早到晚的顺序,依次从第i帧的AMR音频数据中取出第N-i+1个子数据块,并根据各子数据块生成纠错码,而在本发明第二实施方式中,根据不同的AMR编码模式,采用不同的纠错码生成方式,具体如图5所示。

在步骤501中,获取待发送的脉冲编码调制音频数据。

在步骤502中,将脉冲编码调制音频数据编码成当前帧的AMR音频数据。

在步骤503中,判断AMR编码模式是否为模式5至模式8,如果是则执行步骤504,否则执行步骤505。

具体地说,终端设备判断所采用的AMR编码模式是否为AMR编码模式5至AMR编码模式8,如果采用的AMR编码模式为AMR编码模式5至AMR编码模式8,则执行步骤504,生成匹配模式5至模式8的纠错码,否则,执行步骤505,生成匹配模式0至模式4的纠错码。

在步骤504中,生成匹配模式5至模式8的纠错码。

具体地说,当终端设备采用了AMR编码模式5至AMR编码模式8时,根据信道质量、纠错能力及恢复丢包数据所需要等待的时长等因素,限定N取值为8,即终端设备在具体生成纠错码时,按发送时间的从早到晚的顺序,依次从第i帧的AMR音频数据中取出第8-r+1个子数据块,并根据各子数据块生成纠错码,其中,r=1,2,...,8,第r帧的AMR音频数据在逻辑上被预先均分为8个子数据块。

进一步地说,如图6所示,每帧AMR音频数据部分均被均分为8块,分别标记为A、B、C、D、E、F、G、H,其中,数据块的划分仅用于计算纠错码ECC,实际传输时音频部分还是完整的一帧,于是,当前帧的AMR音频数据的纠错码ECC,即图6所示的Packn的ECCn,需要根据当前时刻前最近连续发送的8帧的AMR音频数据生成,即需要根据Packn-8、Packn-7、Packn-6、Packn-5、Packn-4、Packn-3、Packn-2、Packn-1的A、B、C、D、E、F、G、H等子数据块生成,即依次将Hn-8、Gn-7、Fn-6、En-5、Dn-4、Cn-3、Bn-2、An-1组成码字的信息位,然后计算出监督位,即纠错码ECCn,并存放到Packn内。也就是说,每帧AMR音频等分成8个子数据块,数据包除了携带当前的AMR音频帧外还携带纠错码,该纠错码根据之前的8帧AMR数据计算得到,即从前8帧中按顺序各选取1个数据块组合成信息位,然后计算出监督位存放到当前数据包中,该纠错码信息位长度为8个数据块,可以纠1个数据块的数据错误,即9个数据包中如果丢失1个则可以通过后续8个数据包携带的纠错码恢复,丢失超过1个则无法恢复,此时的平均纠错率为11%。

需要说明的是,只有当信道质量较好时才会采用高速率的AMR编码模式7或AMR编码模式8,而且行业内通常默认在该种情况的信道质量的传输环境下,不会发生数据丢包的情况,于是,为了降低传输带宽、传输数据量等,AMR编码模式7与AMR编码模式8可以无需根据上述过程生成纠错码,当然,本领域技术人员为了做到万无一失,也可以根据上述过程生成AMR编码模式7与AMR编码模式8的纠错码。

在步骤505中,生成匹配模式0至模式4的纠错码。

具体地说,当终端设备采用了AMR编码模式0至AMR编码模式4时,根据信道质量、纠错能力及恢复丢包数据所需要等待的时长等因素,限定N取值为8,即终端设备在具体生成纠错码时,按发送时间的从早到晚的顺序,依次从第j帧的AMR音频数据取出第j个子数据块,依次从第k帧的AMR音频数据取出第N-k+1个子数据块,其中,j=1,2,3,4,k=5,6,7,8,第j帧的AMR音频数据与第k帧的AMR音频数据在逻辑上均被预先均分为4个子数据块。

进一步地说,如图7所示,每帧AMR音频数据部分均被均分为4块,分别标记为A、B、C、D,其中,数据块的划分仅用于计算纠错码ECC,实际传输时音频部分还是完整的一帧,于是,当前帧的AMR音频数据的纠错码ECC,即图7所示的Packn的ECCn,需要根据当前时刻前最近连续发送的8帧的AMR音频数据生成,即需要根据Packn-8、Packn-7、Packn-6、Packn-5、Packn-4、Packn-3、Packn-2、Packn-1的的A、B、C、D等子数据块生成,即依次将An-8、Bn-7、Cn-6、Dn-5、Dn-4、Cn-3、Bn-2、An-1组成码字的信息位,然后计算出监督位,即纠错码ECCn,并存放到Packn内。也就是说,每帧AMR音频等分成4个子数据块,该纠错码根据之前的8帧AMR数据计算得到,即从前8帧中按顺序各选取1个数据块组合成信息位(每个子数据块会被校验2次),然后计算出监督位存放到当前数据包中,该纠错码信息位长度为8个数据块,可以纠1个数据块的数据错误,同时,具有应对集中丢包能力,即当5个数据包中丢失1个数据包时,可以通过后续4个数据包快速恢复,当5个数据包中连续丢失2个数据包时,则通过后续8个数据包来恢复,此时的平均纠错率为20%,由于在实际测试情况下,在信道质量较差的传输环境下的丢包率也不会超过20%(信道质量太差时,会自动回落为CS电话),于是,纠错能力控制在20%以内就能够满足需要。

在步骤506中,将当前帧的AMR音频数据与纠错码组成数据包。

在步骤507中,发送数据包。

在本实施方式中,针对不同的AMR编码模式,采用不同的纠错码生成方式,从而生成合理有效且有针对性的纠错码,并使得接收端在AMR编码模式0至4下,具有处理集中丢包的能力,将纠错能力控制到20%,达到实际测试情况的要求。

本发明第三实施方式涉及一种音频数据的接收处理方法。具体流程如图8所示。

在步骤801中,解析当前接收到的数据包。

具体地说,接收端的终端设备通过网络接收到数据包后,将该数据包进行解析,以获得当前AMR编码模式、AMR音频数据、纠错码等信息,其中,接收到的数据包为与发送端相匹配的RTP数据包。

在步骤802中,判断当前时刻前是否存在数据包发生丢包,如果发生丢包,则执行步骤804,否则执行步骤803。

具体地说,接收端的终端设备根据解析结果,例如:AMR编码模式、AMR音频数据、纠错码等信息,判断当前时刻前是否存在数据包发生丢包,如果发生丢包,则执行步骤804,恢复出已丢包的数据包的AMR音频数据与纠错码,否则执行步骤803,将当前接收到的数据包的AMR音频数据编码成脉冲编码调制音频数据。

需要说明的是,当发送端的终端设备采用AMR编码模式7或AMR编码模式8,且发送的数据包中均未携带纠错码时,说明在此时的信道质量下,不会发生数据包丢包的情况,于是,接收端的终端设备无需进行丢包检测与丢包恢复等过程,可以直接将当前接收到的数据包的AMR音频数据编码成脉冲编码调制音频数据。

在步骤803中,将当前接收到的数据包的AMR音频数据编码成脉冲编码调制音频数据。

具体地说,当接收端的终端设备判定当前时刻前不存在数据包发生丢包时,直接将当前接收到的数据包的AMR音频数据编码成脉冲编码调制音频数据,同时,将该AMR音频数据保存到已播放缓存中,用于后续纠错处理。

在步骤804中,恢复出已丢包的数据包的AMR音频数据与纠错码。

具体地说,当接收端的终端设备判定当前时刻前存在数据包发生丢包时,等待后续数据包,在实际应用中可以通去抖动缓冲器增加播放延时,后续数据包到齐后,即等待接收到6、8或更多个数据包,再结合已播放AMR音频数据进行RS误码纠错,将丢失的数据包恢复出来,如果后续数据包还有丢失,导致超出纠错能力,则停止等待并输出坏帧,由解码器进行丢帧补偿。

进一步地说,下面对已丢包的AMR音频数据及纠错码的恢复过程,进行举例简介。

首先,当发送端的终端设备采用AMR编码模式0至AMR编码模式8,且发送的数据包中均携带纠错码时,在N取值为6的情况下,当接收端的终端设备检测到出现有一个数据包发生丢包时,即图9中的虚线部分的数据包Packn发生丢包,此时,每一帧AMR音频数据均对应6个子数据块,假设数据包Packn-5至Packn-1已经正常播放,Packn+1至Packn+6正常接收到,则数据包Packn的恢复过程如下:(1)纠错码ECCn+1监督An、Bn-1、Cn-2、Dn-3、En-4、Fn-5,除An外其余5个数据块均已获得,于是,可以利用纠错码恢复数据块An。(2)纠错码ECCn+2监督An+1、Bn、Cn-1、Dn-2、En-3、Fn-4,除Bn外其余5个数据块均已获得,于是,可以利用纠错码恢复数据块Bn。重复以上过程,可以利用ECCn+1至ECCn+6恢复全部数据块An至Fn,将An至Fn按图中所示顺序组合后,就可以得到数据包Packn携带的AMR音频数据,从而可以进一步得到数据包Packn携带的纠错码ECCn。当然,如果数据包Packn+7也出现丢包,也利用同样的方法进行恢复。需要注意的是,该情况下,每两个丢包中间至少要间隔N=6个正常数据包,即纠错能力为平均7个数据包恢复1个数据包。特别地,当N取值为其它值时,也采用类似的处理方式进行丢包的AMR音频数据的恢复。

其次,当发送端的终端设备采用AMR编码模式5至AMR编码模式8,且发送的数据包中均携带纠错码时,在N取值为8的情况下,当接收端的终端设备检测到出现有一个数据包发生丢包时,即图10中的虚线部分的数据包Packn发生丢包,此时,每一帧AMR音频数据均对应8个子数据块,假设数据包Packn-7至Packn-1已经正常播放,Packn+1至Packn+8正常接收到,则数据包Packn的恢复过程如下:(1)纠错码ECCn+1监督An、Bn-1、Cn-2、Dn-3、En-4、Fn-5、Gn-6、Hn-7,除An外其余7个数据块均已获得,于是,可以利用纠错码恢复数据块An。(2)纠错码ECCn+2监督An+1、Bn、Cn-1、Dn-2、En-3、Fn-4、Gn-5、Hn-6,除Bn外其余7个数据块均已获得,于是,可以利用纠错码恢复数据块Bn。重复以上过程,可以利用ECCn+1至ECCn+8恢复全部数据块An至Hn,将An至Hn按图中所示顺序组合后,就可以得到数据包Packn携带的AMR音频数据,从而可以进一步得到数据包Packn携带的纠错码ECCn。当然,如果数据包Packn+9也出现丢包,也利用同样的方法进行恢复。需要注意的是,该情况下,每两个丢包中间至少要间隔N=8个正常数据包,即纠错能力为平均9个数据包恢复1个数据包。特别地,当N取值为其它值时,也采用类似的处理方式进行丢包的AMR音频数据的恢复。

再次,当发送端的终端设备采用AMR编码模式0至AMR编码模式4,且在N取值为8的情况下,当出现有一个数据包发生丢包时,即图11所示的虚线部分的数据包Packn发生丢包,此时,每一帧AMR音频数据均对应4个子数据块,假设数据包Packn-7至Packn-1已经正常播放,Packn+1至Packn+4正常收到,则数据包Packn的恢复过程如下:(1)ECCn+1监督An、Bn-1、Cn-2、Dn-3、Dn-4、Cn-5、Bn-6、An-7,除An外其余7个数据块均已获得,于是,可以利用纠错码恢复数据块An。(2)ECCn+2监督An+1、Bn、Cn-1、Dn-2、Dn-3、Cn-4、Bn-5、An-6,除Bn外其余7个数据块均已获得,于是,可以利用纠错码恢复数据块Bn。重复以上过程,可以利用ECCn+1至ECCn+4恢复全部数据块An至Dn,将An至Dn按图10中所示顺序组合后,就可以得到数据包Packn携带的AMR音频数据,从而可以进一步得到数据包Packn携带的纠错码ECCn。当然,如果Packn+5也出现丢包,也利用同样的方法进行恢复,需要注意的是,该情况下,每2个丢包中间有4个以上正常数据包时,直接通过丢包位置后的4个数据包来恢复即可,纠错能力为平均5个数据包恢复1个数据包。特别地,当N取值为其它值时,也采用类似的处理方式进行丢包的AMR音频数据的恢复。

最后,当发送端的终端设备采用AMR编码模式0至AMR编码模式4,且在N取值为8的情况下,当出现连续两个数据包发生丢包时,即图12所示的虚线部分的数据包Packn-1与Packn发生丢包,此时,可以利用更多的后续数据包来恢复,假设数据包Packn-7至Packn-2已经正常播放,Packn+1至Packn+8正常收到,则数据包Packn-1与Packn的恢复过程如下:(1)ECCn+8监督An+7、Bn+6、Cn+5、Dn+4、Dn+3、Cn+2、Bn+1、An,除An外其余7个数据块均已获得,可以利用纠错码恢复数据块An。(2)ECCn+1监督An、Bn-1、Cn-2、Dn-3、Dn-4、Cn-5、Bn-6、An-7,而An已经恢复,于是,现在可以恢复数据块Bn-1。(3)ECCn+6监督An+5、Bn+4、Cn+3、Dn+2、Dn+1、Cn、Bn-1、An-2,而Bn-1、An已经恢复,因此现在可以恢复出数据块Cn。(4)ECCn+3监督An+2、Bn+1、Cn、Dn-1、Dn-2、Cn-3、Bn-4、An-5,而Bn-1、An、Cn已经恢复,于是,现在可以恢复出数据块Dn-1。(5)ECCn+4监督An+3、Bn+2、Cn+1、Dn、Dn-1、Cn-2、Bn-3、An-4,而Bn-1、Dn-1、An、Cn已经恢复,于是,现在可以恢复出数据块Dn。(6)ECCn+5监督An+4、Bn+3、Cn+2、Dn+1、Dn、Cn-1、Bn-2、An-3,而Bn-1、Dn-1、An、Cn、Dn已经恢复,于是,现在可以恢复出数据块Cn-1。(7)ECCn+2监督An+1、Bn、Cn-1、Dn-2、Dn-3、Cn-4、Bn-5、An-6,而Bn-1、Cn-1、Dn-1、An、Cn、Dn已经恢复,于是,现在可以恢复出数据块Bn。(8)ECCn+7监督An+6、Bn+5、Cn+4、Dn+3、Dn+2、Cn+1、Bn、An-1,而Bn-1、Cn-1、Dn-1、An、Bn、Cn、Dn已经恢复,于是,现在可以恢复出数据块An-1。至此An-1、Bn-1、Cn-1、Dn-1、An、Bn、Cn、Dn已经全部恢复。当然,如果Packn+9、Packn+10也出现连续丢包,也利用同样的方法进行恢复,虽然纠错能力仍然为平均5个数据包恢复1个数据包,但是可以处理连续丢包的情况,即10个数据包中可以恢复任意2个位置的数据包的丢包,抗丢包的能力得到显著增加。特别地,当N取值为其它值时,也采用类似的处理方式进行丢包的AMR音频数据的恢复。

需要说明的是,上述仅依丢失一个数据包与丢失两个数据包为例,简要介绍接收端恢复丢包的过程,并不代表本实施方式仅能处理丢失一个、两个数据包的情况,当丢失更多的数据包时,仍然可以根据上述方式进行恢复,只不过需要等待更多的后续数据包的到达而已,这时技术人员需要根据等待后续数据包所需的延时及播放情况综合考虑,以决定继续恢复丢包数据还是直接输出坏帧,从而达到最佳的播放效果。

在步骤805中,将恢复出的AMR音频数据编码成脉冲编码调制音频数据。

具体地说,终端设备将恢复出的AMR音频数据编码成脉冲编码调制音频数据,同时,将该AMR音频数据保存到已播放缓存中,用于后续纠错处理。

在步骤806中,播放脉冲编码调制音频数据。

具体地说,终端设备播放编码得到的脉冲编码调制音频数据。

在本实施方式中,接收端的终端设备检测到当前时刻前存在数据包发生丢包时,能够根据当前时刻前最近连续接收的M帧的AMR音频数据,与当前时刻后最近连续接收的L帧的纠错码,恢复出已丢包的AMR音频数据与纠错码,从而具有恢复丢包数据的能力,而且,具有恢复集中丢包的能力,有效避免了丢包造成的语音卡顿、丢字、无声的各种问题,极大提升了用户体验效果。

上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包含相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。

本发明第四实施方式涉及一种音频数据的发送处理装置。如图13所示,包含:获取模块131、编码模块132、纠错码模块133、数据包封装模块134与发送模块135,其中,编码模块132具体包括:AMR编码模式获取子模块1321与AMR音频数据编码子模块1322,纠错码模块133具体包括:子数据获取子模块1331与生成纠错码子模块1332。

获取模块131,用于获取待发送的脉冲编码调制音频数据。

编码模块132,用于将脉冲编码调制音频数据编码成当前帧的AMR音频数据。

AMR编码模式获取子模块1321,用于根据预设的信道质量与AMR编码模式的对应关系,获取与当前信道质量相对应的AMR编码模式。

AMR音频数据编码子模块1322,用于根据AMR编码模式,将脉冲编码调制音频数据,编码成当前帧的AMR音频数据。

纠错码模块133,用于根据当前时刻前最近连续发送的N帧的AMR音频数据,生成纠错码,其中,N为正整数。

子数据获取子模块1331,用于按发送时间的从早到晚的顺序,依次从第i帧的AMR音频数据中取出第N-i+1个子数据块,其中,i=1,2,...,N,第i帧的AMR音频数据在逻辑上被预先均分为N个子数据块。

生成纠错码子模块1332,用于根据各子数据块生成纠错码。

数据包封装模块134,用于将当前帧的AMR音频数据与纠错码组成数据包。

发送模块135,用于发送数据包。

不难发现,本实施方式为与第一实施方式相对应的系统实施例,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。

值得一提的是,本实施方式中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本实施方式中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施方式中不存在其它的单元。

本发明第五实施方式涉及一种音频数据的发送处理装置。第五实施方式与第四实施方式大致相同,主要区别之处在于:在第四实施方式中,纠错码模块133具体包括:子数据获取子模块1331与生成纠错码子模块1332。而在本发明第五实施方式中,纠错码模块133具体包括:判断子模块1333第一确定子模块1334与第二确定子模块1335,如图14所示。

获取模块131,用于获取待发送的脉冲编码调制音频数据。

编码模块132,用于将脉冲编码调制音频数据编码成当前帧的AMR音频数据。

AMR编码模式获取子模块1321,用于根据预设的信道质量与AMR编码模式的对应关系,获取与当前信道质量相对应的AMR编码模式。

AMR音频数据编码子模块1322,用于根据AMR编码模式,将脉冲编码调制音频数据,编码成当前帧的AMR音频数据。

纠错码模块133,用于根据当前时刻前最近连续发送的N帧的AMR音频数据,生成纠错码,其中,N为正整数。

判断子模块1333,用于判断AMR编码模式是否为AMR编码模式的模式5至AMR编码模式的模式8。

第一确定子模块1334,用于当AMR编码模式为模式5至模式8时,按发送时间的从早到晚的顺序,依次从第r帧的AMR音频数据取出第N-r+1个子数据块,其中,N=8,r=1,2,...,8,第r帧的AMR音频数据在逻辑上被预先均分为8个子数据块。

第二确定子模块1335,用于当AMR编码模式非模式5至模式8时,按发送时间的从早到晚的顺序,依次从第j帧的AMR音频数据取出第j个子数据块,依次从第k帧的AMR音频数据取出第N-k+1个子数据块,其中,N=8,j=1,2,3,4,k=5,6,7,8,第j帧的AMR音频数据与第k帧的AMR音频数据在逻辑上均被预先均分为4个子数据块。

数据包封装模块134,用于将当前帧的AMR音频数据与纠错码组成数据包。

发送模块135,用于发送数据包。

由于第二实施方式与本实施方式相互对应,因此本实施方式可与第二实施方式互相配合实施。第二实施方式中提到的相关技术细节在本实施方式中依然有效,在第二实施方式中所能达到的技术效果在本实施方式中也同样可以实现,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第二实施方式中。

本发明第六实施方式涉及一种音频数据的接收处理装置。如图15所示,包含:解析模块151、判断模块152、第一执行模块153与第二执行模块154。

解析模块151,用于解析当前接收到的数据包。

判断模块152,用于根据解析结果,判断当前时刻前是否存在数据包发生丢包。

第一执行模块153,用于当当前时刻前存在数据包发生丢包时,根据当前时刻前最近连续接收的M个数据包的AMR音频数据,与当前时刻后最近连续接收的L个数据包的纠错码,恢复出已丢包的AMR音频数据与纠错码,并将恢复出的AMR音频数据编码成脉冲编码调制音频数据播放。

第二执行模块154,用于当当前时刻前未存在数据包发生丢包时,直接将当前接收到的数据包的AMR音频数据编码成脉冲编码调制音频数据播放。

由于第三实施方式与本实施方式相互对应,因此本实施方式可与第三实施方式互相配合实施。第三实施方式中提到的相关技术细节在本实施方式中依然有效,在第三实施方式中所能达到的技术效果在本实施方式中也同样可以实现,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第三实施方式中。

本领域技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1