Python(Sounddevice)中的多声道声音同步问题

Multichannel sound syncronization issues in Python (Sounddevice)

我目前正在编写一个脚本,该脚本应该能够将 8 个音频通道(.wav 文件)输出到声卡上的 8 个不同通道。我的脚本有点工作,但我有同步问题。我能听到播放过程中通道之间的时序变化,这是非常关键的。

目前我正在使用线程来启动每个声道的声音。

我的问题是,如果你们对如何在 channels/threads 之间实现更好的同步有什么建议? 我仍然想使用 sounddevice,因为它在映射(左声道或右声道)我的输出声道时效果很好。

提前谢谢大家。

同步不同的流非常困难(很可能是不可能的)。您应该一次只使用一个 Stream(或 OutputStream)对象。在单个流中处理 8 个通道应该不是问题。

您可以使用 play() function with 8 channels, or you can create a custom callback function that handles your 8 channels, and use it in a Stream or OutputStream.

更新:

无法在流中使用多个设备,另请参阅 issue 29 on Github。您可以尝试使用不同的主机 API。你的声卡有ASIO驱动吗?使用 ASIO,您通常会得到一个具有多个通道的设备。 如果这不起作用,您可以尝试在 PortAudio mailing list.

上提问

输入数据应该是每通道一列的二维 NumPy 数组。查看 Stream class.

callback 参数的文档