MATLAB在语音信号上的应用.docx

上传人:b****4 文档编号:6696773 上传时间:2023-05-10 格式:DOCX 页数:12 大小:243.52KB
下载 相关 举报
MATLAB在语音信号上的应用.docx_第1页
第1页 / 共12页
MATLAB在语音信号上的应用.docx_第2页
第2页 / 共12页
MATLAB在语音信号上的应用.docx_第3页
第3页 / 共12页
MATLAB在语音信号上的应用.docx_第4页
第4页 / 共12页
MATLAB在语音信号上的应用.docx_第5页
第5页 / 共12页
MATLAB在语音信号上的应用.docx_第6页
第6页 / 共12页
MATLAB在语音信号上的应用.docx_第7页
第7页 / 共12页
MATLAB在语音信号上的应用.docx_第8页
第8页 / 共12页
MATLAB在语音信号上的应用.docx_第9页
第9页 / 共12页
MATLAB在语音信号上的应用.docx_第10页
第10页 / 共12页
MATLAB在语音信号上的应用.docx_第11页
第11页 / 共12页
MATLAB在语音信号上的应用.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

MATLAB在语音信号上的应用.docx

《MATLAB在语音信号上的应用.docx》由会员分享,可在线阅读,更多相关《MATLAB在语音信号上的应用.docx(12页珍藏版)》请在冰点文库上搜索。

MATLAB在语音信号上的应用.docx

MATLAB在语音信号上的应用

《MATLAB语言》课程论文

 

MATLAB在语音信号上的应用

 

姓名:

王书强

学号:

12010245241

专业:

通信工程

班级:

通信工程

指导老师:

汤全武

学院:

物理电气信息学院

完成日期:

2011.12.20

基于Matlab的语音信号上的处理

(王书强120102452412010级通信工程班)

 [摘要]制一段语音信号,利用matlab,对其进行频谱分析,然后,给原始语音信号加噪声,画出加噪声后的语音信号进行频谱分析,并用窗函数设计FIR数字滤波器对信号进行滤波;最后,对语音信号进行回访,并与滤波前的语音信号进行对比。

[关键词]窗函数;FIR数字滤波器;matlab关键字

一、课题目的

 1.通过课下的自我的学习,加深对书本理论知识的理解,提升自身的实际应用能力;

 2.巩固所学的数字信号处理理论知识,使自身对信号的采集、处理、传输、显示和存储等有一个系统的掌握和理解;

 3.培养自我学习的能力和对相关课程的兴趣;

二、课题内容

     录制一段个人自己的语音信号,并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;给定滤波器的性能指标,采用窗函数法和双线性变换设计滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号;最后,设计一个信号处理系统界面。

三、语音信号的采集与分析

1、语音信号的采集

在将语音信号进行数字化前,必须先进行防混叠预滤波,预滤波的目的有两个:

抑制输入信导各领域分量中频率超出fs/2的所有分量(fs为采样频率),以防止混叠干扰。

抑制50Hz的电源工频干扰。

这样,预滤波器必须是一个带通滤波器,设其上、下截止颜率分别是fH和fL,则对于绝大多数语音编译码器,fH=3400Hz、fL=60~100Hz、采样率为fs=8kHz;而对语音识别而言,当用于电话用户时,指标与语音编译码器相同。

当使用要求较高或很高的场合时fH=4500Hz或8000Hz、fL=60Hz、fs=10kHz或20kHz。

为了将原始模拟语音信号变为数字信号,必须经过采样和量化两个步骤,从而得到时间和幅度上均为离散的数字语音信号。

采样也称抽样,是信号在时间上的离散化,即按照一定时间间隔△t在模拟信号x(t)上逐点采取其瞬时值。

采样时必须要注意满足奈奎斯特定理,即采样频率fs必须以高于受测信号的最高频率两倍以上的速度进行取样,才能正确地重建波它是通过采样脉冲和模拟信号相乘来实现的。

在采样的过程中应注意采样间隔的选择和信号混淆:

对模拟信号采样首先要确定采样间隔。

如何合理选择△t涉及到许多需要考虑的技术因素。

一般而言,采样频率越高,采样点数就越密,所得离散信号就越逼近于原信号。

但过高的采样频率并不可取,对固定长度(T)的信号,采集到过大的数据量(N=T/△t),给计算机增加不必要的计算工作量和存储空间;若数据量(N)限定,则采样时间过短,会导致一些数据信息被排斥在外。

采样频率过低,采样点间隔过远,则离散信号不足以反映原有信号波形特征,无法使信号复原,造成信号混淆。

根据采样定理,当采样频率大于信号的两倍带宽时,采样过程不会丢失信息,利用理想滤波器可从采样信号中不失真地重构原始信号波形。

量化是对幅值进行离散化,即将振动幅值用二进制量化电平来表示。

量化电平按级数变化,实际的振动值是连续的物理量。

具体振值用舍入法归到靠近的量化电平上。

 在实际工作中,我们可以利用windows自带的录音机录制语音文件,图1是基于PC机的语音信号采集过程,声卡可以完成语音波形的A/D转换,获得WAVE文件,为后续的处理储备原材料。

调节录音机保存界面的“更改”选项,可以存储各种格式的WAVE文件。

图1基于PC机的语音信号采集过程

采集到语音信号之后,需要对语音信号进行分析,如语音信号的时域分析、频谱分析、语谱图分析以及加噪滤波等处理。

2、语音信号的时域分析

语音信号的时域分析就是分析和提取语音信号的时域参数。

进行语音分析时,最先接触到并且也是最析通常用于最基本的参数分析及应用,如语音的分割、预处理、大分类等。

这种分析方法的特点是:

表示语音信号比较直观、物理意义明确。

实现起来比较简单、运算且少。

可以得到语音的一些直观的是它的时域波形。

语音信号本身就是时域信号,因而时域分析是最早使用,也是应用最广泛的一种分析方法,这种方法直接利用语音信号的时域波形。

时域分重要的参数。

④只使用示波器等通用设备,使用较为简单等。

语音信号的时域参数有短时能量、短时过零率、短时白相关函数和短时平均幅度差函数等,这是语音信号的一组最基本的短时参数,在各种语音信号数字处理技术中都要应用。

在计算这些参数时使用的一般是方窗或汉明窗。

1)、短时能量及短时平均幅度分析

设语音波形时域信号为x(l)、加密分帧处理后得到的第n帧语音信号为Xn(m),则Xn(m)满足下式:

(1)

(2)

其中,n=0,1T,2T,…,并且N为帧长,T为帧移长度。

设第n帧语音信号Xn(m)的短时能量用En表示,则其计算公式如下:

(3)

En是一个度量语音信号幅度值变化的函数,但它有一个缺陷,即它对高电平非常敏感(因为它计算时用的是信号的平方)。

为此可采用另一个度量语音信号幅度值变化的函数.即短时平均幅度函数Mn,它定义为:

(4)

Mn也是一度量语音信号能量大小的表征,它与En的区别在于计算时小取样值和大取样值不会因取平方而造成较大差异,在某些应用领域会带来一些好处。

短时能量和短时平均幅度函数的主要用途有:

①可以区分浊音段与清音段,因为浊音时En值比清音时大的多。

可以用来区分声母与韵母的分界,无声与有卢的分界,连字(指字之间无间隙)的分界等。

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

2)、短时过零率分析

短时过零率表示一帧语音中语音信号波形穿过横轴(零电平)的次数。

过零分析是语音时域分析中最简单的一种。

对于连续语音信号,过零即意味着时域波形通过时间轴;而对于离散信号,如果相邻的取样值改变符号则称为过零。

过零率就是样本改变符号的次数。

定义语音信号Xn(m)的短时过零率Zn为:

(5)

式中,sgn[]是符号函数,即:

(6)

在实际中求过零率参数时,需要十分注意的一个问题是如果输入信号中包含有50Hz的工频干扰或者A/D变换器的工作点有偏移(这等效于输入信号有直流偏移),往往会使计算的过零率参数很不准确。

为了解决前一个问题,A/D变换器前的防混叠带通滤波器的低端截频应高于50Hz,以有效地抑制电源干扰。

对于后一个问题除了可以采用低直流漂移器件外,也可以在软件上加以解决,这就是算出每一帧的直流分量并予以滤除。

对语音信号进行分析,发现发浊音时,尽管声道有若干个共振峰,但由于声门波引起谱的高频跌落,所以其话音能量约集中在3kHz以下。

而发清音时,多数能量出现在较高频率上。

高频就意味着高的平均过零率,低频意味着低的平均过零率,所以可以认为浊音时具有较低的过零率,而清音时具有较高的过零率。

当然,这种高低仅是相对而言,并没方精确的数值关系。

利用短时平均过零率还可以从背景噪声中找出语音信号,可用于判断寂静无声段和有声段的起点和终点位置。

在孤立词的语音识别中,必须要在一连串连续的语音信号中进行适当分割,用以确定一个一个单词的语音信号,即找出每一个单词的开始和终止位置,这在语音处理中是一个基本问题。

此时,在背景噪声较小时用平均能量识别较为有效,而在背景噪声较大时用平均过零率识别较为有效。

但是研究表明,在以某些音为开始或结尾时.如当弱摩擦音(如[f]、[h]等音素)、弱燃破音(如[p]、[t]、[k]等音素)为语音的开头或结尾;以鼻音(如[n]、[m]等音素)为语音的结尾时.只用其中一个参量来判别语音的起点和终点是有困难的,必须同时使用这两个参数。

3、语音信号的频域分析

语音信号的频域分析就是分析语音信号的频域持征。

从广义上讲,语音信号的频域分析包括语音信号的频谱、功率谱、倒频谱、频谱包络分析等,而常用的频域分析方法有带通滤波器组法、傅里叶变换法、线件预测法等几种。

本文介绍的是语音信号的傅里叶分析法。

因为语音波是一个非平稳过程,因此适用于周期、瞬变或平稳随机信号的标准傅里叶变换不能用来直接表示语音信号,而应该用短时傅里叶变换对语音信号的频谱进行分析,相应的频谱称为“短时谱”

1)、利用短时博里叶变换求语音的短时谱

对第n帧语音信号Xn(m)进行傅里叶变换(离散时域傅里叶变换,DTFT),可得到短时傅里叶变换,其定义如下:

(7)

由定义可知,短时傅里叶变换实际就是窗选语音信号的标准傅里叶变换。

这里,窗w(n-m)是一个“滑动的”窗口,它随n的变化而沿着序列X(n)滑动。

由于窗口是有限长度的,满足绝对可和条件,所以这个变换是存在的。

当然窗口函数不同,博里叶变换的结果也将不同。

我们还可以将式(3—7)写成另一种形式。

设语音信号序列和窗口序列的标准傅早叶变换均存在。

当n取固定值时,w(n-m)的傅里叶变换为:

(8)

根据卷积定理,有:

(9)

因为上式右边两个卷积项均为关于角频率w的以2π为周期的连续函数,所以也可将其写成以下的卷积积分形式:

(10)

即,假设x(m)的DTFT是

,且

的DTFT是

,那么

的的周期卷积。

根据信号的时宽带宽积为一常数这一基本性质,可知

主瓣宽度与窗口宽度成反比,N越大,

的主瓣越窄。

由式(2-10)可知,为了使

忠实再现

的特性.

相对于

来说必须是—个冲激函数。

所以为了使

,需

;但是N值太大时,倍号的分帧又失去了意义。

尤其是N大于语音的音素长度时,

已不能反映该语音音素的频谱了。

因此.应折衷选择窗的宽度N。

另外,窗的形状也对短时博氏频谱有影响,如矩形窗,虽然频率分辨率很高(即主辩狭窄尖锐),但由于第一旁瓣的衰减很小,有较大的上下冲,采用矩形窗时求得的

的偏差较大,这就是Gibbs效应,所以不适合用于频谱成分很宽的语音分析中。

而汉明窗在频率范围中的分辨率较高,而且旁辩的衰减大,具有频谱泄漏少的优点.所以在求短时频谱时一船采用具有较小上下冲的汉明窗。

与离散傅里叶变换和连续博里叶变换的关系一样,如令角频率w=2πk/N,则得离散的短时博里叶变换(DFT).它实际上是

在频域的取样,如下所示:

(11)

在语音信号数字处理中,都是采用

的离散博里叶变换(DFT)

来替代

并且可以用高效的快速傅里叶变换(FFT)算法完成由

的转换。

当然,这时窗长N必须是2的倍数

(L是整数)。

根据傅里叶变换的性质,实数序列的傅里叶变换的频谱具有对称性,因此,全部频谱信息包含在长度为N/2+1个

里。

另外,为了使

具有较高的频率分辨率,所取的DFT以及相应的FFT点数

应该足够多,但有时

的长度N要受到采样率和短时性的限制,例如,在通常采样率为8kHz且帧长为20ms时,N=160。

一般取256、512或1024,为了将

的点数从N扩大力

,可以采用补0的办法,在扩大的部分添若干个0取样值,然后再对添0后的序列进行FFT。

例如、在10kHz的范围内采样求频谱,并要求频率分辨率在30Hz以下。

由10k

/

<30,得

>333,所以

要取比333大的值,这时可取

=

=512点,不足的部分采用补0的办法解决,此时频率分辨率(即频率间隔)为10Hz/512=19.53Hz,采样后的该帧信号频率处在0~2x19.53Hz之间,因此,原连续信号频率就处在0~

之间(即

),所以我们要在0~

频率范围内求其频谱。

FFT的计算可以在通用计算机上由相应的算法软件来完成,这种方式一般只能实现非实时运算。

为了完成实时运算可以采用先进的数字信号处理芯片、阵列处理芯片或专用FFT芯片。

为了完成1024点的万FFT,这些专用芯片所需的运算时间是几十毫秒至儿毫秒,甚至可以降至1ms以下。

在语音信号数字处理中,功率谱具有重要意义,在一些语音应用系统中.往往都是利用语音信号的功率谱。

根据功率谱定义,可以写出短时功率谱与短时傅里叶变换之间的关系:

(12)

或者:

(13)

式中*表示复共轭运算。

并且功率谱

是短时自相关函数

的傅里叶变换。

(14)

四、语音信号的综合仿真分析

在MATLAB下采集Windows自带的“WindowsXP关机.wav”语音信号,并画出采样后语音信号的时域波形和频谱如图2:

fs=22050;%语音信号采样频率为22050

[fname,pname]=uigetfile('C:

\WINDOWS\Media\WindowsXP关机.wav');

file=[pname,fname];

[x1,fs,bits]=wavread(file);%读入声音文件(*.wav)

Y=fft(x1,4096);%对信号做4096点FFT变换

figure

(1);

subplot(211);plot(x1);title('原始信号波形');

subplot(212);plot(abs(Y));title('原始信号频谱');

图2原始语音信号

设计数字滤波器和画出频率响应:

根据语音信号的特点给出有关滤波器的性能指标,低通滤波器性能指标:

fp=1000Hz,fc=1200Hz,As=100dB,Ap=1dB,Fs=8000;

用双线性变换法设计的butterworth低通滤波器的程序如下

fp=1000;fc=1200;As=100;Ap=1;Fs=8000;

wc=2*fc/Fs;wp=2*fp/Fs;

[N,ws]=buttord(wc,wp,Ap,As,'s');

[b,a]=butter(N,ws,'s');

[num1,den1]=bilinear(b,a,0.5);

figure

(1);

freqz(num1,den1);

滤波器的频率响应如图3:

图3滤波器的频率响应

进行低通滤波,比较滤波前后语音信号的波形及频谱如图4:

fs=22050;%语音信号采样频率为22050

[fname,pname]=uigetfile('C:

\WINDOWS\Media\WindowsXP关机.wav');

file=[pname,fname];

[x1,fs,bits]=wavread(file);%读入声音文件(*.wav)

sound(x1,fs,bits);

Y=fft(x1,4096);%对信号做4096点FFT变换

fp=1000;fc=1200;As=100;Ap=1;Fs=8000;%低通滤波器滤波

wc=2*fc/Fs;wp=2*fp/Fs;

[N,ws]=buttord(wc,wp,Ap,As,'s');%求低通滤波器的阶数和截止频率

[b,a]=butter(N,ws,'s');%求S域的频率响应的参数

[num1,den1]=bilinear(b,a,0.5);%利用双线性变换实现频率响应S域到Z域的变换

figure

(1);

freqz(num1,den1,512,Fs);

x=filter(num1,den1,x1);

X=fft(x,4096);

sound(x);%回放低通滤波器后的声音

figure

(2);

subplot(2,2,1);plot(x1);title('滤波前信号波形');

subplot(2,2,2);plot(abs(Y));title('滤波前信号频谱');

subplot(2,2,3);plot(x);title('滤波后信号波形');

subplot(2,2,4);plot(abs(X));title('滤波后信号频谱');

图4滤波前后波形比较

五、结论

我们在查阅了很多资料,在网上也查阅相关信息,花费了大量时间也没找出结果,最后发现在WAV格式的语音文件有两种格式,即PCM格式和IMA ADPCM格式,而在MATLAB中用wavread函数进行语音处理时,并不能直接处理IMAADPCM格式的语音信号,经过格式转换之后(选择PCM格式),我们运行出了正确的结果。

   实验过程中,我们很清楚的感觉到初始语音信号和滤波输出后的语音信号在音色上有一定的差别,这说明了信号在处理、传输过程中有损耗。

另外,在设计滤波器的过程中我们采用的是双线性变化法,事实上,采用窗函数法也可以进行,因此,不管对于多么简单的课题,其实也是有很多东西可以发掘的,这需要我们在平时多积累,多思考,只有这样,才能取得更大的进步,才能学有所用,学有所长。

六、课程体会

这次课程设计,给我留下了很深的印象。

虽然只是短暂的一周,但在这期间,却让我受益匪浅。

通过这次课程设计,使我对语音信号有了全面的认识,对数字信号处理的知识又有了深刻的理解,在之前数字信号与处理的学习以及完成课后的作业的过程中,已经使用过MATLAB,对其有了一些基础的了解和认识。

通过这次练习是我进一步了解了信号的产生、采样及频谱分析的方法。

以及其中产生信号和绘制信号的基本命令和一些基础编程语言。

让我感受到只有在了解课本知识的前提下,才能更好的应用这个工具;并且熟练的应用MATLAB也可以很好的加深我对课程的理解,方便我的思维。

这次设计使我了解了MATLAB的使用方法,学会分析滤波器的优劣和性能,提高了分析和动手实践能力。

同时我相信,进一步加强对MATLAB的学习与研究对我今后的学习将会起到很大的帮助。

一周的课程设计虽然结束了,但是在这期间所学的知识和老师的指导却让我难以忘记。

[参考文献]

[1]刘卫国.MATLAB程序设计与应用(第二版)[M].北京:

高等教育出版社,2006.

[2]张文.基于MATLAB的语音信号的滤波域实现【M】.山西电子技术.2008.

[3]徐靖涛.基于MATLAB的语音信号分析与处理【M】.重庆科技学院学报.2008.

[4]张威.MATLAB基础与编程入门【M】.西安电子科技大学出版社,2006.

[5]周渊,王炳和,刘斌胜.基于MATLAB的噪声信号采集和分析系统的设计【J】.噪声控制.2004(7):

52-54.

[6]朱学芳,徐建平.计算机语音信号处理与语音识别系统【J】.南京邮电学院学报,1998,18(5—6):

113—11

[7]张雄伟,陈量,杨吉斌.现代语音处理技术及应用【M】.北京:

机械工业出版社.2003

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

当前位置:首页 > 工程科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2