imx6ull-speaker ⭐
本页由项目自动归档生成,源码与最新进展以 GitHub 仓库为准。
项目简介
一份从硬件到代码的完整开发指南与实现,基于正点原子 i.MX6ULL ARM 开发板 + Python + DeepSeek API(可替换为 Hermes)+ 百度云端语音(ASR/TTS),搭建本地不跑模型、只做编排与 I/O 的智能语音助手。开发板本身算力有限,全链路为:本地唤醒词检测 → 百度 ASR → DeepSeek 生成回复 → 百度 TTS 播报。仓库另含向 ESP32-S3 迁移的多个子项目与小智固件探索。
技术栈
| 维度 | 技术 |
|---|---|
| 主要语言/框架 | Python 3(板端编排)、C/C++(ESP32-S3 固件)、Node.js / TypeScript、Shell、Docker |
| 关键依赖/库 | requests 2.31.0、urllib3 1.26.18(锁版本,详见 KERNEL4.1.15.md)、baidu-aip 4.16.11;DeepSeek / Hermes API 客户端 |
| 数据存储 | 无持久库(配置 config.json;日志 /var/log/speaker.log) |
| 运行/部署 | i.MX6ULL ARM Linux 运行 main.py;配套 ESP32-S3 固件(ESP-IDF);网络 / 部署见 docs/ |
核心功能 / 亮点
- 主程序状态机(
main.py):待机 → 录音 → ASR → 对话 → 合成 → 播放,支持键盘 / GPIO / HTTP 三种触发(KeyboardTrigger/GPIOTrigger/HTTPTrigger) - 云端语音链路:
audio_utils.py录音与播放,百度 AIP 做 ASR/TTS;deepseek_client.py调用 LLM(可切 Hermes,见HERMES_INTEGRATION.md) - 唤醒词:
wakeword_local.py本地模板匹配、wakeword_oww.py(openWakeWord)、wakeword_service.py远程唤醒词服务、wakeword_trigger.py触发(wakeword_templates/为特征模板) - 子项目:
esp32s3/(当前主开发固件,ESP-IDF)、xiaozhi_new/(精简小智固件)、xiaozhi/(Fork 小智 + 自建服务)、billiard-watch/(台球手表,独立) - 配网与代理:
wifi_setup.py、proxy_server.py(Edge TTS 代理,绕大陆地理限制) - 文档体系:
docs/下 NETWORK / KERNEL4.1.15 / WAKEWORD / MAC 等,覆盖联网、老内核适配、唤醒词、Mac 调试
目录结构
1 | imx6ull-speaker/ |
相关链接
- GitHub 仓库:imx6ull-speaker
补充:一条全云端语音链路,和它最容易卡住的地方
这个项目的语音交互是纯云端组合,i.MX6ULL 本身不跑模型,只做编排和 I/O:
本地唤醒词检测 → 百度 ASR 转文本 → DeepSeek 生成回复 → 百度 TTS 播报
这样拆的好处是开发板算力不用考虑,代价是每一环都依赖网络。所以仓库里 DEPLOYMENT.md、NETWORK.md、BOARD_PROXY_DEPLOYMENT.md、QUICKSTART_PROXY.md、PROXY_TEST_RESULTS.md 这几份文档占了很大比重——「开发板怎么访问外网」是这个项目真正的拦路虎,不是语音识别准不准。嵌入式 + 云端 API 的组合,八成时间花在打通网络。
其他几个点:
- **
HERMES_INTEGRATION.md**:记录了用 Hermes 替代 DeepSeek 的方案。说明 LLM 这一层一开始就是按可替换设计的,没绑死在一家。 - 内含 ESP32-S3 小智固件子系统(
xiaozhi/、esp32s3/):这部分后来独立成了配置指南站点,和主板的 Python 编排层是两套东西,一个管固件一个管流程。 - **
KERNEL4.1.15.md**:涉及内核层适配,说明不只是写应用层脚本,板子本身的驱动和系统版本也得对齐。 - **
billiard-watch/**:台球 Watch 子系统,是这条语音链路在具体场景上的一次落地尝试。