AI小智版(代码开源 链接)
介绍
本文档介绍了通过 X09 模组接入小智 AI 系统,成功实现 AI 玩具的语音交互功能。该设备不仅能播报新闻,还具备唱歌、讲故事、回答问题、控制设备等多样化能力,为用户提供丰富的智能交互体验,满足娱乐、生活辅助等多场景需求。
系统框图
-
用户上行数据流:AI 客户端通过麦克风采集音频流,经客户端处理后通过 WebSocket 上传至 AI 服务端。
-
用户下行数据流:服务器利用 ASR 转文字供LLM大模型处理,输出经TTS生成音频流返回客户端,客户端通过喇叭播放。
效果展示
功能说明
-
按键
-
长按:录音进行对话
-
短按:打断音频播放 或者 连接服务器
-
SPI屏幕
屏幕通过监听不同类型的消息来更新显示内容,如下图:
- 图标状态栏:显示电量、表情、网络状态
- 工作状态栏:显示网络连接、录音 / 播放状态
- 字幕显示:显示从AI服务器获取的文字内容
-
AI灯
- 快闪:正在对话
- 熄灭:停止对话
-
网络灯
- 慢闪:4G网络连接成功
- 快闪:连接服务器中
- 常量:服务器连接成功
- 熄灭:服务器断开连接
-
音频
- 上行: 录音并将录音数据转成opus数据流
- 下行:播放服务器返回的opus数据流
使用说明
硬件搭建
外接LCD屏幕连接对应管脚表格如下:
SPI屏幕管脚 | LCD底座管脚号 | 功能说明 |
---|---|---|
VCC | 1 | 屏幕供电 |
LCD_CS | 2 | 屏幕CS片选线 |
LCD_RESET | 3 | 屏幕RESET |
LCD_D0 | 4 | 屏幕时钟线 |
LCD_DC | 5 | 屏幕命令/数据选择 |
LCD_D1 | 6 | 屏幕数据线 |
LCD底座管脚号说明:
完整接线效果,如图所示:
固件下载
连接小智AI服务器
用户需访问小智AI官网并登录连接服务器
小智官网登陆网址https://xiaozhi.me/login
登录之后如图所示界面:
配置角色
用户可以新建智能体,并配置角色信息
添加设备
角色配置完成后,需输入设备码绑定设备,参考视频如下:
绑定成功后重启设备即可正常使用
基本原理介绍
通信协议
WebSocket 协议
WebSocket总体流程如下图所示:
HTTP协议
HTTP 协议用于设备与服务器之间的通信,获取验证码。
音频流数据
用户通过麦克风输入声音,设备端采集音频流,经 “Audio 服务 + ES8311” 处理。处理后的音频流通过 WebSocket 上传至小智 AI 服务器。服务器处理后,智能体下行音频流经 WebSocket 返回,设备接收后由 “Audio 服务 + ES8311” 播放,从喇叭输出。
开发自己的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
文件,其他根据情况修改既可以。