我想对每4096个样本进行一次简单的实时处理。但是这段代码每1024个样本调用一次回调函数。我只想将frame_count更改为4096。
import pyaudio
import time
WIDTH = 2
CHANNELS = 1
RATE = 44100
p = pyaudio.PyAudio()
def callback(in_data, frame_count, time_info, status):
out=do_something(in_data)
print(frame_count)#1024
return (out, pyaudio.paContinue)
stream = p.open(format=p.get_format_from_width(WIDTH),
channels=CHANNELS,
rate=RATE,
input=True,
output=True,
stream_callback=callback)
stream.start_stream()
while stream.is_active():
time.sleep(0.1)
stream.stop_stream()
stream.close()
p.terminate()
答案 0 :(得分:2)
我还没有对它进行测试,但是从文档中可以看出,如果你将流打开行更改为:
stream = p.open(format=p.get_format_from_width(WIDTH),
channels=CHANNELS,
rate=RATE,
input=True,
output=True,
frames_per_buffer=4096,
stream_callback=callback)
您应该获得每个块所需的样本数量。 frames_per_buffer默认为1024,这可能就是你在测试中得到这个值的原因。
祝你好运!