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

2024-03-29 05:48:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用PyAudio(通过“sudo apt get install python python PyAudio”安装)来多次播放录制的示例。在

我试过:

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

但这只会播放3次音频样本。据我所知,它总是只播放我给它的数据的一半。(例如,如果我只是使用输出.写入(d) 我只听到一半录音样本)

有一个很明显的解决办法(num_repeats*=2),但我想知道为什么这是必要的!在

复制问题的完整代码

^{pr2}$

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


Tags: installnumpy示例getsudoaptout音频
2条回答

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

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

在我的例子中,我解决了在关闭流之前添加暂停的问题。不确定这是否是预期行为,但我的嵌入式设备上的音频在写入流后以异步方式播放。所以我不得不在关闭溪流之前等待。我完成的设置是这样的:

import time
...

#calculate clip duration in seconds
duration = float(clip_data_length) / rate / bytes_per_sample / channels

startTime = time.time()         
stream.write(wav_data)          
endTime = time.time()

if ((endTime - startTime) < duration):
    time.sleep(duration - (endTime - startTime))

time.sleep(0.1)
stream.close()

相关问题 更多 >