语音识别技术(数学建模)
4
amplitude
Energy
5 0
1
2
3
4
5
6
7
8
9 x 10
4
3
ZCR
300 400 500 600 700 800
2 1 0 1 2 3 4 5 6 7 8 9 x 10
4
5.4图 5.1.4 快速傅里叶转换(FTT) 由于信号在时域上的变化通常很难看出其特性, 所以通常将它转换成频域上 的能力分布来观察,不同的能量分布,就代表不同的语音特性。故乘上汉明窗后 每个音框还需经过FTT以得到频域上的能量分布。 乘上汉明窗的主要目的, 是要加强音框左端和右端的连续性,这是因为在进 行FFT 时, 都是假设一个音框内的讯号是代表一个周期性讯号,如果这个周期性 不存在, FFT 会为了要符合左右端不连续的变化,而产生一些不存在原讯号的能 量分布,造成分析上的误差。当然,如果我们在取音框时,能够使音框中的讯号 就已经包含基本周期的整数倍, 这时候的音框左右端就会是连续的,那就可以不 需要乘上汉明窗了。但是在实作上,由于基本周期的计算会需要额外的时间, 而 且也容易算错,因此我们都用汉明窗来达到类似的效果。 5.1.5 三角带通滤波器 将能量频谱能量乘以一组20个三角带通滤波器, 求得每一个滤波器输出的对 数能量(Log Energy) 。必须注意的是:这20个三角带通滤波器在梅尔频率(Mel Frequency)上是平均分布的,而梅尔频率和一般频率f的关系式如下:
7
mel(f)=2595*log 10 (1+f/700) 或是 mel(f)=1125*ln(1+f/700) 梅尔频率代表一般人耳对于频率的感受度,由此也可以看出人耳对于频率f 的感受是呈对数变化的:在低频部分,人耳感受是比较敏锐;在高频部分,人耳 的感受就会越来越粗糙。 定义若干个带通三角滤波器(k),0<=m<=M,M为滤波器个数,其中心频率为 f(m),每个带通三角滤波器的频率响应为:
Original wave: s(n) 0.4 0.2 0 -0.2 -0.4 0 0.2 0.4 0.6 0.8 1 1.2 1.4
After pre-emphasis: s 2(n)=s(n)-a*s(n-1), a=0.950000 0.05
0
-0.05
0
0.2
0.4
0.6
0.8
1
1.2
1.4
z n ——短时平均过零率
LPC——线性预测参数 E(m)——短时能量 S(m)——分帧后的语音信号 F——频率 Mel——梅尔刻度
xi ——信号输入
yi
——信号输出
五、模型的建立与求解
5.1 第一问,模型的建立 在语音识别过程中,通常用到的语音特征是梅尔倒频谱系数(MFCC) ,此参 数考虑到人耳对不同频率的感受程度因此特别适用于语音识别技术。 语音信号的预处理
H (z) 1 u z 1
u为预加重滤波器的系数,取值范围一般在0.94-0.97,本文取0.95。以时域的运 算式来表示,预加重后的信号s2(n)为
s2(n) = s(n) - a * s(n-1)
4
这个目的就是为了消除发声过程中声带和嘴唇的效应, 来补偿语音信号受到发音 系统所压抑的高频部分。 此处只显示出用Matlab软件仿真的“音频文件波形图如5.2图所示 (程序见附录) :
3
图 5.1 从上图可以看出,预处理模块包括预加重,加窗分帧和端点检测,预加重、 加窗分帧及端点检测是语音识别的准备工作, 每一个环节对整个识别系统的性能 有着重要的影响。 前级预处理主要是对信号进行一定的滤波和分帧;加窗分帧就 是将语音信号进行分段处理, 使语音信号连续并保持一定的重叠率;端点检测是 确定语音有用信号的起始点与终止点,并通过一定的手段处理,将没有意义的语 音信号去除, 从而减少语音匹配识别模块的运算量,同时也可以提高系统的识别 率。 预处理不合理或语音起止点及终止点判别不够准确都会使后续的特征矢量提 取及模式匹配过程等工作受到很大的影响,甚至达不到语音识别的效果,因此预 处理工作作为语音识别的第一步工作,必须达到所需的要求,为下一步的特征参 数提取做好铺垫。 5.1.1 语音信号的采样 Matlab环境中语音信号的采集可使用wavrecord(n,fs,ch,dtype)函数录制, 也可使用Windows的“录音机”程序录制成.wav文件然后使用wavread(file) 函 数读入。在本实验中,使用matlab的语音工具包录取四段语音频文件。 5.1.2 语音信号的预加重 由于语音信号的平均功率谱受声门激励和口鼻辐射的影响, 语音信号从嘴唇 辐射后,高频端大约在800Hz以上有6dB/倍频的衰减。因此,在对语音信号进行 分析之前, 一般要对语音信号加以提升(预加重)。 预加重的目的是滤除低频干扰, 尤其是50Hz或者60Hz的工频干扰,提升对语音识别有用的高频部分,使信号的频 谱变得平坦,以便于进行频谱分析或声道参数分析。预加重是在A/D转换之前进 行,这样不仅能够进行预加重,而且可以压缩信号的动态范围,有效地提高信噪 比。其函数为:
其他 0, W (n) 2 n 0.54 0.46 cos( ), 0 n L 1 L 1
5
对语音信号进行加窗的函数为:
Qn
m
T [x (m )] * w (n m )
其中T[*]表示信号处理方法, {x(m)}为语音帧序列,w(n-m)为各个语音帧上的窗 函数。 窗函数的选择对语音信号的短时分析影响很大,窗函数越宽对信号的平滑 作用越好, 窗函数的主瓣宽度要窄, 旁瓣要尽可能小, 使能量尽量集中在主瓣中, 以抑制频谱的泄露。 若音框化的信号为S(n), n = 0,…N-1,则乘上汉明窗后为S'(n) = S(n)*W(n), 此W(n) 形式如下: W(n, a) = (1 - a) - a cos(2pn/(N-1)),0≦n≦N-1 不同的a值会产生不同的汉明窗,如图5.3(程序见附录) :
一、 问题重述
语音识别技术,也被称为语音识别(英语:Automatic Speech Recognition, ASR) 。其目的就是让机器“听懂”人类口述的语言,这包含了两方面的含义: 其 一是逐字逐句将人类的语音中的词汇内容转换为计算机可读入的输入,例如按 键、二进制编码或者字符序列;其二是对口述语言中所包含的要求或询问加以理 解,并做出正确响应。 语音识别技术已经发展成为涉及声学、语言学、数字信号处理、人工智能等 多学科的一项综合性技术。 基于语音识别技术研发的现代语音识别系统在很多场 景下获得了成功的应用,不同任务条件下所采用的技术又会有所不同。语音识别 系统构建过程整体上包括两大部分:训练和识别。训练通常是离线完成的,对预 先收集好的海量语音、语言数据库进行信号处理和知识挖掘,获取语音识别系统 所需要的“声学模型”和“语言模型”;而识别过程通常是在线完成的,对用户 实时的语音进行自动识别。 识别过程通常又可以分为“前端”和“后端”两大模 块:“前端”模块主要的作用是进行端点检测(去除多余的静音和非说话声) 、 降噪、 特征提取等;“后端”模块的作用是利用训练好的“声学模型”和“语言 模型”对用户说话的特征向量进行统计模式识别(又称“解码”) ,得到其包含 的文字信息。此外,后端模块还存在一个“自适应”的反馈模块,可以对用户的 语音进行自学习,从而对“声学模型”和“语音模型”进行必要的“校正”, 进 一步提高识别的准确率。 请完成以下问题: 1、建立模型说明语音识别技术的各个环节; 2、根据模型为手机运营商制定一个可行的用户操作规则; 3、根据制定的规则,以一个实际的例子验证语音识别模型,例如:查询话 费。
且满足Mel(f(m))-Mel(f(m-1))=Mel(f(m+1))-Mel(f(m)) 求得滤波系数为m(i),i=1,…,p,p为滤波器阶数 5.1.6 离散余弦转换(DCT) 将上述的20个对数能量E k带入离散余弦转换,求出L阶的Mel- scale Cepstrum参数,这里L通常取12。离散余弦转换公式如下: C m = S k=1 N cos[m*(k-0.5)* p /N]*Ek , m=1,2, ..., L 其中E k是由前一个步骤所算出来的三角滤波器和频谱能量的内积值,N是三 角滤波器的个数。由于之前作了FFT,所以采用DCT转换是期望能转回类似Time Domain的情况来看,又称Quefrency Domain,其实也就是Cepstrum。又因为之前 采用Mel- Frequency来转换至梅尔频率,所以才称之Mel-scale Cepstrum。 5.1.7 基于短时能量和过零率的端点检测 在语音信号的预处理中,端点检测是关键的一步,语音信号的模型参数和噪 声模型参数以及自适应滤波器中的适应参数都得依赖对应的信号段(语音段或噪 声段)来计算确定。因此,只有准确地判定语音信号的端点,才能正确地进行语音 处理。 端点检测的目的是从包含语音的一般信号中确定出语音的起点以及终点,一 般采用平均能量或平均幅度值与过零率相乘的方法来判断。 这种利用短时能量和
-0.2
amplitude
0.1
-0.8
-0.3
0
0.5
1
1.5
2 time
2.5
3
3.5
4
-1
0
0.5
1
1.5
2 time
2.5
3
3.5
4
1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 0 100 200
分帧后的语音信号波形
1
Speech
0 -1 0.5 1 1.5 2 2.5 3 3.5 4 4.5 x 10
图5.2 预加重前后音频波形 5.1.3 语音信号的分帧及加窗处理 语音信号是一种非平稳信号,为了能对语音信号进行处理,我们可以假定在 lOms--30ms之间语音信号是平稳的,语音频谱特性和语音特征参数恒定。因此需 将语音信号划分为一个一个的短时段,每一个短时段称为一帧,为了从语音信号 中切去出样本信号, 就要用时间窗函数乘以原始语音信号, 这种操作就称为加窗。 此处采用应用最为广泛的汉明窗: