基于DSP的语音钥匙实验报告.doc_第1页
基于DSP的语音钥匙实验报告.doc_第2页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

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

文档简介

dsp课程设计实 验 报 告实验题目: 基于dsp的语音识别 学生姓名:任课教师: 2015 年 6 月 8 日摘要:基于dsp芯片为控制核心,设计了语音钥匙,有效地解决了高性能与低成本间的矛盾。系统的硬件部分包括数字信号处理芯片、音频codec模块、电源模块、滤波电路、jtag 仿真接口等几大模块,系统的软件部分介绍了语音钥匙的基本原理,阐述了dsp实现技术,探讨并验证小波变换算法比傅里叶变换算法在提高语音钥匙系统性能应用中的有效性。该系统资源丰富,电路兼有模拟和数字信号接口,可以作为一个独立的模块应用于其他电路,方便地扩展其应用。关键词:dsp 语音钥匙 小波变换design of speech key system based on dspabstract: the design of speech key system is based on the dsp chip, which solve the contradiction between high performance and low cost effectively. the part of sampling circuit is composed of digital signal processing chip, voice-frequency circuit, filtering circuit, simulation of jtag interface. the part of software introduces the fundamental theory of speech recognition, explaining the dsp realization technology of speech recognition. the system is rich in resources and the circuit provides interfaces with analog and digital signal, and could be taken as an independent module to be used for other electronic circuits, making it convenient to expand its application.key words:dsp;speech key;wavelet transform引言 语音信号处理技术作为目前发展最为迅速的一个信息科学研究领域,其研究范围涉及一些比较前沿的科研课题,所得研究成果也具有同样重要的研究与应用价值。近年来,随着数字信号处理与语音钥匙算法不断发展,许多过去语音处理算法仿真和研究中出现的难题都基本得到解决。不管要求多么复杂,语音信号处理系统都可以集成在一块数字信号处理器(dsp,digital signal processing)芯片上,处理速度也随着dsp运算速度提升而飞速增长,因此语音信号处理技术应用越来越广泛,也越来越为人们所关注。语音信号处理研究范围包含了许多学科,如语音学、语言学、数字信号处理、电子通信、计算机技术、模式识别等。因此,研究语音钥匙系统除了加强语音钥匙系统本身的学习外,还需要了解很多其他方面的知识,一个好的语音钥匙系统应当考虑到输入设备、说话人的状态、说话环境、硬件平台、识别算法等多方面的因素。在实际应用中,语音钥匙应用范围非常广泛,各行各业都可以见到语音钥匙系统,例如通讯系统语音拨号、银行查询系统、家庭智能玩具、酒店服务、股票证券交易、汽车导航设备、工业控制等等。该系统以dsp硬件平台作为载体,以动态时间规整(dtw,dynamic time warping)高效算法作为语音钥匙核心算法,实现特定人、孤立词和小词汇量语音钥匙,可以实际应用到门禁系统中身份确认中去。一、 设计内容与任务语音信号处理是利用数字信号处理技术对语音信号进行处理的一门学科,其核心技术包括语音合成、语音钥匙、语音测评等,是现代人机交互的重要方式之一,具有广泛的应用前景。近年来随着互联网和通信的发展,信息检索也呈现多样化,如文字检索、语音检索和基于内容的图像检索,其中语音检索将成为跨领域资源整合的纽带,而语音检索的关键在于进行语音匹配与识别。本实验设计一个基于dsp处理系统的语音钥匙,实验内容如图1所示:图1 实验内容设计基础要求:利用matlab将采集到的一段语音进行仿真处理,实现基于语音相关匹配的较为简单的语音钥匙的功能。在ccs编译环境下利用c语言编写语音钥匙程序,并在bjtudsp5502实验系统平台上实现。若语音钥匙开启,将指示灯d1进行1hz闪烁(慢闪),并进行相应的语音提示。未开启,将指示灯d1进行3hz闪烁(快闪),并进行相应的语音提示。二、 原理及方案1. 基本原理简单的语音钥匙:对采集到的语音信号和已存入的语音信号进行相关运算,相关度较大时语音钥匙开启。由话筒输出的语音信号首先经过放大电路和前置滤波电路,将处理后的语音信号(模拟量)由音频模块进行a /d转换和语音数据的编码,再将编码数据送到dsp中进行处理,最后进行训练与识别。识别结果通过显示器读出,或将识别结果通过音频解码器进行d /a转换后经过后置滤波电路,通过扬声器放音。2. 实验方案实验方案自行设计,利用bjtu-dsp5502实现可参考如图2所示方案:图2 参考实验方案流程整个系统以bjtu-dsp5502为核心,首先采集语音信号,然后对语旨信号进行数字处理,其处理过程都是在bjtu-dsp5502上实现的,整个处理过程主要包括语音信号的预处理、端点检测、特征提取和模式匹配四部分。其框图如下:图3 数字信号的处理过程1) 语音钥匙系统的基本流程如图4所示,包括预处理、特征提取、模型训练和识别几个环节。图4 语音钥匙流程图2) 系统硬件电路设计2.1 工作原理由话筒输出的语音信号首先经过放大电路和前置滤波电路,将处理后的语音信号(模拟量)由音频模块进行a /d转换和语音数据的编码,再将编码数据送到dsp中进行处理,最后进行训练与识别。识别结果通过液晶显示器读出,或将识别结果通过音频解码器进行d /a转换后经过后置滤波电路,通过扬声器放音。2.2 系统硬件结构话筒扬声器音频编解码前置滤波后置滤波bjtu-dsp 5502jtaglcd显示flasheprom复位晶振电源图5 系统硬件结构图系统的硬件电路图包括:dsp核心电路、电源电路、语音信号采集电路、lcd液晶显示电路、jtag电路和存储器电路,具体分析如下:dsp核心电路bjtu-dsp 5502, 的主要特性如下:(1)流水线操作,指令周期为ins,操作速率可达100mips。总线结构包含8条16bit的总线,其中1条程序总线,3条数据总线和4条地址总线,具有很好的并行性。功耗较低,片内io电压33v,内核电压18v。(2)cpu结构包括:40bit算术逻辑单元(alu),包括40位桶形移位寄存器,2个独立的40位累加器;2个40bit的累加器,分为保护位,高位字,低位字;17x17位乘法器,40位加法器:比较选择和存储单元,数据地址产生器,程序地址产生器。(3)丰富的片内外设:通用io引脚xf和bio:硬件定时器;软件可编程等待状态产生器;可编程块开关模块;增强型并行主机接ie(hpl816);两个多通道缓冲串口(mcbsp);带锁相环pll的时钟发生器;dma控制器;ieeell491标准jtag接口。23语音信号采集电路语音信号采集电路是语音钥匙系统中的核心部分,其作用是将语音信号采集提供给dsp,为dsp处理语音信号做好准备。1)tlv320aic23相关介绍tlv320aic23是ti公司推出的一款高性能立体声音频编解码器【l 91,内部含有耳机输出放大器,可以选择line in和mie等不同输入方式。该器件中数模转换器和模数转换器都集成在芯片内部,可在8khz至96khz的采样率下提供16bit到32bit四种不同的采样数据。同时,tlv320aic23还具有很低的功耗,回放模式为23mw,节电模式仅为151xw。因此,tlv320aic23是一款实用性非常高的音频编解码器。tlv320aic23通过外部处理器对其内部寄存器进行编程配置,其配置接口支持spi总线接口和12c总线接口。数据传输格式支持右判断模式、左判断模式、12c模式和dsp模式4种方式。其中dsp模式专门针对ti的dsp设计。5502的多通道缓冲串口mcbsp可以按照spi总线接口模式配置,该模式下其串行数据传输格式与aic23的dsp模式下的格式兼容,此外,这两款芯片的i0电压兼容,从而使得二者可以无缝连接,中间也无需进行电压转换,二者的连接也非常的简单方便。2.4 jtag接口电路jtag是一种国际标准测试协议(ieee 11491兼容),主要用于芯片内部测试与调试,现在多数的高级器件都支持jtag协议。标准接口是4线:tms、tck、tdi、tdo,分别为模式选择、时钟、数据输入和数据输出线。系统板留有一个ti公司定义的dsp标准jtag接口,可以跟通用ti系歹ijdsp仿真器连接。通用ti系yudsp仿真器插头的第六孔已填有针,所以板上jtag接口的第六针已被拨开,只有正确连接才能吻合,否则不能吻合。2.5 dsp与ai c23接口配置5502有2个多通道缓冲串口mcbsp0和mcbspl,通过6个引脚使其的数据和控制线与外部设备相通。系统数据通过mcbsp的dr和dx引脚传输,同步信号则由clkx,clkr,fsx,fsr引脚实现连接。mcbsp可以配置为spi模式,其串行数据传输格式与aic23的dsp模式兼容。5502与aic23的接口配置包括aic23初始化、mcbsp0接口配置和mcbspl接口配置。2.6 程序装载与调试系统板上电后能从外部扩展存储器flash中读取程序的过程称为上电自举(bootloadder),dsp内部存储器装载有boot程序,在dsp上电复位后,将外部flash装载到dsp内部ram中运行。装载的方式有很多,本文选择hpi口输入方式,dsp上电复位后,boot程序从rom跳转到外部flash,系统将会自动加载外部flash中的程序,此时系统板便可以独立运行了。完成相关硬件驱动后便可开发语语音钥匙算法的程序了,dsp支持汇编语音和c语言。汇编语言与硬件关联最近,语言精简,执行速度快、效率高,但是可读性较差,不易移植,一般用在与硬件进行数据交换来提高运算效率;c语言可读性高,便于调试与移植,但是执行效率相对汇编要低。因此,针对这两种语言的优缺点,本系统采用以c语言为主,结合汇编语言来编写程序,这样既可以提高程序的运算效率又增加程序的可移植性。调试在pc机上ccs33环境下进行,目标板上有jtag接口专门用来在线调试。编程语言以c语言为主要编程语言,与硬件联系较紧、运算量较大的部分采用汇编浯占设计调试dsp硬件平台基本步骤为:首先安装ccs3.3(5000)硬件驱动,插上仿真器。然后设置ccs setup,选择处理器tms320c5502,端口为0x378,然后启动ccs3.3,在ccs3.3中打开语音钥匙程序即可开始调试。系统软件设计语音钥匙程序系统框图语音钥匙程序是整个语音钥匙系统的核心部分,一般是根据识别的类型而选择一种满足系统要求的识别算法,分析出这种识别算法的语音特征参数,按照相应的准则与样本模板匹配从而得出识别的结果。语音钥匙系统框图如图6所示。图6 语音钥匙系统语音信号预处理在语音信号处理中,预处理通常包含ad转换、预加重、加窗、端点检测等基本步骤。1)语音信号ad转换语音信号是随时间和幅度而变化的一维信号,语音信号处理是对语音信号进行数字处理,所以在对语音信号处理之前需要将语音信号数字化,即进行ad转换。一个完整的模数转换必须包含有采样、保持、量化和编程四个基本过程,一般在运算过程中将采样于保持简化成一步,量化和编程简化成一步。由奈奎斯特采样定理可知,采样频率要大于或者等于原始信号频率的2倍,才能在采样的过程中保持信号的完整性。本系统采用16位ad转换芯片tlv320aic23,由于适用于孤立词的识别,因此采样频率为8khz。2)语音信号的预加重受声道模型中声门激励和嘴唇辐射影响,语音信号的高频端在大约800hz以上会产生衰减,斜率通常为6db倍频,所以在求语音信号的高频成分时比低频信号难求的多。为了消除这种现象,提升语音信号中的高频部分,使整个频带中保持信号频谱的平稳,便于后期频谱分析,在分析语音信号之前应对原始语音信号进行预加重来滤除低频干扰。可采用一个一阶滤波器,滤波器的函数为:换算成时域系统差分方程是:其中x(n)为预加重前的语音信号,h(z)为一阶滤波器函数,y(n)为预加重后的语音信号,a为滤波器系数,本文选095。3) 语音信号加窗处理加窗处理其实分为两个步骤:分帧与加窗。语音信号是随着时间而变化的非平稳信号,通常一小段时间间隔内,语音信号才可以看成保持相对稳定。一般认为在10ms到30ms之间的语音信号为平稳信号,由于本系统采用的采样频率为8khz,为了提高处理速度,取较小的帧长和帧移,所以取帧长为20ms,帧移为10ms。对每一帧语音进行加窗是为了减少在每一帧语音的开始和最后的不连贯性。加窗的函数为:fn=m=-s(m)w(n-m)其中f(n)为加窗后的第n帧信雩_s(m)为原始语音信号,w(nm)为窗函数,n和m代表帧数。在语音信号处理中常见的窗函数,汉明窗低通特性较平滑,旁瓣高度最低,所以汉明窗使用的范围最为广泛。因此,由于以上原因,本系统的窗函数选用汉明窗。汉明窗:4)语音信号端点检测端点检测,主要用来检测语音钥匙中样本信号的起点和终点,因此,又被称为起止点检测。在语音信号处理中,语音信号的数据量非常庞大,如果对全部语音信号都加以处理,不仅增加系统处理器的负荷,还会影响系统的识别率。为了将有用的语音信号从系统采集的原始语音信号中提取出来,则就要对采集的语音信号进行分析,将语音的信号段和噪音段从语音信号中检测区分开来,从而准确的检测出语音段的起点与终点,去除从语音信号中无声段,极大的减少了数字信号处理器的运算量和处理时间,提高系统的性能和识别率。端点检测是语音信号预处理的核心部分,在整个语音钥匙过程中也处于非常关键的位置。端点检测位于语音钥匙较前端,处在整个语音钥匙算法的重要位置。可以说语音钥匙实现的效果不仅仅取决于识别算法的优劣,有许多因素与之相关,其中端点检测就是一个很重要的指标,其主要作用是检测语音钥匙中样本信号的起点和终点。 (1) 语音信号的短时能量与短时过零率语音信号另外一个重要的特性就是发音的能量不同,清音能量较小,而浊音的能量较大。因此,可以通过分析语音信号的短时能量或短时平均幅度来分析语音的能量特性。短时能量的函数如下:其中e(n)为语音信号的短时能量,h(n)=w(n)为窗函数,n为窗长,x(m)为语音信号序列。短时平均幅度函数如下:其中s(m)为语音信号序列,w(n)为窗函数。由于清音的能量小于浊音,所以可以用短时能量或者短时平均幅度来判断清音和浊音,区分有声段和无声段。语音信号短时过零率的函数为:其中符号函数sgn的定义为:(2)基于双门限比较法端点检测基于双门限比较法端点检测的步骤如下:首先,设置高门限eh、低门限el、过零率门限值zik。其次,利用高门限eh找到语音段中能量较高的部分,起点端为f1:终点端为b1: 其中e0(i)为起点端时刻i帧的短时能量,n为语音总长度。接着,由el、zik、f1、b1来最终确定语音信号的起始端f2:终点端b2为:最后可以得到检测到的语音长度为l=b2-f2。2语音信号特征参数提取经过语音预处理中端点检测后,已经将语音信号中清音、噪音区别出来,这时就可以对所需语音信号进行特征参数提取,在分析语音信号的同时去掉无用信息,这些信息又比较占空间,最后获得对识别算法有用的重要参数。在提取过程中,并不是很广泛的提取,毕竟语音钥匙系统的内存有限,为了减少处理器的运算量,提高识别率,要求所提取的特征参数能充分代表说话者的语音特征,与其他的说话者有很好的区分性,各个特征参数之间能相互独立。此外,为保证语音钥匙便于实现,所提取的特征参数应该便于计算。语音信号的特征参数分为两种:时域特征参数,在一帧短时信号中由各个时域采样而直接组成一个参数矢量,如基音周期、短时平均能量等;频域特征参数则是在一帧短时信号经过了些变化后再组成的参数矢量,如mel频率倒谱系数、lpc倒谱系数、短时频谱等。线性预测倒谱系数(lpcc)是基于人的发声机理原理,使系统的传递函数的形式和全极点数字滤波器达到一致,由于语音信号采样点之间具有相关性,从而现在某个时刻或将来的某个时刻的语音信号的抽样能够用之前的若干语音抽样的线性组合来估计。得到语音信号的实际采样值和线性预测采样值间的均方误差(mse),令mse最小可得到线性预测系数(lpc),最后求出线性预测倒谱系数(lpcc)。美尔频率倒谱系数(mfcc)是基于入耳听觉特征,将语音的产生与之相结合的一种特征参数。该特征参数充分考虑了人耳的听觉特性,接着将频谱转化成基于mel频率的非线性频谱,最后转换到倒谱域上。线性预测倒谱系数(lpcc)参数的优点是计算量小,对元音有较好的描述能力,其缺点在于对辅音的描述能力较差,抗噪声性能较差。而美尔频率倒谱系数(mfcc)因为模拟了人的听觉特性,且没有任何前提假设。由于汉语孤立词的识别过程中对辅音需要有很高的分辨力,同时mfcc参数具有识别性能和抗噪能力,所以,在汉语语音钥匙中mfcc参数的性能优于lpcc参数,本文所采用的是美尔频率倒谱系数(mfcc)。美尔频率倒谱系数(mfcc)基本原理美尔频率倒谱系数(mfcc)是基于人体人耳昕觉特征,并将语音与之结合的一种特征参数。对于不同频率的语音信号,人耳有不同的感知能力,实验发现,语音信号频率在1000hz以下,人耳的感知能力与语音频率成线性关系,在1000hz以上,人耳的感知能力与语音频率成对数关系。因此,人们为了表达这两种特殊的不同的对应关系,引出了美尔(mel)频标的概念,即1000hz的感知程度的11000为1mel,对应的关系如下:其中,fmel为mel频标,fhz为语音信号频率。在实际语音信号处理中,mfcc的计算过程较复杂,步骤较多,mfcc的基本步骤如下:下面详细介绍mfcc具体的计算过程:(1)先对语音信号预处理:预加重、分帧加窗、端点检测;(2)通过快速傅里叶变换将预处理后的每一帧语音信号转化为频域信号pi(f),并计算短时能量谱pi(w):(3)通过一组(本文取24个)按mel频标分布的三角带通滤波器得到滤波器组hm(k),将关系转化为:(4)能量谱p(w)通过mel滤波器可以计算其输出,取帧的算法是以中心频率为基线在1000hz上下范围各取12个:其中hm(k)表示k个mel滤波器组,k表示第k个滤波器,k表示滤波器总个数。hm(k)的定义如下:(5)滤波器组输出后,再用dct离散余弦变换,便可求得mfcc系cma(n):由于标准倒谱参数设定不同帧的语音不相关,所以只能得到他们的静态参数,但是实际上,他们是相关的,而且在变化时是连续的,为此引入一阶差分mel倒谱参数:其中c,d为一帧语音参数,k为常数。一般将mfcc参数与差分参数合成一个向量作为一帧语音信号的特征参数。3模型训练与识别语音钥匙的过程实质上就是模式匹配的过程,在模型训练匹配的过程中,先从已知模板中获得模型参数,再按照相似度量法则,将未知模式与参考模式库匹配而获得最佳匹配。目前,比较流行的识别算法主要有动态时间规整(dtw)、隐马尔可夫模型(hmm)以及基于人工神经网络(龇州)的识别算法。动态时间规整(dtw)是较早流行的语音钥匙算法,它应用动态规整方法,将时间规整与距离测度计算结合起来,有效的解决了孤立词识别时语速不均所造成的发音长短不一的难题,是一种经典的非线性时间规整模板匹配算法。由于动态时间规整(dtw)对端点检测的要求较高,而端点检测会因为不同的语音情况产生不同的变化。因此,在将未知模板与参考模板比较的时候,不能直接进行比较,而是需要找到最佳匹配点。由于dtw算法简洁,计算简单,对于孤立词识别率高,所以,dtw被广泛运用于孤立词语音钥匙系统中。dtw的基本算法虽然简单方便,但是运算量相对较大。实际匹配中,匹配的路径已经规定了路径的斜率,许多交叉点式该路径到达不了的。在这个平行四边形区域外的交叉点是不需要考虑在内的,因此,也不需要保存所有帧的匹配距离矩阵。dtw的高效算法【删的主要目的在于提高运算效率,在实际计算过程中,将路径主要分成了3个部分:其中xa=1/3(2m-n),xb=2/3(2n-m),xa和xb为整数。分成的三部分在网络中的关系如图7所示。其中,m和n满足2mn3,2nm2。若超出此范围则不能匹配,x轴与y轴上的信号帧相比较,得出j,曲,的计算公式:图7 dtw算法网络关系图当xaxb时,分成的三部分为(1,xb),(xb+1,xa),(xa+l,n)。在这种情况下x轴和所要比较的y轴上的帧数会出现不同,积累距离如下:其中,d表示累积距离,d表示帧匹配距离。dtw算法先读入参考模式和待测模式数据,若两个模式数据相差较大,将返回一个很大的数realmax,则认定其匹配失败,否则计算矩阵距离dist,inp为待测模式,rep为参考模式,result中为最终结果。然后,将匹配区域划分为三段:d1、d2、d3,待测模式和参考模式都结束时,返回距离结果。4语音训练与识别假设某个特定词,第一遍的特征矢量序列为x1=x11,x12,x13,x1t1),另外一遍的特征矢量为x2= x21,x22,x23,x2t2),由dtw算法可以得出他们的失真得分d(x1,x2),当d(x1,x2)低于某个门槛值时,便可以认为两者的一致性较好,求得x1和x2的平均时间弯折可以得到一个新的模板y=y1,y2,yty),即为鲁棒性训练模板。在语音钥匙过程中,采用双门限比较法来进行端点检测,已经获得语音信号确定的起始点和终止点。将获得的语音词条存入模板库,这些词条可以称为参考模板:r=r(1),r(2),r(m),r(m),其中r为参考模板的标号,m为参考语音帧的标号,当m=1时指语音信号的起始帧,当m=m时指的是语音信号的终止帧,r(m)为语音信号第m帧时的特征矢量,m为参考模板语音帧的总数。需要识别的词条称为测试模板:t=t(1),t(2),t(n),t(n),其中,t为测试模板的标号,n为测试语音帧的标号,当n=1时指语音信号的起始帧,当n=n时指的是语音信号的终止帧,t(n)为语音信号第n帧时的特征矢量,n为测试模板语音帧的总数。参考模板和测试模板应当采用同样的帧长、帧移和窗函数。三、 基于matlab软件的仿真1. 语音信号采集在matlab环境中语音信号的采集可使用wavrecord(n,fs,ch,dtype)函数录制,也可使用windows的“录音机”程序录制成.wav文件然后使用wavread(file) 函数读入。为了进行批量的的训练和识别处理,本系统的训练语音和识别语音全部使用matlab录制。2. 分帧语音信号是一种典型的非平稳信号,它的均值函数u(x)和自相关函数r(xl,x2)都随时间而发生较大的变化。但研究发现,语音信号在短时间内频谱特性保持平稳,即具有短时平稳特性。因此,在实际处理时可以将语音信号分成很小的时间段(约1030ms5,7),称之为“帧”,作为语音信号处理的最小单位,帧与帧的非重叠部分称为帧移,而将语音信号分成若干帧的过程称为分帧。分帧小能清楚地描绘语音信号的时变特征但计算量大;分帧大能减少计算量但相邻帧间变化不大,容易丢失信号特征。一般取帧长20ms,帧移为帧长的1/31/2。在matlab环境中的分帧最常用的方法是使用函数enframe(x,len,inc),其中x为语音信号,len为帧长,inc为帧移。在本系统中帧长取240,帧移取80。3. 预加重对于语音信号的频谱,通常是频率越高幅值越小,在语音信号的频率增加两倍时,其功率谱的幅度下降6db。因此必须对高频进行加重处理,一般是将语音信号通过一个一阶高通滤波器1-0.9375z-1,即为预加重滤波器。其目的是滤除低频干扰,特别是50hz到60hz的工频干扰,将对语音钥匙更为有用的高频部分进行频谱提升。在计算短时能量之前将语音信号通过预加重滤波器还可起到消除直流漂移、抑制随机噪声和提升清音部分能量的效果。预加重滤波器在matlab中可由语句x=filter(1-0.9375,1,x)实现。4. 加窗为了保持语音信号的短时平稳性,利用窗函数来减少由截断处理导致的gibbs效应。用的最多的三种为矩形窗、汉明窗(hamming)和汉宁窗(hanning)。其窗函数如下,式中的n为窗长,一般等于帧长。矩形窗: 汉明窗(hamming):汉宁窗(hanning):wr =1 (0nn-1)0 (other)whm =0.5-0.46cos(2n/(n-1) (0nn-1)0 (other) whn =0.5-0.5cos(2n/(n-1) (0nn-1)0 (other)(4-1)(4-2)(4-3)窗口的选择非常重要,不同的窗口将使能量的平均结果不同。矩形窗的谱平滑,但波形细节丢失;而汉明窗则刚好相反,可以有效克服泄漏现象,具有平滑的低通特性。因此,在语音的时域处理方法中,一般选择矩形窗,而在语音的频域处理方法中,一般选择汉明窗或汉宁窗。在matlab中要实现加窗即将分帧后的语音信号乘上窗函数,如加汉明窗即为x=x.*hamming(n)。本系统中的端点检测采用时域方法故加矩形窗,计算mfcc系数时加汉明窗。5. 端点检测在基于dtw算法的语音钥匙系统中,无论是训练和建立模板阶段还是在识别阶段,都先采用端点检测算法确定语音的起点和终点。语音端点检测是指用计算机数字处理技术从包含语音的一段信号中找出字、词的起始点及结束点,从而只存储和处理有效语音信号。对汉语来说,还可进一步找出其中的声母段和韵母段所处的位置。语音端点检测是语音分析、合成和识别中的一个重要环节,其算法的优劣在某种程度上也直接决定了整个语音钥匙系统的优劣。进行端点检测的基本参数主要有短时能量、幅度、过零率和相关函数等。端点检测最常见的方法是短时能量短时过零率双门限端点检测,近年来在此基础上发展出的动态窗长短时双门限端点检测方法也被广泛使用。1) 短时能量语音和噪声的主要区别在它们的能量上,如图5-1(iii) 和图5-2(iii)所示。语音段的能量比噪声段的大,语音段的能量是噪声段能量叠加语音声波能量的和。对第n帧语音信号的短时能量en的定义为: (5-1)xn为原样本序列在窗函数所切取出的第n段短时语音,n为帧长。因为在计算时使用的是信号的平方,故将en作为一个度量语音幅度值变化的函数有一个缺陷,即对高电平非常敏感。因此在许多场合会将en用下式来代替: (5-2)这样就不会因为取平方而造成信号的小取样值的大取样值出现较大差异。本系统中窗函数为wr,n为240。2) 短时过零率短时过零表示一帧语音信号波形穿过横轴(零电平)的次数。对于连续语音信号,过零意味着时域波形通过时间轴;而对于离散信号,如果相邻的取样值的改变符号则称为过零。过零率就是样本改变符号次数,定义语音信号寿(m)的短时过零率zn为: (3-3)1 (x0)-1 (x0)sgnx=(3-4)清音的能量多集中在较高的频率上,它的平均过零率要高于浊音,故短时过零率可以用来区分清音、浊音以及无声。图3-1(ii)和图3-2(ii)分别为数字0的训练语音00.wav和数字4的训练语音40.wav的短时过零率。从图中可以看到清音s的过零率明显高于其后的i音,有声段过零率明显高于无声段,但在鼻音阶段过零率迅速滑落到无声水平而能量值则是缓慢下滑。在实际应用时并不能通过式3-3直接计算过零率,因为在无声段噪声使语音波形在0值附近来回摆动,导致计算出的过零率和有声段的区别并不十分明显。比较简单的解决方法是设定一个差的阈值,使不仅xn(m)*xn(m-1) 。在本系统中经多次试验取定=0.01。3) 双门限端点检测双门限端点检测顾名思义需要两级检测,即短时能量检测和短时过零率检测。在开始检测之前需要设定4个门限,即分别为短时能量和短时过零率各设置一个高门限和一个低门限:ehigh、elow和zhigh、zlow。整个语音端点检测分为四部分:静音段、过度段、语音段、结束段。在静音段中如果能量或过零率有一个超过了其低门限,则认为进入了过度段。在过度段中,由于参数数值较小,还不能确定是否真的进入语音段,只有两个参数的其中一个超越了高门限才被认为是进入语音段。当参数降至低门限则认为进入结束。此外,还有两种可能会引起端点检测的误判:一是短时噪音引起的误判,此时则需要引入最小语音长度门限进行噪声判定,即语音段时间小于一定数值则认定为是噪声,重新回到静音段,本系统设为20ms;二是语音中字与字的时间空隙引起的误判,此时需要设定最大静音长度门限来降低识别的错误率,本系统所训练和识别的都为单字,故无需设置此门限。在双门限端点检测中4个门限的设定至关重要,门限设定的好坏将直接影响端点检测的结果。门限值的设置还没有一个通用可靠的方法,需要根据经验和特定环境进行调整。常见的方法有最大值乘上某个比率、中位值乘上某个比率、最小值乘上某个常数、前三帧平均值乘上某个常数等。本系统中ehigh,elow,zhigh,zlow的取值分别为:ehigh=max(min(amp)*100,mean(amp)*0.6,max(amp)*0.4); zhigh=max(round(max(zcr)*0.1),5);elow=min(min(amp)*100,mean(amp)*0.6,max(amp)*0.4); zlow=max(round(mean(zcr)*0.1),3);4) dtw算法改进dtw算法虽然简单有效,但是动态规划方法需要存储较大的矩阵,直接计算将会占据较大的空间,计算量也比较大。由图5-3的局部路径约束可知dtw算法所动态搜索的空间其实并不是整个矩形网格,而是局限于对角线附近的带状区域,如图5-4所示,许多点实际上是达不到的。因此,在实际应用中会将dtw算法进行一些改进以减少存储空间和降低计算量。常见的改进方法有搜索宽度限制、放宽端点限制等。搜索宽度限制以图5-3中的局部约束路径为例,待测模板轴上每前进一帧,对于点(in,im)只需要用到前一列(in-1,im)、(in-l,im-l)和(in-1,im-2)三点的累积距离,也就是im-1和im-2两行的累积距离。整个dtw算法的计算过程递推循环进行,也就是每一行中的格点利用前两行格点的累积距离计算该点的累积距离的过程。基于这种循环递推计算,只需分配3n的存储空间重复使用,而不需要保存帧匹配距离矩阵和所有的累积距离矩阵。又由于dtw算法的动态搜索宽度局限于对角线附近的带状区域,假设其宽度为width,如图5-4和图5-6,则实际只需分配3width的存储空间即可。图8 带状搜索区域 图9 搜索宽度限制存储空间放宽端点限制普通dtw对端点检测比较敏感,端点信息是作为一组独立的参数提供给识别算法的。它要求两个比较模式起点对起点,终点对终点,对端点检测的精度要求比较高。当环境噪声比较大或语音由摩擦音构成时,端点检测不易进行,这就要求在动态时间规整过程中给以考虑。放松端点限制方法不严格要求端点对齐,克服由于端点算法不精确造成的测试模式和参考模式起点终点不能对齐的问题。一般情况下,起点和终点在纵横两个方向只要放宽2-3帧就可以,也就是起点可以在(1,1),(l,2),(1,3),(2,1),(3,l),终点类似。如图5-6。ck=(ik, jk)c1=(1, 1)ck=(i, j)j = i - rj = i + r时间规整函数 width ijt1 t2 t3 ti ti trr1 r2 rj rj 图10改进的dtw算法原理图在放宽端点限制的dtw算法中,累积距离矩阵中的元素(1,l),(l,2),(l,3),(2,l),(3,1)不是根据局部判决函数计算得到的,而是直接将帧匹配距离矩阵的元素填入,自动从其中选择最小的一个作为起点,对于终点也是从松弛终点的允许范围内选择一个最小值作为参考模式和未知模式的匹配距离。6. matlab仿真结果在音频信号处理方面,matlab提供了wav文件读写函数和声卡的录音和放音函数,利用这些函数可以实现某些语音信号处理工作。语音工具箱voicebox为实现语音钥匙提供了许多实用函数。利用简单的gui,可以生成一个界面,供演示使用:图7 matlab的gui界面点击播放语音钥匙可以播放已经存储好的语音样本,语音钥匙必须与样本匹配才能打开。单击“请录音”后,系统会弹出提示框,提示用户可以开始录音,如果匹配,则会告知“欢迎回来”,否则会告知“您走错了”。同时,为了演示方便,系统还会自动绘制两次语音信号的图像、端点检测结果以及mfcc检测结果。图8 mfcc检测结果四、 基于dsp硬件平台的实现由于本文最终是要设计出基于嵌入式硬件平台的语音钥匙系统,选用dsp芯片bjtu-dsp5502作为核心芯片,用tlv320aic23作为语音信号采集。软件方面主要包括语音信号预处理,端点检测中采用双门限比较法,使用mfcc作为特征参数,dtw高效算法作为训练与识别,系统已能对特定人、孤立词、小词汇量的词组进行识别。最后,对dtw高效算法在matlab2006仿真环境进行仿真,给出仿真结果,并分析结果的准确性,将语音钥匙程序包括驱动程序烧写到dsp硬件平台上进行在线调试,检验系统运行是否稳定,各模块工作是否正常。下图为向芯片中烧写程序:图11烧写程序烧写以后开始提示录入语音,先设置语音钥匙,自动检测出语音信号的起点终点和有效帧数,再次提示录音的时候是输入语音钥匙验证,若设置的语音钥匙和输入的语音钥匙的欧氏距离在一定合理范围之内,则验证通过且语音提示确认:图11 身份验证通过若先前设置的语音钥匙和输入的不同,则欧氏距离不符合条件,则语音提示错误且显示输入错误:图12 身份验证失败五 总结本文针对特定人、孤立词、小词汇量语音钥匙系统以及语音钥匙算法进行了深入的研究与系统相关的开发,目前己取得两个阶段性成果:1)构建系统硬件平台,完成系统相关驱动程序。2)实现dtw语音钥匙的高效算法。由于本文最终是要设计出基于嵌入式硬件平台的语音钥匙系统,选用ti的dsp芯片bjtu-dsp 5502作为核心芯片,用tlv320aic23作为语音信号采集。硬件电路还包括存储器扩展、lcd液晶显示、jtag接口和电源电路,给出了各个模块的电路图。该硬件平台具有接口简单、功耗低、价格便宜、各个模块功能分明,易于扩展和升级等优点。软件方面主要包括语音信号预处理,端点检测中采用双门限比较法,使用mfcc作为特征参数,dtw高效算法作为训练与识别,系统已能对特定人、孤立词、小词汇量的词组进行识别。此外,还编写了系统相关的驱动程序,包括系统cdm配置、中断向量表、dsp和aic23的初始化及其接口配置等。最后,对dtw高效算法在matlab2006仿真环境进行仿真,给出仿真结果,并分析结果的准确性,仿真结果证明,该dtw高效算法的识别率在90以上。将语音钥匙程序包括驱动程序烧写到dsp硬件平台上进行在线调试,调试结果证明,系统运行稳定,各模块工作正常。所设计的系统由话筒输出的语音信号首先经过放大电路和前置滤波电路,将处理后的语音信号(模拟量)由音频模块进行a /d转换和语音数据的编码,再将编码数据送到dsp中进行处理,基本了实现dsp语音处理功能。六 感想本次课设我们一共花了整整二十天才最终定型,作为一个国防生,课设前期接受了一项赴海滨学院带训练的紧急任务,结果在课设完成开题报告已经简单的开头以后就短暂告别了学校,赴海滨学院带了十几天紧张劳累的训练,任务完成以后返回学校已是对课设又熟悉又陌生了,原理的内容头脑里还有,可是程序已经几乎看不懂了,因此我只好又花了很长时间来适应这些知识。整个设计的过程波折又坎坷,先前做matlab仿真的时候就耗费了很大精力,最后选择了voicebox中的文件。在dsp仿真中,我们一步步地摸索,从建立工程到添加头文件再到仿真。从这次课程设计中我们不仅仅学到了课本上的知识,更多的是接触了实际的工程项目,实际的知识应用。七 参考文献1 清源科技. tms320c55xxdsp 硬件开发教程. 机械工业出版社m . 2003:223 - 243.2 胡一航. 语音信号处理m . 哈尔滨:哈尔滨工业大学出版社,2000 :1892194.3 张雄伟,曹勇.dsp 芯片的原理与开发应用(第二版)m.北京:电子工业出版社,2oo04 任丽香,马淑芬,李慧.tms220600 系列dsp 的原理与应用m.北京:电子工业出版社,2ooo5蔡连红, 黄德智, 蔡锐. 现代语音技术基础与应用m . 北京:清华大学出版社,2003 :65268.6 boggess a , narcow ich f j . 小波与傅立叶分析基础m . 芮国胜, 康健,译. 北京: 电子工业出版社, 2004.7郭莉莉. 基于dsp的语音识别系统的研究与设计d . 沈阳: 沈阳建筑大学, 2008.八 附带程序/*/*/#include #include #include #include #include #include #include #include #include #include #include meldata.h /存放三角形滤波器的系数,系数从matlab中提取出来#include 5502_flash.h#include e2prom_function.h#include codec.h#undef codec_addr#define codec_addr 0x1a#define framesize 128#define buffersize 40000short tipstart8000=0;#pragma data_section (tipstart,.audio_in_data1);short tippass8000=0;#pragma data_section (tippass,.audio_in_data1);short tipfail8000=0;#pragma data_section (tipfail,.audio_in_data1);/*语音采集使用*/一个孤立词最多1s,若8000采样,则一个孤立词最多有8000个数据,则,65535大小的数组足够存放。short sourdata1buffersize=0;#pragma data_section (sourdata1,.audio_in_data1);short div_frame=3*framesize/4; /分帧时重叠1/4,故每次只采集3/4,分帧时将该次采集信

温馨提示

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

评论

0/150

提交评论