瞬态检测是G719编码的第一个步骤,也是比较容易理解的一步。
瞬态检测原理
瞬态检测是编码的第一部分,主要是用来确定这一帧数据的状态,是变化比较大的,还是比较平稳的。
从文档中可以看出,瞬态检测模块主要分为以下几个部分:
- 48k采样率的信号首先经过高通滤波器,除去不需要的低频部分。
- 然后每5ms计算短时能量值。
- 通过短时能量值计算长时能量。
- 检查短时能量和尝试能量是否满足瞬态检测条件。
高通滤波器
高通滤波器这里使用了一阶IIR滤波器,其公式为:
H H P ( z ) = 0.7466 ( 1 − z − 1 ) ) 1 − 0.4931 z − 1 (1) H_{HP}(z) = \frac{0.7466(1-z^{-1}))}{1-0.4931z^{-1}} \tag{1} HHP(z)=1−0.4931z−10.7466(1−z−1))(1)
高通滤波器的响应 x H P x_{HP} xHP是:
x H P ( n ) = 0.4931 x H P ( n − 1 ) + 0.7466 x ( n ) − 0.7466 x ( n − 1 ) (2) x_{HP}(n) = 0.4931x_{HP}(n-1) + 0.7466x(n) - 0.7466x(n-1) \tag{2} xHP(n)