Skip to content

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底座管脚号说明:

完整接线效果,如图所示:

固件下载

  • 固件1

  • 固件2【固件1无法绑定设备情况下,再用固件2】

  • 自己开发固件,参考入门篇开发入门。编译命令为.\build.bat YM310_X09S.U62 ai_xiaozhi

连接小智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文件,其他根据情况修改既可以。