📅  最后修改于: 2023-12-03 15:18:43.531000             🧑  作者: Mango
在 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.raw
和 output.wav
文件中。
如果您希望在程序中捕获麦克风的音频输入,可以使用 PulseAudio 的 API,例如 libpulse.