imx6ull-speaker ⭐ · 项目介绍

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
2
3
4
5
6
7
8
9
10
imx6ull-speaker/
├── main.py # 主状态机(唤醒 → 录音 → ASR → LLM → TTS → 播放)
├── audio_utils.py # 录音 / 播放
├── deepseek_client.py # LLM 客户端(可切 Hermes)
├── wakeword_*.py # 唤醒词(本地 / oww / 服务 / 触发)
├── wifi_setup.py proxy_server.py
├── esp32s3/ xiaozhi_new/ xiaozhi/ billiard-watch/ # 固件子项目
├── wakeword_templates/ # 唤醒词特征模板
├── docs/ tests/ scripts/ logs/
└── README.md # 完整开发指南

相关链接

补充:一条全云端语音链路,和它最容易卡住的地方

这个项目的语音交互是纯云端组合,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 子系统,是这条语音链路在具体场景上的一次落地尝试。