基于MATLAB的语音信号处理

基于MATLAB的语音信号处理

1语音简介

语音,即语言的声音,是语言符号系统的载体。它由人的发音器官发出,负载着一定的语言意义,语言依靠语音实现它的社会功能。语音是人们交流思想和进行社会活动的最基本手段,因此我们要对语音信号进行处理分析,优化人类通信交流。语音信号处理包括语音通信、语音增强、语音合成、语音识别和说话人识别等方面。语音信号的好坏、语音识别率的高低,都取决于语音信号处理的好坏。因此,语音信号处理是一项非常有意义的研究课程,而语音端点检测是语音语音信号处理中非常重要的一步。

语音端点检测是语音分析、合成和识别中的一个重要环节,目的是从包含语音的一段信号中找出语音的起始点及结束点,从而只存储和处理有效语音信号。有效的端点检测不仅可以减少数据的存和处理时间,而且能排除无声段的噪声干扰。端点检测的困难在于无声段或者语音段前后人为呼吸等产生的杂音、语音开始处的弱摩擦音或弱爆破音以及终点处的鼻音,这些使得语音的端点比较模糊,需要综合利用语音的各种信号特征,从而确保定位的精确性,避免包含噪音信号和丢失语音信号。近年来出现了很多种端点检测的方法如短时能量、短时过零率、传统的双门限法、倒谱特征的检测方法、谱熵的检测方法法、分形法等。尽管语音端点检测技术在安静的环境中已经达到了令人鼓舞的准确率,但是在实际应用时由于声的引入和环境的改变通常会使系统性能显著下降。研究表明,即使在安静的环境中,语音识别系统一半以上的识别错误来自端点检测器。因此,作为语音识别系统的第一步,端点检测的关键性不容忽视,尤其是噪声环境下语音的端点检测,实验室的研究结果与复杂的实用环境下的语音端点检测仍存在一定的差距,它的准确性很大程度上直接影响着后续的工作能否有效进行,如何准确地检测出带噪语音的端点至今仍是一个难题。


2研究背景及意义

语音是语言的声学表现形式,语言是人类特有的功能,声音是人类常用的信息交流工具,通过声音传递信息是人类最重要、最有效、最准确、最方便、最自然的信息交换的方式。语音信号处理是一门涉及面很广的交叉科学,包含计算机科学、语音学、语言学、声学、生理学、心理学和数学等诸多领域的内容。随着现代科学的蓬勃发展,人类社会越来越显示出信息社会的特点,犹如衣、食、住、行对于人类是必要的一样,通信和信息交换也成为了人类社会存在的必要条件,不但在人与人之间,而且在人与机器之间每时每刻都需要进行大量的信息交换。让计算机听懂人类的语言,是人类自计算机诞生以来梦寐以求的想法。

语音技术的应用己经成为一个具有竞争性的高新技术产业,它正在直接与办公、交通、金融、公安、商业、旅游等行业的语音咨询与管理,工业生产部门的语声控制,电话、电信系统的自动拨号、辅助控制与查询以及医疗卫生和福利事业的生活支援系统等各种实际应用领域相接轨,并且有望成为下一代操作系统和应用程序的用户界面。语音处理内容涉及到计算机科学、模式识别、信号处理、生理学、语音学、心理学等学科,还涉及到信号和信息处理系统、通信和电子系统等具体应用领域。语音信号处理与信息科学中最活跃的前沿科学密切联系,并且共同发展。例如,神经网络理论、模糊集理论、小波理论是当前热门的研究领域,这些领域的研究常常把语音处理任务作为一个应用实例,而语音处理研究者也从这些领域的研究进展中找到突破口,使语音处理技术研究取得进展。

经过几十年的努力,语音信号处理在语音识别、语音增强、语音编码、说话人识别、说话人情感识别、语音合成等方面取得了巨大的进步,然而,一旦这些技术应用在实际环境中,由于环境噪声、信道等方面的影响,性能急剧下降,因为在实际环境中没有完全纯净的语音信号,一般都会伴有噪声或其它干扰。。语音检测的任务就是判断待处理信号是语音还是非语音,从输入信号中找到语音部分的起止点。语音检测是语音识别、语音增强以及语音编码等中的一个重要环节。有效的语音检测技术不仅能减少系统的处理时间、提高系统的处理实时性,而且能排除无声段的噪声干扰,从而使后续工作的性能得以较大提高。



第二章 语音信号处理

2.1 语音信号特点

语音信号是随时间变化的一维信号,由一连串的音组成,各个音的排列有一定的规则。语音具有声学特征的物理性质,声音质量与它的频率范围有关,语音信号的频率一般是在200Hz~3500Hz范围内,随着带宽的增加,信号的自然度将逐步得到改善。语音信号本身的冗余度是较大的,少数辅音清晰度下降并不明显影响语句的可懂度,比如通常的模拟电话带宽只有3KHz~4KHz。

语音信号的特性是随时间变化的,所以是一种典型的非稳态信号。但是,从另一方面来看,由于语音的形成过程与发音器官的运动密切相关,这种物理运动比起声音振动速度来讲要缓慢得多,因此,语音信号常常可假定为短时平稳的。研究表明,在5ms-40ms的范围内,语音信号的频谱特性和一些物理特征参数基本保持不变。这样,我们就可以将平稳过程的处理方法和理论引入到语音信号的短时处理中。因此,“短时分析技术”贯穿于语音分析的全过程。

语音信号的基本组成单位是音素。音素可分成“浊音”和“清音”两大类。如果将不存在语音而只有背景噪声的情况称为“无声”。那么音素可以分成“无声”、“浊音”、“清音”三类。一个音节由元音和辅音构成。元音在音节中占主要部分。所有元音都是浊音。在汉语普通话中,每个音节都是由“辅音一元音”构成的。 在信号处理中,语音按其激励形式的不同可分为2 类: (1)浊音 当气流通过声门时,如果声带的张力刚好使声带发生张弛振荡式的振荡,产生一股准周期的气流,这一气流激励声道就产生了浊音。这种语音信号是1 种激励信号,它是由规则的全程激励产生的,其时域波形具有准周期性,语音频率集中在比较低的频率范围内,短时能量较高,由于语音信号中的高频成分有高的过零率而低频有低的过零率,因此浊音的过零率低。通常,浊音信号可以由周期激励通过线性滤波器合成。 (2)清音 当气流通过声门时,如果声带不振动,而在某处收缩,迫使气流高速通过这一收缩部分而产生湍流,就得到清音。清音是由不规则的激励产生的,发清音时声带不振动,其时域波形不具有周期性, 自相关函数没有很强的自相关周期峰,其语音频率集中在较高的范围内,短时能量较低,因而过零率较高。通常,清音信号可由白噪声通过线性滤波器合成。


2.1.1 语音信号的“短时谱”

对于非平稳信号,它是非周期的,频谱随时间连续变化,因此由傅里叶变换得到的频谱无法获知其在各个时刻的频谱特性。如果利用加窗的方法从语音流中取出其中一个短段,再进行傅里叶变换,就可以得到该语音的短时谱。

2.1.2 基音周期

浊音信号的周期称为基音周期,它是声带振动频率的倒数,基音周期的估计称为基音检测。基音检测是语音处理中的一项重要技术,它在有调语音辨意、低速率语音编码、说话人识别等方面起着非常关键的作用。但在实现过程中,由于声门激励波形不是一个完全的周期脉冲串,再加上声道影响去除不易、基音周期定位困难、背景噪声影响强烈等一系列因素,基音检测面临着很大的困难。现在已有很多性能优越的基音检测算法,自相关基因检测算法就是一种基于语音时域分析理论较好的算法,在这里基于声音文件比较稳定的基础上,使用观察法获取基音周期。

2.2 语音信号预处理

为了消除因为人类发声器官本身和因一些采集语音信号的设备等所引起的混叠、高次谐波失真现象,在对语音信号进行分析和处理之前,必须对其进行预处理。语音信号的预处理应尽可能地保证处理后得到的信号更均匀、平滑,且能提高语音的质量。

2.2.1预加重

在进行语音信号数字处理时,为了获取一段语音信号的时域波形,首先要将语音信号转换成电信号,再用A/D转换器将其变换为离散的数字化采样信号。己经数字化的语音信号将依次进入一个数据区。由于语音信号的平均功率受声门激励和口鼻辐射影响,高频端大约在800Hz以上按6dB/倍频程跌落,即6dB/oct(2倍频)或20dB/dec(10倍频),所以求语音信号频谱时,频率越高相应的成分越小,高频部分的频谱比低频部分的难求,为此要在预处理中进行预加重处理。目的是提升高频部分,使信号变得平坦,保持在低频到高频的整个频带中,能用同样的信噪比求频谱,而且预加重零点与辐射零点将抵消声门波的影响,使语音信号中只包含声道部分,以便于频谱分析或声道参数分析。图2.1表明了语音预处理的过程


采样

量化

预加重

加窗分帧

算法处理

语音

图2.1 语音信号的预处理

预加重一般是在语音信号数字化之后,用具有6dB/倍频程的提升高频特性的预加重数字滤波器来实现,它一般是一阶的数字滤波器:

(2-1)

式中的取值接近于1。

有时要恢复原信号,需要从做过预加重的信号频谱来求实际的频谱时,要对测量值进行去加重处理,即加上6dB/倍频程的下降的频率特性来还原成原来的特性。

2.2.2加窗分帧

语音信号检测首先要进行分帧处理,然后依次判断每一帧是否为语音的端点。如果采用较小的窗长,则计算量增加,语音识别的速度会降低。我们可以在语音静音段时,采用较长的窗 ;在语音和静音的过渡段时采用较小的窗 ,可以确切判断语音的起始点 ;一旦确定语音的起点,就改用常规窗长。

在进行了预加重后,接下来就要对语音信号进行加窗分帧处理。将语音信号划分为许多短时的语音段,每个短时的语音段称为一个分析帧。另外,由于不同语音信号的基音周期不同,为了兼顾男声和女声的最高和最低基音频率,且能准确地描述语音能量自身的实际变化规律,通常将窗宽选为10ms~20ms。


基于MATLAB的语音信号处理_第1张图片


图2.2 帧长和帧移

如图2.2所示分帧一般采用交叠分段的方法,这是为了使帧与帧之间能平滑过渡,保持其连续性。前一帧和后一帧的交叠部分称为帧移,帧移与帧长的比值一般取为0~0.5之间。分帧是用可移动的有限窗口长度进行加权实现的,即用窗函数乘以语音信号s(n),从而形成加窗的语音信号:

(2-2)

由于窗函数一般取为S(n)中间大两头小的光滑函数,这样的冲激响应所对应的滤波器具有低通特性,其带宽和频率取决于窗函数的选取。用得最多的三种窗函数是矩形窗、汉明窗(Hamming)和汉宁窗(Hanning),它们的定义如下:

矩形窗:

(2-3)

汉明窗:


(2-4)

汉宁窗:

(2-5)

式中N为窗长,窗函数的选取(形状和长度)对于短时分析参数的特性影响很大,为此应该选择合适的窗口,使其短时参数能更好地反映语音信号的特性变化。以上这些窗函数的幅度频率响应都具有低通特性,它们的主瓣宽度和旁瓣高度如表1-1所示。

表1-1 1s长的各种窗的主瓣宽度和旁瓣高度

矩形 汉明 汉宁
主瓣宽度 0.81Hz 1.19Hz 1.87Hz
旁瓣宽度 -13dB -43dB -32dB

从表中可知:矩形窗的主瓣宽度最小,但其旁瓣高度最高;汉明窗的主瓣最宽,而旁瓣高度最低。矩形窗的旁瓣太高,会产生严重的泄漏现象。汉明窗旁瓣最低,可以有效地克服泄漏现象,具有更平滑的低通特性,因此,一般在语音信号预处理中,都选用汉明窗来进行语音分帧处理。


2.3 语音信号分析

语音信号处理包括语音识别、语音合成、语音编码、说话人识别等方面,但是其前提和基础是对语音信号进行分析。只有将语音信号分析成表示其本质特性的参数,才有可能利用这些参数进行高效的语音通信,以及建立用于识别的模板或知识库。而且,语音识别率的高低,语音合成的音质好坏,都取决于对语音信号分析的准确性和精度。

2.3.1短时时域分析

语音信号本身就是时域信号,因此,时域分析方法是应用最为广泛的一种方法,这种方法直接利用语音信号的时域波形。时域分析通常用于最基本的参数分析以及用于语音的分割、预处理等。语音信号的时域参数有短时能量、短时平均幅度、短时过零率、短时自相关函数等,这些是语音信号中一组最基本的短时参数,在各种语音信号数字处理技术中都有重要应用。

进行语音信号分析时,最先接触到且最直观的就是它的时域波形。时域分析通常用于最基本的参数分析,语音的分割、预处理和大分类。这种分析方法的特点是表示语音信号比较直观、物理意义明确;实现起来比较简单、运算量少;可得到语音的一些重要参数;可采用示波器等通用设备进行观测。取样之后要对信号进行量化,而量化过程不可避免地会产生量化误差,即量化后的信号值与原信号之间的差值。


2.3.2频域分析

语音信号频域分析,主要是对一些频域的参数进行分析,常用的一些频域参数有频谱、功率谱、倒谱等等,最常用的频域分析方法有傅立叶变换法、线性预测法等。

1、傅立叶变换法

傅里叶频谱变换是语音信号频域分析中广泛使用的方法,是分析线性系统和平稳信号稳态特性强有力的手段,对分帧加窗后的语音信号,进行傅里叶变换和逆傅里叶变换,可以相应的得到频谱,功率谱,倒谱距离,嫡等特征。由于语音信号的特性是随着时间缓慢变化,所以采用短时傅里叶变换,相应的求得特征为短时频域特征,这里的窗函数都使用汉明窗。

(1)短时频谱和短时功率谱

设信号经过傅里叶变换后在频域记为,则与的关系见公式1-6。

(2-6)

语音的频谱为的幅度,则有

(2-7)

语音的短时功率谱的是幅度的平方,所以短时功率谱的计算方法为

(2-8)

(2)倒谱距离

语音信号的倒谱分析是通过同态处理来实现的。同态信号处理也称为同态滤波,就是将非线性问题转化为线性问题的处理方法。由于语音信号可视为声门激励信号和声道冲击响应的卷积,可以对语音信号进行解卷。倒谱能很好表示语音的特征,在强噪声环境下,可通过倒谱系数求得倒谱距离,使用倒谱距离来作为端点检测的特征。信号的倒谱也可以定义为信号的能量谱密度函数S(叻的对数的傅里叶级数展开式的系数,

(2-9)

即为倒谱系数,通过倒谱系数求得倒谱距离几为

(2-10)(3)熵

熵(用表示)是物质的复杂程度的一种反映。熵代表的信息量,的概率分布越模糊,越难判断,

则的熵为 (2-11)

2、线性预测法

线性预测分析的基本思想是:由于语音样点之间存在相关性,所以可以用过去的样点值来预测现在或未来的样点值,即一个语音的抽样能够用过去若干个语音抽样或它们的线性组合来逼近。通过使实际语音抽样和线性预测抽样之间的误差在某个准则下达到最小值来决定唯一的一组预测系数。而这组预测系数就反映了语音信号的特征,可以作为语音信号特征参数用与语音识别、语音合成等。

将线性预测应用与语音信号处理,不仅是因为它的预测功能,而且更重要的是因为它能提供一个非常好的声道模型及模型参数估计方法。线性预测的基本原理和语音信号数字模型密切相关。















3 语音信号检测

3.1清音浊音检测

3.1.1信号采集

该设计以本人的声音为分析样本。。可得出声音的采样频率为11025Hz,且声音是单通道的。利用sound函数,可清晰地听到读音为:“电子信息”的音频信号。采集数据并画出波形图如下所示,fs 为采样频率,x为采样数据,接下来对采样数据作傅里叶变换y=fft(x)并画出频谱图如图1所示,程序如下:

fs=11025; %抽样频率

x=wavread('yin.wav');

sound(x1,11025); %读取语音信号“电子信息”

figure(1)

subplot(211)

plot(x) %做原始语音信号的时域图形

title('原始语音信号波形');

xlabel('样点数'); %x轴的名字是“样点数”

ylabel('幅值 '); %y轴名字是“幅值”

grid on;

N=128;

n=0:N-1;

y=fft(x); %对x进行傅里叶变换

mag=abs(y); %求幅值

f=(0:length(y)-1)'*fs/length(y); %进行对应的频率转换

figure(1)

subplot(212)

plot(f,mag); %做原始语音信号的频谱图

xlabel('频率(Hz)');

ylabel('幅值');

title('原始信号频谱图');

grid on;



v2-3780e9e8f852990a079ae87038d54ea0_b.jpg


图1 原始语音信号波形及频谱图

由频谱图可清楚地看到样本声音主要以低频为主。人的语音信号频率一般集中在200 kHz到4.5 kHz之间,从声音频谱的包络来看,样本声音的能量集中在0.1(1102.5Hz)以内,0.4以外的高频部分很少。所以信号宽度近似取为1.1kHz,由采样定理可得。


3.1.2短时能量和短时平均幅度

能量是语音的一个重要特性,由于语音信号的能量随时间变化,清音和浊音之间的能量差别相当显著,清音的能量较小,浊音的能量较大。因此对语音的短时能量进行分析,可以描述语音的这种特征变化情况。短时能量定义为:

(3-1)

其中,W(n)是窗函数,N是窗长。特殊地,当采用矩形窗时,可简化为:

(3-2)

由此表明,窗口加权短时平均能量En 相当于将“语音平方”信号通过一个单位函数响应为h( n) 的线性滤波器的输出。

本次语音信号的短时平均能量和短时平均幅度如下图2所示及程序如下:

N=240;

Y=wavread('yin.wav');

L=length(Y);

LL=length(Y)/N;

figure(2)

Em=zeros(1,(LL-1)*240);

for ii=1:(LL-1)*240,

temp=Y(ii:ii+240);

Em(ii)=sum(temp.*temp);

end

jj=[1:(LL-1)*240];

subplot(211)

plot(jj, Em,'b'); %绘制短时平均能量曲线

xlabel('帧数');

ylabel('短时能量');

title('短时平均能量');

grid on;

%短时平均幅度Mn=sum(abs(Y))/N

Mn=zeros(1,(LL-1)*240);

for ii=1:(LL-1)*240,

temp=Y(ii:ii+240);

Mn(ii)=sum(abs(temp))/N;

end

figure(2)

jj=[1:(LL-1)*240];

subplot(212)

plot(jj, Mn,'b'); %绘制短时平均幅度曲线

xlabel('帧数');

ylabel('短时平均幅度');

title('短时平均幅度');

grid on;


v2-2b282422b33dd4882c315ac9634df510_b.jpg













图2 短时平均能量和短时平均幅度

由上图发现,语音浊音段的短时平均能量远远大于清音段的短时平均能量。因此,短时平均能量En 的计算给出了区分清音段与浊音段的依据,即En (浊) > En (清)。根据En 由高到低的跳变可定出浊音变为清音语音的时刻, En 由低向高的跳变可定出清音变为浊音语音的时刻,而只有浊音才有基音周期,清音的基音周期为零。故清浊音判断是基音检测的第一步。

该算法中窗口选择汉明窗,选择汉明窗的理由是窗函数的选取原则为窗函数截取后的x ( n) 尽量是中间大两头小的光滑函数,冲激响应对应的滤波器具有低通特性。从汉明窗的构成及频率响应特性上看, 汉明窗具有这种特性, 而矩形窗及汉宁窗则稍逊之。汉明窗虽然主瓣最高(带宽大) ,但旁瓣最低(通带外的衰减大) , 可以有效地克服泄露现象,具有更好的低通特性。故选择汉明窗而不选择别的窗函数,能使短时平均能量En 更能反映语音信号的幅度变化。

短时能量函数的应用:

1)可用于区分清音段与浊音段。En值大对应于浊音段,En值小对应于清音段。

2)可用于区分浊音变为清音或清音变为浊音的时间(根据En值的变化趋势)。

3)对高信噪比的语音信号,也可以用来区分有无语音(语音信号的开始点或终止点)。无信号(或仅有噪声能量)时,En值很小,有语音信号时,能量显著增大。


3.1.3 短时过零率

过零率可以反映信号的频谱特性。对于连续语音信号,可以考察其时域波形通过时间轴的情况。对于离散时间信号,如果相邻两个样点的正负号相异时,我们称之为“过零”,即此时信号的时间波形穿过了零电平的横轴。由此可以计算过零数,过零数就是样本改变符号的次数,统计单位时间内样点值改变符号的次数就可以得到平均过零率。短时过零分析通常用在端点检测,特别是用来估计清音的起始位置和结束位置。

短时平均过零率定义为:

(3-3)

在矩形窗条件下,可以简化为

(3-4)

短时过零率可以粗略估计语音的频谱特性。由语音的产生模型可知,发浊音时,声带振动,尽管声道有多个共振峰,但由于声门波引起了频谱的高频衰落,因此浊音能量集中于3KZ以下。而清音由于声带不振动,声道的某些部位阻塞气流产生类白噪声,多数能量集中在较高频率上。高频率对应着高过零率,低频率对应着低过零率,那么过零率与语音的清浊音就存在着对应关系。.

音频为“电子信息”的短时过零率的波形图如下图3所示及程序如下:

Zn=zeros(1,(LL-1)*240);

for ii=2:(LL-1)*240,

temp1=sign(Y(ii:ii+240));

temp=sign(Y(ii-1:ii+240-1));

Zn(ii)=sum(abs(temp1-temp));

end

figure(3)

jj=[1:(LL-1)*240];

plot(jj, Zn,'b'); %绘制短时过零率函数曲线

xlabel('帧数');

ylabel('短时过零率');

title('短时过零率');

grid on;



v2-e5fbaa443979c583a2bbf132ae039cbe_b.jpg

图3 短时平均过零率

分析可知:清音的短时能量较低,过零率高,浊音的短时能量较高,过零率低。清音的过零率为0.5左右,浊音的过零率为0.1左右,两但者分布之间有相互交叠的区域,所以单纯依赖于平均过零率来准确判断清浊音是不可能的,在实际应用中往往是采用语音的多个特征参数进行综合判决。

短时过零率的应用:

1)区别清音和浊音。清音的过零率高,浊音的过零率低。此外,清音和浊音的两种过零分布都与高斯分布曲线比较吻合。

2)从背景噪声中找出语音信号。语音处理领域中的一个基本问题是,如何将一串连续的语音信号进行适当的分割,以确定每个单词语音的信号,亦即找出每个单词的开始和终止位置。

3)在孤立词的语音识别中,可利用能量和过零作为有话无话的鉴别。





3.2语音信号端点检测

3.2.1基于短时能量和短时过零率的双门限端点检测原理

双门限法是利用短时能量和过零率的乘积进行检测的。在基于短时能量和过零率的双门限端点检测算法中首先为短时能量和过零率分别确定两个门限,一个为较低的门限,对信号的变化比较敏感,另一个是较高的门限。当低门限被超过时,很有可能是由于很小的噪声所引起的,未必是语音的开始,当高门限被超过并且在接下来的时间段内一直超过低门限时,则意味着语音信号的开始。

该算法的原理简述如下:

对上述两种特征作一个统计估计,得到两个门限值,利用短时能量检测浊音,短时过零率检测清音,两者配合从而确定语音的端点。由于采集的声音信号中最初的短时段多为无声或背景噪声,这样就可以利用已知为“静态”的最初几帧(一般取10帧)信号计算其过零率阀值zcr及高、低能量阀值amp2(低能量阀)和amp1 (高能量阀)。过零率公式:

(3-5)

计算amp2和amp1时,首先计算最初10帧信号中每帧的短时平均能量或平均幅度,最大值记为max,最小值记为min。

本文在计算短时能量之前,先经过一个滤波器,高通滤波器,此为预加重滤波器,目的在于滤除低频干扰 ,尤其是50Hz或60Hz的工频干扰,将对于语言识别更为有用的高频部分的频率进行提升,在计算短时能量之前应用该滤波器,还可以起到消除直流漂移、抑制随机噪声和提升清音部分能量的效果。其关键代码为amp=sum(abs(enframe(filter([1-0.98],1,x),FrameLen,FrameInc)),2)。文中能量门限调整代码为:

amp1=min(amp1,max(amp)/4);

amp2=min(amp2,max(amp)/8);

根据语音信号的实际情况对门限值进行调整,以便更好的对语音端点进行检测。

其端点检测的流程如下所述:开始进行端点检测之前,首先为短时能量和过过零率分别确定两个门限amp1、amp2、zcr1、zcr2, 其中amp2、zcr2分别为短时能量和过零率比较低的门限,其数值比较小,对信号的变化比较敏感,很容易就会超过。另外amp1、zcr1是比较高的门限,数值比较大,信号必须达到一定的强度,该门限才可能被超过。低们限被超过未必就是语音信号的开始,有可能是时间很短的噪声引起的。高门限被超过则可以基本确信是由于语音信号引起的。

整个语音信号的端点检测可以分为四段:静音、过度段、语音段、结束。程序中使用一个变量status来表示当前所处的状态。在静音段,如果能量或过零率超越了低门限,就应该开始标记起始点,进入过渡段。在过渡段中,由于参数的数值比较小,不能确信是否处于真正的语音段,因此只要个参数的数值都回落到低门限以下,就可以确信进入语音段落。而如果在过渡段中两个参数中的任一个超过了高门限,就可以确信进入语音段了。

一些突发性的噪声也可以引起短时能量或过零率的数值很高,但是往往不能维持足够的长的时间,如门窗的开关、物体的碰撞等引起的噪声。这些都可以通过设定最短时间门限来判别。当前状态处于语音时,如果两个参数的值下降低到低门限以下,而且总的记时长度小于最短时间门限,则认为这是一段噪音,继续扫描以后的语音数据,否则就标记好结束端点,并返回。


3.2.2 双门限语音端点检测实验分析

1、实验环境及参数设置

双门限语音端点检测是在MATLAB软件环境下进行仿真实验。文中语音信号样本是在实验室安静环境下采用麦克风进行录音,以wav格式存储为较纯净的语音样本。实验所加的噪声为伪随机加性高斯白噪声,实验中对较纯净语音样本进行加噪,形成不同SNR的带噪语音样本,然后分别对较纯净的语音样本和加噪后的语音样本进行语音端点检测,并对它们的检测结果进行比较。在语音端点检测之前首先要对被测的语音信号进行预处理等,包括分帧加窗等。文中加Hmmaing窗,通过特性为(1-0.94)的滤波器预加重。对其他参数进行设置,如设置语音帧长度,帧移长度,FFT取512,门限阀值设置等。

2、性能准则

在各种各样的信号处理系统中,噪声信号相对于有用信号而言,所造成的都是干扰和破坏作用,但是噪声却是普遍存在的。噪声信号一般分为加性噪声和非加性噪声加性噪声一般被分为冲激噪声、周期性噪声、宽带噪声、相同声道情况下其他语音信号的干扰噪声等等。

(1)高斯噪声

高斯噪声是指概率密度函数服从高斯分布的一类噪声。高斯分布,也称正态分布,记为N(,),其中和为分布的参数,分别为高斯分布的期望和方差特别当=0,=1时,X的分布为标准正态分布。

(2)信噪比

信噪比是指信号的有用成份与噪声功率之比,称为信号噪声比,简称信噪比,常常用分贝数表示。信噪比越高表明它产生的杂音越少。其公式为:

其中 S、N分别表示原始信号功率与噪声信号功率. 而波形信号计算式为:

其中I为原始语音信号,In为带噪声信号;p1为原始信号功率,p2为噪声信号功率。

文中采用的端点检测通过在较纯净语音信号中加入加性高斯噪声,然后对其进行语音端点检测,改变信噪比值,观察在高信噪比和低信噪比条件下双门限语音端点检测结果,通过实验仿真图比较和分析噪声对各算法语音端点检测结果的影响。

3、分析

基于短时能量和短时过零率的双门限语音端点检测算法是结合短时能量和过零率各自优点来进行检测,双门限端点检测图中红色竖线用来表示语音起点线,绿色竖线表示语音终点线,其检测的实验仿真图如图3.7所示:

function snr=SNR(I,In)

p1=1/length(I)*norm(I)^2;

p2=1/length(I)*norm(In - I)^2;

snr=10*log(p1/p2);

end

tmp1=enframe(x(l:length(x)-l),FrameLen,Framelne);

tmp2=enframe(x(2:length(x)),FrameLen,Framelne);

signs=(tmp1.*tmp2)<0;

diffs=(tmp1-tmp2)>0.02;

zcr=sum(signs.*diffs,2);


基于MATLAB的语音信号处理_第2张图片


图4 “端点检测”原始语音信号双门限语音端点检测波形图


基于MATLAB的语音信号处理_第3张图片


图5 SNR=62.7下双门限语音端点检测波形图


基于MATLAB的语音信号处理_第4张图片


图6 SNR=22.7下双门限语音端点检测波形图

上图4为较纯净的原始语音信号采用双门限进行语音端点检测的仿真图,从图中检测结果可以看出第一和第四个语音段的起始点和终止点都很好,第二个语音段的终止点和第三个语音段的起始点被漏判,而且第四个语音段末尾又误判成语音信号。

上图5为高信噪比SNR=62.7时双门限语音端点检测的仿真图,从图中检测结果可以观察其检测效果与较纯净的原始语音信号检测效果差不多。

上图6为低信噪比条件下双门限语音端点检测的仿真图,从图中检测结果可以看出信噪比SNR=22.7时双门限检测法完全无法检测出语音信号的起始点和终止点。

从以上仿真图4、图5和图6可以看出传统的双门限语音端点检测法在较纯净的语音信号和高信噪比(SNR=62.7)条件下其端点检测效果较之低信噪比(SNR=22.7)条件下检测效果较好。由此可见这种方法在较纯语音信号和高信噪比时,能较好检测出语音信号的端点,但是随着信噪比的下降,其检测结果率明显变差,特别是在噪声很大时,完全不能检测出语音端点,说明该检测方法容易受噪声影响,不适合用于大噪声环境检测。

3.3 基于倒谱特征的语音端点检测

3.3.1倒谱特征

倒谱能很好表示语音的特征,因此在大多数语音识别系统中选择倒谱系数作为输入特征矢量。在噪声环境下短时能量与其它特征参数都不能很好地区分语音段与非语音段,因此可采用倒谱系数来作为端点检测的参数,运用倒谱特征来检测语音端点也是目前语音识别系统中比较典型的方法之一。


3.3.2倒谱距离

设信号s(n),其倒谱变换为c(n)。信号倒谱的一种定义是信号的能量信号倒谱的一种定义是信号能量谱密度函数的对数的傅里叶反变换,或者可以将信号的倒谱看成是的傅里叶级数展开,即

(3-6)

式中,为倒谱系数,且 = 是实数,可由下式计算


(3-7)


3.3.3基于倒谱距离的端点检测算法原理

如何很好地提取语音信号声道特性的谱包络,并用少量参数表示出来,在语音识别、语音合成和语音编码中都是最重要的问题。按照语音产生模型的理论,语音信号是由激励信号与声道响应相卷积产生的,要想提取反映声道特性的谱包络,就必须通过解卷积去掉激励信号。由同态解卷积所导出的倒谱分析方法,只需十几个倒谱系数就能相当好地描述语音信号的声道特性,所以采用倒谱参数取代传统的时域参数作为语音端点检测的判决参量。

根据Parseval定理,对于两个不同信号和其倒谱差异的均方值可用倒谱距离表示:


= (3-8)

式中为倒谱距离,和分别是对应于谱密度函数和 的倒谱系数。

信号与其倒谱是一一对应的变换,因此倒谱的均方距离可以反映两个信号(比如语音与背景噪声)谱的区别,倒谱距离可以作为端点检测的判决参数,属于相似距离范畴。

1、倒谱系数的计算

本文选用LPC倒谱特征,根据线性预测系数推出倒谱,利用了线性预测中声道系统函数的最小相位特性,避免了复对数中相位卷绕的繁琐处理。LPC倒谱特征求出的频谱包络能更好地重现谱的峰值,而且运算量小,在实时语音识别中采用LPC 倒谱作为特征向量较好。LPC倒谱特征取合适的阶数(8~32)后可较好地表征声道特性,但它是按实际频率尺度的倒谱系数。LPC美尔倒谱系数算法效率较高,既考虑了声道激励,又兼顾人耳听觉,理论上具有一定的可行性。

(1)线性预测系数LPC

通过用LPC线性预测法分析语音时得到的有关语音相邻样值间某些相关特性的参数组。线性预测分析基于如下的基本概念,即一语音样本值能用过去若干语音样值的线性组合来近似估计。按在某分析帧(短时)内实际的各语音样本与各预测得到的样本间差值的平方和最小准则,可以决定唯一的一组预测系数,即LPC(语音短时自相关系数)。

(2)LPC倒谱

LPC系数可用来估计语音信号的倒谱也是语音信号短时倒谱分析处理方法。线性预测分析推定的声道模型系统函数为语音信号的倒谱指的是信号能量谱密度函数的对数的傅立叶变换用测量倒谱距离的方法来判断每一帧信号是语音信号还是噪声信号,根据每一帧信号与噪声的倒谱距离的轨迹就可以进行语音端点检测。LPC倒谱(LPCC)由于利用了线性预测中声道系统函数的最小相位特性,避免了相位卷积,数的复杂;且LPC谱的运算量小,仅是用FFT求倒谱时运算量的一半,于实时应用。在MATLAB中采用迭代算法计算LPC参数的程序如下:

function lpcc=lpc2lpcc(lpc)%计算LPCCMCC倒谱参数

n_lpc=8;

n_lpcc=12;

lpcc1=zeros(n_lpcc,1);

lpcc1(1)=lpc(1);

%当n

for n=2:n_lpc

lpcc1(n)=lpc(n);

for l=1:n-1

lpcc1(n)=lpcc1(n)+lpc(l)*lpcc1(n-l)*(n-l)/n;

end

end

lpcc1=-lpcc1;

MC=zeros(k,m);

for i=1:k

MC(i,m)=lpc(m);

for j=(m-1):-1:1

if i==1%对于阶数为1,2要特殊处理

MC(1,j)=lpcc1(j)+a*MC(1,j+1);

end

if i==2

MC(2,j)=(1-a^2)*MC(1,j+1)+a*MC(2,j+1);

end

end

end

lpcc=MC(:,1);


基于MATLAB的语音信号处理_第5张图片


图7 原始语音信号倒谱法语音端点检测波形图

2、倒谱距离的检测算法步骤

在倒谱距离检测的算法中,首先需计算出的每一帧的LPC系数、噪声倒谱系数估计值等,然后由每帧信号的倒谱系数和噪声倒谱系数估计值通过公计算出倒谱值,然后才能对语音信号进行端点检测,其检测算法思路如下:

(1) 预处理。对 8Hz采样信号进行预加重处理,然后分帧加窗,帧长取30msS(240个采样点),帧移10ms,,对每一帧信号加240点hamming窗。

(2)估计噪声倒谱系数和倒谱距离。数p取12,抽样信号起始10帧是背景噪声,利用这10帧的前5帧倒谱系数的统计平均值作为背景嗓声倒谱系数的估计值用向量表示。时采用(3-15)式计算这10帧的后5帧倒谱距离平均值作为背景噪声倒谱距离的估计值,其中表示当前帧的倒谱系数,为对应于的倒谱系数。

(3) 逐帧计算值。逐帧计算倒谱系数,然后由每帧信号的倒谱系数和噪声倒谱系数估值通过(3-15)式计算倒谱距离。

(4)确定判决门限。采用类似于短时能里检测法的动态门限判决准则,设定两个门限和 :

式中为噪声倒谱距离估值,分别为两个门限的乘系数,且>,以保证>,这里取=1.0,=1.3。

(5)根据各帧的值进行端点检测。如果当前帧的值大于,则记录该帧位置为start,然后继续计算后面各帧的值,若在该帧之后若干帧以内,有连续三帧的值都大于,则认为start为语音的起点,否则继续搜索。终点的检测可类比起点的检测得到。

根据倒谱距离的计算公式,文中计算倒谱距离主要代码如下:

for i=1:m

s=0;

for j=2:n

s=s+(lpcc(i,j)-C(j)).^2;%计算倒谱距离

end

s=2*s+(lpcc(i,1)-C(1))^2;

dst(i)=4.3429*sqrt(s);

end

dst=dst./max(dst);

本文在进行端点检测之前,先对语音信号进行预处理即对其分帧加窗,在本文中帧长为256,帧移为128,汉明窗。然后计算出背景噪声倒谱系数的估计值、LPC系数、逐帧计算倒谱系数,最后根据倒谱距离计算出倒谱值dst(i),然后设置两个门限T1和T2,再根据个帧的倒谱值进行端点检测。

整个语音信号的端点检测可以分为四段:静音、过度段、语音段、结束。程序中使用一个变量status来表示当前所处的状态。在静音段,如果倒谱值超越了低门限,就应该开始标记起始点,进入过渡段,并更新当前状态。在过渡段中,由于参数的数值比较小,不能确信是否处于真正的语音段,若在那帧之后若干帧以内,连续几帧都大于T1,就可以确信进入语音段落。若倒谱值连续大于T2则保持在语音段。若倒谱值回落到T2以下,而且总的记时长度小于最短时间门限,则认为这是一段噪音,继续扫描以后的语音数据,否则就标记为结束端点,并返回。

你可能感兴趣的:(信号处理,算法,机器学习,人工智能,webgl)