基于智能语音的智能家居系统设计
扫描二维码
随时随地手机看文章
0 引 言
第一次工业时代后,生活方式大不同前,越来越多的机器设备开始代替手工作业,而在家居行业也出现了类似的机器人帮人们处理家居生活中的简单工作,不仅解放了人们的双手,又节省了大量时间。智能家居的发展与人机交互技术有着密不可分的关联,在长期探索中,语音识别技术脱颖而出。本文详细分析了语音识别过程,并设计了一套基于Arduino平台的智能家居系统实现对家居灯光、环境(温度和湿度)、光线、安防监督的语音化控制。
1 语音识别系统相关理论技术
语音识别的信号处理流程如图 1 所示。语音识别系统由语音前期预处理、语音信号特征参数提取、参考模型库建模、模式匹配以及语音后处理五个部分组成 [1]。语音识别可分为如下四大阶段 :
(1) 第一个阶段先通过性能优良的语音采集设备采集语音信号,然后进行相关预加重、分帧、加窗、端点检测等预处理操作。
(2) 第二阶段是声学模型训练阶段。提取语音库中已知语义的语音信号特征参数,将其作为模板存入参考模型库中。使用训练算法建立声学模型,而声学模型的训练过程也是建模过程,通过训练语音库的特征参数训练声学模型参数 [2], 因此要设置合理的模型初始值。
(3) 第三阶段是识别阶段,将输入语音的特征参数经过一定的识别算法与训练好的参考模型库中的特征参数进行相似度对比,匹配相似度概率最高的即为输入语音最终识别结果 [3]。
(4) 第四阶段是语音后处理阶段,确定当前哪个词语可以跟随上一个已经识别的词,排除不可能的单词,将最佳匹配结果语音信号进行语言建模,匹配出文本语义。
2 语音信号的时域处理
在对语音信号分析前,要先对语音信号进行预处理,包括端点检测、预加重、加窗和分帧等技术 [4]。
预加重采用一个 6 dB/ 倍频的一阶高通数字滤波器实现, 其传递函数为 H(z)=1-μz-1,加窗可以让一帧信号的幅度在两端平滑的衰减渐变到零,以避免短时语音段边缘的影响。但由于加窗削弱了语音边缘的信号,为了使相邻帧连续不中断,一般采用重叠分帧方法 [5]。
端点检测技术的目的是检测出有效语音信号的起始点和终止点 [6],从而减少需要处理的数据量和运算量,同时还能降低噪声对语音识别系统的影响,一般采用双门限端点检测法。
3 语音信号的特征提取
语音信号提取的特征值应该准确、完全地包含语音信号的全部信息。同时提取能有效反映语音特性、减少语音信号中与识别无关的信息,减少识别数据量。本文分析了语音信号的三种特征参数,即线性预测系数(LPC)、线性预测倒谱系数(LPCC)、梅尔频率倒谱系数(MFCC)[7]。
3.1 线性预测系数(LPC)
线性预测的原理 :语音信号 S(n)的值可由过去若干时刻的采样值或其线性组合来逼近 [8]。在逼近过程中,逼近值与原始值之间的差值称为预测误差,当预测误差达到最小时, 即预测效果最接近,也是模型建立最完美的值。可以推得, 线性预测系数 ai 的值达到了收敛。线性预测方法得到的参数可以很好地反映语音信号的频谱幅度。
3.2 线性预测倒谱系数(LPCC)
LPCC 可以将语音模型中的声门激励信号与声道冲激响应信号进行分离,计算量小,实现相对简单,提高了特征参数的稳定性 [9]。该值是对语音信号进行 FFT 后再取对数,求IFFT 后得到的。
3.3 梅尔频率倒谱系数(MFCC)
Mel 频率倒谱系数(MFCC)充分考虑了人耳听觉的感知特性后进行语音信号处理。MFCC 具有更好的识别性能[10], 语音信号中的能量主要集中在低频部分,对人耳的听觉特性模拟地更好,而人耳对低频分量也更敏感。语音信号低频部分的一个参数淡化了易受环境噪声干扰的高频部分,提高了语音识别系统的抗噪声能力。
4 隐马尔科夫模型 HMM
隐马尔科夫过程是一个双重随机过程 :其一用于描述每帧语音信号的统计特性(可直接观测到);其二用于描述每帧语音信号如何转变到写一个语音帧信号(隐含在观察序列中)。隐马尔可夫模型就像一个黑箱子,内部状态外部不可见,外界只能看到各个时刻的输出值 [11]。可观测部分是人的语音,而隐含部分则是人组织语言的大脑激励信号。隐马尔可夫模型可用 λ=(π,A,B)表示 [12]。
本文详细分析了 HMM 模型三个基本问题的解决算法。假设已知可观察状态值序列 O=(O1,O2,…,OT)(T是语音信号的帧数)和马尔科夫模型参数 λ=(π,A,B),计算可观察序列的概率 P(O|λ)时一般使用向前 - 向后算法 [13]。
已知可观察状态值序列 O=(O1,O2,…,OT) 和模型 λ=(π, A,B),计算最有可能生成该可观察序列的隐含状态序列,通常使用 Viterbi 算法 [14]。
在已知可观察状态的序列 O=(O1,O2,…,OT) 的前提下,确定 HMM 的模型参数 λ=(π,A,B),使得可观察序列的概率 P(O|λ)最大,通常使用 Baum-Welch 算法 [15]。
5 智能家居系统实现
结合 Arduino 开发平台实现智能家居模块的交互系统,对家居系统整体以及软硬件需求进行分析与总体设计,实现通过语音控制家居设备的目标。该系统具有灯光控制,光线以及温度湿度检测和危险气体警报功能。为了拥有更好的人机交互环境,本文系统还添加了语音播报功能。
调试并连接智能家居的软硬件系统,分别测试智能家居系统的语音识别率,以及相应的语音命令能否实现对应功能。在安静的环境下,系统功能能够全部实现,测试非特定人 100 次的语音识别率均在 90% 以上。在有噪声的环境下,系统功能均未实现,测试非特定人 100 次的语音识别率均在50% 以下甚至更低。由实验结果可知,与安静环境对比,噪声环境下的语音识别效果大大降低,且长语音命令的识别率同之前一样低于安静环境下的语音识别率。
智能家居系统框图如图 2 所示,系统测试实验见表 1所列。
6 结 语
本文主要对语音识别技术做了大致分析,比较了特征提取线性预测技术、线性预测倒谱系数以及梅尔频率倒谱系数之间的优缺点。详细分析了隐马尔科夫的建模过程以及相应算法,结合 Arduino 开发平台,对智能家居系统做出简单设计,实现了语音命令“开灯”“关灯”“温度湿度检测”“环境光线检测”等操作,同时还采用危险气体警报对家居安防进行布施。语音播报提供了良好的人机交互环境,通过智能家居各模块功能语音识别测试可知,提高语音识别率不仅需要安静的环境,还需要说标准的普通话。语音识别如何在有较大噪音的环境中进行准确识别是一道难关,也是未来科研人的努力方向。