【问题标题】:How do I record system audio in Python? (Linux)如何在 Python 中录制系统音频? (Linux)
【发布时间】:2018-12-23 07:52:29
【问题描述】:

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

【问题讨论】:

  • 麦克风输入音频,扬声器输出音频。如果通过扬声器播放声音,并且麦克风连接到计算机并且距离可以捕获扬声器的输出,您将能够“记录通过扬声器播放的内容”。

标签: python linux audio pyaudio


【解决方案1】:

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

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

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

voice recording using 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参数传递给p.open,并带有合适的设备ID。

【讨论】:

    【解决方案2】:

    我认为这是this post 4 years ago的重复发布

    我做了一些研究,发现 WASAPI 仍然有效,而且似乎是您唯一的选择。这是extended PyAudio lib 的 Gitlab 链接。我没有找到任何“开箱即用”的 Linux 操作系统的解决方案。如果它真的很重要,请尝试使用任何带有 Windows 的 VirtualMachine。

    如前所述,问题是您为什么要实现这一目标以及是否可能有更“优雅”的方式。

    【讨论】:

    • 我不是专家,但我认为用户需要两个功能:1.只想录制扬声器输出流录制/读取或2.同时录制/读取麦克风输入和扬声器输出流。在Linux中,也许使用一些包和终端命令可以解决问题。我还在努力。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-05
    • 2013-11-18
    相关资源
    最近更新 更多