嵌入式非特定人车载电器声控终端系统的研制

2015-03-07 09:24孙保群
关键词:声控电器车载

王 琼, 王 欢, 孙保群

(1.合肥工业大学 计算机与信息学院,安徽 合肥 230009;2.合肥工业大学 汽车工程技术研究院,安徽 合肥 230009)

0 引 言

随着人们对汽车操控方便性和驾乘舒适度要求的不断提高,现代汽车使用的车载电器越来越多,如车载多媒体、空调、电动门窗等,不断改善着汽车驾乘的内部环境。但由于操控对象数量随车载电器数量的增多而不断增加,加大了驾驶操作的复杂程度,导致潜在的行车安全隐患不断增多。语音识别技术及嵌入式技术的迅速发展,使得利用语音指令实现对车载电器操控成为可能。驾驶员不仅可以通过语音指令实现对车载电器的控制操作,还能实时、直观地在显示终端上看到操作效果,在简便、安全地实现车载电器操控的同时,提升了驾驶乐趣。

目前国内外车载语音控制系统的开发主要依托于网络,如车载语音导航系统,其语音命令的识别必须依赖网络远程终端,但由于行车环境在不断变化,网络环境并不稳定,进而会对语音识别的稳定性以及识别操作的实时性产生影响。因此开发能够脱离网络进行本地语音识别的车载电器声控系统具有重要意义。

当前国内自主研发主要集中在车载导航系统的开发,如科大讯飞开发的“智语星”新一代车载语音导航系统,语音识别依然依赖于网络,对本地车载电器语音控制系统的研究较少。国外的车载声控系统也没有全面地应用在车载电器的实时控制上,且主要应用于中高端车型,如福特福克斯的SYNC车载多媒体通讯娱乐系统,通过语音控制实现语音拨号、语音播出短信内容、语音控制音乐播放等功能,但没有涉及车灯、车窗等车载电器的控制[1-3]。

本文提出了一种基于HMM算法的嵌入式非特定人本地车载电器语音控制系统的设计方案,将本地语音识别应用在车载电器控制领域,完成了系统终端样机研制及非特定人语音命令识别实验测试。实验结果表明,终端样机系统具有操作简单、识别率高、性能稳定、界面显示友好和可扩展性强等特点。

1 嵌入式车载电器声控系统平台

车载电器声控系统整体架构如图1所示,主要由语音识别模块、嵌入式处理器、TFT-LCD显示屏、存储单元、车载电器驱动模块等部件构成。声控系统终端样机平台如图2所示。

车载电器声控系统的功能是由定向拾音器采集驾驶员发出的语音指令并输入语音识别模块,语音识别模块将物理声音信号转换为语音数字信号并进行识别处理,识别后输出相应的语音指令编码信号传输至ARM11主处理器,处理器根据相应的语音指令控制驱动车载电器动作,同时将操作结果实时显示在车载TFT-LCD前屏上。

图1 车载电器声控系统整体架构

图2 车载电器声控系统终端样机平台

2 系统主要硬件电路设计

2.1 非特定人语音识别模块设计

非特定人识别模块选用了ICRoute公司的LD3320语音识别芯片。模块逻辑结构图如图3所示,主要由LD3320和一个MCU控制单元构成。LD3320芯片集成了语音识别处理器和一些外围电路,包括ADC、DAC、麦克风和声音输出接口[4]等。控制单元MCU为STC10L08XE单片机,其工作电压为3.3~5.5V,具有 8K 的 Flash ROM,512Byte的SRAM,并有40个I/O口和UART接口,满足语音模块的接口控制和系统配置的资源要求。

图3 LD3320语音模块逻辑结构图

LD3320与MCU电路逻辑原理图如图4所示。非特定人语音信号由MIC接入LD3320的MICP和MICN引脚。LD3320由MCU设置其相应寄存器来实现识别过程的控制,其控制信号RDB、WRB、CSB、RSTB、INTB均与 MCU 直接相连,P[7:0]与 MCU的 AD[7:0]并行连接,如图4a所示。RSTB复位信号由MCU发出,INTB中断信号由LD3320发出,MCU接收。MCU在接收LD3320识别结果后,八位语音指令编码由其A[15∶8]口输出并依次连接至主处理器的GPE[2∶1]和GPM[5:0]端口,如图4b所示。

图4 LD3320与MCU电路逻辑原理图

2.2 嵌入式主处理器模块

主处理器模块是语音指令处理、控制驱动车载电器动作以及实时显示的核心控制部件,本设计选用了Samsung公司的16/32位RISC微处理器S3C6410A芯片,其工作频率可高达677MHz,具有成本低、功耗低、性能高、可扩展性强等优点,能够充分满足本系统数据的采集和处理要求。主处理器模块硬件设计包括存储单元及车载前屏接口电路和车载电器驱动电路设计2个部分。

2.2.1 存储单元及车载前屏接口电路设计

由于系统需要固化操作系统软件,为系统软件及应用程序提供足够的程序存储和堆栈空间,且需要对车载电器信息记录并以文件形式永久保存,故需在主处理器外部扩展RAM和大容量的NAND Flash。RAM存储器扩展采用了Samsung公司的SDRAM芯片K4X1G163PE,规格为64M×16bit,由2片构成64M×32bit(256M)的内存系统。NAND Flash则采用了Samsung公司的K9K8G08U0B芯片,1G存储容量,8bit数据端口。

车载前屏主要完成驾驶员发出的语音指令操作结果的实时显示任务。本设计选用群创10寸分辨率为1 024×600的TFT-LCD显示屏作为车载前屏,主处理器输出的显示信号通过DF9B-41P-1V2接 口 器 件 连 接 到 TFT-LCD 显 示 屏上[5]。显示部分主要包含 VSYNC、HSYNC、LEND、VCLK、VD[23:0]和PWREN信号。

2.2.2 车载电器驱动电路设计

主处理器的数字控制信号通过驱动电路驱动对应的车载电器动作。本设计中驱动电路按驱动方式不同分为信号驱动和功率驱动。

信号驱动部分中,空调驱动采用了Toshiba公司的TLP521光电耦合器来控制其终端的通断;音响驱动是通过数字控制信号驱动外部继电器的吸合来模拟实际按键的开关控制动作,模拟按键电路如图5所示。

图5 模拟按键电路

功率驱动部分中,车灯和电动车窗均采用了Infineon公司的BTS824R功率放大芯片;雨刷则由主处理器输出的PWM信号来控制电机转速,采用了Freescale的5A集成H桥芯片MC33886作为驱动芯片,电路逻辑原理图如图6所示。另外,由于车灯和雨刷的手控均属于锁死开关,同时进行手控和语控操作时会产生冲突,故本设计利用继电器对车灯手控和语控信号进行隔离,利用上拉电阻将手控开关和语控驱动相连,实现了雨刷的手控和语控的交互使用。

图6 MC33886电路逻辑原理图

3 系统软件设计

本系统软件设计包括嵌入式系统开发平台的构建和车载电器声控终端应用程序2个部分。ARM11处理器采用Linux系统,其中嵌入式系统平台构建主要包括Uboot移植、Linux内核裁剪编译、根文件系统制作、设备驱动程序设计以及图形用户界面Qt-Embedded的移植。本文主要介绍车载电器声控终端应用程序的设计及实现。

3.1 非特定人语音识别模块软件实现

3.1.1 非特定人语音识别算法实现

本设计非特定人语音识别基于隐马尔科夫模型算法(HMM),对大量语音数据进行统计后建立识别词条的统计模型语音库,然后从待识别的语音中提取特征与模型库进行匹配,根据匹配分数得到最终的识别结果,HMM具有良好的识别性能和抗噪声性能。非特定人语音识别的流程主要是由数字化和预处理、特征提取、模型匹配和维特比(Viterbi)算法组成[6-7]。

(1)数字化和预处理。数字化包括预滤波和采样量化。MIC接收到的语音信号包含车内的背景噪声,如空调出风噪声等,通过预滤波对原始声音进行降噪,再通过采样量化完成语音信号的A/D转换。预处理主要是针对信号高频分量的衰减问题采取预加重处理的方法,设n时刻的语音采样值为x(n),经过预加重处理后的结果为:

其中,a为预加重系数,0<a<1。

端点检测(VAD)判断出有效语音信号的起止点。本设计采用基于统计理论的端点检测技术,在提取特征时只提取语音信号部分的特征,最大程度地降低噪声干扰。

(2)特征提取。特征提取是语音识别的关键环节,需要选择合适的特征参数。常用特征参数有线性预测系数(LPC)、线性预测倒谱系数(LPCC)、梅尔频率倒谱系数(MFCC)。由于MFCC是基于人耳听觉特性提出的,且具有良好的抗噪性能,故本设计选用MFCC特征参数提取方法,其提取流程如图7所示。

图7 MFCC特征参数提取流程

(3)维特比(Viterbi)算法。Viterbi算法是HMM算法的一部分,是一种帧同步动态规整算法,解决了在给定模型M={A,B,π}和观察符号序列O= {o1,o2,…,oT}时,如何确定与观察符号序列对应的最佳状态序列S= {θ1,θ2,…,θT}的问题。“最佳”的序列是指使P(S,O/M)最大的序列。Viterbi算法可描述为:① 开始,α0′(1)=1,α0′(j)=0,j≠1; ② 递 推,αt′(j) =maxαt-1′(i)aijbij(ot)(t=1,2,…,T;i,j=1,2,…,N);③ 结束,Pmax(S,O/M)=αT′(N)。

在以上的递推方法中,由每一次使αt′(j)达到最大值的状态i组成了最佳状态序列。通过算法得到的概率密度最大状态序列即Viterbi评分。

3.1.2 语音识别模块控制程序设计

LD3320具有2种识别模式:触发识别模式和循环识别模式。由于车载语音环境复杂,为降低误识别率,本设计采用触发识别模式,即采用LD3320中断方式进行工作。语音识别模块的控制程序是通过MCU对LD3320的控制及相应寄存器的配置来完成,语音识别模块控制程序流程如图8所示。

图8 语音识别模块控制程序流程图

程序流程分为为芯片初始化、调用识别列表、识别处理、获得最佳识别结果、输出语音编码信号。

3.2 主处理系统应用程序设计

主处理系统应用程序开发平台为Linux系统2.6.38和 Qt4.6.3[8-9],主要解决语音模块输出语音编码信号的实时采集、采集信息与界面控制程序的通信、车载电器终端驱动控制信号的发送以及显示的实时更新问题。

3.2.1 语音指令编码的采集与通信

为了提高系统程序的运行效率,本设计中建立了语音指令编码采集子线程,车载电器控制信号发送及界面显示则为GUI主线程[10]。采集语音指令编码采用了循环查询法,在语音识别被触发后的识别过程中,采集子线程会不断地读取语音模块输出的语音指令编码信息,并对采集到的编码信息进行判断处理,在当前编码与上次编码不同时发送当前的语音指令编码信息,否则在规定时间内未接受到编码变化则结束本次识别。语音指令编码信息利用emit valuesChanged()函数发送至主线程。采集与通信流程如图9所示。

图9 语音指令采集与通信流程图

3.2.2 车载电器驱动及前屏显示控制程序

控制程序主要是完成车载电器驱动信号的发送和显示窗口的更新。车载电器的操作及前屏的显示都需具有较好的实时性。为了实现对车载电器实时控制以及操作结果的实时显示,采集线程与GUI主线程的通信均利用Qt信号与槽机制来完成。在车载电器控制信号发送部分,将采集获得的语音指令编码作为signal信号源,control函数作为slot槽函数。接收到采集线程实时信号后,control函数打开设备驱动并将驱动控制信号发送至相应的车载电器驱动终端,控制程序信号与槽连接如下:

connect(speechThread,SIGNAL (valuesChanged(int)),this,SLOT(control(int)));

界面显示窗口分为主识别窗口HomePage()和5个子单元识别窗口Aircondition()、Audio()、Lights()、Windows()、Wipers()。本设计采用Qt的QWedget类、QTimer类、QPainter类窗口等。由drawImage()、drawText()、update()等函数进行显示窗口界面的绘制及更新。窗口通过槽函数Update函数接收采集线程实时信号后进行实时的更新。

4 系统测试结果

在系统终端样机上进行了非特定人语音识别率和显示终端实时性测试实验。测试在实验室环境下进行,语音指令词条分为5个部分共包含97个车载电器操作常用词条。实验对象为10男10女,系统测试实验结果见表1所列。

表1 系统非特定人语音识别准确率

实验结果表明在相对安静的环境下,系统识别率达到了95%以上,且男、女识别率接近,同时实验中车载电器驱动控制信号发送准确,前屏显示界面友好美观,显示实时性效果好。由于识别率受环境影响较大,在进行的车载环境实验中,识别率受车内噪声污染影响而有所下降,相对于安静的实验室环境平均下降8%左右。

5 结束语

本文的设计将本地语音识别、主要车载电器的控制及车载前屏显示集成应用于整车车身系统,针对驾驶人员可能不同的问题进行了面向非特定人的语音算法设计,本地语音识别的方法也有效地避免了目前国内外车载语音产品由于网络连接问题带来的实时性差和安全性等问题;同时系统具有较高的识别率,并实现了识别结果在前屏的实时显示,具有广泛的应用前景。由于车载语音环境复杂,而语音识别系统的准确率会随着环境发生变化,因此还需要对系统的抗噪性和鲁棒性进行深入研究,并针对车载电磁环境进行相关的抗干扰设计,以进一步提高系统的实用价值。

[1] 肖 寒.GPS车载导航系统的语音识别应用与实现[D].杭州:浙江大学,2006.

[2] 朱敏慧.中国车载语音时代即将到来[J].汽车与配件,2011(23):39.

[3] Cheng S Y,Trivedi M M.Real-time vision-based infotain-ment user determination for driver assistance[C]//2008 IEEE Intelligent Vehicles Symposium.IEEE,2008:1-6.

[4] ICRoute公司.LD3320数据手册[EB/OL].(2010-09-11)[2014-08-20].http://www.icroute.com/doc/LD3320 数据手册.pdf.

[5] 陈 鼎,于盛林.基于 ARM的LCD模块接口设计及MiniGUI实现[J].仪器仪表学报,2007,28(4):277-281.

[6] 龚 伟,汪鲁才.基于隐马尔可夫模型的话者识别研究[J].声学与电子工程,2006(2):31-33.

[7] 赵 力.语音信号处理[M].北京:机械工业出版社,2009:32-155.

[8] 王润民.基于嵌入式Linux的车载终端系统研究与实现[D].西安:长安大学,2013.

[9] 闫锋欣,曾泉人.C++GUI Qt4编程[M].第2版.北京:电子工业出版社,2010:138-166.

[10] 王 琼,钱润生,孙保群.车载仪表GUI真彩前屏系统的设计[J].合肥工业大学学报:自然科学版,2013,36(8):938-942.

猜你喜欢
声控电器车载
一种车载可折叠宿营住房
家中电器要“焕”新 这波惠民操作别错过
高速磁浮车载运行控制系统综述
奥田电器
奔驰S级48V车载电气系统(下)
电器创新设计两则
智能互联势不可挡 车载存储需求爆发
声控灯为什么可以节能
声控灯为什么可以节能
声控水龙头