Linux - 没有硬件声卡,捕获音频播放,并记录到文件中

Posted

技术标签:

【中文标题】Linux - 没有硬件声卡,捕获音频播放,并记录到文件中【英文标题】:Linux - Without hardware soundcard, capture audio playback, and record it to file 【发布时间】:2017-02-24 22:56:32 【问题描述】:

这样的事情有可能吗?

是否有可能创建一个虚拟声卡,然后使用 PyAudio 来监听其输出并将其保存到文件中?注意机器上没有硬件声卡。

我尝试了很多东西,尤其是snd-dummy ALSA 模块,但我开始怀疑我是否正在寻找合适的工具。如果有人能指出我至少是高级别的解决方案,我将不胜感激。最好是可以在 Ubuntu 服务器上运行的东西。

【问题讨论】:

【参考方案1】:

感谢@mjy 和@Matthias,我终于找到了完成录制所需的最少步骤:

sudo apt-get install pulseaudio jackd2 alsa-utils dbus-x11

无需使用snd-dummy,无需创建任何额外的配置文件...所有这些事情只会让我浪费几个小时:(在干净的 Ubuntu 服务器安装上安装这些软件包后,我能够运行 Python 脚本并使用 PyAudio 将输出音频捕获到文件中...

【讨论】:

You are the man & Saved me hours python3 -m sounddevice 来检查此答案是否有效 谢谢!在 debian netinst 和 ubuntu 服务器中设置 baresip,这就像一个魅力。我的错误信息是“alsa could not open auplay device 'default' (no such file or directory)” for context 这是一个很好的解决方案!【参考方案2】:

如果产生声音的应用程序支持JACK,这应该很容易。 然后你只需要为JACK选择dummy驱动,你就可以将音频信号路由到你想要的任何录音程序(只要它也支持JACK)。

您需要包jackd,它有一个用于启动JACK 守护程序的命令行界面。 qjackctl 包提供了一个很好的 GUI,用于试验不同的设置和在程序之间建立音频连接。对于录音,您可以尝试jack_rec 程序,它是jackd 的一部分,但也有许多其他JACK 录音应用程序可用。

如果您想使用 Python 进行录制,您可以尝试 sounddevice 和 soundfile 模块。如果您需要一些特定于 JACK 的功能,您应该尝试jackclient-python。

【讨论】:

我怎么知道应用程序是否支持 JACK?【参考方案3】:

安装 PulseAudio。

sudo apt install pulseaudio

PulseAudio 具有 ALSA 仿真功能。

【讨论】:

您能否提供有关上述仿真的更多信息? 仿真设备会自动创建。您可能无需设置就可以在 ALSA 仿真设备中进行录制和播放。 已经有了脉冲音频,但这应该如何工作?

以上是关于Linux - 没有硬件声卡,捕获音频播放,并记录到文件中的主要内容,如果未能解决你的问题,请参考以下文章

从声卡 windows xp 捕获音频数据

我的电脑突然放歌放电影没声音,显示音频设备无法播放,请检查声卡设置

电脑显示无声音播放设备怎么办

Linux音频调试示例

是否可以使用 ffmpeg 从 ASIO 设备捕获音频?

linux声卡同时播放多种声音