【2021集创赛】Risc-v杯一等奖:自适应噪声环境的超低功耗语音关键词识别系统

本作品参与极术社区组织的有奖征集|秀出你的集创赛作品风采,免费电子产品等你拿~活动。

团队介绍

参赛单位:东南大学
队伍名称:Hey Siri
指导老师:刘波
参赛队员:钱俊逸、张人元、王梓羽
总决赛奖项:全国一等奖

摘要

语音关键词识别(Keyword Spotting, KWS)技术已普遍应用在以电池为主的供电设备中,对于此类设备低功耗是一个重要考虑的因素。然而,单独的低功耗神经网络因注重功耗的降低,难以适应高噪声环境下的使用,为了能灵活适应不同噪声场景,并尽可能降低系统功耗与面积,本文提出了一种基于蜂鸟E203和神经网络硬件加速器的自适应噪声环境超低功耗语音关键词识别系统。

本文设计的SoC系统处理器基于RISC-V指令集,通过NICE协处理器接口接入所设计的语音识别神经网络加速器,处理器通过自定义指令可控制加速器开关并读取运算数据,数据最后通过E203处理器处理并将识别结果实时显示在OLED屏上,同时可通过语音控制OLED屏上的贪吃蛇小游戏。此外,该系统可针对低信噪比和高信噪比噪声环境切换不同精度的神经网络,实现在噪声持续变化的环境中,根据信噪比大小自动选择合适的工作模式。在语音识别加速器算法上,本文实现了基于SNR预测模块的神经网络。第一,本文引入了SNR预测模块,对环境噪声进行预测。在高信噪比环境下使用超低功耗的近似权重二值化神经网络(Binary Weight Neural Network, BWN),在低信噪比环境下使用带噪声训练的精确BWN神经网络。第二,在高信噪比环境下,为了降低神经网络的复杂度,本文针对神经网络训练提出了逐步量化方案,筛选出适合将网络权重量化到1bit的网络模型,引入近似计算单元以降低功耗,同时针对能量化为BWN的网络模型,采用软硬件协同设计的方法进行算法定制优化,整体算法能实现12个语音关键词的识别,在近麦克风语音环境下准确率为89.1%,在15dB信噪比环境下准确率为86.5%。第三,在低信噪比环境下,为了不降低神经网络的识别率,本文选择带噪声训练的精确BWN神经网络,在0dB信噪比环境下准确率为88%。

本文基于TSMC 22nm ULL工艺,完成了语音识别加速器的综合(Design Compiler, DC)、功耗分析(PrimeTime PX, PTPX)以及后端版图设计工作,版图设计面积为0.6mm2。当工作频率为250kHz,IO驱动电压为1.8V,SRAM电压为0.6V,logic电路电压为0.39V时可以实现对语音关键词的实时判断,HVT工艺下加速器芯片功耗约为6.7μW。

系统功能介绍

在这里插入图片描述
图1 自适应噪声环境的超低功耗语音关键词识别系统功能框图

自适应噪声环境的超低功耗语音关键词识别系统总体功能框图如上图1所示,总体功能框图主要分为E203处理器部分、语音识别加速器部分,以及软硬件分别验证成功后的SoC系统搭建部分,各部分实现的功能如下所述:

E203处理器实现功能:E203处理器主要负责通过在软件与硬件语音识别加速器之间进行控制与数据读写,并通过按键与屏幕显示的方式实现良好的人机交互体验,其主要包括如下三个部分:NICE接口、加速器控制以及OLED显示。

  1. NICE接口:NICE接口部分实现了通过E203处理器对语音识别加速器的控制与数据读写,语音识别加速器通过标准的NICE接口接入E203处理器中,在NICE接口中自定义指令,接收E203发送的从加速器控制部分写入的指令,实现对语音识别加速器的开启和关闭,并持续使用寄存器接收加速器运行结果,接收的运行结果通过NICE接口返回到E203处理器中,并传送到OLED显示部分。

  2. 加速器控制:语音识别加速器控制部分首先在软件实现了NICE自定义指令的函数,通过实现加速器开关函数以及全局变量的控制,实现软件控制加速器的开启和关闭。此外,通过接入外部的按键中断实现按键控制语音识别的开启和关闭。

  3. OLED显示:OLED显示部分通过E203处理器接收NICE接口返回的运行结果,对运行结果进行处理,得到每次的关键词识别结果以及当前所处的噪声场景。处理后得到的结果,通过软件与E203处理器驱动连接的OLED屏幕,并实时显示在屏幕上。

语音识别加速器部分主要实现了通过使用数字硅麦对当前环境声音进行采样,对输入语音信号进行MFCC特征提取以及SNR噪声预测,提取后的特征作为神经网络的输入,在经过SNR噪声预测选择使用不同的网络模块后,输入进对应的神经网络当中,神经网络将输入特征进行运算、处理后,得到最终识别的结果,并通过NICE接口返回E203处理器当中,其主要包括如下三个部分,I2S模块、MFCC模块、神经网络模块以及数据流调度和系统控制部分。

  1. I2S模块:I2S模块主要用于将数字硅麦输入的串行信号缓存并转成并行数据输出到MFCC中,其硬件功能实现主要通过接口设计对输入输出信号定义的接口进行规范设计,并输出对硅麦的控制信号,数据缓存用于将输入的串行数据暂存、转化成并行数据,以及最后将并行数据输出的输出部分。

  2. MFCC模块:MFCC模块主要用于将输入的语音信号进行特征提取,转化成更易于神经网络识别的特征数据,此外,还通过SNR预测模块对输入语音信号的噪声场景进行区分。MFCC算法的实现主要分为预加重、分帧、FFT,梅尔滤波,以及SNR噪声预测算法。硬件功能的实现主要分为接口的设计、MFCC和SNR预测的算法实现,数据测试以及功能实现部分。

  3. 神经网络模块:神经网络模块主要用于将MFCC输出的特征信号通过前馈神经网络进行运算并输出最终的识别精度。在算法层次部分,神经网络模块主要分为卷积层、全连接(FC)层,以及之间的RELU、BN层,算法部分通过MATLAB搭建并训练得出识别精度,验证了模型的可行性,在低噪声场景下,为满足低功耗的需求,采用DOREFA量化二值化与近似计算单元相结合的方式,而在高噪声场景下,为满足抗噪声需求,采用带噪声训练与精确计算相结合的方式。硬件实现部分主要是将前馈神经网络进行电路上的设计与实现,主要分为神经网络算法的实现,包括卷积层、FC层、BN层以及RELU层的电路实现,权重、数据的存储以及数据调度。

  4. 控制模块:系统控制模块与数据调度主要负责控制整体的加速器系统结构以及各个功能模块之间的数据流调度。

E203处理器部分实现的功能主要通过C语言进行软件代码的编写,并在IDE上进行调试,语音识别加速器部分的功能实现主要通过Verilog进行编写,仿真后烧录到FPGA板上进行功能验证。两部分均完成后,通过Nuclei_Studio IDE将软件代码烧录到开发板上进行整体SoC的搭建及功能验证。

系统架构介绍

架构设计

在这里插入图片描述

图2 自适应噪声环境的超低功耗语音关键词识别系统架构设计框图

自适应噪声环境的超低功耗语音关键词识别系统架构设计框图如上图2所示,蜂鸟E203核通过系统存储总线访问FLASH存储,FLASH用于存放烧录进开发板的软件代码,此外,系统存储总线还连接JTAG接口用于外部的软件调试和代码的烧录。E203核还通过私有设备总线访问GPIO,GPIO外接按键中断以及OLED屏幕,以外部的控制输入及显示输出。处理器核还通过NICE协处理器接口访问语音识别加速器,并进行指令的写入与运算结果的读出。

语音加速器主要I2S模块、MFCC架构以及神经网络加速器模块组成,外部的语音输入通过数字硅麦接收,并将串行输入数据输入I2S模块,同时I2S模块输出数字硅麦的片选、声道选择等控制信号。

I2S模块由数据接收、异步FIFO、以及数据预处理三个部分组成。数据接收用于接收外部串行输入信号并进行移位寄存,输出32bit的并行数据,异步FIFO用于将输出32bit并行数据暂存,并同步到读时钟域,当读使能信号到来后,32bit的输出经过数据预处理,最终转化成13bit有效输出输入到MFCC模块当中。

MFCC模块的硬件架构主要由预加重、分帧、FFT、Mel滤波、以及SNR预测模块组成,各个模块架构主要负责实现对应的功能及算法(如基-2FFT、CODIC算法、SNR预测算法),模块之间除直接进行输入输出外,还有相应的存储RAM和输出RAM负责数据的调度。MFCC模块实现对语音输入的特征提取,并输出到神经网络加速器模块当中。

在神经网络加速器模块,首先需要在软件层次进行神经网络结构的确定、以及BWN网络模型参数的训练验证,在硬件架构层次上则要实现对应的前馈神经网络每层运算需要的算法以及整体的控制与数据调度。神经网络硬件架构主要分为网络层控制器、访存控制器、以及存储和计算单元,其中,网络层控制器负责架构整体的控制,当前层的确定以及不同层的切换。访存控制器在接收网络层控制器的控制信号后,负责将当前层所需数据从存储单元调度到计算单元,以及当前层计算完成后将运算完成的输出数据写回存储单元。存储单元主要分为数据存储RAM以及权重存储RAM,分别负责存储每一层所需的输入数据以及相应的权重。计算单元主要负责对应计算算法的实现,PE阵列实现数据与权重的卷积/二值,以及全连接运算,BN_RELU则用于实现对应的激活函数以及归一化函数。

其次,从低功耗角度出发,我们设计了复用的PE子计算,可适配完成卷积(二值)和全连接(二值全连接)计算,重新调整了神经网络加速器模块的数据调度方式,减少了整个电路的面积。

版图设计

对于语音识别加速器模块,我们还完成了后端版图设计,如下图3所示,具体的面积参数如下表1所示。电路综合后的功耗细节图如下图4所示,整体电路的功耗为6.70uW,其中神经网络加速器模块的功耗为3.66uW,MFCC模块功耗为1.07uW,I2S模块和其他模块功耗为0.45uW。图4(b)展示了电路中组合逻辑功耗、寄存器功耗以及SRAM功耗占比,可以看到访存功耗占比为67.6%,寄存器功耗占比为19.3%,组合逻辑功耗占比为13.1%,由此可见本电路实际的计算功耗占比较少,这得益于所采用的权重二值化处理方式,使得电路大量的乘法操作变为加法操作。

表1 版图参数
在这里插入图片描述
在这里插入图片描述

图3 神经网络加速器模块的VLSI实现版图设计
在这里插入图片描述
图4 神经网络加速器模块的 VLSI实现功耗占比

硬件加速器详细设计

高噪声环境——带噪声精确BWN神经网络

在高噪声场景中,语音信号的信噪比往往很低,因此,本系统采用精度较高的精确BWN神经网络,同时在训练集中加载了0dB的白噪声训练,实现噪声场景下的高精度。

低噪声环境——无噪声近似BWN神经网络

在低噪声场景中,输入的语音信号相对来说更为清晰,被系统识别到的难度更低,在电路实现中,满足性能要求前提下功耗是衡量电路设计的重要指标之一,完全可以采用加入近似计算单元的功耗BWN来设计,同时去除数据集中的白噪声,使用clean的数据集训练,最终识别精度并没有下降太多。该方案在不增加网络结构的复杂度,不增加网络深度和神经元个数的情况下,使系统在常开工作时的功耗更低。

由于神经网络具有天然容错性,有许多传统的近似乘法单元曾经被应用在DNN神经网络中,比如截断进位乘法器,共享乘法器,迭代对数乘法器等。虽然BWN网络权重已经量化到了1bit, 但是仍然保有继续优化的空间。在3×3的卷积核里,会有9个16bit的数据进行位运算,之后这9个数据再累加,输出卷积核最后的结果。9个数据的累加最终会得到一个最大为20bit的数据,对于一个20bit的数据来说,在其低位如果有部分信息丢失,其实对整个数据的整体精度影响不大,况且神经网络本身就带有一定的容错性,微小的误差可能并不会对网络的结果带来极大的变动,但是从硬件电路的实现角度来考虑,引入近似计算可较大地降低整个电路的功耗以及面积,十分具有研究价值,正是基于上述考量,来评估在加法运算中引入近似的可行性。

乘法运算涉及到移位、位运算和累加三个过程,因此能够实现近似的空间更大,对于纯累加的运算过程,能够使用近似的就是在单个加法器了,最常用的加法器近似手段则是LOA,即Low Or Adder,低位或门加法器,用逻辑或门来替换低位的加法器来实现近似,其电路结构如图5所示:
在这里插入图片描述

图5 LOA加法器

面向多信噪比的KWS神经网络设计

在前面已经提出了本系统的两种神经网络,在本节中,将对网络中的主要模块进行可重构复用设计,可以从模块级了解本文的神经网络的具体工作模式。由前文中可知神经网络算法中在面向高信噪比语音环境时,为了降低功耗,使用了LOA近似计算单元。具体结构如图6。
在这里插入图片描述

图6 CNN加速器架构图

如图6所示的是在语音关键词分类模块中,语音数据和权重数据分别存储在SRAM中,当SNR预测模块得到的是低信噪比的噪声环境时,语音数据经过可重构PE_ARRAY阵列模块进行网络计算。当SNR预测模块得到的结果是高信噪比时,语音数据经过可重构PE_ARRAY阵列模块进行网络计算。

如图6所示,硬件中有三片sram,分别存储语音数据,在高信噪比环境下的权重1和在低信噪比环境下的权重2。Memory controller模块用于生成地址和计算时分别调用SRAM中的具体数据。Layer controller是使用状态机控制当前计算网络所处层级。可重构PE_ARRAY阵列模块用于网络计算,共有BN_RELU模块用于每层卷积操作之后对数据进行归一化处理。

软件实现

自定义指令的编写

软件实现最关键的问题是实现RISC-V自定义指令并可以确实控制蜂鸟核里nice接口连接的协处理器,具体的语音识别加速器的设计在上一节已被充分介绍,蜂鸟E203的开源核给我们拓展协处理器预留了nice接口,并且学习资料丰富,根据预留的拓展接口以及相应的通信协议,我们成功把语音识别加速器挂载到核上面,具体不再赘述。

自适应噪声切换

在实现噪声模块功能这方面,我们团队提出了两种方案,分别是根据SNR预测在硬件上设计电路的硬件方案以及在软件上设置阈值来检测环境的软件方案。

硬件方案的具体思路是在运算时,累加一段时间区间内的语音信号能量,噪声信号实际上就是能量的高低,噪声越高信号中也就含有越多的能量,硬件方案正是基于这个思路来检测环境噪声强度。

而软件方案则是借助我们系统内蜂鸟E203处理器,利用处理器的灵活控制的特点,外接声音检测模块,并设置一个噪声阈值,当模块检测到外部环境中的噪声超过这个阈值时,给处理器发送一个低信号,而在处理器中则记录低信号出现的次数,一段时间内,如果出现低信号的次数超过了处理器中设置的高噪声的阈值,那么可以认为当前环境噪声较高,需要切换工作模式。

系统实物图

在这里插入图片描述

致谢

在此表示衷心的感谢芯来科技设立的RISV-MCU 社区,社区中丰富的学习资料帮助我们团队快速上手了蜂鸟E203的初步使用,清晰的文件分类让我们查阅学习非常方便,跟社区中其他参赛队伍交流也使得我们受益良多。

同时特别感谢社区中的胡灿等其他老师,我们团队在设计这个系统的过程中,遇到了许多问题,胡灿老师平易近人,很耐心地解答问题,让我们学到了很多,帮助我们最终完成了整个系统。

感谢芯来科技的创始人胡振波先生,胡先生为了RISC-V在国内的推广殚精竭虑,特别编写了基于RISC-V的开源蜂鸟核E203,十分令人倾佩,我们团队购买了先生编写的《嵌入式开发快速入门》和《教你设计CPU》两本书,学习书中的内容让我们团队在应用蜂鸟核时更加得心应手。

在项目设计之初,我们团队也遇到很多问题,能解决这些问题,得益于队友之间的信任和鼓励,也得益于大赛组委会给大家提供了这样的优秀平台。希望集创赛可以越办越好!

作品内容来源于Hey Siri,转载请标明出处。欢迎大家参加极术社区组织的有奖征集|秀出你的集创赛作品风采,免费电子产品等你拿~活动,10月1日截止~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/177808.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis高可用(主从复制,哨兵,集群)

Redis主从复制 主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(Master),后者称为从节点(slave);数据的复制是单向的,只能由主节点到从…

OpenGL ES相关库加载3D 车辆模型

需求类似奇瑞的这个效果,就是能全方位旋转拖拽看车,以及点击开关车门车窗后备箱等 瑞虎9全景看车 (chery.cn) 最开始收到这个需求的时候还有点无所适从,因为以前没有做过类似的效果,后面一经搜索后发现实现的方式五花八门&#xf…

sqli 靶场 Level23-Level30 wp

level-23 (注释被过滤) 抓包,查看正常请求和响应。 略 尝试是否存在注入 id1’,id1’,成周期性变化 尝试 POC POC: id1andextractValue(1,concat(0x7e,user()))-- 结果:failed。怀疑–被过滤掉了,尝试…

深度学习实战:基于TensorFlow与OpenCV的手语识别系统

文章目录 写在前面基于TensorFlow与OpenCV的手语识别系统安装环境一、导入工具库二、导入数据集三、数据预处理四、训练模型基于CNN基于LeNet5基于ResNet50 五、模型预测基于OpenCV 写在后面 写在前面 本期内容:基于TensorFlow与OpenCV的手语识别系统 实验环境&…

PFMEA详解结构分析——Sun FMEA软件

FMEA从1949年诞生到今天已经发生过多次更新,最新版本是2019年6月发布的《AIAG VDA FMEA手册》。新手册借鉴了AIAG的方框图、参数图、流程图等工具的运用,也借鉴了VDA的五步过程导向法,并在此基础上头尾各增加一步,形成了FMEA七步法…

云原生安全日志审计

记得添加,把配置文件挂载进去 - mountPath: /etc/kubernetes/auditname: audit-policyreadOnly: true.....- hostPath:path: /etc/kubernetes/audit/type: DirectoryOrCreatename: audit-policy/etc/kubernetes/manifests/kube-apiserver.yaml 具体配置文件如下 a…

阿里云2023年双11大促活动优惠券领取与使用及特惠云服务器产品购买规则汇总

2023年阿里云双11大促活动正在火热进行中,今年的双11活动还是延续了去年金秋云创季的活动名称,对于大部分用户来说,最为关心的是活动优惠券与云服务器的优惠政策,在我们领取双11优惠券和购买双11活动云服务器的时候,应…

京东大数据平台(京东数据分析):9月京东牛奶乳品排行榜

鲸参谋监测的京东平台9月份牛奶乳品市场销售数据已出炉! 9月份,牛奶乳品市场销售呈大幅上涨。鲸参谋数据显示,今年9月,京东平台牛奶乳品市场的销量为2000万,环比增长约65%,同比增长约3%;销售额为…

HT3163 免电感滤波 音频功率放大器工作原理

HT3163是一款G效AB/D类音频功率放大器。在D类模式,18V供电、THDN10%条件下,能够持续提供40W/4Ω功率输出。在AB类模式,12V供电、THDN10%条件下,能够持续输出17W/4Ω功率。 HT3163具有防削顶失真(ACF)输出控…

ASO优化之Google Play评分评论的重要性

应用程序的成果不仅仅是拥有功能齐全且无错误的产品,评分和评论会影响谷歌应用商店的排名算法,好评和差评都会影响应用在商店中的排名,这是关于与用户建立信任的一个环节。 1、积极主动地管理评论。 定期监控评论、解决用户问题以及根据反馈…

【嵌入式项目应用】__UART自定义通信协议代码实现方法

目录 前言 一、什么是通信协议 二、简单通信协议的问题 三、通信协议的常见内容 1. 帧头 2. 设备地址/类型 3. 命令/指令 4. 命令类型/功能码 5. 数据长度 6. 数据 7.帧尾 8.校验码 四、通信协议代码实现 1. 消息数据发送 a. 通过串口直接发送每一个字节 b. 通过…

进程地址空间

一 先前问题解释 1 #include<stdio.h>2 #include<unistd.h>3 int g_val 200;4 int main()5 {6 printf("begin");7 int id fork();8 if(id 0)9 {10 g_val 100;11 printf("我是子进程,pid: %d, 父进程:%d, g_v…

急求!录屏在哪里找?看这里就够了

“电脑的录屏在哪里找呀&#xff1f;已经找了一上午了&#xff0c;真的找不到&#xff0c;有哪位大神知道录屏在哪的&#xff0c;帮帮我&#xff0c;非常感谢&#xff01;” 随着社会的发展&#xff0c;录制电脑屏幕的需求变得越来越普遍。无论是在线教学、游戏直播还是远程会…

【Linux】Linux网络总结图详解

网络是进行分层管理的应用层HTTPHTPPS 传输层&#xff08;UDP、TCP&#xff09;UDPTCPTCP和UDP对比 网络层IP 数据链路层&#xff08;MAC&#xff09;/物理层&#xff08;以太网&#xff09;以太网通信&#xff08;负责网卡之间&#xff09; 网络是进行分层管理的 应用层 HTTP…

HarmonyOS开发:开源一个刷新加载组件

前言 系统Api中提供了下拉刷新组件Refresh&#xff0c;使用起来也是非常的好用&#xff0c;但是风格和日常的开发&#xff0c;有着巨大的出入&#xff0c;效果如下&#xff1a; 显然上面的效果是很难满足我们实际的需求的&#xff0c;奈何也没有提供的属性可以更改&#xff0c;…

nodejs+vue+elementui+python家电销售分析系统设计与实现-计算机毕业设计

系统按照用户的实际需求开发而来&#xff0c;贴近生活。从管理员通过正确的账号的密码进入系统&#xff0c;可以使用相关的系统应用。管理员总体负责整体系统的运行维护&#xff0c;统筹协调。 我们可以利用计算机技术来取代传统的管理模式&#xff0c;实现家电销售分析系统的…

LInux之在同一Tomcat下使用不同的端口号访问不同的项目

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是君易--鑨&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的博客专栏《LInux实战开发》。&#x1f3af;&#x1f3af; …

【RP-RV1126】配置一套简单的板级配置

文章目录 官方配置新建一套新配置新建板级pro-liefyuan-rv1126.mk配置文件新建一个Buildroot的defconfigs文件 吐槽&#xff1a;RP-RV1126 的SDK奇怪的地方make ARCHarm xxx_defconfig 生成的.config文件位置不一样savedefconfig命令直接替换原配置文件坑爹的地方 Buildroot上增…

91 前K个高频元素

前K个高频元素 题解1 大根堆(STL) 给你一个整数数组 nums 和一个整数 k &#xff0c;请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 示例 1: 输入: nums [1,1,1,2,2,3], k 2 输出: [1,2] 示例 2: 输入: nums [1], k 1 输出: [1] 提示&#xff1a;…

机器人连杆惯量参数辨识(估计)

杆的转动惯量的计算公式是Imr^2。在经典力学中&#xff0c;转动惯量&#xff08;又称质量惯性矩&#xff0c;简称惯矩&#xff09;通常以I 或J表示&#xff0c;SI 单位为 kgm。对于一个质点&#xff0c;I mr&#xff0c;其中 m 是其质量&#xff0c;r 是质点和转轴的垂直距离。…