我了解到,一个人通过电话讲话时,由于使用的麦克风/通道/扬声器的频率响应,他的声音有些不同。
我一直在用Python处理语音信号处理。我想知道如何模拟这种效果。我需要设计一个过滤器吗?
这是代码。对我来说效果很好:
from scipy.signal import lfilter, butter
from scipy.io.wavfile import read,write
from numpy import array, int16
import sys
def butter_params(low_freq, high_freq, fs, order=5):
nyq = 0.5 * fs
low = low_freq / nyq
high = high_freq / nyq
b, a = butter(order, [low, high], btype='band')
return b, a
def butter_bandpass_filter(data, low_freq, high_freq, fs, order=5):
b, a = butter_params(low_freq, high_freq, fs, order=order)
y = lfilter(b, a, data)
return y
if __name__ == '__main__':
fs,audio = read(sys.argv[1])
low_freq = 300.0
high_freq = 3000.0
filtered_signal = butter_bandpass_filter(audio, low_freq, high_freq, fs, order=6)
fname = sys.argv[1].split('.wav')[0] + '_moded.wav'
write(fname,fs,array(filtered_signal,dtype=int16))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句