基于DSP语音识别课程设计杨艳珍.docx

上传人:b****8 文档编号:9289255 上传时间:2023-02-04 格式:DOCX 页数:20 大小:708.56KB
下载 相关 举报
基于DSP语音识别课程设计杨艳珍.docx_第1页
第1页 / 共20页
基于DSP语音识别课程设计杨艳珍.docx_第2页
第2页 / 共20页
基于DSP语音识别课程设计杨艳珍.docx_第3页
第3页 / 共20页
基于DSP语音识别课程设计杨艳珍.docx_第4页
第4页 / 共20页
基于DSP语音识别课程设计杨艳珍.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

基于DSP语音识别课程设计杨艳珍.docx

《基于DSP语音识别课程设计杨艳珍.docx》由会员分享,可在线阅读,更多相关《基于DSP语音识别课程设计杨艳珍.docx(20页珍藏版)》请在冰豆网上搜索。

基于DSP语音识别课程设计杨艳珍.docx

基于DSP语音识别课程设计杨艳珍

攻读硕士学位研究生试卷(作业)封面

(2013至2014学年度第二学期)

题目基于DSP语音识别课程设计

科目DSP应用与开发

姓名杨艳珍

专业电子与通信工程

学号2013201283

入学年月2013年9月

简短评语

 

成绩:

授课教师签字:

一、设计任务书

语音技术,包括语音识别、语音合成、关键词检出、说话人识别与确认、口语对话系统等,是现代人机交互的重要方式之一,具有广泛的应用前景。

其中语音识别技术,尤其是连续语音识别技术,是最基础、最重要的部分,而且已经逐步走向成熟与实用。

语音识别是研究使机器能够准确地听出人的语音内容的问题,即准确地识别所说的话,语音识别是近二三十年来发展起来的新兴学科,在计算机、信息处理、通信与电子系统、自动控制等领域中,在工业、军事、交通、医学等方面有着广泛的应用。

语音识别装置有着重要的应用价值。

而计算机技术=模式识别和信号处理技术及声学技术的发展也使满足各种需要的语音识别的实现成为可能。

语音识别按不同的角度有以下几种分类方法:

从所要识别的单位。

有孤立词识别、音素识别、音节识别、孤立句识别、连续语音识别和理解。

目前已进入识别的语音识别系统是单词识别。

以几百个单词为限定识别对象。

从识别的词汇量来分。

有小词汇(10-50个)、中词汇(50-200个)、大词汇(200以上)等。

从讲话人的范围来分。

有单个特定讲话人、多讲话人和与讲话者无关。

特定讲话人比较简单,能够得到较高的识别率。

后两者难度较大,不容易得到高的识别率。

从识别的方法分。

有模块匹配法、随机模型法和概率语法分析法。

这三种都属于统计模式识别方法。

这三种方法都建立在最大似然决策bayes判决的基础上,但具体做法不同,简述如下:

a.模块匹配法。

将测试语音与模块的参数一一进行比较与匹配,判决的依据是是真测度最小准则。

这里,除了参数分析的精度之外,选择何种失真测度至关重要。

通常它要求对语音信息的各种信息具有顽健行,而且可以使用具备加权技术,使得测度更符合或更接近于最佳。

b.随机模型法。

这是一种使用隐马尔可夫模型(HMM)的概率参数来对似然函数进行估计和判决,从而得到识别结果的一种方法。

由于HMM具有状态函数,所以这种方法可以利用语音频谱的内在变化和他们的相关性。

这表明,该方法能够较好地将语言结构的动态特性用到识别中来。

c.概率语法分析法。

适用于大长度范围的连续语言的识别情况,也就是说它可以利用连续语言中的形式语法约束的知识来对似然函数进行估计和判决。

这里,形式语法可以用参数形式来表示,也可以用概率估计的非参数形式来表示。

甚至可以用两者结合的形式。

因此该方法可将a或b方法结合起来。

除了上面三种方法,其他的识别方法包括人工神经网络语音语音识别、应用模型数学识别的语音识别语句等。

对于汉字语音的识别,本质上和其他语音识别没有区别,也有其特点。

主要是它宜于用音节作为基本研究对象,从而使特征的提取、字节的分割、动态时间匹配的选取等也具有特点。

目前汉语识别的研究重点主要是以词为单位的孤立词识别和连续语音识别对等。

本实验的主要任务就是对以TMS320VC5402芯片为核心的系统硬件设计进行了研究,通过TLC320AD50C对语音信号进行A/D转换,通过TMS30VC5402对语音信号“0”、“1”、“2”进行训练和识别,并由对于的灯LED0、LED1、LED2亮来显示结果是否正确;该系统核心识别算法采用动态时间规整(DTW)算法,主要流程包括预处理、端点检测、提取特征值、模式匹配和模板训练,取得了很好的识别效果。

二、设计内容

(1)对DMA进行初始化;

(2)对A/D、D/A进行初始化;

(3)编写DMA中断服务程序,实现语音信号的实时识别;

(4)根据识别系统的类型选择一种识别方法,采用语音分析方法分析出这种识别方法所要求的语音特征参数,作为标准模式由机器存储起来,形成标准模式库。

(5)对语音进行特征参数的分析,语音信号经过相同的通道得到语音参数,生成测试模板;

(6)将测试模板与参考模板进行匹配,将匹配分数最高的参考模板作为识别结果,从而实现语音的识别。

三、设计方案、算法原理说明

1系统概述

   语音识别系统的典型实现方案如图1所示。

输入的模拟语音信号首先要进行预处理,包括预滤波、采样和量化、加窗、断点检测、预加重等。

语音信号经过预处理后,接下来重要的一环就是特征参数提取,其目的是从语音波形中提取出随时间变化的语音特征序列。

然后建立声学模型,在识别的时候将输入的语音特征同声学模型进行比较,得到最佳的识别结果。

2.硬件构成

2.1系统构成

   这里采用DSP芯片为核心(图2),系统包括直接双访问快速SRAM、一路ADC/一路DAC及相应的模拟信号放大器和抗混叠滤波器。

外部只需扩展FLASH存储器、电源模块等少量电路即可构成完整系统应用。

2.2系统主要功能模块构成

   语音处理模块采用TITMS320VC5402,其主要特点包括:

采用改进的哈佛结构,一条程序总线(PB),三条数据总线(CB,DB,EB)和四条地址总线(PAB,CAB,DAB,EAB),带有专用硬件逻辑CPU(40位算术逻辑单元(ALU),包括1个40位桶形移位器和二个40位累加器;一个17×17乘法器和一个40位专用加法器,允许16位带或不带符号的乘法),片内存储器(八个辅助寄存器及一个软件栈),片内外专用的指令集,允许使用业界最先进的定点DSPC语言编译器。

TMS320VC5402含4KB的片内ROM和16KB的双存取RAM,一个HPI(HostPortInterface)接口,二个多通道缓冲单口MCBSP(Multi-ChannelBufferedSerialPort),单周期指令执行时间10ns,带有符合IEEE1149.1标准的JTAG边界扫描仿真逻辑。

语音输入、输出的模拟前端采用TI公司的TLC320ADSOC,它是一款集成ADC和DAC于一体的模拟接口电路,并且与DSP接口简单,性能高、功耗低,已成为当前语音处理的主流产品。

16位数据结构,音频采样频率为2~22.05kHz,内含抗混叠滤波器和重构滤波器的模拟接口芯片,还有一个能与许多DSP芯片相连的同步串行通信接口。

TLC320AD50C片内还包括一个定时器(调整采样率和帧同步延时)和控制器(调整编程放大增益、锁相环PLL、主从模式)。

TLC320AD50C与TMS320VC5402的硬件连接,如图3所示。

3.语音识别算法软件实现

3.1系统流程图

3.2语音信号的端点检测

端点检测是语音识别系统中至关重要的一步,其算法的优劣在某种程度上也直接决定了整个语音识别系统的成败.作为一个完整的语音识别系统,其最终实现及使用的效果不仅仅取决于识别的算法,许多相关因素都直接影响着应用系统的成功与否。

端点检测的目的就是在复杂的应用环境下的信号流中分辨出语音信号和非语音信号,并确定语音信号的开始及结束。

好的端点检测方法能改变语音识别软件存在的检测效果不理想、识别率低等问题。

用短时能量短时过零率结合的方法,此方法实现简单,在噪声干扰不大的环境中可以取得较好的识别效果,但在实时性上还有提高的空间,采用动态窗长短时能量的方法可以在识别的实时性和识别率上有所提高。

为了减小语音帧的截断效应,需要加窗处理;

本实验采用hamming窗,因为矩形窗的主瓣宽度最小,旁瓣高度最高,会导致泄漏现象,哈明窗的主瓣最宽,旁瓣高度最低,可以有效的克服泄漏现象,具有更平滑的低通特性,应用更广泛。

(1)短时能量定义为:

语音信号强度的度量参数

短时平均能量的主要用途:

可以从语音中区别出浊音来,因为浊音时短时平均能量的值要比清音时短时平均能量的值大很多;

②可以用来区别声母和韵母的分界、无声和有声的分界等

③最为一种超音段信息,用于语音识别中。

(2)短时过零率:

波形穿过横轴(零电平)的次数

 

短时过零可以看作信号频率的简单度量:

浊音时能量集中于较低频率段内,具有较低的过零率,而清音时能量集中于较高频率段内,具有较高的过零率。

(3)短时平均幅度:

短时能量对高电平非常敏感(因为计算时用的是信号的平方),为此可以用另一种度量语音信号幅度值的变化函数。

即“短时平均幅度M0”定义为:

这里用计算加权了的信号的绝对值之和替代平方和,因而短时处理的方法比较简单,硬件更易实现。

因此本实验采用短时平均幅值和短时过零率相结合的双门限端点检测法.

双门限端点检测顾名思义需要两级检测,即短时平均幅值检测和短时平均过零率检测.首先用短时平均幅值进行第一次判别,然后用短时平均过零率进行第二次判别.开始检测之前,为计算整体平均幅值pn,当短时平均幅值大于

的整体平均幅值pn或者第m+1帧的短时过零率大于3倍的第m帧的短时过零率即Z[m+1]>3*Z[m]就进入语音段.当短时平均幅值小于

的整体平均幅值pn则认为进入结束.

用C语音实现的流程图如下:

 

两种可能会引起端点检测的误判,一是短时噪音引起的误判,此时则需要引入最小语音长度门限进行噪声判定,即语音段时间小于一定数值则认定为是噪声.二是语音中字与字的时间空隙引起的误判,此时需要设定最大静音长度门限来降低识别的错误率。

这种双门限端点检测是最常用的孤立词识别所采用的端点检测方法,其方法物理意义明确,计算量小,在安静的环境中有较好的识别率,但它也有很多不足,例如门限值需要由经验来设定,更换实验环境,则效果不理想等

可以采用的改进方法:

采用动态窗长短时能量检测语音端点。

检测时首先要对语音信号进行加窗分帧处理,如果窗的长度过大,在提高检测速度的同时导致识别率的下降,如果窗的长度过短,在提高检测识别率的同时增加了检测的时间.考虑此种情况,采用动态窗长短时能量端点检测方法,在静音段使用大窗长,进入过度段后,改用小窗长,进入语音段则使用正常窗长

短时能量主要起到的作用有以下几个方面:

首先利用短时能量可以区分清音和浊音,因为浊音的能量要比清音的能量大得多;其次,可以用短时能量对有声段和无声段进行判定,对声母和韵母分界,以及对连字分界.算法主要步骤如下:

(1)定义变量status,其值对应于端点检测的四个不同状态,0一静音段,1一过度段,2一语音段,3一结束.

(2)初始化status为0,采用大窗长进行端点检测,当短时能量超过低门限值,则将status的值改变为1,认为进入过度段,此时窗长也随之从大窗长改变为小窗长.

(3)当短时能量超过高门限,则将status的值改变为2,认为进入语音段,此时窗长设定为正常窗.

(4)当短时能量下降到低于低门限,则再次调整窗长,直至语音结束.

3.3特征参数的提取

矢量量化的过程是:

将语音信号波形的K个样点的每一帧,或有K个参数的每一参数帧,构成k维空间中的一个矢量,然后将这个矢量进行量化。

矢量量化器的设计就是:

从大量信号信号样本中训练出好的码书,从实际效果出发寻找到好的失真测度定义公式,设计出最佳的矢量量化系统,以便用最少的搜索和计算失真的运算量,来实现最大可能的平均信噪比。

临界带特征矢量是指:

将一帧信号的功率谱按频率高低分成若干个临界带,每一个临界中的功率谱求和,即可得到相应的临界带特征矢量。

每一帧信号都对应一个若干维的临界带特征矢量.临界带特征矢量算法的过程:

第一步,求出每一帧的加窗语音Xn(m):

m=0~(N-1),的DFT的模平方值|Xn(k)|2此即为功率谱。

做256点的DFT变换,采样频率为8kHz,窗长为38ms(即N=256),窗形为汉明窗。

|Xn(k)|2与原始加窗语音信号的频谱模平方|Xn(exp(jwk))|2具有下列关系:

|Xn(k)|2=|Xn(exp(jwk))|20~256其中,wk=2πfk,fk=

第二步,划分临界带。

在o~fs/2中确定

若干个临界带频率分割点。

确定的方法是将i=1,2,3⋯代人下面的式子中,即可求出相应的

(以Hz为单位)。

由此可以求出

并且,由

构成第一临界带,

构成第二临界带,以此类推。

在实验数据中需要安排了12个临界带。

第三步,求临界带特征矢量。

将每一个临界带中的功率谱|Xn(k)|2取和,即可得到相应的临界带特征矢量。

如果用

表示临界带特征矢量,则每一个

分量可通过以下的式子求得。

从而,每帧都可以得到一个12维的临界带特征矢量:

提取特征参数程序流程图:

3.4建立语音库(训练或学习)

即声学参数模板。

它是用训练与聚类的方法,从单讲话的多次重复的语音参数经过长时间的训练聚类得到的。

程序流图:

3.5特定人语音识别算法

在孤立词语音识别中,最为简单有效的方法是采用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],这里采用欧氏距离中的中的绝对平均误差:

d1(T,R)=

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

失真越小相似度越高。

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

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

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

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

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

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

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

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

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

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

其次为了防止漫无目的的搜索,可以删去那些向n轴方向或者m轴方向过分倾斜的路径(例如,过分向n轴倾斜意味着R(m)压缩很大而T(n)扩张很大,而实际语音中这种压、扩总是有限的)。

为了引入这个限制,可以对路径中各通过点的路径平均斜率的最大值和最小值予以限制。

通常最大斜率定为2,最小平均斜率定为1/2。

路径的出发点可以选择(n,m)=(1,1)点,也可以选择(n,m)=(1,2)或(1,3)或(2,1)或(3,1)…点出发。

前者称为固定起点,后者称为松弛起点。

同样,路径可在(n,m)=(N,M)点结束,也可以在(n,m)=(N,M-1)或(N,M-2)或(N-1,M)或(N-2,M)…点结束。

前者称为固定终点,后者称为松弛终点。

D=

式中,

是第i帧测试矢量

和第j帧模板矢量

之间的距离测度,D则是处于最有时间规整情况下两矢量之间的匹配路径。

实际中采用动态规划技术来加以具体实现的。

动态规划是一种最优化算法。

总代价函数的计算式为

D[c(k)]=d[c(k)]+minD[c(k-1)]

式中,d[c(k)]为匹配点c(k)本身的代价,minD[c(k-1)]是在c(k)以前所有允许值(由路径限制而定)中的最小的一个。

一次总代价函数是该点本身的代价与达到改点的最佳路径的代价之和。

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

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

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

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

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

程序流图:

四、程序设计、调试与结果分析

程序调试和测试数据:

由于,程序要求说话人一秒中要把话说完,因此,对实验结果有重大影响的是语音信号是否完整的输入进来了,能否完整的被提取。

对此问题的最好的解决办法是直接看输入语音波形是否完整,提取语音波形是否占语音信号足够的比例。

通过CCS软件的view中的Graph选项,即CCS的视图工具,我们可看到输入波形和提取波形。

为看到提取波形,程序运行过程中把检测到的起始点、终点及有效点数打印出来,以便快速的查看语音图形。

查看方法,先跟据程序检测到的起始点和有效点数确定Graph的参数。

如下图,为参数设置示例:

此设置是直接在输入存放原始语音信号的data数据区看语音信号。

显示数据长度为有效数据长度。

可以通过改变data后面的添加项来观察有效区前后的语音信号波形,以便对比,有效语音与原始语音的差别。

 

经CCS软件测试我们得到输入元素“0”、“1”、“2”的语音输入波形及提取波形:

输入语音为“0”

“0”的有效语音段:

前移200点图:

后移200点图:

输入语音为“1”

“1”的有效语音段:

前移200点图

后移200点图

输入语音“2”

“2”的有效语音段:

前移200点图

后移200点图

由上图可知,如果读入语音方式合适,语音信号可以完整的被采集到。

通过完整语音波形和有效波形的对比,我们可以看出,程序语音信号的有效度采集超过了完整语音的90%,同时可以看到没有被采集到部分都是一些完全可以忽略的部分,对语音整体没有太大影响,这可以体现程序对有效语音的提取是正确,而且合理的。

测试结果及分析:

识别“0”

识别“1”

识别“2”

通过多做数据的采集及结果分析:

测试次数

0

1

2

识别个数

识别率

90

27

30

30

87

96.7%

据实际测试数据可得系统识别率为96.7%。

识别率比较高,但还未达到理想状态100%,分析原因可能有以下几点:

1、程序中端点检测的门限是由经验所得,不能完整获得语音的起点和终点,同时,不确定的外界噪音干扰也会影响端点的检测。

2、特征提取算法不够完善及提取特征比较单一,只是语音信息提取不够完整,致使语音的比较产生较大误差。

3、DTW算法本身在噪声比较小的环境中才会用较高的识别效果,实验室环境中噪声相对较大,因此,在一定程度上降低了识别率。

4、模板的录入也是经过此算法,因此,录入模板过程和测试过程,外界环境和说话者发音不可能一样,这也会造成最后结果产生偏差。

五、参考文献

【1】高海林.钱满义DSP技术及其应用》2009

【2】胡航编著.《语音信号处理》2000

【3】刘幺和,宋庭新编著《语音识别与控制应用技术》2008

【3】乔瑞萍,崔涛,张芳娟编著《TMS320C54xDSP原理及应用》2005

【4】曾义芳编著《DSP开发应用技术》2005

【5】张雄伟,陈亮,杨吉斌编著《现代语音处理技术及应用》2003

【6】《谭浩强C程序设计(第二版)》清华大学出版社2003

【7】王炳锡,屈丹,彭煊《实用语音识别基础》国防工业出版社,2005

【8】刘幺和,宋庭新《语音识别与控制应用技术》科学出版社,2008

【9】张大克王玉杰《随机欧氏距离的统计性质和分类阀值》天津科技大学学报,2008第23卷4期

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

当前位置:首页 > 初中教育 > 科学

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

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