pyaudio更改调用回调函数的样本数

时间:2014-01-04 07:02:39

标签: python audio pyaudio

我想对每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()

1 个答案:

答案 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,这可能就是你在测试中得到这个值的原因。

祝你好运!