Python pyaudio更改调用回调函数的样本数
我想做一个简单的实时处理音频每4096个样本。但是这段代码每1024个样本调用一次回调函数。我只想把帧数改成4096Python pyaudio更改调用回调函数的样本数,python,audio,pyaudio,Python,Audio,Pyaudio,我想做一个简单的实时处理音频每4096个样本。但是这段代码每1024个样本调用一次回调函数。我只想把帧数改成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_co
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()
我还没有测试过它,但是从文档来看,如果您将stream open行更改为:
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)
您应该获得每个块所需的样本数。每缓冲区的帧数默认为1024,因此这可能就是您在测试中获得该值的原因
祝你好运 您是否尝试将速率更改为更高的值(如乘以4)@acutesoftware是的,我已将其更改为越来越高的值,但它只更改调用回调函数所需的时间,而不更改传递给回调函数的样本数。