从零打造属于你的 AI 语音助手:ESP32-S3 制作「小智 AI」保姆级教程
本文将手把手教你使用 ESP32-S3 开发板 + 面包板,复刻开源爆火项目 小智 AI(xiaozhi-esp32)——一个可以语音唤醒、自由对话、接入 DeepSeek / Qwen 等大模型的桌面 AI 伙伴。全程照做即可复刻成功,总成本约 50~80 元。
目录
- 一、项目简介
- 二、实现原理
- 三、硬件清单(BOM)
- 四、硬件接线
- 五、方案 A:免开发环境,直接烧录官方固件(推荐新手)
- 六、方案 B:源码编译固件(进阶玩家)
- 七、配网与设备激活
- 八、控制台配置:给小智换"人设"和大模型
- 九、常见问题排查(FAQ)
- 十、进阶玩法
- 十一、资源汇总
一、项目简介
小智 AI(xiaozhi-esp32) 是由开发者"虾哥"开源的 AI 语音聊天机器人项目,GitHub 上已获得数万 Star,社区极其活跃。
它具备以下能力:
| 功能 | 说明 |
|---|---|
| 🎤 离线语音唤醒 | 默认唤醒词"你好小智"(基于 ESP-SR) |
| 🗣️ 流式语音对话 | 支持连续对话、可打断(WebSocket 全双工) |
| 🧠 大模型接入 | 云端可切换 DeepSeek、Qwen、豆包等大模型 |
| 🌍 多语言识别 | 普通话、粤语、英语、日语等 |
| 🔊 声纹识别 | 能分辨出是谁在和它说话 |
| 🎭 自定义人设 | 在控制台自由设定角色性格、音色 |
| 📺 屏幕显示(可选) | OLED / LCD 显示表情与对话内容 |
| 🏠 IoT 控制 | 通过 MCP 协议控制智能家居设备 |
工作前提:小智必须联网才能使用(语音识别与大模型推理在云端完成),无法完全离线运行。
二、实现原理
整体架构如下:
┌──────────────────────────────┐
│ 云端服务器 │
│ ASR(语音识别) → LLM(大模型) │
│ → TTS(语音合成) │
└────────────▲─────────────────┘
│ WebSocket (Opus 音频流)
│
┌─────────────┐ I2S ┌────────┴────────┐ I2S ┌──────────────┐
│ INMP441 ├────────►│ ESP32-S3 ├────────►│ MAX98357A │───► 🔈 喇叭
│ 数字麦克风 │ 录音 │ · 离线唤醒词 │ 播放 │ I2S 功放 │
└─────────────┘ │ · Opus 编解码 │ └──────────────┘
│ · WiFi 联网 │
└─────────────────┘
流程说明:
- ESP32-S3 本地运行离线唤醒词检测(ESP-SR),听到"你好小智"后开始工作;
- INMP441 麦克风通过 I2S 总线采集音频,芯片将其编码为 Opus 格式;
- 音频流经 WebSocket 上传云端,完成 ASR(语音转文字)→ LLM(大模型生成回复)→ TTS(文字转语音);
- 云端将合成语音回传,ESP32-S3 解码后通过 MAX98357A 功放驱动喇叭播放。
这也是为什么开发板需要 PSRAM:唤醒词模型和音频缓冲都需要较大内存。
三、硬件清单(BOM)
| 序号 | 组件 | 推荐型号 | 参考价格 | 备注 |
|---|---|---|---|---|
| 1 | 开发板 | ESP32-S3-DevKitC-1(N16R8 模组) | ¥35~50 | Flash ≥ 8MB、PSRAM ≥ 2MB,强烈推荐 N16R8(16MB Flash + 8MB PSRAM) |
| 2 | 麦克风 | INMP441 MEMS 数字麦克风模块 | ¥3~5 | I2S 接口 |
| 3 | 功放 | MAX98357A I2S 音频放大模块 | ¥5~8 | 3W D类功放 |
| 4 | 喇叭 | 8Ω 2~3W 小喇叭(腔体喇叭音质更好) | ¥3~10 | 4Ω 3W 也可以 |
| 5 | 面包板 | 400 孔面包板 ×1~2 | ¥3 | — |
| 6 | 杜邦线 | 公对公 / 公对母若干 | ¥3 | — |
| 7 | 数据线 | Type-C 数据线 | — | ⚠️ 必须是能传数据的线,不能用充电线! |
| 8 | 显示屏(可选) | 0.91" I2C OLED(SSD1306) | ¥8 | 显示表情和文字 |
💡 选购避坑提示:
- 买开发板时认准模组丝印 ESP32-S3-WROOM-1 N16R8。有些便宜板子是 N8R2 甚至无 PSRAM 的 N4,无 PSRAM 将无法使用语音唤醒。
- 部分仿制板天线较差,可能导致后续配网时手机搜不到热点,尽量选带板载天线且做工好的。
四、硬件接线
以下为源码/官方"面包板 WiFi 版"固件的默认 GPIO 定义,照着接即可,无需改代码。
4.1 INMP441 麦克风 → ESP32-S3
| INMP441 引脚 | 接到 ESP32-S3 | 说明 |
|---|---|---|
| VDD | 3.3V | ⚠️ 切勿接 5V,切勿与 GND 接反,否则烧毁麦克风! |
| GND | GND | — |
| SD | GPIO 3 | 音频数据输出 |
| WS | GPIO 10 | 字选择(左右声道时钟) |
| SCK | GPIO 11 | 串行时钟 |
| L/R | GND | 接地 = 左声道 |
4.2 MAX98357A 功放 → ESP32-S3
| MAX98357A 引脚 | 接到 ESP32-S3 | 说明 |
|---|---|---|
| VIN | 3.3V 或 5V | 接 5V 音量更大 |
| GND | GND | — |
| DIN | GPIO 6 | 音频数据输入 |
| BCLK | GPIO 5 | 位时钟 |
| LRC | GPIO 4 | 左右声道时钟 |
| GAIN | GND | 增益设置(觉得音量太大可改接 3.3V) |
| SD | 3.3V | 使能引脚 |
| 喇叭 + / − | 接喇叭两根线 | 螺丝端子或焊接 |
4.3 OLED 显示屏(可选)
| OLED 引脚 | 接到 ESP32-S3 |
|---|---|
| VCC | 3.3V |
| GND | GND |
| SDA | GPIO 41 |
| SCL | GPIO 42 |
⚠️ 接线三查: ① 电源正负极是否接反;② 杜邦线是否插紧(面包板接触不良是玄学问题之王);③ 所有 GND 是否共地。
如果你的接线与上表不同,就必须走方案 B 源码编译,并在配置中同步修改 GPIO。
五、方案 A:免开发环境,直接烧录官方固件(推荐新手)
不用装任何开发环境,10 分钟搞定,适合只想"用起来"的同学。
5.1 下载固件
前往项目 GitHub 仓库 78/xiaozhi-esp32 的 Releases 页面,下载与你板子对应的固件包(面包板方案选 bread-compact-wifi 类型的合并固件 merged-binary.bin),解压得到 .bin 文件。
⚠️ 固件存放路径不要包含中文,例如放在
D:\xiaozhi\下。
5.2 安装串口驱动
用 Type-C 数据线连接开发板与电脑,打开 设备管理器 → 端口(COM 和 LPT):
- 能看到
USB-Enhanced-SERIAL CH343 (COMx)或Silicon Labs CP210x (COMx)→ 驱动正常,记下 COM 号; - 出现黄色感叹号 → 需安装 CH340/CH343 或 CP210x 驱动(官网搜索下载安装即可)。
💡 ESP32-S3 板子通常有两个 Type-C 口,优先插丝印为 COM / UART 的那个。
5.3 使用乐鑫 Flash Download Tool 烧录
- 到乐鑫官网下载 Flash Download Tool,解压运行;
- 启动界面选择:ChipType = ESP32-S3,WorkMode = Develop,LoadMode = UART;
- 主界面配置:
- 第一行勾选 ✔,点
...选择解压出来的merged-binary.bin; - 右侧地址栏填
0x0; - SPI SPEED:
80MHz;SPI MODE:DIO; - COM:选择刚才记下的端口;BAUD:
921600(失败就降到115200);
- 第一行勾选 ✔,点
- 先点击 ERASE 擦除 Flash(可选但推荐),再点击 START 开始烧录;
- 进度条走完显示 FINISH(完成) 即烧录成功,按一下板上 RST 键重启。
🔧 如果一直显示"正在连接…(CONNECTING)": 按住板上 BOOT 键不放 → 按一下 RST 键 → 松开 BOOT 键,手动进入下载模式后再点 START。
5.4 备选:esptool 命令行烧录
# 安装 esptool
pip install esptool
# 擦除 Flash(COM 号换成你自己的)
python -m esptool --chip esp32s3 --port COM5 erase_flash
# 烧录固件
python -m esptool --chip esp32s3 --port COM5 --baud 921600 write_flash 0x0 merged-binary.bin
烧录完成后跳到 第七节:配网与设备激活。
六、方案 B:源码编译固件(进阶玩家)
想改 GPIO、换唤醒词、改人设逻辑甚至自建服务器,就需要自己编译。
6.1 搭建 ESP-IDF 开发环境
- 安装 VSCode;
- 在 VSCode 扩展市场安装 ESP-IDF 插件;
- 插件内选择安装 ESP-IDF v5.3 及以上版本(EXPRESS 模式,下载服务器选 Espressif 国内源更快);
- 等待工具链自动下载安装完成(约 10~20 分钟)。
💡 Windows 用户也可以直接安装官方的 “ESP-IDF 5.3 PowerShell” 离线安装包;Linux(Ubuntu)下编译速度更快且免驱动烦恼,有条件推荐。
6.2 拉取源码
git clone https://github.com/78/xiaozhi-esp32.git
cd xiaozhi-esp32
(网络不佳可在 GitHub 页面 Code → Download ZIP,或使用国内镜像加速。)
6.3 设置目标芯片
这一步不能省,否则默认按普通 ESP32 编译会失败:
idf.py set-target esp32s3
6.4 menuconfig 配置
idf.py menuconfig
重点检查以下配置项(方向键移动、回车进入、S 保存、Q 退出):
| 配置路径 | 设置值 |
|---|---|
Xiaozhi Assistant → Board Type | 面包板新版接线(WiFi)/ Breadboard Compact WiFi |
Serial flasher config → Flash size | 按实际模组选(N16R8 选 16MB) |
Partition Table | 默认 partitions.csv(4MB Flash 才需换 partitions_4M.csv) |
Component config → ESP PSRAM | 启用(无 PSRAM 模组则关闭,但会失去语音唤醒) |
Xiaozhi Assistant → 唤醒词 | 默认"你好小智",可换其他 ESP-SR 支持的唤醒词 |
如果你的接线和第四节默认 GPIO 不同,在源码
main/boards/对应板子的config.h中修改引脚定义。
6.5 编译、烧录、监视
idf.py build # 编译(首次约 5~15 分钟)
idf.py flash monitor # 烧录并打开串口监视器
串口监视器中能看到启动日志,看到 WiFi 配网提示即成功。(退出监视器:Ctrl + ])
七、配网与设备激活
7.1 WiFi 配网
- 首次启动(或长按 BOOT 键重置网络后),设备会开启热点,播报"进入配网模式";
- 手机 WiFi 列表中连接名为
Xiaozhi-xxxxxx的热点; - 浏览器访问
http://192.168.4.1; - 在页面中选择你家的 WiFi(⚠️ 只支持 2.4GHz 频段,5G 频段搜不到),输入密码,点击连接;
- 设备自动重启并联网成功。
7.2 绑定设备到控制台
- 对设备说 “你好,小智” 唤醒它,随便说句话,它会播报一个 6 位验证码(屏幕版会直接显示);
- 电脑/手机浏览器访问官方控制台 https://xiaozhi.me,注册并登录账号;
- 进入 控制台 → 添加设备,输入刚才的 6 位验证码;
- 绑定成功后,设备会自动刷新,此时就可以正式对话了!
🎉 到这里,你的小智 AI 已经完全可用了。 试试对它说:“你好小智,给我讲个笑话。”
八、控制台配置:给小智换"人设"和大模型
登录 xiaozhi.me 控制台,点击你的设备进入配置页:
| 配置项 | 玩法 |
|---|---|
| 角色设定(Prompt) | 自由撰写人设,例如"你是一个毒舌但暖心的猫娘助手"…… |
| 角色音色 | 多种 TTS 音色可选(男声/女声/童声/方言等) |
| 大模型选择 | 可切换 Qwen、DeepSeek 等;绑定 GitHub 账号可获得开发者权限,免费解锁更多模型(如 DeepSeek 满血版) |
| 记忆功能 | 开启后小智能记住你们的历史对话 |
| OTA 升级 | 开启后固件自动保持最新,无需重新烧录 |
九、常见问题排查(FAQ)
| 现象 | 原因与解决办法 |
|---|---|
| 电脑识别不到 COM 口 | ① 换 数据线(充电线是重灾区);② 装 CH340/CP210x 驱动;③ 换 USB 口,插板上 UART 那个口 |
| 烧录一直 “CONNECTING…” | 按住 BOOT → 点按 RST → 松开 BOOT 进入下载模式;波特率降到 115200 |
| 烧录成功但无法启动/反复重启 | 固件与板型不匹配;先 ERASE 全片擦除再重烧;检查供电(换 USB 口或用带供电的 HUB) |
| 手机搜不到 Xiaozhi 热点 | 板子天线太差(仿板通病);靠近一点再搜;长按 BOOT 重置网络配置 |
| 配网页面找不到自家 WiFi | 路由器是 5GHz 频段——请连 2.4GHz |
| 喊"你好小智"没反应 | ① 检查 INMP441 六根线(尤其 VDD/GND 是否接反);② 无 PSRAM 的板子不支持唤醒;③ 面包板接触不良,重新插紧 |
| 有对话但没声音 | 检查 MAX98357A 的 SD 是否接 3.3V、喇叭线是否接好、DIN/BCLK/LRC 是否插错位 |
| 声音太大/破音 | GAIN 引脚从 GND 改接 3.3V,或在控制台调低音量 |
| 想完全离线使用 | 做不到,ASR/LLM/TTS 都在云端,必须联网 |
| 编译报错 target 不对 | 忘了执行 idf.py set-target esp32s3 |
十、进阶玩法
- 加个 OLED/LCD 屏:显示可爱表情、对话文字,menuconfig 里换成带屏板型即可;
- 换唤醒词:menuconfig → ESP Speech Recognition 中选择其他离线唤醒词;
- 自建服务器:社区提供了开源的 xiaozhi-esp32-server 项目,可以把 ASR/LLM/TTS 全部换成自己的 API(如本地 Ollama),彻底掌控数据;
- MCP 控制智能家居:通过 MCP 协议让小智帮你开灯、查天气、操作电脑;
- 打印外壳:社区有大量 3D 打印外壳模型(立创开源硬件平台、MakerWorld 搜"小智"),把面包板变成精致桌搭;
- 换 4G 版本:使用 ML307 Cat.1 模块,让小智摆脱 WiFi 随身携带。
十一、资源汇总
- 官方开源仓库:https://github.com/78/xiaozhi-esp32
- 官方控制台:https://xiaozhi.me
- 官方常见问题 Q&A:小智AI聊天机器人常见问题
- Windows ESP-IDF 编译官方教程:Windows ESP IDF 5.3 编译小智
- 微雪小智 AI 应用文档:https://docs.waveshare.net/XiaoZhi_AI/
- 乐鑫烧录工具下载:Flash Download Tools
写在最后: 小智 AI 是入门 AIoT(AI + 物联网)最好的实战项目之一——五十块钱、一块面包板,就能体验到"语音唤醒 → 云端大模型 → 语音合成"的完整链路。动手做出来的那一刻,你会由衷感叹:AI 硬件的门槛,真的被打下来了。
如果本文对你有帮助,欢迎点赞、收藏、关注三连!有问题请在评论区留言,看到都会回复。
(本文基于 xiaozhi-esp32 开源项目撰写,感谢虾哥及社区所有贡献者。)

5727

被折叠的 条评论
为什么被折叠?



