单片机 > 单片机程序设计 > 详情

基于STM32实现孤立词语音识别系统

发布时间:2020-08-26 发布时间:
|

语音识别是机器通过识别和理解过程把人类的语音信号转变为相应文本或命令的技术,其根本目的是研究出一种具有听觉功能的机器。本设计研究孤立词语音识别系统及其在STM32嵌入式平台上的实现。识别流程是:预滤波、ADC、分帧、端点检测、预加重、加窗、特征提取、特征匹配。端点检测(VAD)采用短时幅度和短时过零率相结合。检测出有效语音后,根据人耳听觉感知特性,计算每帧语音的Mel频率倒谱系数(MFCC)。然后采用动态时间弯折(DTW)算法与特征模板相匹配,最终输出识别结果。先用Matlab对上述算法进行仿真,经多次试验得出算法中所需各系数的最优值。然后将算法移植到STM32嵌入式平台,移植过程中根据嵌入式平台存储空间相对较小、计算能力也相对较弱的实际情况,对算法进行优化。最终设计并制作出基于STM32的孤立词语音识别系统。


从技术上讲,语音识别属于多维模式识别和智能接口的范畴。它是一项集声学、语音学、计算机、信息处理、人工智能等于一身的综合技术,可广泛应用在信息处理、通信和电子系统、自动控制等领域。


国际上对语音识别的研究始于20世纪50年代。由于语音识别本身所固有的难度,人们提出了各种条件下的研究任务,并有此产生了不同的研究领域。这些领域包括:针对说话人,可分为特定说话人语音识别和非特定说话人语音识别;针对词汇量,可划分为小词汇量、中词汇量和大词汇量的识别,按说话方式,可分为孤立词识别和连续语音等。最简单的研究领域是特定说话人、小词汇量、孤立词的识别,而最难的研究领域是非特定人、大词汇量、连续语音识别。


在进入新世纪之前,语音识别技术大都只在特定行业或场所中使用或者仅仅停留在实验室,处于探索和试验中。最近十年由于消费电子行业的兴起和移动互联网技术的爆发。越来越多的自动化和自能化产品走进人们的日常生活。语音识别技术也随之进入大众的视线,并开始为更多人所了解和使用。例如语音门禁、智能电视上的语音换台、智能手机上的语音拨号、语音控制等等。语音识别技术正在由过去的实验探索迈入实用化阶段。我们有理由相信会有越来越多的产品用到语音识别技术,它与人工智能能技术的结合将会是一个重要的发展方向。语音识别技术最终会改变人与机器之间的交互方式,使之更加自然、便捷、轻松。


本设计的孤立词语音识别是语音识别技术中较为基本的,算法实现也较简单,适合于在嵌入式平台中实现一些简单的语音控制功能。以往类似系统大都基于ARM9、ARM11、DSP、SOC等。这些平台系统规模较大、开发和维护的难度较大、成本也相对较高。STM32是意法半导体(ST)公司推出的基于ARM Cortex-M3内核的高性能单片机。上市之后,由于其出色的性能、低廉的价格,很快被运用到众多产品中。经测试,STM32F103VET6单片机拥有能够满足本系统孤立词语音识别所需的运算和存储能力。所以在本系统中采用STM32F103VET6作为主控制器,采集并识别语音信号。以低廉的成本,高效的算法完成了孤立词语音识别的设计目标。本系统主要涉及的内容如下述:

语音信号的采集和前端放大、防混叠滤波、模数转换。

语音信号预处理,包括预加重、分帧、加窗。

语音信号端点检测,检测输入信号中有效语音的起始和结束点

语音信号特征提取。提取有效语音中每帧语音信号的Mel频率倒谱系数(MFCC)系数。

模板训练,对每个语音指令采集多个语音样本,根据语音样本获取每个语音指令的特征模板。


特征匹配,使用动态时间规整(DWT)算法计算输入语音信号与各模板的匹配距离。识别输入的语音信号。


系统硬件电路设计,人机界面设计。


第一章 方案论证及选择1.1系统设计任务要求本系统利用单片机设计了一个孤立词语音识别系统,能够识别0~9、 “上”、“下”、“左”、“右”14个汉语语音指令。系统通过触摸式LCD与用户交互。


本设计的主要要求如下:

1.采集外部声音信号,转换为数字信号并存储。

2.在采集到的声音信号中找出有效语音信号的开始和结束点。

3.分析检测到的有效语音,得出语音信号特征。

4.对每个待识别的语音指令,建立特征模版。

5.比较输入语音信号特征与特征模版,识别输入的语音信号

6.显示系统操作界面,并能够接受用户控制。


1.2硬件选择

1.2.1 硬件方案总体介绍

系统硬件由音频放大模块、MCU、触摸屏、电源四部分组成。音频放大模块完成对外部声音信号的采集和放大。将声音信号转化为电信号,并放大到0~3V。MCU的ADC参考电压为其电源电压3.3V。音频放大模块的输出信号不超出MCU ADC的电压范围,并且能够获得最大的量化精度。MCU对音频放大模块输入的声音信号进行AD转换。然后提取并识别信号特征。另外,MCU还控制触摸屏的显示和读取触摸屏点击位置。触摸屏负责显示操作界面,并接收用户操作。电源为电池供电。


系统硬件结构图如图1.1所示。

图1.1系统硬件总体结构图


1.2.2 MCU选择传统上孤立词语音识别多采用语音识别专用芯片,例如凌阳SPCE061A、LD3320等。此种方案设计简单,开发周期较短,但可拓展性较差,一般只能识别特定的语音,或者识别语音指令的个数有限制。且专用芯片价格一般相对较高,对系统成本控制不利。


STM32F103VET6是意法半导体(ST)推出的高性能32位Cortex-M3内核单片机,带有ADC、DAC、USB、CAN、SDIO、USART、SPI、IIC、FSMC、RTC、TIM、GPIO、DMA等大量片上外设。Cortex-M3内核属于ARM公司推出的最新架构ARMv7中的M系列,侧重于低成本、低功耗、高性能。其最高主频可达72MHz, 1.25 DMIPS/MHz的运算能力,三级流水线另加分支预测,并且还带有单周期乘法器和硬件除法器。相比较ARM7TDMI内核,Cortex-M3在性能上有较大的提升。


STM32F103VET6内置3个一共21通道的12位ADC,采样频率最高可达1MHz。12通道DMA控制器,可访问系统Flash、SRAM、片上外设,能够处理内存到外设、外设到内存的DMA请求。11个16位定时器,其中T1、T2、T3、T4、T5、T8可连接到ADC控制器,在每次定时器捕获/比较事件到来时自动触发ADC开始一次A/D转换。A/D转换完成后可自动触发DMA控制器将转换后的数据依次传送至SRAM的数据缓冲区。因此STM32F103VET6能够进行精确且高效的A/D转换。能够满足音频信号采集的需求。


STM32F103VET6的FSMC(Flexible StaTIc Memory Controller,可变静态存储控制器)能够根据不同的外部存储器类型,发出相应的数据/地址/控制信号类型以匹配信号的速度。FSMC连接至LCD控制器,可将LCD控制器配置为外部NOR Flash。在系统需要访问LCD时,自动生成满足LCD控制器要求的读写时序,能够精确、快速地完成对LCD界面显示的控制。内置3个最高可达18Mbit/s的SPI控制器,与触摸屏控制器相连能够实现触摸屏点击位置检测。


本系统中采集一个汉语语音指令。录音时间长度2s,以8KHz 16bit采样率对语音进行采集,所需存储空间为32KB,另外加上语音处理、特征提取及特征匹配等中间步骤所需RAM空间不会超过64KB。而STM32F103VET6带有512KB Flash和64KB RAM。所以STM32F103VET6在程序空间上能够满足。语音识别中最耗时的部分是特征提取中的快速傅立叶变换换。一般来说,孤立词语音识别中有效语音时间长度小于1s。语音信号一般10~30ms为一帧,本系统中按20ms一帧,帧移(相邻两帧的重叠部分)10ms,这样一个语音指令不超过100帧。在8KHz 16bit的采样率下,20ms为160采样点 。STM32固件库所提供的16位、1024点FFT,在内核以72MHz运行时每次运算仅需2.138ms。完成100帧数据的FFT所需时间为213.8ms,加上其他处理所需时间,识别一个语音指令耗时不会超过0.5s。所以在程序运行时间上STM32F103VET6也能够满足需要,能够进行实时的孤立词语音识别。


基于以上论证,本系统选用STM32F103VET6作为主控MCU。


1.2.3音频信号采集方案选择音频信号采集多采用音频编解码芯片,例如UDA1341、VS1003等。此类芯片能够提供丰富的功能,且系统一致性较好,但它们成本较高。本系统是一个低成本解决方案,并且只需要采集音频信号。因此不宜采用那些专用的音频编解码芯片。

在本系统的音频放大模块中使用小型话筒完成声电信号转换,两个9014三极管构成两级共基极放大电路。在每一级中加电压负反馈,稳定放大倍数。


语音信号的频带为300~3400Hz,根据抽样定理,抽样频率设为8000Hz就足以完成对语音信号的采集。在本系统中TIM1被设置为ADC触发信号源。TIM时钟源为系统时钟72MHz。经100分频,变为720KHz。计数模式为向上递增,自动重载值为90,即计数值从0递增到90再返回0。比较匹配值设为0~90间任意一个数值 ,则每秒可发出8000次比较匹配事件。ADC每秒完成8000次A/D转换,即抽样频率为8KHz。


1.2.4显示及操作界面选择触摸屏作为一种新的输入设备,它是目前最简单、方便、自然的一种人机交互方式。LCD触摸屏是一种可接收触摸点击输入信号的感应式液晶显示装置。


关键字:STM32  孤立词  语音识别系统 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
ARM基础知识八