ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

WeKws Android 部署完整教程:从训练到 APK,手机端唤醒词实战

WeKws Android 部署完整教程:从训练到 APK,手机端唤醒词实战 WeKws Android 部署完整教程从训练到 APK手机端唤醒词实战【免费下载链接】wekwsProduction First and Production Ready End-to-End Keyword Spotting Toolkit项目地址: https://gitcode.com/gh_mirrors/we/wekwsWeKws 是一个面向生产环境的端到端关键词检测Keyword SpottingKWS工具包支持在Android 手机上部署唤醒词检测。本教程带你完成完整闭环训练唤醒词模型 → 导出 ONNX → 转换为 ORT 移动端格式 → 打包安装 APK最终在手机上实现Hey Snips语音唤醒帮你快速上手手机端唤醒词开发。一、WeKws 是什么为什么适合手机端WeKws 主打小模型、低延迟、流式检测是物联网设备唤醒词模块的理想选择。它支持单唤醒词 / 多唤醒词自定义唤醒词个性化唤醒词唤醒词 声纹其 Android 运行时位于 runtime/android/ 目录核心由 C 推理引擎基于 ONNX Runtime JNI 接口 Java 录音界面组成架构非常清晰模块路径作用录音与 UIruntime/android/app/src/main/java/cn/org/wenet/wekws/MainActivity.java16kHz 采集麦克风音频多线程送入检测器JNI 桥接runtime/android/app/src/main/java/cn/org/wenet/wekws/Spot.java暴露 init / acceptWaveform / startSpot 等原生方法C 推理入口runtime/android/app/src/main/cpp/wekws.cc特征提取 模型推理流式输出唤醒概率推理核心runtime/core/kws/keyword_spotting.h基于 ONNX Runtime 的 KWS 推理类二、环境准备克隆仓库并安装依赖 ️git clone https://gitcode.com/gh_mirrors/we/wekws cd wekws创建 Conda 环境并安装 PyTorch建议 torch 2.5.1 CUDA 12.4conda create -n wekws python3.10 conda activate wekws pip install torch torchaudio pip install -r requirements.txt三、第一步训练唤醒词模型以官方 Hey Snips 数据集为例唤醒词为 Hey Snips训练脚本为examples/hey_snips/s0/run.sh一条命令跑完数据下载 → 特征统计 → 训练 → 模型平均 → 导出 ONNXcd examples/hey_snips/s0 bash run.sh -1 4 --num_keywords 1 --gpus 0说明stage -1 ~ 0下载并预处理数据脚本local/snips_data_extract.shstage 1用 tools/compute_cmvn_stats.py 计算 CMVN 特征均值方差stage 2调用wekws/bin/train.py训练默认 DS_TCN 模型仅 21K 参数非常适合手机端stage 3模型平均 测试集 FRR/FAR 评估绘制 DET 曲线stage 4执行 wekws/bin/export_onnx.py输出exp/ds_tcn/avg_30.onnx官方 README 显示DS_TCN 模型仅21K 参数在 Hey Snips 测试集上每小时误唤醒率FAR 固定 1 次/小时对应的漏检率仅1.98%小而有保障。四、第二步转换为移动端 ORT 模型 PyTorch 导出的 ONNX 还需要再转换一次以启用移动端图优化。参照 runtime/android/README.mdpython -m onnxruntime.tools.convert_onnx_models_to_ort exp/ds_tcn/avg_30.onnx会得到avg_30.ort和avg_30.with_runtime_opt.ort后者性能更好推荐使用。⚠️ 关键一步把生成的 ORT 文件重命名为kws.ort放到 Android 工程的 assets 目录runtime/android/app/src/main/assets/kws.ort工程里已自带一个示例kws.ort可直接替换。五、第三步检查特征维度配置Android 侧默认特征维度为40。如果你的模型用的是 80 维特征需修改runtime/android/app/src/main/cpp/wekws.cc中这一行feature_config std::make_sharedwenet::FeaturePipelineConfig(40, 16000); // 40 - 80把40改成80即可这是新手最常踩的坑。六、第四步编译打包 APK两种方式任选方式一Android Studio推荐新手安装 Android Studio直接打开wekws/runtime/android目录等待 Gradle 同步和 CMakeNDK编译完成后点击 Run 即可安装到连接的真机。方式二Linux 命令行构建cd wekws/runtime/android bash ./gradlew build生成的 APK 位于app/build/outputs/apk/debug/app-debug.apk用数据线或adb install装到手机即可。七、第五步真机验证唤醒效果 打开 App 后授予麦克风权限App 启动时会自动请求 RECORD_AUDIO 权限点击Start Record按钮对着手机说 Hey Snips界面上会实时显示检测概率格式为offset prob: 0.xxxx概率显著升高即表示唤醒成功界面还会同步显示麦克风能量波形由VoiceRectView渲染。检测流程由三条线程协作完成录音线程 → 音频队列 → 特征提取与推理线程保证低延迟流式响应。八、常见问题 FAQQ1编译时 CMake 报错确认 Android Studio 中安装了与CMakeLists.txt匹配的 CMake 和 NDK 版本并开启 Android Gradle 插件的 NDK 支持。Q2唤醒不灵敏检查模型特征维度是否配置一致40 还是 80用训练时同款采样率16kHz测试更换为with_runtime_opt优化版模型通常只影响速度不影响精度Q3想换成自己训练的唤醒词只需重训模型 → 导出 ONNX → 转 ORT → 替换kws.ort无需改动任何 C/Java 代码若需修改提示语改MainActivity.java中的HINTS常量即可。Q4除了 Android 还支持哪些平台WeKws 同时提供 x86 桌面端runtime/onnxruntime/和树莓派runtime/raspberrypi/运行时C 核心代码完全复用。九、核心文件速查Android 示例工程runtime/android/Android 部署说明runtime/android/README.mdC 推理核心runtime/core/Hey Snips 训练脚本examples/hey_snips/s0/run.shONNX 导出工具wekws/bin/export_onnx.py依赖清单requirements.txt总结WeKws 让唤醒词这件事变得触手可及21K 参数的超小模型 一条命令训练 五步上手机。跟着本教程你只需训练、导出、替换模型、编译 APK就能在自己的 Android 设备上跑起流式唤醒词检测非常适合智能音箱、语音助手等 IoT 场景的原型验证与落地。【免费下载链接】wekwsProduction First and Production Ready End-to-End Keyword Spotting Toolkit项目地址: https://gitcode.com/gh_mirrors/we/wekws创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表