kwsModelAutoDeploy 工具*
1.SDK与工具路径说明*
- SDK链接网址:http://gitlab.nationalchip.com/nationalchip/voice-wifi-solution/ovp_aiot/
- 工具路径:
tools/kws_model_auto_deploy/
- 注意:此链接需要访问权限,请联系国芯微处理。
2.简介*
- 这是一个可以把 BunKws 训练框架生成的模型,自动部署到
ovp_aiot
SDK 内的工具,通过指定参数运行该工具后,用户可以直接编译出可以烧录到GX8005/GX8006
设备的固件
3.工具命令帮助*
usage: kwsModelAutoDeploy [-h] [-v] [-i INPUTPATH] [-r SDKROOTPATH] [-p PROJECTNAME] [-dv DEPLOYVERSION] [-b] [-d]
这是一个可以把 BunKws 训练框架生成的模型,自动部署到 ovp SDK 内的工具
optional arguments:
-h, --help show this help message and exit
-v, -V, --version Print software version info
-i INPUTPATH, --inputPath INPUTPATH
输入 BunKws 输出的模型文件目录路径
注意:
1、该目录下应包含如下文件
model_79.pt
├── keyword.txt # 词有序列表 (主要给定顺序)
├── mean_std.txt # 模型归一化参数
├── model_fornax.h # 模型文件
└── report.xlsx # 模型测试表 (主要提供阈值)
-r SDKROOTPATH, --sdkRootPath SDKROOTPATH
SDK 跟路径,该路径是一切操作的基础路径
注意:
1、该路径以 ovp_aiot 为止
例如: ~/work/2025-06-11/ovp/ovp_aiot
-p PROJECTNAME, --projectName PROJECTNAME
设置项目名称 (后续模型会部署到 SDK 中以该项目名的目录中)
注意:
1、名称可以由字母和下划线组成,不允许其他字符
例如: xiaoshu_ai
-dv DEPLOYVERSION, --deployVersion DEPLOYVERSION
自定义部署的项目模型版本 (主要是给部署到 SDK 的模型定义一个版本)
注意:
1、可以不设置,默认 v0.1.0,如果当前项目下有版本重复,工具运行过程中会跳出是否覆盖提示
2、如果设置的版本在当前项目下有版本重复,工具运行过程中会跳出是否覆盖提示
-b, --bulidConfig
使能生成编译配置,默认不打开,如果用户需要工具自动生成的配置,需要使用 -b/--bulidConfig
-d, --debug
使能调试模式,默认不打开、主要调整打印等级为 debug, 输出详细打印,用于调试
4.使用示例*
4.1.情况一、训练的均是主唤醒词*
-
这个情况下,基本是不用在文件中配置事件ID 和是否为主唤醒,直接生成即可
-
事件ID 默认 100
-
自动默认为主唤醒
$ ./kwsModelAutoDeploy -i model_77.pt -r ~/work/2025-06-11/ovp/ovp_aiot -p xiaoshu_aiot -dv v.0.1.0 -b WARNING: [KwsModelAutoDeploy]: 注意!xiaoshu_aiot 项目已存在 并且设置的 v.0.1.0 版本已经存在 WARNING: [KwsModelAutoDeploy]: 注意!xiaoshu_aiot 项目下,已有版本: ['v.0.1.0'] 是否覆盖已有的 v.0.1.0 版本? y/n: yes INFO: [GetWordThreshold]: 提示! 词: 你好小树 未在 /home/liushk/work/2025-04-21-Kws2SdkDeploy/ovp/ovp_tws/tools/kws_model_auto_deploy/model_77.pt/keyword.txt 中配置 '事件ID',将默认为 100 INFO: [GetWordThreshold]: 提示! 词: 你好小树 未在 /home/liushk/work/2025-04-21-Kws2SdkDeploy/ovp/ovp_tws/tools/kws_model_auto_deploy/model_77.pt/keyword.txt 中配置 '是否主唤醒',将默认为主唤醒 INFO: [GetWordThreshold]: 提示! 词: 打开灯光 未在 /home/liushk/work/2025-04-21-Kws2SdkDeploy/ovp/ovp_tws/tools/kws_model_auto_deploy/model_77.pt/keyword.txt 中配置 '事件ID',将默认为 100 INFO: [GetWordThreshold]: 提示! 词: 打开灯光 未在 /home/liushk/work/2025-04-21-Kws2SdkDeploy/ovp/ovp_tws/tools/kws_model_auto_deploy/model_77.pt/keyword.txt 中配置 '是否主唤醒',将默认为主唤醒 INFO: [GetWordThreshold]: 提示! 词: 关闭灯光 未在 /home/liushk/work/2025-04-21-Kws2SdkDeploy/ovp/ovp_tws/tools/kws_model_auto_deploy/model_77.pt/keyword.txt 中配置 '事件ID',将默认为 100 INFO: [GetWordThreshold]: 提示! 词: 关闭灯光 未在 /home/liushk/work/2025-04-21-Kws2SdkDeploy/ovp/ovp_tws/tools/kws_model_auto_deploy/model_77.pt/keyword.txt 中配置 '是否主唤醒',将默认为主唤醒 WARNING: [KwsModelAutoDeploy]: 本次模型部署词信息概览 WARNING: 顺序: 0 词: 你好小树 阈值: 935 事件ID: 100 是否为主唤醒: 1 WARNING: 顺序: 1 词: 打开灯光 阈值: 907 事件ID: 100 是否为主唤醒: 1 WARNING: 顺序: 2 词: 关闭灯光 阈值: 903 事件ID: 100 是否为主唤醒: 1 INFO: [CreateovpAcousticModelPackage]: 提示! 生成 ovp 声学模型包! INFO: [CreateovpAcousticModelPackage]: 提示! 生成 ovp 声学模型包完成! INFO: [RebulidovpAutoconf]: 提示! 使用的默认配置为: /home/liushk/work/2025-04-21-Kws2SdkDeploy/ovp/ovp_tws/configs/kws_model_auto_deploy_config/kws_model_auto_deploy.config INFO: [Shell]: 提示! 命令: make defconfig INFO: [RebulidovpAutoconf]: 提示! 生成在 ovp SDK 工程下生成: /home/liushk/work/2025-06-11-tuya_b/ovp/ovp_aiot/.config 配置成功!!!
4.2.情况二、训练的有主唤醒和指令词*
-
这个情况下、需要进入 KWS 原始模型包中,在
keyword.txt
正确配置事件ID 和 是否为主唤醒 -
工具会读取 keyword.txt 中的词、词顺序、事件ID、是否为主唤醒等等内容,跟随部署到 SDK
-
缺失、不配置的情况自动使用默认值
- 事件ID 默认 100
- 自动默认为主唤醒
-
操作步骤一、
-
配置
事件ID
和是否为主唤醒
内容vim model_77.pt/keyword.txt #进入 BunKws 输出模型包的有序词列表文件 #修改前 <filler> -1 你好小树 0 打开灯光 1 关闭灯光 2 # 增加 事件ID 是否主唤醒字段,修改后 <filler> -1 你好小树 0 事件id: 100 是否主唤醒:1 #1 表示主唤醒,0 表示非主唤醒 打开灯光 1 事件id: 101 是否主唤醒: 0 关闭灯光 2 事件id: 102 是否为主唤醒 0
-
操作步骤二、
-
修改完成后,保存退出
-
执行工具部署
$ ./kwsModelAutoDeploy -i model_77.pt -r ~/work/2025-06-11/ovp/ovp_aiot -p xiaoshu_aiot -dv v.0.1.0 -b WARNING: [KwsModelAutoDeploy]: 注意!xiaoshu_aiot 项目已存在 并且设置的 v.0.1.0 版本已经存在 WARNING: [KwsModelAutoDeploy]: 注意!xiaoshu_aiot 项目下,已有版本: ['v.0.1.0'] 是否覆盖已有的 v.0.1.0 版本? y/n: yes WARNING: [KwsModelAutoDeploy]: 本次模型部署词信息概览 WARNING: 顺序: 0 词: 你好小树 阈值: 935 事件ID: 100 是否为主唤醒: 1 WARNING: 顺序: 1 词: 打开灯光 阈值: 907 事件ID: 101 是否为主唤醒: 0 WARNING: 顺序: 2 词: 关闭灯光 阈值: 903 事件ID: 102 是否为主唤醒: 0 INFO: [CreateovpAcousticModelPackage]: 提示! 生成 ovp 声学模型包! INFO: [CreateovpAcousticModelPackage]: 提示! 生成 ovp 声学模型包完成! INFO: [RebulidovpAutoconf]: 提示! 使用的默认配置为: /home/liushk/work/2025-04-21-Kws2SdkDeploy/ovp/ovp_tws/configs/kws_model_auto_deploy_config/kws_model_auto_deploy.config INFO: [Shell]: 提示! 命令: make defconfig INFO: [RebulidovpAutoconf]: 提示! 生成在 ovp SDK 工程下生成: /home/liushk/work/2025-04-21-Kws2SdkDeploy/ovp/ovp_tws/.config 配置成功!!!
5.附加说明:编译固件,烧录芯片*
-
经过该工具部署后(需指定参数-b),用户可以直接回到 SDK 工程,直接编译出固件,并且可以直接把固件烧录芯片(板子)中。
-
编译
cd ~/work/2025-06-11/ovp/ovp_aiot #回到 SDK 根目录
make clean;make #编译固件
- 烧录
~/work/2025-06-11/ovp/ovp_aiot/tools/bootx #回到固件烧录脚本目录
# 烧录脚本 串口号 串口波特率
./flash_nor.sh 0 1000000