metadata
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 安装
- 访问 Hugging Face Spaces
- 创建新的 Space,选择 Docker 模板
- 将此仓库克隆到你的 Space
- 等待构建完成,服务将自动启动
本地运行
# 克隆仓库
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
- 在 Home Assistant 中,进入 "设置" -> "设备与服务"
- 点击 "添加集成" 按钮
- 选择 "ESPHome" 然后选择 "设置另一个 ESPHome 实例"
- 输入语音助手的 IP 地址和端口 6053
- 点击 "提交"
命令行选项
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- Alexahey_jarvis_v0.1.tflite- Hey Jarvishey_mycroft_v0.1.tflite- Hey Mycrofthey_rhasspy_v0.1.tflite- Hey Rhasspyok_nabu_v0.1.tflite- Okay Nabu
声音文件
wake_word_triggered.flac- 唤醒词触发时播放timer_finished.flac- 定时器结束时播放
音频设备配置
查看可用设备
# 列出音频输入设备
python -m reachy_mini_ha_voice --name Test --list-input-devices
# 列出音频输出设备
python -m reachy_mini_ha_voice --name Test --list-output-devices
指定音频设备
python -m reachy_mini_ha_voice \
--name "ReachyMini" \
--audio-input-device "麦克风名称" \
--audio-output-device "扬声器名称"
注意:麦克风设备必须支持 16KHz 单声道音频。
唤醒词
默认唤醒词
okay_nabu(默认)
使用其他唤醒词
项目已经包含了多个唤醒词模型,你可以直接使用:
# 使用 "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
Reachy Mini 集成
动作反馈
语音助手会根据不同状态触发 Reachy Mini 的动作:
- 唤醒时:头部抬起,眼睛闪烁
- 监听中:头部轻微摆动
- 响应中:点头或摇头
- 错误时:头部倾斜
自定义动作
编辑 reachy_mini_ha_voice/reachy_integration.py 来自定义 Reachy Mini 的动作反馈。
故障排除
音频设备问题
如果无法检测到音频设备:
# 检查 PulseAudio 服务
systemctl --user status pulseaudio
# 重新加载 PulseAudio
pulseaudio --kill
pulseaudio --start
回声消除
启用 PulseAudio 的回声消除模块:
pactl load-module module-echo-cancel \
aec_method=webrtc \
aec_args="analog_gain_control=0 digital_gain_control=1 noise_suppression=1"
查看设备:
pactl list short sources
pactl list short sinks
使用回声消除设备:
python -m reachy_mini_ha_voice \
--name "ReachyMini" \
--audio-input-device 'Echo-Cancel Source' \
--audio-output-device 'pipewire/echo-cancel-sink'
Hugging Face Spaces 部署问题
如果构建失败:
- 检查 Dockerfile 中的依赖是否正确
- 确保 requirements.txt 中的版本兼容
- 查看构建日志中的错误信息
- 确保没有使用需要系统特权的功能
开发
运行测试
pip install -e ".[dev]"
pytest
代码格式化
black reachy_mini_ha_voice/
flake8 reachy_mini_ha_voice/
许可证
Apache License 2.0
致谢
本项目基于 OHF-Voice/linux-voice-assistant 修改而来,适配 Reachy Mini 机器人和 Hugging Face Spaces 环境。