feat: 新增 kws 调试脚本
This commit is contained in:
+20
-7
@@ -5,7 +5,6 @@
|
||||
|
||||
小爱音箱自定义唤醒词,基于 [sherpa-onnx](https://github.com/k2-fsa/sherpa-onnx)。
|
||||
|
||||
|
||||
## 快速开始
|
||||
|
||||
> [!NOTE]
|
||||
@@ -103,16 +102,24 @@ EOF
|
||||
|
||||
## 常见问题
|
||||
|
||||
### Q:能否自定义唤醒词的响应动作?比如:关灯
|
||||
|
||||
该脚本默认不支持自定义唤醒词触发后执行的动作。
|
||||
|
||||
如果你想要自定义唤醒词的触发动作,可以参考 [open-xiaoai](https://github.com/idootop/open-xiaoai) 里的其他演示程序,根据 server 端接收到的小爱音箱上的唤醒词事件,实时触发任意自定义操作(比如:打电话,订外卖等)。
|
||||
|
||||
### Q:为什么唤醒词识别不是很灵敏,时好时坏?
|
||||
|
||||
由于小爱音箱 client 端算力和存储空间有限,默认只使用了一个较小的语音识别模型,所以识别效果并不是很完美,需要多多尝试。
|
||||
|
||||
你可以在小爱音箱上运行以下调试脚本,根据语音识别结果,动态调整唤醒词拼音。
|
||||
|
||||
```shell
|
||||
# 运行调试脚本
|
||||
curl -sSfL https://gitee.com/idootop/artifacts/releases/download/open-xiaoai-kws/debug.sh | sh
|
||||
|
||||
# 🐢 模型加载较慢,请在提示 Started! Please speak 后,再使用自定义唤醒词
|
||||
# Started! Please speak
|
||||
# 0:tiānmāojīnglián 👈 天猫精灵
|
||||
# 1:xiǎodùxiǎodù 👈 小度小度
|
||||
# 2:dōubāodùba 👈 豆包豆包
|
||||
# 3:nǐhǎoxiǎozhī 👈 你好小智
|
||||
```
|
||||
|
||||
如果你想要更完美的唤醒词识别效果,可以在 server 端运行更大规模、更先进的 AI 模型,来进行唤醒词识别。推荐使用 [FunASR](https://github.com/modelscope/FunASR) 和 [Sherpa-ONNX](https://github.com/k2-fsa/sherpa-onnx),可以参考 [xiaozhi-esp32-server](https://github.com/xinnan-tech/xiaozhi-esp32-server) 项目。
|
||||
|
||||
### Q:能不能设置英文/方言作为唤醒词?比如:Siri
|
||||
@@ -126,3 +133,9 @@ EOF
|
||||
由于小爱音箱 client 端算力和存储空间有限,默认只使用了一个较小的语音识别模型,并不支持说话人识别等高阶功能。
|
||||
|
||||
如果你需要声纹识别、连续对话等高阶功能,可以在 server 端运行更大规模、更先进的 AI 模型,来进行语音识别和对话管理。推荐使用 [FunASR](https://github.com/modelscope/FunASR) 和 [Sherpa-ONNX](https://github.com/k2-fsa/sherpa-onnx),可以参考 [xiaozhi-esp32-server](https://github.com/xinnan-tech/xiaozhi-esp32-server) 项目。
|
||||
|
||||
### Q:能否自定义唤醒词的响应动作?比如:关灯
|
||||
|
||||
该脚本默认不支持自定义唤醒词触发后执行的动作。
|
||||
|
||||
如果你想要自定义唤醒词的触发动作,可以参考 [open-xiaoai](https://github.com/idootop/open-xiaoai) 里的其他演示程序,根据 server 端接收到的小爱音箱上的唤醒词事件,实时触发任意自定义操作(比如:打电话,订外卖等)。
|
||||
@@ -0,0 +1,64 @@
|
||||
#! /bin/sh
|
||||
|
||||
set -e
|
||||
|
||||
MIN_SPACE_MB=32
|
||||
DOWNLOAD_BASE_URL="https://gitee.com/idootop/artifacts/releases/download/open-xiaoai-kws"
|
||||
|
||||
|
||||
check_disk_space() {
|
||||
local space_kb=$(df -k "$1" | awk 'NR==2 {print $4}')
|
||||
if [ $((space_kb / 1024)) -lt "$MIN_SPACE_MB" ]; then
|
||||
echo 1
|
||||
else
|
||||
echo 0
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
BASE_DIR="/data"
|
||||
if [ $(check_disk_space "$BASE_DIR") -eq 1 ]; then
|
||||
BASE_DIR="/tmp"
|
||||
if [ $(check_disk_space "$BASE_DIR") -eq 1 ]; then
|
||||
echo "❌ 磁盘空间不足,请先清理磁盘空间(至少需要 $MIN_SPACE_MB MB 空间)"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
WORK_DIR="$BASE_DIR/open-xiaoai/kws"
|
||||
KWS_DEBUG_BIN="$WORK_DIR/kws-debug"
|
||||
|
||||
if [ ! -d "$WORK_DIR" ]; then
|
||||
mkdir -p "$WORK_DIR"
|
||||
fi
|
||||
|
||||
if [ ! -f "$WORK_DIR/models/encoder.onnx" ]; then
|
||||
echo "🔥 正在下载模型文件..."
|
||||
curl -L -# -o "$WORK_DIR/kws.tar.gz" "$DOWNLOAD_BASE_URL/kws.tar.gz"
|
||||
tar -xzvf "$WORK_DIR/kws.tar.gz" -C "$WORK_DIR"
|
||||
rm "$WORK_DIR/kws.tar.gz"
|
||||
echo "✅ 模型文件下载完毕"
|
||||
fi
|
||||
|
||||
if [ ! -f "$KWS_DEBUG_BIN" ]; then
|
||||
echo "🔥 正在下载 kws-debug 文件..."
|
||||
curl -L -# -o "$KWS_DEBUG_BIN" "$DOWNLOAD_BASE_URL/kws-debug"
|
||||
chmod +x "$KWS_DEBUG_BIN"
|
||||
echo "✅ kws-debug 文件下载完毕"
|
||||
fi
|
||||
|
||||
echo "🔥 正在启动唤醒词识别调试服务,请耐心等待..."
|
||||
echo "🐢 模型加载较慢,请在提示 Started! Please speak 后,再使用自定义唤醒词"
|
||||
|
||||
kill -9 `ps|grep "open-xiaoai/kws/kws-debug"|grep -v grep|awk '{print $1}'` > /dev/null 2>&1 || true
|
||||
"$KWS_DEBUG_BIN" \
|
||||
--model-type=zipformer2 \
|
||||
--tokens="$WORK_DIR/models/tokens.txt" \
|
||||
--encoder="$WORK_DIR/models/encoder.onnx" \
|
||||
--decoder="$WORK_DIR/models/decoder.onnx" \
|
||||
--joiner="$WORK_DIR/models/joiner.onnx" \
|
||||
--provider=cpu \
|
||||
--num-threads=1 \
|
||||
--chunk-size=1024 \
|
||||
noop
|
||||
@@ -33,7 +33,7 @@ if [ ! -d "$WORK_DIR" ]; then
|
||||
mkdir -p "$WORK_DIR"
|
||||
fi
|
||||
|
||||
if [ ! -f "$WORK_DIR/kws" ]; then
|
||||
if [ ! -f "$WORK_DIR/models/encoder.onnx" ]; then
|
||||
echo "🔥 正在下载模型文件..."
|
||||
curl -L -# -o "$WORK_DIR/kws.tar.gz" "$DOWNLOAD_BASE_URL/kws.tar.gz"
|
||||
tar -xzvf "$WORK_DIR/kws.tar.gz" -C "$WORK_DIR"
|
||||
|
||||
Reference in New Issue
Block a user