首页 > 乐器声学 专利正文
时间反转的音频子帧错误隐藏的制作方法

时间:2022-01-19 阅读: 作者:专利查询

时间反转的音频子帧错误隐藏的制作方法

1.本公开一般地涉及通信,并且更具体地涉及用于控制针对单声道、立体声或多声道音频编码和解码的分组丢失隐藏的方法和装置。


背景技术:

2.现代电信服务通常在最终用户之间提供可靠的连接。但是,这样的服务仍然需要处理变化的信道条件,在这些信道条件下,偶尔的数据分组可能由于例如网络拥塞或不良小区覆盖而丢失。为了克服传输错误和丢失包的问题,电信服务可以使用分组丢失隐藏技术(plc)。在数据分组由于不良连接、网络拥塞等而丢失的情况下,可以在解码器中由合成信号代替接收机侧的丢失分组的缺失信息。plc技术通常可以与解码器密切关联,其中可以使用内部状态来产生信号延续或外推以弥补分组丢失。对于针对不同信号类型具有多种操作模式的多模式编解码器,通常存在多种plc技术来处理隐藏。对于分组丢失隐藏技术使用许多不同的术语,包括帧错误隐藏(fec)、帧丢失隐藏(flc)、以及错误隐藏单元(ecu)。
3.对于基于线性预测(lp)的语音编码模式,plc可以基于使用所估计的帧尾音高信息和前一个帧的音高周期的复本来调整声门脉冲位置[1]。长期预测器(ltp)的增益收敛到零,收敛速度取决于连续丢失帧的数量和最后一个良好(即,无错误)帧的稳定性[2]。基于频域(fd)的编码模式被设计为处理一般或复杂信号,例如音乐。可以根据最后一个接收帧的特征来使用不同的技术。这样的分析可以包括检测到的音调分量的数量和信号的周期。如果在高度周期性的信号(例如有效语音或单一器乐)期间发生帧丢失,则时域plc(类似于基于lp的plc)可能是合适的。在这种情况下,fd plc可以通过基于最后一个接收帧估计lp参数和激励信号来模仿lp解码器[2]。如果在非周期性或类噪声信号期间发生丢失帧,则最后一个接收帧可以在频谱域中被重复,其中将系数与随机符号信号相乘以减少重复信号的金属声(metallic sound)。对于平稳音调信号,已发现使用基于检测到的音调分量的预测和外推的方法是有利的。有关上述技术的更多细节可以在[1][2][3]中找到。
[0004]
在频域中操作的通用错误隐藏方法是相位ecu(错误隐藏单元)[4]。相位ecu是一种独立的工具,其在先前解码和重构的时域信号的缓冲区上操作。相位ecu的框架基于正弦分析和合成范式。在这种方法中,最后一个良好帧的正弦分量可以被提取和相移。当帧丢失时,在dft(离散傅立叶变换)域中从过去的解码合成中获得正弦频率。首先,通过找到幅度频谱平面的峰值来识别对应的频率区间(frequency bin)。然后,使用峰值频率区间来估计峰值的分数频率。与峰值以及相邻峰值相对应的频率区间被使用分数频率进行相移。对于帧的其余部分,过去合成的幅度被保留,而相位被随机化。还处理突发错误,以使得通过将估计信号收敛到零而使估计信号被平滑地静音。有关相位ecu的更多详细信息可以在[4]中找到。
[0005]
相位ecu的概念可以被用于在频域中操作的解码器。这一概念包括在频域中执行解码的编码和解码系统,如图1所示,而且还包括执行时域解码和附加频域处理的解码器,如图2所示。在图1中,时域输入音频信号(子)帧被加窗100并且通过dft 101被变换到频域。
编码器102在频域中执行编码并且提供用于传输103的编码参数。解码器104对接收的帧进行解码,或者在帧丢失的情况下施加plc 109。在隐藏帧的构造中,plc可以使用先前解码的帧的存储器108。解码或隐藏的帧通过逆dft 110被变换到时域,然后通过重叠-相加运算111来重构输出音频信号。图2示出了编码器和解码器对,其中解码器施加dft变换以促进频域处理。接收和解码的时域信号首先按(子)帧被加窗105,然后通过dft 106被变换到频域以进行频域处理107,这可以在plc 109之前或在plc 109之后(在帧丢失的情况下)进行。
[0006]
因为已经针对每个帧产生频域频谱,所以通过简单地将最后解码的频谱存储在存储器中,能够轻松获得用于相位ecu的原材料。但是,如果经解码的频谱对应于具有不同加窗函数的时域信号的帧(参见图1),则算法的效率可能降低。当解码器将合成帧分成更短子帧例如以处理需要更高时间分辨率的瞬态声音时,可能发生这种情况。为了获得良好结果,ecu应当针对每个帧产生期望窗口形状,否则每个帧边界处可能存在过渡伪影(transition artefacts)。一种解决方案是存储与特定窗口相对应的每个帧的频谱,并且在它们上个别地施加ecu。另一种解决方案可以是针对ecu存储单个频谱,并且在时域中校正加窗。这可以通过施加反转窗口并且然后重新施加具有期望形状的窗口来实现。这些解决方案具有下面讨论的一些缺点。
[0007]
针对个体子帧施加频域ecu的一个缺点是,在丢失帧期间将针对每个子帧被复制的子帧之间可能存在差异。对于连续帧丢失,这可能导致重复伪影,因为每个子帧可能具有略微不同的频谱特征。另一个问题是存储器需求增加,因为需要存储每个子帧的频谱。
[0008]
窗口重新调整解决方案(其中加窗被反转并且被重新施加)克服了不同频谱特征的问题,因为ecu可以基于单个子帧。但是,施加反转窗口和施加新窗口涉及针对每个样本的除法和乘法,其中除法是计算复杂的运算并且计算成本高。可以通过将预先计算的重新调整窗口存储在存储器中来改进该解决方案,但是这将增加所需的表存储器。如果针对频谱的子部分施加ecu,则还可能需要重新调整全频谱,因为全频谱需要具有相同的窗口形状。


技术实现要素:

[0009]
根据第一方面,提供了一种在解码设备中生成音频信号的隐藏音频子帧的方法。所述方法包括:在子帧的基础上生成频谱,其中,所述音频信号的连续子帧具有以下特性:所述连续子帧中的第一子帧的已施加窗口形状是所述连续子帧中的第二子帧的镜像版本或时间反转版本。所述方法还包括:在分数频率尺度上检测先前接收的音频信号的信号频谱的峰值;估计每个所述峰值的相位;以及基于所估计的相位,导出要施加于所述信号频谱的所述峰值的时间反转的相位调整以形成经时间反转的相位调整的峰值。所述方法还包括:向所述隐藏音频子帧施加时间反转。
[0010]
提供的潜在优势是通过施加反转的时间合成,从单个子帧频谱生成多子帧ecu。这种生成可以适合于子帧窗口是彼此的时间反转版本的情况。从单个存储的解码帧生成所有ecu帧确保了子帧具有类似的频谱特征,同时将存储器占用和计算复杂性保持为最低。
[0011]
根据第二方面,提供了一种被配置为生成音频信号的隐藏音频子帧的解码器设备。所述解码器设备被配置为:在子帧的基础上生成频谱,其中,所述音频信号的连续子帧具有以下特性:所述连续子帧中的第一子帧的已施加窗口形状是所述连续子帧中的第二子
帧的镜像版本或时间反转版本。所述解码器设备还被配置为:在分数频率尺度上检测先前接收的音频信号的信号频谱的峰值;以及估计每个所述峰值的相位。所述解码器设备还被配置为:基于所估计的相位,导出要施加于所述信号频谱的所述峰值的时间反转的相位调整;以及通过向所述信号频谱的所述峰值施加所述时间反转的相位调整来形成经时间反转的相位调整的峰值。所述解码器设备还被配置为:向所述隐藏音频子帧施加时间反转。
[0012]
根据第三方面,提供了一种计算机程序。所述计算机程序包括要由被配置为在通信网络中操作的解码器设备的处理电路执行的程序代码,由此所述程序代码的执行使得所述解码器设备执行根据第一方面的操作。
[0013]
根据第四方面,提供了一种计算机程序产品。所述计算机程序产品包括非暂时性存储介质,所述非暂时性存储介质存储要由被配置为在通信网络中操作的解码器设备的处理电路执行的程序代码,由此所述程序代码的执行使得所述解码器设备执行根据第一方面的操作。
[0014]
根据第五方面,提供了一种在解码设备中生成音频信号的隐藏音频子帧的方法。所述方法包括:在子帧的基础上生成频谱,其中,所述音频信号的连续子帧具有以下特性:所述连续子帧中的第一子帧的已施加窗口形状是所述连续子帧中的第二子帧的镜像版本或时间反转版本。存储与第一两个连续子帧中的第二子帧相对应的信号频谱。所述方法还包括:接收针对第二两个连续子帧的坏帧指示符。所述方法还包括:获得所述信号频谱;在分数频率尺度上检测所述信号频谱的峰值;估计每个所述峰值的相位;以及基于所估计的相位,针对所述第二两个连续子帧中的第一子帧导出要施加于所存储的频谱的所述峰值的时间反转的相位调整。所述方法还包括:向所述信号频谱的所述峰值施加所述时间反转的相位调整以形成经时间反转的相位调整的峰值。所述方法还包括:向所述隐藏音频子帧施加时间反转;将所述经时间反转的相位调整的峰值与所述信号频谱的噪声频谱相组合以形成用于所述第二两个连续子帧中的所述第一子帧的组合频谱;以及基于所述组合频谱,生成合成隐藏音频子帧。
[0015]
根据第六方面,提供了一种被配置为生成音频信号的隐藏音频子帧的解码器设备。所述解码器设备包括处理电路和在操作上与所述处理电路耦接的存储器,其中,所述存储器包括指令,所述指令当由所述处理电路执行时使得所述解码器设备执行根据第一或第五方面的操作。
[0016]
根据第七方面,提供了一种解码器设备。所述解码器设备被配置为生成音频信号的隐藏音频子帧,其中,所述解码器设备适于执行根据第五方面的方法。
[0017]
根据第八方面,提供了一种计算机程序。所述计算机程序包括要由被配置为在通信网络中操作的解码器设备的处理电路执行的程序代码,由此所述程序代码的执行使得所述解码器设备执行根据第五方面的操作。
[0018]
根据第九方面,提供了一种计算机程序产品。所述计算机程序产品包括非暂时性存储介质,所述非暂时性存储介质存储要由被配置为在通信网络中操作的解码器设备的处理电路执行的程序代码,由此所述程序代码的执行使得所述解码器设备执行根据第五方面的操作。
附图说明
[0019]
被包括以提供对本公开的进一步理解并且被结合在本技术中并构成本技术的一部分的附图示出了特定非限制性实施例。在附图中:
[0020]
图1是示出编码器和解码器对的框图,其中在dft域进行编码;
[0021]
图2是示出编码器和解码器对的框图,其中解码器施加dft变换以促进频域处理;
[0022]
图3是解码器的两个子帧窗口的图示,其中被施加在第二子帧上的窗口是被施加在第一子帧上的窗口的时间反转版本或镜像版本;
[0023]
图4是示出根据一些实施例的包括plc方法的编码器和解码器系统的框图,该plc方法执行相位估计,以及使用时间反转的相位计算器在反转的时间中施加ecu合成;
[0024]
图5是示出根据一些实施例的执行时间反转的ecu合成的解码器设备的操作的流程图;
[0025]
图6是根据一些实施例的在正弦波上的时间反转的窗口的图示;
[0026]
图7是根据一些实施例的反转时间的窗口如何影响复平面中的dft系数的图示;
[0027]
图8是根据一些实施例的φ
ε-频率f的图示;
[0028]
图9是示出根据一些实施例的解码器设备的框图;
[0029]
图10是示出根据一些实施例的解码器设备的操作的流程图;
[0030]
图11是示出根据一些实施例的解码器设备的操作的流程图。
具体实施方式
[0031]
现在将在以下参考附图更全面地描述本公开的各方面,在附图中示出了实施例的示例。但是,实施例可以以多种不同的形式体现,并且不应被解释为限于本文阐述的实施例。而是,提供这些实施例以使得本公开详尽并完整,并且将本实施例的范围完全传达给本领域技术人员。还应当注意,这些实施例并不相互排斥。来自一个实施例的组件可以默认为在另一个实施例中存在/被使用。
[0032]
以下描述提供了所公开的主题的各种实施例。这些实施例被提供为教导示例,并且不被解释为限制所公开的主题的范围。例如,在不偏离所描述主题的范围的情况下,可以修改、省略或扩展所描述的实施例的特定细节。
[0033]
图9是示出根据实施例的被配置为提供无线通信的解码器设备900的单元的框图,解码器设备900可以是移动终端、移动通信终端、无线通信设备、无线终端、无线通信终端、用户设备ue、用户设备节点/终端/设备等的一部分。如图所示,解码器900可以包括被配置为提供与其他设备/实体/功能等的通信的网络接口电路906(也被称为网络接口)。解码器900还可以包括在操作上耦接到网络接口电路906的处理器电路902(也被称为处理器)以及在操作上耦接到处理器电路的存储器电路904(也被称为存储器)。存储器电路904可以包括计算机可读程序代码,该计算机可读程序代码当由处理器电路902执行时使得处理器电路执行根据本文公开的实施例的操作。
[0034]
根据其他实施例,处理器电路902可以被定义为包括存储器,以使得不需要单独的存储器电路。如本文所讨论的,解码器900的操作可以由处理器902和/或网络接口906来执行。例如,处理器902可以控制网络接口906以向多通道音频播放器发送通信和/或通过网络接口906从一个或多个其他网络节点/实体/服务器(例如编码器节点、储存库服务器等)接
收通信。此外,模块可以被存储在存储器904中,并且这些模块可以提供指令,以使得当模块的指令由处理器902执行时,处理器902执行相应操作。
[0035]
在下面的描述中,将使用子帧符号(notation)来描述实施例。在此,子帧表示更大的帧的一部分,其中更大的帧包括一组子帧。所描述的实施例还可以与帧符号一起使用。换句话说,子帧可以形成具有与本文描述的窗口形状相同的窗口形状的帧组,并且子帧不需要是更大的帧的一部分。
[0036]
考虑编码器和解码器对中的解码器,其中解码方法在子帧的基础上生成频谱。连续子帧可以具有以下特性:已施加窗口形状是彼此的镜像版本或时间反转版本,如图3所示,其中,子帧2是子帧1的镜像版本或时间反转版本。解码器获得每个帧m的重构子帧的频谱。在一个实施例中,可以从重构的时域合成中获得子帧频谱,其中n是样本索引。图2中的虚线方框指示可以在存储器和plc模块之前或之后进行频域处理。可以通过将与子帧加窗函数w1(n)和w2(n)相乘并且根据下式施加dft变换来获得频谱:
[0037][0038][0039]
其中,n表示子帧窗口的长度,n
step12
是第一子帧与第二子帧的起始点之间的样本距离。子帧加窗函数w1(n)和w2(n)是彼此的镜像版本或时间反转版本。在此,从解码器时域合成中获得子帧频谱,类似于图2中概述的系统。应当注意,实施例同样适用于如图1中概述的系统,其中解码器直接重构子帧频谱。对于每个被正确接收和解码的音频帧m,对应于第二子帧的频谱被存储在存储器中。
[0040][0041]
对于被正确接收的帧,解码器设备900可以继续执行频域处理步骤、执行逆dft变换以及使用重叠-相加策略来重构输出音频。缺失或损坏的帧可以由处理连接的传输层来标识,并且通过坏帧指示符(bfi)被信令发送到解码器作为“坏帧”,bfi可以采取标志的形式。当解码器设备900通过坏帧指示符(bfi)检测到坏帧时,plc算法被激活。plc遵循相位ecu的原理[4]。所存储的频谱被输入到在分数频率尺度上检测峰值的峰值检测器算法。可以检测一组峰值
[0042]
f={fi},i=1,2,
…npeaks
[0043]
这些峰值由它们的估计分数频率fi表示,并且其中n
peaks
是检测到的峰值的数量。类似于正弦编码范式,使用具有特定幅度、频率和相位的正弦波对频谱的峰值进行建模。分数频率可以被表示为dft区间(bin)的分数,以使得例如在f=n/2+1处发现奈奎斯特(nyquist)频率。每个峰值可以与表示该峰值的多个频率区间相关联。通过将分数频率舍入到最接近的整数并且包括相邻区间(例如,每侧的n
near
个峰值)来找到这些区间:
[0044][0045]
其中[
·
]表示舍入运算,gi是表示在频率fi处的峰值的区间组。数量n
near
是可以在设计系统时确定的调谐常数。更大的n
near
在每个峰值表示中提供更高的准确度,但是也在可以被建模的峰值之间引入更大的距离。n
near
的合适值可以是1或2。可以通过使用这些区间组来形成隐藏频谱的峰值,其中已向每个组施加相位调整。相位调整考虑了基础正弦波中的相位变化,假设频率在被最后正确接收和解码的帧与隐藏帧之间保持相同。相位调整是基于分数频率和在前一个帧的分析帧与当前帧开始位置之间的样本数量。如图3所示,在最后一个接收帧的第二子帧的开始与第一ecu帧的第一子帧的开始之间,该样本数量是n
step21
,而在最后一个接收帧的第一子帧与第一ecu帧的第一子帧之间,该样本数量是n
full
。注意,n
full
还给出了在最后一个接收帧的第二子帧与第一ecu帧的第二子帧之间的距离。
[0046]
图4示出了根据下面描述的实施例的编码器和解码器系统,其中plc块109使用相位估计器112来执行相位估计,以及使用时间反转的相位计算器在反转的时间中施加ecu合成。
[0047]
图5是示出下面描述的时间反转的ecu合成的步骤的流程图。对于第一子帧的隐藏,可以在反转的时间中进行ecu合成以获得期望窗口形状。对于第一子帧,峰值i的相位调整或相位校正或相位进展(progression)(这些术语在整个说明书中可以互换使用)可以被表示为
[0048]
δφi=-2φ
i-2πfi(n+n
step21
+(n
lost-1)n
full
)/n,
[0049]
其中n
lost
表示连续丢失帧的数量,而φi表示在频率fi处的正弦波的相位。项(n
lost-1)n
full
处理突发错误的相位进展,其中步长随着全帧的帧长度n
full
而增大。对于第一丢失帧,n
lost
=1。对于以频谱的频率区间为中心的频率,仅通过提取角度即可轻松获得相位φi:
[0050][0051]
其中ki=[fi]。
[0052]
一般而言,频率fi是分数,并且需要在操作501中估计相位。一种估计方法是使用相位频谱的线性插值。
[0053][0054]
其中和分别表示用于向下舍入和向上舍入的运算符。但是,发现这种估计方法不稳定。这种估计方法还需要两个相位提取,如果使用采取标准形式a+bi的复数来表示频谱,则这需要计算上复杂的反正切(arctan)函数。发现在相对低的计算复杂性下可靠的另一种相位估计是:
[0055][0056]ffrac
=f
i-ki[0057]
其中,f
frac
是舍入误差,而φc是调谐常数,其取决于被施加的窗口形状。对于该实施例的窗口形状,发现合适的值是φc=0.33。对于另一个窗口形状,发现合适的值是φc=
0.48。一般而言,预期可以在范围[0.1,0.7]内找到合适的值。
[0058]
在操作502中,如上面说明的那样导出时间反转的相位调整δφi。
[0059]
可以通过在操作503中向所存储的频谱施加相位调整来形成隐藏频谱的峰值。
[0060][0061]
星号“*”表示复共轭,其在操作504中给出信号的时间反转。这导致第一ecu子帧的时间反转。应当注意,还可以在逆dft之后在时域中执行反转。但是,如果仅表示完整频谱的一部分,则这需要例如通过在dft分析之前的时间反转,对剩余频谱进行预处理。
[0062]
的未被峰值区间gi占用的剩余区间可以被称为频谱的噪声频谱或噪声分量。可以使用施加了随机相位的所存储的频谱的系数来填充这些剩余区间:
[0063][0064]
其中φ
rand
表示随机相位值。还可以使用保留信号的期望特性(例如,与多信道解码器系统中的第二信道的相关性)的频谱系数来填充剩余区间。在操作505中,将峰值频谱(其中k∈gi)与噪声频谱(其中)相组合以形成组合频谱。
[0065]
在噪声在时域中生成并且被加窗和变换的实施例中,应当在施加上述的时间反转之前,执行噪声的时间反转(以匹配峰值分量的加窗)以及与峰值频谱的组合。
[0066]
对于在正常(非反转)时间中被合成的第二子帧的生成,可以使用常规的相位调整。
[0067]
δφi=2πfin
fullnlost
/n
[0068]
用于第二子帧的ecu合成可以类似于第一子帧来形成,但是省略峰值系数上的复共轭。
[0069][0070][0071]
一旦在操作505中生成组合隐藏频谱,便可以在操作506中将组合隐藏频谱馈送到后续处理步骤,包括逆dft和导致输出音频信号的重叠-相加运算。
[0072]
输出音频信号可以被发送到一个或多个扬声器,例如用于播放的扬声器。扬声器可以是解码设备的一部分、单独的设备或另一个设备的一部分。
[0073]
用于时间反转的ecu合成的相位校正公式的推导
[0074]
假设正弦分量的起始相位为φ0,正弦波的频率为f。在前进n
step
个样本之后的正弦波的期望相位φ1则为:
[0075]
φ1=φ0+2πfn
step
/n
[0076]
对于正弦波的时间反转的延续,需要通过施加复共轭或者通过简单地取负相位-φ1而在实轴中镜像相位。因为该相位角现在表示ecu合成帧的端点,所以相位需要回绕分析帧的长度以达到期望起始相位φ2。
[0077]
φ2=-φ
1-2πf(n-1)/n
[0078]
为了获得相位校正δφ,需要减去起始相位,即
[0079][0080]
代入φ2给出
[0081]
δφ=-2φ
0-2πf(n
step
+n-1)/n
[0082]
为了添加连续帧丢失(突发丢失)的进展(progression),可以添加与全帧的起始点之间的样本数量相对应的因子n
offset
=(n
lost-1)n
full
。这提供了最终相位校正:
[0083]
δφ=-2φ
0-2πf(n+n
step-1+(n
lost-1)n
full
)/n,
[0084]
通过使用复共轭以及单样本循环移位,可以在dft域中实现期望的时间反转。可以通过2πk/n的相位校正来实现这种循环移位,该相位校正可以被包括在最终相位校正中。
[0085]
δφ=-2φ
0-2πf(n+n
step-1+(n
lost-1)n
full
)/n+2πk/n
[0086]
对于表示单个峰值的系数,循环移位的频率区间k可以被近似为分数频率k≈f,而相位校正可以被简化为:
[0087]
δφ=-2φ
0-2πf(n+n
step-1+(n
lost-1)n
full
)/n+2πf/n=-2φ
0-2πf(n+n
step
+(n
lost-1)n
full
)/n
[0088]
可以设计窗口以使得n=n
full
,在这种情况下,该表达式可以被进一步简化为:
[0089]
δφ=-2φ
0-2πf(n
step
+n
lost
·
n)/n
[0090]
反转的时间ecu合成的替代实施例
[0091]
在另一个实施例中,以两个步骤进行相位校正。在第一步骤中使相位前进,忽略窗口的不匹配。
[0092]
δφ=2πf(n
step
+(n
lost-1)n
full
)
[0093][0094]
在第二步骤中,可以通过使相位按照-φm返回、施加复共轭以及使用φm恢复相位来实现加窗的时间反转:
[0095][0096]
通过研究如图6所示的时间反转的窗口对正弦波的影响,可以发现该操作的动机。在图6中,上图示出了在第一方向上施加的窗口,下图示出了在反转方向上施加的窗口。在图7中示出了表示正弦波的三个系数,该图示出了反转时间的窗口如何影响复平面中的dft系数。近似图6的上图中的正弦波的三个dft系数使用圆圈来标记,而图6的下图的对应系数使用星号来标记。菱形表示正弦波的原始相位的位置,虚线示出观察到的镜像平面,时间反转的窗口的系数通过该镜像平面被投影。时间反转的窗口给出系数在镜像平面中的镜像且角度为φm。
[0097]
φm=φ0+φ
frac
[0098]
通过实验,发现φ
frac
可以被表达为:
[0099]
φ
frac
=πf
frac
[0100]ffrac
=f
i-ki[0101]ki
=[fi]
[0102]
其中[
·
]表示舍入运算。还发现φ
ε
(被表达为正角)可以被近似为与f
frac
的线性关系。在图8中,角度φ
ε
被表达为频率f的函数。研究图8的锯齿形状,发现φ
ε
的良好近似为:
[0103]
φ
ε
=-f
fac
φc[0104]
其中φc是常数。在一个实施例中,φc可以被设置为φc=0.33,这产生了接近的近似。由于φ0未显式已知,所以φm的替代近似可以被记为:
[0105][0106]
其中,φ
ki
是在第一相位调整步骤之后在舍入后的频率区间ki处发现的最大峰值系数的相位,
[0107][0108]
将镜像平面与实轴对齐、施加复共轭以及再次反转相位的操作可以被理解为将整形后的正弦波的相位调整到对于复共轭中性的相位位置(0或π),从而仅反转信号的时间形状。两步方法比先前描述的实施例在计算上更复杂。但是,观察还可以导致对φ0的近似。从图7可以看出,φ0可以被表达为:
[0109][0110]
这是上面使用的相位近似。
[0111]
现在将参考根据一些实施例的图10的流程图来讨论解码器设备900(使用图9的框图的结构实现)的操作。例如,模块可以被存储在图9的存储器904中,并且这些模块可以提供指令,以使得当模块的指令由相应的解码器设备处理电路902执行时,处理电路902执行流程图的相应操作。
[0112]
在操作1000中,处理电路902在子帧的基础上生成频谱,其中,音频信号的连续子帧具有以下特性:连续子帧中的第一子帧的已施加窗口形状是连续子帧中的第二子帧的镜像版本或时间反转版本。例如,针对第一两个连续子帧中的每个子帧生成频谱包括确定:
[0113][0114][0115]
其中,n表示子帧窗口的长度,子帧加窗函数w1(n)是连续子帧中的第一子帧的子帧加窗函数,w2(n)是连续子帧中的第二子帧的子帧加窗函数,以及n
step12
是在第一两个连续子帧中的第一子帧与第一两个连续子帧中的第二子帧之间的样本的数量。
[0116]
在操作1002中,处理电路902确定是否已接收到坏帧指示符(bfi)。坏帧指示符提供音频帧已丢失或已损坏的指示。
[0117]
在操作1004中,对于每个被正确解码的音频帧,处理电路902将与第二子帧相对应的频谱存储在存储器中。例如,对于被正确解码的帧m,与第二子帧相对应的频谱被存储在存储器中,例如对于被正确接收的帧,解码器设备900可以继续执行频域处理步骤、执行逆dft变换以及使用重叠-相加策略来重构输出音频,如上面所述和图4所示。注意,重叠-相加的原理对于子帧和帧两者是相同的。帧的创建要求针对子帧施加重叠-相加,而最终输出帧是帧之间的重叠-相加运算的结果。
[0118]
当处理电路902在操作1002中通过坏帧指示符(bfi)检测到坏帧时,执行plc操作
1006至1030。
[0119]
在操作1006中,处理电路902获得与先前被正确解码并处理的第一两个连续子帧中的第二子帧相对应的信号频谱。例如,处理电路902可以从解码设备的存储器904中获得信号频谱。
[0120]
在操作1008中,处理电路902在分数频率尺度上检测音频信号的先前接收的音频帧的信号频谱的峰值,先前接收的音频帧是在接收坏帧指示符之前被接收的。
[0121]
在操作1010中,处理电路902确定隐藏帧是否用于两个连续子帧中的第一子帧。
[0122]
如果隐藏帧用于第一子帧,则在操作1012中,处理电路902估计每个峰值的相位。在一个实施例中,根据下式来针对经时间反转的相位校正的峰值中的峰值计算相位估计:
[0123][0124]ffrac
=f
i-ki[0125]
其中,φi是在频率fi处的估计相位,是在频率区间ki处的频谱的角度,f
frac
是舍入误差,φc是调谐常数,以及ki是[fi]。调谐常数φc可以是在0.1与0.7之间的范围内的值。
[0126]
在操作1014中,处理电路902基于所估计的相位,导出要施加于信号频谱的峰值的时间反转的相位校正。
[0127]
在操作1016中,处理电路902向信号频谱的峰值施加时间反转的相位校正以形成经时间反转的相位校正的峰值。
[0128]
在操作1018中,处理电路902向隐藏音频子帧施加时间反转。在一个实施例中,可以通过向隐藏音频子帧施加复共轭来施加时间反转。
[0129]
在操作1020中,处理电路902将经时间反转的相位校正的峰值与信号频谱的噪声频谱相组合以形成隐藏音频子帧的组合频谱。
[0130]
转到图11,在一个实施例中,处理电路902可以通过在操作1100中将每个峰值与多个峰值频率区间相关联来执行1016和1018。处理电路902关联可以通过在操作1102中向多个频率区间中的每一个施加时间反转的相位校正来施加时间反转的相位校正。在操作1104中,使用被施加了随机相位的信号频谱的系数来填充剩余区间。
[0131]
返回到图10,在操作1022中,处理电路902基于组合频谱来生成合成隐藏音频子帧。
[0132]
如果在操作1010中确定隐藏帧未用于第一子帧,则处理电路902在操作1024中针对至少两个连续隐藏子帧中的第二隐藏子帧,导出要施加于信号频谱的峰值的非时间反转的相位校正。
[0133]
在操作1026中,处理电路902针对第二子帧向信号频谱的峰值施加非时间反转的相位校正以形成经非时间反转的相位校正的峰值。
[0134]
在操作1028中,处理电路902将经非时间反转的相位校正的峰值与信号频谱的噪声频谱相组合以形成用于第二隐藏子帧的组合频谱。
[0135]
在操作1030中,处理电路902基于组合频谱,生成第二合成隐藏音频子帧。
[0136]
转到图11,在一个实施例中,处理电路902可以通过在操作1100中将每个峰值与多个峰值频率区间相关联来执行1026和1028。处理电路902关联可以通过在操作1102中向多
个频率区间中的每一个施加非时间反转的相位校正来施加非时间反转的相位校正。在操作1104中,使用被施加了随机相位的信号频谱的系数来填充剩余区间。
[0137]
针对解码器设备和相关方法的一些实施例,来自图10的流程图的各种操作可以是可选的。例如,关于示例实施例1(下面阐述)的方法,图10的方框1004和1022-1030的操作可以是可选的。例如,关于示例实施例19(下面阐述)的方法,图10的方框1010和1022-1030的操作可以是可选的。
[0138]
下面讨论示例实施例。
[0139]
1.一种在解码设备中生成音频信号的隐藏音频子帧的方法,该方法包括:
[0140]
在子帧的基础上生成(1000)频谱,其中,音频信号的连续子帧具有以下特性:连续子帧中的第一子帧的已施加窗口形状是连续子帧中的第二子帧的镜像版本或时间反转版本;
[0141]
接收(1002)坏帧指示符;
[0142]
在分数频率尺度上检测(1008)音频信号的先前接收的音频帧的信号频谱的峰值,先前接收的音频帧是在接收坏帧指示符之前被接收的;
[0143]
估计(1012)每个峰值的相位;
[0144]
基于所估计的相位,导出(1014)要施加于信号频谱的峰值的时间反转的相位校正;
[0145]
向信号频谱的峰值施加(1016)时间反转的相位校正以形成经时间反转的相位校正的峰值;
[0146]
向隐藏音频子帧施加(1018)时间反转;
[0147]
将经时间反转的相位校正的峰值与信号频谱的噪声频谱相组合(1020)以形成用于隐藏音频子帧的组合频谱;以及
[0148]
基于组合频谱,生成(1022)合成隐藏音频子帧。
[0149]
2.根据实施例1所述的方法,其中,合成隐藏音频帧包括至少两个连续隐藏子帧,并且其中,导出时间反转的相位校正、施加时间反转的相位校正、施加时间反转以及组合经时间反转的相位校正的峰值是针对至少两个连续隐藏子帧中的第一隐藏子帧执行的,该方法还包括:
[0150]
针对至少两个连续隐藏子帧中的第二隐藏子帧,导出(1024)要施加于信号频谱的峰值的非时间反转的相位校正;
[0151]
针对第二子帧,向信号频谱的峰值施加(1026)非时间反转的相位校正以形成经非时间反转的相位校正的峰值;
[0152]
将经非时间反转的相位校正的峰值与信号频谱的噪声频谱相组合(1028)以形成用于第二隐藏子帧的组合频谱;以及
[0153]
基于组合频谱,生成(1030)第二合成隐藏音频子帧。
[0154]
3.根据实施例1-2中任一项所述的方法,其中,隐藏音频子帧包括用于丢失的音频帧和损坏的音频帧中的一个的隐藏音频子帧。
[0155]
4.根据实施例1-3中任一项所述的方法,其中,坏帧指示符提供音频帧丢失或损坏的指示。
[0156]
5.根据实施例1-4中任一项所述的方法,还包括:从解码器的存储器中获得先前接
收的音频信号帧的信号频谱。
[0157]
6.根据实施例1-5中任一项所述的方法,其中,施加时间反转包括:向隐藏音频子帧施加复共轭。
[0158]
7.根据实施例1-6中任一项所述的方法,还包括:
[0159]
将多个峰值中的每个峰值与表示该峰值的多个峰值频率区间相关联(1100)。
[0160]
8.根据实施例7所述的方法,其中,对于多个峰值中的每个峰值,时间反转的相位校正和非时间反转的相位校正中的一个被施加(1102)到该峰值。
[0161]
9.根据实施例8中任一项所述的方法,还包括:
[0162]
使用被施加了随机相位的所存储的信号频谱的系数来填充(1104)信号频谱的剩余区间。
[0163]
10.根据实施例1-9中任一项所述的方法,其中,估计每个峰值的相位包括:
[0164]
根据下式来针对经时间反转的相位校正的峰值中的峰值计算相位估计:
[0165][0166]ffrac
=f
i-ki[0167]
其中,φi是在频率fi处的估计相位,是在频率区间ki处的频谱的角度,f
frac
是舍入误差,φc是调谐常数,以及ki是[fi]。
[0168]
11.根据实施例10所述的方法,其中,φc具有在0.1与0.7之间的范围内的值。
[0169]
12.根据实施例10所述的方法,其中,针对非经时间反转的相位校正的峰值计算相位估计是根据下式来计算的:
[0170]
δφi=2πfin
fullnlost
/n
[0171]
其中,δφi表示在频率fi处的正弦波的相位校正,n
full
表示在两个帧之间的样本的数量,n
lost
表示连续丢失帧的数量,以及n表示子帧窗口的长度。
[0172]
13.根据实施例1-12中任一项所述的方法,还包括:向信号频谱的噪声频谱施加随机相位。
[0173]
14.根据实施例13所述的方法,其中,向噪声频谱施加随机相位包括:在将非经时间反转的相位校正的峰值与噪声频谱相组合之前,向噪声频谱施加随机相位。
[0174]
15.一种解码器设备(900),被配置为生成所接收的音频信号的隐藏音频子帧,其中,解码设备的解码方法在子帧的基础上生成频谱,其中,连续子帧具有以下特性:已施加窗口形状是彼此的镜像版本或时间反转版本,该解码器设备包括:
[0175]
处理电路(902);以及
[0176]
与处理电路耦接的存储器(904),其中,存储器包括指令,这些指令当由处理电路执行时使得解码器设备执行根据实施例1-14中任一项所述的操作。
[0177]
16.一种解码器设备(900),被配置为生成所接收的音频信号的隐藏音频子帧,其中,解码设备的解码方法在子帧的基础上生成频谱,其中,连续子帧具有以下特性:已施加窗口形状是彼此的镜像版本或时间反转版本,其中,解码器设备适于根据实施例1-14中任一项来执行。
[0178]
17.一种计算机程序,包括要由被配置为在通信网络中操作的解码器设备(900)的处理电路(902)执行的程序代码,由此这些程序代码的执行使得解码器设备(900)执行根据
实施例1-14中任一项所述的操作。
[0179]
18.一种包括非暂时性存储介质的计算机程序产品,该非暂时性存储介质存储要由被配置为在通信网络中操作的解码器设备(900)的处理电路(902)执行的程序代码,由此这些程序代码的执行使得解码器设备(900)执行根据实施例1-14中任一项所述的操作。
[0180]
19.一种在解码设备中生成音频信号的隐藏音频子帧的方法,该方法包括:
[0181]
在子帧的基础上生成(1000)频谱,其中,音频信号的连续子帧具有以下特性:连续子帧中的第一子帧的已施加窗口形状是连续子帧中的第二子帧的镜像版本或时间反转版本;
[0182]
存储(1004)与第一两个连续子帧中的第二子帧相对应的信号频谱;
[0183]
接收针对第二两个连续子帧的坏帧指示符(1002);
[0184]
获得(1006)信号频谱;
[0185]
在分数频率尺度上检测(1008)信号频谱的峰值;
[0186]
估计(1012)每个峰值的相位;
[0187]
基于所估计的相位,针对第二两个连续子帧中的第一子帧导出(1014)要施加于所存储的频谱的峰值的时间反转的相位校正;
[0188]
向信号频谱的峰值施加(1016)时间反转的相位校正以形成经时间反转的相位校正的峰值;
[0189]
向隐藏音频子帧施加(1018)时间反转;
[0190]
将经时间反转的相位校正的峰值与信号频谱的噪声频谱相组合(1020)以形成用于第二两个连续子帧中的第一子帧的组合频谱;以及
[0191]
基于组合频谱,生成(1022)合成隐藏音频子帧。
[0192]
20.根据实施例19所述的方法,其中,合成隐藏音频帧包括至少两个连续隐藏子帧,并且其中,导出时间反转的相位校正、施加时间反转的相位校正以及组合经时间反转的相位校正的峰值是针对至少两个连续隐藏子帧中的第一隐藏子帧执行的,该方法还包括:
[0193]
针对第二两个连续子帧中的第二子帧,导出(1024)要施加于信号频谱的峰值的非时间反转的相位校正;
[0194]
针对第二两个连续子帧中的第二子帧,向信号频谱的峰值施加(1026)非时间反转的相位校正以形成经非时间反转的相位校正的峰值;
[0195]
将非时间反转的音频子帧与信号频谱的噪声频谱相组合(1028)以形成用于第二两个连续子帧中的第二子帧的第二组合频谱;以及
[0196]
基于第二组合频谱,生成(1030)第二合成音频子帧。
[0197]
21.根据实施例19-20中任一项所述的方法,其中,隐藏音频子帧包括丢失的音频帧和损坏的音频帧中的一个的隐藏音频子帧。
[0198]
22.根据实施例19-21中任一项所述的方法,其中,坏帧指示符提供音频帧丢失或损坏的指示。
[0199]
23.根据实施例19-22中任一项所述的方法,还包括:从解码器的存储器中获得信号频谱。
[0200]
24.根据实施例19-23中任一项所述的方法,其中,施加时间反转包括:向隐藏音频子帧施加复共轭。
[0201]
25.根据实施例18-24中任一项所述的方法,还包括:
[0202]
将每个峰值与表示该峰值的多个峰值频率区间相关联。
[0203]
26.根据实施例25所述的方法,还包括:对于多个峰值中的每个峰值,向该峰值施加时间反转的相位校正和非时间反转的相位校正中的一个。
[0204]
27.根据实施例26所述的方法,还包括:
[0205]
使用被施加了随机相位的所存储的频谱的系数来填充信号频谱的剩余区间。
[0206]
28.根据实施例19-27中任一项所述的方法,其中,估计相位包括:
[0207]
根据下式来针对经时间反转的相位校正的峰值计算相位估计:
[0208][0209]ffrac
=f
i-ki[0210]
其中,φi是在频率fi处的估计相位,是在频率区间ki处的频谱的角度,f
frac
是舍入误差,φc是调谐常数,以及ki是[fi]。
[0211]
29.根据实施例28所述的方法,其中,φc具有在0.1与0.7之间的范围内的值。
[0212]
30.根据实施例28所述的方法,还包括:根据下式来针对非经时间反转的相位校正的峰值计算相位估计:
[0213]
δφi=2πfin
fullnlost
/n
[0214]
其中,δφi表示在频率fi处的正弦波的相位校正,n
full
表示在两个帧之间的帧样本的数量,n
lost
表示连续丢失帧的数量,以及n表示子帧窗口的长度。
[0215]
31.根据实施例19-30中任一项所述的方法,其中,生成用于第一两个连续子帧中的每个子帧的频谱包括确定以下项:
[0216][0217][0218]
其中,n表示子帧窗口的长度,子帧加窗函数w1(n)是用于连续子帧中的第一子帧的子帧加窗函数,w2(m)是用于连续子帧中的第二子帧的子帧加窗函数,以及m
step12
是在第一两个连续子帧中的第一子帧与第一两个连续子帧中的第二子帧之间的样本的数量。
[0219]
32.根据实施例19-31中任一项所述的方法,还包括:向信号频谱的噪声频谱施加随机相位。
[0220]
33.根据实施例32所述的方法,其中,向噪声频谱施加随机相位包括:在将经非时间反转的相位校正的峰值与噪声频谱相组合之前,向噪声频谱施加随机相位。
[0221]
34.一种解码器设备(900),被配置为生成所接收的音频信号的隐藏音频子帧,其中,解码设备的解码方法在子帧的基础上生成频谱,其中,连续子帧具有以下特性:已施加窗口形状是彼此的镜像版本或时间反转版本,该解码器设备包括:
[0222]
处理电路(902);以及
[0223]
与处理电路耦接的存储器(904),其中,存储器包括指令,这些指令当由处理电路执行时使得解码器设备执行根据实施例19-33中任一项所述的操作。
[0224]
35.一种解码器设备(900),被配置为生成所接收的音频信号的隐藏音频子帧,其中,解码设备(900)的解码方法在子帧的基础上生成频谱,其中,连续子帧具有以下特性:已施加窗口形状是彼此的镜像版本或时间反转版本,其中,解码器设备适于根据实施例19-33中任一项来执行。
[0225]
36.一种计算机程序,包括要由被配置为在通信网络中操作的解码器设备(900)的处理电路(902)执行的程序代码,由此这些程序代码的执行使得解码器设备(900)执行根据实施例19-33中任一项所述的操作。
[0226]
37.一种包括非暂时性存储介质的计算机程序产品,该非暂时性存储介质存储要由被配置为在通信网络中操作的解码器设备(900)的处理电路(902)执行的程序代码,由此这些程序代码的执行使得解码器设备(900)执行根据实施例19-33中任一项所述的操作。
[0227]
下面提供对本公开中使用的各种缩写/首字母缩略词的说明。
[0228]
缩写
ꢀꢀꢀ
说明
[0229]
dft
ꢀꢀꢀꢀ
离散傅立叶变换
[0230]
idft
ꢀꢀꢀ
逆离散傅立叶变换
[0231]
lp
ꢀꢀꢀꢀꢀ
线性预测
[0232]
plc
ꢀꢀꢀꢀ
分组丢失隐藏
[0233]
ecu
ꢀꢀꢀꢀ
错误隐藏单元
[0234]
fec
ꢀꢀꢀꢀ
帧错误校正/隐藏
[0235]
下面提供参考文献。
[0236]
[1]t.vaillancourt、m.jelinek、r.salami和r.lefebvre的“efficient frame erasure concealment in predictive speech codecs using glottal pulse resynchronisation(使用声门脉冲重新同步的预测语音编解码器中的有效帧擦除隐藏)”,2007年ieee声学、语音和信号处理国际会议—icassp'07,夏威夷火奴鲁鲁,2007年,第iv-1113-iv-1116页。
[0237]
[2]j.lecomte等人的“packet-loss concealment technology advances in evs(evs中的分组丢失隐藏技术进步)”,2015年ieee声学、语音和信号处理国际会议(icassp),昆士兰州布里斯班,2015年,第5708-5712页。
[0238]
[3]3gpp ts 26.447,codec for enhanced voice services(evs);error concealment of lost packets(release 12)(用于增强型语音服务(evs)的编解码器;丢失分组的错误隐藏(版本12))
[0239]
[4]s.bruhn、e.norvell、j.svedberg和s.sverrisson的“a novel sinusoidal approach to audio signal frame loss concealment and its application in the new evs codec standard(一种新的音频信号帧丢失隐藏正弦方法及其在新evs编解码器标准中的应用)”,2015年ieee声学、语音和信号处理国际会议(icassp),昆士兰州布里斯班,2015年,第5142-5146页。
[0240]
通常,除非清楚地给出了不同的含义和/或在使用术语的上下文中隐含了不同的含义,否则本文中使用的所有术语将根据其在相关技术领域中的普通含义来解释。除非明
确说明,否则对一/一个/该元件、装置、组件、部件、步骤等的所有引用应公开地解释为是指该元件、装置、组件、部件、步骤等的至少一个实例。除非明确地将一个步骤描述为在另一个步骤之后或之前和/或隐含地一个步骤必须在另一个步骤之后或之前,否则本文所公开的任何方法的步骤不必以所公开的确切顺序执行。在适当的情况下,本文公开的任何实施例的任何特征可以应用于任何其他实施例。同样,任何实施例的任何优点可以适用于任何其他实施例,反之亦然。通过下面的描述,所附实施例的其他目的、特征和优点将显而易见。
[0241]
在各种实施例的上面描述中,将理解,本文使用的术语仅为了描述特定的实施例而并非旨在作为限制。除非另外定义,否则本文使用的所有术语(包括技术和科学术语)具有与本公开所属领域的普通技术人员通常理解的相同含义。还将理解,诸如在常用字典中定义的那些术语应该被解释为具有与其在本说明书和相关领域的上下文中的含义相一致的含义,并且将不被以理想化或过于正式的意义来解释,除非本文明确地如此定义。
[0242]
当单元被称为“连接到”、“耦接到”、“响应于”(或者其变型)另一个单元时,它可以被直接连接到、耦接到或响应于另一个单元,或者可以存在中间单元。相比之下,当单元被称为“直接连接到”、“直接耦接到”、“直接响应于”(或者其变型)另一个单元时,不存在中间单元。本文内相同的编号指相同的单元。此外,如本文所使用的,“耦接”、“连接”、“响应”或其变型可以包括无线耦接、连接或响应。如本文所使用的,单数形式“一”、“一个”和“该”旨在同样包括复数形式,除非上下文明确地另有所指。为了简洁和/或清晰起见,公知的功能或结构可能未被详细描述。术语“和/或”包括一个或多个列出的关联项目的任何和所有组合。
[0243]
将理解,尽管在本文中可以使用术语第一、第二、第三等来描述各种单元/操作,但是这些单元/操作不应被这些术语限制。这些术语仅被用于将一个单元/操作与另一个单元/操作区分开。因此,一些实施例中的第一单元/操作可以在其他实施例中被称为第二单元/操作而不偏离本公开的教导。本说明书内的相同参考标号或相同参考指示符表示相同或类似的单元。
[0244]
如本文所使用的,术语“包括”、“包含”、“具有”或其变型是开放的,并且包括一个或多个所声明的特征、整数、单元、步骤、组件或功能,但是并不排除一个或多个其他特征、整数、单元、步骤、组件、功能或其组合的存在或增加。此外,如本文所使用的,可以使用源自拉丁语短语“exempli gratia”的通用缩写“例如”来引入或指定先前提及的项目的一个或多个一般示例,而并非旨在作为这种项目的限制。可以使用源自拉丁语短语“id est”的通用缩写“即”来从更一般的详述中指定特定的项目。
[0245]
本文参考计算机实现的方法、装置(系统和/或设备)和/或计算机程序产品的框图和/或流程图来描述示例实施例。将理解,框图和/或流程图的方框、以及框图和/或流程图中各方框的组合,可以由通过一个或多个计算机电路执行的计算机程序指令来实现。可以将这些计算机程序指令提供给通用计算机电路、专用计算机电路和/或其他可编程数据处理电路的处理器电路以生产一种机器,以使得这些指令在经由计算机和/或其他可编程数据处理装置的处理器执行时,变换和控制晶体管、存储在存储单元中的值以及这种电路内的其他硬件组件,以实现框图和/或流程图中的一个或多个方框中指定的功能/操作,从而产生实现框图和/或流程图中的方框中指定的功能/操作的装置(功能)和/或结构。
[0246]
还可以将这些计算机程序指令存储在有形计算机可读介质中,这些指令可以使计
算机或其他可编程数据处理装置以特定方式工作,以使得存储在计算机可读介质中的指令产生包括实现框图和/或流程图中的一个或多个方框中指定的功能/操作的指令的制造品(article of manufacture)。因此,本公开的实施例可以以硬件和/或软件(包括固件、驻留软件、微代码等)体现,该软件在诸如数字信号处理器之类的处理器上运行,硬件和/或软件可以被统称为“电路”、“模块”或其变型。
[0247]
还应当注意,在一些替代实现中,方框中所标注的功能/操作可以以不同于流程图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能/操作而定。此外,流程图和/或框图的给定方框的功能可以被分成多个方框,和/或流程图和/或框图的两个或更多个方框的功能可以被至少部分地集成。最后,可以在示出的方框之间添加/插入其他方框,和/或可以省略方框/操作而不偏离实施例的范围。此外,尽管一些图在通信路径上包括箭头以示出通信的主要方向,但是将理解,通信可以以与示出的箭头相反的方向发生。
[0248]
可以对实施例进行许多改变和修改而基本上不偏离本公开的原理。在本文中,所有这些改变和修改旨在被包括在本公开的范围内。因此,上面公开的主题被视为说明性的而非限制性的,并且实施例的示例旨在覆盖落入本公开的精神和范围内的所有这些修改、增强和其他实施例。因此,在法律允许的最大范围内,本公开的范围将由对本公开(包括实施例的示例及其等效物)的最广泛的允许解释来确定,并且不应被上面的详细描述来限定或限制。