从零搭一台「会教学的 AI 小智」——ESP32-S3 全科教育语音助手实战
一台几十块的开发板 + 一块彩屏 + 一个自建教育服务器,做出一个能听、能说、能讲题、还会卖萌的桌面 AI 学习伙伴。本文把硬件、连接、教学大师设计、界面设计完整拆给你看。
一、项目简介
这是一个基于开源 xiaozhi-esp32 固件 + 自建 xiaozhi-server(教育版) 的离线/私有化 AI 语音助手。和市面上"音箱问天气"不同,它的定位是 中小学全科教育导师:
- 学生用语音问题目,它先判题意、再讲思路、给步骤、点易错点,而不是直接甩答案;
- 难题(竞赛/压轴/证明)自动切换到更强的大模型;
- 屏幕待机时显示萌系眨眼大眼睛(类似优必选萌UU),对话时切换成问答界面;
- 全部对话走自建服务器,数据可控、提示词可定制、成本可控。
整体可以概括成一句话:设备只负责"耳朵嘴巴眼睛",大脑(识别 + 教学推理)放在自己的阿里云服务器上。
二、硬件介绍
主控用的是 ESP32-S3-N16R8(果云 GOODUUU 42 脚开发板):双核 240MHz,16MB Flash + 8MB PSRAM,自带 WiFi + 蓝牙,跑 LVGL 图形界面和音频流毫无压力。外设全部用面包板 DIY 搭起来:
| 模块 | 型号 | 作用 | 关键引脚 (GPIO) |
|---|---|---|---|
| 主控 | ESP32-S3-N16R8 | 录音/联网/推流/显示 | — |
| 麦克风 | INMP441(I2S 数字麦) | 拾音 | WS=4, SCK=5, DIN=6 |
| 功放+喇叭 | MAX98357(I2S 功放) | 放音 | DOUT=7, BCLK=15, LRCK=16 |
| 显示屏 | 2.0 寸 IPS 彩屏 ST7789 / 240×320 | 表情 + 对话 | BL=42, MOSI=47, CLK=21, DC=40, RST=45, CS=41 |
| 按键 | BOOT / 音量± | 配网、切换对话、音量 | BOOT=0, VOL+=38, VOL−=39 |
| 指示灯 | 板载 RGB LED | 状态指示 | 48 |
接线图(面包板 DIY)

喇叭/功放接线单独看这张更清楚:

小贴士:屏幕一定要选对型号。本项目实测用的是 2.0 寸 = ST7789 240×320;1.54/1.3 寸是 ST7789 240×240,1.8 寸才是 ST7735 128×160。型号选错,屏幕就会花屏、颠倒、显示不全(这点后面"踩坑"一节细说)。
三、连接方法(烧录 + 配网 + 连服务器)
整个连接链路分三步:烧录固件 → 配网 → 自动连到教育服务器。
1. 烧录固件
用 flash_download_tool 或 esptool,芯片选 ESP32-S3,参数 16MB / DIO / 80MHz:

烧录布局(关键):
| 地址 | 内容 |
|---|---|
0x0 |
合并固件(bootloader + 分区表 + app + assets) |
0x9000 |
NVS(写入服务器连接配置) |
本项目把"服务器连接信息"做成一份 NVS 配置烧到
0x9000,所以同一个标准固件,换一份 NVS 就能连到你自己的服务器,非常适合批量部署。
2. 配网
上电后长按 BOOT 进入配网模式,手机连上设备热点,填入 WiFi 即可。
3. 自动连接服务器
NVS 里写好了三件事,设备开机后自动完成:
- WiFi:SSID / 密码
- OTA 地址:
http://<服务器IP>:8003/xiaozhi/ota/(激活 + 版本检查) - WebSocket 地址:
ws://<服务器IP>:8000/xiaozhi/v1/(实时语音对话通道)
开机流程:上电 → 连 WiFi → OTA 激活 → WebSocket 连服务器 → 进入待机,此后说话即可对话。
四、系统架构:一次问答的完整链路

一句"胡不归原理是什么"从说出到听到回答,经过:
- 设备录音(INMP441,16kHz)→ 编码成音频流,通过 WebSocket 推给服务器;
- ① VAD 断句(SileroVAD):判断你说完没;
- ② ASR 语音识别(FunASR + 热词/纠错):转成文字;
- ③ 教学大师 LLM(DeepSeek 双模型路由):理解 + 生成教学讲解;
- ④ TTS 合成(EdgeTTS 中文女声):把回答变成语音;
- 语音流回推设备播放,同时屏幕显示问答。
设备端轻、服务器端重,这样换模型、调提示词、加热词都只动服务器,设备不用重新烧录。
五、教学大师设计原理(核心)
这是本项目和普通"AI 音箱"最大的区别。教学能力来自服务器端 EducationDeepSeekLLM,几个关键设计:
1. 双模型智能路由——好钢用在刀刃上
服务器内置 EducationRouter,根据问题难度自动选模型:
- 日常题 →
deepseek-v4-flash(快、便宜); - 难题 →
deepseek-v4-pro(强、贵)。
判定靠 难度关键词自动升级:竞赛、丘班、强基、压轴、证明、奥数、培优、不等式、数论、递推、构造、几何综合、函数综合、IMO、CMO … 命中即走强模型。既省钱又保证难题质量。
2. 教学风格而非"答案机"
answer_style: teaching,温度压到 0.2 保证严谨。回答固定走教学路径:
先判题意 → 讲思路 → 给步骤 → 最终答案 → 易错点
条件不全、几何图缺信息、或语音可能听错时,先追问、不硬答。
3. 角色与表达约束
角色是"小智全科教育导师",覆盖中小学全科 + 竞赛。同时有一套"去 AI 味"的对话规范:
- 直奔主题,第一句不寒暄;
- 口语化、有文采,不像客服;
- 长内容分段讲、随叫随停(支持打断);
- 输出是给 TTS 朗读的,所以纯文本、不带 Markdown、不带括号心理描写。
4. 包容语音识别误差
提示词明确要求:"用户输入是 ASR 转写、可能有谐音错别字,要跨越错别字推断真实意图,不要纠正发音"。配合服务器端热词表,专有名词识别更稳(详见下一节)。
六、界面设计:待机萌脸 + 微信式对话

屏幕基于 LVGL 9.4 自绘,分两种形态:
1. 待机:萌系大眼睛(类萌UU)
- 全屏深色背景 + 一对青色发光大眼睛(带高光点);
- 会眨眼(随机 2.4–4.4 秒一次,自然不机械)+ 呼吸式上下浮动;
- 表情会跟着情感变:开心(眼睛弯成月牙)、困倦(半眯 + zzz)、惊讶(瞪大)。
2. 对话:微信气泡风格
进入聆听/说话状态时,萌脸自动隐藏,露出微信式问答气泡——用户问题、AI 解答清晰分行,配合顶部状态栏(WiFi / 时间 / 状态)。
设计逻辑:待机卖萌、对话务实。眨眼的大眼睛让它像个有生命的伙伴,而真要讲题时又能把内容看清楚。两种界面由设备状态自动切换。
七、语音识别优化(专有名词不再听错)
教育场景里"胡不归、阿氏圆、将军饮马、费马点"这类专名最容易被识别错。两招解决:
- LLM 纠错(零成本):在提示词里给一份"常被听错术语表",让大模型按上下文把"壶不归 → 胡不归"纠正回来;
- ASR 热词(更彻底):换成支持热词的识别引擎(本地 FunASRServer / 云端豆包·阿里 Qwen3-ASR),把数学术语表加进热词,从源头提升识别率。
本项目附带了一份 math_hotwords.txt(70+ 个中小学/竞赛术语),两种方案都能直接用。
八、踩坑与排障(真实经验)
- 屏幕花屏/颠倒/显示不全 → 99% 是固件屏幕型号和实际屏不一致。本项目就经历了 1.8 寸固件 → 1.54 寸 → 最终 2.0 寸(ST7789 240×320)才显示正常。对症方法:烧录与实际尺寸匹配的固件即可,无需改代码。
- 能连上但屏幕怪 → 先看串口日志确认
App version / WiFi connected / 屏幕初始化是否正常,再判断是显示型号问题还是连接问题。 - 换屏不用重编译:不同尺寸有对应的预编译合并固件,刷对应的那个 + 回写 NVS 即可。
- 专名识别差:优先上"LLM 纠错"提示词(5 分钟见效),再考虑热词 ASR。
九、总结
这套方案的价值在于把一个开源语音助手,改造成了一个真正"懂教学"的私有化学习伙伴:
- 硬件便宜、面包板可 DIY,适合教学/创客;
- 连接信息走 NVS 注入,一份固件多台复用;
- 教学能力靠服务器端的双模型路由 + 教学提示词,可持续迭代、数据自控;
- 界面在"可爱"和"实用"之间取得平衡,待机萌脸 + 对话气泡。
如果你也想做一台,硬件几十块、服务器一台学生机就能跑起来。欢迎在评论区交流接线和提示词调优经验。
本文配图:实拍接线/烧录图来自配套教程,界面与架构示意图为本项目原创绘制。