| --- |
| title: Reachy Mini Home Assistant Voice Assistant |
| emoji: 🤖 |
| colorFrom: blue |
| colorTo: indigo |
| sdk: docker |
| sdk_version: "1.0.0" |
| app_file: app.py |
| pinned: false |
| license: apache-2.0 |
| --- |
| |
| # Reachy Mini Home Assistant Voice Assistant |
|
|
| 基于 ESPHome 协议的 Reachy Mini 语音助手,用于连接 Home Assistant。可通过 Hugging Face Spaces 一键安装和部署。 |
|
|
| ## 功能特性 |
|
|
| - 🎤 唤醒词检测(支持多个唤醒词) |
| - 🔊 语音识别和合成 |
| - 🏠 Home Assistant 指令执行 |
| - 🤖 Reachy Mini 机器人集成 |
| - ⏰ 定时器功能 |
| - 📢 广播通知 |
|
|
| ## 快速开始 |
|
|
| ### 通过 Hugging Face Spaces 安装 |
|
|
| 1. 访问 [Hugging Face Spaces](https://huggingface.co/spaces) |
| 2. 创建新的 Space,选择 Docker 模板 |
| 3. 将此仓库克隆到你的 Space |
| 4. 等待构建完成,服务将自动启动 |
|
|
| ### 本地运行 |
|
|
| ```bash |
| # 克隆仓库 |
| git clone https://huggingface.co/spaces/djhui5710/reachy_mini_ha_voice |
| cd reachy_mini_ha_voice |
| |
| # 安装系统依赖(Linux) |
| sudo apt-get install portaudio19-dev build-essential libportaudio2 |
| |
| # 创建虚拟环境 |
| python -m venv .venv |
| source .venv/bin/activate # Windows: .venv\Scripts\activate |
| |
| # 安装 Python 依赖 |
| pip install -r requirements.txt |
| pip install -e . |
| |
| # 运行 |
| python -m reachy_mini_ha_voice --name "ReachyMini" |
| ``` |
|
|
| ## 连接到 Home Assistant |
|
|
| 1. 在 Home Assistant 中,进入 "设置" -> "设备与服务" |
| 2. 点击 "添加集成" 按钮 |
| 3. 选择 "ESPHome" 然后选择 "设置另一个 ESPHome 实例" |
| 4. 输入语音助手的 IP 地址和端口 6053 |
| 5. 点击 "提交" |
|
|
| ## 命令行选项 |
|
|
| ``` |
| python -m reachy_mini_ha_voice --help |
| |
| 选项: |
| --name NAME 设备名称(必需) |
| --host HOST 服务器地址(默认: 0.0.0.0) |
| --port PORT 服务器端口(默认: 6053) |
| --audio-input-device DEVICE 音频输入设备 |
| --list-input-devices 列出可用的音频输入设备 |
| --audio-output-device DEVICE 音频输出设备 |
| --list-output-devices 列出可用的音频输出设备 |
| --wake-model MODEL 唤醒词模型(默认: okay_nabu) |
| --stop-model MODEL 停止词模型(默认: stop) |
| --refractory-seconds SECONDS 唤醒词冷却时间(默认: 2.0) |
| --debug 启用调试日志 |
| ``` |
|
|
| ## 包含的 Assets |
|
|
| 项目已经包含了所有必需的唤醒词模型和声音文件,无需额外下载: |
|
|
| ### 唤醒词模型(microWakeWord) |
|
|
| - `okay_nabu.tflite` - "Okay Nabu"(默认) |
| - `stop.tflite` - "Stop" |
| - `alexa.tflite` - "Alexa" |
| - `hey_jarvis.tflite` - "Hey Jarvis" |
| - `hey_home_assistant.tflite` - "Hey Home Assistant" |
| - `hey_luna.tflite` - "Hey Luna" |
| - `hey_mycroft.tflite` - "Hey Mycroft" |
| - `okay_computer.tflite` - "Okay Computer" |
| - `choo_choo_homie.tflite` - "Choo Choo Homie" |
|
|
| ### 唤醒词模型(openWakeWord) |
|
|
| 在 `wakewords/openWakeWord/` 目录中: |
| - `alexa_v0.1.tflite` - Alexa |
| - `hey_jarvis_v0.1.tflite` - Hey Jarvis |
| - `hey_mycroft_v0.1.tflite` - Hey Mycroft |
| - `hey_rhasspy_v0.1.tflite` - Hey Rhasspy |
| - `ok_nabu_v0.1.tflite` - Okay Nabu |
|
|
| ### 声音文件 |
|
|
| - `wake_word_triggered.flac` - 唤醒词触发时播放 |
| - `timer_finished.flac` - 定时器结束时播放 |
|
|
| ## 音频设备配置 |
|
|
| ### 查看可用设备 |
|
|
| ```bash |
| # 列出音频输入设备 |
| python -m reachy_mini_ha_voice --name Test --list-input-devices |
| |
| # 列出音频输出设备 |
| python -m reachy_mini_ha_voice --name Test --list-output-devices |
| ``` |
|
|
| ### 指定音频设备 |
|
|
| ```bash |
| python -m reachy_mini_ha_voice \ |
| --name "ReachyMini" \ |
| --audio-input-device "麦克风名称" \ |
| --audio-output-device "扬声器名称" |
| ``` |
|
|
| **注意**:麦克风设备必须支持 16KHz 单声道音频。 |
|
|
| ## 唤醒词 |
|
|
| ### 默认唤醒词 |
|
|
| - `okay_nabu`(默认) |
|
|
| ### 使用其他唤醒词 |
|
|
| 项目已经包含了多个唤醒词模型,你可以直接使用: |
|
|
| ```bash |
| # 使用 "Hey Jarvis" |
| python -m reachy_mini_ha_voice --name "ReachyMini" --wake-model hey_jarvis |
| |
| # 使用 "Alexa" |
| python -m reachy_mini_ha_voice --name "ReachyMini" --wake-model alexa |
| |
| # 使用 openWakeWord 版本的 "Hey Jarvis" |
| python -m reachy_mini_ha_voice --name "ReachyMini" \ |
| --wake-model hey_jarvis_v0.1 \ |
| --wake-word-dir wakewords/openWakeWord |
| ``` |
|
|
| ### 添加自定义唤醒词 |
|
|
| 如果你想添加其他唤醒词: |
|
|
| 更多唤醒词模型请访问:[home-assistant-wakewords-collection](https://github.com/fwartner/home-assistant-wakewords-collection) |
|
|
| ## Reachy Mini 集成 |
|
|
| ### 动作反馈 |
|
|
| 语音助手会根据不同状态触发 Reachy Mini 的动作: |
|
|
| - **唤醒时**:头部抬起,眼睛闪烁 |
| - **监听中**:头部轻微摆动 |
| - **响应中**:点头或摇头 |
| - **错误时**:头部倾斜 |
|
|
| ### 自定义动作 |
|
|
| 编辑 `reachy_mini_ha_voice/reachy_integration.py` 来自定义 Reachy Mini 的动作反馈。 |
|
|
| ## 故障排除 |
|
|
| ### 音频设备问题 |
|
|
| 如果无法检测到音频设备: |
|
|
| ```bash |
| # 检查 PulseAudio 服务 |
| systemctl --user status pulseaudio |
| |
| # 重新加载 PulseAudio |
| pulseaudio --kill |
| pulseaudio --start |
| ``` |
|
|
| ### 回声消除 |
|
|
| 启用 PulseAudio 的回声消除模块: |
|
|
| ```bash |
| pactl load-module module-echo-cancel \ |
| aec_method=webrtc \ |
| aec_args="analog_gain_control=0 digital_gain_control=1 noise_suppression=1" |
| ``` |
|
|
| 查看设备: |
|
|
| ```bash |
| pactl list short sources |
| pactl list short sinks |
| ``` |
|
|
| 使用回声消除设备: |
|
|
| ```bash |
| python -m reachy_mini_ha_voice \ |
| --name "ReachyMini" \ |
| --audio-input-device 'Echo-Cancel Source' \ |
| --audio-output-device 'pipewire/echo-cancel-sink' |
| ``` |
|
|
| ### Hugging Face Spaces 部署问题 |
|
|
| 如果构建失败: |
|
|
| 1. 检查 Dockerfile 中的依赖是否正确 |
| 2. 确保 requirements.txt 中的版本兼容 |
| 3. 查看构建日志中的错误信息 |
| 4. 确保没有使用需要系统特权的功能 |
|
|
| ## 开发 |
|
|
| ### 运行测试 |
|
|
| ```bash |
| pip install -e ".[dev]" |
| pytest |
| ``` |
|
|
| ### 代码格式化 |
|
|
| ```bash |
| black reachy_mini_ha_voice/ |
| flake8 reachy_mini_ha_voice/ |
| ``` |
|
|
| ## 许可证 |
|
|
| Apache License 2.0 |
|
|
| ## 致谢 |
|
|
| 本项目基于 [OHF-Voice/linux-voice-assistant](https://github.com/OHF-Voice/linux-voice-assistant) 修改而来,适配 Reachy Mini 机器人和 Hugging Face Spaces 环境。 |
|
|
| ## 相关链接 |
|
|
| - [Home Assistant](https://www.home-assistant.io/) |
| - [ESPHome](https://esphome.io/) |
| - [Reachy Mini](https://github.com/pollen-robotics/reachy) |
| - [Hugging Face Spaces](https://huggingface.co/spaces) |
| - [Source Code](https://huggingface.co/spaces/djhui5710/reachy_mini_ha_voice) |