如何用Python录制系统音频?(Linux)



我修改了PyAudio,只能用麦克风录音。我希望能够记录通过扬声器播放的内容。有没有办法用PyAudio做到这一点,或者我应该使用其他东西?

Linux上的音频子系统围绕源和接收器的概念工作。源是声音可以进入音频子系统(麦克风、应用程序播放声音等)的地方,水槽是声音可以离开的地方(扬声器)。您需要找到充当扬声器接收器环回监视器的音频源。请参阅b-ak对以下帖子的回答:

https://askubuntu.com/questions/229352/how-to-record-output-to-speakers

它解释了可以从命令行使用的命令,以帮助识别该音频源的适当标识符。然后,您需要按照Roland Smith对以下帖子的回答将其加载到pyaudio:中

使用pyaudio 进行语音录制

在这里,我们解释说,您可以实例化一个pyaudio对象,并在交互式python提示符下获得设备ID列表,如下所示:

import pyaudio
p = pyaudio.PyAudio()
[p.get_device_info_by_index(i) for i in range(p.get_device_count())]

找到合适的设备,然后在打开流时将input_device_index参数传递给具有合适设备id的p.open

我认为这是4年前的重复帖子

我做了一些研究,发现WASAPI仍然有效,似乎是你唯一的选择。这是扩展PyAudio库的Gitlab链接。我找不到适用于任何"开箱即用"的Linux操作系统的解决方案。如果它真的很重要,请尝试使用任何带有Windows的虚拟机。

正如前面提到的,问题是你为什么要实现这一点,以及是否有更"优雅"的方式。

最新更新