news 2026/9/16 16:44:05

IoT-For-Beginners 实战:在 Raspberry Pi 上配置麦克风与扬声器,为语音识别智能定时器铺路

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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中"消费者物联网 · 语音识别"一课(课程主页)的 Raspberry Pi 硬件配置环节,系统讲解如何为树莓派连接并配置麦克风与扬声器:包括硬件选型、ALSA 声卡枚举(arecord -l/aplay -l)、默认声卡切换(alsa.conf)以及录制/回放验证。完成本文后,你将能搭建一套可用的树莓派音频输入输出环境,为后续"按下按钮录音 → 语音转文字"的智能厨房定时器项目打好硬件基础。

背景:为什么要给树莓派配麦克风与扬声器

6-consumer/lessons/1-speech-recognition这一课中,你将构建一个支持语音控制的智能厨房定时器:按下按钮说话,树莓派采集音频,再借助 Azure Speech Service(认知服务)把语音转成文字并打印到控制台。整条链路的第一步,就是让树莓派"能听"(麦克风)与"能说"(扬声器,用于在测试阶段回放验证录音)。

树莓派本身没有内置麦克风,必须外接;但它带有 3.5mm 耳机输出口,可连接耳机、耳麦或音箱。本文档(translations/cs/6-consumer/lessons/1-speech-recognition/pi-microphone.md,英文原版见 6-consumer/lessons/1-speech-recognition/pi-microphone.md)正是该课程中针对"单板计算机(Raspberry Pi)"的硬件配置子章节。

硬件选型:麦克风的五种接法

树莓派没有板载麦克风,需要外接,常见方案有:

  • USB 麦克风:即插即用,最常见;
  • USB 耳麦:带麦克风的 USB 耳机;
  • USB 一体式会议扬声器(speakerphone):同时具备麦克风与扬声器;
  • USB 音频适配器 + 3.5mm 接口麦克风:适合手头有传统模拟麦克风的情况;
  • ReSpeaker 2-Mics Pi HAT(Seeed 出品):直接以 HAT 形式插在树莓派 GPIO 上,自带双麦克风、一个 Grove 按钮和 3.5mm/JST 音频输出。

💁蓝牙麦克风不推荐:树莓派对蓝牙麦克风支持并不完整,若使用蓝牙麦克风或蓝牙耳麦,可能遇到配对困难或无法录音的问题。

扬声器的五种接法

树莓派自带 3.5mm 耳机输出口,可直接接耳机、耳麦或音箱;此外还可通过以下方式外接扬声器:

  • HDMI 音频:通过显示器或电视输出声音;
  • USB 音箱
  • USB 耳麦
  • USB 一体式会议扬声器
  • ReSpeaker 2-Mics Pi HAT:将扬声器接到其 3.5mm 接口或 JST 端口。

连接并配置麦克风

第 1 步:物理连接

用合适的方式连接麦克风,例如插入任意一个 USB 口。

第 2 步(可选):使用 ReSpeaker 2-Mics Pi HAT

如果你选用 ReSpeaker HAT,可以取下原来的 Grove Base HAT,换上 ReSpeaker HAT:

本课后续录音需要用到 Grove 按钮,而该 HAT 上已内置一个按钮,因此可以不再需要 Grove Base HAT。装好 HAT 后,还需要按 Seeed 官方入门说明安装驱动。

⚠️ Seeed 的安装说明依赖git克隆仓库。若你的树莓派未安装 git,可先执行:

sudo apt install git --yes

第 3 步:枚举已连接的麦克风

在树莓派本机终端,或通过 VS Code Remote-SSH 连接后的终端中执行:

arecord -l

该命令会列出所有可用的录音(Capture)硬件设备,输出形如:

pi@raspberrypi:~ $ 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 number),后续 Python 录音代码需要用到。以上输出中卡片号为1

💡 建议只保留一个麦克风:Linux 下多麦克风配置较繁琐,只插一个、拔掉其余是最省事的做法。

连接并配置扬声器

第 1 步:物理连接

用合适的方式连接扬声器(3.5mm 耳机口、USB 或 HDMI)。

第 2 步:枚举已连接的扬声器

执行:

aplay -l

输出形如:

pi@raspberrypi:~ $ 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 音箱等额外设备,它们也会出现在列表中。

第 3 步:把外接扬声器设为默认

如果你使用的是外接扬声器(而非接在内置耳机口上的音箱/耳机),需要把它设为 ALSA 的默认播放设备:

sudo nano /usr/share/alsa/alsa.conf

用方向键向下滚动,找到:

defaults.pcm.card 0

0改为上一步aplay -l输出中对应声卡的卡片号。例如输出中有card 1: M0 [eMeet M0], device 0: USB Audio [USB Audio],要使用它则改为:

defaults.pcm.card 1

用方向键定位到数字,删除后输入新数字即可。

第 4 步:保存并退出

Ctrl+x,按y确认保存,再按Enter确认文件名。

这一defaults.pcm.card值非常重要——课程后续录音代码 code-record/pi/smart-timer/app.py 中的speaker_card_number(扬声器卡片号)就与该配置保持一致;若回放报错,首先检查这里。

测试麦克风与扬声器

录制 5 秒音频

arecord --format=S16_LE --duration=5 --rate=16000 --file-type=wav out.wav

命令运行期间对着麦克风说话、唱歌或制造任何声音。参数说明:

参数含义本课取值
--format=S16_LE16-bit 小端序 PCM 采样(有符号整数)S16_LE
--duration=5录制时长(秒)5
--rate=16000采样率 16KHz,对语音转文字足够16000
--file-type=wav输出未压缩 WAV 文件wav

16KHz、16-bit 单声道音频每秒约 32KB(16,000 样本/秒 × 2 字节/样本),这也是语音识别模型常用的输入规格。

回放验证

5 秒后录制自动结束,执行:

aplay --format=S16_LE --rate=16000 out.wav

声音应通过扬声器播放出来,必要时调节扬声器音量。

调节音量与增益

如需调节内置麦克风口音量或麦克风增益,可使用alsamixer工具(其用法详见 Linux 的 alsamixer man 手册)。若回放时出现错误,请再次检查alsa.confdefaults.pcm.card是否指向了正确的卡片。

与项目代码的衔接:从录音到语音转文字

完成本文的硬件配置后,接下来课程会引导你完成两步:

  1. 采集音频(pi-audio.md):安装pyaudio依赖(sudo apt install libportaudio0 libportaudio2 libportaudiocpp0 portaudio19-dev libasound2-plugins --yes,再pip3 install pyaudio),用代码把本文记录到的microphone_card_number/speaker_card_number填入 app.py:

    microphone_card_number = 1 # arecord -l 查到的卡片号 speaker_card_number = 1 # alsa.conf 中 defaults.pcm.card 的卡片号 rate = 48000 # 采样率;报 Invalid sample rate 时可改 44100 或 16000
  2. 语音转文字(pi-speech-to-text.md):用requests先向 Azure Speech Service 获取访问令牌(令牌约 10 分钟过期),再把 WAV 音频缓冲区 POST 到语音识别 REST API,将识别文本打印到控制台。完整实现见 code-speech-to-text/pi/smart-timer/app.py,其中录音回调逻辑与本文配置的采样率rate严格对应(请求头Content-Type中的samplerate={rate})。

由此可见,本文中的arecord -l/aplay -l卡片号、alsa.conf默认声卡设置以及 16KHz 采样率,是整个智能定时器"按下按钮说话 → 云端识别"链路正确运行的地基。

常见问题排查

  • 回放报错:优先检查/usr/share/alsa/alsa.confdefaults.pcm.card是否与aplay -l输出一致。
  • OSError: [Errno -9997] Invalid sample rate:运行课程代码时若出现该错误,把rate改为4410016000
  • 创建 PyAudio 实例时的 ALSA 警告:类似Unknown PCM cards.pcm.front的报错来自树莓派上未连接的音频设备配置,可忽略。
  • 蓝牙设备无法录音:换用 USB 或有线方案。

小结

通过本文,你已完成树莓派语音识别的硬件准备:选型并连接麦克风/扬声器、用arecord -laplay -l确认声卡、在alsa.conf中指定默认播放设备、并用arecord/aplay完成录制回放自检。这套环境接下来将直接服务于 IoT-For-Beginners 消费者项目中的智能定时器——按下按钮采集语音,交给云端 AI 转为文字,构建一个属于自己的语音交互设备。

【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/16 16:43:57

STC15W408AS电流表设计:ADC采样、LCD1602显示与校准

简介:基于STC15W408AS的电流表设计是一份完整的软硬件工程资料,面向电子爱好者、单片机学习者及硬件工程师,解决电流测量与LCD1602实时显示问题。资源包共23个文件,约10.35MB,包含C语言源程序、A51启动文件、hex可执行…

作者头像 李华
网站建设 2026/9/16 16:42:42

PyTorch定制ResNet实现老虎细粒度识别

简介:本资源是一份面向深度学习初学者与计算机视觉实践者的PyTorch实战项目,聚焦于野生动物细粒度识别任务,提供完整的ResNet图像分类解决方案。项目基于PyTorch实现ResNet网络架构,专用于107类老虎品种(含东北虎、华南…

作者头像 李华
网站建设 2026/9/16 16:41:44

基于Vue+SpringBoot的健身房管理系统设计与实现指南

毕业设计做到健身房管理系统这个题目,在最近几年其实非常常见,但恰好也是“看起来简单、做起来容易翻车”的典型题目。很多同学一上来就急着写代码,结果做完才发现业务逻辑一团乱麻、答辩时讲不清楚、源码里还埋了不少自己都不知道的坑。我见…

作者头像 李华
网站建设 2026/9/16 16:41:44

51单片机闭环直流电机控制系统:从PWM到PID的完整实现

简介:基于51单片机的闭环直流电机控制系统资料包,面向电子设计学习者与竞赛选手,适合课程设计、毕业设计及项目入门。方案以AT89C51为核心,通过P1.0输出占空比可调PWM,用4个独立按键设定速度,并用两个4位共…

作者头像 李华
网站建设 2026/9/16 16:41:38

智能写作工具提升学术论文效率:从文献检索到终稿优化

1. 论文写作工具革命:从焦虑到高效的关键跃迁凌晨三点的大学宿舍里,小张盯着空白的文档光标已经闪烁了两个小时。和无数面临毕业论文压力的同学一样,他正在经历学术写作的典型困境:文献找不到、框架理不清、格式总出错。但当我给他…

作者头像 李华
网站建设 2026/9/16 16:41:31

AutoGluon 自动化机器学习安装指南:3 步跑通表格与多模态建模

AutoGluon 自动化机器学习安装指南:3 步跑通表格与多模态建模 【免费下载链接】autogluon Fast and Accurate ML in 3 Lines of Code 项目地址: https://gitcode.com/GitHub_Trending/au/autogluon AutoGluon 是面向表格、图像、文本与时间序列数据的自动化机…

作者头像 李华