如何将实时音频读入numpy数组并使用matplotlib进行绘图?
现在我正在录制一个wav
文件上的音频,然后使用scikits.audiolab.wavread
它将其读入一个数组.有没有办法直接实时做到这一点?
我正在python中进行信号处理项目.到目前为止,我在非阻塞模式下取得了一些成功,但它给输出带来了相当大的延迟和削波.
我想使用Pyaudio和Scipy.Signal实现一个简单的实时音频过滤器,但在pyaudio示例中提供的回调函数中,当我想读取in_data时我无法处理它.尝试以各种方式转换它但没有成功.
这是我想要实现的代码(尽快从麦克风,过滤器和输出中读取数据):
import pyaudio
import time
import numpy as np
import scipy.signal as signal
WIDTH = 2
CHANNELS = 2
RATE = 44100
p = pyaudio.PyAudio()
b,a=signal.iirdesign(0.03,0.07,5,40)
fulldata = np.array([])
def callback(in_data, frame_count, time_info, status):
data=signal.lfilter(b,a,in_data)
return (data, pyaudio.paContinue)
stream = p.open(format=pyaudio.paFloat32,
channels=CHANNELS,
rate=RATE,
output=True,
input=True,
stream_callback=callback)
stream.start_stream()
while stream.is_active():
time.sleep(5)
stream.stop_stream()
stream.close()
p.terminate()
Run Code Online (Sandbox Code Playgroud)
这样做的正确方法是什么?