上期跑了下小智的全流程由于大部分AI都跑在云端Edgi Talk和云端LLM通过WS协议通信但小智的唤醒关键词检测是跑在Edgi Talk本地这就有个音频数据收集、数据分类、数据训练、数据部署、数据推理等过程这里参考RT-Thread官方教程https://www.eet-china.com/mp/a488911.html来进行。在小智工程有个edge-impulse目录就是放TFLite模型数据的。1. 数据收集这里用到Edgi Talk的BSP仓库里录音工具“audio-recording.exe”和录音固件“uac-firmware.hex”见https://github.com/RT-Thread-Studio/sdk-bsp-psoc_e84-edgi-talk/releases/tag/1.1.0先用MobusToolBox Programmer烧录固件“uac-firmware.hex”Board选CustomDevice选“PSE846GPS2DBZC4A”打开工具audio-recording.exe默认配置分别各自录制20次唤醒词、20次噪音并保存两者一定命名区分开这里唤醒词命名xiaorui_xxx噪声命名noise_xxx2. 数据分类打开https://edgeimpulse.com/并注册账号新建工程上传刚才收集的录音原始数据返回后现在要对20个唤醒词、20个噪音音频进行分类Training可以看到所有刚上传音频数据点击右边漏斗图标并在过滤框输入“xiaorui”对20个唤醒词音频数据全部逐个进行分割裁剪掉多余没有唤醒词出现的废段具体音频文件右边竖着三点图标弹出菜单点击“Split sample”弹出的音频编辑软件类似市面剪辑软件操作逻辑裁割有效片段裁割完的音频变成s1,s2,s3等20个噪音音频也是一样的过程输入“noise”过滤再全部逐个裁割。然后过滤框分别输入“xiaorui”“noise”过滤下添加标签进行分别具体为过滤xiaorui时点击右边复选图标再全部勾选过滤后的音频文件再Edit label输入“xiaorui”所有噪音文件同理至此所有分割后的音频数据全都归成“xiaorui”“noise”两类。3. 数据训练点击Create impulse目标设备由于没有M55400MHz这里切到M7216MHz然后依次添加处理块、学习块即点击“Add a process block”选择“MFCC(Audio)”点击“Add a learning block”选择“Classification”然后点击“Save Impulse”保存脉冲。然后设置MFCC参数可保持默认保存参数后点击“Generate features”后产生分类数据的特征点击左边“Traing”栏可看到配置然后点击“Save train”开始关键的训练过程时间有点长这里可以检查下实际效果可选点击左边“Model testing”栏点击Classify all,右边显示有测试数据的推理结果4. 数据部署到这里模型初步建立完成需要部署到Edgi Talk上点击左侧“Deployment”栏弹出部署配置对话框Deployment target选Arduino libraryInference engine选TensorFlow Lite然后点击Build进行编译生成模型源码生产源码下载下来并解压其arduino工程结构很清晰模型文件在src目录备份小智工程Edgi_Talk_M55_XiaoZhi\edge-impulse下的model-parameters、tflite-model目录把刚解压的arduino工程src下的model-parameters、tflite-model目录复制过来5. 数据推理编译小智工程运用新生成的模型文件运行后输入shell指令xz_wakeword_init和xz_wakeword_start让其休眠再喊出唤醒词可以看到识别成功但命中率只有84.77%。---------------------作者mingxiangjun链接https://bbs.21ic.com/icview-3514328-1-1.html来源21ic.com此文章已获得原创/原创奖标签著作权归21ic所有任何人未经允许禁止转载。