获取发送到声卡的音频样本

获取发送到声卡的音频样本

我需要将实际的音频样本发送到特定的声卡。目前我正在使用带有 Alsa 的 Debian 发行版。我的搜索失败了,可能是由于关键字错误。

我不想录制音频,我只需要从我的应用程序实时访问样本(最好是 C++,但 Python 也可以)。如果无法在将样本发送到目标声卡的同时获取样本,则窃取目标声卡的输出也是可以接受的。

如果您需要其他信息,请在评论中告诉我。

答案1

“记录”和“实时访问样本”基本上是同一件事。

Debian 默认启用 Pulseaudio,因此最简单的方法是从.monitor声卡的 Pulseaudio 接收器的关联源进行录制(或“访问样本”)。这将开箱即用。

样本从 Pulseaudio 接收器经过 ALSA,然后发送到卡,因此会有轻微的延迟。但样品将与发送的样品完全相同。

可能还有其他方法可以做到这一点,但所有方法都复杂得多,有些取决于您所拥有的声卡的类型。

关于延迟,您还应该记住“访问样本”将涉及缓冲,因此将要无论你做什么,都要拖延。

如果您有更具体的要求,请更详细地解释您的用例。

编辑

Pulseaudio 源和接收器不是文件,而是“对象”,它们代表音频源(物理源,例如声卡上的麦克风以及虚拟源)和音频接收器(物理源,例如连接到声卡的扬声器以及虚拟源)那些)。

每个 Pulseaudio 接收器some-source-name都有一个关联的源some-source-name.monitor。通过使用 C++、Python 或任何您喜欢的语言中的 Pulseuadio 库,您可以连接到此源,并实时获取反映放入此接收器中的内容的样本。

同样,不涉及任何文件,无论是 WAV 还是任何其他格式。内部发生的事情是您的应用程序与 Pulseaudio 恶魔通信,并定期获取包含样本的缓冲区。

该库的使用并不简单,请看一些示例代码。

相关内容