如何使用 Raspbian Stretch 在 Raspberry Pi 3B 上设置默认麦克风?

How to set default microphone on Raspberry Pi 3B with Raspbian Stretch?

到目前为止,我还没有找到任何关于如何为 Stretch 设置默认 USB 麦克风的指南,因此我遵循了 Wheezy 和 Jessie 的所有指南,但它们不起作用。

键入命令 arecord sound.wav 不会从麦克风录制任何内容。但是,如果我输入此命令,它将起作用 arecord -f cd -D hw:1,0 -d 10 sound.wav.

这是我输入 arecord -l

时出现的内容
**** List of CAPTURE Hardware Devices ****
card 1: Headset [Plantronics Headset], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

我编辑了这个文件 /usr/share/alsa/alsa.conf 并将值设置为此

defaults.ctl.card 1
defaults.pcm.card 1

我还编辑了 /etc/asoundrc 文件并将其更改为:

pcm.!default {
         type asym
         playback.pcm {
                 type plug
                 slave.pcm "hw:0,0"
         }
         capture.pcm {
                 type plug
                 slave.pcm "hw:1,0"
         } 
 }

 ctl.!default {
        type hw
        card 0
}

还有这个:

pcm.!default {
        type hw
        card 1
}

ctl.!default {
        type hw
        card 1
}

还是不行。

这个问题让我头疼了大约一天,但我终于成功了。

你的 .asoundrc 实际上应该是这样的:

pcm.!default {
    type asym
    playback.pcm "plughw:0"
    capture.pcm  "plughw:1"
}

ctl.!default {
    type hw
    card 1
}

否则你的设置没问题,但我认为这个命令是错误的:

arecord sound.wav

测试麦克风(或至少对我有用的)的正确命令是:

arecord -D plughw:1,0 --duration=3 test.wav && aplay test.wav

此设置用于录制 3 秒,录制停止后它会自动播放给您(假设您的音频也能正常播放)。 这部分 plughw:1,0 指向您的麦克风,我看到它设置为卡 1。 我在测试期间创建了这个文件 /etc/modprobe.d/alsa-base.conf 请删除它并重新启动你的 pi.

sudo rm -f /etc/modprobe.d/alsa-base.conf

此外,如果您已为 AlexaPi 项目尝试过此操作,请确保在尝试麦克风和音频之前停止该服务。

sudo systemctl stop AlexaPi.service