旗舰项目:从零做一个「小智」AI 语音助手
本文讲解原理与流程、引用关键片段并注明出处,版权归原作者,遵循其开源协议;一切以上游仓库最新版本为准。
桌上放着一个巴掌大的盒子。你喊它一声,它的小屏幕上亮起一张表情,醒了。你说"帮我把台灯打开",它听懂了,回你一句话,灯亮了。你再问它今天会不会下雨,它思考一下,用一个有点呆萌的声音答上来。整个过程没有手机、没有 App,就是一个独立的小硬件——这就是「小智」,也是这套教程要带你亲手做出来的东西。
它不是玩具演示。盒子里跑的,是一条完整的工业级链路:本地把你的声音录下来、在芯片上判断你有没有喊唤醒词、把语音流到服务器、识别成文字、喂给大模型、生成回答、再合成成语音播回来——还能反过来让大模型去控制硬件。你做完它,对"AI 时代的硬件到底长什么样"就不再是听说,而是从头到尾自己摸过一遍。
为什么拿小智当旗舰项目
我们挑项目当旗舰,只看三件事:开源够干净、链路够完整、和你的学习目标够契合。小智三条全中。
它是真开源,不是放出来给你看看。
小智(78/xiaozhi-esp32)用 MIT 协议开放全部固件代码,社区活跃,支持 70 多款开源硬件——意味着你手边的板子大概率能直接跑,不必为了凑齐特定型号花冤枉钱。
它把整条链路都跑通了,没有断点。 很多"AI 硬件"项目其实只做了一段:要么只演示录音,要么只调个云端接口。小智从离线唤醒、流式语音识别(ASR)、大模型(LLM)、到语音合成(TTS),一路到底,中间还接了 OLED/LCD 屏显表情、用 OPUS 编码压音频、用 WebSocket 或 MQTT+UDP 传数据。你想学的每一块,它都有真实可读的实现摆在那。
它的目标和器赋开物完全一致。 作者把项目目标写得很直白:帮所有人理解 AI 硬件开发。这不是一个炫技 demo,而是一个被刻意做成"教材"的项目。我们要做的,是把这本教材拆开,一节一节讲给你听,再带你做出属于自己的那一台。
所以这套教程不重复造轮子,而是拆解它、读懂它、再带你做出自己的。
这是一份学习解读,不是搬运。 小智的代码版权归原作者及社区贡献者,遵循 MIT 协议开放。我们做的事是:讲清它的原理与数据流、在必要处引用关键片段并注明出处、带你理解每一块为什么这么设计。我们不复制粘贴整套代码冒充原创,也不夸大它的能力。任何与上游不一致的地方,一律以仓库最新版本为准;仓库地址见本页底部的开源引用块。动手前请先读免责声明。
它如何用到 L1-L5 的每一块知识
小智最适合当旗舰的地方,是它几乎把你在 L1 到 L5 学的每样东西都用上了。下面逐条对照——你会发现之前一节节单独练的招式,在这里全部串成了一套拳。
L1 基本功 → 选板、刷固件、跑起第一个程序。 你在点灯那节练的"写代码 → 编译 → 烧进芯片 → 芯片控制引脚"这条最底层链路,正是上手小智的第一步。小智基于 ESP-IDF(5.4 及以上)构建,比 Arduino 更接近底层,但跨过 L1 之后这道坎并不高。进入 L1 阶梯 看全部基本功。
L3 进阶通信 → 把语音送上云、收回结果。 小智用 WebSocket 维持一条和服务器的长连接来双向流式传语音;部分场景走 MQTT + UDP 的组合。这正对应 L3 连 WiFi 把设备联网、L3 MQTT 学消息协议、L3 Web 服务 理解设备与服务端怎么对话。没有 L3,小智的"嘴和耳朵"就连不到"大脑"。整条进阶通信见 L3 阶梯。
L4 语音与智能全栈 → 整个项目的心脏。 这是小智最核心、也最能体现"AI 硬件"的一块。唤醒词识别在本地芯片上跑(不联网也能"听到"你喊它);唤醒后,语音被 OPUS 编码、流式送到服务端做 ASR 转文字,文字喂给 大模型 生成回答,回答再经 TTS 合成成语音播回来。这一整条"唤醒 → ASR → LLM → TTS"就是 L4 阶梯 的主线。
L4 的 Agent 控硬件 → 让对话能"动手"。 小智通过 MCP 协议把硬件能力暴露给大模型:大模型不只会聊天,还能调用你定义的动作去点 LED、转舵机、联动智能家居。你说"开灯",模型理解意图后真的去执行——这是从"会说话的音箱"跨到"能干活的助手"的关键一跃。
L5 产品化 → 从能跑的 demo 到能用的东西。 当你想把面包板上的一团线,变成一个能放在桌上、有外壳、能量产的成品时,就进入了 L5 阶梯:稳定供电、PCB、外壳、固件量产烧录。小智社区里大量现成硬件,本身就是这一步的活样板。
一句话理清"你说一句话,盒子里发生了什么"
读懂小智,理解这条数据流比记住任何函数名都重要。把它当成一条流水线,从你开口到盒子回话,依次经过这几个工位:
本地收音。 麦克风通过 I2S 把你的声音变成数字音频,芯片在本地不停地听。
本地唤醒判断。 芯片就地判断这段声音里有没有唤醒词。没有,就丢掉、继续听(这一步不联网,也不上传,省流量也护隐私);有,盒子"醒来",屏幕亮起表情。
编码上传。 醒来后的语音被 OPUS 压缩编码,通过 WebSocket 长连接流式送到服务端——边说边传,不必等你说完。
服务端识别(ASR)。 服务器把音频流转成文字。
大模型思考(LLM)。 文字交给大模型,理解你的意图、生成回答的文本。如果你说的是"开灯"这类指令,模型会在这一步决定要调用哪个硬件动作。
合成回话(TTS)。 回答文本被合成成语音,再流式送回盒子播放;若涉及硬件动作,指令经 MCP 回到设备执行。
七个字概括:听 → 醒 → 传 → 识 → 想 → 说(→ 做)。你做这个项目的过程,本质就是把这条流水线的每个工位逐个搭起来、再接成一条线。后面每一篇拆解,都对应着这条流水线上的某一段。
不用一次学完五个阶梯再来。更聪明的走法是:先把 L1(点灯、刷固件)和 L3(联网)走通,能做出一个"联网后会上报数据"的小设备,再来啃小智的对话链路——那时你会发现 L4 的每一步都踩在你已经熟悉的地基上,学起来顺得多。完整路线见阶梯总览。
「从零做它」的分步路线
小智是个大项目,但拆开看就是八步,每步都有明确的产出和一个主要难点。这套教程会一步一篇带你走;这里先给你一张全景地图,让你知道自己在哪、下一步去哪。
第 1 步 · 选硬件。 从 70 多款支持的开发板里挑一块上手。推荐带 ESP32-S3 的板子(算力和内存更宽裕);想要 4G 联网而非 WiFi,可选带 ML307 模组的方案,ESP32-C3/P4 也在支持之列。 难点:别被型号绕晕——先看清自己要 WiFi 还是 4G、要不要屏,再对照清单挑。
第 2 步 · 刷固件。 装好 ESP-IDF(5.4 及以上)工具链,把小智固件编译、烧进板子,让它先能开机、连网、出现在你眼前。 难点:ESP-IDF 的环境配置比 Arduino 重,第一次容易卡在工具链上——耐心按官方步骤来,过了这关后面都顺。
第 3 步 · 打通音频 I/O。 让板子能用麦克风录到你的声音、用喇叭放出声音,这一段走的是 I2S 数字音频接口,音频用 OPUS 编码压缩后才好传输。 难点:I2S 的引脚和时钟配置容易接错或配错,先确认能录能放,再谈识别。
第 4 步 · 联网,建立 WebSocket 长连接。 让设备连上 WiFi,和服务端建起一条 WebSocket 双向通道,能把音频流推上去、把结果收回来。 难点:长连接的断线重连、网络抖动处理,是从"能连一次"到"稳定可用"的分水岭。
第 5 步 · 跑通对话链路。 把前面的环节接成一条线:本地唤醒 → 语音流上传 → 服务端 ASR → LLM → TTS → 语音流下发播放。第一次听到盒子答你话,就是在这一步。 难点:链路长、环节多,任何一段慢或错都会让体验"卡顿或听不懂",要学会分段定位问题。
第 6 步 · 自建后端,把"大脑"放回自己手里。
用配套的服务端项目 xinnan-tech/xiaozhi-esp32-server 在自己的机器或服务器上跑后端,它的 ASR / LLM / TTS 都是可插拔的——你可以换成不同的识别、模型、合成方案。
难点:服务端涉及更多后端知识,但好处是数据和模型都由你掌控,不再依赖别人的服务。
第 7 步 · 用 MCP 让它控硬件。 通过 MCP 协议把"开灯""转舵机""查状态"这类动作定义成大模型可调用的工具,让对话能真正驱动硬件。 难点:关键在于把"硬件动作"描述清楚给模型,让它在合适的时候调用——这是 Agent 思维,不是写死的 if-else。
第 8 步 · 做成产品。 加屏显表情、稳定供电、画 PCB、配外壳,把一团线收拾成一个能放桌上天天用的成品。 难点:从"实验室能跑"到"换个环境也能跑",靠的是 L5 的产品化功夫,急不得。
走完这八步,你手里就有一台真正属于你的、会唤醒会对话会动手的 AI 助手——并且每一块你都知道它为什么这么设计。
给新手的上手建议
这个项目大,但不该让它把你劝退。几条务实建议:
别上来就啃小智。 如果你连点灯和联网都没亲手做过,直接读小智源码只会一头雾水。先把 L1 点灯 和 L3 连 WiFi 跑通,建立"我能让一块板子按我的意思联网干活"的实感,再回来,体验天差地别。
先求"跑起来",再求"懂透"。 第一遍的目标是按教程把官方固件刷进去、连上现成服务、能对话——哪怕中间很多细节你还没懂。先有一个能动的东西在手,后面拆解每一段时才有参照物。
一段一段验证,别想着一口气全通。 录音能放了,再做识别;识别通了,再接大模型。每一段单独确认 OK,出问题时你才知道该往哪查,而不是面对一条全黑的链路干瞪眼。
常见疑问与避坑
"我必须从头读懂整个仓库的源码吗?" 不必,而且不建议。小智是个成熟的大项目,逐行硬读会把人劝退。正确的姿势是:先把它当黑盒跑通,再带着具体问题去读对应的那一小块。理解数据流(声音怎么进、怎么变成文字、怎么变成回答、怎么变回声音)比记住每个函数重要得多。
最常见的卡点,是把"读懂源码"当成"看懂每一行代码"。 这是新手最容易陷进去、也最容易放弃的坑。读大型开源项目的现代姿势是:用 AI 当你的"代码讲解员"——把陌生的文件、函数贴给它,让它解释这段在整条链路里负责什么、为什么这么写。后面有专门一节教你怎么"用 AI 读懂小智源码"。把读不懂的大项目拆给 AI 讲,是 AI 时代硬件人真正该练的硬技能,而不是逼自己当人肉编译器。
"我没有麦克风/喇叭/特定开发板,能做吗?" 小智支持 70 多款硬件,选购前先对照支持清单,挑一块带麦克风和喇叭、社区验证过的板子,少踩坑。别为了省小钱买来路不明的杂牌板,调试时浪费的时间远比省下的钱贵。
"必须自建服务器吗?"
不必一开始就建。你可以先用现成服务把对话跑通,体验完整效果;等你想掌控数据、换模型、或想省成本时,再上 xinnan-tech/xiaozhi-esp32-server 自建后端。把"自建"当成进阶选项,而不是入门门槛。
"我做的会不会和原版一模一样,算抄吗?" 你学的是它的设计和原理,做出来的是你自己的实现与配置。我们引用、解读、注明出处,遵守 MIT 协议;这是合法且被鼓励的学习方式。怕越界就记住一条:理解原理、标注来源、不冒充原创。
小结 · 下一步
读到这里,你应该已经清楚三件事:小智是什么(一个完整、开源、可学的 AI 语音硬件),它为什么值得当旗舰(开源干净、链路完整、目标契合),以及从零做它要走哪八步、每步对应你学过的哪块知识。
它把 L1 到 L5 的零散招式,第一次串成了一整套真实可用的东西——这也是为什么我们把它放在所有项目的最前面。
下一步:如果前面的阶梯还没走,先去把 L1 点灯 和 L3 连 WiFi 跑通;已经走过的,就从"选硬件"那一篇开始,正式动手做你的第一台小智。需要回看全局,随时翻项目总览和阶梯路线。