小右语音助手是一个基于OpenClaw的离线唤醒语音助手,支持完整的语音对话功能。
| 功能 | 说明 |
|---|---|
| ------ | ------ |
| ✅ 离线关键词唤醒 | 唤醒词:小右 |
| ✅ VAD语音端点检测 | 自动开始/结束录音 |
| ✅ 硅基流动ASR | 高准确率语音识别 |
| ✅ OpenClaw Agent对话 | 智能AI回复 |
| ✅ 流式回复处理 | 实时接收回复 |
| ✅ 等待提示状态机 | 每8秒提示一次 |
| ✅ Edge-TTS语音合成 | 自然语音播放 |
| ✅ 麦克风自动校准 | 底噪检测和校准 |
| ✅ 独立干净会话 | 不和Web UI冲突 |
| ✅ 人性化提示词 | 穿衣/出行实用建议 |
| ✅ 纯文本输出 | 无图标无emoji |
| ✅ 重新创建会话 | 一键重置会话 |
| ✅ 重新检测麦克风 | 强制重新检测设备 |
| ✅ 重新校准底噪 | 重新设定阈值 |
1. USB麦克风(必备)
推荐选择:
注意事项:
2. USB扬声器(必备)
推荐选择:
注意事项:
测试录音:
# 查看录音设备
arecord -l
# 测试录音5秒
arecord -D plughw:1,0 -f S16_LE -r 16000 -c 1 -d 5 test.wav
# 播放测试
aplay test.wav
测试播放:
# 查看播放设备
aplay -l
# 测试播放
aplay test.wav
# Python依赖
pip install numpy sherpa-onnx requests websockets
# 系统依赖
sudo apt install alsa-utils sox ffmpeg
npm install -g edge-tts # 或 pip install edge-tts
# 设置硅基流动API Key
export SILICONFLOW_API_KEY=your_api_key_here
# 可选:自定义API地址
export SILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1
建议将环境变量写入 ~/.bashrc 或 ~/.zshrc 永久生效。
首次启动时会自动完成:
✅ 自动下载KWS唤醒模型 (~5MB)
sherpa-onnx-kws-zipformer-wenetspeech-3.3M-2024-01-01/✅ 自动生成提示音文件
response/ 目录💡 网络不好?使用国内镜像:
GitHub国内下载慢,优先使用国内镜像:
# 方法1: 使用 ghproxy 国内镜像(推荐)
wget https://ghproxy.com/https://github.com/k2-fsa/sherpa-onnx/releases/download/kws-models/sherpa-onnx-kws-zipformer-wenetspeech-3.3M-2024-01-01.tar.bz2
# 方法2: 使用浏览器下载
# 打开: https://ghproxy.com/https://github.com/k2-fsa/sherpa-onnx/releases/download/kws-models/sherpa-onnx-kws-zipformer-wenetspeech-3.3M-2024-01-01.tar.bz2
下载后解压:
tar xf sherpa-onnx-kws-zipformer-wenetspeech-3.3M-2024-01-01.tar.bz2
然后重新运行 ./start.sh 即可。
默认唤醒词是:小右
可以修改为任意中文唤醒词:
# 设置唤醒词为 "小爱同学"
./start.sh set-keyword 小爱同学
# 设置唤醒词为 "小龙小龙"
./start.sh set-keyword 小龙小龙
修改后需要重启服务才能生效。
💡 唤醒词建议:
./start.sh
# 或
./start.sh start
./start.sh start -d
python3 keyword_spotter.py
# 强制重新检测麦克风
python3 keyword_spotter.py --redetect
# 查看运行状态
./start.sh status
# 查看实时日志
./start.sh logs
# 停止后台服务
./start.sh stop
# 重启服务
./start.sh restart
# 查看帮助
./start.sh help
说明:
/tmp/xiaoyou_kws.pid/tmp/xiaoyou_kws.lognohup 运行,关闭SSH终端也不会退出用户:小右
(提示音)
用户:今天成都的天气怎么样?
小龙虾正在处理信息,请耐心等待...
AI:成都今天有小雨,气温17到25度,出门记得带伞,穿薄外套就好。
使用 tools.py 管理语音助手:
# 查看当前配置
python3 tools.py config
# 重新创建会话(删除旧会话,下次启动自动创建新会话)
python3 tools.py reset-session
# 重新检测麦克风(清除设备配置,下次启动自动重新检测校准)
python3 tools.py reset-microphone
# 查看帮助
python3 tools.py help
python3 keyword_spotter.py [选项]
选项:
--device DEVICE 指定麦克风设备,如 plughw:1,0
--redetect 强制重新检测麦克风设备
--gen-prompts 只生成提示音文件,不启动服务
--model PATH 指定KWS模型路径
kws/
├── keyword_spotter.py # 主程序
├── tools.py # 管理工具
├── start.sh # 启动脚本
├── SKILL.md # 本文档
├── README.md # 使用说明
├── requirements.txt # Python依赖
├── openclaw_custom_client/ # OpenClaw网关客户端
│ ├── client.py # 核心客户端实现
│ ├── __init__.py
│ └── __main__.py
├── response/ # 预生成提示音
│ ├── 1.wav ~ 6.wav # 随机唤醒应答
│ ├── calibrate_noise.wav # 开始校准提示
│ ├── calibrate_done.wav # 校准完成提示
│ ├── detection_done.wav # 检测完成提示
│ ├── please_speak.wav # 请说话提示
│ └── processing.wav # 处理中提示
└── sherpa-onnx-kws-zipformer-wenetspeech-3.3M-2024-01-01/ # KWS模型
编辑 keyword_spotter.py 可调整以下参数:
| 参数 | 默认值 | 说明 |
|---|---|---|
| ------ | -------- | ------ |
silence_seconds | 1.5 | 用户说完后静音多久自动结束录音 |
wait_voice_timeout | 5 | 唤醒后等待用户说话超时时间 |
max_seconds | 10 | 单次录音最长时间 |
calibrate_seconds | 2.0 | 麦克风校准时长 |
export SILICONFLOW_API_KEY=your_api_key_here
# 查看可用麦克风
arecord -l
# 强制重新检测
python3 keyword_spotter.py --redetect
# 或手动指定设备
python3 keyword_spotter.py --device plughw:1,0
# 调大 silence_seconds 参数
silence_seconds = 2.0 # 从1.5改为2.0
本项目仅供学习和个人使用。
共 1 个版本