AI小智(唤醒版)¶
介绍¶
和AI小智(按键版)比较, 增加了语音唤醒芯片支持AEC(回声消除)和端侧VAD(语音活动检测),可实现关键词(小智同学)唤醒。能为用户带来流畅的 AI 对话体验 。
功能说明¶
按键版和唤醒版硬件功能对比
| AI小智(唤醒版) | AI小智(按键板) | |
|---|---|---|
| 唤醒芯片 | 支持 | 不支持 |
| KEY按键 | 支持 | 支持 |
| PK按键 | 支持 | 不支持 |
| LCD | 不支持 | 支持 |
| NET LED | 不支持 | 支持 |
| AI LED | 支持 | 支持 |
-
KEY按键
- 按下开始录音, 再按一下录音停止录音
-
PK按键
- 长按开关机
- 短按调节音量
-
AI灯
-
灯常量:IDLE状态,等待说话/指令
-
灯闪烁:对话过程中
-
灯灭:服务器断开/进入睡眠
-
-
音频
- 上行: 录音并将录音数据转成opus数据流
- 下行:播放服务器返回的opus数据流
-
唤醒芯片
-
关键词唤醒
-
包含codec功能,录音和播放
-
固件下载¶
- 点击获取编译好的固件
- 自己开发固件,参考入门篇开发入门。编译命令为`.\build.bat YM310_X09S.U62 ai_xiaozhi_wakeup
连接小智AI服务器¶
用户需访问小智AI官网并登录连接服务器
小智官网登陆网址https://xiaozhi.me/login
登录之后如图所示界面:

配置角色
用户可以新建智能体,并配置角色信息


基本原理介绍¶
通信协议¶
WebSocket 协议¶
WebSocket总体流程如下图所示:

HTTP协议¶
HTTP 协议用于设备与服务器之间的通信,获取验证码。
音频流数据¶
用户通过麦克风输入声音,设备端采集音频流,经 “Audio 服务 + 唤醒芯片” 处理。处理后的音频流通过 WebSocket 上传至小智 AI 服务器。服务器处理后,智能体下行音频流经 WebSocket 返回,设备接收后由 “Audio 服务 + 唤醒芯片” 播放,从喇叭输出。
唤醒功能¶
唤醒流程状态机迁移:

IDLE状态: 录音/播放结束后,进入IDLE状态。
sleep: IDLE状态超过60秒, 进入sleep状态, 此时必须通过唤醒词(小智同学)才能触发录音功能,开始对话。
非sleep状态:可以用任意语音唤醒/打断对话, 开始新的对话。
开发自己的AI玩具¶
准备AI板子开发环境¶
- 硬件清单可以参考上文中的
硬件搭建部分 - AI服务器
- yopen源码SDK库(YOPEN SDK链接,已经包含了开源的小智AI 代码)
搭建AI服务器¶
-
若已经有AI服务器,请跳过该步骤
-
若还没有服务器,可以参考开源服务器:xiaozhi-esp32-server。
小智AI源码介绍¶
小智源码在components/demo/ai_xiaozhi目录下,主要包含以下文件:
| 源码 | 功能说明 |
|---|---|
| xiaozhi_main.c | 主要功能代码,串联按键、显示、音频播放等逻辑 |
| xiaozhi_server.c | 连接AI小智服务器,完成音频数据收发,以及AI接收服务器发送过程来的语音处理文字问题 |
| xiaozhi_display.c | 屏幕状态栏更新、文字显示(如不需要此功能,通过宏关闭即可) |
| xiaozhi_audio.c | 完成录音、播放功能 |
| xiaozhi_ota.c | 验证码接收功能,OTA升级(待待开发) |
| xiaozhi_vbat.c | 电源管理功能 |
让AI板子连接服务器¶
连接服务器主要包括以下两个部分:
- 1、数据传输协议,确定AI板子和AI服务器之间的传输协议
- 2、音频编码(录音)格式,音频解码(播放)格式
如果使用的是小智AI服务器,小智AI源码基本上不用修改。如果使用的是其他服务器,需要根据服务器使用的协议修改xiaozhi_server.c文件的逻辑,以及xiaozhi_audio.c文件,其他根据情况修改既可以。
## 演示视频