频域消除音频中高频类似微电流唦唦声(见代码)
·
### 傅里叶加窗消除高频类微电流唦唦声
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)
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)