音频数据恢复方法、装置及蓝牙设备

文档序号:1522526 发布日期:2020-02-11 浏览:40次 >En<

阅读说明:本技术 音频数据恢复方法、装置及蓝牙设备 (Audio data recovery method and device and Bluetooth equipment ) 是由 冯宇红 王海业 袁赟 徐斌 熊焱 张亦农 杨晓东 于 2018-12-28 设计创作,主要内容包括:音频数据恢复方法、装置及蓝牙设备,包括:接收音频数据;所述音频数据包括M段帧数据以及每段帧数据对应的CRC校验信息;在N个重传窗口的所述音频数据均为错误数据时,根据所述N个错误的音频数据中的CRC校验信息对所述音频数据进行恢复。本申请在数据重传多次依然错误的情况下并不将多次重传的错误数据丢掉,而是充分利用多次重传的错误数据中的冗余信息进行纠错、实现坏帧恢复,有效增加音频广播的传输距离,即使在干扰情况下也能避免音频播放卡顿的情况出现。(The audio data recovery method, the device and the Bluetooth equipment comprise: receiving audio data; the audio data comprises M sections of frame data and CRC (cyclic redundancy check) information corresponding to each section of frame data; and when the audio data of the N retransmission windows are all error data, recovering the audio data according to CRC (cyclic redundancy check) information in the N error audio data. According to the method and the device, under the condition that the data is retransmitted for a plurality of times and still wrong, the wrong data retransmitted for a plurality of times is not lost, the redundant information in the wrong data retransmitted for a plurality of times is fully utilized for error correction, bad frame recovery is realized, the transmission distance of audio broadcasting is effectively increased, and the situation that the audio playing is blocked can be avoided even under the interference situation.)

音频数据恢复方法、装置及蓝牙设备

技术领域

本申请涉及蓝牙技术领域,尤其涉及一种音频数据恢复方法、装置及蓝牙设备。

背景技术

蓝牙音频广播,是指蓝牙音箱(主音箱)在接收手机音频播放的同时,通过无线连接信道(BR/EDR Synchronization Scan Channel)将手机的音频广播出去,其他多个音箱(从音箱)能同步播放这个音频,从而摆脱线路的束缚。但由于蓝牙无线连接稳定性差于有线连接,在干扰比较大或者连接距离较远的情况下可能会出现从音箱播放声音的卡顿现象。

现有技术的缺点在于:

在干扰比较大或者连接距离较远的情况下可能会出现音频数据传输错误,导致音频质量较差。

发明内容

本申请实施例提出了一种音频数据恢复方法、装置及蓝牙设备,以解决上述技术问题。

第一个方面,本申请提供了一种音频数据恢复方法,包括如下步骤:

接收音频数据;所述音频数据包括M段帧数据以及每段帧数据对应的CRC校验信息;

在N个重传窗口的所述音频数据均为错误数据时,根据所述N个错误的音频数据中的CRC校验信息对所述音频数据进行恢复;其中,M、N为正整数。

第二个方面,本申请提供了一种音频数据恢复装置,包括:

接收模块,用于接收音频数据;所述音频数据包括M段帧数据以及每段帧数据对应的CRC校验信息;

恢复模块,用于在N个重传窗口的所述音频数据均为错误数据时,根据所述N个错误的音频数据中的CRC校验信息对所述音频数据进行恢复;其中,M、N为正整数。

第三个方面,本申请提供了一种蓝牙设备,包括上述音频数据处理装置。

有益效果如下:

本申请实施例所提供的音频数据恢复方法、装置及蓝牙设备,通过在传输的音频数据包中加入若干个CRC校验信息来恢复错误的数据,本申请在数据重传多次依然错误的情况下并不将多次重传的错误数据丢掉,而是充分利用多次重传的错误数据中的冗余信息进行纠错、实现错误音频数据恢复,有效增加音频广播的传输距离,即使在干扰情况下也能避免音频播放卡顿的情况出现。

附图说明

下面将参照附图描述本申请的具体实施例,其中:

图1示出了本申请实施例中音频数据恢复方法实施的示意图;

图2示出了本申请实施例的音频数据恢复装置的结构示意图;

图3示出了本申请实施例的蓝牙设备的结构示意图;

图4示出了Host层接收到三个错误蓝牙数据包的结构示意图;

图5示出了SBC帧码流格式示意图;

图6示出了SBC解码器的结构框图;

图7示出了三个错误帧数据的处理流程示意图;

图8给出SBC帧解码后子带样本分布示意图。

具体实施方式

为了使本申请的技术方案及优点更加清楚明白,以下结合附图对本申请的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本申请的一部分实施例,而不是所有实施例的穷举。并且在不冲突的情况下,本说明中的实施例及实施例中的特征可以互相结合。

发明人在发明过程中注意到:

蓝牙音频广播传输为了解决数据传输过程中出现的丢包和错包问题,通过数据重传机制来保证音频质量。但现有做法会把多次重传错误数据丢掉,既浪费了多次重传的数据、又不能成功恢复数据,导致音频播放卡顿。

发明人想到,错误的数据包里可能并不是所有的数据都是错误的,而且重传的多个错误的数据包中,出错的位置可能也是不同的,因此,提出了可以在传输的数据包中分段加入若干个循环冗余(CRC,Cyclic Redundancy Check)校验信息,利用多次重传的错误数据中的CRC校验信息来恢复错误的数据,根据CRC校验信息组合出尽量完整的数据包。

针对现有技术的不足,本申请实施例提出了一种音频数据恢复方法、装置及蓝牙设备,下面进行说明。

实施例1

图1示出了本申请实施例中音频数据恢复方法实施的示意图,如图所示,所述方法包括:

步骤101、接收音频数据;所述音频数据包括M段帧数据以及每段帧数据对应的CRC校验信息;

步骤102、在N个重传窗口的所述音频数据均为错误数据时,根据所述N个错误的音频数据中的CRC校验信息对所述音频数据进行恢复;其中,M、N为正整数。

本申请实施例所提供的音频数据恢复方法,通过在传输的数据包中分段加入若干个CRC校验字节来恢复错误的音频数据。

具体实施时,音频数据通过蓝牙传输时,蓝牙信号的接收端的控制器CONTROLLER层在每个接收窗口的过程中,如果收到正确的数据包则直接上传给主机HOST层;如果预设数量的重传窗口(假设重传窗口为三个)都没有收到正确的数据,则将错误的数据全部上传至HOST层,HOST层根据CRC校验信息组合出尽量完整的蓝牙数据包。

音频数据包括M段帧数据,每段帧数据对应有CRC校验信息,在具体实施时,所述CRC校验信息可以在对应的帧数据尾部或者头部,也可以集中放置在音频数据的尾部或者头部,对于CRC校验信息在音频数据中的位置本申请不作限制。

本申请在数据重传多次依然错误的情况下并不将多次重传的错误数据丢掉,而是充分利用多次重传的错误数据中的冗余信息进行纠错,实现错误音频数据恢复,有效增加音频广播的传输距离,即使在干扰情况下也能避免音频播放卡顿的情况出现。

实施中,所述根据N个错误的音频数据中的CRC校验信息对所述音频数据进行恢复,包括:

根据每段帧数据对应的N个CRC校验信息对每段帧数据进行恢复,直至完成M段帧数据的恢复。

由于N次重传的音频数据为相同数据的冗余传输,因此,可以根据每段帧数据对应的N个CRC校验信息对每段帧数据进行恢复。

假设重传了3次音频数据,音频数据包括5段帧数据,那么,对于每段帧数据而言都对应有3个CRC校验信息,例如:对于第一段帧数据而言,包括3个CRC校验信息分别为:第一个音频数据中第一段帧数据的CRC校验信息,第二个音频数据中第一段帧数据的CRC校验信息,第三个音频数据中第一段帧数据的CRC校验信息。本申请实施例根据这3个CRC校验信息可以对第一段帧数据进行恢复。

实施中,所述根据每段帧数据对应的N个CRC校验信息对每段帧数据进行恢复,包括:

检测每段帧数据对应的N个错误数据中的CRC校验信息;

对于每段帧数据,若所述N个错误数据中存在至少一个所述帧数据的CRC校验信息正确,则保留该正确的帧数据;若N个错误数据中所述帧数据的CRC校验信息均错误,则将所述N个错误数据中的所述帧数据上传至解码器进行恢复。

例如:假设音频数据重传了3次,共收到3个错误数据包A、B、C,那么,

对于第一段帧数据,如果A数据包中第一段帧数据的CRC校验信息错误,可以检查B数据包中第一段帧数据的CRC校验信息是否正确;如果正确,说明B数据包中第一段帧数据是正确的数据,则将B数据包中第一段帧数据保留作为正确的第一段帧数据;如果B数据包中第一段帧数据的CRC校验信息错误,则继续检查C数据包中第一段帧数据是否正确;如果正确,说明C数据包中第一段帧数据是正确的数据,则将C数据包中第一段帧数据保留作为正确的第一段帧数据;如果C数据包中第一段帧数据的CRC校验信息错误,则将A、B、C数据包中的第一段帧数据全部上传至解码器。

对于第二段帧数据,如果A数据包中第二段帧数据的CRC校验信息错误,可以检查B数据包中第二段帧数据的CRC校验信息是否正确;如果正确,说明B数据包中第二段帧数据是正确的数据,则将B数据包中第二段帧数据保留作为正确的第二段帧数据;如果B数据包中第二段帧数据的CRC校验信息错误,则继续检查C数据包中第二段帧数据是否正确;如果正确,说明C数据包中第二段帧数据是正确的数据,则将C数据包中第二段帧数据保留作为正确的第二段帧数据;如果C数据包中第二段帧数据的CRC校验信息错误,则将A、B、C数据包中的第二段帧数据全部上传至解码器。

对于其他段帧数据按照上面描述的过程以此类推。

实施中,所述解码器对所述N个错误数据中的帧数据进行恢复的过程,包括:

在N=1时,检测所述帧数据的帧头CRC校验信息,如果该帧头CRC校验信息正确则正常解码,否则进行坏帧(或称错误数据)恢复;

在N>1时,利用N个所述帧数据的CRC校验信息在子带样本域进行纠错后解码,若错误样本超过预设值则进行坏帧恢复。

具体实施时,如果解码器收到一个坏帧,则检测该帧数据的帧头CRC;如果帧头CRC通过则正常解码,否则送入后续PLC算法对这个坏帧数据进行恢复。如果解码器收到两个或三个坏帧,则可以利用多帧冗余信息在子带样本域进行纠错,纠错后再正常解码。如果错误样本太多、无法纠错,则送入后续PLC算法对这个坏帧数据进行恢复。

实施中,所述利用N个所述帧数据的CRC校验信息在子带样本域进行纠错,包括:

在至少一个所述帧数据的帧头CRC校验信息正确时,将该帧的帧头和Scalefactor信息复制到其他帧;

解码N个所述帧数据获得所述帧数据的多个子带样本;

根据所述多个子带样本恢复错误样本。

具体实施时,所述根据多个子带样本恢复错误样本,可以为:检测到一个子带样本出错后,可以采用重复同一子带的前一个样本、或者取同一子带的前一样本和后一样本简单线性插值来恢复出错样本,还可以采用更复杂的插值方法(例如:基于AR模型的插值方法)来恢复出错样本。

解码得到多个子带样本之后,可以逐个样本比较并记录数组,例如:

如果三个子带样本相同,则记录数组值为0;

如果两个子带样本相同,则用相同的子带样本替换不同的子带样本,记录数组值为2;

如果三个子带样本均不相同,则记录数组值为1,错误样本计数加1。

当比较完所有子带样本后,判断错误样本数量是否大于预设值,如果大于预设值说明错误样本太多,则按丢帧进行PLC处理;如果没有超过预设值则遍历数组,对数组值为1的错误样本进行纠错处理。

实施中,所述进行坏帧恢复具体可以为采用丢包隐藏PLC算法来恢复坏帧。

具体实施时,可以使用全零数据帧或者重复前一个好帧数据来恢复当前坏帧数据,也可以采用其他丢包隐藏方法恢复,本申请对此不作限制。

实施中,所述音频数据预先采用SBC编码器编码,所述M段帧数据以及每段帧数据对应的CRC校验信息为M个SBC帧以及每个SBC帧对应的CRC校验信息。

在传输音频数据之前,通常需要对音频数据进行压缩,蓝牙广播采用2DH5包,每包有效载荷payload长度为679byte。本申请实施例为了节省带宽可以采用SBC编码器进行音频数据的压缩,具体压缩过程本申请在此不做赘述。

蓝牙广播2DH5包通常会包括多个SBC码流帧,SBC每帧固定长度为128样本,对应时间长度为2.9ms(假设44.1kHz采样频率)。

采用SBC编码器压缩后的音频数据,包括M个SBC帧,每个SBC帧对应有CRC校验信息。具体实施时,每个SBC帧可以对应加入2字节的CRC16。

本申请实施例可以通过在蓝牙传输包中分段加入若干个CRC校验字节来恢复错误的蓝牙传输数据,当重传的错误的数据包通过CRC校验信息无法恢复时,再通过后续SBC解码器容错处理方法对错误的SBC码流进行处理。

实施例2

基于同一发明构思,本申请实施例还提供了一种音频数据恢复装置,由于该音频数据恢复装置解决问题的原理与本申请实施例1所提供的方法相似,因此该音频数据处理装置的实施可以参见方法的实施,重复之处不再赘述。

图2示出了本申请实施例的音频数据恢复装置的结构示意图,如图所示,所述装置包括:

接收模块201,用于接收音频数据;所述音频数据包括M段帧数据以及每段帧数据对应的CRC校验信息;

恢复模块202,用于在N个重传窗口的所述音频数据均为错误数据时,根据所述N个错误的音频数据中的CRC校验信息对所述音频数据进行恢复;其中,M、N为正整数。

本申请实施例所提供的音频数据恢复装置,在数据重传多次依然错误的情况下并不将多次重传的错误数据丢掉,而是充分利用多次重传的错误数据中的冗余信息进行纠错、实现错误音频数据恢复,有效增加音频广播的传输距离,即使在干扰情况下也能避免音频播放卡顿的情况出现。

实施中,所述恢复模块用于在N个重传窗口的所述音频数据均为错误数据时,根据每段帧数据对应的N个CRC校验信息对每段帧数据进行恢复,直至完成M段帧数据的恢复。

实施中,所述恢复模块,包括:

检测单元,用于检测每段帧数据对应的N个错误数据中的CRC校验信息;

处理单元,用于对于每段帧数据,在所述N个错误数据中存在至少一个所述帧数据的CRC校验信息正确时,保留该正确的帧数据;在N个错误数据中所述帧数据的CRC校验信息均错误时,将所述N个错误数据中的所述帧数据上传至解码器进行恢复。

实施中,所述解码器,包括:

第一恢复单元,用于在N=1时,检测所述帧数据的帧头CRC校验信息,如果该帧头CRC校验信息正确则正常解码,否则发送至第三恢复单元;

第二恢复单元,用于在N>1时,利用N个所述帧数据的CRC校验信息在子带样本域进行纠错后解码,若错误样本超过预设值则发送至第三恢复单元;

第三恢复单元,用于进行坏帧恢复。

实施中,所述第二恢复单元,包括:

复制子单元,用于在至少一个所述帧数据的帧头CRC信息正确时,将该帧的帧头和Scalefactor信息复制到其他帧;

解码子单元,用于解码N个所述帧数据获得所述帧数据的多个子带样本;

恢复子单元,用于根据所述多个子带样本恢复错误样本;

发送子单元,用于在错误样本超过预设值时将错误样本发送至第三恢复单元。

实施中,所述音频数据预先采用SBC编码器编码,所述M段帧数据以及每段帧数据对应的CRC校验信息为M个SBC帧以及每个SBC帧对应的CRC校验信息。

实施例3

基于同一发明构思,本申请实施例还提供了一种蓝牙设备,由于该蓝牙设备解决问题的原理与本申请实施例1所提供的方法相似,因此该蓝牙设备的实施可以参见方法的实施,重复之处不再赘述。

图3示出了本申请实施例的蓝牙设备的结构示意图,如图所示,本申请实施例所提供的蓝牙设备,包括如本申请实施例2中的音频数据恢复装置。

在具体实施时,本申请实施例中的蓝牙设备可以包括蓝牙耳机、蓝牙音箱、蓝牙网关、蓝牙MP3、蓝牙闪存盘、蓝牙车载设备、蓝牙适配器等,本申请对此不作限制。

本申请实施例所提供的蓝牙设备,在数据重传多次依然错误的情况下并不将多次重传的错误数据丢掉,而是充分利用多次重传的错误数据中的冗余信息进行纠错、实现错误音频数据恢复,有效增加音频广播的传输距离,即使在干扰情况下也能避免音频播放卡顿的情况出现。

实施例4

图4示出了Host层接收到三个错误蓝牙数据包的结构示意图,如图所示,假设每个蓝牙数据包包括6个SBC帧,每个SBC帧码流后面紧跟2个字节的CRC校验。其中,每个SBC帧的CRC校验可以放在SBC帧的尾部(如图4所示),或者,放在SBC帧的头部,或者集中放置在蓝牙数据包的尾部或头部。

如图4所示,错误帧以加粗形式区别显示,第一个数据包中有三个正确的SBC帧(分别为1、4、6帧)、有三个错误的SBC帧(分别为2、3、5帧);第二个数据包中有四个正确的SBC帧(分别为1、2、5、6帧)、有两个错误的SBC帧(分别为3、4帧);第三个数据包中有三个正确的SBC帧(分别为2、5、6帧)、有三个错误的SBC帧(分别为1、3、4帧)。

由于这三个数据包是相同SBC码流的三次冗余传输,按照如下所述的组帧过程即可尽可能多的恢复成正确的SBC码流,例如:第1、2、4、5、6帧共5帧可以得到正确数据,第3帧由于三个数据包中数据均错误导致无法得到正确数据。

对于接收的三个错误数据包(Packet1、Packet2、Packet3),依次检查每个SBC帧对应的CRC校验和。

如果第一个数据包中CRC校验通过,则保留这个正确的SBC帧数据;如果第一个数据包中CRC校验没有通过,继续检查第二个数据包中对应位置SBC帧的CRC校验和;

如果第二个数据包中CRC校验通过,则保留这个正确的SBC帧数据;如果第二个数据包中CRC校验没有通过,继续检查第三个数据包中对应位置SBC帧的CRC校验和;

如果第三个数据包中CRC校验通过,则保留这个正确的SBC帧数据;如果三个数据包全部CRC校验没有通过,则将这三个错误的SBC帧数据上传至SBC解码器。

通过对三个错误数据包中每个SBC帧CRC校验进行检查,最终会上传给SBC解码器一个正确的SBC帧、或者三个错误的SBC帧数据。

如果Host层接收到的是两个错误数据包,则通过对两个错误数据包中每个SBC帧CRC校验进行检查,就会上传给SBC解码器一个正确的SBC帧或者两个错误的SBC帧数据。

如果Host层接收到的是一个错误数据包,则通过对一个错误数据包中每个SBC帧CRC校验进行检查,就会上传给SBC解码器一个正确的SBC帧或者一个错误的SBC帧数据。

如果Host层没有接收到数据包,即三个数据包都丢了,则通知SBC解码器,当前SBC帧数据丢失,需要使用PLC算法来补偿。

图5示出了SBC帧码流格式示意图,如图所示,SBC帧码流包括帧头Frame Header及帧头CRC、比例因子Scalefactor、音频样本Audio Sample。其中,帧头CRC只保护帧头和Scalefactor,不保护Audio sample。

图6示出了SBC解码器的结构框图,如图所示,所述SBC解码器在接收到比特流Bitstream之后,先进行比特流解码Bitstream unpacking,然后将解码得到的比例因子Scalefactor和子带样本Subband samples发送至自适应脉冲编码调制APCM解码器,同时根据比例因子Scalefactor计算比特分配信息Derive allocation,再基于比特分配信息计算量化Levels并发送至APCM解码器,然后反量化子带样本Modified Subband samples,发送至合成滤波器模块Polyphase synthesis最后输出。

SBC解码器对错误的帧数据处理如下:

如果收到一个错误的帧数据,则检测SBC帧头CRC校验(Frame Header CRC),如果CRC通过则正常解码,如果CRC没有通过则利用PLC算法对该帧数据进行恢复;

如果收到两个或三个错误的帧数据,则利用多帧冗余信息在子带样本域进行纠错,纠错后再正常解码;如果错误样本太多导致无法纠错,则利用PLC算法对帧数据进行恢复。

其中,错误样本纠错指的是位于APCM解码模块和合成滤波器模块之间的子带样本域,而不是时域PCM。

以三个错误的帧数据的处理为例说明如下:

图7示出了三个错误帧数据的处理流程示意图,如图所示,假设SBC解码器收到三个错误的帧数据,处理流程如下:

检测三个帧数据的帧头Header CRC;

如果三个帧数据的帧头CRC全部错误,则将当前帧按丢帧进行PLC处理;

如果有一个帧数据CRC通过,则将该帧的帧头加scalefactor信息复制到其他两帧码流;然后解码三帧码流获得三帧的子带样本,逐个样本比较,记录数组errPatern;

如果三个样本相同,errPatern[i]=0;

如果两个样本相同,errPatern[i]=2,则用相同的样本替换不同的样本;

如果三个样本都不相同,errPatern[i]=1,则错误样本total_err_samples++;

判断错误样本数量total_err_samples是否大于预设值threhold_err_samples;

如果错误样本数量total_err_samples大于预设值threhold_err_samples,则说明错误样本太多,按丢帧进行PLC处理;否则,遍历数组errPatern,如果errPatern[i]==1,则进行纠错处理。

检测到其中一个子带样本(block n)出错后,可以采用重复同一子带的前一个样本,或者取同一子带的前一个样本(block n-1)和后一个样本(block n+1)简单线性插值来恢复出错样本,也可以采用更复杂基于AR模型的插值方法来恢复出错样本。

图8给出SBC帧解码后子带样本分布示意图,SBC编码按照8个子带立体声编码,block n-1,block n,block n+1表示时间前后相邻三个block,每个block包括8个子带样本,分别按左、右声道来存储。

如果SBC解码器接收到当前帧数据丢失或者错误,则可以通过PLC算法来恢复这帧数据。

具体实施时,可以使用全零数据帧或者重复前一个好帧数据来恢复当前丢弃帧数据。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

15页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:语音信号的发送方法、装置、设备及可读存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类