基于MATLAB的语音信号的清浊音分析文档格式.docx
- 文档编号:18535483
- 上传时间:2022-12-19
- 格式:DOCX
- 页数:12
- 大小:103.39KB
基于MATLAB的语音信号的清浊音分析文档格式.docx
《基于MATLAB的语音信号的清浊音分析文档格式.docx》由会员分享,可在线阅读,更多相关《基于MATLAB的语音信号的清浊音分析文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
浊音信号的周期称为基音周期,它是声带振动频率的倒数,基音周期的估计称为基音检测。
基音检测是语音处理中的一项重要技术,它在有调语音辨意、低速率语音编码、说话人识别等方面起着非常关键的作用。
但在实现过程中,由于声门激励波形不是一个完全的周期脉冲串,再加上声道影响去除不易、基音周期定位困难、背景噪声影响强烈等一系列因素,基音检测面临着很大的困难。
现在已有很多性能优越的基音检测算法,自相关基因检测算法就是一种基于语音时域分析理论较好的算法,在这里基于声音文件比较稳定的基础上,使用观察法获取基音周期。
1.4短时分析技术
语音信号具有时变特性,但在一个短时间范围内(一般认为在10~30ms的短时间内),其特性基本保持不变,即相对稳定,因而可以将其看作是一个准稳态过程,即语音信号具有短时平稳特性。
任何语音信号的分析和处理必须建立在“短时”的基础上。
即进行“短时分析”,将语音信号分段来分析其特征参数,其中每一段称为一“帧”,帧长一般取为10~30ms。
这样,对于整体的语音信号来讲,分析出的是由每一帧特征参数组成的特征参数时间序列。
2语音信号的采集及清浊音分析
2.1语音信号的采集
该设计以本人的声音为分析样本。
在MATLAB中使用Wavread函数。
可得出声音的采样频率为22050Hz,且声音是单通道的。
利用sound函数,可清晰地听到读音为:
“电子信息工程”的音频信号。
采集数据并画出波形图如下所示,fs为采样频率,x为采样数据,接下来对采样数据作傅里叶变换y=fft(x)并画出频谱图如图1所示:
图1原始语音信号波形及频谱图
由频谱图可清楚地看到样本声音主要以低频为主。
人的语音信号频率一般集中在200kHz到4.5kHz之间,从声音频谱的包络来看,样本声音的能量集中在0.1pi(1102.5Hz)以内,0.4pi以外的高频部分很少。
所以信号宽度近似取为1.1kHz,由采样定理可得fs>
2fo=2xl102.5=2205Hz。
2.2采样分帧
这里的采样是指从语音信号中选取一段样本,一般取样点数为帧长的整数倍。
每秒钟的采样样本数叫做采样频率,分帧主要完成将取样模块中获得的语音样值点分为若干个语音帧,语音是不平稳的时变信号,在时间足够短的情况下,可以近似认为是平稳的,短时分析将语音流分为一段一段来处理,每一段就被称为一帧。
分帧时需对语音信号进行加窗操作,即用一个有限长度的窗序列截取一段语音信号来进行分析,该窗函数可以按时间方向滑动,以便分析任一时刻附近的信号。
常见的窗函数有:
方窗、Hamming窗及Hannig窗。
如果把窗函数理解成为某个滤波器的单位冲激响应,由于窗函数一般是中间大两头小的光滑函数,因此该滤波器具有低通特性。
窗口长度的选择非常重要,窗长过短会使分析窗内没有包含足够的数据点来进行周期判断,且短时能量变化剧烈窗长过长,短时能量是一段长时间的平均,不但不能反映语音信号基频的细节变化部分,而且使得计算量增大,窗口长度至少要大于基音周期的两倍。
浊音的短时谱有两个特点:
(1)有明显的周期性起伏结构,这是因为浊音的激励源为周期脉冲气流。
(2)频谱中明显地有凸出点,即“共振峰”,它们的出现频率与声道的谐振频率相对应。
清音的短时谱则没有这两个特点。
它十分类似于一段随机噪声的频谱。
2.3短时能量和短时平均幅度
能量是语音的一个重要特性,由于语音信号的能量随时间变化,清音和浊音之间的能量差别相当显著,清音的能量较小,浊音的能量较大。
因此对语音的短时能量进行分析,可以描述语音的这种特征变化情况。
短时能量定义为:
其中,W(n)是窗函数,N是窗长。
特殊地,当采用矩形窗时,可简化为:
由此表明,窗口加权短时平均能量En相当于将“语音平方”信号通过一个单位函数响应为h(n)的线性滤波器的输出。
本次语音信号的短时平均能量和短时平均幅度如下图2所示:
图2短时平均能量和短时平均幅度
由上图发现,语音浊音段的短时平均能量远远大于清音段的短时平均能量。
因此,短时平均能量En的计算给出了区分清音段与浊音段的依据,即En(浊)>
En(清)。
根据En由高到低的跳变可定出浊音变为清音语音的时刻,En由低向高的跳变可定出清音变为浊音语音的时刻,而只有浊音才有基音周期,清音的基音周期为零。
故清浊音判断是基音检测的第一步。
该算法中窗口选择汉明窗,其定义为:
w(n)=0154-0146cos(2πn/(N-1));
0≤n≤N-1
0 ;
其他
选择汉明窗的理由是窗函数的选取原则为窗函数截取后的x(n)尽量是中间大两头小的光滑函数,冲激响应对应的滤波器具有低通特性。
从汉明窗的构成及频率响应特性上看,汉明窗具有这种特性,而矩形窗及汉宁窗则稍逊之。
汉明窗虽然主瓣最高(带宽大),但旁瓣最低(通带外的衰减大),可以有效地克服泄露现象,具有更好的低通特性。
故选择汉明窗而不选择别的窗函数,能使短时平均能量En更能反映语音信号的幅度变化。
短时能量函数的应用:
1)可用于区分清音段与浊音段。
En值大对应于浊音段,En值小对应于清音段。
2)可用于区分浊音变为清音或清音变为浊音的时间(根据En值的变化趋势)。
3)对高信噪比的语音信号,也可以用来区分有无语音(语音信号的开始点或终止点)。
无信号(或仅有噪声能量)时,En值很小,有语音信号时,能量显著增大。
2.4短时过零率
过零率可以反映信号的频谱特性。
对于连续语音信号,可以考察其时域波形通过时间轴的情况。
对于离散时间信号,如果相邻两个样点的正负号相异时,我们称之为“过零”,即此时信号的时间波形穿过了零电平的横轴。
由此可以计算过零数,过零数就是样本改变符号的次数,统计单位时间内样点值改变符号的次数就可以得到平均过零率。
短时过零分析通常用在端点检测,特别是用来估计清音的起始位置和结束位置。
短时平均过零率定义为:
其中
为符号函数,
,在矩形窗条件下,可以简化为
短时过零率可以粗略估计语音的频谱特性。
由语音的产生模型可知,发浊音时,声带振动,尽管声道有多个共振峰,但由于声门波引起了频谱的高频衰落,因此浊音能量集中于3KZ以下。
而清音由于声带不振动,声道的某些部位阻塞气流产生类白噪声,多数能量集中在较高频率上。
高频率对应着高过零率,低频率对应着低过零率,那么过零率与语音的清浊音就存在着对应关系。
.
音频为“电子信息工程”的短时过零率的波形图如下图3所示:
图图3短时平均过零率
分析可知:
清音的短时能量较低,过零率高,浊音的短时能量较高,过零率低。
清音的过零率为0.5左右,浊音的过零率为0.1左右,两但者分布之间有相互交叠的区域,所以单纯依赖于平均过零率来准确判断清浊音是不可能的,在实际应用中往往是采用语音的多个特征参数进行综合判决。
短时过零率的应用:
1)区别清音和浊音。
清音的过零率高,浊音的过零率低。
此外,清音和浊音的两种过零分布都与高斯分布曲线比较吻合。
2)从背景噪声中找出语音信号。
语音处理领域中的一个基本问题是,如何将一串连续的语音信号进行适当的分割,以确定每个单词语音的信号,亦即找出每个单词的开始和终止位置。
3)在孤立词的语音识别中,可利用能量和过零作为有话无话的鉴别。
2.5短时自相关函数
自相关函数用于衡量信号自身时间波形的相似性。
清音和浊音的发声机理不同,因而在波形上也存在着较大的差异。
浊音的时间波形呈现出一定的周期性,波形之间相似性较好;
清音的时间波形呈现出随机噪声的特性,样点间的相似性较差。
因此,我们用短时自相关函数来测定语音的相似特性。
短时自相关函数定义为:
清音的短时自相关函数波形和浊音的短时自相关函数波形如下图4所示:
图4清音的短时自相关函数波形和浊音的短时自相关函数波形
由短时自相关函数波形分析可知:
清音接近于随机噪声,清音的短时自相关函数不具有周期性,也没有明显突起的峰值,且随着延时k的增大迅速减小;
浊音是周期信号,浊音的短时自相关函数呈现明显的周期性,自相关函数的周期就是浊音信号的周期,根据这个性质可以判断一个语音信号是清音还是浊音,还可以判断浊音的基音周期。
浊音语音的周期可用自相关函数中第一个峰值的位置来估算。
所以在语音信号处理中,自相关函数常用来作以下两种语音信号特征的估计:
1)区分语音是清音还是浊音;
2)估计浊音语音信号的基音周期。
3心得体会
经过一周时间的忙碌,终于完成了本次的课程设计—基于MATAB语音信号的清、浊音分析。
在这段时间内我发现自己还有很多基础知识没有掌握,设计起来非常吃力,并且在开始的几天之中,因为没有头绪,做起来毫无目的。
通过上网,去图书馆查询资料,并通过和老师、同学们进行讨论,最后终于完成了本次的课程设计。
经过这段时间的课程设计,我明白了每个人不可能掌握很多知识或技能,但是我们可以通过查询资料或向老师,同学请教。
虽然开始觉得很吃力但是培养了自己的独立学习能力。
当每次课程设计中,遇到问题,最好的办法就是查阅相关资料,因为每个人掌握情况不一样,一个人不可能做到处处都懂,集合多个人的思想,复杂的事情就会变得很简单。
通过问题的不断解决,自己就会积累很多实用的知识,这一点我深有体会。
在这段时间里,我认识到自己在MATLAB编程及语音信号处理方面的知识还有所欠缺,自身还存在很多不足。
一周的语音信号课程设计即将结束,回顾这一周真是收益匪浅。
以前对知识的了解仅限于理论知识,而且有的仅能够理解,有的只是停留在似懂非懂的状态。
对于有些函数不知道有什么功能,也就不懂怎样使用,但是,经过这一周之后,我对MATLAB软件有了新的认识,掌握的也更加熟练。
主要参考资料
[1]赵力著,语音信号处理(第2版)[M],机械工业出版社,2010.
[2]胡航著,语音信号处理(第四版)[M],哈尔滨工业大学出版社,2009.
[3]张雄伟等著,现代语音处理技术及应用[M],机械工业出版社,2009.
附录
fs=22050;
%抽样频率
x=wavread('
yin.wav'
);
sound(x1,22050);
%读取语音信号“电子信息工程”
figure
(1)
subplot(211)
plot(x)%做原始语音信号的时域图形
title('
原始语音信号波形'
xlabel('
样点数'
%x轴的名字是“样点数”
ylabel('
幅值'
%y轴名字是“幅值”
gridon;
N=128;
n=0:
N-1;
y=fft(x);
%对x进行傅里叶变换
mag=abs(y);
%求幅值
f=(0:
length(y)-1)'
*fs/length(y);
%进行对应的频率转换
subplot(212)
plot(f,mag);
%做原始语音信号的频谱图
频率(Hz)'
幅值'
原始信号频谱图'
N=240;
Y=wavread('
L=length(Y);
LL=length(Y)/N;
figure
(2)
Em=zeros(1,(LL-1)*240);
forii=1:
(LL-1)*240,
temp=Y(ii:
ii+240);
Em(ii)=sum(temp.*temp);
end
jj=[1:
(LL-1)*240];
plot(jj,Em,'
b'
%绘制短时平均能量曲线
帧数'
短时能量'
短时平均能量'
%axis([12000,16000,0.15,0.4])
%短时平均幅度Mn=sum(abs(Y))/N
Mn=zeros(1,(LL-1)*240);
Mn(ii)=sum(abs(temp))/N;
plot(jj,Mn,'
%绘制短时平均幅度曲线
短时平均幅度'
%短时过零率
Zn=zeros(1,(LL-1)*240);
forii=2:
temp1=sign(Y(ii:
ii+240));
temp=sign(Y(ii-1:
ii+240-1));
Zn(ii)=sum(abs(temp1-temp));
figure(3)
plot(jj,Zn,'
%绘制短时过零率函数曲线
短时过零率'
%浊音,取13270--13510个点
%短时自相关函数
temp=Y(13271:
13510);
Rn1=zeros(1,240);
fornn=[1:
240],
forii=[1:
240-nn],
Rn1(nn)=Rn1(nn)+temp(ii)*temp(nn+ii);
end
figure(4)
240];
plot(jj,Rn1,'
%绘制浊音短时自相关函数曲线
短时自相关函数'
浊音短时自相关函数'
%清音,取12120--12360个点
temp=Y(12121:
12360);
Rn2=zeros(1,240);
Rn2(nn)=Rn2(nn)+temp(ii)*temp(nn+ii);
plot(jj,Rn2,'
清音短时自相关函数'
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 MATLAB 语音 信号 浊音 分析