Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pyaudio更改调用回调函数的样本数_Python_Audio_Pyaudio - Fatal编程技术网

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

Python 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

我想做一个简单的实时处理音频每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_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是的,我已将其更改为越来越高的值,但它只更改调用回调函数所需的时间,而不更改传递给回调函数的样本数。