嵌入式英语语音识别控制系统研究
2021-06-24潘丽鹏
潘丽鹏
(咸阳师范学院 外国语学院, 陕西 咸阳 712000)
0 引言
随着计算机与人工智能技术的快速发展,智能机械设备的应用越来越广泛,作为智能控制的关键技术之一,语音识别控制的能力直接决定机械设备的智能化程度[1-3]。本文提出并设计了一种嵌入式英语语音识别控制系统,采用隐马尔可夫模型进行英语语音的识别,选取WTV180芯片对语音信号进行处理。该系统英语语音识别度高,控制能力强,适于在智能控制领域推广应用。
1 语音识别算法
1.1 算法数学模型
与语音识别算法所对应的数学模型由辐射、激励和声道三个部分组成。其具体结构如图1所示。
图1 语音识别算法的数学模型结构
其中,激励部分的G(z)为声门脉冲信号;声道部分的V(z)为声道传输函数;辐射部分的R(z)为辐射阻抗;A为调节系数,用以调整函数能量或幅值。该模型的核心功能是确定对语音信号进行转换处理时所需的输出函数H(z),如式(1)。
H(z)=A·G(z)V(z)R(z)
(1)
1.2 算法预处理
将人类发音的模拟信号转换为可用于通信传输的数字信号,需要对其基于倍频程衰减完成离散化的预处理,从而使高频信号更加突出,易于分辨,简化分析信号参数的程序,通常基于一阶数字滤波器进行离散化处理,如式(2)。
H(z)=1-uz-1
(2)
式中,u为离散系数且u∈[0,1]。假定x(n)为某时间节点n对应的数值,那么经过预处理可得式(3)。
y(n)=x(n)-kx(n-1)
(3)
式中,k为根据高频信号值取值的系数,这里取k=0.95。
1.3 特征提取
系统语音识别结果的精度取决于算法能够准确实现语音特征的提取。本文选取MFCC(梅尔倒谱系数)方法进行语音信号频域特征提取。其提取过程如图2所示。
图2 基于MFCC方法的频域特征提取过程
1.4 HMM语音识别算法
在现有的多种语音识别算法中,HMM(隐马尔可夫模型)算法由于具有出色的过程状态预测能力而被广泛认可,因此本文采用该算法实现系统的语音识别功能。
假定S1,S2,…,Sn为模型中的一组状态量,与时间节点n对应的唯一模型状态为x(n)。n=0时,起点概率矢量π的表达式为式(4)。
πi=P{x0=Si} (i=1,2,…,n)
(4)
后续各时间节点对应的状态值仅与其前一个时间点的状态值xn-1相关,由此可得到转移概率矩阵A={ai,j},可表示为式(5)。
ai,j=p{xn=Sj|xn-1=Si}
(5)
除起点外,剩余所有时间点的状态都是隐藏的,所以仅可计算出单个时间点Rq所对应的随机监测矢量Qn,其与Xn(Pn)的关系为式(6)。
Pxn=Si{On}=P{On|Si}
(6)
通过HMM算法,在提取语音信号特征时获得了Qn,本文基于混合高斯分布对Qn进行拟合,得式(7)。
(7)
式中,m为拟合阶数值;Y为Qn的状态值;Cm为加权系数。
HMM算法的第一步应为创建英语语音词表。假定一个包含V个英语词汇的词表,将模型系数λv分配每一个词汇,则有式(8)。
λv=(Av,Bv,πv)
(8)
进行语音识别时,应首先提取监测矢量O={o1,o2,…,oT},然后计算出模型系数λv的分配概率P(O|λ)。其中,v∈[1,V],最后得到具有最大似然概率的词汇v*,也就是语音识别结果对应的值,如式(9)。
(9)
2 系统硬件部分设计
嵌入式英语语音识别控制系统硬件部分的组成结构如图3所示。
图3 系统硬件部分结构
系统的核心处理器选用的是以Cortex-M3为内核的STM32型处理器。这种芯片采用了Tail-chaining中断的结构形式,数据处理速度很高,同时,其所集成的Thumb-2指令集大幅提高了指令的执行效率和芯片的运行性能,在工控行业中应用较为广泛。同时,本文选取WTV180芯片用于英语语音的信号处理,其技术优势主要体现在以下几点。(1) 在语音信号频率为6 kHz的条件下,其最大识别长度可达340 s,内型数量高且适用于多种环境;(2) 该芯片集成了DAC、优化音质算法与PSG语音合成器,能够获得较高的音质。系统的语音识别电路如图4所示。
图4 系统语音识别电路原理图
由SPK麦克风进行语音采集并将信号发送给WTV180芯片,在其中进行语音信号转换,输出的信号利用DATA数据线发送至STM32嵌入式系统,由其按照语音信号的指令对智能机械设备进行控制。
3 系统软件部分设计
本系统的软件部分基于模块化的程序进行智能机械设备的训练和词汇存储,训练过程中单个控制指令各均重复10次;训练完成后调用输入接口函数请求系统语音识别模块开始识别,再调用输出接口函数提交识别结果;主程序分析识别结果即指令内容,通过控制模块驱动智能机械设备执行对应的操作。系统语音识别控制的实现流程如图5所示。
图5 系统语音识别控制实现流程
语音识别控制系统的初始化是在接收到外界操作指令的时刻开始进行的,在此之前系统一直处于待机状态,目的是为了保证智能机械设备运行的稳定性与实时性。系统软件部分的核心执行代码如下。
void CBodyBasics::MSSListen() //语音识别初始化函数
{
if (FAILED(::CoInitialize(NULL))) //初始化COM接口
MessageBox(NULL,(LPCWSTR)L"COM接口初始化失败!",(LPCWSTR)L"提示",MB_ICONWARNING|MB_CANCELTRYCONTINUE|MB_DEFBUTTON2);
HRESULT hr=m_cpRecoEngine.CoCreateInstance(CLSID_SpSharedRecognizer);//创建Share型识别引擎
if (SUCCEEDED(hr))
{
hr=m_cpRecoEngine->CreateRecoContext(&m_cpRecoCtxt);//创建识别上下文接口
hr=m_cpRecoCtxt->SetNotifyWindowMessage(m_hWnd,WM_RECORD,0,0);//设置识别消息
const ULONGLONG ullInterest=SPFEI(SPEI_SOUND_START)|SPFEI(SPEI_SOUND_END)|SPFEI(SPEI_RECOGNITION);//设置我们感兴趣的事件
hr=m_cpRecoCtxt->SetInterest(ullInterest,ullInterest);
hr=SpCreateDefaultObjectFromCategoryId(SPCAT_AUDIOIN,&m_cpAudio);
m_cpRecoEngine->SetInput(m_cpAudio,true);
ullGrammerID=1000;
hr=m_cpRecoCtxt->CreateGrammar(ullGrammerID,&m_cpCmdGrammar);
WCHAR wszXMLFile[20]=L"";//加载语法
MultiByteToWideChar(CP_ACP,0,(LPCSTR)"CmdCtrl.xml",-1,wszXMLFile,256);//ANSI转UNINCODE
hr=m_cpCmdGrammar->LoadCmdFromFile(wszXMLFile,SPLO_DYNAMIC);
hr=m_cpCmdGrammar->SetRuleState(NULL,NULL,SPRS_ACTIVE);//C&C
hr=m_cpRecoEngine->SetRecoState(SPRST_ACTIVE);
}
else
{
MessageBox(NULL,(LPCWSTR)L"语音识别引擎启动出错!",(LPCWSTR)L"警告",MB_OK);
exit(0);
}
}
4 系统测试
为了验证本文所设计英语语音识别系统的实际性能,采用MATLAB软件进行仿真模拟实验,选取智能播种机作为实验用智能机械设备。按照系统功能,实验分为英语语音识别和智能播种机做控制两个部分分别进行。语音识别功能测试过程为:选取5条行动方向英文指令(run、left、right、backwards、stop)各重复发出20次,以验证系统英语语音识别准确率。测试结果如图6所示。
由图6可见,系统对每条英语指令的识别准确率都高于85%,且大多数达到90%以上,可见本文所设计的系统具有较高的识别准确度。
图6 语音识别功能测试结果
智能机械设备控制功能基于智能播种机的行进途径与指令的一致性进行测试。测试结果如图7所示。
图7 系统控制功能测试结果
由图7可见,测试过程中共向系统发出13次行动指令,智能播种机每次都能按照指令方向行进并最终到达目的地。可见系统能够实现智能机械设备的高精度控制。
5 总结
语音识别控制是自动化技术发展的重要成果,已成为当前智能机械设备研发的核心技术之一[4-5]。本文提出并设计的嵌入式语音识别控制系统,基于HMM算法实现了英语语音的识别功能,采用WTV180芯片进行英语语音信号的处理,大幅提高了智能机械设备的语音识别和处理能力,对于人工智能相关技术的研究具有一定的参考价值。