实时音频编解码之三 多速率信号处理

Posted shichaog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实时音频编解码之三 多速率信号处理相关的知识,希望对你有一定的参考价值。

本文谢绝任何形式转载,谢谢。

1.4 语音信号处理

1.4.1 多速率信号处理

多速率信号处理 多速率数字信号处理和滤波器组在通讯和语音处理方面有诸多的应用,在编码器和语音增强算法里经常可以看到分析滤波器组合合成滤波器组。 对于一个时域信号,采样的点数越多,需要的存储空间就越多,在后续的滤波中计算量也越大,所以如果在信号变换缓慢的地方使用低。

1.4.1.1 几种频率的关系

频率是单位时间内完成周期性变化的次数,是描述周期运动频繁程度的量,采样频率 f s fs fs等于每秒对时域信号采样的点数,由奈奎斯特定理可以知道, f s fs fs要大于等于采样时域信号最高频率 f c f_c fc的两倍才不会发生混叠,即 f s > 2 f c f_s > 2f_c fs>2fc,角频率 Ω \\Omega Ω是实际物理频率的 2 π 2\\pi 2π倍,也称为模拟频率,单位rad/s, Ω s = 2 π f s \\Omega_s=2\\pi fs Ωs=2πfs ,归一化频率是将物理频率 f f f,按照 f s fs fs归一化之后的结果,最高信号频率 f s / 2 f_s/2 fs/2对应归一化频率0.5, 圆周频率 ω \\omega ω 归一化频率的 2 π 2\\pi 2π。几种频率的关系如下图1-7所示:

图1-7 几种频率关系

1.4.1.2 傅里叶变换和z变换

对于一个2维向量 [ a b ] \\beginbmatrix a \\\\ b \\endbmatrix [ab],​可以若干组向量的线性组合表示,即式1-6所示:
[ a b ] = k 1 [ 1 0 ] + k 2 [ 0 1 ] = k 3 [ 2 1 ] + k 4 [ 0 1 ] = ⋯ 式 1 − 6 \\beginbmatrix a \\\\ b \\endbmatrix=k_1\\beginbmatrix 1 \\\\ 0 \\endbmatrix + k_2\\beginbmatrix 0 \\\\ 1 \\endbmatrix = k_3\\beginbmatrix 2 \\\\ 1 \\endbmatrix + k_4\\beginbmatrix 0 \\\\ 1 \\endbmatrix=\\cdots 式 1-6 [ab]=k1[10]+k2[01]=k3[21]+k4[01]=16
从二维坐标系关系可以看出 [ 0 1 ] \\beginbmatrix 0 \\\\ 1 \\endbmatrix [01] [ 1 0 ] \\beginbmatrix 1 \\\\ 0 \\endbmatrix [10]是正交的,二者可以组成向量 [ a b ] \\beginbmatrix a \\\\ b \\endbmatrix [ab]的正交基,且是标准正交基。一个函数同样可以用若干正交基表示,只不过这里基是正交的函数,傅里叶变换右侧的指数部分就构成了一组正交基。

离散傅里叶变换如式1-7所示:
X [ k ] = ∑ n = 0 M − 1 x [ n ] e − j 2 π k n M 式 1 − 7 X[k]=\\sum \\limits_n=0^M-1x[n]e^\\frac-j2\\pi knM 式1-7 X[k]=n=0M1x[n]eMj2πkn17
离散傅立叶逆变换如式1-8所示:
x [ n ] = 1 M ∑ k = 0 M − 1 X [ k ] e j 2 π k n M 式 1 − 8 x[n]=\\frac1M\\sum \\limits_k=0^M-1X[k]e^\\fracj2\\pi knM式 1-8 x[n]=M1k=0M1X[k]eMj2πkn18
由于 e j 2 π k n N , 0 ≤ k ≤ M e^\\fracj2\\pi knN, 0\\le k \\le M eNj2πkn,0kM n ∈ [ 0 , M ] n \\in[0,M] n[0,M]区间是完备正交的,通过这组正交基将时域信号和频域信号互相映射。为满足绝对可和条件,会对原始信号先乘一个指数函数 a − n a^-n an,a为任意实数,然后对满足绝对可和的信号做傅里叶变换, ∑ n = 0 M − 1 x [ n ] a − n e − j 2 π k n M = ∑ n = 0 M − 1 x [ n ] ( a ⋅ e − j 2 π k M ) − n \\sum \\limits_n=0^M-1x[n]a^-ne^\\frac-j2\\pi knM=\\sum \\limits_n=0^M-1x[n](a\\cdot e^\\frac-j2\\pi kM)^-n n=0M1x[n]aneMj2πkn=n=0M1x[n](aeMj2πk)n,令极坐标表示的复频率 z = a ⋅ e − j 2 π k / M z=a\\cdot e^-j2\\pi k/M z=aej2πk/M,则得到z变换为式1-9所示:
X ( z ) = ∑ n = 0 M − 1 x [ n ] z − n 式 1 − 9 X(z)=\\sum \\limits_n=0^M-1x[n]z^-n 式1-9 X(z)=n=0M1x[n]zn19
可见离散傅里叶变换z变换的特例。

1.4.1.4 信号抽取和插值

对于时域信号 x [ n ] x[n] x[n]​,假设其频谱如下图1-8(a)所示,通过离散傅里叶变换计算得到,则对于M倍抽取操作,这相当于每隔M个点取一个点,其表示式1-10所示:
y D ( n ) = x ( M n ) 式 1 − 10 y_D(n)=x(Mn) 式1-10 yD(n)=x(Mn)110
时域抽取对应于频域拉伸,对于M等于2的抽取,其频谱对应于图1-8

以上是关于实时音频编解码之三 多速率信号处理的主要内容,如果未能解决你的问题,请参考以下文章

实时音频编解码之十五 Opus编码-CELT编码

实时音频编解码之十 CELT编码器

实时音频编解码之十 CELT编码器

实时音频编解码之七 预加重

实时音频编解码之十八 Opus解码 CELT解码

实时音频编解码之十六 Opus解码