一、项目简介

小智AI聊天机器人是一款基于ESP32开发板智能语音交互设备,旨在以低成本、高扩展性的方式实现AI语音对话功能。项目通过集成语音识别(ASR)、自然语言处理(NLP)和语音合成(TTS)技术,结合通义千问(Qwen)、DeepSeek等大语言模型(LLM),支持多语言实时对话与个性化角色设定(如“幽默助手”、“温柔女友”)。硬件方面,设备兼容Wi-Fi/4G联网、OLED/LCD屏幕、声纹识别(SenseVoice)及离线唤醒(ESP-SR)模块,用户可通过3D打印外壳和模块化设计快速搭建原型。项目采用MIT开源协议,提供一键烧录固件(如`xiaozhi-esp32`),无需编程即可运行,同时支持进阶开发者自定义功能。凭借低门槛开发、灵活AI模型集成及丰富的硬件生态,小智AI聊天机器人既适合教育领域的编程教学与多语种学习,也可应用于智能家居控制、情感陪伴及商业客服场景。

二、已实现功能

Wi-Fi / ML307 Cat.1 4G

BOOT 键唤醒和打断,支持点击和长按两种触发方式

离线语音唤醒 ESP-SR

流式语音对话(WebSocket 或 UDP 协议)

支持国语、粤语、英语、日语、韩语 5 种语言识别 SenseVoice

声纹识别,识别是谁在喊 AI 的名字 3D Speaker

大模型 TTS(火山引擎 或 CosyVoice)

大模型 LLM(Qwen, DeepSeek, Doubao)

可配置的提示词和音色(自定义角色)

短期记忆,每轮对话后自我总结

OLED / LCD 显示屏,显示信号强弱或对话内容

支持 LCD 显示图片表情

支持多语言(中文、英文)

三、已支持的开源硬件

立创·实战派 ESP32-S3 开发板

乐鑫 ESP32-S3-BOX3

M5Stack CoreS3

AtomS3R + Echo Base

AtomMatrix + Echo Base

神奇按钮 2.4

微雪电子 ESP32-S3-Touch-AMOLED-1.8

LILYGO T-Circle-S3

虾哥 Mini C3

Moji 小智AI衍生版

璀璨·AI吊坠

无名科技Nologo-星智-1.54TFT

SenseCAP Watcher

四、开发环境
Cursor 或 VSCode
安装 ESP-IDF 插件,选择 SDK 版本 5.3 或以上
Linux 比 Windows 更好,编译速度快,也免去驱动问题的困扰
使用 Google C++ 代码风格,提交代码时请确保符合规范
五、工作原理
设备注册
在开发板初始化阶段(如在compact_wifi_board.cc中),各种物联网设备通过ThingManager注册到系统中
设备描述
系统将设备描述信息(包括名称、属性、方法等)通过通信协议(如MQTT或WebSocket)发送给AI服务器
用户交互
用户通过语音与小智AI对话,表达控制物联网设备的意图
命令执行
AI服务器解析用户意图,生成控制命令,通过协议发送回ESP32,由ThingManager分发给对应的设备执行
状态更新
设备执行命令后,状态变化会通过ThingManager收集并发送回AI服务器,保持状态同步
六、例子

灯(Lamp)

灯是一个简单的物联网设备示例,通过GPIO控制LED的开关状态:

class Lamp : public Thing {private:    gpio_num_t gpio_num_ = GPIO_NUM_18;  // GPIO引脚    bool power_ = false;                 // 灯的开关状态
public:    Lamp() : Thing("Lamp""一个测试用的灯") {        // 初始化GPIO        InitializeGpio();
        // 定义属性:power(表示灯的开关状态)        properties_.AddBooleanProperty("power""灯是否打开", [this]() -> bool {            return power_;        });
        // 定义方法:TurnOn(打开灯)        methods_.AddMethod("TurnOn""打开灯", ParameterList(), [this](const ParameterList& parameters) {            power_ = true;            gpio_set_level(gpio_num_, 1);        });
        // 定义方法:TurnOff(关闭灯)        methods_.AddMethod("TurnOff""关闭灯", ParameterList(), [this](const ParameterList& parameters) {            power_ = false;            gpio_set_level(gpio_num_, 0);        });    }};
用户可以通过语音指令如”小智,请打开灯”来控制灯的开关。

扬声器(Speaker)

扬声器控制实现了音量调节功能:
class Speaker : public Thing {public:    Speaker() : Thing("Speaker""扬声器") {        // 定义属性:volume(当前音量值)        properties_.AddNumberProperty("volume""当前音量值", [this]() -> int {            auto codec = Board::GetInstance().GetAudioCodec();            return codec->output_volume();        });
        // 定义方法:SetVolume(设置音量)        methods_.AddMethod("SetVolume""设置音量"ParameterList({            Parameter("volume""0到100之间的整数", kValueTypeNumber, true)        }), [this](const ParameterList& parameters) {            auto codec = Board::GetInstance().GetAudioCodec();            codec->SetOutputVolume(static_cast<uint8_t>(parameters["volume"].number()));        });    }};

 

用户可以通过语音指令如”小智,把音量调到50″来控制扬声器的音量。

七、UI展示

版权声明:
1、本网站名称:帝企吧
2、本站永久网址:https://www.diqiba.com
3、本网站的文章部分内容可能来源于网络及作者投稿,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
4、本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报。
6、本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
7、本站所有资源来源于互联网,仅用于学习及参考使用,切勿用于商业用途,如产生法律纠纷本站概不负责! 8、资源除标明原创外均来自网络转载,版权归原作者所有,若侵犯到您权益请联系我们删除,我们将及时处理! 9、若您需使用非免费的软件或服务,请购买正版授权并合法使用!