摘要:近年来,垃圾桶逐渐由双色桶变为了四色桶,但是垃圾桶提示不全,学习成本高等问题使人们在垃圾分类时深感知易行难。为解决这些问题,设计并实现了一款基于语音识别的智能垃圾分类装置。设计了语音识别系统,系统对语音信号预处理并提取特征,应用隐马尔可夫模型建模,利用特征参数训练模型,使用维特比算法进行语音识别。实现了基于FPGA的硬件装置,调用软核构建基于NiosII的片上系统,将训练好的模型和算法导入系统,将识别结果反馈在显示器上。实验表明,该装置语音识别正确率较高,且能够嵌入现有四色桶,对垃圾分类的推广具有积极意义。
关键词:语音识别;隐马尔可夫模型;MATLAB;FPGA
0 引言
随着城市化建设步伐的推进和网络的普及,网购和外卖成为年轻人快节奏生活中不可或缺的一部分[1]。然而,网购和外卖不可避免会带来生活垃圾,若是无组织处理会极大地破坏人类赖以生存的生态家园,而进行有效的垃圾分类,垃圾也能变废为宝。
但是当前垃圾桶提示不全,许多人在投放垃圾时深切感受到“知易行难”[2]。因此,本文设计并实现了一种基于语音识别的垃圾分类装置,其功能为:当人们在投放垃圾时,点击投放按键并说出垃圾的名称,语音识别系统根据该语音信号对垃圾进行归类,显示屏上就能显示出垃圾的名称、种类以及亮对应种类的LED指示灯来引导使用者正确投放。
该装置的核心是语音识别算法,现阶段国内外通常采用隐马尔科夫模型(Hidden Markov Model,HMM),该模型对过程的状态预测效果良好,适宜系统的短期状态预测[3]。为提高识别率,本文利用混合高斯模型(Gaussian Mixture Model,GMM)拟合HMM中的输出矩阵。最后通过实验验证,该装置具有较高识别率。
1 语音识别系统基本理论
随着垃圾分类方案的推进,垃圾的种类已经有了严格的归属,即厨余垃圾(橙色)、可回收垃圾(绿色)、其他垃圾(灰色)、有害垃圾(红色),因此,可以通过自建语音库作为训练样本,把训练样本的特征向量提取出来用于模型训练和进行识别。语音识别系统流程如图1所示。
图1 语音识别系统流程
1.1 语音信号预处理
1.1.1 归一化与预加窗
录音过程中说话者与麦克风距离不同会带来差异,归一化是使语音信号转化到同一区间[-1,1],用来削弱该差异,其计算公式如下:
式中:x[n]为语音信号向量;max为取其最大值。
语音信号的能量与频率成反比,所以说话时大部分能量集中在低音部分,预加窗是使语音信号通过一个高通滤波器来强化高频信号,从而达到输出信号整体变得平滑。经过滤波后此高通滤波器的传输函数为:
式中:a 为常数,通过查阅资料[4],a 的取值范围为0.93 <a <0.98,本文选择为0.937 5。并且滤波后的语音信号记为xd (n)。
1.1.2 分帧
为了简化模型,本文假设信号是短时平稳的,同时引入帧移,用来保证语音信号不会因为分帧处理而变得不连续。图2所示为将一段语音信号切分为4帧,同时保留一定的帧移。
图2 分帧与帧移示意图
1.1.3 加窗
数学上,分帧得到的xw(n)由语音信号xd(n)与移动的窗函数w(n)相乘:
窗函数用于减轻截断效应且需要较小的旁瓣宽度。常用的3 种窗函数分别是矩形窗、汉宁窗、海明窗[5]。这3 种窗函数的参数如表1所示。
表1 3种窗函数的性能对比表
与矩形窗相比,汉宁窗的带宽更宽,阻带衰减更大,而海明窗为汉宁窗的改进版,能够获得更大的阻带衰减,因此选择海明窗,窗函数w(n)表达式为:
1.2 语音信号特征提取
1.2.1 梅尔滤波器
根据人耳听力对频率的敏感度是非线性的[6],定义一种符合人耳听觉敏感度的梅尔频率Fmel :
人耳的耳蜗结构相当于一组MEL滤波器组,其传递函数Hm(k)为:
式中:f(m)为第m个三角滤波器的中心频率。
1.2.2 特征参数提取流程
特征参数的提取可分为4步,其流程图如图3所示。
图3 MFCC特征参数提取流程图
(1)由于梅尔滤波器是在频域上处理语音信号,所以需要先通过(FFT)快速傅里叶变换将每一帧语音数据由时域信号转换为频域信号,其公式如下:
(2)通过传递函数为Hm(k)的MEL 滤波器,得到语音特征向量Y(m)。
(3)此时的特征向量维数过高,用于训练或识别会大大提高运算量,降低系统的实时性。可采用离散余弦变换(DCT)压缩特征向量信息:
(4)为体现语音的“上下文”关系,对其求一界差分和二阶差分
(5)为保持表达式有意义,式(9)中i 取值范围为2≤i≤N-2,式(10)中i取值范围为4≤i≤N-4。
1.3 语音识别算法
1.3.1 隐马尔可夫模型
回收侧部余热可以影响到阴极热场,达到整个阴极等温线上移的效果。以阴极底部为例,底部温度由余热回收前的843.3 ℃降低为余热回收后的810.9 ℃[4]。侧部余热回收有利于电解槽形成较规整的炉膛内形,从而引起电解槽阴极炭块等温线的上移。
图4 HMM原理示意图
HMM模型λ有5个参数,可以用1个向量组描述:
这5个参数的含义如表2所示。
表2 隐马尔可夫模型参数及其含义
1.3.2 混合高斯模型
GMM 模型是统计学模型的一种,可用以拟合HMM 的连续概率密度输出,数学表达式为:
式中:为模型λ 采集到的N 个可观测数据;为第K 个以为均值和方差的高斯分布;αK 为第K个高斯分布所占权重。
1.3.3 前向后向算法
常规计算P(O|λ) 由于每次都会循环所有状态,计算量极大,采用前向-后向算法可以大大减轻计算量[8],计算式如下:式中:前向概率αt()j 为在t 时刻,状态为j 且观测序列为{o1,o2,…,ot-1,ot} 的概率;后向概率βt(i)为在t 时刻,状态为j的且从t+1 时刻到T 时刻的观测序列为{o t+1,ot+2,…,oT }的概率;其中aij 为状态转移概率矩阵A 的元素;bj(t)为观测概率矩阵B的元素。
1.3.4 维特比解码
在给予一段观测序列O={o 1,o2,…,oN }时,需要找到一条最佳路径使得输出概率最大[9]。求解过程为利用前面路径的最优解φt(i)叠加上当前路径的最优解,具体流程如下:
2 基于MATLAB的仿真实验
2.1 训练样本的获取
本文采取自建语音库的方式,总共训练并识别12个孤立词,一共4类垃圾,每种垃圾收集4个词,具体词组如表3所示。
表3 垃圾分类词组
2.2 语音识别系统训练
(1)读入学习样本
通过MATLAB中的audioread函数进行读取:
式中:x 为数字音频信号向量;fs 为抽样频率;fname 为语音信号文件位置。
(2)特征提取
读入语音文件后,需要对语音信号进行特征提取,使用自建函数MFCC:
(3)初始化HMM参数
HMM 模型λ=(N,M,A,B,π)需要设置5 个初始化参数:设定总状态数为3,即N=3;每个状态的起始概率分布π 均设为0;每个状态下可观测的数目为4,即M=4;观察概率矩阵B为连续型混合高斯分布;HMM模型为自左向右模型,且设定这两个转移概率是相等的,即:
(4)模型训练
使用从样本中提取的特征向量训练HMM模型,不断调整参数(A,B)直到训练结束。训练结果如图5所示。
图5 训练结果图
2.3 语音识别模型测试
训练完成之后,便可对新语音文件进行识别,使用自定义函数viterbi:
式中:m为新语音文件的MFCC;HMM为训练好的模型;P为概率最大的孤立词。
测试组由5 个男生和5 个女生组成,每人把12 个孤立词都测试一次,实验结果统计如表4所示。从表中可以发现,本文编写的算法在MATLAB 平台可以达到综合94%的正确率,故本文的语音识别系统可用于垃圾分类。
表4 语音识别结果统计表
3 基于FPGA的硬件实现
3.1 系统总体设计
图6 硬件系统构成图
本语音识别系统采用的是ALIENTEK 开拓者FPGA 开发板,其芯片型号为EP4CE10。硬件系统整体可划分为两个部分,一部分是语音识别系统所需求的外围电路,另一部分是利用片上资源配置成的NIOS II 处理器。其硬件系统构成如图6所示。
硬件系统中使用的语音模块结构如图7所示。其是FPGA开发板上集成的语音模块,包含用于录音的MIC、3.5 mm 标准耳机输出接口PHONE、8Ω2W 小喇叭外放模块和立体声多媒体数字信号编解码器芯片WM8978。
图7 语音模块
3.2 核心软件设计
Qsys嵌入式系统的核心部件是NiosII软核处理器,其内部包含了算术逻辑单元,可以进行语音识别算法的实现。
NiosII SBT for Eclipse是NiosII 的开发环境,可编写、编译和调试程序。核心程序如下:
首先需要定义一个HMM 模型,用于导入经过MATLAB 学习过后的模型数据,代码如图8所示。图中N代表了状态数,M代表了每个状态下可观测数目,init代表了观察概率矩阵B,trans代表了转移矩阵A,mix为混合高斯分布。
图8 Eclipse中模型定义代码图
接着是提取语音信号特征参数,使用到的是MFCC 函数,代码如图9所示。图中x[n]为经过WM8978芯片编码的语音信号,fs 为采样频率,framesize 为帧长,inc 为帧移,nx 为采样点数,fn为帧数。
图9 Eclipse中MFCC函数代码图
最后是语音的识别过程,使用到的是Viterbi 解码函数,代码如图10 所示。图中HMM hmm 为在MATLAB 训练后的HMM模型,o为观测状态,即经过提取出来的特征矩阵,T为矩阵的列长度。
图10 Eclipse中viterbi函数代码图
调试好的程序生成可执行文件(后缀名为.elf 的文件),然后将其下载到Qsys搭建好的语音识别硬件系统中运行。
3.3 系统测试
测试环境要求:(1)测试周围环境安静,没有较大的背景噪音;(2)说话人发音清晰,音量在50~60 db。
硬件测试与软件测试时保持一致,实验结果统计如表5所示。由表中的数据可得,该语音识别装置能够达到较高的正确率,对推广垃圾分类具有积极意义。
表5 语音识别硬件设备试结果表
4 结束语
本文首先介绍了我国垃圾分类的现状,指出知难行易的实际困难,从而引出基于语音识别的垃圾分类装置。
该装置的核心是语音识别算法。详细介绍了语音信号的处理过程,包括归一化、滤波、分帧和提取MFCC 特征参数,算法的模型是隐马尔可夫模型和高斯混合模型,算法的识别是通过Viterbi解码。该装置的实现使用FPGA开发板。阐述了FPGA 开发板上所使调用的模块,利用板上资源配置NIOS II系统实现硬件控制、算法运行和输出显示。
最后通过实验验证,该装置能够达到较高的正确率。当人们在投放垃圾时,点击投放按键并说出垃圾的名称,语音信号通过语音识别系统,对该垃圾进行归类,显示屏上显示出垃圾的名称、种类以及亮对应种类的指示灯来辅助使用者正确垃圾分类。该装置可以直接嵌入现行四色分类垃圾桶,改装成本低,对垃圾分类的推广具有积极意义。