AI-Chatbox 是一个基于 ESP32S3 开发板的语音交互项目。用户通过语音与大模型(LLM)对话,设备将语音转为文字,发送给大模型,获取回答后可进一步转为语音播报。项目使用 Rust 语言开发,集成了 Vosk 语音识别工具,适合不方便使用手机应用的人群,例如儿童、老年人或视障人士。硬件以 XIAO ESP32S3 Sense 为主,结合语音编码硬件,软件通过开源代码托管在 GitHub。项目目标是提供便捷的语音交互体验,适合嵌入式开发爱好者和智能硬件开发者。
功能列表
- 语音唤醒与命令识别 :支持唤醒词“hi, 乐鑫”和命令词“我有个问题”触发录音。
- 语音转文字 :使用 Vosk 工具将录制的 WAV 音频转换为文字,支持中文识别。
- 大模型交互 :通过 DeepSeek API 发送文字问题,获取智能回答。
- 日志记录 :支持实时日志查看,方便调试和监控设备状态。
- 跨设备访问 :通过 Flask 搭建 REST 服务,允许局域网内其他设备调用语音转文字功能。
- 嵌入式优化 :Rust 代码针对嵌入式设备优化,配置 512 最大生成 token,平衡性能与资源。
使用帮助
安装与配置
- 准备硬件
需要一块 XIAO ESP32S3 Sense 开发板,带麦克风和语音编码功能。外接语音编码硬件可增强音频处理能力。确保开发板连接 SD 卡,用于存储语音模型。 - 配置开发环境
- 安装 Rust on ESP 环境,参考官方指南(Rust on ESP)。
- 安装 Python 环境,用于运行 Vosk 语音转文字服务。
- 下载 Vosk 中文模型(
vosk-model-cn-0.22.zip
)从 Vosk 官网,解压到本地目录。 - 将语音模型文件(
mn7_cn
、nsnet2
、vadnet1_medium
、wn9_hilexin
)拷贝到 SD 卡根目录。
- 安装依赖
运行以下命令安装 Python 依赖:pip install vosk flask flask-cors
确保 Rust 环境已配置,进入 ESPUP 环境:
source $HOME/export-esp.sh
- 编译与上传固件
- 克隆项目仓库:
git clone https://github.com/paul356/ai-chatbox.git
。 - 进入项目目录,运行编译命令:
cargo build
- 编译成功后,使用以下命令将固件上传到 ESP32S3 开发板:
cargo espflash flash -p /dev/ttyACM0 --flash-size 8mb
- 设置环境变量(Wi-Fi 和 DeepSeek API 密钥):
export WIFI_SSID=<your-ssid> export WIFI_PASS=<your-password> export LLM_AUTH_TOKEN=<your-deepseek-token>
- 克隆项目仓库:
- 运行语音转文字服务
- 在
vosk-model-cn-0.22
目录的上一级运行:python vosk_server.py
- 服务启动后,监听
http://0.0.0.0:5000/transcribe
,可接受 WAV 文件并返回文字。
- 在
- 测试服务
使用以下命令测试语音转文字服务:curl -X POST -F "file=@record.wav" http://127.0.0.1:5000/transcribe
操作流程
- 启动设备
连接开发板,运行固件后通过以下命令查看日志:cargo espflash monitor
- 语音交互
- 说出唤醒词“hi, 乐鑫”激活设备。
- 说出命令词“我有个问题”进入录音模式。
- 说出问题,设备检测到 2 秒静音后自动停止录音。
- 语音通过 Vosk 服务转为文字,发送至 DeepSeek API,获取回答并记录在日志中。
- 查看日志
日志显示设备状态、语音识别结果和 LLM 回答。例如,提问“大模型是什么东西”可能返回详细的模型定义和功能说明。
注意事项
- 语音清晰 :Vosk 模型较小,需清晰发音以提高识别准确率。
- 网络连接 :设备需连接 Wi-Fi 以访问 DeepSeek API。
- 模型存储 :确保 SD 卡有足够空间存储语音模型(约数百 MB)。
- 调试 :通过日志检查语音转文字和 LLM 交互是否正常,错误信息会记录为
Error:
开头。
应用场景
- 智能助手
用户通过语音与设备交互,获取知识解答或任务协助,适合儿童或老年人使用。例如,儿童可询问“太阳为什么会发光”,设备返回通俗易懂的回答。 - 无屏设备交互
视障人士或不方便使用手机的用户可通过语音操作,完成信息查询或日常对话。 - 嵌入式开发实验
开发者可基于此项目学习 Rust 在嵌入式设备上的应用,探索语音识别与大模型的集成。 - 教育与学习
学生可通过语音提问学术问题,设备连接大模型提供专业解答,适合课堂或自学场景。
QA
- Vosk 模型支持哪些语言?
当前项目使用vosk-model-cn-0.22
,主要支持中文识别。Vosk 官网提供其他语言模型,可根据需要替换。 - 如何提高语音识别准确率?
确保发音清晰,避免背景噪音。使用更高性能的麦克风或升级到更大模型(如vosk-model-cn-0.22-large
)可提升效果。 - DeepSeek API 密钥如何获取?
访问 DeepSeek 官网 注册并申请 API 密钥,将密钥配置为环境变量LLM_AUTH_TOKEN
。 - 设备是否支持离线运行?
语音转文字服务(Vosk)可离线运行,但 LLM 交互需联网访问 DeepSeek API。