ESP32-S3小智AI制作教程

从零打造属于你的 AI 语音助手:ESP32-S3 制作「小智 AI」保姆级教程

本文将手把手教你使用 ESP32-S3 开发板 + 面包板,复刻开源爆火项目 小智 AI(xiaozhi-esp32)——一个可以语音唤醒、自由对话、接入 DeepSeek / Qwen 等大模型的桌面 AI 伙伴。全程照做即可复刻成功,总成本约 50~80 元


目录


一、项目简介

小智 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 联网     │
                        └─────────────────┘

流程说明:

  1. ESP32-S3 本地运行离线唤醒词检测(ESP-SR),听到"你好小智"后开始工作;
  2. INMP441 麦克风通过 I2S 总线采集音频,芯片将其编码为 Opus 格式;
  3. 音频流经 WebSocket 上传云端,完成 ASR(语音转文字)→ LLM(大模型生成回复)→ TTS(文字转语音);
  4. 云端将合成语音回传,ESP32-S3 解码后通过 MAX98357A 功放驱动喇叭播放。

这也是为什么开发板需要 PSRAM:唤醒词模型和音频缓冲都需要较大内存。


三、硬件清单(BOM)

序号组件推荐型号参考价格备注
1开发板ESP32-S3-DevKitC-1(N16R8 模组)¥35~50Flash ≥ 8MB、PSRAM ≥ 2MB,强烈推荐 N16R8(16MB Flash + 8MB PSRAM)
2麦克风INMP441 MEMS 数字麦克风模块¥3~5I2S 接口
3功放MAX98357A I2S 音频放大模块¥5~83W D类功放
4喇叭8Ω 2~3W 小喇叭(腔体喇叭音质更好)¥3~104Ω 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说明
VDD3.3V⚠️ 切勿接 5V,切勿与 GND 接反,否则烧毁麦克风!
GNDGND
SDGPIO 3音频数据输出
WSGPIO 10字选择(左右声道时钟)
SCKGPIO 11串行时钟
L/RGND接地 = 左声道

4.2 MAX98357A 功放 → ESP32-S3

MAX98357A 引脚接到 ESP32-S3说明
VIN3.3V 或 5V接 5V 音量更大
GNDGND
DINGPIO 6音频数据输入
BCLKGPIO 5位时钟
LRCGPIO 4左右声道时钟
GAINGND增益设置(觉得音量太大可改接 3.3V)
SD3.3V使能引脚
喇叭 + / −接喇叭两根线螺丝端子或焊接

4.3 OLED 显示屏(可选)

OLED 引脚接到 ESP32-S3
VCC3.3V
GNDGND
SDAGPIO 41
SCLGPIO 42

⚠️ 接线三查: ① 电源正负极是否接反;② 杜邦线是否插紧(面包板接触不良是玄学问题之王);③ 所有 GND 是否共地。
如果你的接线与上表不同,就必须走方案 B 源码编译,并在配置中同步修改 GPIO。


五、方案 A:免开发环境,直接烧录官方固件(推荐新手)

不用装任何开发环境,10 分钟搞定,适合只想"用起来"的同学。

5.1 下载固件

前往项目 GitHub 仓库 78/xiaozhi-esp32Releases 页面,下载与你板子对应的固件包(面包板方案选 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/CH343CP210x 驱动(官网搜索下载安装即可)。

💡 ESP32-S3 板子通常有两个 Type-C 口,优先插丝印为 COM / UART 的那个。

5.3 使用乐鑫 Flash Download Tool 烧录

  1. 到乐鑫官网下载 Flash Download Tool,解压运行;
  2. 启动界面选择:ChipType = ESP32-S3,WorkMode = Develop,LoadMode = UART
  3. 主界面配置:
    • 第一行勾选 ✔,点 ... 选择解压出来的 merged-binary.bin
    • 右侧地址栏填 0x0
    • SPI SPEED:80MHz;SPI MODE:DIO
    • COM:选择刚才记下的端口;BAUD:921600(失败就降到 115200);
  4. 先点击 ERASE 擦除 Flash(可选但推荐),再点击 START 开始烧录;
  5. 进度条走完显示 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 开发环境

  1. 安装 VSCode
  2. 在 VSCode 扩展市场安装 ESP-IDF 插件;
  3. 插件内选择安装 ESP-IDF v5.3 及以上版本(EXPRESS 模式,下载服务器选 Espressif 国内源更快);
  4. 等待工具链自动下载安装完成(约 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 配网

  1. 首次启动(或长按 BOOT 键重置网络后),设备会开启热点,播报"进入配网模式";
  2. 手机 WiFi 列表中连接名为 Xiaozhi-xxxxxx 的热点;
  3. 浏览器访问 http://192.168.4.1
  4. 在页面中选择你家的 WiFi(⚠️ 只支持 2.4GHz 频段,5G 频段搜不到),输入密码,点击连接;
  5. 设备自动重启并联网成功。

7.2 绑定设备到控制台

  1. 对设备说 “你好,小智” 唤醒它,随便说句话,它会播报一个 6 位验证码(屏幕版会直接显示);
  2. 电脑/手机浏览器访问官方控制台 https://xiaozhi.me,注册并登录账号;
  3. 进入 控制台 → 添加设备,输入刚才的 6 位验证码;
  4. 绑定成功后,设备会自动刷新,此时就可以正式对话了!

🎉 到这里,你的小智 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 随身携带。

十一、资源汇总


写在最后: 小智 AI 是入门 AIoT(AI + 物联网)最好的实战项目之一——五十块钱、一块面包板,就能体验到"语音唤醒 → 云端大模型 → 语音合成"的完整链路。动手做出来的那一刻,你会由衷感叹:AI 硬件的门槛,真的被打下来了。

如果本文对你有帮助,欢迎点赞、收藏、关注三连!有问题请在评论区留言,看到都会回复。

(本文基于 xiaozhi-esp32 开源项目撰写,感谢虾哥及社区所有贡献者。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值