语音信号特征的提取.docx
《语音信号特征的提取.docx》由会员分享,可在线阅读,更多相关《语音信号特征的提取.docx(29页珍藏版)》请在冰点文库上搜索。
语音信号特征的提取
摘要
随着计算机技术的发展,语音交互已经成为人机交互的必要手段,语音特征参数的精确度直接影响着语音合成的音质和语音识别的准确率。
因此语音信号参数提取是语音信号处理研究中一项非常有意义的工作。
本文采用Matlab软件提取语音信号特征参数,首先对语音信号进行数字化处理,其次,进行预处理,包括预加重、加窗和分帧,本文讨论了预处理中各种参数的选择,以使信号特征提取更加准确。
第三,讨论了各种时域特征参数的算法,包括短时能量、短时过零率等。
关键词:
语音信号,特征参数,提取,Matlab
目 录第一章绪论
1.1语音信号特征提取概况
1.1.1研究意义
语音处理技术广泛应用于语音通信系统、声控电话交换、数据查询、计算机控制、工业控制等领域,带有语音功能的计算机也将很快成为大众化产品,语音将可能取代键盘和鼠标成为计算机的主要输入手段,为用户界面带来一次飞跃。
语音信号特征的提取是语音信号处理的前提和基础,只有分析出可表示语音信号本质特征的参数,才有可能利用这些参数进行高效的语音通信和准确的语音识别,才能建立语音合成的语音库。
因此语音信号参数提取是语音信号处理研究中一项非常有意义的工作。
1.1.2发展现状
语音信号处理是一门综合性的学科,包括计算机科学、语音学、语言学、声学和数学等诸多领域的内容。
它的发展过程中,有过两次飞跃。
第一次飞跃是1907年电子管的发明和1920年无线电广播的出现,电子管放大器使很微弱的声
音也可以放大和定量测量,从而使电声学和语言声学的一些研究成果扩展到通信和广播部门;第二次飞跃是在20世纪70年代初,电子计算机和数字信号处理的发展使声音信号特别是语音信号,可以通过模数转换器(A/D)采样和量化转换为数字信号,这样就可以用数字计算方法对语音信号进行处理和加工,提高了语音信号处理的准确性和高效性。
语音信号处理在现代信息科学中的地位举足轻重,但它仍有些基础的理论问题和技术问题有待解决,这些难题如听觉器官的物理模型和数学表示及语音增强的技术理论等,目前还有待发展。
1.2本课题研究内容
本文主要介绍语音信号处理的理论及Matlab的相关内容,然后从Matlab仿真角度验证了录音、预处理、提取语音信号时域特征参数,主要讨论了预处理中各种参数的选择,以使信号特征提取更加准确。
再次讨论了各种时域特征参数的算法,包括短时能量、短时过零率等,介绍了各环节的不同软件实现方法。
最后对基于Matlab的语音信号特征参数提取进行总结。
第二章Matlab简介
MATLAB是国际上仿真领域最权威、最实用的计算机工具。
它是MathWork
公司于1984年推出,它以强大的科学计算与可视化功能、简单易用、开放式可
扩展环境,特别是所附带的30多种面向不同领域的工具箱支持,使得它在许多科学领域中成为计算机辅助设计和分析、算法研究和应用开发的基本工具和首选平台。
2.1发展概况
Matlab是MatrixLaboratory(矩阵实验室的缩写),最初由美国CleveMoler博士在70年代末讲授矩阵理论和数据分析等课程时编写的软件包Linpack与Eispack组成,旨在使应用人员免去大量经常重复的矩阵运算和基本数学运算等繁琐的编程工作。
1984年成立的MathWorks公司正式把Matlab推向市场,并从事Matlab的研究和开发。
1990年,该公司推出了以框图为基础的控制系统仿真工具Simulink,它方便了系统的研究与开发,使控制工程师可以直接构造系统框图进行仿真,并提供了控制系统中常用的各种环节的模块库。
1993年,MathWorks公司推出的Matlab4.0版在原来的基础上又作了较大改进,并推出了Windows版,
29
使命令执行和图形绘制可以在不同窗口进行。
1994年推出了Matlab4.2版本,并得到广泛的重视和应用。
1999年,推出了Matlab5.3版本,真正实现了32位运算,其速度更快、功能更完善、界面更友好,并提供了Internet搜索引擎,可以协助用户寻求在线帮助。
版本6.0、6.1又作了更精细的改进,增加了许多新的功能。
版本7.0、7.1包括拥有数百个内部函数的主包和三十几种工具包。
工具包又可以分为功能性工具包和学科工具包。
功能工具包用来扩充Matlab的符号计算,可视化建模仿真,文字处理及实时控制等功能。
学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类。
2.2主要功能
MATLAB之所以成为世界流行的科学计算与数学应用软件,是因为它有着强大的功能。
MATLAB是一种应用于计算技术的高性能语言。
它将计算、可视化和编程结合在一个易于使用的环境中,此而将问题解决方案表示成我们所熟悉的数学符号,其典型的使用包括:
◇数学计算
◇运算法则的推导
◇模型仿真和还原
◇数据分析,采集及可视化
MATLAB是一个交互式系统,它的基本数据元素是矩阵,且不需要指定大小。
通过它可以解决很多技术计算问题,尤其是带有矩阵和矢量公式推导的问题。
2.3信号处理工具箱
Matlab的信号处理工具箱是信号算法文件的集合,它的推出扩展了Matlab在信号处理领域的应用,为其研究和工程应用提供了有力的基础,应用此工具箱可直观、方便地进行信号分析、数值计算及系统设计等工作,从波形的产生到滤波器的实现和设计,参数建模,谱分析,简化了编程,节省了时间。
它处理的基本对象是信号与系统,包含了信号处理中经常使用的近200个函数,根据其功能,
可以分为20类,经常使用的函数如下所示。
滤波器分析:
abs求绝对值(幅值),conv求卷积,filter直接滤波器实现等;IIR滤波器设计:
FIR滤波器设计:
fir1基于窗函数的FIR滤波器设计——标准响应,fir2基于窗函数的FIR滤波器设计等;变换:
czt线性调频Z变换,idct逆离散余弦变换,ifft一维逆快速傅里叶变换等;窗函数:
boxcar矩形窗,
hamming海明窗,hanning汉宁窗,chebwin切比雪夫窗等;参数化建模:
lpc线性预测系数等。
2.4录音工具
在Matlab环境中,可以通过多种编程方法驱动声卡,实现对语音信号的采集和回放。
同时由于Matlab是一个数据分析和处理功能十分强大的工程使用软件,它的信号处理与分析工具箱提供了十分丰富的功能函数,利用这些函数可以快捷地完成语音信号处理和分析以及信号的可视化,使人机交互更加便捷。
在Matlab环境中,主要可以通过以下3种方法驱动声卡,采集语音信号:
①将声卡作为对象处理采集语音信号。
Matlab将声卡作为对象处理,其后一切操作都不与硬件直接相关,而是通过对该对象的操作来作用于硬件设备(声卡)。
②调用wavrecord函数采集语音信号。
wavrecord函数使用Windows声音输入设备录制声音。
函数调用方式是“wavrecord(N,fs,ch,nbits);”。
其中N是采集样本数据量;fs是样本采集频率(8000Hz、11025Hz、22050Hz、44100Hz),其默认值是11025Hz;ch是样本采集通道,1为单声道,2为双声道,默认值为1(单声道);nbit是每个样本的位数(或称解析度),‘double’、‘single’、‘int16’为16位,‘int8’为8位。
③运用audiorecorder对象采集语音信号。
函数调用方式为audiorecorder
(fs,nbits,ch),可以创设一个audiorecorder对象。
其中fs、nbits、ch的意义同wavrecorder函数。
对象创设后,可以进行录音、暂停、停止、播放以及数据读取等操作。
本文使用第二种方法进行录音。
因为本文是对已存信号进行处理,不需要实时处理,对语音要求不高,所以只需选择处理简单的第二种方法。
第三章语音信号分析
3.1概述
语音信号分析是语音信号处理的前提和基础,只有分析出可表示语音信号本质特征的参数才有可能利用这些参数进行高效的语音通信、语音合成和语音识别等处理。
而且,语音合成的好坏,语音识别率的高低也取决于对语音信号分析的准确性和精确性。
因此语音信号分析在语音信号处理应用中具有举足轻重的地位。
贯穿于语音分析全过程的是“短时分析技术”。
因为,语音信号从整体来看其特性及表征其本质特征的参数均是随时间而变化的,所以它是一个非平稳态过程,不能用处理平稳信号的数字信号处理技术对其进行分析处理。
但是语音信号在一个短时间范围内其特性基本保持不变即相对稳定,即语音信号具有短时平稳性。
所以任何语音信号的分析和处理必须建立在“短时”的基础上,将语音信号分为一段一段来分析其特征参数,其中每一段称为一“帧”,帧长一般取为
10 30ms。
这样,对于整体的语音信号来讲,分析出的是由每一帧特征参数组成
的特征参数时间序列。
3.2语音数字化和预处理
在按帧进行语音分析,提取语音参数之前必须进行一些共同的短时分析技术,如语音信号的数字化、语音信号的端点检测、预加重、加窗和分帧等,这些也是不可忽视的语音信号分析的关键技术。
3.2.1数字化
语音信号的数字化一般包括放大及增益控制、反混叠滤波、采样、A/D变换及编码;预处理一般包括预加重、加窗和分帧等。
语音信号首先进行反混叠滤波,反混叠滤波的目的有两个:
第一,抑制输入信号各个频域分量中频率超出fs/2的所有分量(fs为采样频率),以防止混叠干
扰;第二,抑制电源工频干扰。
这样,反混叠滤波必须是一个带通滤波器,设其上、下截止频率分别是fH和fL,则对于绝大多数语音编译码器,fH=3400Hz、
fL=60100Hz,采样频率为fs=8kHz。
语音信号经过反混叠滤波和采样后由A/D
变换器变换为二进制数字码。
A/D变换中要对信号进行量化,量化不可避免地会产生误差。
量化后的信号值与原信号值之间的差值称为量化误差,又称为量化噪声。
A/D变换器分为线性和非线性两类。
目前采用的线性A/D变换器绝大部分是12位的(即每一个采样脉冲转换为12位二进制数字);非线性A/D变换器则是8位的,它与12位线性变换器是等效的。
有时为了后续处理,要将非线性的
8位码转换为线性的12位码。
3.2.2预处理
由于语音信号的平均功率谱受声门激励和口鼻辐射影响,高频端大约在800Hz以上按6dB/倍频程跌落,所以求语音信号频谱时,频率越高相应的成分越小,高频部分的频谱比低频部分的难求,为此要在预处理中进行预加重处理。
预加重的目的是提升高频部分,使信号的频谱变得平坦,保持在低频到高频的整个频带中,能用同样的信噪比求频谱,以便于频谱分析或声道参数分析。
预加重可在语音信号数字化时在反混叠器之前进行,这样不仅可以进行预加重,而且可以压缩信号的动态范围,有效地提高信噪比。
但预加重一般是在语音信号数字化之后,在参数分析之前在计算机里用具有6dB/倍频程的提升高频特性的预加重数字滤波器来实现,它一般是一阶的数字滤波器:
H(Z) 1
式(3-1)中,μ值接近于1。
μz1
(3-1)
进行预加重数字滤波处理后,接下来就要进行加窗分帧处理。
一般每秒的帧数约为33到100帧,视实际情况而定。
分帧可以采用连续分段的方法,但一般要采用交叠分段的方法,这是为了使帧与帧之间平滑过渡,保持其连续性。
前一帧和后一帧的交叠部分称为帧移。
帧移与帧长的比值一般取01/2。
分帧是用可移动的有限长度窗口进行加权的方法来实现的,即用一定的窗函数w(n)乘s(n),从而形成加窗语音信号:
sw(n) s(n)w(n) (3-2)
3.2.3窗函数的选择
在语音信号处理中常用的窗函数是矩形窗和汉明窗等,它们的表达式如下
(其中N为帧长):
矩形窗:
w(n)
1,0 n (N1)
0,n else
(3-3)
汉明窗:
w(n)
0.54 0.46cos[2πn/(N1)],0 n
0,n else
(N1)
(3-4)
窗函数的选择(形状和长度)对于短时分析参数的特性影响很大。
为此应选择合适的窗口,下面从窗口的形状和窗口的长度两方面来讨论这个问题。
一般一个好的窗函数的标准是:
在时域因为是语音波形乘以窗函数,所以要减少时间窗两端的坡度,使窗口边缘两端不引起急剧变化而平滑过渡到零,这样可以使截取出的语音波形缓慢降为零,减少语音帧的截断效应;在频域要有较宽的3dB带宽以及较小的边带最大值。
这里对矩形窗和汉明窗进行比较。
矩形窗的单位函数响应的数字滤波器:
h(n)
1,0 n (N1)
0,n else
(3-5)
其频率响应:
jT
N1
jnT
sin(NT/2)
jT(N1)/2
H(e ) e e (3-6)
n0 sin(T/2)
它具有线性相位,其频率响应为第一个零值时所对应的频率为fs/N,其中fs
为采样频率。
而汉明窗的频率响应的第一个零值频率(即带宽)以及通带外的衰减都比矩形窗要大许多。
矩形窗与汉明窗的一些参照数据示于下表。
表4-1矩形窗与汉明窗的比较
从表3-1可以看出,汉明窗的主瓣宽度比矩形窗大一倍,即带宽约增加一倍,同时其带外衰减也比矩形窗大一倍多。
矩形窗的谱平滑性能较好,但损失了高频成分,使波形细节丢失;而汉明窗则相反,从这一方面来看,汉明窗比矩形窗更为合适。
3.3语音信号的时域分析
窗类型
旁瓣峰值
主瓣宽度
最小阻带衰减
矩形窗
-13
4π/N
-21
汉明窗
-41
8π/N
-53
语音信号的时域分析就是分析和提取语音信号的时域参数。
进行语音分析时最先接触到并且也是最直观的是它的时域波形。
语音信号本身就是时域信号,因而时域分析是最早使用,也是应用最广泛的一种分析方法,这种方法直接利用语音信号的时域波形。
语音信号的时域参数有短时能量、短时过零率、平均幅度分析等,这是语 音信号的一
组最基本的 短时参数,在
各种语音信 号数字处理
技术中都要 应用。
3.3.1短时能量及短时平均幅度分析
设语音波形时域信号为 x(l)、加窗分帧处理后得到的第 n帧语音信号为
xn(m),则xn(m)满足:
xn(m) (m)x(n m) 0 m N 1 (3-8)
其中,n=0,1T,2T,···并且N是帧长,T是帧移长度, (m)是窗函数。
则第n帧语音信号的短时能量:
N1
n n
E x2(m) (3-9)
m0
En是一个度量语音信号幅度值变化的函数,但它有一个缺陷,即它对高电平非常敏感(因为它计算时用的是信号的平方)。
为此,采用另一个度量语音信号幅度值变化的函数,即短时平均幅度函数Mn,它定义为:
N1
Mn xn(m) (3-10)
m0
Mn也是一帧语音信号能量大小的表征,它与短时能量的区别在于计算时小
取样值和大取样值不会因取平方而造成较大差异,在某些应用领域中会带来一些好处。
3.3.2短时过零率分析
短时过零率表示一帧语音中语音信号波形穿过横轴(零电平)的次数。
过零分析是语音时域分析中最简单的一种。
对于连续语音信号,过零即意味着时域波形通过时间轴;而对于离散信号,过零率就是样本改变符号的次数。
定义语音信号xn(m)的短时过零率:
n
Z 1N1sgn[x(m)]sgn[x(m1)]
(3-11)
2
nn
m0
式中,sgn[]是符号函数,即:
sgn[x]
1,(x 0)
1,(x 0)
(3-12)
在实际中求过零率时,需要十分注意的一个问题是如果输入信号中包含有50Hz的工频干扰或者A/D变换器的工作点有偏移(这等效于输入信号有直流偏移),往往会使计算的过零率很不准确。
为了解决前一个问题,A/D变换器前的防混叠带通滤波器的低端截频应高于50Hz,以有效地抑制电源干扰。
第四章MATLAB仿真
语音
输入
录音
滤波
预加重
特征参数
加窗分帧 提取
分析参数
实现方法
本文采用Matlab对语音信号特征参数的提取进行仿真验证。
如图4-1,对语音信号进行数字化处理,从而利用软件提取特征参数并进行分析。
4.1语音数字化和预处理
图4-1实验流程图
4.1.1数字化
该实验以研究者本人的声音为分析样本。
在Matlab中使用wavrecord(n,fs,ch,dtype)函数录取英文“Ada”的读音。
因人类语音的频谱主要集中在4kHz以内,而根据采样定理,采样频率应大于信号中最高频率的两倍,所以采样频率
(fs)取8khz;本实验将录音时间规定为2s,因此采样的总点数(n)为2*8000;
通道数(ch)取1,即为单通道;采样数据的存储格式(dtype)取为“double”,即16位采样精度。
利用wavplay函数可以较清晰地听到读音,同时发现语音开始时存在短暂杂音。
用wavwrite函数将语音信号保存为“a.wav”文件,应用于下面的处理。
通过wavrecord函数,语音信号便由计算机完成了采样、A/D变换及编码过程。
接下来进行滤波,该实验选用了4阶的比特沃斯带通滤波器,其上下截止频率分别为3400Hz以及100Hz,这是因为语音信号一般在4kHz以内,虽然理论上可以将最高频率取为4kHz,但实际上由于比特沃斯滤波器为使通带的幅度响应最大限度地平坦,而损失了截止频率处的下降斜度,所以上截止频率应小于4kHz,从而抑制输入信号中各个频域分量中频率超出4kHz的分量;电源的工频干扰一般在50Hz左右,为了防止其干扰,所以下截止频率应大于50Hz,本实验取为100Hz。
滤波前信号波形
0.02
0
-0.02
-0.04
-0.06
0 2000 4000 6000 8000 10000120001400016000
滤波后信号波形
0.05
0
-0.05
0 2000 4000 6000 8000 10000120001400016000
图4-2“Ada”语音信号滤波前后的时域波形
如图4-2所示,滤波前后的信号波形差异不大,只有实验开始时的一段噪音以及整段语音中部分高频分量被抑制了,这是因为该实验是在低噪声的环境下完成的,所以通带外的噪声分量很小,滤波前后没有明显变化。
但仅仅根据信号幅度无法准确确认语音端点的具体位置,所以有必要进一步
分析。
如图4-3所示,因0π间频谱与π
2π间频谱呈镜像对称,所以本文中频
谱的数字角频率范围全部取为0π,在整体频谱中,看不出低频段的变化,所以将低频段频谱放大进行观察,由右边两幅图可见,低频段被抑制了,电源干扰也相应地被排除了。
再次用wavplay函数收听滤波后的语音,语音更加清晰,语音开始段的杂音
被消除。
可见,滤波可以提高得到的语音信号的质量。
1500
滤波前信号频谱
滤波前低频段放大的信号频谱
1500
1000
值幅
500
1000
值幅
500
0
0 0.5 1
w(单位pi)
滤波后信号频谱
1500
0
0 0.0050.010.0150.02
w(单位pi)
滤波后低频段放大的信号频谱
1500
1000
值幅
500
1000
值幅
500
0
0 0.5 1
w(单位pi)
0
0 0.0050.010.0150.02
w(单位pi)
4.1.2预处理
图4-3“”语音信号滤波前后的频谱
用wavwrite函数将经过滤波的语音信号存储为“b.wav”文件,用于语音的预处理环节。
本实验中,预处理包括预加重、加窗和分帧。
求语音信号频谱时,频率越高相应的成分越小,高频段大约在800Hz以上按6dB/倍频程跌落,所以高频部分的频谱比低频部分的难求,为此要在预处理中进行预加重。
本实验采用具有6dB/倍频程的一阶数字滤波器提高高频特性,来实现预加重:
其中μ值取0.9357。
H(Z) 1
μz1
(4-1)
如图4-4所示,就整体而言,下图比上图幅值低,下图最大幅值仅约为上图的1/3,而高频段相对变化不大,所以预加重后高、低频段的幅值差异得到压缩。
因此我们可以得到结论:
第一,有用的高频部分的频谱得到提升,低频部分频谱进一步被抑制,起到了滤除低频干扰(包括工频干扰和随机噪声)的作用;第二,使信号的频谱变得平坦,压缩了信号的动态范围,保持整个频带中能用同样的信
噪比求频谱,便于频谱分析。
如图4-5所示,下图比上图的动态范围小,整体幅值水平低,曲线更平滑,可见,预加重还起到了压缩短时能量的动态范围,消除直流漂移,抑制随机噪声的作用。
将预加重后的语音用wavwrite函数存为“c.wav”文件,用于下面的处理。
预加预重加前重信号前频的谱短时能量
600
150
400
值量
幅能100
时200
短
50
0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
0
20 40 60
w(单位pi)
80 100 120 140 160 180
600
预加重后信号频谱
预加重后的短时能量
200
400
值
幅 150
量200
能
时100
短0
500
0
0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
w(单位pi)
20 40 60 80 100 120 140 160 180
图4-4预加重前后的信号频谱
预加重前的短时能量
150
量
能100
时
短
50
0
20 40 60 80 100 120 140 160 180
预加重后的短时能量
200
150
量
能
时100
短
50
0
20 40 60 80 100 120 140 160 180
图4-5预加重前后的短时能量
原语音信号的时域波形
1
值0
幅
-1
0 2000 4000 6000 8000 10000120001400016000