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

资讯详情

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

IoT-For-Beginners 语音识别实战(Raspberry Pi):麦克风与扬声器的连接、配置与音频测试完整指南

IoT-For-Beginners 语音识别实战(Raspberry Pi):麦克风与扬声器的连接、配置与音频测试完整指南 IoT-For-Beginners 语音识别实战Raspberry Pi麦克风与扬声器的连接、配置与音频测试完整指南【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners导读本文是 IoT-For-Beginners 课程使用 IoT 设备识别语音6-consumer 项目第 1 课中 Raspberry Pi 硬件准备环节的核心指南讲解如何为树莓派接入并配置麦克风与扬声器使其具备采集语音、回放音频的能力为后续接入 Azure Speech 语音服务语音转文字和构建智能厨房计时器smart-timer奠定硬件基础。读完本文你将掌握树莓派外设音频设备的选型、ALSA 音频子系统下录音/播放设备的识别、默认播放声卡的切换以及用命令行完成一次完整的录音-回放测试。背景为什么要给树莓派配置音频本课要实现的智能计时器允许用户直接说出设置 12 分钟计时器之类的指令。语音控制设备需要两块关键硬件麦克风作为采集声音的传感器和扬声器用于语音反馈。树莓派与 Wio Terminal自带 MEMS 麦克风和虚拟 IoT 设备不同它没有任何板载麦克风必须外接同时它自带一个 3.5mm 耳机输出接口但外接扬声器往往还需要额外配置才能作为系统默认播放设备。本节任务的全部内容即围绕连接 配置 测试三步展开对应课程仓库中的英文原版文档 pi-microphone.md 及其阿拉伯语翻译 pi-microphone.md阿语本节也是课程 README 中Capture audio from your IoT device环节的 Raspberry Pi 分支入口见 README.md。硬件选型麦克风与扬声器的可选方案麦克风采集端由于树莓派没有板载麦克风文档给出了 5 种可行的外接方案USB 麦克风即插即用兼容性最好是最常见的方案USB 耳机USB headset同时解决采集与播放适合桌面调试USB 一体化免提音箱USB all in one speakerphone常见于会议设备兼具麦克风与扬声器USB 音频适配器 3.5mm 接口麦克风利用 USB 声卡转接传统模拟麦克风ReSpeaker 2-Mics Pi HAT由 Seeed 推出的树莓派扩展板自带 2 个 MEMS 麦克风本课程配套硬件清单中的推荐方案之一。⚠️ 注意事项并非所有蓝牙麦克风都能在树莓派上正常工作。如果你使用蓝牙麦克风或蓝牙耳机可能会遇到配对困难或无法采集音频的问题因此课程明确建议优先使用有线方案。扬声器播放端树莓派自带的 3.5mm 耳机插孔可以直接连接耳机、头戴式耳机或音箱系统内固定呈现为card 0: Headphones。除耳机插孔外还可以通过以下方式扩展播放设备HDMI 音频通过显示器或电视输出声音USB 扬声器USB 耳机USB 一体化免提音箱ReSpeaker 2-Mics Pi HAT外接扬声器可接 3.5mm 插孔也可接板上的 JST 端口。任务一连接并配置麦克风1. 物理连接根据所选方案完成物理接线。若使用普通 USB 麦克风直接插入任一 USB 口即可。2. 使用 ReSpeaker 2-Mics Pi HAT 时的特殊步骤如果选用 ReSpeaker 2-Mics Pi HAT需要先移除 Grove Base HAT再把 ReSpeaker HAT 装到原位置这里有个巧妙的细节本课稍后的按键控制录音环节需要一个 Grove 按钮而ReSpeaker HAT 板上已经集成了按钮因此不需要 Grove Base HAT 也能完成后续全部实验这一设计在配套文档 pi-audio.md 中有明确说明。装好 HAT 后需要按 Seeed 官方说明安装驱动其流程会用到git克隆仓库。如果你的树莓派尚未安装git可先执行sudo apt install git --yes3. 用arecord -l查看录音设备在树莓派本机终端或通过 VS Code 的 Remote SSH 远程会话执行arecord -l输出示例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假设只接了一个麦克风就应只看到一条记录记下 card 编号上例中为1后续 Python 代码和测试命令都会用到Linux 的多麦克风配置比较繁琐课程建议只保留一个麦克风拔掉其余所有麦克风以降低排查难度。任务二连接并配置扬声器1. 物理连接与设备查看按所选方案接好扬声器后执行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 ... card 1: M0 [eMeet M0], device 0: USB Audio [USB Audio] Subdevices: 1/1 Subdevice #0: subdevice #0可以看到card 0: Headphones永远是板载 3.5mm 耳机插孔若额外接了 USB 扬声器则会额外列出一条示例中的card 1: M0。2. 将外接扬声器设为系统默认关键步骤如果使用外接扬声器而非板载耳机插孔上的设备必须把它设为 ALSA 默认播放设备否则后续aplay、PyAudio 播放都会走板载耳机口。编辑 ALSA 全局配置sudo nano /usr/share/alsa/alsa.conf在nano中向下滚动方向键找到defaults.pcm.card 0将0改为aplay -l输出中目标声卡的编号。例如想使用card 1: M0eMeet M0 USB 音频改为defaults.pcm.card 1保存并退出按Ctrlx按y确认保存再按return回车确认文件名。 这个defaults.pcm.card值直接决定了系统默认的 PCM 播放声卡也是后续 PyAudio 播放代码中speaker_card_number取值的依据参见下文源码分析。任务三测试麦克风与扬声器1. 录制 5 秒音频arecord --formatS16_LE --duration5 --rate16000 --file-typewav out.wav参数解读--formatS16_LE16 位小端有符号整数采样PCM 编码每样本 2 字节--duration5录制 5 秒--rate16000采样率 16KHz——这是本课程语音识别场景推荐的入门采样率对语音转文字模型而言质量足够--file-typewav输出 WAV 容器格式44 字节头 原始音频数据运行期间对着麦克风说话、唱歌、打节奏或演奏乐器制造一些声音。2. 回放刚才的录音aplay --formatS16_LE --rate16000 out.wav应能从扬声器听到刚才的录音并可按需调节外接扬声器音量。若回放报错请回查alsa.conf中defaults.pcm.card是否设成了正确的卡号。3. 调整麦克风音量/增益如需调整板载麦克风端口的音量或麦克风增益可使用alsamixer交互式混音器工具alsamixer在界面中用方向键调整、Esc退出。若对工具用法不熟悉可查阅 Linux 的alsamixer手册页man alsamixer。从硬件到代码这段配置如何支撑整个语音识别项目硬件配置只是第一步。在课程仓库中这三项成果会直接进入后续两个编码环节形成完整的录音 → 上传 → 识别链路环节 A按键控制的录音与回放pi-audio.mdapp.pycode-record 版 展示了配置结果的落地方式audio pyaudio.PyAudio() microphone_card_number 1 speaker_card_number 1 rate 48000microphone_card_number与speaker_card_number正是来自本文arecord -l/aplay -l查到的卡号其中扬声器卡号必须与alsa.conf中的defaults.pcm.card一致rate 48000是采样率默认值若运行时报OSError: [Errno -9997] Invalid sample rate应改为44100或16000值越高音质越好但需硬件支持录音核心逻辑capture_audio()以pyaudio.paInt16格式、单声道、frames_per_buffer4096打开输入流在 Grove 按钮按下期间循环stream.read(4096)收集音频帧松开后把帧写入io.BytesIO内存缓冲并封装为 WAV 返回play_audio(buffer)则以相同参数打开输出流按 4096 字节分块回放若使用 ReSpeaker HAT按钮代码为Factory.getButton(GPIO-LOW, 17)板载按钮接 D17按下为低电平若用 Grove Base HAT 上的 D5 口则为Factory.getButton(GPIO-HIGH, 5)。环节 B调用语音服务做语音转文字pi-speech-to-text.md在app.pycode-speech-to-text 版 中Content-Type头携带samplerate{rate}把本文配置的采样率直接上报给服务端由 REST API 完成识别并返回DisplayText——可见本文的硬件与采样率配置是整个识别链路正确运行的先决条件。其他硬件平台的对照同一个连接并配置麦克风/扬声器任务在课程中还有两个分支可对照阅读Wio Terminal自带 MEMS 麦克风只需外接 ReSpeaker HAT 扬声器与 SD 卡见 wio-terminal-microphone.md虚拟 IoT 设备直接使用电脑的麦克风与扬声器仅需按厂商说明安装配置驱动见 virtual-device-microphone.md。常见问题排查清单现象原因与对策arecord -l看不到麦克风确认物理连接蓝牙麦克风可能不被支持改用 USB 有线方案aplay -l只有card 0: Headphones说明外接扬声器未识别检查 USB 连接回放无声或走错设备核对alsa.conf中defaults.pcm.card是否等于目标卡号Invalid sample rate错误把代码中的rate降为44100或16000创建 PyAudio 实例时出现 ALSA 报错多为树莓派上不存在的音频设备配置所致可安全忽略录音灵敏度不理想用alsamixer调整麦克风增益完成本节后你的树莓派就具备了可靠的听与说能力接下来即可继续学习如何用按钮触发录音pi-audio.md以及如何将音频送入语音服务完成语音转文字pi-speech-to-text.md最终组装出支持多语言语音指令的智能厨房计时器。【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表