声音的采集和分析_第1页
声音的采集和分析_第2页
声音的采集和分析_第3页
声音的采集和分析_第4页
声音的采集和分析_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

叮叮小文库1.摘要MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。本次设计利用Matlab设计实现语音信号采集处理软件,通过MIC实时录制并分析语音信号,包括实时显示信号波形、计算信号的频谱等,并利用MATLAB信号处理工具箱可以有效快捷地设计数字滤波器进行滤波处理。关键字:matlab 语音信号 采集和分析 波形 滤波处理2 对声音进行采集分析2.1声音的采集Matlab函数库中的analoginput()函数可以实现对模拟信号的采集,这种模拟信号可以是声音信号,电压、电流信号等。通过定义ai=analoginput(ADAPTOR),可以建立模拟信号采集的对象,其中ADAPTOR=winsound,即建立了声音信号采集的对象。 对建立的声音信号采集对象要进行声音采集的属性参数设置。ADDchannel(ai,1)设置采集声音的通道数,1表示单声道,【1 2】则表示立体声道。Set(ai,samplesrate,value)设置声音信号采集的采样频率,value的取值根据实际情况进行确定,但必须满足采样定理,通常的取值有value=8000、16000、44100等;set(ai,samplespertrigger,value)设置采集声音信号的长度;set(ai,triggertype,value)设置声音信号采集的触发方式,触发方式主要有三种:立即触发、手工触发和软件触发,软件触发有可以分为信号上升沿触发、下降沿触发等,需要根据不同的实际情况选择合适的触发方式。执行stare(ai)函数打开声音信号采集的对象,一旦满足触发条件就立即采集声音信号,函数getdata(ai)可持续进行采集声音信号的是与特征值,delete(ai)函数删除声音信号采集的对象。一次执行上面的函数就能实现对声音的采集声音采集的程序:ai=analoginput(winsound);addchannel(ai,1);ai.samplerate=8000;ai.samplespertrigger=30000;ai.triggertype=immediate;start(ai);data,time = getdata(ai);plot(data);title(shiyu);xlabel(time);ylabel(data);grid on;2.2声音信号的频谱分析将时域信号进行FFT分析,FFT即为快速傅氏变换的快速算法,它是根据离散傅氏变换的特性对离散傅里叶变换进行改进获得的。在matlab的信号处理工具箱中函数FFT和IFFT用于快速福利叶变换和逆变换。函数FFT用于序列的快速福利叶变换,其中点用的格式是y=fft(x),其中x为一向量,y是x的FFT且和x长度相同;若x为一矩阵,则y是对矩阵的每一列向量进行FFT。对声音信号进行频谱分析的程序:F=fft(data);f1=angle(data);N=length(time);w=1:N.*5/N;plot(w,abs(F);2.3对声音信号的滤波处理滤波器是一种用来消除干扰杂讯的器件,将输入或输出经过过滤而得到纯净的交流电。您可以通过基本的滤波器积木块-二阶通用滤波器传递函数,推导出最通用的滤波器类型:低通、带通、高通、帯阻和椭圆型滤波器。本次设计采用巴特沃斯IIR滤波器对声音信号进行滤波。其中:Wp表示通带截止频率;Ws表示阻带截止频率,Rp表示通带纹波系数;Rs表示阻带纹波系数;N表示滤波器最小阶数;Wn表示截止频率。b,a分别表示阶次为N+1的数字滤波器系统传递函数的分子和分母多项式系数向量;Fs为采样频率;n为在区间O Fs频率范围内选取的频率点数;f记录频率点数。n取2的幂次方,可以提高运算的速度,因为freqz函数采用基2的FFT算法。ftype=high时,为高通滤波器;ftype=bandpass时,为带通滤波器;ftype=stop时,为带阻滤波器。巴特沃斯模拟低通滤波器设计步骤:1) 根据技术指标p、p、s和s,用式(3.20)求出滤波器的阶数N。按照式(3.19),求出归一化极点pk,将pk代入式(3.18),得到归一化传输函数Ha(p)。 式(3.18) 式(3.19) 式(3.20)2) 将Ha(p)去归一化。将p=s/c代入Ha(p),得到实际的滤波器传输函数Ha(s)。如果技术指标没有给出3db截止频率c,可以按照式(3.21)或(3.22)求出。 式(3.21) 式(3.22)3) 根据如上设计的巴特沃斯模拟低通滤波器,采用脉冲响应不变法将其变成数字滤波器,步骤如下:0.1根据式(3.23)确定数字低通滤波器的数字指标,即通带截止频率p、通带衰减p、阻带截止频率s、阻带衰减s。 式(3.23)0.2将模拟低通滤波器Ha(s)从s平面转换到z平面,得到数字滤波系统函数H(z),转换公式如式(7)所示。 式(3.24)0.3为避免产生频率混叠现象,要求所设计的模拟低通带限于之间,由于实际滤波器都有一定宽度过渡带,可选择T满足公式,即认为混叠现象较小,可达到要求。4)利用在MATLAB设计IIR数字滤波器可分以下几步来实现 (1)按一定规则将数字滤波器的技术指标转换为模拟低通滤波器的技术指标。(2)根据转换后的技术指标使用滤波器阶数函数,确定滤波器的最小阶数N和截止频率Wc。(3)利用最小阶数N产生模拟低通滤波原型。(4)利用截止频率Wc把模拟低通滤波器原型转换成模拟带通原型。(5)利用脉冲响应不变法把模拟滤波器转换成数字滤波器。5)程序中涉及到的函数介绍Buttord N,wc=buttord(wp,ws,p,s) 调用参数wp,ws分别为数字滤波器的通带、阻带截止频率的归一化值,要求:0wp1,0ws1。1表示数字频率pi。文论坛 p,s分别为通带最大衰减和组带最小衰减(dB)。 当wswp时,为高通滤波器; 当wp和ws为二元矢量时,为带通或带阻滤波器,这时wc也是二元向量。 N,wc作为butter函数的调用参数。 N,Wc=buttord(Wp,Ws,Ap,As,s)用于计算巴特沃斯模拟滤波器的阶数N和3dB截止频率c。 Butter功能:利用butter函数直接设计各种形式的数字滤波器(也可以设计模拟滤波器)B,A = BUTTER(N,Wn),设计一个阶数为n,频率为Wn的低通滤波器; B,A = BUTTER(N,Wn,ftype)可以设计高通,带阻滤波器,其中ftype参数的形式可以指定何种滤波器, ftype为high时,设计一个阶数为n,频率为Wn的高通滤波器;ftype为stop时,得到滤波器阶数为2*n,频率范围为Wn = W1,W2的带阻滤波器;中文论坛 Z,P,K = BUTTER(.),若返回值是三个,则分别是滤波器的零点,极点和增益,其他函数的参数同上面 。Plot(X,Y) 功能:绘制线性二维图形当X,Y均为实数向量时,并且为维数相同,X=X(i),Y=Y(i),则plot(X,Y)先描述点(X(i),Y(i),然后依次画线; 当X,Y均为复数向量时,则不考虑虚数部分; 当X,Y均为实数矩阵时,并且为维数相同,plot依次按照对应的列画出线,矩阵有几列就有几条线; 当X,Y一个为向量,一个为矩阵时,并且向量的维数等于矩阵的行数或者列数,则把矩阵按照向量的方向分解为几个向量,在与向量配对分别画图,矩阵分解几个向量就有几条线。Grid on2维/3维绘图设置网格线grid 功能:来设置当前坐标系的网格线的开/闭。grid on 功能:对当前坐标系添加主要网格线。grid(axes_handle,.) 输入:axes_handle坐标系句柄 功能:对指定的坐标系设置网格线是否显示。与信号处理 ImpinvarD,C=impinvar(B,A,fs); %调用脉冲响应不变法Filter功能:FILTER是一维数字滤波器Y = FILTER(B,A,X) ,输入X为滤波前序列,Y为滤波结果序列,B/A 提供滤波器系数,B为分子, A为分母 整个滤波过程是通过下面差分方程实现的:a(1)*y(n) = b(1)*x(n) + b(2)*x(n-1) + . + b(nb+1)*x(n-nb)-a(2)*y(n-1) - . - a(na+1)*y(n-na)Y,Zf = FILTER(B,A,X,Zi),输入X为滤波前序列,Y为滤波结果序列,B/A 提供滤波器系数,B为分子, A为分母,并输入Zi指定X的初始状态,Zf为最终状态矢量 程序如下:Fp=1200;%阻带截止频率Fs=800;%通带截止频率Ft=8000;%采集频率As=20;Ap=1;Wp=2*pi*Fp/Ft;Ws=2*pi*Fs/Ft;Fp=2*Ft*tan(Wp/2);Fs=2*Ft*tan(Ws/2);n,wn=buttord(Wp,Ws,Ap,As,s);b,a=butter(n,wn,s);num,den=bilinear(b,a,1);h,w=freqz(num,den);bu=filter(b,a,F);figure; plot(time,bu);grid;xlabel(频率);ylabel(频率响应幅度);title(IIR滤波器);3.总程序:ai=analoginput(winsound);addchannel(ai,1);ai.samplerate=8000;ai.samplespertrigger=30000;ai.triggertype=immediate;start(ai);data,time = getdata(ai);figure;plot(data);title(shiyu);xlabel(time);ylabel(data);grid onF=fft(data);f1=angle(data);N=length(time);w=1:N.*5/N;figure;plot(w,abs(F);Fp=1200;%阻带截止频率Fs=1100;%通带截止频率Ft=8000;%采集频率As=20;Ap=1;Wp=2*pi*Fp/Ft;Ws=2*pi*Fs/Ft;Fp=2*Ft*tan(Wp/2);Fs=2*Ft*tan(Ws/2);n,wn=buttord(Wp,Ws,Ap,As,s);b,a=butter(n,wn,s);num,den=bilinear(b,a,1);h,w=freqz(num,den);bu=filter(b,a,F);figure; plot(time,bu);grid;xlabel(频率);ylabel(频率响应幅度);title(滤波器滤波);4.运行后的波形:时域图:频域图:滤波后: 5总结:语音信号处理是语音学与数字信号处理技术相结合的交叉学科,课题在这里不讨论语音学,而是将语音当做一种特殊的信号,即一种“复杂向量”来看待。这里就是把语音做为存储于计算机中的语音信号,其本身就是离散化了的向量,我们只需将这些离散的量提取出来,就可以对其进行处理了。这一过程的实现,用到了处理数字信号的强有力工具MATLAB。通过MATLAB里几个命令函数的调用,很轻易的在实际语音与数字信号的理论之间搭了一桥。6参考文献1.谢平、王娜、林洪斌等主编,信号处理原理及

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论