📜  pulseaudio 听麦克风 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:18:43.531000             🧑  作者: Mango

使用 PulseAudio 监听麦克风

在 Linux 系统中,我们可以使用 PulseAudio 来捕捉麦克风的音频输入。本文将介绍如何使用 PulseAudio 监听麦克风。

前置条件

在开始前,确保你已经安装了 PulseAudio。如果没有,请执行以下命令安装:

sudo apt-get install pulseaudio
监听麦克风

要监听麦克风,我们需要让 PulseAudio 捕获麦克风的音频输入并将其输出到我们想要的位置。首先,我们要查看可用的音频输入设备:

pacmd list-sources

输出应该类似于以下内容:

1 source(s) available.
  * index: 0
    name: <alsa_input.pci-0000_00_1b.0.analog-stereo>
    driver: <module-alsa-card.c>
    flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY DYNAMIC_LATENCY
    state: SUSPENDED
    suspend cause: IDLE 
    priority: 9049
    volume: front-left: 65536 / 100% / 0.00 dB,   front-right: 65536 / 100% / 0.00 dB
            balance 0.00
    base volume: 65536 / 100% / 0.00 dB
    volume steps: 65537
    muted: no
    current latency: 0.00 ms
    max rewind: 0 KiB
    sample spec: s16le 2ch 44100Hz
    channel map: front-left,front-right
                 Stereo
    used by: 0
    linked by: 0
    configured latency: 500000.00 ms; range is 0.50 .. 2000.00 ms
    monitor_of: 0
    module: 7
    properties:
        device.description = "Built-in Audio Analog Stereo"
        device.class = "sound"
        alsa.card = "0"
        alsa.card_name = "HDA Intel PCH"
        alsa.long_card_name = "HDA Intel PCH at 0xd1220000 irq 129"
        alsa.driver_name = "snd_hda_intel"
        device.bus_path = "pci-0000:00:1b.0"
        sysfs.path = "/devices/pci0000:00/0000:00:1b.0/sound/card0/input7"
        device.form_factor = "internal"
        device.string = "0"
        module-udev-detect.discovered = "1"
        device.icon_name = "audio-card-pci"

其中,name 属性指定了我们可以使用的音频输入设备。在上面的示例中,我们使用的设备名为 alsa_input.pci-0000_00_1b.0.analog-stereo

接下来,我们使用以下命令配置 PulseAudio 将麦克风音频输入流导出到 stdout

parec --format=s16le --rate=44100 --channels=2 --device=<DEVICE_NAME> | tee output.raw | sox -t raw -r 44100 -s -2 -c 2 - output.wav

在上述命令中,将 <DEVICE_NAME> 替换为上面找到的音频输入设备名称,例如 alsa_input.pci-0000_00_1b.0.analog-stereo。执行这个命令后,PulseAudio 将开始捕获麦克风的音频输入,并将其导出到 output.rawoutput.wav 文件中。

如果您希望在程序中捕获麦克风的音频输入,可以使用 PulseAudio 的 API,例如 libpulse.