過濾對於一個項目,我需要蟒蛇音頻播放器沒有抖動
- 讀WAV文件
- 過濾
- 播放WAV文件
下面的代碼是「工作」不同的是,聲音crack,,那是因爲我無法保證數據流能夠繼續傳輸到音頻輸出。過濾需要一段時間,這就是聲音在很短時間內凍結的地方。
未來我想對原始音頻數據做一些額外的計算。我想知道哪種方法最能保持聲音順暢。
import pyaudio
import wave
from scipy import signal
from struct import *
chunk = 1024
f = wave.open("sample.wav","rb")
p = pyaudio.PyAudio()
stream = p.open(format = p.get_format_from_width(f.getsampwidth()),
channels = f.getnchannels(),
rate = f.getframerate(),
output = True)
data = f.readframes(chunk)
b, a = signal.butter(2, 0.01)
tmp = len(data)/2
s = '<'
for i in range(0,tmp):
s = s + 'h'
while data != '':
sig = signal.filtfilt(b, a, unpack(s,data))
output_signal = pack(s,*sig)
stream.write(output_signal)
data = f.readframes(chunk)
stream.stop_stream()
stream.close()
p.terminate()
在此先感謝!
您是否需要實時過濾,還是可以收集輸出信號並將它們一起寫入? – 2014-09-23 20:53:01
你應該考慮緩衝 – user1767754 2014-09-23 20:53:03