首页 > 乐器声学 专利正文
利用旋转的插值和量化进行空间化音频编解码的制作方法

时间:2022-02-20 阅读: 作者:专利查询

利用旋转的插值和量化进行空间化音频编解码的制作方法
利用旋转的插值和量化进行空间化音频编解码
1.本发明涉及对空间化音频数据的编码/解码,尤其是在环绕声上下文(以下也称为“环绕声”)中。
2.当前在移动电话中使用的编码器/解码器(下文称为“编解码器”)是单通道(用于在单个扬声器上进行再现的单个信号通道)。3gpp evs编解码器(evs表示“增强语音服务(enhanced voice services)”)可以为以32或48khz采样的信号提供具有超宽带音频(swb)音频频带的“超

hd”质量(也称为“高清+”语音或hd+),或者为以48khz采样的信号提供全频带(fb);音频带宽在swb模式下(9.6至128kbps)为14.4至16khz,而在fb模式下(16.4至128kbps)为20khz。
3.由运营商提供的会话服务质量的接下来的发展应该包括沉浸式服务,沉浸式服务使用诸如智能电话之类的终端(例如,配备有几个麦克风或用于空间化音频会议或远程呈现型视频会议的设备,乃至用于共享“直播”内容的工具)、具有空间化3d音频渲染、比简单的2d立体声再现更具沉浸式。随着使用音频耳机在移动电话上收听内容的做法越来越普遍,以及高级音频装备(诸如3d麦克风、带声学天线的语音助手、虚拟现实耳机之类的附件)和特定工具(例如,用于制作360
°
视频内容)的出现,空间化声音场景的捕获和渲染现在普遍得足以提供沉浸式通信体验。
4.为此,未来的3gpp标准“ivas”(ivas表示“沉浸式语音和音频服务(immersive voice and audio services)”)提出通过接受至少下面列出的空间化音频格式(及其组合)作为编解码器的输入格式,来扩展evs编解码器以包括沉浸感:
5.‑
立体声类型多通道格式(“基于通道的”)5.1,其中每个通道为扬声器提供信号(例如,立体声中的l和r,或5.1中的l、r、ls、rs和c)
6.‑
基于对象的格式,其中音频对象被描述为与描述该对象的属性(空间位置、源的空间宽度等)的元数据相关联的音频信号(通常为单通道)
7.‑
环绕声(ambisonic)格式(“基于场景的”),其描述通常由球形麦克风捕获的或在球面谐波域中合成的、给定点处的声场。
8.在下文中,作为示例性实施例,我们通常对环绕声格式的声音的编解码感兴趣(下面结合本发明呈现的至少一些方面也可以应用于环绕声以外的格式)。
9.环绕声是一种记录(声学意义上的“编码”)空间化声音的方法以及一种再现系统(声学意义上的“解码”)。一种环绕声麦克风(一阶)包括布置在球形网格上的至少四个碳胶囊(capsule)(通常是心形(cardioid)或准心形(sub

cardioid)的),例如,正四面体的顶点。与这些碳胶囊相关联的音频通道称为“a

格式”。这种格式被转换成“b

格式”,其中声场被分成表示为w、x、y、z的四个分量(球面谐波),这四个分量对应于四个重合的虚拟麦克风。w分量对应于声场的全向捕获,而更具方向性的x、y和z分量相当于以三维空间为导向的压力梯度。从记录和再现是分离且分开的意义上来说,环绕声系统是一种灵活的系统。它允许在任何扬声器配置(例如,双声道、5.1类型环绕声音或7.1.4类型环绕全向声道(带高度))中进行解码(声学意义上)。当然,环绕声方法可以推广到四个以上的b

格式通道,并且这种广义表示称为“hoa”(对于“高阶环绕声(higher

order ambisonics)”)。声音被分解成更多
球面谐波的事实提高了在扬声器上进行再现时的空间精度。
10.n阶环绕声信号包括(n+1)2个分量,并且在一阶(如果n=1)处,我们发现通常称为foa(foa表示“一阶环绕声(first

order ambisonics)”)的原始环绕声的四个分量。还存在一种称为“平面”变型的环绕声,其将定义的声音分解成通常为水平面的平面。在这种情况下,通道的数量是2n+1个通道。为了便于阅读,一阶环绕声(4个通道:w、x、y、z)和一阶平面环绕声(3个通道:w、x、y)在下文中不加区分地称为“环绕声”,所呈现的处理是可应用的,而与类型是否为平面无关。然而,如果在某些文本中有必要进行区分,则使用术语“一阶环绕声”和“一阶平面环绕声”。注意,可以从一阶b

格式推导出与类型布鲁姆林十字形对(blumlein crossed pair)(x+y和x

y)或中

侧(组合w和x用于中间信号,而y作为侧边信号)的重合立体声捕获相对应的立体声信号(2个通道)。
11.在下文中,预定次序的b

格式信号称为“环绕声声音”。在一些变型中,可以以另一种格式定义环绕声声音,诸如a

格式或通过固定矩阵预先组合的通道(保持通道的数量或将其减少到3或2个通道的情况),如下所示。
12.要由编码器/解码器处理的信号被呈现为一连串的声音样本块,在下面称为“帧”或“子帧”。
13.此外,在下文中,数学符号遵循这一惯例:
14.‑
向量:(小写,粗体)
15.‑
矩阵:(大写,粗体)
16.对立体声或环绕声信号进行编码的最简单方法是使用单通道编码器并将其并行地应用于所有通道,这些通道可能取决于通道而具有不同的比特分配。这种方法在这里称为“多通道

单通道(multi

mono)”(尽管在实践中我们可以将这种方法推广到多通道

立体声(multi

stereo)或同一核心编解码器的几个并行实例的使用)。
17.图1中示出了这样的实施例。在块100中,输入信号被分成(单)通道。这些通道根据预定分配在块120至122中被单独地编码。它们的比特流被复用(块130),并且在传输和/或存储之后被解复用(块140),以便对重新组合的每个通道(块150至152)应用解码(块160)。
18.相关联的质量根据所使用的单通道编解码而变化,并且通常仅在非常高的比特率下才令人满意,例如,对于evs编解码,每个单通道的比特率至少为48kbps。因此,对于一阶,我们获得的最小比特率为4
×
48=192kbps。
19.当前为更复杂的编解码器(特别是为环绕声空间化)提出的解决方案,特别是就复杂性、延迟和比特率的有效使用而言,对于确保环绕声通道之间的有效去相关是不令人满意的。
20.例如,用于环绕声声音的mpeg

h编解码器使用叠加操作(这增加了延迟和复杂性)和方向向量上的线性插值(这是次优的并且引入了缺陷)。这种编解码器的基本问题在于,因为主要分量在感知上不同于环境分量,所以它实施了对主要分量和环境分量的分解,但是这种分解没有被完全定义。mpeg

h编码器遭受主要分量的方向从一帧到另一帧之间不一致的问题:分量(信号)的次序可以交换,相关联的方向也可以交换。这就是为什么mpeg

h编解码器使用匹配和叠加的技术来解决这个问题。
21.此外,有可能使用频率编解码方法(在fft或mdct域中),而不是像在mpeg

h编解码器中那样使用时间编解码,但是频域(子频带)中的信号处理需要逐子频带地向解码器传输
数据,因此增加了这种传输所需的比特率。
22.本发明改善了这种情况。
23.为此,提出了一种用于压缩音频信号的编码方法,在高于0阶的环绕声表示中的n个通道的每个通道中随时间形成一连串样本帧,该方法包括:
24.‑
基于通道并且针对当前帧,形成通道间协方差矩阵,并且搜索所述协方差矩阵的特征向量以用于获得特征向量矩阵,
25.‑
测试特征向量矩阵以证实它表示n维空间中的旋转,并且如果不是这样的话,则校正特征向量矩阵,直到针对当前帧获得旋转矩阵,以及
26.‑
在对n个通道的信号进行分离通道编码之前,将所述旋转矩阵应用于所述信号。
27.因此,本发明能够改善随后将分离地进行编码的n个通道之间的去相关。这种分离编码在下文中也称为“多通道

单通道编码”。
28.在一个实施例中,该方法还可以包括:
29.‑
为了经由网络进行传输,对取自旋转矩阵的参数进行编码。
30.这些参数通常可以是四元数和/或旋转角度和/或欧拉角度值,如下所示,或者仅仅是例如该矩阵的元素。
31.在一个实施例中,该方法还可以包括:
32.‑
将针对当前帧获得的特征向量矩阵与针对当前帧之前的帧获得的旋转矩阵进行比较,以及
33.‑
置换当前帧的特征向量矩阵的列,以确保与前一帧的旋转矩阵的一致。
34.这样的实施例能够在音频再现期间保持整体同质性,特别是避免从一帧到另一帧的可听见的咔哒声(audible click)。
35.然而,为从协方差矩阵获得特征向量而实施的某些变换(诸如下面看到的“pca/klt”)有可能会反转某些特征向量的方向,那么同时建议针对当前帧的矩阵的每个特征向量,证实轴一致,然后证实该轴上的方向一致。为此,在一个实施例中,由于列的前述置换已经使得确保向量的轴的一致成为可能,该方法还包括:
36.‑
对于当前帧的每个特征向量,证实与前一帧的旋转矩阵中相应位置的列向量的方向一致,以及
37.‑
在不一致的情况下,反转当前帧的特征向量矩阵中该特征向量的元素的符号。
38.通常,利用特征向量矩阵的列之间的置换来反转特征向量矩阵的行列式的符号,并且旋转矩阵的行列式等于1,
39.我们可以估计特征向量矩阵的行列式,并且如果它等于

1,则我们可以反转特征向量矩阵的选定列的元素的符号,使得行列式等于1,从而形成旋转矩阵。
40.在一个实施例中,该方法还可以包括:
41.‑
估计针对当前帧获得的旋转矩阵与针对当前帧之前的帧获得的旋转矩阵之间的差异,
42.‑
基于所估计的差异,确定是否要在当前帧的旋转矩阵与前一帧的旋转矩阵之间执行至少一次插值。
43.这样的插值使得平滑(“渐进平均”)分别应用于前一帧和当前帧的旋转矩阵成为可能,从而在回放期间使得从一帧到另一帧的可听见的咔哒声效应衰减。
44.在这样的实施方式中:
45.‑
基于所估计的差异,确定要在当前帧的旋转矩阵与前一帧的旋转矩阵之间执行的插值的数量,
46.‑
当前帧被分成与要执行的插值的数量相对应的多个子帧,以及
47.‑
可以至少对该数量的插值进行编码以用于经由网络进行传输。
48.在一个实施例中,环绕声表示是一阶的,通道的数量n是四,并且当前帧的旋转矩阵由两个四元数表示。
49.在该实施例中,并且在插值的情况下,当前子帧的每个插值是球面线性插值(或“slerp”),其作为当前子帧之前的子帧的插值的函数并基于之前的子帧的四元数来实行。
50.例如,可以实行当前子帧的球面线性插值以获得当前子帧的四元数,如下:
[0051][0052][0053]
其中:
[0054]
q
l,t
‑1是前一子帧t

1的四元数之一,
[0055]
q
r,t
‑1是前一子帧t

1的另一四元数,
[0056]
q
l,t
是当前子帧t的四元数之一,
[0057]
q
r,t
是当前子帧t的另一四元数,
[0058]
ω
l
=arccos(q
l,t
‑1·
q
l,t
);ω
r
=arccos(q
r,t
‑1·
q
r,t
)
[0059]
并且α对应于插值因子。
[0060]
在一个实施例中,在时域中通过主要分量分析(pca)或通过卡尔胡恩

洛维变换(klt)来实行对于特征向量的搜索。
[0061]
当然,可以考虑其他实施例(奇异值分解或其他)。
[0062]
在一个实施例中,该方法包括预测每个环绕声通道的比特分配预算的先前步骤,包括:
[0063]

对于每个环绕声通道,估计通道中的当前声学能量,
[0064]

基于该环绕声通道和网络中的当前比特率,在存储器中选择预定质量分数,
[0065]

通过将所选择的分数乘以所估计的能量来估计要应用于该通道的比特分配的权重。
[0066]
然后,该实施例使得管理要为每个要编码的通道指派的比特的最佳分配成为可能。它本身是有利的,并且可能是单独保护的对象。
[0067]
本发明还涉及一种用于解码音频信号的方法,该音频信号在高于0阶的环绕声表示中的n个通道的每个通道中随时间形成一连串样本帧,该方法包括:
[0068]

对于当前帧,除了该当前帧的n个通道的信号之外,还接收旋转矩阵的参数,
[0069]

根据所述参数来构建逆旋转矩阵,
[0070]

在对来自所接收的n个通道的信号进行分离通道解码之前,将所述逆旋转矩阵应用于所述信号。
[0071]
这样的实施例还能够在解码中改善n个通道之间的去相关。
[0072]
本发明还涉及一种包括用于实施上述编码方法的处理电路的编码设备。
[0073]
本发明还涉及一种包括用于实施上述解码方法的处理电路的解码设备。
[0074]
本发明还涉及一种包括指令的计算机程序,该指令用于当这些指令由处理电路的处理器执行时实施上述方法。
[0075]
本发明还涉及存储这种计算机程序的指令的非暂时性存储器介质。
附图说明
[0076]
根据阅读以下详细描述中呈现的示例性实施例,并且根据查看附图,本发明的其他特征和优点将变得显而易见,其中:
[0077]

图1示出了多通道

单通道编解码(现有技术),
[0078]

图2示出了本发明意义上的示例方法的一连串主步骤,
[0079]

图3示出了根据本发明的编码器的示例的总体结构,
[0080]

图4示出了由图3的编码器的块310执行的pca/klt分析和变换的细节,
[0081]

图5示出了根据本发明的解码器的示例,
[0082]

图6示出了解码和在解码中与图4相反的pca/klt合成,
[0083]

图7示出了本发明意义内的编码器和解码器的结构示例性实施例。
具体实施方式
[0084]
本发明旨在通过以下内容实现优化编码:
[0085]

自适应时间矩阵化(特别是利用通过pca/klt获得的自适应变换(“pca”表示主要分量分析,“klt”表示卡尔胡恩

洛维变换)),
[0086]

优选地随后是多通道

单通道编码。
[0087]
自适应矩阵化允许比固定矩阵化更有效地分解成通道。根据本发明的矩阵化有利地使得在多通道

单通道编码之前对通道进行去相关成为可能,以使得当通道被重新组合以便在解码中重建环绕声信号时,通过对每个通道进行编码而引入的编解码噪声对空间图像的扭曲在总体上尽可能小。
[0088]
此外,本发明能够确保矩阵化参数的温和自适应,以便避免帧边缘处的“咔哒声”类型伪像或空间图像中的过快波动,乃至由于从矩阵化(其随后由单通道编解码器的不同实例编码)产生的各种单独通道中的过强变化(例如,与通道之间的音频源的不适时置换有联系)而导致的编解码伪像。下面呈现了多通道

单通道编码,优选地在通道之间具有可变比特分配(在自适应矩阵化之后),但是在一些变型中,可以使用立体声核心编解码器的多个实例或其他。
[0089]
为了便于理解本发明,关于n维旋转和pca/klt或svd型分解(“svd”表示奇异值分解)的某些解释性概念在下面重新总结。
[0090]
旋转和“四元数”[0091]
信号由连续的音频样本块表示,这些块在下面称为“子帧”。
[0092]
本发明使用具有适合于每帧量化的参数的n维旋转表示,尤其是有效的子帧插值。2维、3维和4维中使用的旋转表示被定义如下。
[0093]
旋转(围绕原点)是将一个向量改变为另一向量的n维空间变换,使得:
[0094]

向量的振幅被保留
[0095]

在旋转之前定义正交坐标系的向量的叉积在旋转之后被保留(不存在反射)。
[0096]
大小为n
×
n的矩阵m是当且仅当m
t
.m=i
n
时的旋转矩阵,其中i
n
表示大小为n
×
n的单位矩阵(即,m是酉矩阵,m
t
表示m的转置),并且其行列式为+1。
[0097]
在本发明中使用了等同于旋转矩阵的表示的几个表示:
[0098]
在二维(2d平面)(n=2):我们使用旋转角度作为表示,如下。
[0099]
给定旋转角度θ,我们推导出旋转矩阵:
[0100][0101]
给定旋转矩阵,我们可以通过观察到矩阵轨迹为2cosθ来计算角度θ。注意,在应用下面呈现的主要分量分解(pca)和特征值分解(evd)之前,也可以直接根据协方差矩阵进行估计θ。
[0102]
各个角度θ1和θ2的两次旋转之间的插值可以通过θ1与θ2之间的线性插值来完成,考虑到这两个角度之间的单位圆上的最短路径约束。
[0103]
在三维(3d)空间(n=3):欧拉角度和四元数用作表示。在一些变型中,也可以使用这里没有提及的轴

角度表示。
[0104]
大小为3
×
3的旋转矩阵可以分解为沿x、y或z轴角度为θ的3个基本旋转的乘积。
[0105][0106][0107][0108]
取决于轴的组合,角度称为欧拉角度或卡丹角度。
[0109]
然而,3d旋转的另一表示由四元数给出。四元数是形式为数字q=a+bi+cj+dk的、具有四个分量的复数表示的推广,其中,i2=j2=k2=ijk=

1。
[0110]
实部a称为标量,并且三个虚部(b,c,d)形成3d向量。四元数的范数是(范数1的)单位四元数表示旋转——然而,这种表示不是唯一的;因此,如果q表示旋转,则

q表示相同的旋转。
[0111]
给定单位四元数q=a+bi+cj+dk(其中a2+b2+c2+d2=1),相关联的旋转矩阵为:
[0112][0113]
欧拉角度不允许对3d旋转正确地插值;为此,我们改为使用四元数或轴

角度表示。slerp(“球面线性插值”)插值方法包括根据以下公式进行插值:
[0114][0115]
其中,0≤α≤1是从q1到q2的插值因子,并且ω是两个四元数之间的角度:
[0116]
ω=arccos(q1.q2)
[0117]
其中,q1.q2表示两个四元数之间的点积(与两个4维向量之间的点积相同)。
[0118]
这相当于遵循4d球面上的大圆、以作为α的函数的恒定角速度进行插值。必须确保,最短路径被用于通过在q1.q2<0时改变四元数之一的符号进行插值。注意,可以使用四元数插值的其他方法(归一化线性插值或非线性插值、样条等)。
[0119]
注意,也可以通过轴

角度表示来插值3d旋转;在这种情况下,角度像在2d情况下一样被插值,并且轴可以例如通过slerp方法(在3d中)被插值,同时确保最短路径在3d单位球面上被采用,并且考虑到由轴r和角度θ给出的表示等同于由相反方向的轴

r和角度2π

θ给出的表示的事实。
[0120]
在4维(n=4)中,旋转可以由6个角度(n(n

1)/2))来参数化,并且我们展示了,与四元数q1=a+bi+cj+dk和q2=w+xi+yj+zk相关联的两个大小为4
×
4的矩阵(称为四元数(q1)和反四元数)的乘积给出了大小为4
×
4的旋转矩阵。
[0121]
可以找到相关联的四元数对(q1,q2)以及相关联的四元数矩阵和反四元数矩阵,使得:
[0122][0123]
并且
[0124][0125]
他们的积给出了大小为4
×
4的矩阵:
[0126][0127]
并且可以证实该矩阵满足旋转矩阵的性质(酉矩阵且行列式等于1)。
[0128]
相反,给定4
×
4旋转矩阵,这个矩阵可以例如用称为“凯莱分解”的方法分解成形式为的矩阵乘积。这涉及计算称为“四方变换(tetragonal transform)”(或相关矩阵)的中间矩阵以及由此以对两个四元数的符号有一些不确定性(这可以通过下面进一步提及的附加“最短路径”约束来消除)来推导四元数。
[0129]
奇异值分解(或“svd”)
[0130]
奇异值分解(svd)包括分解大小为m
×
n的实矩阵a,其形式如下:
[0131]
a=u∑v
t
[0132]
其中,u是大小为m
×
m的酉矩阵(u
t
u=i
m
),∑是大小为m
×
n的矩形对角矩阵,其系数σ
i
≥0为实数且为正数(i=1

p,其中p=min(m,n)),v是大小为n
×
n的酉矩阵(v
t
v=i
n
),
并且v
t
是v的转置。∑的对角线上的σ
i
系数是矩阵a的奇异值。按照惯例,它们通常按降序列出,并且在这种情况下,与a相关联的对角矩阵∑是唯一的。
[0133]
a的秩r由非零系数σ
i
的数量给出。因此,我们可以将奇异值分解改写为:
[0134][0135]
其中,u
r
=[u1,u2,

,u
r
]是a的左侧的奇异向量(或输出向量),∑
r
=diag(σ1,


r
),并且v
r
=[v1,v2,

,v
r
]是a的右侧的奇异向量(或输入向量)。该矩阵公式也可以改写为:
[0136][0137]
如果总和被限制于索引i<r,则我们得到仅表示“主要的”信息的“经滤波的”矩阵。
[0138]
我们还可以写为:
[0139]
av
i
=σ
i
u
i
[0140]
这展示了矩阵a将v
i
变换成σ
i
u
i

[0141]
a的svd与a
t
a和aa
t
的特征值分解有关,因为:
[0142]
a
t
a=v(∑
t
∑)v
t
[0143]
aa
t
=u(∑∑
t
)u
t
[0144]

t
∑和∑∑
t
的特征值是u的列是aa
t
的特征向量,而v的列是a
t
a的特征向量。
[0145]
svd可以用几何学来解释:矩阵a在维度n中的球形的图像是在维度m中具有在方向u1,u2,...,u
m
上的且长度为σ1,...,σ
m
的主轴的超椭圆。
[0146]
卡尔胡恩

洛维变换(或“klt”)
[0147]
具有以0为中心的随机向量x和协方差矩阵r
xx
=e[x x
t
]的卡尔胡恩

洛维变换(klt)被定义如下:
[0148]
y=v
t
x
[0149]
其中,v是通过将r
xx
分解成特征值而获得的特征向量矩阵(按照惯例,特征向量是列向量)
[0150]
r
xx
=vav
t
[0151]
其中,λ=diag(λ1,...,λ
n
)是系数为特征值的对角矩阵。矩阵v=[v1,v2,...,v
n
]包含r
xx
的特征向量(列),使得
[0152]
r
xx
v
i
=λ
n
v
i
[0153]
我们可以将klt看作基(basis)的改变,因为乘积v
t
x表示特征向量所给出的基中的向量x。
[0154]
逆变换由下式给出:
[0155]
x=vy
[0156]
klt使得将x的分量去相关成为可能;变换后的向量y的方差是r
xx
的特征值。
[0157]
主要分量分析(或“pca”)
[0158]
主要分量分析(pca)是一种产生正交变量并在投影之后最大化变量的方差(或等效地最小化重建误差)的降维技术。
[0159]
下面呈现的pca,虽然也是基于分解成特征值(诸如klt),是这样的:估计的协方差矩阵是根据n个观察到的维度为n的向量x
i
(i=1

n)来计算的:
[0160][0161]
假设这些向量居中:
[0162][0163]
分解成形式为的特征值允许计算主要分量:y
n
=v
t
x
n

[0164]
pca是一种将数据投影到新的基中以便最大化投影之后变量的方差的矩阵v
t
的变换。
[0165]
注意,pca也可以从信号x
i
的svd中获得,该信号以大小为n
×
n矩阵x的形式表示。在这种情况下,我们可以写为:
[0166]
x=udv
t
[0167]
我们证实xx
t
=udd
t
u
t
,这对应于xx
t
的对角化。因此,pca的投影向量对应于u的列向量,并且投影给出u
t
x=dv
t
作为结果。
[0168]
还注意到,pca通常被视为一种用于将高维度的数据集“压缩”成包含很少主要分量的集合的降维技术。在本发明中,pca有利地使得将多维输入信号去相关成为可能,但是避免了通道的消除(因此减少了通道的数量),以便避免引入伪像。这导致最小编码比特率,以避免“截断”空间图像,除非在特定的变型中,特征值低至使得可以允许零速率(例如,以便更好地对具有合成地空间化的单一源的、人工创建的环绕声声音进行编码)。
[0169]
我们现在参考图2来描述在本发明意义内的方法中针对当前帧t实施的步骤的一般原理。
[0170]
步骤s1包括对于每个帧t使用acn(环绕声通道号)通道排序惯例来获得环绕声通道(这里在所描述的示例中是四个通道w、y、z、x)的各个信号。这些信号可以用n
×
l矩阵的形式来表示(对于n个环绕声通道(这里是4个)和每帧l个样本)。
[0171]
在下一步骤s2中,这些通道的信号可以可选地例如通过高通滤波器进行预处理,如下面参考图3所述。
[0172]
在下一步骤s3中,主要分量分析pca或等效方式的卡尔胡恩

洛维变换klt被应用于这些信号,以从n个通道的协方差矩阵中获得特征值和特征向量矩阵。在本发明的变型中,可以使用svd。
[0173]
在步骤s4中,针对当前帧t获得的特征向量矩阵经历带符号置换(permutation),使得它尽可能与前一帧t

1的相同性质的矩阵对齐。原则上,我们确保特征向量矩阵中的列向量的轴尽可能地对应于前一帧的矩阵中相同位置处的列向量的轴,并且如果不是这样的话,则置换当前帧t的矩阵中不对应的特征向量的位置。然后,我们还确保特征向量从一个
矩阵到另一矩阵的方向也是一致的。换句话说,最初我们只对承载特征向量的直线感兴趣(仅仅是朝向(orientation),而没有方向(direction)),并且对于每条线,我们在前一帧t

1的矩阵中寻找最近的线。为此,向量在当前帧的矩阵中被置换。然后,在第二步中,我们尝试匹配(方向性)向量的朝向(orientation)。为此,我们反转不具有正确朝向的特征向量的符号。
[0174]
这样的实施例使得确保两个矩阵之间的最大一致成为可能,从而避免声音回放期间两个帧之间可听见的咔哒声。
[0175]
在步骤s5中,我们还确保当前帧t的特征向量矩阵(由此通过带符号置换进行校正)确实表示旋转的应用(n=2个通道的角度的旋转,三个欧拉角度的旋转,轴和角度的旋转,或者与一阶平面环绕声表示w、y、z相对应的n=3的四元数的旋转,以及类型为w、y、z、x的一阶环绕声表示中n=4的两个四元数的旋转)。
[0176]
为了确保它确实是旋转,在步骤s6中,通过置换而校正的当前帧t的特征向量矩阵的行列式必须是正数并且等于(或者实际上接近)+1。如果它等于(或接近)

1,则应该:
[0177]

再次置换两个特征向量(例如,与低能量通道相关联的两个特征向量,因此不是很有代表性),或者
[0178]

优选地,在步骤s6中反转列的所有元素的符号(例如,与低能通道相关联的列)。
[0179]
然后,在步骤s7中,我们获得有效地与旋转相对应的当前帧t的特征向量矩阵。
[0180]
然后,在步骤s8中,该矩阵的参数(例如,诸如角度值、轴和角度的值、或者该矩阵的(多个)四元数的值)可以被编码在为此目的分配的多个比特中。在另一可选但有利的实施例中,在步骤s9中观察到针对当前帧t估计的旋转矩阵与前一帧t

1的旋转矩阵之间的显著差异(例如,大于阈值)的情况下,可以确定可变数量的插值子帧:否则,该数量的子帧被固定在预定值。步骤s10包括:
[0181]

将当前帧划分成子帧,以及
[0182]

对要应用于从前一帧t

1的矩阵到当前帧t的矩阵的连续子帧的矩阵进行插值,以便平滑两个矩阵之间随时间的差异。
[0183]
在步骤s11中,插值后的旋转矩阵被应用于表示步骤s1(或可选的s2)的环绕声通道信号的k个子帧中的每个子帧的矩阵n x(l/k),以便在步骤s14的多通道

单通道编码之前尽可能多地将这些信号去相关。记得,事实上,根据一般方法,我们希望在该多通道

单通道变换之前尽可能多地将这些信号去相关。对分离通道的比特分配在步骤s12中完成,并且在步骤s13中进行编码。
[0184]
在步骤s14中,在实行步骤s15的复用从而结束用于压缩编码的方法之前,可以根据该通道的代表性和网络res上的可用比特率来决定每个通道要分配的比特数(图7)。在一个实施例中,针对当前帧估计每个通道中的能量,并且将该能量乘以针对该通道和针对给定比特率的预定义分数(该分数例如是下面参考图3解释的mos分数)。因此,对要为每个通道分配的比特数进行加权。这样的实施例是有利的,并且可能是在环绕声上下文中单独保护的对象。
[0185]
图7示出了本发明意义内的编码设备dcod和解码设备ddec,这些设备相对于彼此是对偶的(意味着是“可反转的”),并且通过通信网络res而彼此连接。
[0186]
编码设备dcod包括处理电路,通常包括:
[0187]

存储器mem1,用于存储本发明意义内的计算机程序的指令数据(这些指令可以分布在编码器dcod与解码器ddec之间);
[0188]

接口int1,用于接收分布在不同通道(例如,四个一阶通道w、y、z、x)上的环绕声信号,以用于在本发明的意义内对它们进行压缩编码;
[0189]

处理器proc1,用于接收这些信号和通过执行存储在存储器mem1中的计算机程序指令来处理它们,以用于对它们进行编码;以及
[0190]

通信接口com1,用于经由网络来传输编码信号。
[0191]

解码设备ddec包括其自己的处理电路,通常包括:
[0192]

存储器mem2,用于存储本发明意义内的计算机程序的指令数据(如上所述,这些指令可以分布在编码器dcod与解码器ddec之间);
[0193]

接口com2,用于从res网络接收编码信号,以用于在本发明的意义内从压缩中解码出它们;
[0194]

处理器proc2,用于通过执行存储在存储器mem2中的计算机程序指令来处理这些信号,以用于对它们进行解码;以及
[0195]

输出接口int2,用于以环绕声通道w'、y'、z'、x'的形式传送解码信号,例如以用于回放它们。
[0196]
当然,该图7示出了本发明意义内的编解码器(编码器或解码器)的结构实施例的一个示例。下面图3至图6描述了这些功能更强的编解码器的详细实施例。
[0197]
现在参考图3来描述本发明意义内的编码器设备。
[0198]
编码器的策略是尽可能多地将环绕声信号的通道去相关,并且用核心编解码器对它们进行编码。这种策略使得限制解码的环绕声信号中的伪像成为可能。更具体地,这里我们寻求在多通道

单通道编码之前对输入通道应用优化的去相关。此外,对于编码器和解码器来说插值的计算成本有限,因为它是在特定的域(2d的角度、3d的四元数、4d的四元数对)中实行的,这使得对于为pca/klt分析计算的协方差矩阵进行插值成为可能,而不是每帧几次地重复分解成特征值和特征向量。
[0199]
然而,在讨论在本发明的意义内执行的核心编码之前,这里呈现了编码器的一些有利的特征,特别是诸如作为感知标准的函数的用于编码的分配比特预算的优化,如下所示。
[0200]
在这里描述的编码器的实施例中,编码器通常可以是标准化的3gpp evs(“增强话音服务”)编码器的扩展。有利的是,可以使用evs编码比特率,而无需修改evs比特流的结构。因此,多通道

单通道编码(下面描述的图3的块340)在这里通过对每个变换的通道的可能分配来工作,其限制在用于超宽音频频带中进行编码的以下比特率:9.6;13.2;16.4;24.4;32;48;64;96和128kbps。
[0201]
当然,可以通过修改evs编解码器来增加附加的比特率(以在分配中具有更详细的粒度)。也可以使用除evs以外的编解码器,例如编解码器。
[0202]
一般来说,记住,编码的粒度越精细,必须预留越多的比特来表示比特率的可能组合。必须在分配的精细度与描述比特分配的附加信息之间做出折衷。这种分配在这里由图3的块320进行优化,这将在下面描述。这本身是有利的特征,并且独立于分解成特征向量,以便在本发明的意义内建立旋转矩阵。这样,由块320执行的比特分配可以是单独保护的对
象。
[0203]
参考图3,块300在索引为t的当前帧中接收输入信号y。这里没有示出索引,以免使标签复杂化。这是大小为n
×
l的矩阵。在适配于一阶环绕声上下文的实施例中,我们有n=4个通道w、y、z、x(由此根据acn次序来定义),它们可以根据sn3d惯例进行归一化。在变型中,通道的次序可以替代为例如w、x、y、z(遵循fuma惯例),并且归一化可以不同(n3d或fuma)。因此,通道w、y、z、x对应于连续的行:y
1,l
、y
2,l
、y
3,l
、y
4,l
,它们将以一维信号y
i
(l)(l=1,

,l)的形式来表示。因此,这是占据帧t的从1到l的一连串样本。
[0204]
假设(在每个通道中)信号以48khz进行采样,而不损失一般性。帧长度固定在20ms,即l=960个连续样本,而不损失一般性。替代地,可以例如使用l=640个样本的帧长度以32khz进行采样。
[0205]
下面描述的pca/klt分析和pca/klt变换是在时域中执行的。因此,可以理解,我们这里保持在时域中,而不必执行子带变换或更一般的频率变换。
[0206]
在每一帧处,编码器的块300应用预处理(可选的)以获得被表示为y的经预处理的输入信号。这可以是对输入信号通道的每个新的20ms帧进行高通滤波(其截止频率通常为20hz)。该操作允许去除有可能会偏置协方差矩阵估计的连续分量,使得来自块300的信号输出可以被认为具有零均值。传递函数被表示为h
pre
(z),因此我们对每个通道都有:x
i
(z)=h
pre
(z)y
i
(z)。如果没有应用块300,我们有x=y。块340中的低通滤波器也可以被应用于执行多通道

单通道编码,但是当应用块300时,可以在块340中使用的单通道编码的预处理期间的高通滤波优选地被禁用,以避免重复相同的预处理,从而降低整体复杂度。
[0207]
上述传递函数h
pre
(z)可以是以下类型:
[0208][0209]
通过将该滤波器应用于输入信号的n个通道中的每一个,其系数可以如下表所示:
[0210] 8khz16khz32khz48khzb00.9889542480671400.994461788958.1950.9972270499044700.998150511190452b1‑
1.977908496134280

1.988923577916390

1.994454099808940

1.996301022380904b20.9889542480671400.9944617889581950.9972270499044700.998150511190452a11.9777864837767641.9888929058996531.9944464105419271.996297601769122a2‑
0.978030508491796

0.988954249933127

0.994461789075954

0.996304442992686
[0211]
替代地,可以使用另一类型的滤波器,例如,频率为50hz的六阶巴特沃兹滤波器。
[0212]
在一些变型中,预处理可以包括固定的矩阵化步骤,该步骤可以保持相同数量的通道或者减少通道的数量。下面给出了应用于b

格式环绕声信号的四个通道的矩阵化的示例:
[0213][0214]
注意,在这种情况下,在解码时必须通过经由m
a

b
=m
b

a
‑1对解码信号进行矩阵化来反转该预处理,以找到原始格式的通道。
[0215]
下一个块310在每个帧t处估计通过确定pca/klt的特征向量并证实由这些特征向量形成的变换矩阵确实表征了旋转而获得的变换矩阵。下面参考图4进一步给出块310的操作的细节。该变换矩阵执行通道的矩阵化,以便将它们去相关,使得通过块340应用独立的多通道

单通道类型的编码成为可能。如下面详述的,块310向复用器发送表示变换矩阵的量化索引,以及可选地,对当前帧t的每个子帧的变换矩阵的插值数量进行编码的信息,这也将在下面详述。
[0216]
块320基于给定的b个比特的预算来确定每个通道的最佳比特率分配(在pca/klt变换之后)。该块通过计算比特率的每个可能组合的分数来寻找比特率在通道之间的分布;通过寻找最大化该分数的组合来找到最佳分配。
[0217]
可以使用几个标准来定义每个组合的分数。
[0218]
例如,通道的单通道编码的可能比特率的数量可以被限制为具有超宽音频频带的evs编解码器的九个离散比特率:9.6;13.2;16.4;24.4;32;48;64;96和128kbps。然而,如果根据本发明的编解码器在与索引为t的当前帧中的b个比特的预算相关联的给定比特率下操作,则通常只能使用这些列出的比特率的子集。例如,如果编解码器比特率固定在4
×
13.2=52.8kbps以表示四个通道,并且如果每个通道接收到9.6kbps的最小预算以保证每个通道的超宽频带,则用于编码独立通道的比特率的可能组合必须遵守所使用的比特率保持低于可用比特率的约束,该可用比特率对应于:
[0219]
b
multimono
=b

b
overhead
,
[0220]
其中,b
overhead
是如下所述的用于每帧编码的附加信息(比特分配+旋转数据)的比特预算。例如,对于四通道环绕声编码的情况,b
overhead
可以是每20ms帧b
overhead
=55比特(即2.75kbps)的量级;这包括用于对旋转矩阵进行编码的51比特和用于对分离通道编码的比特分配进行编码的4比特(如下所述)。对于4
×
13.2=52.8kbps的总比特率,这因此留下了b
multimono
=50.05kbps的预算。
[0221]
就每个通道的比特率而言,这给出了对每个通道的比特率的以下置换:
[0222]

单元集(9.6,9.6,9.6,9.6)——总计=38.4
[0223]

(13.2,9.6,9.6,9.6)的置换——总计=42kbps
[0224]

(13.2,13.2,9.6,9.6)的置换——总计=45.6kbps
[0225]

(13.2,13.2,13.2,9.6)的置换——总计=49.2kbps
[0226]

(16.4,9.6,9.6,9.6)的置换——总计=45.2kbps
[0227]

(16.4,13.2,9.6,9.6)的置换——总计=48.8kbps
[0228]
可以看出,一些遵守最大预算限制的组合具有比其他组合低得多的比特率,并且最后只能保留两个相关的组合:
[0229]

(13.2,13.2,13.2,9.6)的置换——4种情况,并且未使用的比特率为50.5

49.2=1.3kbps
[0230]

和(16.4,13.2,9.6,9.6)的置换——12种情况,并且未使用的比特率为50.5

48.8=1.7kbps
[0231]
这能够说明十六种组合是特别有意义的,并且可以用4比特(16个值)来编码。此外,取决于所选的分配,一定数量的比特可能仍未使用。
[0232]
可以看出,基于pca/klt处理并允许灵活的比特分配的自适应矩阵化的编码可能导致未使用的比特,并且对于一些通道来说,导致比特率(例如,9.6kbps)低于在每个通道之间平均分布的比特率(例如,每个通道13.2kbps)。
[0233]
为了改善这种情况,块320然后可以评估由pca/klt变换(块310的输出)产生的4个通道的比特率的所有可能(相关)组合,并且为它们分配分数。该分数的计算基于:
[0234]

每个通道的能量,以及
[0235]

可以预先存储并且由主观或客观测试产生的平均分数;这个分数被表示为mos(对于“平均意见分数”,其为一组测试者的平均分数),与分配的比特率相关联。
[0236]
然后,这个分数可以用下面的等式来定义
[0237][0238]
其中,e
i
是通道i上信号s(l)(l=

l

1)的当前帧(索引为t)中的能量,
[0239]
其中:
[0240][0241]
最佳分配可以使得:
[0242][0243]
替代地,因子e
i
可以固定在与通道i相关联的特征值所取的值,该值是通过分解成输入到块310的信号的特征值并在可能的带符号置换之后产生的。
[0244]
对于与比特率r
i
=50b
i
(以比特/秒为单位)相对应的每20ms帧的预算b
i
(以比特数为单位)来说,mos分数q(b
i
)优选地是用于块340中的多通道

单通道编码的编解码器的主观质量分数。首先,我们可以使用evs标准化编码器的(平均)主观mos分数,由下表给出:
[0245]
κ
i
012345678b
i
192264328488640960128019202560r
i
960013200164002440032000480006400096000128000q(b
i
)3.623.794.254.604.534.824.834.854.87
[0246]
替代地,可以从预测编解码器的质量的其他(主观或客观)测试中推导出每个列出的比特率的其他mos分数。还可以根据信号类型的分类(例如,没有背景噪声的语音信号,或者具有环境噪声的语音,或者音乐或混合内容),通过重用由evs编解码器实施的分类方法,并且通过在执行比特分配之前将它们应用于环绕声输入信号的w通道,来适配当前帧中所使用的mos分数。mos分数也可以对应于由不同类型的方法和评级量表产生的平均分数:mos(绝对)从1到5,dmos(从1到5),mushra(从0到100)。
[0247]
在evs编码器被另一编解码器替换的变型中,比特率b
i
和分数q(b
i
)的列表可以在该另一编解码器的基础上被替换。还可以向evs编码器添加附加的编码比特率,从而补充比特率和mos分数的列表,乃至修改evs编码器和潜在的相关联的mos分数。
[0248]
在另一替代方案中,通道之间的分配通过用幂α加权能量来细化,其中α取0与1之间的值。通过改变α的值,我们由此可以控制能量在分配中的影响:α越接近1,能量在分数中越显著,从而通道之间的分配越不平等。相反,α越接近0,能量越不显著,通道之间的分配分布得越均匀。因此,分数以下列形式表示:
[0249][0250]
在另一替代方案中,为了使分配更稳定,可以将第二加权添加到分数函数中,以惩罚帧间比特率变化。如果帧t中的比特率组合与帧t

1中的比特率组合不同,则向分数添加惩罚。分数以下列形式表示:
[0251][0252]
其中,当b
t,i
=b
t

1,i
时,β
i
具有预定常数作为其值(例如,0.1),并且当b
t,i
≠b
t

1,i
时,β
i
=0。
[0253]
这种附加的加权使得限制通道之间比特率的过度频繁波动成为可能。利用这种加权,只有能量的显著变化才会导致比特率的变化。此外,常数的值可以变化,以调整分配的稳定性。
[0254]
再次参考图3,一旦为每一帧计算了比特率,该比特率就由块330编码,例如对所有比特率组合穷尽地进行编码。在9个比特率和4个通道的情况下,所需的比特率是比特,其中对应于四舍五入到下一整数。4个比特率的组合可以以索引的形式进行编码:然而,可能更倾向于:列举(最初是离线地)与给定比特预算相关的不同比特率组合,并且使用最小比特率来表示这些组合。该索引然后可以由“置换码”+“组合偏移”类型的编码来表示;例如,在我们使用4比特索引对包括(13.2,13.2,13.2,9.6)的4个置换和(16.4,13.2,9.6,9.6)的12个置换的16个比特率组合进行编码的示例中,我们可以使用索引0

3对前4个可能的置换(偏移为0,码范围为0

3)进行编码,并且使用索引4

15对12个其他可能的置换(偏移为4,码为0

3)进行编码。
[0255]
再次参考图3,复用块350将来自块310的n个矩阵化通道和来自块320的分配给每个通道的比特率作为输入,以便然后用与例如evs编解码器相对应的核心编解码器对不同
通道分离地进行编码。如果使用的核心编解码器允许立体声或多通道编码,则多通道

单通道方法可以被多通道

立体声或多通道编码替换。一旦通道被编码,相关联的比特流就被发送到复用器(块350)。
[0256]
在总预算的一部分没有被完全使用的帧中,复用器(块350)可以应用零比特填充来达到分配给当前帧的比特预算,即个比特。替代地,剩余的比特预算可以被重新分配用于对变换后的通道进行编码以便使用整个可用预算,并且如果多通道

单通道编码基于evs类型技术,则指定的3gpp evs编码算法可以被修改以引入附加的比特率。在这种情况下,也可以将这些附加的比特率集成到定义b
i
与q(b
i
)之间的对应关系的表中。
[0257]
比特也可以被预留,以便能够在两种编码模式之间切换:
[0258]

根据本发明利用旋转矩阵的编码进行编码,以及
[0259]

如果前一帧的旋转矩阵也是单位矩阵(例如,当环绕声信号包括非常扩散的声源或在空间上围绕某些优选方向分布的多个源时,在这种情况下环绕声通道的相关性比混合更孤立的点源的声音的相关性低),则根据本发明利用限制于单位矩阵(因此不被传输)的旋转矩阵进行编码相当于直接的多通道

单通道编码。
[0260]
这两种模式之间的选择意味着使用流中的比特来指示是当前帧使用限制于单位矩阵的旋转矩阵而不传输旋转参数(比特=0),还是对旋转矩阵进行编码(比特=1)。当bit=0时,在某些变型中,可以将固定比特分配给分离的通道,而不传输比特分配。
[0261]
现在参考图4来详细描述应用pca/klt分析和变换的块310。在该块中,编码器在块400中根据(经预处理的)环绕声通道来计算协方差矩阵:
[0262][0263]
替代地,该矩阵可以由相关矩阵替换,其中通道通过它们各自的标准偏差被预先归一化,或者通常反映相对重要性的权重可以被应用于每个通道;此外,归一化项1/(l

1)可以被省略或由另一值(例如,1/l)替换。这些值c
ij
对应于x
i
与x
j
之间的方差。
[0264]
编码器然后在块410中通过计算矩阵c的特征值和特征向量来执行分解成特征值(evd对于“特征值分解”)。特征向量在这里被表示为v
t
,以指示帧t的索引,因为在索引t

1的前一帧中获得的特征向量v
t
‑1优选地被存储并随后被使用。特征值被表示为:λ1,λ2,...,λ
n

[0265]
替代地,可以使用经预处理的通道x的奇异值分解(svd)。因此我们获得奇异向量(左边的u和右边的v)和奇异值σ
i
。在这种情况下,我们可以认为特征值λ
i
为并且特征向量v
t
由左边u上的n个奇异向量(列)给出。
[0266]
然后,编码器在块420中对帧t的变换矩阵的列应用第一带符号置换(其中列是特征向量),以便避免与前一帧t

1的变换矩阵有太大差异,这将导致在前一帧的边界处的咔哒声问题。
[0267]
因此,一旦针对帧t获得变换矩阵的粗略草稿,块430就从索引为t的当前帧中获取n个估计的特征向量v
t
=v
t,0
,...,v
t,n
,以及从索引为t

1的前一帧中存储的n个特征向量v
t
‑1,并且对估计的向量v
t
应用带符号置换,使得它们尽可能地接近v
t
‑1。因此,帧t的特征向量被置换,使得相关联的基尽可能地接近帧t

1的基。这具有改善变换信号地帧的连续性的
效果(在变换矩阵被应用于通道之后)。
[0268]
另一约束是变换矩阵必须对应于旋转。该约束确保编码器可以将变换矩阵转换成广义欧拉角度(块430),以便用如上所述的预定比特预算来量化它们(块440)。为此,该矩阵的行列式必须为正数(通常等于+1)。
[0269]
优选地,最佳带符号置换通过两个步骤获得:
[0270]

第一步(上面呈现的图2中的s4)匹配两帧之间最接近的向量,只关注轴,而不关注轴的方向(朝向)。这个问题可以被公式化为任务指派的组合问题,其中目标是找到使成本最小化的配置。成本可以在这里被定义为帧t与t

1的特征向量矩阵之间的互相关的绝对值的轨迹。
[0271]
c
t
=tr(abs(corr(v
t
,v
t
‑1)))
[0272]
其中,tr(.)表示矩阵的轨迹,abs(.)相当于对矩阵的所有系数应用绝对值运算,并且corr(v1,v2)给出了向量v1与v2之间的相关矩阵。
[0273]
在一个实施例中,“匈牙利”方法(或“匈牙利算法”)用于确定给出帧t的特征向量的置换的最优指派;
[0274]

第二步(图2中的s6)包括确定每个置换特征向量的方向/朝向。块420计算帧t

1的置换特征向量与帧t的特征向量之间的互相关
[0275][0276]
如果互相关矩阵γ
t
的对角线上的值是负数,则这表示特征向量的方向之间的符号变化。然后在中对相对应的特征向量执行符号逆转。
[0277]
在两个步骤结束时,帧t处的变换矩阵由v
t
表示,使得在下一帧处所存储的矩阵变成v
t
‑1。
[0278]
替代地,通过计算被转换成3d或4d的基矩阵或的变化,并且通过将基矩阵的这种变化分别转换成单位四元数或两个单位四元数,可以完成对于最佳带符号置换的搜索。然后,搜索变成最近邻搜索,其利用表示可能的带符号置换的集合的字典。例如,在4d的情况下,4个值的12个可能的偶数置换(总共24个置换)与以下写作4d向量的单位四元数对相关联:
[0279]
·
(1,0,0,0)和(1,0,0,0)
[0280]
·
(0,0,0,1)和(0,0,

1,0)
[0281]
·
(0,1,0,0)和(0,0,0,

1)
[0282]
·
(0,0,1,0)和(0,

1,0,0)]
[0283]
·
(0.5,

0.5,

0.5,

0.5)和(0.5,0.5,0.5,0.5)
[0284]
·
(0.5,0.5,0.5,0.5)和(0.5,

0.5,

0.5,

0.5)
[0285]
·
(0.5,

0.5,0.5,

0.5)和(0.5,

0.5,0.5,0.5)
[0286]
·
(0.5,

0.5,0.5,0.5)和(0.5,

0.5,

0.5,0.5)
[0287]
·
(0.5,0.5,

0.5,0.5)和(0.5,0.5,

0.5,

0.5)
[0288]
·
(0.5,

0.5,

0.5,0.5)和(0.5,0.5,

0.5,0.5)
[0289]
·
(0.5,0.5,

0.5,

0.5)和(0.5,0.5,0.5,

0.5)
[0290]
·
(0.5,0.5,0.5,

0.5)和(0.5,

0.5,0.5,

0.5)
[0291]
通过使用上述列表作为预定义四元数对的字典,并且通过针对与基矩阵的变化相关联的四元数对执行最近邻搜索,可以完成对于(偶数)最优置换的搜索。这种方法的一个优点是重用四元数和四元数对类型的旋转参数。
[0292]
在下一个块460中实施的运算假设在带符号置换之后的变换矩阵确实是旋转矩阵;变换矩阵必然是酉矩阵,但它的行列式也必须等于1
[0293]
det(v
t
)=1
[0294]
然而,从块410和420产生的变换矩阵(在evd和带符号置换之后)是正交(酉)矩阵,其可以具有

1或1的行列式,这意味着反射或旋转矩阵。
[0295]
如果变换矩阵是反射矩阵(如果它的行列式等于

1),则可以通过反转特征向量(例如,与最低值相关联的特征向量)或通过反转两列(特征向量)将其修改为旋转矩阵。
[0296]
特征向量分解(例如,通过吉文斯旋转)或奇异值分解的某些方法可以导致本质上是旋转矩阵(行列式为+1)的变换矩阵;在这种情况下,证实行列式为+1的步骤将是可选的。
[0297]
块430将旋转矩阵转换成参数。在优选实施例中,角度表示用于量化(对于4d情况为6个广义欧拉角度,对于3d情况为3个欧拉角度,并且在2d中为一个角度)。对于环绕声的情况(4个通道),我们根据david k.hoffman、richard c.raffenetti和klaus ruedenberg,在《数学物理杂志》13,528(1972)上发表的文章“generalization of euler angles to n

dimensional orthogonal matrices”中描述的方法获得了6个广义欧拉角度;对于平面环绕声的情况(3个通道),我们获得3个欧拉角度,并且对于立体声情况,我们根据现有技术中公知的方法获得旋转角度。在优选实施例中,使用标量量化,并且量化步长例如对于每个角度来说是相同的。例如,在4个通道的情况下,我们用3
×
(8+9)=51比特对6个广义欧拉角度(3个角度被定义在步长为π/256的在8比特中编码的区间[

π/2,π/2]中,并且另外3个角度被定义在步长为π/256的在9比特中编码的区间[

π,π]中)进行编码。变换矩阵的量化索引被发送到复用器(块350)。此外,如果用于量化的参数与用于插值的参数不匹配,则块440可以将量化的参数转换成量化的旋转矩阵
[0298]
替代地,块430和440可以被如下替换:
[0299]

块430可以执行旋转矩阵到一对单位四元数(4个通道的情况)的转换、到单位四元数(3个通道的情况)的转换、以及到角度(2个通道的情况)的转换。
[0300]
对于4d情况,这种到一对四元数的转换可以通过下面的伪码对旋转矩阵(其系数被表示为r[i,j],i,j=0

3)实行:
[0301]
相关联的矩阵a[i,j]的计算如下:
[0302]
a[0,0]=r[0,0]+r[1,1]+r[2,2]+r[3,3]
[0303]
a[1,0]=r[1,0]

r[0,1]+r[3,2]

r[2,3]
[0304]
a[2,0]=r[2,0]

r[3,1]

r[0,2]+r[1,3]
[0305]
a[3,0]=r[3,0]+r[2,1]

r[1,2]

r[0,3]
[0306]
a[0,1]=r[1,0]

r[0,1]

r[3,2]+r[2,3]
[0307]
a[1,1]=

r[0,0]

r[1,1]+r[2,2]+r[3,3]
[0308]
a[2,1]=

r[3,0]

r[2,1]

r[1,2]

r[0,3]
[0309]
a[3,1]=r[2,0]

r[3,1]+r[0,2]

r[1,3]
[0310]
a[0,2]=r[2,0]+r[3,1]

r[0,2]

r[1,3]
[0311]
a[1,2]=r[3,0]

r[2,1]

r[1,2]+r[0,3]
[0312]
a[2,2]=

r[0,0]+r[1,1]

r[2,2]+r[3,3]
[0313]
a[3,2]=

r[1,0]

r[0,1]

r[3,2]

r[2,3]
[0314]
a[0,3]=r[3,0]

r[2,1]+r[1,2]

r[0,3]
[0315]
a[1,3]=

r[2,0]

r[3,1]

r[0,2]

r[1,3]
[0316]
a[2,3]=r[1,0]+r[0,1]

r[3,2]

r[2,3]
[0317]
a[3,3]=

r[0,0]+r[1,1]+r[2,2]

r[3,3]
[0318]
a=a/4
[0319]
根据相关联的矩阵来计算2个四元数:
[0320]
a2=square(a)#系数的平方
[0321]
q1=sqrt(a2.sum(axis=1))#对行求和
[0322]
q2=sqrt(a2.sum(axis=0))#对列求和
[0323]
符号的确定:
[0324]
对于k=0...3:如果sign(a[i,k])<0,则q2[k]=

q2[k]
[0325]
对于k=0...3:如果sign(a[k,j])!=sign(q1[k]*q2[j]),则q1[k]=

q1[k]
[0326]
对于大小为3
×
3的矩阵r[i,j](i,j=0

2),对于3d情况的到四元数的转换可以如下实行:
[0327]
简化相关联的矩阵的计算:
[0328]
q[0]=(r[0,0]+r[1,1]+r[2,2]+1)^2+(r[2,1]

r[1,2])^2+(r[0,2]

r[2,0])^2+(r[1,0]

r[0,1])^2
[0329]
q[1]=(r[2,1]

r[1,2])^2+(r[0,0]

r[1,1]

r[2,2]+1)^2+(r[1,0]+r[0,1])^2+(r[2,0]+r[0,2])^2
[0330]
q[2]=(r[0,2]

r[2,0])^2+(r[1,0]+r[0,1])^2+(r[1,1]

r[0,0]

r[2,2]+1)^2+(r[2,1]+r[1,2])^2
[0331]
q[3]=(r[1,0]

r[0,1])^2+(r[2,0]+r[0,2])^2+(r[2,1]+r[1,2])^2+(r[2,2]

r[0,0]

r[1,1]+1)^2
[0332]
对于i=0

3:q[i]=sqrt(q[i])/4
[0333]
四元数q的计算:
[0334]
如果(r[2,1]

r[1,2])<0,则q[1]=

q[1]
[0335]
如果(r[0,2]

r[2,0])<0,则q[2]=

q[2]
[0336]
如果(r[1,0]

r[0,1])<0,则q[3]=

q[3]
[0337]
对于2
×
2矩阵的情况,根据现有技术的已知方法来计算角度。
[0338]
在一些变型中,单位四元数q1、q2(4d情况)和q(3d情况)可以被转换成现有技术中已知的轴

角度表示
[0339]

块440可以在所指示的域中执行量化:
[0340]
*4个通道的情况:单位四元数对q1和q2通过4维的球面量化字典进行量化;按照惯例,q1用半球面字典进行量化(因为q1和

q1对应于相同的3d旋转),并且q2用球面字典进行量化。字典的示例可以由基于4维多面体的预定义点给出;在一些变型中,可以量化双关联
的轴

角度表示,这将等同于四元数对;
[0341]
*3个通道的情况:单位四元数通过4维的球面量化字典进行量化

字典的示例可以由基于4维多面体的预定义点给出;
[0342]
*2个通道的情况:角度通过均匀标量量化进行量化。
[0343]
我们现在描述用于两个连续帧之间的旋转矩阵的插值的块460。它可以在应用这些矩阵之后消除通道中的不连续性。通常,如果两组角度或四元数从前一帧t

1到下一帧t相差太大,则在这两个帧之间的子帧中没有应用平滑过渡的情况下,可听见的咔哒声是一个问题。然后,在为帧t

1计算的旋转矩阵与为帧t计算的旋转矩阵之间实行过渡插值。编码器在块460中当前帧与前一帧之间的旋转的(量化)表示进行插值,以便避免变换之后各种通道的过度快速波动。插值的数量可以是固定的(等于预定值)或自适应的。然后,根据在块450中确定的插值的数量,将每个帧分成子帧。因此,如果使用自适应插值,则在自适应地确定该数目的情况下,块450可以在选定数量的比特中对要执行的插值的数量进行编码,从而对要提供的子帧的数量进行编码;在固定插值的情况下,不必对信息进行编码。
[0344]
接下来,块460将旋转矩阵转换成表示旋转矩阵的特定域。帧被分成子帧,并且在选定的域中,对每个子帧实行插值。
[0345]
对于一阶环绕声输入信号(具有4个通道w、x、y、z),在块460中,编码器从6个量化的欧拉角度重建量化的4d旋转矩阵,然后将其转换成用于插值目的的两个单位四元数。在编码器的输入是平面环绕声信号(3个通道w、x、y)的变型中,在块460中,编码器从3个量化的欧拉角度重建量化的3d旋转矩阵,然后将其转换成用于插值目的的单位四元数。在编码器输入是立体声信号的变型中,编码器在块460中使用用旋转角度量化的2d旋转的表示。
[0346]
在具有4个通道的实施例中,对于帧t与帧t

1之间的旋转矩阵的插值,借由凯莱因子分解将为帧t计算的旋转矩阵分解成两个四元数(四元数对),并且我们使用为前一帧t

1存储的四元数对,表示为(q
l,t
‑1,q
r,t
‑1)。
[0347]
对于每个子帧,四元数在每个子帧中被两两插值。
[0348]
对于左四元数(q
l,t
),该块确定两个可能(q
l,t


q
l,t
)之间的最短路径。取决于情况,当前帧的四元数的符号被反转。然后使用球面线性插值(slerp)为左四元数计算插值:
[0349][0350]
其中,α对应于插值因子(α=1/k,2/k,...1),且αω
l
=arccos(q
l,t
‑1·
q
l,t
)。
[0351]
对于右四元数(q
r,t
),如果存在对于左四元数的逆转,那么我们必须保持奇偶性,并且制定右四元数的符号。这种符号约束在下文中称为“联合最短路径约束”。然后插值的计算类似于左四元数:
[0352][0353]
其中,α对应于插值因子(α=1/k,2/k,...1),且ω
r
=arccos(q
r,t
‑1·
q
r,t
)。
[0354]
一旦为两个四元数计算了插值,就计算了尺寸4
×
4的旋转矩阵(分别是对于平面环绕声的3
×
3或对于立体声情况的2
×
2)。
[0355]
这种到旋转矩阵的转换可以根据以下伪码来实行:
[0356]
4d情况:对于四元数对
[0357]

如前所述,计算四元数矩阵和反四元数矩阵,并且计算矩阵乘积。
[0358]
3d情况:对于四元数q=(w,x,y,z),我们得到大小为3
×
3的矩阵m[i,j](i,j=0

2)。
[0359]
xy=2*x*y
[0360]
xz=2*x*z
[0361]
yz=2*y*z
[0362]
wx=2*w*x
[0363]
wy=2*w*y
[0364]
wz=2*w*z
[0365]
xx=2*x*x
[0366]
yy=2*y*y
[0367]
zz=2*z*z
[0368]
m[0][0]=1

(yy+zz)
[0369]
m[0][1]=(xy

wz)
[0370]
m[0][2]=(xz+wy)
[0371]
m[1][0]=(xy+wz)
[0372]
m[1][1]=1

(xx+zz)
[0373]
m[1][2]=(yz

wx)
[0374]
m[2][0]=(xz

wy)
[0375]
m[2][1]=(yz+wx)
[0376]
m[2][2]=1

(xx+yy);
[0377]
最后,在插值块460中每子帧计算的矩阵(或它们的转置)然后被用于变换块470,该变换块470通过将由此找到的旋转矩阵应用于已经由块300预处理的环绕声通道来产生n个变换的通道。
[0378]
下面,我们返回到块450中要确定的子帧数量k,块450用于该数量为自适应的情况。测量当前帧与前一帧之间的最终差异,或者直接根据描述旋转矩阵的参数的角度差异来确定。在后一情况下,我们想要确保连续子帧之间的角度变化是不可察觉的。自适应数量的子帧的实施对于降低编解码器的平均复杂度来说特别有利,但是如果选择降低复杂度,则最好使用具有固定数量的子帧的插值。
[0379]
帧t的校正旋转矩阵与帧t

1的旋转矩阵之间的最终差异给出了两个帧之间的通道矩阵化的差异的幅度的度量。该差值越大,在块460中完成的插值的子帧数量越多。为了测量这种差异,我们使用当前帧与前一帧的变换矩阵之间的互相关矩阵的绝对值之和,如下所示:
[0380]
δ
t
=‖i
n

corr(v
t
,v
t
‑1)‖
[0381]
其中,i
n
是单位矩阵,v
t
是索引为t的帧的特征向量,并且‖m‖是矩阵m的范数,其在这里对应于所有系数的绝对值之和。可以使用其他矩阵范数(例如,弗罗贝纽斯范数)。
[0382]
如果两个矩阵相同,那么该差异等于0。矩阵越不相似,差异δ
t
的值越大。可以将预
定的阈值应用于δ
t
,例如,根据以下决策逻辑,每个阈值与预定数量的插值相关联:
[0383]
阈值:{4.0,5.0,6.0,7.0}
[0384]
用于插值的子帧数量k:{10,48,96,192}
[0385]
因此,仅两个比特就足以对给出细分(子帧)数量的4个可能值进行编码。
[0386]
然后,由块450确定的插值数量k被发送到插值模块460,并且在自适应情况下,子帧数量以二进制索引的形式被编码,该二进制索引被发送到复用器(块350)。
[0387]
插值的实施使得最终能够在多通道

单通道编码之前应用输入通道去相关的优化。实际上,由于这种对于去相关的搜索,分别为前一帧t

1和当前帧t计算的旋转矩阵可能非常不同,但是即使如此,插值也使得平滑这种差异成为可能。
[0388]
所使用的插值只需要编码器和解码器有限的计算成本,因为它是在特定域(2d中为角度、3d中为四元数、4d中为四元数对)中执行的。这种方法比对为pca/klt分析计算的协方差矩阵进行插值和每帧重复几次evd类型特征值分解更有利。
[0389]
然后,块470使用在块460中计算的变换矩阵来执行每个子帧的环绕声通道的矩阵化。这种矩阵化相当于计算每个子帧的其中x(α)对应于大小为n
×
(l/k)(对于α=1/k,2/k,...1)的子块。包含在这些通道中的信号然后被发送到用于多通道

单通道编码的块340。
[0390]
现在参考图5,描述本发明的示例性实施例中的解码器。
[0391]
在块500对当前帧t的比特流进行解复用之后,分配信息被解码(块510),这使得对为n个变换的通道中的每个通道接收的(多个)比特流进行解复用和解码(块520)成为可能。
[0392]
块520调用分离地执行的核心解码的多个实例。核心解码可以是evs类型的,可选地被修改以提高其性能。使用多通道

单通道方法,每个通道被分离地解码。如果先前使用的编码是立体声或多通道编码,则可以用多通道

立体声或多通道来替换多通道

单通道方法以进行解码。如此解码的通道被发送到块530,块530对当前帧的旋转矩阵进行解码和可选地对要用于插值的子帧数量k(如果插值是自适应的)进行解码。对于每个矩阵,插值块460将帧分成子帧,对于这些子帧,可以在由块610(图6)编码的流中读取数量k,并且对旋转矩阵进行插值,目的是在不存在传输误差的情况下找到与编码器的块460中相同的矩阵,以便能够反转先前在块470中完成的变换。
[0393]
块530执行与块470相反的矩阵化,以便重建解码信号,如下面参考图6详细描述的。这种矩阵化相当于计算每个子帧的其中对应于大小为n
×
(l/k)(对于α=1/k,2/k,...)的连续子块。
[0394]
块530通常执行解码以及与图3的块310所执行的相反的pca/klt合成。在块600中,对当前帧中的旋转量化参数的量化索引进行解码。可以使用标量量化,并且对于每个角度来说量化步长相同。在自适应情况下,对插值子帧的数量进行解码(块610)以找到集合{10,48,96,192}当中的子帧数量k;在帧长度l不同的一些变型中,可以调整这组值。解码器的插值与编码器中执行的插值(块460)相同。
[0395]
块620使用在块460中计算的变换矩阵的逆(实际上为转置)来执行每个子帧的环绕声通道的逆矩阵化。
[0396]
因此,本发明使用与mpeg

h编解码器完全不同的方法,该方法具有基于变换矩阵
的特定表示的叠加,该变换矩阵在时域中被限制为从一帧到另一帧的旋转矩阵,特别是能够利用确保方向一致(包括考虑符号的方向)的映射对变换矩阵进行插值。
[0397]
本发明的一般方法是通过pca在时域中对环绕声声音进行编码,特别是以优化的方式(特别是在四元数/四元数对的域中)将pca变换矩阵制定为旋转矩阵并且通过子帧进行插值,以便提高质量。插值步长是固定的或自适应的,这取决于互相关矩阵与参考矩阵(单位)之间或要进行插值的矩阵之间的差异的标准。旋转矩阵的量化可以在广义欧拉角度域中实施。然而,优选地,可以选择在四元数和四元数对的域中(分别)量化3维和4维的矩阵,这使得保持在相同的域中进行量化和插值成为可能。
[0398]
此外,使用特征向量的对齐来避免从一帧到另一帧的咔哒声和通道逆转的问题。
[0399]
当然,本发明不限于上面作为示例而描述的实施例,而是扩展到其他变型。
[0400]
上面的描述由此讨论了4个通道的情况。
[0401]
然而,在一些变型中,也可以对多于四个的多个通道进行编码。该实施方式与n=4的情况保持相同(就功能块而言),但是四元数对的插值被下面的一般方法替换。
[0402]
帧t

1和t处的变换矩阵被表示为v
t
‑1和v
t
。可以用v
t
‑1与v
t
之间的因子α来执行插值,使得:
[0403][0404]
项可以通过的特征值分解来直接计算。实际上,如果则我们有
[0405]
还要注意,该变型也可以通过单位四元数对(4d情况)、单位四元数(3d情况)或角度来替换插值,然而这将是不太有利的,因为这将需要附加的对角化步骤和功率计算,而上述实施例对于2、3或4个通道的这些情况来说更有效。