我目前正在编写一个脚本,该脚本应该能够将 8 个音频通道(.wav 文件)输出到声卡上的 8 个不同通道。我的脚本有点工作,但我有同步问题。我能够听到播放期间通道之间的时间发生变化,这非常关键。
目前我正在使用线程来启动每个声道。
我的问题是,如果你们对我如何在通道/线程之间实现更好的同步有任何建议?我仍然想使用 sounddevice,因为它在映射(左声道或右声道)我的输出声道时效果很好。
谢谢大家。
我目前正在编写一个脚本,该脚本应该能够将 8 个音频通道(.wav 文件)输出到声卡上的 8 个不同通道。我的脚本有点工作,但我有同步问题。我能够听到播放期间通道之间的时间发生变化,这非常关键。
目前我正在使用线程来启动每个声道。
我的问题是,如果你们对我如何在通道/线程之间实现更好的同步有任何建议?我仍然想使用 sounddevice,因为它在映射(左声道或右声道)我的输出声道时效果很好。
谢谢大家。
同步不同的流非常困难(很可能是不可能的)。您一次只能使用一个Stream
(或OutputStream
)对象。在单个流中处理 8 个通道应该不是问题。
您可以将play()函数与 8 个通道一起使用,或者您可以创建一个自定义回调函数来处理您的 8 个通道,并在Stream或OutputStream中使用它。
更新:
不能在一个流中使用多个设备,另请参见Github 上的 issue 29。您可以尝试使用不同的主机 API。你的声卡有ASIO驱动吗?使用 ASIO,您通常会得到一台具有多个通道的设备。如果这不起作用,您可以尝试在PortAudio 邮件列表中询问。
输入数据应该是每个通道一列的二维 NumPy 数组。查看Stream类的callback
参数的文档。