尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

IoT-For-Beginners 实战:Raspberry Pi 麦克风与扬声器配置完整指南(基于 ALSA 与 ReSpeaker)

IoT-For-Beginners 实战:Raspberry Pi 麦克风与扬声器配置完整指南(基于 ALSA 与 ReSpeaker) IoT-For-Beginners 实战Raspberry Pi 麦克风与扬声器配置完整指南基于 ALSA 与 ReSpeaker【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners本篇技术指南以 IoT-For-Beginners 项目第 6 个项目消费类 IoT 语音识别中的 Raspberry Pi 硬件配置章节为核心讲解如何为树莓派外接并配置麦克风与扬声器使其具备音频采集与回放能力。读者学完本篇后将掌握arecord、aplay、ALSA 默认声卡配置以及alsamixer调音工具的使用方法为后续的语音采集、语音转文字Speech to Text实验打下硬件基础。硬件需求Pi 没有内置麦克风Raspberry Pi 板载没有麦克风因此必须外接一个录音设备。可供选择的方案包括USB 麦克风即插即用是成本最低、最稳妥的方案USB 耳机麦克风与耳机一体兼顾录音与回放USB 一体式会议通话设备all in one speakerphone通常内置麦克风阵列与扬声器USB 音频适配器 3.5mm 麦克风通过适配器将模拟麦克风接入 USBReSpeaker 2-Mics Pi HATSeeed 出品的树莓派扩展板板载双麦克风详见 ReSpeaker 2-Mics Pi HAT 产品页。 注意Raspberry Pi 对 Bluetooth 麦克风的支持并不完整。如果你使用蓝牙麦克风或蓝牙耳机可能会在配对或音频采集环节遇到问题建议优先使用 USB 方案。输出设备方面Raspberry Pi 自带 3.5mm 耳机插孔可连接耳机、耳麦或外置音箱也可以通过以下方式扩展音频输出HDMI 音频经由显示器或电视输出USB 扬声器USB 耳机USB 一体式会议通话设备ReSpeaker 2-Mics Pi HAT在其 3.5mm 插孔或 JST 端口上外接扬声器。在本项目的后续课程中Pi 需要一块 Grove 按钮来控制录音详见 pi-audio.md而 ReSpeaker HAT 板载了一个按钮因此使用该 HAT 时不再需要 Grove Base Hat 底板。连接并配置麦克风检查录音设备arecord -l将麦克风通过合适的方式接入 Pi例如插入 USB 端口后在 Pi 终端或通过 VS Code Remote SSH 连接执行arecord -l该命令会列出所有可用的录音CAPTURE硬件设备输出形如piraspberrypi:~ $ arecord -l **** List of CAPTURE Hardware Devices **** card 1: M0 [eMeet M0], device 0: USB Audio [USB Audio] Subdevices: 1/1 Subdevice #0: subdevice #0如果只接了一个麦克风列表中应只有一条记录。Linux 下多麦克风配置较复杂因此建议只保留一个麦克风拔掉其余设备降低配置难度。请务必记下声卡编号card number后续代码中会用到。以上例而言card 1表示该 USB 麦克风的声卡编号为1。使用 ReSpeaker 2-Mics Pi HAT如果选用 ReSpeaker 2-Mics Pi HAT取下 Grove Base Hat 底板将 ReSpeaker HAT 安装到原位置安装完成后需要安装驱动请参考 Seeed 官方《ReSpeaker 2-Mics Pi HAT 入门指南》中的驱动安装说明。⚠️ 官方驱动说明使用git克隆仓库。若 Pi 上尚未安装git先执行sudo apt install git --yes连接并配置扬声器检查回放设备aplay -l连接扬声器后执行以下命令查看所有可用的回放PLAYBACK硬件设备aplay -l输出形如piraspberrypi:~ $ aplay -l **** List of PLAYBACK Hardware Devices **** card 0: Headphones [bcm2835 Headphones], device 0: bcm2835 Headphones [bcm2835 Headphones] Subdevices: 8/8 Subdevice #0: subdevice #0 Subdevice #1: subdevice #1 Subdevice #2: subdevice #2 Subdevice #3: subdevice #3 Subdevice #4: subdevice #4 Subdevice #5: subdevice #5 Subdevice #6: subdevice #6 Subdevice #7: subdevice #7 card 1: M0 [eMeet M0], device 0: USB Audio [USB Audio] Subdevices: 1/1 Subdevice #0: subdevice #0card 0: Headphones对应的是板载 3.5mm 耳机插孔总是会出现额外添加的 USB 扬声器等设备会作为独立条目列出。设置默认输出声卡编辑/usr/share/alsa/alsa.conf如果你使用的是额外的扬声器而非插在板载耳机孔上的耳机/音箱需要将其设为系统默认输出设备sudo nano /usr/share/alsa/alsa.conf该命令会用nano终端文本编辑器打开 ALSA 全局配置文件。用键盘方向键滚动找到如下行defaults.pcm.card 0将其中的0改成aplay -l输出中你希望使用的声卡编号。例如上面输出中第二块声卡为card 1: M0 [eMeet M0], device 0: USB Audio [USB Audio]要使用它就把该行改为defaults.pcm.card 1修改完成后按Ctrlx保存并退出按y确认保存再按Enter确认文件名。之后默认回放将路由到指定声卡。该配置会全局影响 ALSA 的默认 PCM 回放设备。若后续播放出错第一排查点就是这里设置的defaults.pcm.card是否与真实声卡编号一致。测试麦克风与扬声器录制 5 秒音频执行以下命令通过麦克风录制 5 秒 WAV 音频arecord --formatS16_LE --duration5 --rate16000 --file-typewav out.wav参数含义参数含义--formatS16_LE采样格式为 16 位有符号小端整数PCM--duration5录制 5 秒--rate16000采样率 16KHz足够供语音识别模型使用--file-typewav输出 WAV 容器格式命令运行期间请对着麦克风发出声音——说话、唱歌、beatbox、弹奏乐器皆可。回放录音5 秒后录制自动停止执行aplay --formatS16_LE --rate16000 out.wav即可通过扬声器听到刚才的录音必要时调节扬声器音量。调节音量与麦克风增益alsamixer如果需要调节板载麦克风端口音量或调整麦克风增益可使用alsamixer交互工具参见 Linux alsamixer 手册页。若回放出现错误请再次核对alsa.conf中defaults.pcm.card是否指向了正确的声卡编号。与课程代码的衔接声卡编号与采样率如何影响代码完成硬件配置后下一步是编写 Python 录音代码完整代码见 code-record/pi/smart-timer/app.py。在 pi-audio.md 的录音程序中声卡编号直接决定音频流的输入输出设备microphone_card_number microphone card number speaker_card_number speaker card number其中microphone card number来自本节arecord -l的输出speaker card number则是你在alsa.conf中设置的同一个编号。采样率也在代码中声明rate 48000 #48KHz如果运行时出现OSError: [Errno -9997] Invalid sample rate之类的采样率错误把rate改为44100或16000即可——采样率越高音质越好但对硬件支持要求也越高。到了语音转文字阶段完整代码见 code-speech-to-text/pi/smart-timer/app.py录音缓冲区会以Content-Type: audio/wav; codecsaudio/pcm; samplerate{rate}的请求头发送给云端语音服务因此本节确定的采样率会直接影响后续识别请求的格式声明录制与识别两端必须保持一致。整个实验的课程背景、麦克风原理与语音识别概念见 课程 README。【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表