今天给大家带来重磅更新:CanMV K230 MicroPython 小智语音助手完整例程正式发布!
无需复杂C代码开发,依托MicroPython极简语法,在K230/K230D开发板快速搭建带IoT设备控制、人脸唤醒的本地语音助手,云端对话、TTS播报、硬件联动一站式搞定。


一、方案整体概述
本次发布的小智语音助手例程,专为CanMV K230平台打造,基于WebSocket连接云端小智服务,完整覆盖语音采集、ASR语音识别、LLM大模型对话、TTS语音播放、人脸唤醒、IoT设备控制全链路能力。 例程源码路径:resources/examples/26-xiaozhi,烧录至SD卡即可在CanMV VSCode 插件直接运行。
硬件适配清单
主控:CanMV K230 / K230D开发板
外设:摄像头、板载麦克风、扬声器/耳机
交互按键:默认GPIO21(低电平触发录音)
状态指示灯:默认GPIO52,可在代码内自定义修改
网络要求
开发板接入WiFi/LAN网络,可正常访问云端服务地址api.tenclass.net,首次运行需完成设备网页激活。
二、三步快速上手运行
设备激活(首次运行必做)
在CanMV插件运行/sdcard/examples/26-xiaozhi/run.py;
查看串口日志获取设备激活码;
浏览器打开官网 https://xiaozhi.me/ 输入激活码完成绑定;
激活成功后重启脚本,即可正常建立云端连接。
启动程序
# 基础启动,使用默认按键、LED引脚main()# 自定义硬件引脚启动main(key_pin=21, led_pin=52)
修改 run.py 顶部KEY_PIN、LED_PIN参数,适配自有硬件接线。
标准交互流程
等待界面显示等待按键唤醒后,再进行操作;
按住对话按键录音,松开自动上传语音至云端;
云端返回文本+语音,板端自动播放TTS字幕;
支持人脸注册唤醒,识别到已录入人脸无需按键即可对话。
⚠️ 重要提示:网络连接、设备激活未完成前按键,会出现连接报错,耐心等待就绪状态再交互。
三、模块化代码架构
二次开发零门槛
整套例程分层解耦,每个模块职责清晰,开发者可按需裁剪、新增自定义硬件能力:
run.py # 程序入口、UI主循环、资源回收xiaozhiclient.py # 业务核心:设备激活、会话管理、消息分发websocket_client.py # WSS长连接、音频二进制帧收发audio_manager.py # 录音采集、Opus编解码、TTS播放缓冲队列config.py # 设备UUID、服务器地址、全局配置管理lvgl_ai.py # LVGL可视化界面、摄像头人脸渲染face_reg_rec.py # 人脸检测、人脸注册唤醒逻辑iot/ # IoT/MCP设备抽象层├── thing_manager.py # 设备统一管理、云端命令分发└── things/speaker.py # 示例硬件:扬声器音量控制
核心数据流
按键录音 → Opus编码上传云端 → 云端ASR+LLM+TTS处理 → 下发语音文本 → 板端音频播放+UI状态同步; 云端下发IoT控制指令 → ThingManager调度硬件执行,同步设备状态回传。
四、IoT/MCP硬件控制能力亮点
本套例程原生支持MCP工具调用与IoT设备联动,快速实现语音控制硬件:
能力自动上报:握手消息声明MCP支持,云端自动识别板端可控设备;
标准化设备模型:统一Thing抽象类,新增传感器、电机、屏幕仅需继承扩展;
语音下发指令执行:通过云端对话直接下发控制命令,例如语音调节扬声器音量;
状态实时回传:硬件参数变更后自动同步状态至云端。
新增自定义硬件参考模板:iot/things/speaker.py,注册至ThingManager即可使用。
五、界面状态说明
快速定位运行问题
界面状态文案 | 对应含义 |
网络连接中,请稍后 | WebSocket未就绪,请勿按键 |
等待按键唤醒 | 系统就绪,可正常对话 |
等待您的指令 | 正在录音,保持按住按键说话 |
获取指令结束 | 松开按键,语音上传中 |
说话中/说话结束 | TTS语音播放进程状态 |
六、开发注意事项
散热与供电:人脸检测+音频解码算力占用较高,长时间运行保证稳定供电与散热;
网络环境:首次激活依赖HTTPS/WSS接口,防火墙、代理请勿拦截域名;
程序退出:CanMV有停止运行按键,按下之后系统自动回收摄像头、音频、网络资源;
存储依赖:SD卡需完整存放字体、表情等UI资源,缺失会导致界面异常。
七、开发文档&源码获取
完整技术讲解文档:https://www.kendryte.com/k230_canmv/zh/main/example/xiaozhi/xiaozhi.html
源码仓库路径:resources/examples/26-xiaozhi