### 傅里叶加窗消除高频类微电流唦唦声
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)

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐