语音识别系统设计_第1页
语音识别系统设计_第2页
语音识别系统设计_第3页
语音识别系统设计_第4页
语音识别系统设计_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章绪论1.1引言智能电子技术在现实生活中的智能家居电子产品中得到广泛应用。特别是计算机技术、网络通信技术、信息控制技术的迅猛发展与提高,促使家庭实现了生活现代化,居住环境舒适化、安全化。这些高科技已经影响到人们生活的方方面面,改变了人们生活习惯,提高了人们的生活质量,智能化家居也正是在这种形势下应运而生的。智能家居的日渐兴起给人们的家居生活带来了全新的感受,家居智能化正在成为一种趋势。[14]智能家电通过处理电子技术,来集成或控制家中的电子电器产品,让家居生活更加舒适、安全、有效。与普通家电相比,智能家电不仅具有传统的家电功能,还能根据人们的语音指挥,由原来的被动静止结构转变为具有主动识别语音执行的智慧工具,优化人们的生活方式,帮助人们有效安排时间,增强家居生活的安全性、舒适性。本文通过对传统的家庭照明系统、电扇和电视机进行改造,使其成为具语音识别功能的智能家电,由于条件限制此次设计的智能控制系统由驱动LED显示来进行仿真实现。1.2国内外智能语音识别系统发展现状语音识别研究从二十世纪50年代开始到现在已经历了半个多世纪的蓬勃发展,在这期间获得了巨大的进展。国外的语音识别研究工作可以追溯到20世纪50年代AT&T贝尔实验室开发的第一个能实现十个英文数字的语音识别系统。是在60年代末70年代初。在70年代,提出了语音信号线性预测编码(LPC)技术,动态时间规整(DTW)技术,矢量量化(VQ)和隐马尔可夫模型(HMM)理论。进入80年代以后,研究的重点逐渐转向大词汇量、非特定人连续语音识别。这一时期,语音识别的研究更进一步,兴起了人工神经网络在语音识别中的应用。进入20世纪90年代后,语音识别系统开始从实验室走向实用。许多著名的大公司如IBM、苹果、AT&T和NTT都对语音识别系统的实用化研究投以巨资。比较有代表性的系统有:IBM公司推出的ViaVoice和DragonSystem公司的NaturallySpeaking,Nuance公司的NuanceVoicePlatform语音平台,Microsoft的Whisper,Sun的VoiceTone,以及当今流行的Apple的siri功能。[1]. 我国的语音识别研究起始于1958年,由中国科学院声学所利用电子管电路识别!十个元音。直至1973年才由中国科学院声学所开始计算机语音识别。1986年3月我I国高科技发展计划(863计划)启动,国家863智能计算机专家组为语音识别技术研究专门立项,每两年举行一次专题会议。现在我国语音识别技术的研究水平已经基本上I与国外同步,在汉语语音识别技术上还有自己的特点与优势。国内有不少语音识别系! 统已研制成功。在孤立字大词汇量语音识别方面,最具代表性的要数92年清华大学电子工程系与中国电子器件公司合作研制成功的THED-919特定人语音识别与理解实- 一 ..: 时系统。在连续语音识别方面,91年12月四川大学计算机中心在微机上实现了一个!主题受限的特定人连续英语---汉语语音翻译演示系统。在非特定人语音识别方面,装有清华大学计算机科学与技术系在87年研制的声控电话查号系统并投入实际使用。■ 而住宅智能化系统的概念也是从上世纪70年代末起源于美国,随后,欧洲、日本等国家住宅智能化也得到了飞速发展。在我国,智能家居这一概念推广较晚,约在90年代末住宅智能化系统进入国内,但其发展速度非常快,全国已建立了一些具有一定智能化功能的住宅小区和家庭智能化生活住宅。订II1.3主要工作!IIIIII鉴于目前市场上的各类智能家居产品在人机交互方面还只是停留在手动控制没线有实现真正的人机对话,本文把语音识别引入到智能家居系统中实现了语音控制家用I电器,具体的说,本文主要做以下几个方面的工作:1.进行设计方案对比,并简要介绍了凌阳SPCE061A单片机,以及它在语音识别方面的应用,并对系统中用到的语音识别技术做了介绍。!. 2给出了系统的总体结构图,并对部分硬件原理图进行了详细的分析和说明。!3.对系统的软件设计进行了介绍,并给出了部分程序的流程图。4对论文进行了总结,并提出了未来需要进一步研究开发的方向。第2章系统设计方案的研究; 2.1方案总体比较和选择IIIII! i 方案的差异在于使用的核心控制芯片不同比较如下:! 方案一:采用凌阳单片机作为我们的控制电路核心,凌阳SPCE061A十六位单片!.一.一 ! 机不仅内置32kFlash,而且集成了语音处理模块。回!! 方案二:采用AT89S52单片机控制,外加专门DSP处理芯片或者语音处理模块。装 与方案三比较,52单片机具有编程灵活,其控制简单的特点,但外加芯片或模块无!疑增加技术难度,并且提高了制作成本。! 方案三:采用AP7003芯片为控制核心,外加简单的语音处理模块。与方案二、! 三比较不需要编程,控制简单,但识别率较低,效果不好。[4]! 通过比较,方案二和方案三无论从技术上经济上还是从效果上都没有方案一好,订! 基于SPCE061A够建的语音控制系统具有成本低、使用方便、保密性好等优点。所以! 选择方案一。IIII! 2.2方案具体分析线I! 方案一:! 基于凌阳SPCE061A单片机的语音识别控制方案,实现语音对家用电器的控制。! 本方案以SPCE061A单片机作为主控核心,根据用户需要可以编写若干控制程序,根! 据各种家电的不同需要,在不同时刻输出对家电开关等的控制信号,然后语音控制家I! 电实现各种功能。[8]! 1.PC机I! 通过EZ-PROBE接口和单片机连接来调试、仿真和下载程序的。这样,就不需要! 再用仿真器和编程器了,只要将其连接好,就可以在PC机上调试程序,并且在线仿!真,最后将程序下载到芯片中。2.单片机板块以凌阳16位单片机SPCE061A作为主控核心,较少的辅助硬件电路相结合制成的板块。具备单片机最小系统电路外,还包括有源电路、音频电路、复位电路等,采用电池供电。主体部分采用的SPCE061A,该芯片属于16位机,芯片的设计体现了SOC概念,内嵌32K的FLASH的存储空间,双16位的计数器、定时器,14个中断源,A/D、D/A转换单元,32位可编程的多功能IO口,LVD/LVR等部分。SPCE061A在2.6v~3.6v的工作电压范围内的工作速率范围为0.32MHz~49.152MHz,较高的工作速率使其应用领域极其宽广PROBE的接口,该接口有5针,其中两个分别是地(VSS)和3.3V电源(VCC)。此接口与PROBE的5针接口相连,PROBE的另一端接PC机25针并口。这样,就不需要再用仿真器和编程器了,只要将其连接好,就可以通过它在PC机上调试程序、在线仿真、最后将程序下载到芯片中,完成程序的抄写。3.显示驱动电路本系统用LED做演示,驱动电路仅需用三极管放大驱动电流即可。采用凌阳16位单片机SPCE061A作为控制核心。SPCE061A具有丰富的资源、指令周期短、工作速率快、低功耗、低电压、可编程音频处理、在线下载易于调试等优点,完全适合于对家电的控制。尤其是其语音播放功能对增加家电控制系统语音报告功能提供了很大的方便。方案一:使用AT89S52单片机,此方案就是要以单片机的硬件结构为基础。它的运行过程是在程序控制下逐条执行程序指令的过程。因为电路用单片机控制,所以电路非常简洁。电路的核心部分是AT89S52单片机,52单片机具有价格低廉、使用简单等特点,但其运算速度较低、功能比较单一,如要对家用电器实现语音等功能就必须外扩芯片,控制过程相对比较繁琐。方案二:以AP7003为核心的控制系统,是低成本语音识别专用集成电路,内置有麦克风放大器、A/D转换器、语音处理器和I/O控制器,经预处理后可识别12组不同的字词,每组1.5秒时长,可连词或单词识别。AP7003包括AP7003-01(由CPU串行控制)和AP7003-02(由按键直接控制)两种型号,且最有高度的I/O可编程性,使用简单方便,可广泛应用于玩具、识别转控、自动答录等领域。AP7003采用DIP40封装°AP7003具有两种工作模式,即录音模式和识别模式。在使用识别模式之前,应先将目标录入芯片内。AP7003内有12条存储体用于存储12组不同的字句,每个存储体可存储1.5秒时长的字词,可通过键盘或按程序编制的顺序选择存储体录入及存放目标词。语音可通过外部麦克风或其它媒体录入芯片内,经内部处理后以不同的数字持片信号保存于存储体中。此系统指令对指令数目有限制,而且识别率较低。基于上述分析,拟选择方案一。第3章系统硬件设计3.1硬件总体结构和工作过程本系统硬件结构如图3-1所示:由图可知系统可分为:MIC输入模块、单片机、存储模块、功放和喇叭输出模块四大部分和外设的电源模块、键盘模块和液晶显示电路模块构成。3.1.1凌阳SPCE061A介绍SPCE061A是凌阳科技公司研制的一个16位结构的微控制器。它的内核采用公司最新推出的(MicrocontrollerandSignalProcessor)16位微处理器芯片,工作电压范围为2.6〜5.5v,系统工作频率为0.375〜49.152MHz。它不仅具有微处理器的功能,还具有DSP运算功能,低电压,较高的系统工作频率使该单片机可以快速的处理复杂的数字语音信号。片内集成了具有自动增益控制功能的麦克风输入方式以及DAC音频输出功能,使用凌阳音频编码SACM-S240方式(2.4Kb/s),能容纳210s的语音数据,提供丰富的C函数库和语音处理函数库,因此非常适合数字语音和语音识别产品的开发。另外,SPCE061A还具有唤醒功能,即当输入电平发生变化时会触发CPU中断。在电池供电、追求低功耗的应用场合,可以让CPU进入睡眠模式(利用软件控制)以降低功耗,需要时才唤醒CPU,使其进入工作状态,这样既可以节省能耗,又可以

延长机器的使用寿命。正因为有以上特点,SPCE061A微处理器是适用于数字语音识别应用领域产品的一种最理想、经济的选择。SPCE061A的结构如图3-2所示:SPCE061A的PLCC84引脚的排列如图3-3所示:SPCE061A的管脚说明见表3-4所示:ICEICLICEAUD2IOA15-0I0B1S■DICEICLICEAUD2IOA15-0I0B1S■D.auoi图3-2SPCE061A的结构119876543214388-T2—-^3—-^4—"T5—-T6—-^7—119876543214388-T2—-^3—-^4—"T5—-T6—-^7—"^8—F—2o—21——22——23—-24——25—26—27 -^8—-29—-30—-^1—■32OSC320OSC321XTESTVDDXICEXICECLKXICEJDAVSSPVINDAC1DAC2VREF2VSSAGCOPIMICOUTMICNPFUSENCNCNCMCNNCNCNCNCNCPVPPIOBL1IOBL2IOB13IOBL4IOBL5XSLEEPVSSXROMTIOA15IOA14IOA13IOA12IOA11IOA10IOA974卞72-Tf■70T69而q5"分衍"58"57■56IIIIIIII90424444444图3-3SPCE061A的引脚排列SPCE061A有PLCC84和QFP80两种封装。封装形式为PLCC84的共有84个引脚。

表3-1芯片引脚说明11111111名称PLCC84脚位说明!111111■IOA0-IOA741-48IOA[7:0]可设置为键唤醒,IOA[6:0]可设置为ADC输入1111IOA8-IOA1553-60普通I/O11111OB05可设置为SIO-SCK1111IOB14可设置为SIO-SDA1111IOB23可设置为外部中断触发引脚EXT11111IOB32可设置为外部中断触发引脚EXT21111IOB41可与IBO2组成反馈信号1111IOB581可与IBO3组成反馈信号1111IOB680普通I/O装1IOB779可设置为UART-RXIOB878可设置为TimerA的PWM输出口1111IOB977可设置为TimerB的PWM输出口1111IOB1076可设置为UART-TX1111IOB11-IOB1568-64普通I/O1111RESET6复位,低电平有效订1X32012晶振输出X32113晶振输入1111DAC121音频DAC1输出1111DAC222音频DAC2输入1111AGC25AGC控制脚1111MICN28MIC差分信号输入(负极)线1MICP33MIC差分信号输入(正极)V2VREF232V基准电压输出1111MICOUT27MIC前级放大输出1111OPI26MIC次级放大输入1111VADREF34AD参考电压输出1111VMIC37MIC电源1111VEXTREF35ADC参考电压输入1111VDDIO51,52,75I/O电源1111VSSIO49,50,62I/O地1111AVDD36模拟电源1111AVSS24模拟地1111VDD7,15数字电源1111VSS9,19,38数字地1111VCION8连接电容(PLL电路相关)111SLEEP63睡眠模式ICE16ICE使能ICECLK17ICE时钟ICESDA18ICE数据TEST14TEST接高电平进入测试模式PFUSE29保密设定PVIN20保密设定N/C10,11,30,31,32,39,40,61,69,70,71,72,73,74,82,83,84未用3.1.2凌阳单片机最小系统16位u'nSP16微处理器;工作电压(CPU)VDD为2.4〜3.6V(I/O)VDDH为2.4〜5.5VCPU时钟:0.32MHz〜49.152MHz;内置2K字SRAM;内置32KFLASH;可编程音频处理;晶体振荡器;系统处于备用状态下(时钟处于停止状态),耗电仅为2PA@3.6V;2个16位可编程定时器/计数器(可自动预置初始计数值);2个10位DAC(数-模转换)输出通道;32位通用可编程输入/输出端口;14个中断源可来自定时器A/B,时基,2个外部时钟源输入,键唤醒;具备触键唤醒的功能;使用凌阳音频编码SACM_S240方式(2.4K位/秒),能容纳210秒的语音数据;锁相环PLL振荡器提供系统时钟信号;32768Hz实时时钟;7通道10位电压模-数转换器(ADC)和单通道声音模-数转换器;声音模-数转换器输入通道内置麦克风放大器和自动增益控制(AGC)功能;具备串行设备接口;具有低电压复位(LVR)功能和低电压监测(LVD)功能;内置在线仿真电路ICE(In-CircuitEmulator)接口;具有保密能力;具有WatchDog功能。3.1.3凌阳单片机最小系统SPCE061A最小系统当中,包括SPCE061A芯片外围的基本模块,晶振输入模块(OSC)、锁相环外围电路(PLL)、复位电路(RESET)、指示灯(LED)等。系统时钟时钟电路采用晶体振荡器电路,外接晶振采用32768Hz。32768Hz实时时钟通常用于钟表、实时时钟延时以及其它与时间相关类产品。SPCE061A通过对32768Hz实时时钟源分频而提供了多种实时时钟中断源。例如,用作唤醒源的中断源IRQ5_2Hz,表示系统每隔0.5秒被唤醒一次,由此可作为精确的计时基准。32768Hz的实时时钟经过PLL倍频电路产生系统时钟频率(Fosc),Fosc再经过分频得到CPU时钟频率(CPUCLK)可通过对P_SystemClock(写)($7013H)单元编程来控制。默认的Fosc、CPUCLK分别为24.576MHz和Fosc/8。用户可以通过对P_SystemClock单元编程完成对系统时钟和CPU时钟频率的定义。此外,32768HzRTC振荡器有两种工作方式:强振模式和自动弱振模式。处于强振模式时,RTC振荡器始终运行在高耗能的状态下。处于自动弱振模式时,系统在上电复位后的前7.5s内处于强振模式,然后自动切换到弱振模式以降低功耗。CPU被唤醒后默认的时钟频率为Fosc/8,用户可以根据需要调整该值。CPU被唤醒后经过32个时钟周期的缓冲时间后再进行其它的操作,这样可以避免在系统被唤醒后造成ROM读取错误。电路图如图3-4所示,晶振32768两端分别与两个电容相连,振荡器起振要在一定电压值下才能起振。这两个电容叫负载电容,保持一个恒定的偏置电压供给。电容只是保持这个固定的电压值,不起其他的作用。不同晶振需要不同的电压,和容值是有关系的。Y1CS(D. |] fSC32768二二C14 二二C152Cp 2Qp1 VSS图3-4晶振电路锁相环PLL振荡器系统要正常工作需要外部的输入信号与内部的振荡信号同步,利用锁相环电路就可以实现这个目的。锁相环的特点是:利用外部输入的参考信号控制环路内部振荡信号的频率和相位。因锁相环可以实现输出信号频率对输入信号频率的自动跟踪,所以锁相环通常用于闭环跟踪电路。锁相环在工作的过程中,当输出信号的频率与输入信号的频率相等时,输出电压与输入电压保持固定的相位差值,即输出电压与输入电压的相位被锁住,这同时也是锁相环名称的由来。PLL通过比较外部信号的相位和由压控晶振的相位来实现同步的,在比较过程中,锁相环电路会不断根据外部信号的相位来调整本地晶振的时钟相位,直到两个信号的相位同步。在数据采集系统中,锁相环是一种非常有用的同步技术,因为通过锁相环,可以使得不同的数据采集卡共享同一个采样时钟。PLL电路的作用是将系统提供的实时时钟的基频(32768Hz)进行倍频,调整至49.152MHz、40.96MHz、32.768MHz、24.576MHz或20.480MHz。系统默认的PLL自激振荡频率为24.576MHz。PLL的电路框图如图3-5所示。PLL电路分别与芯片的8和9管脚相连,完成输入信号和内部振荡信号的同步。图3-5锁相环电路复位电路复位电路的主要作用就是恢复系统默认值,它采用按键与电容并联,当按键按下的时候RES_B与VSS短接,使得电容放电RES_B与VSS相同,RES_B与SPCE061A的6脚(XRESB)相连,达到电路复位的作用。当按下控键按键后系统从新开始工作,或是说单片机里的程序从第一条运行。复位是对61板内部的硬件初始化。61板本身具有上电复位功能,即只要一通电就自动复位。另外,还具有外部复位电路,即在引脚6上外加一个低电平就可令其复位。复位电路图如图3-6所示。图3-6复位电路图3.2语音模块语音输出电路如图4所示,其中VDDH为参考电压,VSS是系统的模拟地。音频信号由SPCE061A的DAC引脚输出送到电路的J4端,通过音量电位器R9的调节端送到集成音频功率放大器SPY0030,经音频放大后,音频信号从SPY0030输出经J2端口外接扬声器播放声音。SPCE061A内置2路10位精度的DAC,只需要外接功放电路即可完成语音的播放。图中的SPY0030是凌阳的一款音频放大芯片,可以工作在2.4〜6V范围内,最大输出功率可达700mW。J5都是语音输出接口,;是两针的插针外接喇叭,由DAC输出引脚经语音集成放大器SPY0030放大,然后输出。SPY0030是音频功率放大器。因为声音是不同振幅和不同频率的波,即交流信号电流,三极管的集电极电流永远是基极电流的B倍,B是三极管的交流放大倍数,应用这一点,若将小信号注入基极,则集电极流过的电流会等于基极电流的B倍,然后将这个信号用隔直电容隔离出来,就得到了电流(或电压)是原先的B倍的大信号,这现象称为三极管的放大作用。经过电流与电压的共同放大,就完成了功率放大°R14为可调电阻,当调节阻值大小事,即调节了基极的输入信号,最终影响的就是输出信号即语音输出音量的大小。SPY0030的放大倍数固定为20倍。图3-7音频输出电路语音输入电路如图3-8所示,其中VMC提供传声器的电源,AVSS1是系统的模拟地,VCM为参考电压,1脚和2脚分别是传声器X1的正极、负极的输入引脚,连接SPCE061A的MICP、NICN管脚上。当对着传声器讲话时,1脚和2脚将随着传声器输入的声音产生变化的波形,并在SPCE061A的两个端口处形成两路反相的波形,送到SPCE061A控制器内部的运算放大器进行音频放大,经过放大的音频信号,通过ADC转化器转化为数字量,保存到相应的寄存器中。SPCE061A的A/D转换器有8个通道,其中有1个通道是MIC-NI输入,它专门用于对语音信号进行采样。语音信号经过MCI转换成电信号,然后输入至SPCE061A内部前置放大器。由于人们说话时,麦克风距离嘴边的距离不同,语音信号的能量将会有很大的差异,此时,如果芯片的的输入信号太大或是太小都将影响识别的精度。而SPCE06lA内部就带有自动增益控制电路AGC能随时跟踪、监视前置放大器输出的音频信号电平,当输入信号增大时AGC电路自动减小放大器的增益;当输入信号减小时,AGC电路自动增大放大器的增益,从而以补偿太小或是太大的信号,以便使进入户A/D的信号保持在最佳电平,又可使削波减至最小。SPCE061A芯片中已经集成了音频输入专用ADC以及AGC放大电路,因为此芯片外部的电路比较简单。MICP和MICN将随着MIC产生的波形变化,并在两个端口处形成两路反相波形,在经过两级运放放大,把放大的语音信号交给ADC转换为数字量,这时就可以通过单片机编程对这些数据进行处理,进行语音处理识别等功能。正如我们在前面介绍的61板具有强大的语音处理功能,如图3-8所示,X1是语音的MIC输入端,带自动增益(AGC)控制。3.3SPR4096外扩Flash模块在本系统中,当我们对系统进行训练、识别、操作时,有一些语音提示,由于SPCE061A内部只有32k字的flash空间,除了一部分空间作为程序的存储之后,剩下的用来存储语音数据时远远不够的,于是系统外扩了flash。SPR4096与SPCE061A的连接方式为:SCK与SPCE061A的IOB0接,SDA与SPCE061A的IOB1口接。SPR4096按串行接口模式工作,要把CF2〜CF0均接高电平。CF7为低电平时选中FLASH,高电平时选中SRAM。SPR4096是一个高性能的4M-bit(512X8-bit)FLASH,分为256个扇区。每个扇区2Kbyte。SPR4096还内置了以个4KX8bit的SRAM。在进行FLASH的编程/擦除时,可以并发执行SRAM的读/写。SPR4096内置了一个总线存储器接口和一个串行接口,它允许单片机通过8-bit并行模式或者1-bit的串行模式访问FLASH/SRAM存储区。SPR4096串行接口的工作频率可达到5MHz。SPR4096有两个电源输入端VDDI和VDDQ。VDDI是给内部FLASH和控制逻辑供电的;VDDQ是专门为I/O供电的。供电电压VDDQ:2.25V〜3.6V。SPR4096最大读电流为2mA,最大编程/擦除电流为6mA。SPR4096模块包括总线存储接口,串行接口,SRAM,编程与擦除控制器和一个4M的FLASH。选择串行接口时,SCLK作为时钟信号线,SDA作为1-bit的数据线。如果接收到FLASH的读指令或者SRAM的读/写指令,串口会把这些指令传给编程和擦除控制器,让编程和擦除控制器去完成相应操作。串行接口模式的选中是通过CF2-CF0来实现的。当CF2-CF0均接高电平时,选中的就是串行接口模式,在串行接口模式下,CF7为低电平时选中FLASH,高电平时选中SRAM。该芯片有SIF(SerialInterface)和BMI(BusmenoryInterface)两种工作方式,但DIP24只支持SIF方式。3.4系统电源电路设计SPCE061A采用低电压供电方式,这可以大大降低芯片的功率损耗。其中,SPCE061A的电源分两种,即内核电源(VDD)和I/O口电源(VDDH)。I/O口电源采用5V电压,而内核电源则为3.3V或者更低。降低芯片内核电压的目的主要还是降低芯片的功耗,同时也可以降低芯片的工作温度,延长芯片使用寿命。尽管这种语音芯片的工作电压范围很大,但是为了使芯片内核运行更加稳定,同时又保证I/O口及外部扩展部件的工作电压要求,电源电路采用芯片7805和SPY0029分别提供5V和3.3V电压完成对整个系统供电。7805芯片电路中正常工作是,输入、输出电压差为2〜3V。电路中靠近引脚处接入电容C40、C41用来实现频率补偿,防止稳压器产生高频自激震荡和抑制电路引入的高频干扰,C39是电解电容,以减小稳压电源输出端由输入电源引入的低频干扰。D6是保护二级管,当输入端短路时,给输出电容器C39一个放电通路,防止C39两端电压作用于调整管的be结,造成调整管be结击穿而损坏。如图3-12所示SPY0029芯片电路采用3节5号干电池供电,其中前后两组电容用来去耦滤波,使其供给芯片的电源更加干净滑。为了获得标准的3.3V电压,在电路上加入SPY0029三端稳压器和两个二级管,是为了防止误将电源接反造成不必要损失而设置的。在实际应用中最好不要把电源接反,因为反向电压超过一定值,二极管会被损坏,达不到保护母的。后面的零电阻及电源分成不同的几路是为了减少电磁干扰设置的。图3-10是电源部分电路,4.5V直流电压经过SPY0029后产生3,3V给整个系统供电。SPY0029是凌阳公司设计的电压调整IC,采用CMOS工艺。SPY0029具有静态电流低、驱动能力强、线性调整出色等特点。图中VDDH为SPCE061A的I/O电平参考,接SPCE061A的51脚,这种接法使得I/O输出高电平为3.3V;VDDP为PLL锁相环电源,接SPCE061A的7脚;VDD和VDDA分别为数字电源与模拟电源分别接SPCE061A的15脚和36脚;AVSS1是模拟地,接SPCE061A的24脚;VSS是数字地,接SPCE061A的38脚;AVSS2接音频输出电路的AVSS2。VSS图3-10电源电路模块3.5控制与结果显示电路系统的控制显示电路主要是通过键盘电路以及LED液晶电路来实现其中键盘主要用来控制当前系统所应该执行的一些功能,比如模板的训练、模式的匹配等。本设计在实验阶段考虑成本不加入LCD显示模块,在实验后可加入LCD模块如图3-9所示。1.键盘模组键盘模组可直接用排线与61单片机I/O口相连。1*8KEY的8列分别定义为COL1〜COL8,1行定义为ROW1。如图3-11所示。按键分别和SPCE061A的IOA0-IOA7相连,他们的作用分别为1个系统开关键,1个系统复位键,1个单个命令训练按键,1个所有语句循环训练按键,剩余4个初步设定为LCD功能控制按键。每个按键的按下与抬起都会送给IOA口一个电压值,当按键按下使相应的IOA口得到一个高电压。相反,则为低电压。单片机则根据IO口的电压值进行相应的操作。图3-111*8KEY接口图及使用示意图2.LED模组本论文中间接利用LED显示来测试是否达到控制电器目标。利用数码管显示数字的不同来模拟验证是否能达到对家用电器的控制。LED和LCD电路作为系统的显示部分,以显示当前的系统状况及识别结果以便检验实验结果和提示用户进行下一步操作。LCD部分在实验阶段可不接入。计划采用内置SPLC0501点阵式图形液晶显示模块由液晶驱动控制器SPLC501、LCD显示器和外部设备的接口等几部分组成,液晶驱动控制器SPLC501集行、列驱动器、显示数据存储器(DDRAM,DisplayDataRAM)和控制器与一体,广泛用于小规模液晶显示模块。内置SPLC501点阵式图形液晶显示模块的管脚排列和SPEC061A接线方法如图3-12所示A B C D E F G H*展 *展 *寸*展D D D D D A B C D E F G H*展 *展 *寸*展D D D D D D D D^VI?I9G& GG辱GGabcdefgh图3-12LED模块图3-13SPLC501LCD显示模块第4章系统软件设计4.1语音识别技术介绍近年来,人们对自动化产品的需求推动了语音识别产品的开发与研究。语音识别技术是实现人机通信的一种重要的技术手段,它使人们能够摆脱键盘,通过语音命令实现控制功能,语音识别产品在人机交互应用中已经占到越来越大的比例。然而目前语音识别主要是借助大型计算机系统来实现,不易推广和应用,这里研究的是基于凌阳SPCE061A单片机嵌入式语音识别系统。⑵4.1.1基本原理语音识别技术就是一种让机器通过识别和理解过程把语音信号转变成相应的文本或命令的技术。机器语音识别、处理的过程与人对语音识别、处理的过程基本上是一致的,目前主流的语音识别技术是基于统计模式识别的基本理论。一个完整的语音识别系统可大致分为语音特征提取、声学模型与模式匹配(识别算法)和语义理解三部分。其基本原理如图4-1所示:输出输出图4-1语音识别系统原理框图从图中我们可以看出语音识别一般分为两个步骤:第一步是系统“学习”或“训练”阶段,这一个阶段的任务是建立识别基本单元的声学模型以及进行文法分析的语言模型,即构建参考模式库;第二步是“识别”或“测试”阶段根据识别系统的类型选择能够满足要求的识别方法,采用语音分析方法分析出这种识别方法所要求的语音特征参数,按照一定的准则和测度与参考模式库中的模型进行比较,通过判决得出结果。语音识别分为特定人识别和非特定人识别两种方式。特定人识别是指语音样板由单个人训练,对训练人的语音命令识别准确率较高,而对其他人的语音命令识别准确率较低或不识别;非特定人识别是指语音样品由不同年龄、不同性别、不同口音的人进行训练,可以识别一群人的命令。根据说话人说话方式的不同又可以将语音识别分为孤立词识别和连续语音识别。孤立词识别系统要求说话人每次只说一个字词、一个词组或一条命令让识别系统进行识别,其中的词组或命令在词汇表中算是一个独立的词条;连续语音识别是指由多个数字连接成的多位数字串的识别或由少数指令构成的连接词条识别。在本系统中,我们采用语音信号的短时能量和短时过零率进行端点检测,用线性预测倒谱系数(LPCC)作为特征参数,语音特征提取是分帧提取的。基于本系统采用孤立词识别的特点,我们采用动态时间规整(DTW)算法进行模式匹配。[5]4.1.2端点检测语音信号的端点检测是指用数字处理技术来找出语音信号中的各种段落(如因素、音节、词素、词节等)的始点和终点的位置。在汉语中,其主要母的是找出字的两个端点,进而找出其中的声母段和韵母段的各自位置。这种处理对于汉语语音识别是非常必要的。噪声语音信号的端点检测室语音识别系统中及其关键的一步。只有准确地判断语音信号的端点才能正确地进行语音识别。在本系统中我们采用的是基于短时能量和短时平均过零率的检测方法,又称为是双门限比较法。我们定义以n为标志的某帧语音信号的短时平均能量EnE=£[x(m)w(n-m)]2-X[x(m)w(n-m)]2 (4.1)n上式可以解释为:首先计算原始语音信号各-〃个采样值的平方,然后通过一个冲击响应为h(n)的滤波器,最后输出能量序列,这里h(n)=w(n)2。信号的幅度值从正值到负值要经过零值,从负值到正值也要经过零值,称其为过零,统计信号在单位时间内的过零次数就称为过零率。如果信号按段分割就称为短时,把各段信号的过零率作统计平均就是短时平均过零率,其定义式为:z- sgn[x(m)]-sgn[x(m-1)]w(n-m) (4.2)n在语音开始前,m一旦有某一帧的能零值超过阈值,就认为有效语音已经开始。这样做的目的在于能使某些能零值较小的辅音易于进入有效语音段。当然一个短时的噪音也有可能被当作有效语音,这种情况将由语首尾细判及字词分割部分去除。在有效语音开始后,只有当有连续的几帧语音的能零值低于阈值时,才认为有效语音结束。这样保证了当一个字刚刚结束而另一个字尚未开始时,不会将后面的语音截断。多余的无效语音样值也由语音首尾细判和字词分割部分去除。阈值的大小由噪. 音统计部分给出。III!I 4.1.3语音信号的特征参数IIII 语音信号是十分复杂的非平稳信号,它不仅包含语义信息,还有个人特征信息,I • 一 : 对其特征参数的研究是语音识别的基础。本系统米用线性预测倒谱参数(LPCC)作!I 为语音信号的特征参数。1 线性预测倒谱参数是线性预测系数在倒谱域中的表示。该特征是基于语音信号为!I 自回归信号的假设,利用线性预测分析获得倒谱系数。它的优点是计算量小、易于实1现、对元音有较好的描述能力。!装 由于通过自关法求得的LPC系数保证了系统的稳定性,由LPC得到:I Clpcc(n=Cpc(n)+Z―LPCC(n-k(k) (4.3)I nii■■iI 根据同态处理的概念和语音信号产生的模型,语音信号的到谱c(n)等于激励信号订I的倒谱e(n)和声道传输函数的倒谱h(n)之和。通过分析机理信号的语音特点以I 及声道传输函数的零极点分布情况可知e(n)的分布范围很宽,c(n)从低时域延I伸到高时域,而h(n)主要分布于低时域中,我们知道,语音信号所携带的语义信II 息主要体现在声道传输函数上,因而在语音识别中通常取语音信号的倒谱的低时域构线I成LPC倒谱特征c即:II c=c(1),c(2),...,c(q) 10WqW16 (4.4)I式中,q为LPC倒谱特征的阶数。III4.1.4动态时间规整IIIII 动态时间规整(DTW)是把时间规整和距离测度计算结合起来的一种非线性规!I整技术。假设:①参考模板特征矢量序列为«,«.2;②输入语音特征矢量序列为TOC\o"1-5"\h\z: 12mI b,b,…b,其中M尹N,那么动态时间规整是要寻找时间规整函数m=w(n),它把输I 1 2NI 入模板的时间轴n非线性地映射到参考模板的时间轴m,并且该w满足:\o"CurrentDocument"D=min工d[n,w(n)] (4.5)n=1式中,d[n,w(n)]是第n帧输入矢量和第m帧参考矢量的距离,D是相应于最优时间规整下二模板的距离测度。DTW是一个典型的最优化问题,它用满足一定条件的时间规划函数w(n)描述输入模板和参考模板的时间对应关系,并求解二模板匹配时累计距离最小所对应的规整函数。实现动态时间规整的常用方法就是动态规划(DP),本系统采用加权累计距离的对称动态规划技术。假设规整函数写成:

F=c,c,…c,…,c,其中c=(n,m)

1 2i1 iii其约束条件如下:单调和连续条件:0<n-n1<1,0<m-m1<1;边界条件:n-m-1,n-N,m-M;调整窗条件:I七-mJ<r定义加权累计距离:D(n,jjjD(n,jjjm)=min4(4.6)j

j=1式中,d[n,m]和式(4.5)中相同,是对点c.=(n,m)上两个矢量的距离,加权系数W一般采用对称形式: 7 77W=(n一m)+(m一m),其中n=m=0 (4.7)▽jjZWj==M+N=常数。调整窗口函数r的引入使它的使用范围更加广泛。累计距离还j时以用递推公式计算:分母E▽jjZWj==M+N=常数。调整窗口函数r的引入使它的使用范围更加广泛。累计距离还j时以用递推公式计算:'D(n,m-1)+d[n,m](4.8)D(n,m)=min<D(n-1,m-1)+2d[n,m]>D(n-1,m)+d[n.m](4.8)初始条件:D(1,1)=2d[1,1]。最后计算结果:D(N,M)=D(N,M)/(N+M)作为二模板的DP匹配距离。由于基本的DTW方法只适用于识别基元较小的场合,例如声母、韵母、音节的识别,因此多用于孤立词的识别。现在常用的语音识别方法还有隐式马尔科夫模型(HMM)、神经网路等。4.2语音训练与识别前面一介绍语音识别方式有两种,一种是特定人识别(SD),特定人识别之前需要进行语音训练:另一种是非特定人识别(SI),非特定人识别不需要进行语音训练。本系统采用的是前一种识别模式。特定人识别的原理如图4-2所示:语音语音语音语音从实现过程的时序来看,可将语音识别在单片机上的实现过程分为4个主要阶段:初始化、训练、辨识和辨识结果输出。初始化训练的语音模型库样板数据存于SPCE061A单片机的内部RAM中,由于是掉电丢失的,因此每次上电复位后都要重新进行训练,可用函数BSR_Delete_SDGroup(intSDGroupNo)实现,当SDGroupNo=0时表示选择RAM并开始初始化。若RAM擦除成功则返回“0”,否则返回“-1”。训练训练过程通过调用库函数BSR_Train(intWordID,intTrainMode)来完成。其中参数WordID为命令序号,范围0x100〜ox105,并且对于每组训练语句都是唯一的;参数TrainMode为训练次数,为1时表示要求使用者在应用之前训练一次;为0表示训练两次。为了增强可靠性,最好训练两次,只有两次命令相同时才成功。该函数有8种可能的返回值,其中“0”表示训练成功。3.辨识辨识部分是整个语音识别过程的重点,这部分执行效果的优劣将直接影响到语音识别的准确性和及时性等指标。按执行顺序,可将辨识分为辨识器初始化、启动实时监控、获取辨识结果、停止辨识等4个环节。辨识器初始化用来定义语音输入来源,可通过调用函数BSR_InitRecognizer(intAudioSource)完成,其中参数AudioSource为0时表示MIC语音输入,为1时表示LINE_IN模拟电压输入。当主程序调用该函数时,语音辨识器便打开8KHz采样频率的FIQ_TMA中断,并开始将采样得到的语音数据填入语音辨识器的数据队列中。启动实时监控由函数BSR_EnableCPUIndicator(void)完成该功能,无参数、无返回值。通过调用相关的硬件资源对辨识过程进行实时监控,保证辨识能正常地执行,若辨识正常,会产生一个16ms连续稳定的方波。获取辨识结果由函数BSR_GetResult(void)完成语音识别,并返回语音识别结果。当识别成功时,返回命令的对应序号;无命令识别出来时,返回“0”;识别器未初始化,返回“-1”。停止辨识调用函数BSR_StopRecognizer(void),则停止语音辨识,此时FIQ_TMA中断也将关闭。4.辨识结果输出辨识结果可通过显示、声音等方式实现。显示方式如LED、数码管、LCD等,均有一定的提示作用;这里重点介绍的是用声音方式体现辨识结果,即语音响应的方式,通过播放发音者各语音命令对应的语音响应(提示音),告知发音者辨识是否成功。可利用凌阳提供的压缩算法工具(CompressTool),把事先录制好*.wav文件压缩为一定格式,存放于工作目录,作为语音响应。若需要播放,则通过调用相关API函数来完成。4.3系统软件设计系统的工作过程为:训练模式启动后,系统播放语音提示,提示用户语音训练己启动,接下来用户可按照系统提示依次对各条命令进行训练,在训练过程中,如训练成功则有语音提示进行下一条命令进行训练,如出现训练失败,也会提示用户继续训练此条语音,直到全部命令训练完毕后系统将准备进行语音识别:当向控制器发出语音命令时,声波通过Mic输入,将相应的信号传递到SPCE061A处理芯片,经编解码电路和数字信号处理后,在芯片中通过相关程序与预先植入的语音库中的命令进行比较识别,根据识别的结果进行判断,转换为能被系统识别的信号,从而对被监控系统进行控制。在此次设计中利用预先编号的程序直接将结果反映在LED曰二职L、显示器上。

图4-3系统主流程图4.4软件主程序IIIIIIIII 本系统的软件主要包括一个主程序和四个子程序,主程序主要负责对整个控制器; 的工作进行管理、协调和对子程序的调用以及对用户的各种服务的响应。四个子程序I1 分别是语音识别、DTMF收发、语音录放、信号音检测四个子程序。限于篇幅,下面! I 只对语音识别子程序的程序设计进行介绍。I 语音识别技术方面有bsrv222SDL.lib库函数支持,在使用时通过调用库函数里1相关的API函数来实现所要求的功能。下面给出语音识别的具体代码。其!I 中,BSR-GetResult函数为启动辩识,当无命令识别出来时,返回0;识别器停止、未初装 始化或识别未激活返回-1;当识别不合格时返回-2;当识别出来时返回命令的序号。部I 分程序源代码如下:IIIIIII Result=BSR_GetResult(); //获得识别结果订I if(Result>0) //有识别结果?IIIIIIIII {线I if(Result==NAME_ID) //名称IIIIIIIII {IIIIIII PlaySnd(S_RDY,3); //播放待命提示音IIIIII: Ready=1;//进入待命状态IIIIIIIII }IIif(Ready==1)//待命状态?(switch(Result)! caseCOMMAND_GO_ID:IIIII!〃识别出第一条命令IIIIII■GoAhead();//执仃动作一IIIIIII- Ready=0;IIIIIIII壮 break;IIII■: caseCOMMANDBACKID:I 一 一IIIIII//识别出第二条命令订IIIIBackUp();//执行动作二IIIIIIII1 1break;线IIIIcaseCOMMANDLEFTID:I — —IIIII//识别出第三条命令IIIIIIIITurnLeft();〃执行动作三IIIIIIIIReady=0;IIIIIIIIbreak;caseCOMMAND_RIGHT_ID:〃识别出第四条命令TurnRight();//执行动作四Ready=0;IIIIII- II! break;:IIIIII! 1r*1i default:IIIIIIIIi break;IIIIIIIIi }装III结论本文基于凌阳公司的16位微处理器SPEC061A为控制核心,设计了语音识别控制系统。实现了对家用电器的智能语音控制,使控制装置智能化方便化集中化。具体工作如下:(1) 硬件部分采用模块化设计,主要由MIC输入模块、单片机、存储模块、功放和喇叭输出模块、外设的电源模块、键盘模块和液晶显示电路模块构成单元组成。(2) 软件部分的模块设计主要包括:单片机初始化模块,语音训练模块,语音识别模块、输出控制模块等构成。由于时间的限制,在毕业之前只能做到现有程度。在本次毕业设计完成以后,可以尽量对本系统进行了相应的扩展,如添加单片机分控制系统,增强系统的功能,扩展单片机的接口技术,节约和改进系统利用率,本系统语音识别部分是采用DTW方法实现的特定人孤立词识别,并且识别率的稳健性不大高,这就限制了其应用的广度。我从文献中了解到许多修正DTW的方案,例如端点放宽的DTW方法、非线性取样等方法,另外我们还可以采用目前比较流行的HMM模型来完成非特定人连续语音识别。为了提高语音识别的精度和准确率,我们可以在原来语音识别的基础上加上图像识别,通过观察说话人的口型来进一步对语音进行识别。虽然实现了语音控制家用电器,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论