语音识别是人机交互的一种重要技术手段。根据实际需要和应用场合的不同,语音识别可以分为孤立词识别和连续语音识别、特定人识别和非特定人识别。语音识别追求的主要指标为高识别率、实时性和大词汇量;而对于一个语音识别系统,还应考虑软硬件设计简单、价格低廉、外围控制灵活、人机交互便捷等特点。性能良好且成本低廉的语音识别系统在智能家电接口、智能玩具、智能仪器等领域提供便捷的人机交互服务,将具有广阔的应用前景。
语音识别系统构成
语音识别系统主要包括识别单元选取、预处理、特征提取、模式匹配、参考模式库等几个部分。根据模式识别的原理,对未知的语音的模板与已知语音的参考模板逐一进行比较,得到的最佳匹配的参考模板就是识别的最终结果。语音识别的系统框图如图1所示。
初步处理:语音信号首先经过话筒会变成电信号,之后进行初步处理。初步处理包括对信号进行的滤波、数字化、预加重、分帧加窗以及端点检测等一系列步骤。通过这些处理,将语音信号变成数字信号,并利用窗函数把语音数据序列分成连续的信号帧,找出信号中的语音部分。
特征提取:信号经过初步处理之后,进入特征提取单元进行特征分析和特征提取。提取特征单元的功能一般是完成基于频谱的特征矢量的计算,提取出代表信号特征的参数,形成矢量模板。语音帧的特征矢量按照一定的规则进行处理之后,作为参考模型和待识别语音的模板。
参考模型库:参考模型库就是语音信号的参考模板库,通常是对说话人进行多次重复的语音训练之后,使用平均或者聚类的分析方法,对这些语音信号进行一系列的分析和计算得到的特征矢量模板组成。
模板匹配:模板匹配单元完成特征矢量与已存语音信号模板之间的匹配计算。将输入语音形成的特征矢量模板与训练得的到语音模板库进行分析比较,根据一定的搜索和匹配原则找出与参考模板中差别最小的特征矢量模板,然后根据此模板对应的语音信号找出识别结果。
语音识别系统的设计思想
随着语音识别算法的发展以及嵌入式设备的运算能力的提高,在具有一定计算能力和存储空间的嵌入式硬件平台上实现语音识别,进而取代一些繁杂的直接操作已经成为了语音识别的重要发展方向。本系统是基于C8051F040单片机的语音识别系统,其识别框架如图2所示。
图1 语音识别系统结构图
图2 嵌入式语音识别系统框架图
嵌入式语音识别系统的工作过程:首先采集语音信号,在程序运行时,通过控制模块输入当前需要进行的模板的训练操作,输入完成后系统采集特定人的语音信号,A/D转换之后进入控制器,通过一系列的算法建立起该特定人的标准语音库,并将其存入存储电路之中;在语音识别时,首先通过控制模块输入当前需要进行的操作,然后采集用户的语音,将采集到的信号进行一系列运算处理提取出特征矢量模板,存入存储单元之中,并与标准语音库中的语音命令进行比较,在允许的误差范围内找出语音库中最接近该段音频的语音信号,并把该语音信号作为识别结果通过显示模块告知用户。
语音识别系统的硬件结构
语音识别系统的硬件部分主要由声音采集模块(拾音器以及功率放大电路)、带通滤波器、存储电路、串口通信电路、键盘控制电路、显示电路以及微控制器等几个基本单元组成。系统的硬件组成框图如图3所示。
图3 语音识别系统硬件结构图
系统的微控制器部分是整个系统的控制中心,主要完成对语音信号的存储、对外部命令的响应、算法的实现以及实验结果的输出。本系统的采样功能由单片机本身实现,选用的C8051F040型号单片机包含有A/D采样的功能,而且采样速率能够满足进行语音信号时所需要的采样频率。
进行语音实验时,语音首先要进入声音采集模块。声音采集模块由拾音器和功率放大器组成。拾音器用于将语音信号转化成电信号。当语音信号从拾音器出来之后会转换成微弱的电信号(毫伏级),因此在拾音器的后端需要将该电信号进行放大处理(放大到伏级),这就是该模块中功率放大电路的作用。
一般的语音最高频率是3.4KHz,最低频率为300Hz,而在语音信号通过输入系统之后需要对该频率段之外的频率成分滤除,以提高语音的信噪比。带通滤波器用于对语音信号进行滤波,以保留300Hz~3.4KHz的信号。为了实现对放大后信号的滤波处理,带通滤波器可由低通滤波器和高通滤波器级联而成,即设计一个下限截止频率为300Hz的高通滤波器和上限截止频率为3.4KHz的低通滤波器来级联。
语音信号的采集一般需要8KHz的采样频率,而单片机本身片上资源较少,当存储语音数据时可能会有存储空间不够的情况,此时,系统需要外部存储器。
键盘控制模块用于对语音的录入、模版的训练和语音信号的识别过程进行控制。
LCD显示模块用于显示当前的系统状况和识别结果,以便提示用户进行下一步的操作。
串口通信模块用于实现上下位机之间的点对点通讯。
语音识别系统的硬件设计
微控制器
语音信号的数据量非常大,系统语音识别时需要具有较强的计算能力。系统选用C8051F040单片机作为处理器。
C8051F040单片机是完全集成的混合信号系统级芯片,采用了流水线处理技术,除了不再划分时钟周期和机器周期,还能在执行指令期间对下一条指令进行预处理,因而大大提高了指令的执行速度。C8051F040有着强大的处理能力,它在一个芯片内集成了数据采集和控制所需的几乎全部硬件外设,代表了目前8位单片机的发展方向。
图4 7805芯片连接图
图5 AS1117芯片连接图
图6 两级放大电路图
图7 带通滤波器电路图
电源系统
本系统外部提供9V的直流电源,因此采用线性稳压芯片7805作为电压调节和稳压器件来将较高的直流电压转变成所需的工作电压,即将9V~12V电源转换为稳定的5V直流电源。
使用7805芯片进行稳压之后,采用AS1117芯片稳压数字电源DV和模拟电源AV的输入。
输入系统
输入系统用于把语音信号通过麦克风变成电信号。同时,由于语音信号比较微弱,所以必须要将电信号适当地放大。一般情况下,拾音器的输出为毫伏级的电压,要将电压信号放大到伏级,需要放大的倍数大致为1000倍。
由于输入到放大器的信号很微小,为了减小动态误差,本系统处于深度反馈之中。同相放大器的电压放大倍数一般在1~100之间,由于放大倍数为1000左右,本文选择NE5532芯片进行两级同向放大器的设计。在两级放大电路中,前一级的输出信号就是后一级的输入信号,后一级的输入电阻就是前一级的负载。两级放大电路的电压放大倍数等于各级电压放大倍数的乘积。
带通滤波电路
语音的频率范围一般为300Hz~3.4KHz,为了提高语音信号的质量,可以在输入与输出的回路中设计一个带通滤波器来滤除语音频率范围以外的频率成分。本文采用运算放大器NE5532设计巴特沃斯带通滤波器。这个带通滤波器通过前级的二阶压控型低通滤波器与后级的二阶压控高通滤波器级联而成。需要低通滤波器的上限截止频率为3.4KHz,高通滤波器的下限截止频率为300Hz。
存储系统
在系统中,对语音信号的存储以及识别算法要求系统有足够的空间来存储这些原始数据和中间数据。本文选择的C8051F040单片机虽然集成了4KB的外部内存,但是对于系统大量的存储需要,还需要扩展外部内存。语音识别时采用8KHz的采样率,每段2s的音频信号至少需要16KB的存储空间,因此系统使用外扩256K字节的FLASH ROM作为语音参考模板的存储空间。对于待识别语音,本系统外扩了32K字节的SRAM作为存储空间,这样就至少能录制4s的语音信号,满足需求。在扩展内存之时,为了配置端口的方便考虑,将其扩展到P4~P7口,即P7口对应于8位数据线,P6口对应于地址线的高8位。
通信电路
为了便于系统调试,系统采用串口通信作为单片机与上位机之间的通讯方式,将计算数据和识别结果传输到机之中。
C8051F040有两种串行通信总线:增强型串行通信总线UART0和异步全双工串行通信总线UART1。
图8 单片机与MAX3232接口电路图
UART0包含四种工作模式(模式0、模式1、模式2和模式3),本系统选择UART0的模式1作为通信模式。UART0的模式1:同步方式为异步,波特时钟为T1、T2、T3或T4溢出,有效位为8位,1起始位,1停止位。
单片机与PC机之间最简单的通信方式就是串口通信。但是RS-223C所规定的逻辑电平与单片机的逻辑电平是不同,必须把单片机的电平转变为RS-223C电平。本系统采用MAX3232芯片进行这种电平转换。单片机与MAX3232的接口电路如图8所示。
MAX3232的输入TXD和RXD通过单片机的交叉开关配置,可以配置到P0.0口以及P0.1口。将TXD和RXD分别接入MAX3232的一端输入T1in以及R1out。MAX3232的输出TD、RD分别接入9针串行插口的2脚和3脚,5脚接地,然后通过串口线与PC上的串行接口相连,即可完成单片机与PC机之间的通信电路搭建。
系统软件设计
在语音识别系统的整个程序设计中,系统进入主程序之后,主程序采用调用子程序的方式来完成对语音模板的训练和识别等任务。系统的主程序流程如图9所示。系统运行之后,有按键按下时,判断为何种命令,如果是模板训练命令则进行模板训练的算法操作,如果是语音识别命令则执行语音识别子程序。
结束语
C8051F040是高度集成的混合信号SoC级微控制器芯片。本文基于此芯片,实现了特定人孤立词语音识别的系统的设计。硬件设计中,以C8051F040为核心进行了电源系统、语音输入、带通滤波、存储系统和通讯模块等电路的设计。本设计的系统可靠性高、成本低、操作简单,具有较好的应用前景。
图9 语音识别主程序流程图