Bunkws 是杭州国芯微自研的一款端到端唤醒词训练框架,其独创的从"数据生成->模型训练->测试报告输出"全链路自动化框架,让零算法基础的开发者也能完成从训练到芯片级模型落地,开启智能硬件开发的极简时代。
# 我的 home 路径如下: /home/liushk
# 那么我的通用数据存储路径: /home/liushk/corpus
# 进入示例模版工程
cd ~/bunkws/egs
cp -r earphone xxxx # 中文项目
# 或
cp -r hi_ella xxx # 英文项目
我本次训练的是一个中文项目,名称取名为 aiot
。根据工程示例的解释,我可以选择:
本次项目空间大,可以选择大一点的模型,因此选择 v0.1.0 版本。所有介绍均以该项目为例,操作如下:
# 进入示例模版工程
cd ~/bunkws/egs
cp -r earphone aiot # 中文项目
在前面的下载相关文件步骤中,下载过通用语料 corpus.tar.gz
,并且在解压 BunKws 工程步骤中已经解压在 home 目录下,那么我的配置路径方法如下:
# 我的 home 路径如下: /home/liushk
# 那么我的通用数据存储路径: /home/liushk/corpus
# 我选择该新项目训练过程中产生的数据,存储路径为 /home/liushk/corpus/kws/aiot
# 创建模型训练数据存储路径
mkdir -p /home/liushk/corpus/kws/aiot
cd ~/bunkws/egs/aiot/v0.1.0
# 配置路径
vim run.sh
把该文件中如下内容修改成:
corpus_dir=/home/liushk/corpus # 通用语料路径
project_dir=/home/liushk/corpus/kws/aiot
在上述步骤中,我们创建了一个 /home/liushk/corpus/kws/aiot
目录用于存储本项目的所有生成数据集过程中的语料。Bunkws 框架定义,在 project_dir
路径下,会自动读取 cmd.txt
内容作为唤醒词、指令词。
# 我的 home 路径如下: /home/liushk
# 那么我的通用数据存储路径: /home/liushk/corpus
# 我选择该新项目训练过程中产生的数据,存储路径为 /home/liushk/corpus/kws/aiot
vim /home/liushk/corpus/kws/aiot/cmd.txt
写入格式如下,一个指令、唤醒词一行,以换行分割,除唤醒词、指令词以外不要有其他内容:
你好小树
打开灯光
关闭灯光
一键完成:数据生成、数据准备、模型训练、模型测试和部署
./run.sh # 一键训练
可以自主控制运行步骤,主要为了在微调迭代使用,减少不必要的时间。但是请注意,步骤顺序有前后依赖,数据准备好才可训练。
# 数据生成
./run.sh --stage -1 --stop_stage -1
# 数据准备
./run.sh --stage 0 --stop_stage 1
# 模型训练
./run.sh --stage 2 --stop_stage 2
# 模型测试和部署
./run.sh --stage 3 --stop_stage 3
Bunkws 运行完成之后,会输出几份模型和测试报告,根据测试报告结果,挑出你最认可的模型即可。
注意:报告输出路径会在运行结束时候打印出来,报告有打印输出,也有详细的 xlsx 表格,根据需要获取即可。
model_grus.h
该版支持 GX8002、GX8005/GX8006 芯片:
model_grus.h
model_fornax.h
(模型)mean_std.txt
(归一化参数)report.xlsx
keyword.txt