File size: 6,475 Bytes
47cb5cb
 
 
 
 
 
c017fe6
 
47cb5cb
 
 
 
b746881
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
552894a
b746881
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
552894a
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
---
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)