Edge Impulse 唤醒词模型训练 | 技术集结

描述

今天,将手把手带领学习如何训练一个语音关键词模型部署到嵌入式硬件上,采用  Edgi-Talk 平台适配 Edge Impulse,当然原理在其他的ARM嵌入式平台也是通用的。让我们看看如何让 Edgi-Talk 开始使用边缘机器学习!

目录

 

Edge Impulse 简介


 

创建账号


 

录制数据集


 

数据上传


 

数据分割
 


 

模型训练
 


 

模型评估
 


 

模型集成
 


 

淘宝链接直达
 

1 Edge Impulse 简介

Edge Impulse 是领先的边缘人工智能开发平台,致力于帮助开发者、工程师和企业将智能AI快速部署到任何边缘设备(如微控制器、传感器和物联网硬件)上。

你可以轻松采集传感器数据、构建数据集、训练并优化机器学习模型,然后一键部署到全球数千种硬件生态系统,无需深厚的AI专业知识即可实现快速原型开发和商业化落地。

2 创建账号
 

操作步骤:

1. 登录Edge Impulse,https://edgeimpulse.com/

2. 注册账号;

3. 通过 create new project 创建工程

IMPULSE

2 录制数据集

1.给 Edgi-Talk 开发板烧录 UAC 固件,用于收集音频数据:uac-firmware.hex;链接:https://github.com/RT-Thread-Studio/sdk-bsp-psoc_e84-edgi-talk/releases/download/1.1.0/uac-firmware.hex

2.下载音频数据集录制软件:Audio-recording.exe;链接:https://github.com/RT-Thread-Studio/sdk-bsp-psoc_e84-edgi-talk/releases/download/1.1.0/audio-recording.exe

3.将开发板的 USB 连接到电脑上,电脑会弹出音频输入设备;

4.音频输入设备需要选择:Audio Control(MME)设备;

IMPULSE

5.点击开始录制进行一次长达10 秒的录制,录制期间需要保证清晰的对话,唤醒词录制需要间隔1-2s停顿时间;

6.录制好一次后,点击右侧的“保存录音”选择,进行一次保存;

7.当前序号选项默认会递增,请重复上述步骤录制 20-50 个关键词音频文件;

8.最终录制两类音频文件,一类是唤醒词,一类是噪音;

IMPULSEIMPULSEIMPULSE

3 数据上传

1. 点击 add exsiting data

2. 选择upload data

IMPULSEIMPULSE

3. 选择电脑上的音频文件夹并上传,此时网站会根据文件名称自动进行分类(nocie,唤醒词)

IMPULSE

4 数据分割

操作步骤:

1. 首先选择 Training 列表的数据,先点击筛选,输入我们 唤醒词 的文件前缀,筛选出我们要操作的文件

IMPULSE

2. 右侧点击音频文件后,选择 Split sample,平台会将声音文件切分为大致1s的音频片段

IMPULSE

3. 在分割音频界面,可以调整音频片段,以覆盖唤醒词的声音内容,播放进行试听和调整

IMPULSE

每个矩形框就是拆分提取的一个子模块,如有必要,可以调整矩形的位置,让其完全覆盖住我们的唤醒词音频区,或者也可以做一些添加或删除片段的操作。

4. 拆分后的音频文件都会变成独立的音频文件,网站会自动添加后后缀名(xxxx_Sn)

IMPULSE

5. 按照上述步骤,将全部唤醒词文件进行分割好

6. 选择 Test 列表的数据,针对 唤醒词 文件继续进行分割,noice 标签可以不用分割

IMPULSE

7. 对数据进行分类:按照下图步骤将数据集分为两大类,分别是 唤醒词 + 其他

IMPULSEIMPULSEIMPULSE

5 模型训练

5.1 创造脉冲信号(预处理/模型定义)

脉冲在这里是 Edge Impulse 用来表示数据处理—训练管道的词汇。

创建脉冲并将窗口长度设置为 1000 毫秒,窗口长度增加设置为 500 毫秒(重叠窗口以增强数据),频率设置 16KHz。

这些设置表示,每次执行推理时,传感器数据采集将在 1000 毫秒内完成,具体采集次数由采样频率决定。

简而言之,你的设备会在 1000 毫秒的时间窗口内收集 N 个数据样本,随后对这些样本进行预处理,并输入神经网络以获得推理结果。

操作步骤:

1. 点击左侧 Create impulse

2. 然后点击 Add a processing block  添加 Audio(MFCC)

IMPULSE

3. 会弹出下面的对话框,使用默认的配置即可:

IMPULSE

4. 使用MFCC,它使用梅尔频率倒谱系数从音频信号中提取特征,这对人类声音非常有用。

IMPULSEIMPULSE

5. 然后点击 Add a learning block 添加 Classification 模块,它通过使用卷积神经网络进行图像分类从头开始构建我们的模型。

IMPULSEIMPULSE

6. 最后点击save impulse,保存配置

IMPULSE

5.2 预处理(MFCC)

MFCC 是一种广泛使用的方法,用于将音频信号转换为表示语音频率模式的 2D 特征,这些特征非常适合基于语音的识别模型

我们创建录制音频生成的频谱图图像,操作步骤:

1. 点击MFCC,我们可以保留默认参数值

2. 直接点击Save parameters

IMPULSE

3. 点击 Generate features,生成3个标签数据的特征

IMPULSEIMPULSE

5.3 模型设计与训练(Classifier)

下一步,我们需要对模型的结构进行设计和开始训练,步骤如下:

操作步骤:

1. 点击左侧  Classifier,整个模型的结构设计已经配置好

2. 然后点击  save&train,开始训练模型。

IMPULSE

通过多次迭代,可以提升模型泛化能力。

经过验证,提升方法包括:优化测试数据集、调整模型结构(如增加更多卷积层)等。

平台对于训练时间有限制要求,免费用户只能进行训练时间在20分钟以内的训练;

如果需要不限时间,需要购买付费服务才可以进行。

6 模型评估

操作步骤:

1. 点击左侧的 Model testing

2. 然后点击 Classify all

3. 开始分类所有的测试集数据。

IMPULSE

4. 测试之后,可以在右侧的 Result 查看测试结果

IMPULSE

7 模型集成

7.1 生成模型库文件

模型训练完成后,我们需要生成在 Edgi-Talk 平台上运行的库文件。

操作步骤:

1. 点击左侧 Deploment

2. 搜索 Arduino library 和 TensorFlow Lite

3. 然后点击  Build,待build完成后,保存下载的库文件。

IMPULSEIMPULSE

7.2 部署到嵌入式硬件

1. 将上一步下载得到的压缩包进行解压,可以得到如下的文件目录

IMPULSE

2. 获取最新的 Edgi-Talk 开发板 SDK,进入Edgi_Talk_M55_XiaoZhi/edge-impulse 目录,删除下图中的两个文件夹,然后将上一步中的两个文件夹,替换到当前目录中,即可实现模型文件的替换

IMPULSE

3. 编译 Edgi_Talk_M55_XiaoZhi 项目,并烧录到开发板中。

4. 在 Edgi-Talk 串口终端中输入下面的指令,开启唤醒词测试:

  •  
  •  

xz_wakeword_initxz_wakeword_start

4. 对开发板说出唤醒词,这里演示使用的是“xiaorui,xiaorui”,当说出唤醒词的时候串口终端会打印日志

IMPULSE

 

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分