自基于MATLAB的语音信号采集和窗函数法滤波.docx
《自基于MATLAB的语音信号采集和窗函数法滤波.docx》由会员分享,可在线阅读,更多相关《自基于MATLAB的语音信号采集和窗函数法滤波.docx(16页珍藏版)》请在冰豆网上搜索。
自基于MATLAB的语音信号采集和窗函数法滤波
摘要…………………………………………………………………………I
1MATLAB程序设计的基本方法………………………………………1
2 数字信号处理的基本理论与方法…………………………………2
2.1设计理论依据……………………………………………… 2
2.1.1采样定理…………………………………………………2
2.1.2采样频率…………………………………………………3
2.1.3 采样位数与采样频率……………………………………3
3 利用MATLAB采集语言信号并分析…………………………………4
3.1语音的录入与打开…………………………………………4
3.2 时域信号的FFT分析…………………………………………4
3.3程序设计源代码………………………………………………5
4用MATLAB环境采用窗函数法设计数字滤波器………………… 8
4.1数字滤波器的设计过程………………………………………8
4.2 利用窗函数法设计线性相位FIR数字滤波器………………8
4.2.1 常见窗函数…………………………………………… 8
4.2.2MATLAB窗函数的实现………………………………… 10
4.3 利用hanning窗设计低通滤波器……………………………11
5根据所设计的低通滤波器对语音信号进行处理并分析…………14
6 心得体会…………………………………………………………… 16
参考文献…………………………………………………………………17
1MATLAB程序设计的基本方法
MATLAB是矩阵实验室(MatrixLaboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
MATLAB和Mathematica、Maple并称为三大数学软件。
它在数学类科技应用软件中在数值计算方面首屈一指。
MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB产品族可以用来进行以下各种工作:
●数值分析
●数值和符号计算
● 工程与科学绘图
●控制系统的设计与仿真
●数字图像处理技术
● 数字信号处理技术
●通讯系统设计与仿真
●财务与金融工程
2数字信号处理的基本理论与方法
2.1 设计理论依据
图1原理示意图
2.1.1采样定理
在进行模拟/数字信号的转换过程中,当采样频率fs.max大于信号中,最高频率fmax的2倍时,即:
fs.max>=2fmax,则采样之后的数字信号完整地保留了原始信号中的信息,一般实际应用中保证采样频率为信号最高频率的5~10倍;采样定理又称奈奎斯特定理:
理想低通信道的最高大码元传输速率=2W*log2N(其中W是理想低通信道的带宽,N是电平强度)
2.1.2采样频率
采样频率(也称为采样速度或者采样率)定义了每秒从连续信号中提取并组成离散信号的采样个数,它用赫兹(Hz)来表示。
采样频率的倒数是采样周期或者叫作采样时间,它是采样之间的时间间隔。
采样频率只能用于周期性采样的采样器,对于非周期性采样的采样器没有规则限制。
采样频率的常用的表示符号是f_s。
2.1.3采样位数与采样频率
采样位数可以理解为声卡处理声音的解析度。
这个数值越大,解析度就越高,录制和回放的声音就越真实。
电脑中的声音文件是用数字0和1来表示的,所以在电脑上录音的本质就是把模拟声音信号转换成数字信号。
反之,在播放时则是把数字信号还原成模拟声音信号输出。
采样频率是指录音设备在一秒钟内对声音信号的采样次数,采样频率越高声音的还原就越真实越自然。
采样位数和采样频率对于音频接口来说是最为重要的两个指标,也是选择音频接口的两个重要标准。
无论采样频率如何,理论上来说采样的位数决定了音频数据最大的力度范围。
每增加一个采样位数相当于力度范围增加了6dB。
采样位数越多则捕捉到的信号越精确。
采样率越高,计算机摄取的图片越多,对于原始音频的还原也越加精确。
3利用MATLAB采集语言信号并分析
3.1语音的录入与打开
利用MATLAB中的wavread命令来读入(采集)语音信号,将它赋值给某一向量。
再将该向量看作一个普通的信号,对其进行FFT变换实现频谱分析,再依据实际情况对它进行滤波。
对于波形图与频谱图(包括滤波前后的对比图)都可以用MATLAB画出。
我们还可以通过sound命令来对语音信号进行回放,以便在听觉上来感受声音的变化。
[y,fs,bits]=wavread('Blip',[N1 N2]),用于读取语音,采样值放在向量y中,fs表示采样频率(Hz),bits表示采样位数。
[N1N2]表示读取从N1点到N2点的值(若只有一个N的点则表示读取前N点的采样值)。
sound(x,fs,bits);用于对声音的回放。
向量y则就代表了一个信号(也即一个复杂的“函数表达式”)也就是说可以像处理一个信号表达式一样处理这个声音信号。
3.2 时域信号的FFT分析
函数的一种调用格式为:
y=fft(x)
其中,x是序列,y是序列的FFT,x可以为一向量或矩阵,若x为一向量,y是x的FFT。
且和x相同长度。
若x为一矩阵,则y是对矩阵的每一列向量进行FFT。
如果x长度是2的幂次方,函数fft执行高速基-2FFT算法;否则fft执行一种混合基的离散傅立叶变换算法,计算速度较慢。
函数FFT的另一种调用格式为:
y=fft(x,N)
式中,x,y意义同前,N为正整数。
函数执行N点的FFT。
若x为向量且长度小于N,则函数将x补零至长度N。
若向量x的长度大于N,则函数截短x使之长度为N。
若x为矩阵,按相同方法对x进行处理。
经函数fft求得的序列y一般是复序列,通常要求其幅值和相位。
MATLAB提供求复数的幅值和相位函数:
abs,angle,这些函数一般和FFT同时使用。
3.3程序设计源代码
fs=8000;
x1=wavread('C:
\WINDOWS\Media\WindowsXP关机.wav');
t=(0:
length(x1)-1)/8000;
figure(1)
plot(t,x1)
gridon;axistight;
title('原始语音信号');
xlabel('时间(s)');
ylabel('幅度');
figure
(2)
plot(abs(fft(x1,40480)));
gridon;axistight;
title('原始语音信号FFT频谱')
xlabel('Hz');
ylabel('幅度');
图2 原始语音信号时域波形
图3原始语音信号频谱图
4用MATLAB环境采用窗函数法设计数字滤波器
数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域滤波的目的。
根据其单位冲激响应函数的时域特性可分为两类:
无限冲激响应(IIR)滤波器和有限冲激响应(FIR)滤波器。
与IIR滤波器相比,FIR的实现是非递归的,总是稳定的;更重要的是,FIR滤波器在满足幅频响应要求的同时,可以获得严格的线性相位特性。
因此,它在高保真的信号处理,如数字音频、图像处理、数据传输、生物医学等领域得到广泛应用。
4.1数字滤波器设计的过程
不论是IIR滤波器还是FIR滤波器的设计都包括三步:
(1)按照实际任务的要求,确定滤波器的性能指标。
(2) 用一个因果、稳定的离散线性时不变系统的系统函数去逼近这一性能指标。
根据不同的要求可以用IIR系统函数,也可以用FIR系统函数去逼近。
(3)利用有限精度算法实现系统函数,包括结构选择、字长选择等。
4.2利用窗函数法设计线性相位FIR数字滤波器
ﻩ4.2.1常用窗函数
(l)矩形窗
矩形窗使用最多,习惯上不加窗就是使信号通过了矩形窗。
这种窗的优点是主瓣比较集中,缺点是旁瓣较高,并有负旁瓣,导致变换中带进了高频干扰和泄漏,甚至出现负谱现象。
(2) 三角窗
三角窗亦称费杰(Fejer)窗,是幂窗的一次方形式,三角窗与矩形窗比较,主瓣宽约等于矩形窗的两倍,但旁瓣小,而且无负旁瓣
(3)汉宁窗
汉宁(Hanning)窗又称升余弦窗,汉宁窗可以看作是3个矩形时间窗的频谱之和,它可以使用旁瓣互相抵消,消去高频干扰和漏能。
汉宁窗与矩形窗的谱图对比,可以看出,汉宁窗主瓣加宽(第一个零点在2π/T处)并降低,旁瓣则显著减小。
第一个旁瓣衰减一32dB,而矩形窗第一个旁瓣衰减-13dB。
此外,汉宁窗的旁瓣衰减速度也较快,约为60dB/(10oct),而矩形窗为20dB/(10oct)。
由以上比较可知,从减小泄漏观点出发,汉宁窗优于矩形窗。
但汉宁窗主瓣加宽,相当于分析带宽加宽,频率分辨力下降。
(4)海明窗
海明(Hamming)窗也是余弦窗的一种,又称改进的升余弦窗,海明窗与汉宁窗都是余弦窗,只是加权系数不同。
海明窗加权的系数能使旁瓣达到更小。
分析表明,海明窗的第一旁瓣衰减为-42dB。
海明窗的频谱也是由 3个矩形时窗的频谱合成,但其旁瓣衰减速度为20dB/(10oct),这比汉宁窗衰减速度慢。
海明窗与汉宁窗都是很有用的窗函数。
除了以上几种常用窗函数以外,尚有多种窗函数,如平顶窗、帕仁(Parzen)窗、布拉克曼(Blackman)窗、凯塞(kaiser)窗等。
对于窗函数的选择,应考虑被分析信号的性质与处理要求。
如果仅要求精确读出主瓣频率,而不考虑幅值精度,则可选用主瓣宽度比较窄而便于分辨的矩形窗,例如测量物体的自振频率等;如果分析窄带信号,且有较强的干扰噪声,则应选用旁瓣幅度小的窗函数,如汉宁窗、三角窗等;对于随时间按指数衰减的函数,可采用指数窗来提高信噪比。
4.2.2MATLAB窗函数的实现
利用MATLAB实现窗函数法设计FIR滤波器,主要是选择合适的窗函数进行截断运算。
先从理论上得到待逼近理想滤波器的单位脉冲响应,再由通带、阻带衰减指标确定窗函数类型,由过渡带确定FIR滤波器阶数M,最后利用MATLAB计算出窗函数的值,以及hd[k]Wn[k]的值,由此即得所设计的FIR滤波器的h[k]。
MATLAB提供了许多常用的窗函数,其中部分窗函数的调用形式为
ﻩﻩﻩﻩﻩW=hanning(N)
ﻩﻩW=hamming(N)
ﻩW=Blackman(N)
ﻩﻩﻩﻩW=Kaiser(N,beta)
其中N是窗函数的长度,beta是控制kaiser窗形状的参数。
返回的变量w是一个长度为N的列向量,给出窗函数N点的取值。
对于kaiser窗,MATLAB还提供了一个根据带设计滤波器的指标直接计算窗函数的函数,其基本调用形式为
ﻩ[M,Wc,beta,ftype]=kaiserord(f,a,dev)
其中:
参数f表示需要设计的FIR滤波器的B个频带;参数a为B个频带的幅度值,一个通带取1,阻带取0;参数dev为B个频带中的波动值。
4.3利用hanning窗设计低通滤波器
由题意可知:
要设计滤波器滤除信号的高频成分,即设计低通滤波器。
故确定设计的低通滤波器的设计指标为:
Wp=0.3*pi,Ws=0.5*pi
程序如下:
fs=8000;
x1=wavread('C:
\WINDOWS\Media\WindowsXP 关机.wav');
t=(0:
length(x1)-1)/8000;
f=fs*(0:
2047)/4096;
A1=0.05;A2=0.10;
d=[A1*cos(2*pi*3600*t)+A2*sin(2*pi*3800*t)]';
x2=x1+[dd];
wp=0.3*pi;
ws=0.5*pi;
wdelta=ws-wp;
N=ceil(6.6*pi/wdelta);%取整
wn=(0.3+0.5)*pi/2;
[bz,az]=fir1(N,wn/pi,hanning(N+1));%选择窗函数并归一化截止频率
figure(1)
freqz(bz,az);
grid on;axistight;
f2=filter(bz,az,x2);
figure
(2)
subplot(2,1,1)
plot(t,x2);
grid on;axistight;
title('滤波前的时域波形');
subplot(2,1,2)
plot(t,f2);
grid on;axistight;
title('滤波后的时域波形');
y3=fft(f2,4096);
f=fs*(0:
2047)/4096;
figure(3)
y2=fft(x2,4096);
subplot(2,1,1);
plot(f,abs(y2(1:
2048)));
gridon;axistight;
title('滤波前的频谱')
xlabel('Hz');
ylabel('幅度');
subplot(2,1,2)
plot(f,abs(y3(1:
2048)));
grid on;axistight;
title('滤波后的频谱')
xlabel('Hz');
ylabel('幅度');
sound(f2,8000);%回放声音
图3 滤波前后增益响应
5根据所设计的低通滤波器对语音信号进行处理并分析
图4滤波前后时域波形图
ﻩ
通过对上图比较可得出设计的低通滤波器滤除了声音信号的高频成分,只剩下了低频成分。
图5滤波前后频谱图
ﻩ由图5滤波前后对比的频谱图可知,高频成分的频谱幅度接近0,即滤除了高频成分。
参考文献
1、陈怀琛.MATLAB及在电子信息课程中的应用[M].北京:
电子工业出版社.2008,1
2、陈后金.数字信号处理(第二版).高等教育出版社.2008,3
3、张文.基于MATLAB的语音信号的滤波与实现[J].山西电子技术.2008,2
4、徐靖涛.基于MATLAB的语音信号分析与处理[J].重庆科技学院学报2心得体会
语音信号处理是语音学与数字信号处理技术相结合的交叉学科,课题在这里不讨论语音学,而是将语音当做一种特殊的信号,即一种“复杂向量”来看待。
也就是说,课题更多的还是体现了数字信号处理技术。
课题的特色在于它将语音看作了一个向量,于是语音数字化了,则可以完全利用数字信号处理的知识来解决。
我们可以像给一般信号做频谱分析一样,来给语音信号做频谱分析,也可以较容易的用数字滤波器来对语音进行滤波处理。
经过一个星期的课程设计,过程曲折可谓一语难尽,感想颇多。
在此期间我们也失落过,也曾一度热情高涨。
从开始时满富盛激情到最后汗水背后的复杂心情,点点滴滴无不令我回味无长。
设计确实有些辛苦,但苦中也有乐,在如今单一的理论学习中,很少有机会能有实践的机会,但我们可以,而且设计也是一个团队的任务,一起的工作可以让我们有说有笑,相互帮助,配合默契,多少人间欢乐在这里洒下,经过这几天的合作,我感觉我和同学们之间的距离更加近了;我想说,确实很累,但当我们看到自己所做的成果时,心中也不免产生兴奋。
同时我认为我们的工作是一个团队的工作,团队需要个人,个人也离不开团队,必须发扬团结协作的精神。
团结协作是我们实习成功的一项非常重要的保证。
而这次实习也正好锻炼我们这一点,这也是非常宝贵的。
对我们而言,知识上的收获重要,精神上的丰收更加可喜。
挫折是一份财富,经历是一份拥有。
这次实习必将成为我人生旅途上一个非常美好的回忆!
通过这次课程设计,加强了我们动手、思考和解决问题的能力。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
这次课程设计终于顺利完成了,在设计中遇到了很多专业知识问题,最后在老师的辛勤指导下,终于迎刃而解,我们学也到很多实用的知识,学到了很多课内学不到的东西,比如独立思考解决问题,出现差错的随机应变,和与人合作共同提高,都受益非浅。
在此,感谢老师的细心指导!
在中国的南海
008,1