DSP语音钥匙.docx

上传人:b****3 文档编号:26948285 上传时间:2023-06-24 格式:DOCX 页数:27 大小:203.14KB
下载 相关 举报
DSP语音钥匙.docx_第1页
第1页 / 共27页
DSP语音钥匙.docx_第2页
第2页 / 共27页
DSP语音钥匙.docx_第3页
第3页 / 共27页
DSP语音钥匙.docx_第4页
第4页 / 共27页
DSP语音钥匙.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

DSP语音钥匙.docx

《DSP语音钥匙.docx》由会员分享,可在线阅读,更多相关《DSP语音钥匙.docx(27页珍藏版)》请在冰豆网上搜索。

DSP语音钥匙.docx

DSP语音钥匙

 

DSP课程实验报告

——基于DSP的语音钥匙

 

学院:

电子信息工程学院

小组成员:

庄裕林12213089

丁玮光12301093

指导教师:

高海林

 

目录

1.设计任务书

2.设计内容

3.设计方案,算法原理说明

4.程序设计,调试与结果分析

5.实验遇到的问题及解决办法

6.感想与体会

7.参考文献

 

1.设计任务书

语音信号处理是利用数字信号处理技术对语音信号进行处理的一门学科,其核心技术包括语音合成、语音识别、语音测评等,是现代人机交互的重要方式之一,具有广泛的应用前景。

近年来随着互联网和通信的发展,信息检索也呈现多样化,如文字检索、语音检索和基于内容的图像检索,其中语音检索将成为跨领域资源整合的纽带,而语音检索的关键在于进行语音匹配与识别。

本实验设计一个基于DSP处理系统的语音钥匙,实验内容如图1-1所示。

图1-1

设计的任务要求分为基础要求和发挥部分。

基本部分:

利用Matlab将采集到的一段语音进行仿真处理,实现基于语音相关匹配的较为简单的语音钥匙的功能。

在CCS编译环境下利用C语言编写语音钥匙程序,并在BJTUDSP5502实验系统平台上实现。

若语音钥匙开启,将指示灯D1进行1Hz闪烁(慢闪),并进行相应的语音提示。

未开启,将指示灯D1进行3Hz闪烁(快闪),并进行相应的语音提示。

发挥部分:

利用Matlab将采集到的一段语音进行仿真处理,实现基于语音特征值匹配的较为复杂的语音钥匙的功能。

此语音钥匙安全性更高。

在CCS编译环境下利用C语言编写语音钥匙程序,并在BJTUDSP5502实验系统平台上实现。

若语音钥匙开启,将指示灯D1进行1Hz闪烁(慢闪),并进行相应的语音提示。

未开启,将指示灯D1进行3Hz闪烁(快闪),并进行相应的语音提示。

2.设计内容

1、理解语音信号的基本特征,学会利用Matlab对语音信号进行处理的基本方法与流程

2、学会利用Matlab对语音信号的预处理的方法和去噪的方法、信号相关算法仿真;

3、掌握利用CCS编程环境编写语音信号处理算法(C代码),并在BJTUDSP5502

实验系统上实现。

4、设计合理的结果测试方式和方法,验证所设计系统的正确性;

5、按照给定的模板撰写实验报告,并参加统一的验收答辩。

如参加争优环节需另外提前报名,通过公开答辩方式通过验收。

3.设计方案,算法原理说明

3.1语音信号的获取

本次实验通过话筒录入声音(当然也可以事先用windowds录音机事先录好声音)。

3.2语音信号的预处理

语音信号的预处理模块一般包括预滤波、采样和量化、分帧、加窗、预加重、端点检测等。

在不同的系统中对各子模块会有不同的要求,如在嵌入式语音识别系统中一般要求有防混叠滤波电路、A/D转换电路和采样滤波电路等,而在计算机上实验时则可由音频采集卡完成,无需实验者亲自动手。

3.2.1语音信号的采样

通过DMA实现信号的采集与传输。

DMA(DirectMemoryAccess,直接内存存取)是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依赖于CPU的大量中断负载。

否则,CPU需要从来源把每一片段的资料复制到暂存器,然后把它们再次写回到新的地方。

在这个时间中,CPU对于其他的工作来说就无法使用。

一个完整的DMA传输过程必须经过DMA请求、DMA响应、DMA传输、DMA结束4个步骤。

DMA请求

CPU对DMA控制器初始化,并向I/O接口发出操作命令,I/O接口提出DMA请求。

DMA响应

DMA控制器对DMA请求判别优先级及屏蔽,向总线裁决逻辑提出总线请求。

当CPU执行完当前总线周期即可释放总线控制权。

此时,总线裁决逻辑输出总线应答,表示DMA已经响应,通过DMA控制器通知I/O接口开始DMA传输。

DMA传输

DMA控制器获得总线控制权后,CPU即刻挂起或只执行内部操作,由DMA控制器输出读写命令,直接控制RAM与I/O接口进行DMA传输

在DMA控制器的控制下,在存储器和外部设备之间直接进行数据传送,在传送过程中不需要中央处理器的参与。

开始时需提供要传送的数据的起始位置和数据长度。

DMA结束

当完成规定的成批数据传送后,DMA控制器即释放总线控制权,并向I/O接口发出结束信号。

当I/O接口收到结束信号后,一方面停止I/O设备的工作,另一方面向CPU提出中断请求,使CPU从不介入的状态解脱,并执行一段检查本次DMA传输操作正确性的代码。

最后,带着本次操作结果及状态继续执行原来的程序。

由此可见,DMA传输方式无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程,通过硬件为RAM与I/O设备开辟一条直接传送数据的通路,使CPU的效率大为提高

3.2.2语音信号的分帧

语音信号是一种典型的非平稳信号,它的均值函数u(x)和自相关函数R(xl,x2)都随时间而发生较大的变化。

但研究发现,语音信号在短时间内频谱特性保持平稳,即具有短时平稳特性。

因此,在实际处理时可以将语音信号分成很小的时间段(约10~30ms),称之为“帧”,作为语音信号处理的最小单位,帧与帧的非重叠部分称为帧移,而将语音信号分成若干帧的过程称为分帧。

分帧小能清楚地描绘语音信号的时变特征但计算量大;分帧大能减少计算量但相邻帧间变化不大,容易丢失信号特征。

一般取帧长20ms,帧移为帧长的1/3~1/2。

在本系统中帧长取240,帧移取80

3.2.3语音信号的预加重

对于语音信号的频谱,通常是频率越高幅值越小,在语音信号的频率增加两倍时,其功率谱的幅度下降6dB。

因此必须对高频进行加重处理,一般是将语音信号通过一个一阶高通滤波器1-0.9375z-1,即为预加重滤波器。

其目的是滤除低频干扰,特别是50Hz到60Hz的工频干扰,将对语音识别更为有用的高频部分进行频谱提升。

在计算短时能量之前将语音信号通过预加重滤波器还可起到消除直流漂移、抑制随机噪声和提升清音部分能量的效果。

3.2.4语音信号的加窗

为了保持语音信号的短时平稳性,利用窗函数来减少由截断处理导致的Gibbs效应。

用的最多的三种为矩形窗、汉明窗(Hamming)和汉宁窗(Hanning)。

其窗函数如下,式中的N为窗长,一般等于帧长。

窗口的选择非常重要,不同的窗口将使能量的平均结果不同。

矩形窗的谱平滑,但波形细节丢失;而汉明窗则刚好相反,可以有效克服泄漏现象,具有平滑的低通特性。

因此,在语音的时域处理方法中,一般选择矩形窗,而在语音的频域处理方法中,一般选择汉明窗或汉宁窗。

本系统中的端点检测采用时域方法故加矩形窗,计算MFCC系数时加汉明窗。

3.2.5语音信号的端点检测

语音端点检测是指用计算机数字处理技术从包含语音的一段信号中找出字、词的起始点及结束点,从而只存储和处理有效语音信号。

对汉语来说,还可进一步找出其中的声母段和韵母段所处的位置。

语音端点检测是语音分析、合成和识别中的一个重要环节,其算法的优劣在某种程度上也直接决定了整个语音识别系统的优劣。

进行端点检测的基本参数主要有短时能量、幅度、过零率和相关函数等。

端点检测最常见的方法是短时能量短时过零率双门限端点检测,近年来在此基础上发展出的动态窗长短时双门限端点检测方法也被广泛使用。

3.2.5.1语音信号的短时能量

语音和噪声的主要区别在它们的能量上。

语音段的能量比噪声段的大,语音段的能量是噪声段能量叠加语音声波能量的和。

对第n帧语音信号的短时能量En的定义为:

(3-1)

xn为原样本序列在窗函数所切取出的第n段短时语音,N为帧长。

因为在计算时使用的是信号的平方,故将En作为一个度量语音幅度值变化的函数有一个缺陷,即对高电平非常敏感。

因此在许多场合会将En用下式来代替:

(3-2)

这样就不会因为取平方而造成信号的小取样值的大取样值出现较大差异。

3.2.5.2语音信号的短时过零

短时过零表示一帧语音信号波形穿过横轴(零电平)的次数。

对于连续语音信号,过零意味着时域波形通过时间轴;而对于离散信号,如果相邻的取样值的改变符号则称为过零。

过零率就是样本改变符号次数,定义语音信号寿(m)的短时过零率Zn为:

(3-3)

清音的能量多集中在较高的频率上,它的平均过零率要高于浊音,故短时过零率可

以用来区分清音、浊音以及无声。

在实际应用时并不能通过式3-3直接计算过零率,因为在无声段噪声使语音波形在0值附近来回摆动,导致计算出的过零率和有声段的区别并不十分明显。

比较简单的解决方法是设定一个差的阈值δ,使不仅xn(m)*xn(m-1)<0,还要|xn(m)-xn(m-1)|>δ。

在本系统中经多次试验取定δ=0.01。

3.2.5.3语音信号的双门限断点检测

双门限端点检测顾名思义需要两级检测,即短时能量检测和短时过零率检测。

在开始检测之前需要设定4个门限,即分别为短时能量和短时过零率各设置一个高门限和一个低门限:

EHigh、ELow和ZHigh、ZLow。

整个语音端点检测分为四部分:

静音段、过度段、语音段、结束段。

在静音段中如果能量或过零率有一个超过了其低门限,则认为进入了过度段。

在过度段中,由于参数数值较小,还不能确定是否真的进入语音段,只有两个参数的其中一个超越了高门限才被认为是进入语音段。

当参数降至低门限则认为进入结束。

此外,还有两种可能会引起端点检测的误判:

一是短时噪音引起的误判,此时则需要引入最小语音长度门限进行噪声判定,即语音段时间小于一定数值则认定为是噪声,重新回到静音段,本系统设为20ms;二是语音中字与字的时间空隙引起的误判,此时需要设定最大静音长度门限来降低识别的错误率,本系统所训练和识别的都为单字,故无需设置此门限。

在双门限端点检测中4个门限的设定至关重要,门限设定的好坏将直接影响端点检测的结果。

门限值的设置还没有一个通用可靠的方法,需要根据经验和特定环境进行调整。

常见的方法有最大值乘上某个比率、中位值乘上某个比率、最小值乘上某个常数、前三帧平均值乘上某个常数等。

本系统中EHigh,ELow,ZHigh,ZLow的取值分别为:

EHigh=max([min(amp)*10,mean(amp)*0.2,max(amp)*0.1]);ZHigh=max([round(max(zcr)*0.1),5]);

ELow=min([min(amp)*10,mean(amp)*0.2,max(amp)*0.1]);ZLow=max([round(mean(zcr)*0.1),3]);

3.3语音匹配

3.3.1相关法

经过处理的语音信号都有相应的临界带特征矢量,通过相关法计算前后两次声音的特征矢量的相关性,由相关性来判断两次语音信号的相似性。

(3-4)

衡量X与Y的相关程度,(3-13)被称为相关系数。

显然,

,当

的值越大,说明X和Y越相关(相似),当

的值越小(越接近于零),说明X和Y越不相关(不相似)。

尤其是,当

时,

(是各分量为1的列向量,常称为1向量,表示为

)线性相关,当

时,

正交,即最不相关。

3.3.2特征值法

经过预处理的语音数据就可以进行特征参数提取,特征参数的好坏将直接影响系统的性能和效率,对特征参数的要求包括:

提取的特征参数能有效地代表语音特征,具有很好的区分性;

各阶参数之间有良好的独立性;

特征参数要计算方便,最好有高效的计算方法,以保证语音识别的实时实现。

3.3.2.1LPC和LPCC系数

LPC(LinearPredictionCoefficient,线性预测系数)模拟人发音器官的声管模型,是一种基于语音合成的参数模型。

在语音识别系统中很少直接使用LPC系统,而是由LPC系数推出的另一种参数LPCC。

LPCC(LinearPredictionCepstrumCoefficient,线性预测倒谱系数)是LPC在倒谱域中的表示。

该特征是基于语音信号为自回归信号的假设,利用线性预测分析获得倒谱系数。

LPCC的优点是计算量小,易于实现,对元音有较好的描述能力,缺点是对辅音描述能力较差。

3.3.2.2MFCC系数

LPC模型是基于发音模型建立的,LPCC系数也是一种基于合成的系数,这种参数没有充分利用人耳的听觉特性。

实际上,人的听觉系统是一个特殊的非线性系统,它响应不同频率信号的灵敏度是不同的,基本上是一个对数的关系。

近年来,一种能够比较充分利用人耳的这种特殊感知特性的系数得到了广泛应用,这就是Mel尺度倒谱系数(Mel-scaledCepstrumCoefficients,简称MFCC)。

大量研究表明,MFCC系数能够比LPCC参数更好地提高系统的识别性能。

MFCC系数的计算是以“bark”为其频率基准的,它和线性频率的转换关系是:

(3-5)

MFCC系数也是按帧计算的,首先要通过FFT得到该帧信号的功率谱S(n),转换为Mel频率下的功率谱。

这需要在计算之前先在语音的频谱范围内设置若干个带通滤波器:

Hm(n)m=0,1,…,M-1;n=0,1,…,N/2-1(3-6)

M为滤波器的个数,通常取24,与临界带的个数一样;N为一帧语音信号的点数,为了计算FFT的方便,通常取256。

滤波器在频域上为简单的三角形,其中心频率fm在Mel频率轴上是均匀分布的。

如图3-7所示为Mel尺度滤波器组,包含24个滤波器,语音信号帧长取为256个点,语音信号的采样频率为8KHz,。

图3-1Mel尺度滤波器组

带通滤波器的系数事先计算好,在计算MFCC系数是直接使用。

MFCC系数的计算过程如下:

预处理:

确定每一帧语音采样序列的长度(如N=256),并对每帧序列s(n)进行预加重、分帧和加窗处理;

计算离散功率谱:

对预处理的每帧进行离散FFT变换得到其频谱,再取模的平方作为离散功率谱S(n);

将功率谱通过滤波器组:

计算S(n)通过M个Hm(n)后所得的功率值,即计算S(n)和Hm(n)在各离散频率点上的乘积之和,得到M个参数Pm,m=0,1,……M-1;

取对数:

计算Pm的自然对数,得到Lm,m=0,1,……M-1;

离散余弦变换:

对Lm计算其离散余弦变换,得到Dm,m=0,1,……M-1,舍去代表直流成份的D0,取D1,D2,……,Dk作为MFCC参数。

具体流程可以用框图3-8表示为:

图3-2MFCC系数计算流程图

3.3.2.3DTW算法

在孤立词语音识别中,最为简单有效的方法是采用DTW动态时间规整算法,设参考模板特征矢量序列为A={a1,a2,…,aj),输入语音特征矢量序列为B={b1,b2,…,bk),j≠k。

DTW算法就是要寻找一个最佳的时间规整函数,使得语音输入B的时间轴k映射到参考模板A的时间轴j上总的累计失真最小。

将己经存入模板库的各个词条称为参考模板,一个参考模板可以表示为{R

(1),R

(2),…,R(M)},m为训练语音帧的时序标号,m=1为起点语音帧,m=M为终点语音帧,因此M为该模式包含的语音帧总数,R(m)为第m帧语音的特征矢量。

所要识别的一个输入词条语音称为测试模板,可表示为{T

(1),T

(2),…,T(N)),n为测试语音帧标号,模板中共包含N帧音,T(n)为第n帧音的特征矢量。

为了比较它们的相似度,可以计算它们之间的失真D[T,R],这里采用欧氏距离中的中的绝对平均误差:

(3-7)

此失真度的主要优点是计算简单、硬件容易实现。

失真越小相似度越高。

为了计算这一失真,应从T和R中各个对应帧之间的失真算起。

将各个对应帧之间的失真累计起来就可以得到两模式间的总失真。

很容易想到的办法是当两模式长度相等时,直接以相等的帧号相匹配后累加计算总失真,而当两个模式长度不等时则利用线性扩张或线性压缩的方法使两模式具有相等长度,随后进行匹配计算失真度。

但由于人类发音具有随机的非线性变化,这种方法效果不可能是最佳的。

为了达到最佳效果,可以采用动态时间规整的方法。

图3-3

如图所示,横坐标对应“1”这个字音的一次较短的发音,经过分帧和特征矢量计算后共得到一个长度为43帧的语音序列,而纵坐标对应“1”这个字音的一次较长的发音,该语音特征序列共有56帧。

为了找到两个序列的最佳匹配路径,现把测试模式的各个帧号n=1~N(N=43)在一个二维直角坐标系中的横轴上标出,把参考模式的各帧号m=1~M(M=56)在纵轴上标出。

通过这些表示帧号的整数坐标画一些纵横线即可形成一个网格,网格中何一个节点(n,m)表示测试模式中的某一帧和参考模式中的某一帧的交汇点。

动态时间规整算法可以归结为寻找一条通过此网格中若干交叉点的路径,路径通过的交叉点即为参考模式和测试模式中进行失真计算的帧号。

路径不是随意选择的,首先任何一种语音的发音快慢可能有变化,但是各部分的先后顺序不可能改变,因此所选的路径必定从左下角出发,在右上角结束。

为了描述这条路径,假设路径通过的所有格点依次为(n1,m1),……,(ni,mj),……,(nN,mM),其中(n1,m1)=(1,1),(nN,mM)=(N,M)。

路径可以用函数m=Oslash;(n)描述,其中n=i,i=1,2,……,N,Ø

(1)=1,Ø(N)=M。

为了使路径不至于过倾斜,可以约束斜率在0.5~2的范围内,如果路径已经通过了格点(n,m),那么下一个通过的格点(n,m)只可能是下列三种情况之一:

(n,m)=(n+1,m)

(n,m)=(n+1,m+1)

(n,m)=(n,m+1)

用r表示上述三个约束条件。

求最佳路径的问题可以归结为满足约束条件r时,求最佳路径函数m=Ø(n),使得沿路径的积累距离达到最小值,即:

搜索该路径的方法如下:

搜索从(n,m)点出发,可以展开若干条满足ŋ的路径,假设可计算每条路径达到(n,m)点时的总的积累距离,具有最小累积距离者即为最佳路径。

易于证明,限定范围的任一格点(n,m)只可能有一条搜索路径通过。

对于(ni,mi),其可达到该格点的前一个格点只可能是(n,m)、(n,m-1)和(n,m-2),那么(n,m)一定选择这3个距离之路径延伸而通过(n,m),这时此路径的积累距离为:

D[(n,m)]=d[T(n),R(m)]+min{D(n+1,m),D(n+1,m+1),D(n,m+1)}

这样可以从(n,m)=(1,1)出发搜索(n,m),对每一个(n,m)都存储相应的距离,这个距离是当前格点的匹配距离与前一个累计距离最小的格点(按照设定的斜率在三个格点中进行比较)。

搜索到(n,m)时,只保留一条最佳路径。

如果有必要的话,通过逐点向前寻找就可以求得整条路径。

这套DP算法便是DTW算法。

由于DTW不断地计算两矢量的距离以寻找最优的匹配路径,所以得到的是两矢量匹配时积累距离最小的规整函数,这就保证了它们之间存在最大的声学相似特性。

使用DTW算法为核心直接构造识别系统十分简单,首先通过训练得到词汇表中各参考语音的特征序列,直接将这些序列存储为模板。

在进行识别时,将待识语音的特征序列依次与各参考语音特征序列进行DTW匹配,最后得到的总失真度最小且小于识别阈值的就认为是识别结果。

该方法最显著的优点是识别率极高,大大超过目前多数的HMM语音识别系统和VQ语音识别系统。

但其最明显的缺点是由于需要对大量路径及这些路径中的所有节点进行匹配计算,导致计算量极大,随着词汇量的增大其识别过程甚至将达到难以接受的程度,因此无法直接应用于大、中词汇量识别系统。

4.程序设计,调试与结果分析

4.1相关法

4.1.1主函数

voidmain(void)

{

/****************************硬件初始化************************************/

//InitializeCSLlibrary-ThisisREQUIRED!

!

!

CSL_init();

//Themainfrequencyofsystemis240MHz

//该频率是为了设置IIC模块的需要设置的,为了使用I2C_setup函数

PLL_setFreq(1,0xC,0,1,3,3,0);

//EMIF初始化

Emif_Config();

//OpenMcBSPport1andgetaMcBSPtypehandle

hMcbsp=MCBSP_open(MCBSP_PORT1,MCBSP_OPEN_RESET);

//ConfigMcBSPport1byusepreviouslydefinedstructure

Mcbsp_Config(hMcbsp);

//I2C初始化

I2C_cofig();

//CODEC寄存器初始化

inti_AIC();

/*********************子函数初始化(主要是对数组进行初始化)******************/

length_init();//对存储模板和采集到的语音信号有效帧数的数组进行初始化

/*********************训练三次、待识别语音录入一次***************************/

while

(1)

{

/*--------------------端点检测变量初始化(每次均需要初始化)--------------------*/

zero_rate=0;//过零率

ref_zero_rate=0;//根据前三帧得到的参考过零率

ave_energy=0;//平均能量

ref_ave_energy=0;//根据前三帧得到的参考能量

ref_repeat=0;

start_repeat=0;

end_repeat=0;

start=0;//用来存开始的帧数

end=0;//用来存结束的帧数

allj=0;

/*-----------------为避免采集信号时界限不清,设置断点(比设置延时效果要好)-----------*/

printf("\n\n[1]语言密钥设置\n");

printf("[2]相关法语言密钥识别\n");

printf("[0]退出\n\n\n");

printf("输入选项\n");

delay(1000);

a=getchar();

switch(a)

{

case'1':

memset(SourData1,0,sizeof(SourData1));//为申请新的内存做准备

memset(SourData2,0,sizeof(SourData2));

tip_start();//延时函数

printf("请设置语音钥匙\n");

Voice_Mfcc(0);

copyData(&SourData1[(start-1)*DIV_FRAME],SourData2,length[0]*DIV_FRAME);shezhi=1;

break;

case'2':

memset(SourData1,0,sizeof(SourData1));

tip_start();

shezhi=0;

printf("请说出语音钥匙\n");

Voice_Mfcc(3);

xgxs=correlatio

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1