python - 为什么 PyAudio 只播放我的一半音频?

标签 python numpy audio pyaudio

我正在尝试使用 PyAudio(通过“sudo apt-get install python-pyaudio”安装)多次播放录制的样本。

我已经尝试过:

num_repeats = 6
out.write(numpy.hstack(numpy.tile(d, num_repeats)))

但这仅播放音频样本 3 次。据我所知,它总是播放我提供的数据的一半。 (例如,如果我只是使用 out.write(d) 我只能听到一半的录制样本)

有一个明显的解决方法(num_repeats *= 2),但我想了解为什么这是必要的!

重现问题的完整代码

import pyaudio
import numpy

p = pyaudio.PyAudio()
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
CHUNK = 80000
stream = p.open(format=FORMAT, channels=CHANNELS, rate=RATE, input=True, frames_per_buffer=CHUNK)
frame = stream.read(CHUNK)
stream.stop_stream()
stream.close()
d = numpy.fromstring(frame, 'int16')

out = p.open(format=FORMAT, channels=CHANNELS, rate=RATE, output=True)
num_repeats = 6
out.write(numpy.hstack(numpy.tile(d, num_repeats)))
out.close()

p.terminate()

无论我使用 2 个 channel 还是 1 个 channel ,它的行为都是相同的(即只有 3 次重复)。

最佳答案

在移交之前将 numpy 数组转换为二进制文件。您可以使用 .tobinary() 或 .tostring()

如果您已匹配数据类型,这应该可以工作。

关于python - 为什么 PyAudio 只播放我的一半音频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34222517/

相关文章:

python - 如何在 Spark (Python) 中对我的 Row 对象的字段进行排序

python - 异常。ValueError : unsupported format character in python scrapy

python - 对部分 "sparse"numpy 数组的高效数学运算

python - 数字方式的矩阵组合逻辑

python - 在 python 中屏蔽然后粘贴两个图像

audio - 如何使用循环正确编码某些音频合成器?

python - sklearn.preprocessing.OneHotEncoder : using drop and handle_unknown ='ignore'

python - 使用 urllib3 进行 HTTPS 调用时,使用服务器的 ssl 证书而不是根 CA 证书

Android R Id 输入文件

ios - 提取MPMoviePlayerViewController音频以在后台继续收听