如何在Python中记录系统音频?(Linux)

4

我尝试使用PyAudio,但只能录制麦克风的声音。我想录制通过扬声器播放的内容。有没有办法用PyAudio实现这一点,或者我应该使用其他工具?


麦克风接收音频输入,扬声器输出音频。如果扬声器正在播放声音,并且麦克风连接到计算机并在可以捕捉扬声器输出的距离内,您将能够“记录通过扬声器播放的内容”。 - Wiggy A.
2个回答

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

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

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

使用pyaudio进行语音录制

在这里,它解释了您可以像这样在交互式Python提示符中实例化一个pyaudio对象并获取设备ID列表:

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

找到适当的设备,然后在打开流时将参数和适当的设备ID一起传递给。

1
我认为这是4年前的重复帖子
我做了一些研究,发现WASAPI仍然可用,似乎是您唯一的选择。这里是扩展PyAudio库的Gitlab链接。我没有找到任何适用于任何Linux操作系统的“开箱即用”的解决方案。如果真的很重要,请尝试使用安装了Windows的任何虚拟机。
正如之前提到的那样,问题是为什么您想要实现这个,是否有更“优雅”的方法。

我不是专家,但我认为用户需要两个功能:1. 只想记录扬声器输出流的录音/读取或2. 同时记录/读取麦克风输入和扬声器输出流。在Linux中,也许可以使用一些软件包和终端命令来解决这个问题。我还在努力研究中。 - ati ince

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接