使用谱减法去除音频底噪
上一篇文章我主要分享了短时傅立叶变换及其逆变换在python中的实现,有兴趣的可以阅读一下该篇文章,地址如下:
Python音频信号处理 1.短时傅里叶变换及其逆变换
那么在本篇文章中,我们将利用短时傅立叶变换及其逆变换来实现谱减法。
Part 1 :谱减法
谱减法的核心思路非常简单,顾名思义,谱减法是一种频域上的信号处理方法,其基本思路就是提取出信号本身的频谱以及噪音的频谱,通过两者之差获取降噪后信号的频谱,最后利用傅立叶变换逆变换重构初始信号。
Part 2 :使用谱减法降低或消除信号的底噪
要使用谱减法来进行信号处理,显然我们首先需要计算出信号的频谱以及噪音的频谱。这里我们继续使用上篇文章所介绍的短时傅立叶变换及其逆变换的实现,Python代码如下:
# 短时傅立叶变换
def TFCT(trame, Fe, Nfft,fenetre,Nwin,Nhop):
L = round((len(trame) - len(fenetre))/Nhop)+1
M = Nfft
xmat = np.zeros((M,L))
print('xmat',xmat.shape)
print(Nwin+Nhop)
for j in range(L):
xmat[:,j] = np.fft.fft(trame[j*Nhop:Nwin+Nhop*j]*window,Nfft)
x_temporel = np.linspace(0,(1/Fe)*len(trame),len(trame))
x_frequentiel = np.linspace(0, Fe,Nfft)