# Reachy Mini Home Assistant Voice Assistant - 项目需求文档 ## 1. 项目概述 ### 1.1 项目目标 开发一个基于 Reachy Mini 机器人的 Home Assistant 语音助手应用,该应用能够: - 通过语音与用户交互 - 集成 Home Assistant 智能家居系统 - 展现丰富的表情和动作 - 支持离线唤醒词检测 - 提供低延迟的语音响应 ### 1.2 目标用户 - Home Assistant 用户 - Reachy Mini 机器人拥有者 - 智能家居爱好者 - 机器人开发者 ### 1.3 应用场景 - 家庭语音控制中心 - 智能家居交互界面 - 陪伴型机器人助手 - 教育和娱乐平台 ## 2. 功能需求 ### 2.1 核心功能 #### FR-1: 音频输入 **描述**: 系统必须能够从 Reachy Mini 的 4 麦克风阵列采集音频数据。 **详细要求**: - 采样率: 16kHz - 声道: 单声道 - 格式: 16-bit PCM (little-endian) - 块大小: 1024 样本 - 支持回声消除 - 支持自动设备检测 **验收标准**: - 能够持续录制音频流 - 音频质量清晰,无明显噪音 - 延迟 < 100ms #### FR-2: 音频输出 **描述**: 系统必须能够通过 Reachy Mini 的 5W 扬声器播放音频。 **详细要求**: - 采样率: 16kHz - 声道: 单声道 - 支持音量控制 - 支持播放队列管理 - 支持音频淡入淡出 **验收标准**: - 音频播放清晰无失真 - 能够平滑切换音频 - 支持同时播放多个音频流(混音) #### FR-3: 唤醒词检测 **描述**: 系统必须能够检测预定义的唤醒词。 **详细要求**: - 支持 microWakeWord 模型 - 支持 openWakeWord 模型 - 支持自定义唤醒词 - 检测延迟 < 500ms - 准确率 > 95% - 支持多个唤醒词同时激活 - 支持冷却期(防止重复触发) **验收标准**: - 在安静环境下准确率 > 95% - 在中等噪音环境下准确率 > 90% - 假阳性率 < 1% #### FR-4: 语音转文字 (STT) **描述**: 系统必须能够将用户的语音转换为文字。 **详细要求**: - 使用 Whisper 引擎 - 支持多种语言(至少英语) - 转换延迟 < 2s - 准确率 > 90% - 支持实时转录 - 支持离线模式 **验收标准**: - 在标准语音下准确率 > 90% - 在口音较重的情况下准确率 > 80% - 转换时间 < 2s #### FR-5: 文字转语音 (TTS) **描述**: 系统必须能够将文字转换为自然的语音输出。 **详细要求**: - 使用 Piper TTS 引擎 - 支持多种语音模型 - 语音自然流畅 - 合成延迟 < 1s - 支持语速调节 - 支持音调调节 **验收标准**: - 语音清晰可懂 - 语音自然度评分 > 4/5 - 合成时间 < 1s #### FR-6: 头部运动控制 **描述**: 系统必须能够控制 Reachy Mini 的头部运动。 **详细要求**: - 支持 6 自由度运动 - 支持点头、摇头、转头 - 支持平滑运动插值 - 运动延迟 < 100ms - 支持运动队列管理 - 支持优先级控制 **验收标准**: - 运动平滑无抖动 - 能够精确控制角度 - 运动响应时间 < 100ms #### FR-7: 天线控制 **描述**: 系统必须能够控制 Reachy Mini 的 2 个天线。 **详细要求**: - 支持独立控制左右天线 - 支持天线动画 - 运动范围: -1.5 到 1.5 弧度 - 运动延迟 < 100ms **验收标准**: - 天线运动流畅 - 能够表达不同情绪 #### FR-8: 表情系统 **描述**: 系统必须能够播放预定义的表情动作。 **详细要求**: - 支持至少 5 种基本表情(高兴、悲伤、惊讶、思考、愤怒) - 表情持续时间可配置 - 支持表情混合 - 表情切换平滑 **验收标准**: - 表情清晰可识别 - 表情切换流畅 - 表情时长符合预期 #### FR-9: ESPHome 通信 **描述**: 系统必须通过 ESPHome 协议与 Home Assistant 通信。 **详细要求**: - 实现 ESPHome 协议服务器 - 监听端口: 6053 - 支持语音事件(唤醒词、TTS 开始/结束、STT 结果) - 支持双向音频流传输(到 Home Assistant 和从 Home Assistant) - 支持 mDNS 服务发现 - 支持设备信息查询 **验收标准**: - 能够被 Home Assistant 自动发现 - 能够接收和发送语音事件 - 能够传输双向音频流 - 连接稳定,断线自动重连 #### FR-10: 配置管理 **描述**: 系统必须提供灵活的配置管理功能。 **详细要求**: - 支持配置文件(JSON 格式) - 支持环境变量 - 支持命令行参数 - 支持运行时配置更新 - 提供默认配置 **验收标准**: - 配置加载正确 - 配置更新生效 - 配置错误有明确提示 ### 2.2 扩展功能 #### EF-1: 面部跟踪 **描述**: 系统能够跟踪用户面部,使机器人面向用户。 **详细要求**: - 使用摄像头捕获视频 - 使用 MediaPipe 或 YOLO 进行人脸检测 - 控制头部转向人脸方向 - 跟踪延迟 < 200ms **验收标准**: - 能够准确检测人脸 - 能够平滑跟踪人脸 - 跟踪延迟 < 200ms #### EF-2: 舞蹈系统 **描述**: 系统能够播放预定义的舞蹈动作。 **详细要求**: - 支持至少 3 种舞蹈 - 支持舞蹈队列 - 支持舞蹈中断 - 舞蹈动作流畅 **验收标准**: - 舞蹈动作流畅 - 舞蹈切换平滑 - 能够中断当前舞蹈 #### EF-3: Web UI **描述**: 系统提供基于 Gradio 的 Web 用户界面。 **详细要求**: - 显示实时状态 - 提供配置界面 - 显示日志信息 - 支持远程控制 - 响应式设计 **验收标准**: - 界面友好易用 - 实时更新状态 - 配置修改生效 #### EF-4: 摄像头功能 **描述**: 系统能够使用 Reachy Mini 的摄像头。 **详细要求**: - 捕获实时视频流 - 支持图像处理 - 支持视觉识别 - 分辨率: 640x480 或更高 **验收标准**: - 视频流流畅(> 15 FPS) - 图像清晰 - 能够识别基本物体 ## 3. 技术需求 ### 3.1 硬件需求 #### HR-1: Reachy Mini 机器人 - 型号: Reachy Mini 或 Reachy Mini Lite - 麦克风: 4 麦克风阵列 - 扬声器: 5W 扬声器 - 摄像头: 广角摄像头 - 运动系统: 6 自由度头部运动 - 天线: 2 个动画天线 #### HR-2: 计算设备 - 处理器: Raspberry Pi 4 或更高(内置)或外接计算设备 - 内存: 最少 4GB(推荐 8GB) - 存储: 最少 10GB 可用空间 - 网络: 稳定的网络连接(无线版本) ### 3.2 软件需求 #### SR-1: 操作系统 - Linux (Raspberry Pi OS) - macOS - Windows (实验性支持) #### SR-2: Python 环境 - Python 版本: 3.8 或更高(推荐 3.11+) - 虚拟环境: venv 或 conda #### SR-3: 依赖库 - reachy-mini: Reachy Mini SDK - sounddevice: 音频设备访问 - pymicro-wakeword: microWakeWord 唤醒词检测 - pyopen-wakeword: openWakeWord 唤醒词检测 - openai-whisper: Whisper STT 引擎 - piper-tts: Piper TTS 引擎 - aioesphomeapi: ESPHome 协议实现 - zeroconf: mDNS 服务发现 - gradio: Web UI 框架 - numpy: 数值计算 - scipy: 科学计算 ### 3.3 网络需求 #### NR-1: 网络连接 - 有线连接: USB-C 或 Ethernet - 无线连接: Wi-Fi - 带宽: 最少 1 Mbps - 延迟: < 50ms(本地网络) #### NR-2: 端口 - ESPHome 服务器端口: 6053 - Gradio Web UI 端口: 7860 - Reachy Mini SDK 端口: 8000(如果使用 REST API) ## 4. 非功能性需求 ### 4.1 性能需求 #### NFR-1: 响应时间 - 唤醒词检测延迟: < 500ms - STT 转换时间: < 2s - TTS 合成时间: < 1s - 运动响应时间: < 100ms - 端到端语音交互延迟: < 3s #### NFR-2: 吞吐量 - 音频采样率: 16kHz - 视频帧率: > 15 FPS - ESPHome 消息处理: > 100 msg/s #### NFR-3: 资源使用 - CPU 使用率: < 80%(正常负载) - 内存使用: < 2GB - 存储使用: < 5GB ### 4.2 可靠性需求 #### NFR-4: 可用性 - 系统可用性: > 99% - 平均无故障时间 (MTBF): > 24h - 平均恢复时间 (MTTR): < 5min #### NFR-5: 错误处理 - 音频设备断开: 自动重连 - 网络断开: 自动重连 - 机器人断开: 安全停止 - 配置错误: 明确提示 #### NFR-6: 数据完整性 - 音频数据不丢失 - 配置数据持久化 - 日志完整记录 ### 4.3 可维护性需求 #### NFR-7: 代码质量 - 代码覆盖率: > 80% - 代码复杂度: < 10 - 代码风格: 遵循 PEP 8 #### NFR-8: 文档 - API 文档完整 - 用户手册清晰 - 开发文档详细 #### NFR-9: 测试 - 单元测试覆盖核心功能 - 集成测试覆盖主要流程 - 硬件测试覆盖关键硬件 ### 4.4 安全性需求 #### NFR-10: 隐私保护 - 不存储用户音频(除非明确授权) - 本地处理优先 - 加密网络传输 #### NFR-11: 访问控制 - ESPHome 认证 - TLS 加密 - 防火墙配置 #### NFR-12: 运动安全 - 角度限制 - 速度限制 - 碰撞检测 - 紧急停止 ### 4.5 兼容性需求 #### NFR-13: 平台兼容性 - 支持 Linux - 支持 macOS - 支持 Windows(实验性) #### NFR-14: 版本兼容性 - Python 3.8-3.12 - Home Assistant 2023.12+ - Reachy Mini SDK 最新版本 #### NFR-15: 浏览器兼容性 - Chrome 90+ - Firefox 88+ - Safari 14+ - Edge 90+ ## 5. 约束条件 ### 5.1 技术约束 #### TC-1: 硬件限制 - Raspberry Pi 4 性能有限 - 音频设备可能需要特殊处理 - 无线版本可能有延迟 #### TC-2: 软件限制 - Whisper 模型较大(~150MB) - Piper TTS 模型较大(~100MB) - 部分依赖库可能需要编译 #### TC-3: 网络限制 - ESPHome 协议必须实现 - mDNS 需要本地网络支持 - 无线连接稳定性有限 ### 5.2 时间约束 #### TC-4: 开发周期 - 核心功能开发: 4-6 周 - 扩展功能开发: 2-4 周 - 测试和优化: 2-3 周 - 文档编写: 1 周 ### 5.3 资源约束 #### TC-5: 人力资源 - 开发人员: 1-2 人 - 测试人员: 1 人 - 文档人员: 1 人 #### TC-6: 财务约束 - 硬件成本: Reachy Mini ($299) - 云服务: 可选(如果使用云端 STT/TTS) - 开发工具: 免费(开源) ### 5.4 合规约束 #### TC-7: 开源许可 - Apache 2.0 许可证 - 遵守依赖库的许可证 - 硬件设计文件: CC BY-SA-NC #### TC-8: 隐私法规 - GDPR 合规(如果涉及欧盟用户) - 不收集个人信息 - 用户数据本地处理 ## 6. 验收标准 ### 6.1 功能验收 - 所有核心功能(FR-1 到 FR-10)正常工作 - 所有扩展功能(EF-1 到 EF-4)可选实现 - 功能测试通过率 > 95% ### 6.2 性能验收 - 所有性能需求(NFR-1 到 NFR-3)满足 - 压力测试通过 - 资源使用在限制范围内 ### 6.3 质量验收 - 代码覆盖率 > 80% - 无严重 Bug - 无安全漏洞 ### 6.4 文档验收 - API 文档完整 - 用户手册清晰 - 开发文档详细 ## 7. 风险评估 ### 7.1 技术风险 - **风险**: 音频设备兼容性问题 - **影响**: 高 - **概率**: 中 - **缓解**: 提前测试多种设备,提供备用方案 - **风险**: ESPHome 协议实现复杂 - **影响**: 高 - **概率**: 中 - **缓解**: 参考开源实现,逐步测试 - **风险**: 性能不满足要求 - **影响**: 中 - **概率**: 中 - **缓解**: 优化算法,使用异步编程 ### 7.2 资源风险 - **风险**: 开发时间不足 - **影响**: 高 - **概率**: 低 - **缓解**: 合理规划,优先实现核心功能 - **风险**: 硬件资源不足 - **影响**: 中 - **概率**: 低 - **缓解**: 提前测试硬件性能,优化资源使用 ### 7.3 依赖风险 - **风险**: 依赖库版本冲突 - **影响**: 中 - **概率**: 中 - **缓解**: 使用虚拟环境,锁定依赖版本 ## 8. 成功指标 ### 8.1 技术指标 - 端到端语音交互延迟 < 3s - 唤醒词检测准确率 > 95% - STT 准确率 > 90% - 系统可用性 > 99% ### 8.2 用户指标 - 用户满意度 > 4/5 - 功能使用率 > 80% - Bug 报告率 < 5% ### 8.3 业务指标 - 社区活跃度 > 100 用户 - GitHub Stars > 50 - 贡献者 > 5 人 ## 9. 未来扩展 ### 9.1 短期扩展(3-6 个月) - 支持更多语言 - 改进面部跟踪 - 添加更多表情和动作 ### 9.2 中期扩展(6-12 个月) - 支持视觉识别 - 集成更多智能家居平台 - 添加机器学习能力 ### 9.3 长期扩展(12+ 个月) - 支持多机器人协作 - 添加情感识别 - 开发自定义应用商店 --- **文档版本**: 1.0 **最后更新**: 2026-01-01 **状态**: 已批准