一般单声道的音频播放都是将音频拷贝至左右两个声道然后再进行播放,这样播放出来的音频并不是立体声,没有立体声的“空间”和“立体”感
如果要实现立体声,则需要在左右两个声道实现强大的去相关性,从而在听觉上引入空间宽度的感觉
左右声道滤波器
虚拟立体声的基本思想就是使用不同的两个滤波器 H L H_L HL H R H_R HR分别对左右两个声道进行滤波,这两个滤波器应该具有截然不同的特性,以在左右两个声道间实现去相关性
首先在频域中设计左声道的滤波器,传递函数如下:
H L ( k ) = ( 1 2 + 1 π a r c t a n ( ω 2 ⋅ R ( k ) ) ) e − j 2 π k D N H_L(k)= (\frac {1}{2}+\frac {1}{\pi}arctan(\omega^2 \cdot R(k)))e^{-j\frac {2\pi kD}{N}} HL(k)=(21+π1arctan(ω2⋅R(k)))e−jN2πkD
其中 R ( k ) R(k) R(k)为离散的高斯分布噪声序列,标准差为 σ = 25 \sigma=25 σ=25,均值为0 , ω = 1 \omega=1 ω=1为立体声宽度
右声道滤波器根据左声道滤波器得出
H R ( k ) = 1 − H L ( k ) H_R(k)=1-H_L(k) HR(k)=1−HL(k)
低音和高音例如吉他和鼓在滤波后会的听感会让人感觉’厌烦’,因此可以设置一个要处理的通带
∣ H L / R ( k ) ∣ = 0.5 , k < k l o ∨ k > k h i |H_{L/R}(k)|=0.5, k<k_{lo} \vee k>k_{hi} ∣HL/R(k)∣=0.5,k<klo∨k>khi
这里 k l o / h i k_{lo/hi} klo/hi是定义要实际处理的通带的截止频率, k l o = 300 k_{lo}=300 klo=300
中心聚焦滤波器
考虑到立体声一般在立体声混音中心的信号源具有最大的频谱能量,则通过一个中心聚焦滤波器来将主导源保持在立体声全景的中心,中心聚焦滤波器定义如下:
H C F ( b , k ) = ( 1 − α ) H C F ( b − 1 , k ) + α X n 2 ( b , k ) H_{CF}(b,k)=(1-\alpha)H_{CF}(b-1,k)+\alpha X_n^2(b,k) HCF(b,k)=(1−α)HCF(b−1,k)+αXn2(b,k)
X n 2 ( b , k ) = ∣ X ( b , k ) ∣ max k ∣ X ( b , k ) ∣ X_n^2(b,k)=\frac {|X(b,k)|}{\max\limits_{k}|X(b,k)|} Xn2(b,k)=kmax∣X(b,k)∣∣X(b,k)∣
然后按如下方式对左右声道滤波器进行加权
H ^ L / R ( b , k ) = H L / R ( b , k ) H C F ( b , k ) − 1 2 ( 1 − H C F ( b , k ) ) \hat H_{L/R}(b,k)=H_{L/R}(b,k)H_{CF}(b,k)-\frac {1}{2}(1-H_{CF}(b,k)) H^L/R(b,k)=HL/R(b,k)HCF(b,k)−21(1−HCF(b,k))
结果对比
单声道音频:mono.mp3
虚拟立体声音频:stereo.mp3
中心聚焦虚拟立体声音频:stereo_focused.mp3
Adobe Audition中的相位
单声道相位:
虚拟立体声相位:
中心聚焦虚拟立体声相位:
感兴趣的同学欢迎加微信交流:xu19315519614