频域消除音频中高频类似微电流唦唦声(见代码)

该文通过使用librosa库进行STFT(短时傅里叶变换),结合自定义的加窗函数,针对hello.wav文件中的高频类微电流声进行消除。通过调整窗口数据并设置特定频率范围的系数为0,然后应用ISTFT(逆短时傅里叶变换)恢复信号,生成了处理后的输出文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

### 傅里叶加窗消除高频类微电流唦唦声
import matplotlib.pyplot as plt
from scipy import signal
from scipy.io import wavfile
import librosa
import numpy as np
import soundfile as sf

y, sr = librosa.load('hello.wav')
#S = librosa.stft(y, n_fft=2048, window="hann")
#S = librosa.stft(y, n_fft=2048, window=filterXY[:,1]/400) # 使用折线 y 作为窗,得到颤音
#S = librosa.stft(y, n_fft=2048, window=filterXY[:,0]/400) # 使用折线 x 作为窗,抹出高频音频
windowdata = []
sep = 1.05/2048
for i in range(2048):
    #windowdata.append(math.fabs(1024-i)*sep)
    windowdata.append((2048-i)*sep)

S = librosa.stft(y, n_fft=2048, window=np.asarray(windowdata))
#print(type(S), len(S), S, S.shape)

for i in range(350,1025):
    for j in range(len(S[i])):
        S[i][j] = 0.0

for i in range(350):
    S[i] = S[i] * 1.33

# 加高频静音不会消除微沙电流音,添加后音频会变调
#zeros = np.zeros(shape=(1,len(S[0])))
#for i in range(200):
#    S = np.append(S, zeros, axis=0)

print(S, S.shape)
D = S
y_inv = librosa.istft(D)
#y_inv = y_inv * 1.33
sf.write('hello-output_file.wav', y_inv, sr)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值