一种音频丢包隐藏方法、装置及蓝牙接收机与流程

文档序号:21398671发布日期:2020-07-07 14:31阅读:437来源:国知局
一种音频丢包隐藏方法、装置及蓝牙接收机与流程

本申请涉及音频通信技术领域,尤其涉及一种音频丢包隐藏方法、装置及蓝牙接收机。



背景技术:

蓝牙音频传输是指蓝牙音频发送端通过无线连接信道将音频传输到蓝牙音频的接收端,但由于蓝牙是无线连接,在干扰比较大或者连接距离较远的情况下可能会出现蓝牙音频发送端发送出去的部分音频数据包在蓝牙音频接收端没有接收到,就是说这部分音频数据包丢失了,这种数据包的丢失会使音频质量明显下降。

为了解决音频数据包丢失的问题,现有技术中通常采用基于接收端音频数据的包隐藏技术,如图1所示,将丢失的数据填零并进行丢包隐藏运算后解码。

在现有技术中的丢包隐藏运算中,简单算法有噪声替换、波形替换和数据包重复等,先进的估计算法有在压缩域中插值和正弦音频建模插值等。

图2中示出了一种基于gapes(gapped-dataamplitudeandphaseestimation,间断数据丢失幅度和相位估计)算法来进行音频的丢包隐藏方案的流程图。

如图2所示,现有技术中基于gapes算法的丢包隐藏方案如下:如果当前数据包是好包(正确数据包),则对当前包频谱数据直接作时频逆变换得到重构的时域信号。此外,为了恢复后面的坏包(非正确数据包),需要把好包频谱数据保存到缓冲区里面。如果当前包是坏包,则根据缓冲的好包数据频谱对每个频带的频谱数据进行gapes估计。

该方法同现有技术中的其他方法相比,丢包隐藏质量有明显提高,甚至在30%丢包率下也有不错效果。但发明人认为,该方法计算复杂度太高,不适合在计算资源不足的嵌入式实时系统,比如蓝牙音箱上使用。



技术实现要素:

本申请实施例中提供了一种音频丢包隐藏方法、装置及蓝牙接收机,用于在解决上述至少一种问题。

根据本申请实施例的第一个方面,提供了一种音频丢包隐藏方法,包括:将音频数据从时域变换至频域后,判断各数据包是否为正确数据包;各数据包在频域上划分为多个频带;如果为非正确数据包,则将非正确数据包中的多个频带划分为第一频带和第二频带;采用gapes算法恢复第一频带中的数据;采用简单算法恢复第二频带中的数据。

可选地,将非正确数据包中的多个频带划分为第一频带和第二频带包括:确定包括所述非正确数据包在内的连续n个数据包中的正确数据包,以及所述正确数据包中的各个频带中的平均能量;将所述正确数据包中的各个频带中的平均能量作为非正确数据包中的对应位置频带的能量;再根据所述非正确数据包中各频带的能量,确定第一频带和第二频带。

可选地,在判断各数据包是否为正确数据包之后,在采用gapes算法恢复第一频带中的数据;采用简单算法恢复第二频带中的数据之前,还包括:缓冲正确数据包。

可选地,采用gapes算法恢复第一频带中的数据;采用简单算法恢复第二频带中的数据,包括:将非正确数据包和正确数据包按接收顺序依次从输入位置input输入至处理队列;处理队列包括p个位置;处理队列中一个位置用于存放一个数据包;p个位置中包括输入位置input、输出位置output和检测位置n;检测位置位于输入位置和输出位置之间的固定位置;p大于等于2;当在检测位置检测到非正确数据包时,根据包括检测位置的非正确数据包的连续n个数据包,采用gapes算法恢复连续n个数据包中各个非正确数据包中的第一频带中的数据;采用简单算法恢复连续n个数据包中各个非正确数据包中的第二频带中的数据;n为大于等于1的整数。

可选地,包括非正确数据包的连续n个数据包为:从检测位置的非正确数据包前x个数据包开始的连续n个数据包,x大于等于0且小于等于n-1。

可选地,音频丢包隐藏方法还包括:将估计后的、从检测位置开始的n-x个数据包,按顺序输出。

可选地,将估计后的n-x个数据包,按顺序输出包括:将估计后的n-x个数据包,依次从输出位置输出;其中,处理队列的检测位置n与处理队列的输出位置之间距离为s个位置,检测位置n与输入位置之间距离为t个位置;s为大于等于1,小于等于t+1的整数;t为大于等于0的整数。

可选地,p为12,n为8;s为6,t为5,x为2。

根据本申请实施例的第二个方面,提供了一种音频丢包隐藏装置,包括:判断模块,用于将音频数据从时域变换至频域后,判断各数据包是否为正确数据包;各数据包在频域上划分为多个频带;分类模块,用于在为非正确数据包时,根据非正确数据包的相邻正确数据包中的各个频带数据,将非正确数据包中的多个频带划分为第一频带和第二频带;恢复模块,用于采用gapes算法恢复第一频带中的数据;采用简单算法恢复第二频带中的数据。

根据本申请实施例的第三个方面,提供了一种蓝牙接收机,包括:天线;存储器;处理器;一个或多个模块,该一个或多个模块被存储在该存储器中,并被配置成由该一个或多个处理器执行,该一个或多个模块包括用于执行如上述的方法中各个步骤的指令。

采用本申请实施例中提供的音频丢包隐藏方法、装置及蓝牙接收机,对于非正确数据包,划分为第一频带和第二频带;采用gapes算法恢复第一频带中的数据;采用简单算法恢复第二频带中的数据。从而降低计算复杂度,使得音频丢包隐藏方案适合在计算资源不足的嵌入式实时系统,比如蓝牙音箱上使用。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1示出了现有技术中的接收端实现音频丢包隐藏的接收机示意图;

图2示出了现有技术中基于gapes算法的丢包隐藏方案的流程图;

图3示出了根据本申请实施例的音频丢包隐藏方法的流程图;

图4示出了本申请实施例中的频域分类后的数据结构示意图;

图5示出了本发明实施例中的一种gapes算法的原理示意图;

图6示出了本申请实施例中的改进的gapes算法的原理示意图;

图7示出了改进的gapes和传统的gapes所需的mips对比曲线;

图8示出了根据本申请实施例的音频丢包隐藏装置的结构示意图;

图9示出了根据本申请实施例的蓝牙接收机的结构示意图。

具体实施方式

在实现本申请的过程中,发明人发现,现有技术中的基于gapes算法来进行音频的丢包隐藏的方案中,对于坏包,直接根据缓冲的好包数据频谱对每个频带的频谱数据进行gapes估计。这种方法计算复杂度太高,不适合在计算资源不足的嵌入式实时系统,比如蓝牙音箱上使用。

另外,在现有技术中采用的gapes算法中,为了数据流不断,要求针对包括坏包在内的连续n包的gapes估计必须在1个包的时间内完成计算,这样才能保证上一包输出后估计好的数据包能接上,这样才能满足实时系统的输出要求。这样对系统的mips(millioninstructionspersecond,单字长定点指令平均执行速度)要求很高,不利于在计算资源不足的嵌入式实时系统,比如蓝牙音箱上使用。

因此本专利在传统的基于gapes算法的音频丢包隐藏方案基础上提出了一种低复杂度gapes算法的实现方法,以便在计算资源不足的嵌入式实时系统(比如蓝牙音箱)上实时实现高质量的音频丢包隐藏。

为了达到上述目的,本申请实施例中提供了一种音频丢包隐藏方法,包括:将音频数据从时域变换至频域后,判断各数据包是否为正确数据包;各数据包在频域上划分为多个频带;如果为非正确数据包,则将非正确数据包中的多个频带划分为第一频带和第二频带;采用gapes算法恢复第一频带中的数据;采用简单算法恢复第二频带中的数据。通过将坏包中的数据进一步分类处理,从而降低计算复杂度,使得音频丢包隐藏方案适合在计算资源不足的嵌入式实时系统,比如蓝牙音箱上使用。

在本申请中,时频变换一般采用fft,在fft变换之前,先对时域信号加分析窗,然后进行fft变换。时频逆变换,一般采用ifft,ifft变换后,对信号加合成窗,然后进行重叠相加处理(overlap-add),获得重构时域信号。由于上述技术都是数字信号处理中常用技术,在此不作详细描述。

图3示出了根据本申请实施例的音频丢包隐藏方法的流程图。如图3所示,根据本申请实施例的音频丢包隐藏方法包括:

将音频数据从时域变换至频域(dstft)后,判断各数据包是否为正确数据包;各数据包在频域上划分为多个频带;如果为非正确数据包,则将非正确数据包中的多个频带划分为第一频带,即,tonebin和第二频带,即,noisebin;采用gapes算法恢复第一频带中的数据;采用简单算法恢复第二频带中的数据。

具体地,在频域对频带(bin)进行频域分类:首先,通过频域分类处理,把频域的bin分成两类,一类为tonebin用gapes估计,另外一类为noisebin用简单估计(计算量远低于gapes的方法)甚至直接赋零值。这样计算量会非常明显的下降。

图4示出了本申请实施例中的频域分类后的数据结构示意图。在将每个数据包用1024点fft产生513个频域bin后,判断出n和n+2为坏包,并且将n和n+2中的第4和第8个频带分为tonebin;其余频带为noisebin。

例如,在一个实例中,用1024点fft产生513个频域bin,经过频域分类处理后分成了30个tonebin用gapes估计,483个noisebin用简单估计(使用噪声整形和随机相位方法),结果计算量下降了93%,由原来的4300mips降低到300mips,并确认10%丢错包率下音频质量和513bin都使用gapes进行估计基本没有区别。

gapes算法的详细介绍可以参见hadasofir和davidmalah在2005年发表的论文“packetlossconcealmentforaudiostreamingbasedonthegapesalgorithm”,此处不再赘述。

在具体实施时,在判断各数据包是否为正确数据包之后,在采用gapes算法恢复第一频带中的数据;采用简单算法恢复第二频带中的数据之前,还包括:缓冲正确数据包。

缓冲正确数据包是为了在接下来的步骤中进行频域分类以及采用gapes算法恢复出丢包的tonebin频谱数据。

在具体实施时,频域分类可以包括以下步骤:确定包括所述非正确数据包在内的连续n个数据包中的正确数据包,以及所述正确数据包中的各个频带中的平均能量;将所述正确数据包中的各个频带中的平均能量作为非正确数据包中的对应位置频带的能量;再根据所述非正确数据包中各频带的能量,确定第一频带(tonebin)和第二频带(noisebin)。

具体的,根据非正确数据包中各频带的能量,确定第一频带(tonebin)和第二频带(noisebin)可以采用多种方式,例如,将各频带按能量从大到小排序,选择前n个频带作为第一频带,其余的作为第二频带;或者设置能量阈值,将各频带的能量与能量阈值进行比较,将超过能量阈值作为第一频带,其余作为第二频带。频域分类的具体步骤可以采用s.u.ryu,andk.rose于2007年发表的论文″anmdctdomainframe-lossconcealmenttechniqueformpegadvancedaudiocoding.″中介绍的峰值检测(peakdetection)方法,本申请在此不赘述。

在具体实施时,采用gapes算法恢复第一频带中的数据;采用简单算法恢复第二频带中的数据,可以包括:将非正确数据包和正确数据包按接收顺序依次从输入位置input输入至处理队列;处理队列包括p个位置;处理队列中一个位置用于存放一个数据包;p个位置中包括输入位置input、输出位置output和检测位置n;检测位置位于输入位置和输出位置之间的固定位置;p大于等于2;即,输入位置和检测位置可以重合;当在检测位置检测到非正确数据包时,根据包括检测位置的非正确数据包的连续n个数据包,采用gapes算法恢复连续n个数据包中各个非正确数据包中的第一频带中的数据;采用简单算法恢复连续n个数据包中各个非正确数据包中的第二频带中的数据;n为大于等于1的整数。

在具体实施时,音频丢包隐藏方法还包括:将估计后的、从检测位置开始的n-x个数据包,按顺序输出。

为了便于理解,暂定gapes算法使用的总包数为8(n-2,n-1,n,n+1,n+2,n+3,n+4,n+5),其中前两包(n-2和n-1)为已经过恢复的好包,当第3包(n)为坏包时启动gapes估计,第3包到第8包(n,n+1,n+2,n+3,n+4,n+5)这6包中的坏包数大于等于1(n,n+2)并且小于等于6,并且一次gapes计算恢复出这6包中的所有坏包数据。

图5示出了本发明实施例中的一种gapes算法的原理示意图。

数据是从input以包为单位从n+5位置流入buffer,同时从output以包为单位从n-1位置流出;当图示中位置n出现坏包时启动gapes估计;n-1是作为output点。

发明人认为,由于是将n-1作为输出点,因此要求针对包括坏包在内的连续n包的gapes估计必须在1个包的时间内完成计算,这样才能保证上一包输出后估计好的数据包能接上,这样才能满足实时系统的输出要求。这样对系统的mips(millioninstructionspersecond,单字长定点指令平均执行速度)要求很高,不利于在计算资源不足的嵌入式实时系统,比如蓝牙音箱上使用。

为了克服上述问题,本申请实施例中还提出了另一种改进的gapes算法。

在具体实施时,将估计后的n-x个数据包,按顺序输出可以包括:将估计后的n-x个数据包,依次从输出位置输出;其中,处理队列的检测位置n与处理队列的输出位置之间距离为s个位置,检测位置n与输入位置之间距离为t个位置;s为大于等于1,小于等于t+1的整数;t为大于等于0的整数。

图6示出了本申请实施例中的改进的gapes算法的原理示意图。如图6所示,处理队列的长度p为12,n为8;s为6,t为5,x为2。数据从input以包为单位从n+5位置流入buffer,同时从output以包为单位从n-6位置流出;当图示中位置n出现坏包时启动gapes估计;将n-6作为output点。因此,在gapes计算的过程中,有6包好的数据n-6,n-5,n-4,n-3,n-2,n-1可以输出,所以能够保持数据流不断,这样就给gapes计算赢得了6包的计算时间;使得包括坏包n在内的6包(n,n+1,n+2,n+3,n+4,n+5)的gapes估计能在6个包的时间内完成计算就可;这样对mips的需求就会降低到原来的1/6。

应当理解,上述示例中的p、n、s、x的数值均为示例的目的而示出,并非用于限制本申请。

为了更加直观的反映经过频域分类后,改进的gapes估计相对于传统的gapes估计在降低mips上的优势,我们把n,n+1,n+2,n+3,n+4,n+5这6包中不同丢包数下两者需要的mips对比画成曲线,如图7所示。通过频域分类可以把mips需求降到了图示实线的水平,但是这个计算量水平也是很大的(不同坏包数都超过了290mips)。进一步通过改进的gapes算法把mips平均至多个包,可以把mips降到了虚线的水平(80mips以下)。

采用本申请实施例中的音频丢包隐藏方法,经过1、在频域对频带进行频域分类;2、对tonebin使用改进的gapes来进行估计后,丢包隐藏方法的计算量得到极大的下降,并达到了在mips资源有限的的嵌入式实时系统中实时实现的目的。

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

图8示出了根据本申请实施例的音频丢包隐藏装置的结构示意图。如图8所示,音频丢包隐藏装置800包括:判断模块801,用于将音频数据从时域变换至频域后,判断各数据包是否为正确数据包;各数据包在频域上划分为多个频带;分类模块802,用于在为非正确数据包时,根据非正确数据包的相邻正确数据包中的各个频带数据,将非正确数据包中的多个频带划分为第一频带和第二频带;恢复模块803,用于采用gapes算法恢复第一频带中的数据;采用简单算法恢复第二频带中的数据。

采用本申请实施例中提供的音频丢包隐藏装置,对于非正确数据包,划分为第一频带和第二频带;采用gapes算法恢复第一频带中的数据;采用简单算法恢复第二频带中的数据。从而降低计算复杂度,使得音频丢包隐藏方案适合在计算资源不足的嵌入式实时系统,比如蓝牙音箱上使用。

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

图9示出了根据本申请实施例的蓝牙接收机的结构示意图。如图9所示,根据本申请实施例的蓝牙接收机900包括:天线901;存储器902;处理器903;一个或多个模块,该一个或多个模块被存储在该存储器中,并被配置成由该一个或多个处理器执行,该一个或多个模块包括用于执行如上述的方法中各个步骤的指令。

采用本申请实施例中提供的蓝牙接收机,对于非正确数据包,划分为第一频带和第二频带;采用gapes算法恢复第一频带中的数据;采用简单算法恢复第二频带中的数据。从而降低计算复杂度,使得音频丢包隐藏方案适合在计算资源不足的嵌入式实时系统,比如蓝牙音箱上使用。

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

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

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

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

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

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

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