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 - 没有硬件声卡,捕获音频播放,并记录到文件中的主要内容,如果未能解决你的问题,请参考以下文章