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

时间:2016-10-06 11:07:57

标签: python-2.7 audio parallel-processing python-multithreading python-sounddevice

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

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

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

提前谢谢大家。

1 个答案:

答案 0 :(得分:0)

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

您可以使用8个频道的play()功能,也可以创建处理8个频道的自定义回调功能,并在StreamOutputStream中使用。

<强>更新

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

输入数据应该是一个二维NumPy数组,每个通道有一列。请查看Stream类的callback参数的文档。