Python 为什么程序在使用PyAudio以44100采样率播放44100个采样时不花费1秒?

Python 为什么程序在使用PyAudio以44100采样率播放44100个采样时不花费1秒?,python,audio,pyaudio,sample-rate,Python,Audio,Pyaudio,Sample Rate,这是一个测试代码。对于44100采样率,播放44100采样时,时间成本应为1s。但是,输出结果并非如此。为什么会这样?我期待着别人的回答。非常感谢。免责声明:未经测试,只是查看了API stream.write()需要一个定义格式的字符串(此处为32位浮点)。但是您将句柄传递给numpy数组。PyAudio(可能)默认将传递的值转换为字符串。未经进一步修改的输出的字符串表示形式为: import pyaudio import numpy as np import time RATE=44100

这是一个测试代码。对于44100采样率,播放44100采样时,时间成本应为1s。但是,输出结果并非如此。为什么会这样?我期待着别人的回答。非常感谢。

免责声明:未经测试,只是查看了API

stream.write()
需要一个定义格式的字符串(此处为32位浮点)。但是您将句柄传递给numpy数组。PyAudio(可能)默认将传递的值转换为字符串。未经进一步修改的输出的字符串表示形式为:

import pyaudio
import numpy as np
import time

RATE=44100
pa = pyaudio.PyAudio()
stream = pa.open(format=pyaudio.paFloat32,
                                channels=1,
                                rate=RATE,
                                output=True)
t = time.time()
output = np.ones(44100)*100
stream.write(output)
print(time.time()-t)
或42字节或2.3ms播放时间

尝试
stream.write('\0\0\0\0'*44100)
。要使用
np.ones()
或numpy数组,通常必须使用正确的数据类型(您将格式定义为
paFloat32
):


免责声明:未经测试,只是查看了API

stream.write()
需要一个定义格式的字符串(此处为32位浮点)。但是您将句柄传递给numpy数组。PyAudio(可能)默认将传递的值转换为字符串。未经进一步修改的输出的字符串表示形式为:

import pyaudio
import numpy as np
import time

RATE=44100
pa = pyaudio.PyAudio()
stream = pa.open(format=pyaudio.paFloat32,
                                channels=1,
                                rate=RATE,
                                output=True)
t = time.time()
output = np.ones(44100)*100
stream.write(output)
print(time.time()-t)
或42字节或2.3ms播放时间

尝试
stream.write('\0\0\0\0'*44100)
。要使用
np.ones()
或numpy数组,通常必须使用正确的数据类型(您将格式定义为
paFloat32
):


输出是什么?输出是什么?我在stream.write()之前添加了一个代码output.tostring()。但是结果显示它花费了大约2秒,这是因为如果没有定义数据类型,numpy默认为double(64位)。更新答案…我可以再问一个问题吗?细节在我最近的问题中。非常感谢。我在stream.write()之前添加了一个代码output.tostring()。但是结果显示它花费了大约2秒,这是因为如果没有定义数据类型,numpy默认为double(64位)。更新答案…我可以再问一个问题吗?细节在我最近的问题中。非常感谢你。
output = np.ones(44100, dtype=np.float32).tobytes()