news 2026/9/17 8:33:26

IoT-For-Beginners 语音识别实战:Wio Terminal 麦克风与扬声器硬件配置指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
IoT-For-Beginners 语音识别实战:Wio Terminal 麦克风与扬声器硬件配置指南

IoT-For-Beginners 语音识别实战:Wio Terminal 麦克风与扬声器硬件配置指南

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

本指南面向 Microsoft Learn「IoT-For-Beginners」课程第 6 项目(Consumer)第 1 课「用 IoT 设备识别语音」中的 Wio Terminal 硬件路线,完整讲解如何为 Wio Terminal 配置麦克风与扬声器:它本身内置了可用于语音采集的麦克风,通过外接 ReSpeaker 2-Mics Pi Hat 扩展板获得扬声器输出能力,并借助 SD 卡存储后续下载的音频。读完本文,你将掌握 Wio Terminal 的音频硬件选型、GPIO 接线方法、SD 卡格式化要求,并能结合仓库内配套的 PlatformIO 工程验证音频采集链路。

硬件概览:Wio Terminal 内置麦克风与 ReSpeaker 扩展

Wio Terminal(Seeed Studio 出品的基于 ATSAMD51 的微控制器开发板)已经内置了一个麦克风,可直接用于采集语音,为后续的语音转文字(Speech to Text)提供音频输入。这是本课程选择 Wio Terminal 作为 Arduino 路线设备的重要原因之一——无需额外焊接或连接麦克风模块。

要加入扬声器(音频输出),课程推荐使用ReSpeaker 2-Mics Pi Hat扩展板。这是一块外部扩展板,板上包含:

  • 2 个 MEMS 麦克风(可作为额外麦克风输入);
  • 一个扬声器连接端口(JST);
  • 一个 3.5mm 耳机插孔(headphone socket)。

ReSpeaker 采用 Raspberry Pi 标准的 40 pin GPIO 排针,而 Wio Terminal 背面提供了与之对应的 GPIO 插槽,因此二者可以通过排线直连。

扬声器选型

除 ReSpeaker 扩展板本身外,你还需要准备以下任意一种音频输出设备:

  • 带 3.5mm 插头的耳机(headphones);
  • 带 3.5mm 插头的扬声器;
  • 带 JST 连接线的扬声器,例如 Mono Enclosed Speaker(2W 6Ω)。

💁 如果你熟悉焊接操作,也可以选用 40 Pin Raspberry Pi Hat Adapter Board For Wio Terminal 这类转接板来连接 ReSpeaker,从而避免手工排线。

连接线材与存储介质

  • 40 根 pin-to-pin 跳线(也称公对公跳线),用于将 ReSpeaker 的 40 pin 排针与 Wio Terminal 背面的 GPIO 插槽一一对应连接;
  • 一张 SD 卡:课程后续需要下载并回放音频,Wio Terminal 对 SD 卡有明确限制——最大仅支持 16GB 容量,且必须格式化为FAT32 或 exFAT文件系统。

任务一:连接 ReSpeaker Pi Hat 与 Wio Terminal

在开始前请确保Wio Terminal 处于断电状态。然后按照下面的步骤,用跳线将 ReSpeaker 2-Mics Pi Hat 连接到 Wio Terminal 背面的 GPIO 插槽。

  1. 参考如下引脚连接示意图,确定左右两侧插槽的对应关系:

  2. 将 ReSpeaker 与 Wio Terminal 摆放在同一方向,使两侧的 GPIO 插槽朝上,并位于左手边。

  3. ReSpeaker GPIO 排针左上角第一个插孔开始,取一根 pin-to-pin 跳线,将其连接到Wio Terminal 左上角对应的插孔

  4. 沿 GPIO 插槽左侧一列逐孔向下重复此操作,确保每个引脚都牢固插入:

    💁 如果你的跳线是排线(ribbon)形式,请保持整排跳线不要拆散,这样更容易按顺序确认每根线都正确连接。

  5. 用同样的方法连接右侧的 GPIO 插槽。右侧的跳线需要绕开已经接好的左侧跳线走线:

    💁 若使用排线,可将排线拆分为两股,分别从已有跳线的两侧绕过,避免相互纠缠。

    💁 接线过程中可以用胶带把插孔固定成块,防止个别跳线松脱。

  6. 接好跳线后,将扬声器接入 ReSpeaker:

    • JST 扬声器:将 JST 连接线插入 ReSpeaker 的 JST 端口;
    • 3.5mm 插头扬声器或耳机:直接插入 ReSpeaker 的 3.5mm 耳机插孔。

💡 接线完成后建议再次核对左右两列是否一一对应(左上对左上、左下对左下、右上对右上、右下对右下),错误的错位连接可能损坏 GPIO 引脚。

任务二:设置 SD 卡

ReSpeaker 扩展板负责音频输出,而SD 卡用于存放后续从云端下载的音频文件(例如语音反馈所用的提示音),因此需要提前准备好并正确格式化。

  1. 将 SD 卡接入电脑(若电脑没有 SD 卡槽,请使用外置读卡器)。

  2. 使用电脑上合适的磁盘工具格式化 SD 卡,文件系统必须选择 FAT32 或 exFAT——这是 Wio Terminal 固件能够识别的要求;容量方面请勿使用超过 16GB 的卡。

  3. 将 SD 卡插入 Wio Terminal左侧、电源开关正下方的 SD 卡槽,确保完全推入并听到卡扣到位的声音。必要时可用薄片工具或另一张 SD 卡辅助推入:

    💁 取出 SD 卡时,只需轻轻向内按压,卡片会自动弹出;同样需要扁平螺丝刀之类的薄工具辅助。

从硬件到代码:仓库中的配套录音工程

硬件接线完成后,你可以直接使用本仓库中已经写好的工程验证麦克风采集链路,而不必从零编写底层代码。对应工程位于 code-record/wio-terminal/smart-timer:

  • platformio.ini:PlatformIO 工程配置,目标板为seeed_wio_terminal(框架 Arduino),依赖Seeed Arduino FS @ 2.1.1Seeed Arduino SFUD @ 2.0.2两个库,并通过-DSFUD_USING_QSPI编译宏启用 QSPI 访问板载 Flash;
  • main.cpp:入口程序。setup中初始化串口、初始化 SFUD(Flash 驱动)并开启 QSPI 快速读取、以INPUT_PULLUP模式配置 C 键,随后调用mic.init()loop中检测 C 键按下后启动 4 秒录音,录音结束后调用processAudio()(本阶段为空实现,后续课程会在此接入语音转文字),再调用mic.reset()复位;
  • mic.h:封装麦克风采集的Mic类,包含音频常量定义(采样率RATE16000、录音时长SAMPLE_LENGTH_SECONDS4 秒、WAV 缓冲BUFFER_SIZE等)、DMAC/ADC 配置函数configureDmaAdc()、WAV 文件头结构wavFileHeader与回调audioCallback()
  • flash_writer.h:FlashWriter类,实现按 Flash 擦除粒度缓冲、写入与flushSfudBuffer()收尾,把音频数据持久化到板载 Flash。

💡 Wio Terminal 仅有 192KB RAM,不足以缓存超过数秒的音频,因此该工程借助板载 4MB Flash 存储录音:DMAC 按固定采样间隔从 ADC 抓取数据写入双缓冲(_adc_buf_0/_adc_buf_1),缓冲满后由中断处理并转存 Flash,从而在不丢数据的前提下完成长录音。

构建与验证方法:在 VS Code 中打开smart-timer工程,用 PlatformIO 的 Build 与 Upload 烧录到 Wio Terminal,打开串口监视器(波特率 9600)后按下 C 键(左侧、靠近电源开关的那颗按键)并说话,串口将依次打印Ready.Starting recording...Finished recording,表示 4 秒音频已成功采集并写入 Flash。

接线与使用的注意事项

  • 断电操作:所有 GPIO 跳线必须在 Wio Terminal 断电状态下连接,避免带电插拔损坏引脚。
  • SD 卡规格:仅支持 ≤16GB、FAT32/exFAT 格式;格式不匹配可能导致无法读写音频文件。
  • 采样率与内存的关系:工程默认以 16KHz、16bit 单声道采集,每秒产生约 32KB 数据;如需更长录音,可增大SAMPLE_LENGTH_SECONDS,其余常量会自动按公式重算,但要注意 Flash 空间与处理耗时的上限。
  • 后续课程衔接:本节完成的是「配置麦克风与扬声器」的硬件步骤,下一步的音频采集实现见 wio-terminal-audio.md,语音转文字实现见 wio-terminal-speech-to-text.md,课程总览与 Raspberry Pi、虚拟设备两条硬件路线见 README.md。

总结

通过本指南,你完成了语音识别「智能厨房计时器」项目的 Wio Terminal 硬件准备:确认了内置麦克风可作语音输入,将 ReSpeaker 2-Mics Pi Hat 通过 40 pin 跳线与 Wio Terminal GPIO 一一对接以提供扬声器输出,并准备好了符合容量与文件系统要求的 SD 卡。配合仓库中code-record工程,即可按下 C 键录制 4 秒语音并写入板载 Flash,为下一步接入云端语音转文字服务奠定基础。

【免费下载链接】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/17 8:33:23

React Native TextInput性能优化与OpenHarmony适配实践

1. React Native for OpenHarmony:构建高性能TextInput输入表单的深度实践在移动应用开发领域,表单输入是用户与应用交互的核心场景之一。作为开发者,我们经常需要面对如何在React Native for OpenHarmony(RNOH)环境下…

作者头像 李华
网站建设 2026/9/17 8:33:21

NocoBase 版本控制插件:为系统搭建过程保存可恢复的版本快照

NocoBase 版本控制插件:为系统搭建过程保存可恢复的版本快照 【免费下载链接】nocobase NocoBase is an open-source AI no-code platform for building business systems fast. Instead of generating everything from scratch, AI works on top of production-pr…

作者头像 李华
网站建设 2026/9/17 8:31:30

DNESP32P4 USB Slave读卡器全链路实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/17 8:30:08

用Python脚本生成沪教版一年级数学知识点docx与反向提取

简介:这份沪教版小学数学一年级知识点归纳文档,面向一年级学生家长、课后辅导教师及备课老师,用于系统梳理教材核心考点、辅助日常复习与期末查漏补缺。资源包内共1个docx文件,约40KB,篇幅紧凑、便于打印与随时翻阅。内…

作者头像 李华
网站建设 2026/9/17 8:30:02

中国九大农业区划shp数据处理全流程:解压、投影、提取与出图

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/17 8:29:34

SQLite Studio 使用教程:Windows 下可视化轻松管理数据库

如果你正在Windows下管理SQLite数据库,大概率会碰到一个很现实的问题:命令行工具用起来太吃力,图型界面又不知道该选哪个。SQLite Studio就是我认为目前最适合新手入门的可视化工具之一,免费开源、单文件启动、功能齐全&#xff0…

作者头像 李华