OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 123|回复: 0

AT32 AI Studio关键字识别应用笔记

[复制链接]

48

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
195
金钱
195
注册时间
2024-12-9
在线时间
10 小时
发表于 前天 14:05 | 显示全部楼层 |阅读模式
前言
随着人工智能技术从云端向设备边缘的持续迁移,端侧智能(Edge AI)正成为实现实时响应、数据隐私保护和低功耗计算的关键范式。在这一趋势下,高效、易用的开发工具对于降低AI应用落地门槛至关重要。AT32 AI Studio作为一款面向端侧AI应用开发的集成平台,为开发者提供了从模型优化到最终部署的全流程支持,极大地简化了在资源受限的嵌入式设备上部署智能模型的复杂性。
关键字识别(Keyword Spotting, KWS)作为语音交互的基石技术,广泛存在于智能家居、可穿戴设备、车载系统等场景中,其核心需求正是低延迟、高准确率与本地化处理。传统的云端语音处理方案难以完全满足这些需求,因此,基于端侧设备的KWS方案成为了必然选择。本应用笔记旨在通过一个具体的KWS案例,系统性地展示如何利用AT32 AI Studio这一强大工具,快速完成模型准备、优化、部署及验证的全过程。我们期望通过这份笔记,为开发者提供一条清晰的路径,将先进的AI语音模型高效、可靠地赋能于实际的边缘计算产品之中。

支持型号列表:AT32F403A/AT32F435

备注:本文档仅供有需求的小伙伴们参考,仅作分享使用,文档中涉及的相关图片和视频资料,可访问雅特力官网获取下载,实现更快捷的使用:https://www.arterytek.com/cn/support/index.jsp?index=1

1                 概述
本案例演示了使用AT32 AI Studio平台,完成一个轻量级关键字识别应用的完整开发流程。案例聚焦于实现常用关键字“YES”、“NO”、“LEFT”、“RIGHT”等特定命令词的精准、实时识别,并最终将模型部署到真实的边缘计算设备上运行。
主要功能:
l  数据集加载与预处理案例演示了如何导入和整理自定义的语音数据集,并利用平台工具完成音频特征提取(如梅尔频谱图),为模型训练准备好标准化的输入数据。
l  模型训练与优化采用适合边缘设备的轻量级神经网络进行训练。核心
在于利用AT32 AI Studio的量化压缩工具对模型进行优化,在尽量保持精度的前提下显著减小模型体积与计算量,以满足边缘端部署的严苛要求。
l  模型验证与部署将优化后的模型转换为硬件适配的格式,并在模拟环境或真实开发板上进行精度与性能评估,确保识别准确率与实时性达到预期,最终生成指定硬件的完整项目工程代码。

1.1           硬件环境
本应用笔记基于AT-START-F435开发板和AT32-Audio-EV,主要包含以下器件:
n  AT32F435 MCU主控芯片
n  WM8988音频编解码器
n  W25Q128 SPI Flash存储器
n  TC8002D音频功放IC
n  S08OB383麦克风
实际电路图可参考文件AT_START_F435_V1.1.zip和AT32_Audio_EV_V2.1.zip


1.2           软件环境
本应用笔记基于AT32 AI Studio平台进行软件开发,完整项目所需的软件包括:
n  AT32_AI_Studio

通过官方下载链接AT32_AI_Studio获取最新版软件,解压AT32_AI_Studio.zip后可得到AT32_AI_Studio.exe,双击后即可进入软件界面

n  Keil MDK
用于AT32系列开发板的程序开发与编译
n  串口调试工具

用于开发板数据接收和调试信息收集等

2                          KWS模型训练
本章节主要介绍如何通过AT32 AI Studio平台进行KWS模型训练,包括数据集导入、模型训练、验证和部署等操作。
2.1           数据集导入
KWS模型训练的数据集中被引用次数最多的就是TensorFlow Datasets所提供的speech_commands数据集。本案例也将使用该数据集进行KWS模型训练,该数据集具有以下特点:
n  包含35个常用的英文关键词
n  约10万条1秒时长的音频文件
n  包含背景噪声样本
n  专为小型的关键词识别模型训练设计
关于数据集下载及更多详细内容请参考:https://www.tensorflow.org/datasets/catalog/speech_commands

数据集下载解压后放入AT32 AI Studio软件所在目录,在软件界面中点击数据集路径-浏览,即可选择指定的模型训练数据集

2.2            模型训练和验证
数据集导入成功后即可开始模型训练和验证的操作,AT32 AI Studio提供了关于模型训练中最核心的三个配置项:学习率(learningrate)、批量大小(batch size)和轮次(epoch),这三个配置项的作用如下:
n  学习率:决定了模型根据计算出的误差(梯度)来调整自身参数时的幅度
n  批量大小:对训练样本进行分批处理的数据量大小
n  轮次:模型训练过程中训练样本被遍历和学习的次数

这三个参数在模型训练过程中相互关联,在实际模型调试中,通常首先确定一个合适的批量大小,其设定可基于运行AT32 AI Studio软件的硬件性能而定,然后通过实验寻找最佳的学习率和轮次,这是模型成功训练的基础。

设定好以上三个参数后即可点击开始按钮,进行自动化的模型训练。开始训练后,根据运行软件的硬件性能以及训练参数的不同,训练完成所花费的时间不等。以上述参数为参考,训练所需时间约610秒,可通过训练日志查看详细的训练过程以及报错信息等内容。

在模型训练完成后,软件将自动进行模型验证工作,主要包含:
1)      性能评估:在独立测试集上计算准确率、损失等核心指标,并进行细致的误差分析(如混淆矩阵);
2)      质量诊断:通过绘制训练曲线诊断过拟合/欠拟合,并可视化分析预测结果;

3)      部署验证:测试模型推理速度、资源消耗,并验证格式转换(如转TensorFlow Lite)后的精度与功能完整性。

经过以上步骤最终确保模型从实验状态达到生产就绪标准,接下来就可进行模型部署了。

2.3            模型部署
模型部署阶段用户可以选择将要部署的模型、开发板、项目类型等,主要的部署配置如下:
选择模型:选择将要部署的模型
TFLite模型文件:选择模型文件路径
输出项目路径:选择部署项目的生成路径
开发板:选择AT32 AI Studio支持的开发板
使用NPU:可选是否支持NPU
应用:指定模型的应用类型,可选音频、视觉和传感器
项目类型:指定生成项目所使用的开发环境,可选Keil和VSCode
张量内存池大小:设定模型运行所需占用的内存大小

设定完成后直接点击执行按钮即可在指定目录下生成工程项目。

3                          软件实现
本章节详细阐述了关键字唤醒(KWS)系统的核心软件实现流程。整个系统在资源受限的嵌入式MCU上运行,其软件架构被清晰地划分为三个核心模块:音频预处理、音频降噪和KWS模型部署。这三个模块依次串联,构成了一条完整的“声音采集->信号增强->智能识别”处理流水线,其软件实现架构如下图所示。

3.1           音频预处理
音频预处理模块负责将连续的音频流转化为可供后续模块处理的、包含有效语音的定长数据段。其核心任务是从原始音频流中实时检测并截取长度为1秒的潜在语音片段。
3.1.1       音频采集与缓冲
数字麦克风(I2S接口)持续采集环境音频。通过I2S外设配合DMA(直接存储器访问)控制器,实现高效、零CPU占用的数据搬运。DMA将采集到的PCM音频数据自动存入一个预定义的全局环形缓冲区中。该设计确保了在MCU处理当前数据帧时,不会丢失新采集的音频样本,实现了数据的连续无缝缓存。
3.1.2       语音活动检测(VAD
系统并非简单地按固定时间切片,而是通过一个轻量级的语音活动检测流程来触发有效片段的捕获。该流程持续监控环形缓冲区中的数据,其工作原理如下图所示。

具体步骤如下:
1)      短帧分析:系统定期(例如,每100毫秒)从环形缓冲区中取出一个短时音频帧(如20ms)。
2)      频域转换:利用CMSIS-DSP库中的CFFT(复数FFT)函数对该短帧进行快速傅里叶变换,将其从时域转换到频域。
3)      特征判断:在频域内,计算该短帧在典型人声频率范围内的能量,并与预设的静音阈值进行比较。当能量超过阈值时,则判定可能检测到人声。
4)      数据捕获:一旦检测到人声,软件立即从环形缓冲区中,以当前时刻为结束点,向前定位并提取连续、无间断的1秒(16000个采样点)音频数据。此机制确保了捕获的音频片段末尾包含触发VAD的语音,提高了关键词被完整捕获的概率。

5)      交付数据:将这1秒的原始PCM音频数据复制到专用的全局数组 audio_buffer_1s中,并为下一模块设置数据就绪标志audio_ready_flag = 1。

3.2            音频降噪
音频降噪模块旨在提升语音信号的信噪比,从而在嘈杂环境下增强KWS模型的识别鲁棒性。本系统采用频谱减法对捕获的1秒音频进行增强处理。
3.2.1       算法原理
频谱减法基于一个核心假设:噪声是加性的,并且其频谱特性在短时间内变化缓慢。算法在频域内,从带噪音频信号的幅度谱中估计并减去噪声信号的幅度谱,而保留原始语音的相位谱用于信号重建。
3.2.2       实现流程
该模块的处理流程是一个标准化的数字信号处理链,如下图所示。

具体处理步骤概述如下:
1)      分帧与加窗:将1秒的时域信号分割为多个短时重叠帧(如20ms一帧,重叠50%),并对每帧应用汉宁窗以减少频谱泄漏。
2)      频域变换:对每一帧加窗后的信号进行FFT,得到复数形式的频谱,从中分离出幅度谱和相位谱。
3)      噪声估计与谱减:在系统启动初期或检测到的静音帧中,递归平均估计背景噪声的功率谱。在后续帧中,执行核心的谱减运算:|Y_enhanced(f)|^2 = |Y(f)|^2 - α *|N(f)|^2,其中 α为过减因子。为防止过度削减产生音乐噪声,结果会与一个谱下限(β * |N(f)|^2)取最大值。

4)      时域重建:使用处理后的幅度谱与原始相位谱结合,进行IFFT变换回时域,并通过重叠相加法合成完整的、降噪后的1秒音频信号,存入processed_audio_buffer。

3.3            KWS模型部署
KWS模型部署模块是系统的AI推理引擎,基于ARM CMSIS-NN和TensorFlow Lite Micro框架,负责将降噪后的音频转换为具体的唤醒词识别结果。
3.3.1       模型初始化
在main函数起始阶段,完成一次性的初始化工作:
1)      模型加载:将预训练并量化的TFLite模型加载到内存中。
2)      解释器创建:创建并配置 tflite::MicroInterpreter实例。
3)      内存分配:从专用的内存池(Tensor Arena)中为模型输入、输出及中间张量动态分配所需内存。
3.3.2       实时推理循环
系统的主体是一个无限循环,其状态机逻辑如下图所示,它持续等待并处理就绪的音频数据。

循环内的每一步操作如下:
1)      等待数据:循环持续检查由前述音频预处理和降噪所设置的标志位 audio_ready_flag。
2)      特征提取:当标志位置位,立即对降噪后的 processed_audio_buffer执行MFCC(梅尔频率倒谱系数)特征提取,生成一个包含多维特征向量的二维数组,该数组符合模型输入节点的维度要求。
3)      执行推理:将MFCC特征数据拷贝到解释器的输入Tensor中,随后调用 interpreter.Invoke()函数启动神经网络的前向传播计算。CMSIS-NN加速库在此阶段优化卷积等关键算子,确保在MCU上高效执行。
4)      结果输出:推理完成后,从解释器的输出Tensor中读取结果。输出向量中,表示每个预设关键词(“YES”、“NO”、“LEFT”、“RIGHT”等)及噪音的概率。系统判定概率是否超过置信度阈值,若超过,则通过串口打印识别到的关键词及其置信度。
5)      复位标志:处理完成后,将 audio_ready_flag清零,系统重新进入等待状态,准备处理下一段有效的1秒音频。

至此,本系统的软件设计实现了从低层音频采集、中频信号处理到高层AI推理的全栈功能。通过环形缓冲区与DMA保障了数据采集的实时性,通过VAD与频谱减法提升了系统的有效性和环境适应性,最终通过CMSIS-NN加速的TFLite Micro框架实现了准确、高效的关键词唤醒功能。三个模块职责明确、协同工作,构成了一个高效可靠的嵌入式KWS解决方案。

4                          案例实作
本章节主要介绍关键字识别案例在开发板上的实际部署与测试过程,涵盖硬件连接、软件配置及功能验证的完整流程
4.1           操作方法
本案例的硬件平台由前述的AT-START-F435和AT32-Audio-EV两块开发板构成。底板为搭载AT32F435MCU的主控板,其集成了Arduino接口和具备USB转串口功能的AT-LINK调试器。数字音频采集子板AT32-Audio-EV,搭载WM8988音频编解码器和麦克风。
操作步骤:
1)      通过将子板的Arduino接口与底板的对应接口垂直堆叠,即可完成硬件连接。
2)      使用一根Mini-USB线将底板连接到电脑,系统将由电脑USB口供电。
3)      在电脑上打开串口调试工具,选择识别到的AT-LINK虚拟串口,配置波特率为460800,即可建立通信。
4)      在KeilMDK环境中打开项目工程,完成编译后,通过集成的AT-LINK将固件下载至主控板。
4.2           实验效果
程序下载完成后,复位启动,串口工具将显示初始化成功的信息。

此时,对着麦克风说话,系统检测到预设的关键词后,识别结果便会通过串口打印输出,完成一次完整的语音交互测试,如下图。





回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /1 下一条

正点原子公众号

如发现本坛存在违规或侵权内容, 请点击这里发送邮件举报 (或致电020-38271790)。请提供侵权说明和联系方式。我们将及时审核依法处理,感谢配合。

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2026-7-11 15:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表