我需要将实际的音频样本发送到特定的声卡。目前我正在使用带有 Alsa 的 Debian 发行版。我的搜索失败,可能是由于错误的关键字。
我不想录制音频,我只需要从我的应用程序中实时访问样本(最好是 C++,但 Python 也可以)。如果无法在将样本发送到目标声卡的同时获取样本,则窃取目标声卡的输出也是可以接受的。
如果您需要其他信息,请在评论中告诉我。
我需要将实际的音频样本发送到特定的声卡。目前我正在使用带有 Alsa 的 Debian 发行版。我的搜索失败,可能是由于错误的关键字。
我不想录制音频,我只需要从我的应用程序中实时访问样本(最好是 C++,但 Python 也可以)。如果无法在将样本发送到目标声卡的同时获取样本,则窃取目标声卡的输出也是可以接受的。
如果您需要其他信息,请在评论中告诉我。
“录制”和“实时访问样本”基本上是一回事。
.monitor
Debian 默认启用 Pulseaudio,因此最简单的方法是从声卡的 Pulseaudio 接收器的相关源中录制(或“访问样本”) 。这将开箱即用。从 Pulseaudio 接收器,样本通过 ALSA,然后被发送到卡,所以会有一点延迟。但样品将是发送的确切样品。
可能还有其他方法可以做到这一点,但它们都复杂得多,而且有些取决于您拥有的声卡类型。
关于延迟,您还应该记住,“访问样本”将涉及缓冲,因此无论您做什么都会有延迟。
如果您有更具体的要求,请更详细地说明您的用例。
编辑
Pulseaudio 源和接收器不是文件,而是“对象”,它们代表音频源(物理源,如声卡上的麦克风以及虚拟源)和音频接收器(物理源,如连接到声卡的扬声器以及虚拟那些)。
每个 Pulseaudio 接收器
some-source-name
都有一个关联的源some-source-name.monitor
。通过使用来自 C++、Python 或任何您喜欢的语言的 Pulseuadio 库,您可以连接到此源,并实时获取反映放入此接收器中的任何内容的样本。同样,不涉及任何文件,既不是 WAV 也不是任何其他格式。内部发生的是您的应用程序与 Pulseaudio 恶魔通信,并定期获取带有样本的缓冲区。
该库使用起来并不简单,请看一些示例代码。