具体实施方式
基于本公开的音频编解码器是可扩缩的并且在频带间分配可用比特。另外,音频编解码器基于重要性对这些频带中每一个频带的频率区域进行排序。如果发生比特去除,那么那些具有更高重要性的频率区域将已经在比特流中首先被打包。以这种方式,即使发生比特去除,更有用的音频将被保持。音频编解码器的这些和其他细节在这里被公开。
本公开的各种实施例可以在诸如音频会议、视频会议和流媒体(包括流式音乐或语音)等领域中找到有用的应用。因此,本公开的音频处理设备可包括音频会议端点、视频会议端点、音频回放设备、个人音乐播放器、计算机、服务器、电信设备、蜂窝电话、个人数字助理、VoIP电话设备、呼叫中心设备、录音设备、语音消息设备等。例如,专用的音频或视频会议端点可受益于所公开的技术。类似地,计算机或其他设备可被用于桌面会议或用于数字音频的发送和接收,并且这些设备也能受益于所公开的技术。
A.会议端点
如上所述,本公开的音频处理设备可以包括会议端点或终端。图2A示意性地示出了端点或终端100的例子。如所示的,会议终端100在网络125上既可以是发送器又可以是接收器。还如所示的,会议终端100可以具有视频会议能力以及音频能力。一般而言,终端100具有麦克风102和扬声器108,并且可以具有各种其他输入/输出设备,诸如摄像机103、显示器109、键盘、鼠标等。另外,终端100具有处理器160、存储器162、转换器电子装置164、和适合于特定网络125的网络接口122/124。音频编解码器110根据用于联网终端的合适协议提供基于标准的会议。这些标准可以完全以存储器162中所存储的软件实现,以及在处理器160上、在专用硬件上、或使用以上的组合来执行。
在传输路径中,麦克风102拾取的模拟输入信号被转换器电子装置164转换为数字信号,并且在终端的处理器160上运行的音频编解码器110具有编码器200,其编码数字音频信号以便在网络125(诸如因特网)上通过发送器接口122传输。如果存在,具有视频编码器170的视频编解码器可以对视频信号执行类似功能。
在接收路径中,终端100具有耦接到音频编解码器110的网络接收器接口124。解码器250解码已接收的音频信号,并且转换器电子装置164将数字信号转换为模拟信号以输出到扬声器108。如果存在,具有视频解码器172的视频编解码器可以对视频信号执行类似功能。
B.音频处理布置
图2B示出一会议布置,其中第一音频处理设备100A(作为发送器)发送压缩的音频信号到第二音频处理设备100B(在该上下文中作为接收器)。发送器100A和接收器100B都具有可扩缩音频编解码器110,其执行类似于用在ITUG.722.1(Polycom Siren 7)或ITU G.722.1.C(Polycom Siren 14)中的变换编码。对于当前讨论,发送器和接收器100A-B可以是音频或视频会议中的端点或终端,但是它们可以是其他类型的设备。
在操作过程中,发送器100A中的麦克风102捕获源音频,并且电子装置采样该音频的块或帧。典型地,音频块或帧的跨度为20毫秒的输入音频。在这一点上,音频编解码器110的正向变换(forward transform)将每个音频帧转换为一组频域变换系数。使用本领域公知技术,这些变换系数然后使用量化器115被量化并且被编码。
一旦被编码,发送器100A使用其网络接口120通过网络125以包的形式将编码后的变换系数发送到接收器100B。任何适当的网络可被使用,包括但不限于IP(因特网协议)网络、PSTN(公共交换电话网络)、ISDN(综合服务数字网络),等等。就它们而言,所发送的包可使用任何适当的协议或标准。例如,包中的音频数据可遵循一个表格的内容,并且构成一个音频帧的所有八比特组可作为一个单元被附加到净荷中。音频帧和包的附加细节在ITU-T建议G.722.1和G.722.1C中有详细说明,这些建议都被结合于此。
在接收器100B,网络接口120接收包。在随后的反向处理中,接收器100B使用去量化器115和编解码器110的逆变换来对编码后的变换系数进行去量化和解码。该逆变换将变换系数转换回时域,以便为接收器的扬声器108产生输出音频。对于音频和视频会议,接收器100B和发送器100A在会议过程中可互换角色。
C.音频编解码器操作
在理解上面提供的音频编解码器110和音频处理设备100后,现在转到讨论根据本公开音频编解码器110如何编码和解码音频。如图3所示,发送器100A中的音频编解码器110接收时域的音频数据(块310)并得到音频数据的音频块或帧(块312)。
使用正向变换,音频编解码器110将音频帧转换为频域中的变换系数(块314)。如上所述,音频编解码器110可使用Polycom Siren技术来执行该变换。然而,音频编解码器可以是任何变换编解码器,包括但不限于MP3、MPEG、AAC等。
当变换音频帧时,音频编解码器110还量化和编码该帧的谱包络(块316)。该包络描述了被编码的音频的幅度,但是它不提供任何相位细节。编码包络谱不需要大量比特,因此它可以容易地完成。还有,如下面将看到的,如果比特在传输中被去除,谱包络可以在后面的音频解码过程中被使用。
当通过网络(诸如因特网)通信时,带宽可能改变,包可能丢失,并且连接速率可能不同。为应对这些挑战,本公开的音频编解码器110是可扩缩的。以这种方式,音频编解码器110在稍后更详细描述的处理中在至少两个频带之间分配可用比特(块318)。编解码器的编码器200量化和编码每个已分配频带中的变换系数(块320),然后基于区域的重要性对每个频率区域的比特重新排序(块322)。总体上,整个编码处理可仅引入大约20ms的延迟。
如果比特因为许多原因被去除,确定比特重要性(其在下面更详细地描述)将提高可在远端再现的音频质量。在将比特重新排序后,比特被打包以用于发送到远端。最后,包被发送到远端,从而下一帧能被处理(块324)。
在远端,接收器100B接收包,根据已知技术处理它们。编解码器的解码器250然后解码和去量化谱包络(块352),并确定在频带间分配的比特(块354)。关于解码器250如何确定频带间比特分配的细节在稍后提供。知道比特分配后,解码器250然后解码和去量化变换系数(块356),并对每个频带中的系数执行逆变换(块358)。最终,解码器250将音频转换回时域以便为接收器的扬声器108产生输出音频(块360)。
D.编码技术
如上所述,所公开的音频编解码器110是可扩缩的并且使用变换编码将音频编码到为至少两个频带分配的比特中。由可扩缩音频编解码器100执行的编码技术的细节在图4的流程图中示出。最开始,音频编解码器110获得输入音频帧(块402),并使用本领域公知的调制重叠变换将该帧转换为变换系数(块404)。如所知道的那样,这些变换系数中的每一个具有幅度并且可以是正的或者负的。音频编解码器110还如前面提到的那样量化和编码谱包络[0Hz到22kHz](块406)。
在这点上,音频编解码器110在两个频带之间分配用于该帧的比特(块408)。当音频编解码器110编码所接收的音频数据时,逐帧地动态确定该比特分配。在这两个频带间的划分频率被选择为使得第一数量的可用比特被分配给低于该划分频率的低频率区域,而剩余比特被分配给高于该划分频率的较高频率区域。
在确定了频带的比特分配后,音频编解码器110在低频带和高频带中使用它们各自分配的比特来编码归一化系数(块410)。然后,音频编解码器110确定这两个频带中的每个频率区域的重要性(块412),并基于所确定的重要性对频域区域进行排序(块414)。
如前所述,音频编解码器110可类似于Siren编解码器并且可将音频信号从时域变换到具有MLT系数的频域。(为了简化,本公开提及的是MLT变换的变换系数,但是其他类型的变换也可被使用,诸如FFT(快速傅立叶变换)和DCT(离散余弦变换)等。)
在采样率下,MLT变换产生大约960个MLT系数(即,每25Hz一个系数)。这些系数基于升序以索引0,1,2,...被安排在频率区域中。例如,第一区域0覆盖频率范围[0到500Hz],下一区域1覆盖[500到1000Hz],以此类推。不同于通常那样简单地以升序发送频率区域,可扩缩音频编解码器110在整个音频的上下文中确定区域的重要性,然后基于从更高重要性到更低重要性的顺序来重新排序这些区域。该基于重要性的重新排列在两个频带中都执行。
确定每个频率区域的重要性可以以许多方式实现。在一个实施例中,编码器200基于量化的信号功率谱来确定区域的重要性。在这种情况下,具有更高功率的区域具有更高重要性。在另一个实施例中,感知模型可被用于确定区域的重要性。该感知模型掩蔽(mask)不被人们感知的无关音频、噪声等等。这些技术将分别在稍后更详细地讨论。
在基于重要性进行排序后,最重要的区域被首先打包,跟随其后是稍微不那么重要的区域,再随其后是不那么重要的区域,以此类推(块416)。最后,已排序和打包的区域可通过网络被发送到远端(块420)。在发送包时,关于变换系数的区域排序的索引信息不需要被发送。而是,索引信息可基于从比特流解码的谱包络在解码器中被计算。
如果发生比特去除,那么接近尾端的被打包的那些比特可被去除。因为区域已被排序,在更重要的区域中的系数已经被首先打包。因此,如果发生比特去除的话,被最后打包的不那么重要的区域更有可能被去除。
在远端,解码器250解码并变换所接收到的数据,该数据已经反映了最初由发送器100A赋予的有次序的重要性。以这种方式,当接收器100B解码包并在时域产生音频时,接收器的音频编解码器110实际上将接收和处理输入音频中的系数的更重要区域的机会得到增加。如所预期的,带宽、计算能力和其他资源的变化在会议过程中可能会改变,因此音频被丢失、不被编码,等等。
如果音频在频带之间进行了比特分配并且按重要性进行了排序,音频编解码器110可以增加更有用的音频将在远端被处理的机会。考虑所有这些,当音频质量由于不管什么原因而降低时,即使有比特从比特流中被去除(即,部分比特流),音频编解码器110仍能生成有用的音频信号。
1.比特分配
如前面提到的,本公开的可扩缩音频编解码器110在频带间分配可用比特。如图4B所示,音频编解码器(110)以特定采样频率(例如,48kHz)在每个约20ms的连续的帧F1,F2,F3等中采样并数字化音频信号430。(实际上,这些帧可能会交叠。)因此,每个帧F1,F2,F3等具有大约960个采样(48kHz×0.02s=960)。音频编解码器(110)然后将每个帧F1,F2,F3等从时域变换到频域。对于给定帧,例如,变换得到如图4C所示的一组MLT系数。对于该帧,大约有960个MLT系数(即,每25Hz一个MLT系数)。由于22kHz的编码带宽,代表高于大约22kHz的频率的MLT变换系数可能被忽略。
在频域中从0到22kHz的该组变换系数必须被编码,因此编码后的信息能够被打包和通过网络传输。在一种布置中,音频编解码器(110)被配置为以最大速率编码全频带音频信号,该最大速率可以是64kbps。还有,如这里所述,音频编解码器(110)在两个频带间分配用于编码帧的可用比特。
为分配这些比特,音频编解码器110可将总共可用比特在第一频带[0到12kHz]和第二频带[12kHz到22kHz]之间划分。在这两个频带间的12kHz的划分频率可主要基于语音音调变化和主观测试而被选择。其他划分频率可被用于给定的实施例。
分割总共可用比特是基于两个频带间的能量比。在一个例子中,对于两个频带间的分割,可有四种可能的模式。例如,64kbps的总共可用比特可被如下划分:
表1
四种模式的比特分配示例
为了在发送到远端的信息中表示出这四种可能性,要求编码器(200)在传输的比特流中使用2比特。当接收时,远端解码器(250)可使用来自这些发送的比特的信息来确定对于给定帧的比特分配。知道比特分配后,解码器(250)然后可基于该确定的比特分配解码信号。
在如图4C所示的另一布置中,音频编解码器(110)被配置为通过在第一频带(LoBand)440[0到14kHz]和第二频带(HiBand)450[14kHz到22kHz]之间划分总可用比特来分配比特。尽管取决于实施例可使用其他值,14kHz的划分频率可基于考虑语音/音乐、嘈杂/干净、男性声音/女性声音等的主观听力质量而被优先选择。在14kHz处将信号划分为HiBand和LoBand也使可扩缩音频编解码器110比得上现有的Siren14音频编解码器。
在该布置中,帧可以使用8种可能的划分模式而逐帧地彼划分。这8种模式(bit_split_mode)是基于两个频带440/450间的能量比。这里,低频带(LoBand)的能量或功率值被标记为LoBandsPower,而高频带(HiBand)的能量或功率值被标记为HiBandsPower。给定帧的特定模式(bit_split_mode)被如下确定:
if(HiBandsPower>(LoBandsPower*4.0))
bit_split_mode=7;
else if (HiBandsPower>(LoBandsPower*3.0))
bit_split_mode=6;
else if (HiBandsPower>(LoBandsPower*2.0))
bit_split_mode=5;
else if(HiBandsPower>(LoBandsPower*1.0))
bit_split_mode=4;
else if(HiBandsPower>(LoBandsPower*0.5))
bit_split_mode=3;
else if(HiBandsPower>(LoBandsPower*0.01))
bit_split_mode=2;
else if(HiBandsPower>(LoBandsPower*0.001))
bit_split_mode=1;
else bit_split_mode=0;
这里,低频带的能量值(LoBandsPower)被计算为,
其中区域索引i=0,1,2,...,25。(因为每个区域的带宽是500Hz,相应的频率范围是0Hz到12500Hz)。可用于现有Siren编解码器的预定义表可被用于量化每个区域的功率以获得quantized_region_power[i]的值。就它而言,高频带的功率值(HiBandsPower)被类似地计算,但使用的频率范围是从13kHz到22kHz。因此,在该比特技术中的划分频率实际上是13kHz,尽管信号频谱是在14kHz处被划分。这样做是为了通过扫描正弦波测试。
两个频带440/450的比特分配然后基于从如上所述的频带功率值的能量比所确定的bit_split_mode被计算。特别地,HiBand频带获得总共可用的64kbps中的(16+4*bit_split_mode)kbps,而LoBand频带获得总共64kbps中的剩余比特。这分解为下列对于8种模式的分配:
表2
8种模式的比特分配示例
为了在发送到远端的信息中表示出这八种可能性,要求发送编解码器(110)在比特流中使用3比特。远端解码器(250)可使用这3比特所指示的比特分配并且可基于该比特分配解码给定帧。
图4D以图表形式示出对于8种可能模式(0-7)的比特分配460。因为帧具有20ms的音频,64kbps的最大比特率对应于每帧中总共有1280比特可用(即,64000bps×0.02s)。同样,使用的模式取决于两个频带功率值474和475的能量比。各种比470也在图4D中被图示出。
因此,如果HiBand的功率值475大于LoBand的功率值474的四倍,那么所确定的bit_split_mode将为“7”。这对应于在可用的64kbps(或1280比特)中给LoBand分配20kbps(或400比特)的第一比特分配464,和对应于给HiBand分配44kbps(或880比特)的第二比特分配465。作为另一个例子,如果HiBand的功率值475大于LoBand功率值474的一半而小于LoBand功率值474的一倍,那么所确定的bit_split_mode将为“3”。这对应于可用的64kbps(或1280比特)中给LoBand分配36kbps(或720比特)的第一比特分配464,和对应于给HiBand分配28kbps(或560比特)的第二比特分配465。
从比特分配的这两种可能的形式可以看到,对于给定实施例,确定如何在两个频带间分配比特可取决于许多细节,并且这些比特分配方案是示例性的。甚至可以想到比特分配可涉及多于两个频带以进一步细化给定音频信号的比特分配。因此,根据本公开的教导,本公开的整个比特分配和音频编码/解码可被扩展到覆盖多于两个频带和更多更少的划分模式。
2.重新排序
如上面提到的,除了比特分配,所公开的音频编解码器(110)重新排序更重要的区域中的系数以使它们被先打包。以这种方式,当因通信问题使比特从比特流中被去除时,更重要的区域被移除的可能性较小。例如,图5A示出传统的将区域打包为比特流500的顺序。如前所述,每个区域具有针对相应频率范围的变换系数。如所示的,在该传统的布置中,频率范围为[0到500Hz]的第一区域“0”首先被打包。覆盖[500到1000Hz]的下一区域“1”接下来被打包,并且该处理被重复直到最后一个区域被打包。结果是传统的比特流500中的区域以频率区域0,1,2,...N的升序被安排。
通过确定区域的重要性并且然后在比特流中首先打包更重要的区域,本公开的音频编解码器110产生如图5B所示的比特流510。这里,最重要的区域(不管其频率范围)被首先打包,紧接着是第二最重要区域。该处理被重复直到最不重要的区域被打包。
如图5C所示,比特可能因为许多原因从比特流510中被去除。例如,比特可能在传输中或在比特流的接收中丢失。然而,剩余比特流仍能被解码出多达已经被保留的那些比特。因为比特已经基于重要性被排序,如果发生去除的话,最不重要的区域的比特520是那些最有可能被去除的。最终,即使如图5C所示的在重新排序的比特流510上发生比特去除,总体音频质量也可被保持。
3.用于确定重要性的功率谱技术
如前面提到的,用于确定已编码音频中区域的重要性的一种技术是使用区域的功率信号来排序区域。如图6A所示,所公开的音频编解码器(110)使用的功率谱模型600计算每个区域(即,区域0[0到500Hz],区域1[500到1000Hz]等)的信号功率(块602)。这么做的一种方法是音频编解码器(110)计算给定区域中每个变换系数的平方之和并使用该和作为该给定区域的信号功率。
在将给定频带的音频转换为变换系数(例如图4的块410所进行的)后,音频编解码器(110)计算每个区域中系数的平方。对于当前变换,每个区域覆盖500Hz并且具有20个变换系数,其每个覆盖25Hz。在给定区域中这20个变换系数的每个的平方之和产生该区域的功率谱。在所涉及频带的每个区域这么做以计算该频带中的每个区域的功率谱值。
一旦区域的信号功率已被计算出(块602),它们就被量化(块603)。然后,模型600以功率降序来对区域排序,在每个频带中以最高功率区域开始并以最低功率区域结束(块604)。最后,音频编解码器(110)通过以所确定的顺序打包各系数的比特而完成模型600(块606)。
最终,音频编解码器(110)已经基于区域的信号功率与其他区域相比而确定了该区域的重要性。在这种情况下,具有更高功率值的区域具有更高重要性。如果最后打包的区域因为在传输过程中的任何原因被去除,具有更大功率信号的那些区域已被首先打包,并且更有可能包含将不被去除的有用的音频。
4.用于确定重要性的感知技术
如前面提到的,用于确定已编码信号中区域的重要性的另一种技术是使用感知模型650,图6B中示出了其中一个例子。首先,感知模型650计算两个频带的每一个中的每个区域的信号功率,这可以以跟上面描述的方式大致相同的方式完成(块652),接着模型650量化信号功率(块653)。
模型650然后为每个区域定义一个修正的区域功率值(即,modified_region_power)(块654)。该修正的区域功率值是基于加权和,其中当考虑给定区域的重要性时,周围区域的影响被考虑。因此,感知模型650利用了如下事实:一个区域中的信号功率可掩蔽另一个区域中的量化噪声,以及,当区域在频谱上接近时,该掩蔽效应最大。因此,给定区域的修正的区域功率值(即,modified_region_power(region_index))可被定义为:
SUM(weight[region_index,r]*quantized_region_power(r));
其中r=[0...43],
其中quantized_region_power(r)是区域的计算出的信号功率;并且其中weight[region_index,r]是随频谱距离|region_index-r |增加而减小的固定函数。
因此,如果加权函数被定义如下,则感知模型650简化为图6A那样:
weight[region_index,r ]=1当r=region_index
weight[region_index,r]=0当r!=region_index
在如上概述的计算出修正的区域功率值后,感知模型650基于修正的区域功率值以降序对区域排序(块656)。如上所述,由于所进行的加权,一个区域中的信号功率可以掩蔽另一个区域中的量化噪声,特别是当区域在频谱上彼此接近时。音频编解码器(110)接着通过以所确定的顺序打包各区域的比特而完成模型650(块658)。
5.打包
如上所讨论的,所公开的音频编解码器(110)编码比特并打包它们,从而用于低和高频带的特定比特分配的细节可被发送到远端解码器(250)。而且,谱包络与被分配给被打包的两个频带中的变换系数的比特一起被打包。下面表格示出对于要从近端发送到远端的给定帧,比特如何被打包为比特流(从最先的比特到最后的比特)。
表3
打包示例
如可看到的,对于该帧,指示特定比特分配(具有8种可能模式)的3个比特首先被打包。接着,低频带(LoBand)被打包,其中首先打包用于该频带的谱包络的比特。典型地,包络被编码的话不需要很多比特,因为它包括幅度信息而非相位。在打包了用于包络的比特后,用于低频带(LoBand)的归一化系数的特定分配数目的比特被打包。用于谱包络的比特基于它们的典型升序被简单地打包。然而,用于低频带(LoBand)系数的所分配的比特按照前面概述的根据重要性重新排序后的顺序被打包。
最后,如可看到的,高频带(HiBand)以同样方式被打包,其中首先打包用于该频带的谱包络的比特,接着打包用于高频带的归一化系数的特定分配数目的比特。
E.解码技术
如前面图2A中所述,所公开的音频编解码器110的解码器250当包被接收时解码比特,因此音频编解码器110能将系数变换回时域以产生输出音频。该过程在图7中更详细地示出。
一开始,接收器(例如图2B的100B)接收比特流中的包并使用已知技术处理包(块702)。当发送包时,例如,发送器100A创建被包括在所发送的包中的序列号。众所周知,各个包可在网络125上通过不同路由从发送器100A传送到接收器100B,并且各个包可能以不同的时间到达接收器100B。因此,各个包到达的顺序可以是随机的。为处理这种不同的到达时间——称为“抖动(jitter)”,接收器100B具有一个耦接到接收器接口120的抖动缓冲器(未示出)。典型地,该抖动缓冲器每次能保持四个或更多个包。因此,接收器100B在该抖动缓冲器中基于包的序列号将它们重新排序。
利用比特流(例如图5B的510)中最开始的三个比特,解码器250针对正在处理的给定帧的比特分配来解码包(块704)。如前所述,取决于配置,在一个实施例中可能有8种可能的比特分配。知道所使用的划分(如最初的3个比特所指示的)后,解码器250可以接着针对为每个频带分配的数目的比特进行解码。
从低频开始,解码器250解码并去量化该帧的低频带(LoBand)的谱包络(块706)。然后,只要比特已经被接收并且没有被去除,解码器250就解码并去量化低频带的系数。因此,解码器250经历迭代过程并确定是否还有比特剩下(判定710)。只要有可用比特,解码器250就解码低频带中的区域的归一化系数(块712)并计算当前系数值(块714)。对于该计算,解码器250如下计算变换系数:coeff=envelop*normalized_coeff,其中谱包络的值与归一化系数的值相乘(块714)。这将继续,直到所有比特都已经被解码并且与低频带的谱包络值相乘。
因为比特已经根据频率区域的重要性被排序,解码器250可能首先解码比特流中最重要的区域,而不管比特流中是否已有比特被去除。解码器250接着解码第二重要的区域,以此类推。解码器250继续,直到所有比特都耗尽(判定710)。
当所有比特都完成时(由于比特去除,其可能实际上不是最初编码的那些),那些可能已被去除的最不重要的区域被填充以噪声,以使该低频带中信号的剩余部分变完整。
如果比特流已被去除比特,被去除比特的系数信息已经丢失。然而,解码器250已经接收并解码了低频带的谱包络。因此,解码器250至少知道信号的幅度,而非它的相位。为了填充噪声,解码器250在已去除比特中为已知的幅度填充相位信息。
为了填充噪声,解码器250计算任何缺少比特的剩余区域的系数(块716)。剩余区域的这些系数通过将谱包络的值乘以噪声填充值来计算得到。该噪声填充值可以是被用于填充由于比特去除而丢失的缺失区域的系数的随机值。通过使用噪声填充,即使在极端低比特率下(诸如10kbps),解码器250最终也能够像全频带那样感知比特流。
在处理低频带后,解码器250对高频带(HiBand)重复整个过程(块720)。因此,解码器250解码并去量化HiBand的谱包络(块720),解码比特的归一化系数,计算比特的当前系数值,并为缺少比特(如果被去除的话)的剩余区域计算噪声填充系数。
既然解码器250已经确定了LoBand和HiBand中所有区域的变换系数并且知道从谱包络推导出的区域排序,解码器250对变换系数执行逆变换以将帧转换到时域(块722)。最终,音频编解码器能产生时域的音频(块724)。
F.音频丢失包恢复
如这里所公开的,可扩缩音频编解码器110对于已经发生比特去除时处理音频是有用的。另外,可扩缩音频编解码器110还能被用于帮助丢包恢复。为应对包丢失,一种常用方法是通过简单地重复之前接收到的已被处理用于输出的音频来填充由丢失的包导致的空隙。尽管该方法减少了由缺失的音频空隙产生的失真,但它没有消除失真。例如,对于超过5%的包丢失率,由重复之前发送的音频引起的伪像(artifact)将变得明显。
本公开的可扩缩音频编解码器110可通过在相继的包中交织音频帧的高质量和低质量版本来应对包丢失。因为是可扩缩的,音频编解码器110能减少计算成本,因为不需要以不同质量编码音频帧两次。而是,低质量版本可通过简单地从已经由可扩缩音频编解码器110产生的高质量版本中去除比特来获得。
图8示出在发送器100A处的所公开的音频编解码器110可以如何交织音频帧的高和低质量版本而不用编码音频两次。在接下来的讨论中,提到“帧”,其可以指这里所描述的20ms左右的音频块。然而,交织处理可应用于传输包、变换系数区域、比特收集,等等。另外,尽管讨论涉及的是32kbps的最小恒定比特率和8kbps的较低质量速率,但是音频编解码器110所使用的交织技术可应用于其他比特率。
典型地,所公开的音频编解码器110可使用32kbps的最小恒定比特率以获得不恶化的音频质量。因为每个包具有20ms音频,该最小比特率对应于每个包640比特。但是,比特率偶尔可能会降低到主观失真可忽略的8kbps(或每个包160比特)。这是有可能的,因为用640比特编码的包似乎掩蔽了那些偶尔的仅用160比特编码的包所引起的编码失真。
在该过程中,在发送器100A处的音频编解码器110编码当前的20ms的音频帧,其中在最小比特率为32kbps的情况下,对于每个20ms包,使用640比特。为处理包的可能丢失,音频编解码器110编码N个将来的音频帧,其中对于每个将来帧,使用较低质量的160比特。不同于必须对帧进行两次编码,音频编解码器110通过从较高质量版本中去除比特来产生低质量的将来帧。由于可能会引入一定的发送音频延迟,所以可被编码的可能的低质量帧的数目可能被限制到例如N=4,而不需要对发送器100A增加额外的音频延迟。
在这个阶段,发送器100A然后将高质量比特和低质量比特组合为单个包并将其发送到接收器100B。如图8所示,例如,第一音频帧810a以32kbps的最小恒定比特率被编码。第二音频帧810b也以32kbps的最小恒定比特率被编码,但还以160比特的低质量被编码。如这里所述的,该较低质量版本814b实际上是通过从已编码的较高质量版本812b去除比特而获得的。考虑到所公开的音频编解码器110根据重要性对区域排序,对较高质量版本812b中进行比特去除得到较低质量版本814b实际上甚至在该较低质量版本814b中也可保持音频的一定有用质量。
为产生第一编码包820a,第一音频帧810a的高质量版本812a与第二音频帧810b的较低质量版本814b组合。该编码包820a可融合针对如前面公开的那样被划分的低和高频带的比特分配和重新排序技术,并且这些技术可被应用于较高和低质量版本812a/814b中的一个或二者。因此,例如,编码包820a可包括关于比特划分分配的指示、该帧的高质量版本812a的低频带的第一谱包络、低频带的以区域重要性排序的第一变换系数、该帧的高质量版本812a的高频带的第二谱包络、和高频带的以区域重要性排序的第二变换系数。然后,这之后可以简单地是后续帧的不考虑比特分配之类的低质量版本814b。可替换地,后续帧的低质量版本814b可包括谱包络和两个频带频率系数。
在整个编码过程中,重复进行较高质量编码、比特去除以得到较低质量、以及与相邻的音频帧组合。因此,例如,第二编码包820b被产生,其包括第二音频帧810b的较高质量版本810b与第三音频帧810c的较低质量版本814c(即,比特去除的版本)的组合。
在接收端,接收器100B接收所传输的包820。如果包是好的(即,被接收),接收器的音频编解码器110解码代表当前20ms音频的640比特并且从接收器的扬声器呈现出来。例如,在接收器110B处接收的第一编码包820a可能是好的,因此接收器110B解码在包820a中的第一帧810a的较高质量版本812a以产生第一解码的音频帧830a。接收的第二编码包820b也可能是好的。因此,接收器110B解码在该包820b中的第二帧810b的较高质量版本812b以产生第二解码的音频帧830b。
如果包是不好的或缺失的,则接收器的音频编解码器110使用包含在最新近接收的好的包中的当前帧的较低质量版本(160比特的已编码数据)以恢复缺失的音频。如所示的,例如,第三编码的包820c在传输中被丢失。不同于通常所做的那样使用另一帧的音频来填充空隙,在接收器100B处的音频编解码器110为缺失的帧810c使用从前一个好的编码包820b中获得的较低质量音频版本814c。该较低质量音频然后可被用于重建缺失的第三编码音频帧830c。以这种方式,可以为缺失的包820c的帧使用真实的缺失的音频,尽管质量较低。然而,由于掩蔽的缘故,预期该较低质量不会产生大量可感知的失真。
本公开的可扩缩音频编解码器已被描述用于会议端点或终端。然而,所公开的可扩缩音频编解码器可被用在各种会议组件中,诸如端点、终端、路由器、会议桥,等等。在这些的每一个中,所公开的可扩缩音频编解码器可节省带宽、计算量和存储资源。同样地,所公开的可扩缩音频编解码器可在较低等待时间和更少伪像方面提高音频质量。
本公开的技术可以在数字电子电路中实现,或者以计算机硬件、固件、软件实现,或以这些的组合实现。用于实践所公开的技术的装置可被实现在有形地体现在机器可读存储设备中以供可编程处理器执行的的计算机程序产品中;并且所公开的技术的方法步骤可由可编程处理器执行,该可编程处理器执行指令程序,以通过操作输入数据并生成输出而实现所公开的技术的功能。合适的处理器包括,例如,通用和专用微处理器。通常,处理器将从只读存储器和/或随机存取存储器中接收指令和数据。通常,计算机将包括一个或多个用于存储数据文件的大容量存储设备;这样的设备包括磁盘,诸如内部硬盘和移动盘;磁-光盘;和光盘。适合于有形地包括计算机编程指令和数据的存储设备包括所有形式的非易失性存储器,举例而言,包括半导体存储设备,诸如EPROM、EEPROM、和闪存设备;磁盘,诸如内部硬盘和移动盘;磁-光盘;以及CD-ROM盘。任何前述的可被辅以ASIC(专用集成电路)或结合到ASIC中。
前面描述的优选的和其他实施例并非意在限定或限制申请人设想的创造性构思的范围或适用性。作为公开包含在这里的创造性构思的交换,申请人要求所附权利要求给予的所有专利权。因此,意图在于,所附权利要求包括所有在权利要求或其等同物范围内的全部程度的修改和替换。