ImageVerifierCode 换一换
格式:DOCX , 页数:33 ,大小:349.65KB ,
资源ID:19839791      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/19839791.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(语音信号处理实验指导Word格式文档下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

语音信号处理实验指导Word格式文档下载.docx

1、首先用窗函数法或者最优化法设计高通,低通,带通,带阻滤波器,在MATLAB中,可以利用函数fir1,firls设计FIR滤波器;然后在用双线性变换法或脉冲响应法设计上面几种滤波器,在MATLAB中,可以利用函数butte、cheby1和ellip设计IIR滤波器;最后,利用MATLAB中的函数freqz画出各滤波器的频率响应。具体方法参加附件3种滤波器设计的步骤和实例。如,根据以上语音信号的特点给出有关IIR滤波器的性能指标:1)低通滤波器性能指标,fp=4500,fc=6500,Rs=100,Rp=1。(fp:通带截至频率;fc:阻带截至频率;Rs:通带波纹;Rp:阻带波纹)2)带阻滤波器性

2、能指标,fp1=4800 Hz,fp2=5200 Hz,fc1=4600 Hz,fc2=5400 Hz,Rs=30dB,Rp=1dB。(fp1 fp2:fc1 fc2:通带截至频率)程序如下:%椭圆带阻滤波器figure,wp=4800 5200*2/fs;ws=4600 5400*2/fs; %通带和阻带边界频率Rp=1;Rs=30;Nn=128; %通带波纹和阻带衰减以及绘制频率特性的数据点数NN,Wn=ellipord(wp,ws,Rp,Rs); %求取数字滤波器的最小阶数和归一化截至频率b,a=ellip(NN,Rp,Rs,Wn,stop); %设计滤波器freqz(b,a,512,f

3、s); title(椭圆带阻滤波器图 2-10 椭圆带阻滤波器的频率响应%双线性变换法设计的椭圆低通滤波器:fp=4500;fc=6500;Rs=100;fs=22050;wc=2*fc/fs;wp=2*fp/fs;n,wn=ellipord(wp,wc,Rp,Rs);b,a=ellip(n,Rp,Rs,wn);若设计FIR滤波器,要阻止5000Hz的高频信号通过,即设计如下滤波器特性,% 最优化设计法 设计带阻滤波器n=100; %滤波器阶数f= 0 4600*2/fs 4800*2/fs 5400*2/fs 5600*2/fs 1 ; %频率向量 a= 1 1 0 0 1 1 ; %振幅向

4、量b=firls(n,f,a); %采用 firls 设计滤波器h,w1=freqz(b); %计算其频率响应plot(w1/pi,abs(h); %绘制滤波器的幅频响应title(最优化法设计的带阻滤波器图 2-11 最优化法设计的带阻滤波器的幅频响应3用滤波器对信号进行滤波比较各种滤波器的性能,然后用性能好的各滤波器分别对采集的信号进行滤波。比较滤波前后语音信号的波形及频谱,要求在一个窗口同时画出滤波前后的波形及频谱。在MATLAB中,FIR滤波器利用函数fftfilt对信号进行滤波,IIR滤波器利用函数filter对信号进行滤波。xx=filter(b,a,y); %对信号y滤波XX=f

5、ftshift(fft(xx); %求经过滤波后信号的傅立叶变换图2-12 对带噪声信号滤波4、图形用户界面的设计为使编制的程序操作方便,有兴趣的同学,可以利用Matlab进行图形用户界面的设计。在所设计的系统界面上可以选择滤波器的类型,输入滤波器的参数,显示滤波器的频率响应,选择信号等。七、实验报告要求 1.按照实验指导书的格式简述实验目的,基本要求,实验内容以及实验原理。2.详细写明每一个实验的具体步骤,如何实现,在具体编程中遇到的问题以及如何解决。3.按照实验要求编程,给出详细程序实现代码,以及程序结果(图,表格等)。4.在每一步中,分析各种不同的情况所得出的结果,并进行对比,得出结论。

6、5.在本次实验报告的最后,总结本次实验的主要内容,以及所掌握的内容。实验二 语音信号处理语音信号处理综合运用了数字信号处理的理论知识,对信号进行计算及频谱分析,设计滤波器,并对含噪信号进行滤波。具体分为以下步骤:(1)语音信号的采集:利用Windows下的录音机,录制一段话音。然后在Matlab软件平台下,利用函数wavread对语音信号进行采样,播放语音信号,并绘制原始语音信号;wavread函数调用格式:y=wavread(file),读取file所规定的wav文件,返回采样值放在向量y中。y,fs,nbits=wavread(file),采样值放在向量y中,fs表示采样频率(Hz),nb

7、its表示采样位数。y=wavread(file,N),读取前N点的采样值放在向量y中。y=wavread(file,N1,N2),读取从N1点到N2点的采样值放在向量y中。降采样:利用windows下的录音机录制的音频采样率是固定的fs(=22050),可以选择以下函数实现对语音信号的降采样。y=x(1:N:length(x); %对原始信号每隔N个点取一位,即采样率变为原来的1/Ny=resample(yn,L,M); %采样率变为原来的L/M倍y=downsample(yn,N); %采样率变为原来的1/N倍改变采样率为原来的1/2倍,1/4倍,1/20倍,1/50倍,1/100倍等,分

8、别画出降采样前后的信号波形和频谱图,分析采样前后信号的变化。图 2-3 采样率为原来的1/2时的信号波形频谱图图 2-4 采样率为原来的1/10时信号波形频谱图在MATLAB中,函数sound可以对声音进行回放。其调用格式:sound(x,fs,bits);通过调用此函数,感觉采样前后声音的变化。(2)重构原信号:降采样后,信号的采样率和采样点数同时变化。如采样率变为原来的1/2,即对原始信号每隔一个点采样。如果要恢复原始信号,即信号长度和采样率须变为原来同样大小。所以,必须对降采样后信号进行插值重构。具体过程参见附件1中例子。对采样后的真实语音信号进行插值重构,滤波,恢复原始信号。画出插值前

9、后信号的波形以及频谱图,并将重构后信号与原始信号进行比较。如,对采样率降为原来1/5的降采样后信号插值重构,结果如下图所示。图2-5 采样率为原来的1/5时的波形频谱图图2-6 插值后的信号波形频谱图图2-7 低通滤波器的频率响应图图2-8 滤波后的波形频谱图调用sound函数感受插值后的声音,发现会有高频的噪声。经过低通滤波器之后,高频噪声被滤出。但是,因为之前的原始信号经过了降采样,所以插值后的效果一定不如原始声音。也可用用wavwrite函数将经过处理的语音信号保存下来,调用格式为如wavwrite(y,fs,bits,sound.wav),其中,y为所要保存的语音信号,fs为其采样率,

10、bits为采样位数,是保存的语音信号的文件名。(2)对原始信号加入噪声:对原始语音信号加入s=sin(2*pi*f*Ts*n)的噪声,采样后可知Fs = 16000,选择f = 2500,播放加入噪声信号的语音信号,并绘制噪声信号和含噪语音信号;设计频率已知的噪声信号或者用自然噪声信号加在原始语音信号上,构建带噪声信号。如对原始信号加上频率为5000的正弦波噪声信号,程序如下:x,fs,bits =wavread(sound1.wav %读取原始语音信号X=abs(fftshift(fft(x); %原始信号频谱c1=0.01*sin (2*pi*5000*k/fs); %构建频率为5000H

11、z的正弦波噪声信号yn=x+c1; %构建带噪声信号Yn=abs(fftshift(fft (yn); %求带噪声信号频谱subplot(321);plot(x);原始信号波形subplot(322);plot(-N/2:N/2-1)/length(k)*fs,X);原始信号频谱subplot(323);plot(yn);带噪声信号波形subplot(324);N/2-1)/length(k)*fs,Yn);带噪声信号频谱运行程序,结果如图2-9所示。从频谱图可以看出,原始信号频谱段集中在05000Hz之间,主要频率集中在0Hz附近的低频部分。加上噪声信号后,在5000Hz处有个幅值非常大的的

12、高频成份,即以上所加的高频正弦波噪声信号。图2-9 加噪声前后信号的波形频谱图(3)频谱分析:分别对原始语音信号,噪声信号和含噪声的语音信号进行频谱分析,并绘出各频谱图;首先画出语音信号的时域波形;然后对语音信号进行频谱分析,在MATLAB中,可以利用函数fft对信号进行快速付立叶变换,得到信号的频谱特性;从而加深对频谱特性的理解。e:sound1.wav,1024 5120); %读取1024 5120段%语音信号数据;如果不指定所读取读取语音信号数据的长度,则读取整段语音信号X=fft(x,4096); % fftshift(fft(x)N=length(x);k=0:N-1;subplo

13、t(221);plot(k,x);subplot(222);N/2-1)/N*fs,abs(X);(4)设计滤波器:计算滤波器的性能指标,设计滤波器,绘制滤波器的特性曲线;(5)滤波器滤波:用自己设计的滤波器对采集的信号进行滤波,得出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化,并回放语音信号,感觉滤波前后的声音有变化。实验三 电话拨号音的合成与识别双音多频 DTMF( Dual Tone Multi-Frequency )信号,是用两个特定的单音频率信号的组合来代表数字或功能。在 DTMF 电话机中有 16 个按键,其中 10 个数字键 0 9 , 6 个功能键 *

14、 、 # 、 A 、 B 、 C 、 D 。其中 12 个按键是我们比较熟悉的按键,另外由第 4 列确定的按键作为保留,作为功能键留为今后他用。 根据 CCITT 建议,国际上采用 697Hz 、 770Hz 、 852Hz 、 94lHz 低频群及 1209Hz 、 1336Hz 、 1477Hz 、 1633Hz 高频群。从低频群和高频群任意各抽出一种频率进行组合,共有 16 种组合,代表 16 种不同的数字键或功能,每个按键唯一地由一组行频和列频组成,如下表所示。利用 MATLAB 软件能够利用矩阵不同的基频合成 0 9 不同按键的拨号音,并能够对不同的拨号音加以正确的识别,实现由拨号音

15、解析出电话号码的过程。进一步利用MATLAB 中的图形用户界面GUI 做出简单的图形操作界面。从而实现对电话拨号音系统的简单的实验仿真。具体实现步骤如下:(1)图形电话拨号面板的制作 利用 GUI 图形用户界面设计工具制作电话拨号面板,把 DTMF 信号和电话机的键盘矩阵对应起来。其中选用我们熟悉的 10 个数字键 0 9 , 2 个功能键“ * ”、“”,另外为了仿真方便,添加信号识别键和复位键。每个按键可用 ( Push Button )添加。最终利用 GUI 图形用户界面设计工具生成的图形电话拨号面板用于拨号音的合成产生部分,如下图所示。这里将其保存为Untitle.fig文件。(2)D

16、TMF 信号的产生合成现在将对上节制作的图形电话拨号面板上的各控件单位的动作和变化进行设置,即对Untitle.m 文件进行编辑。其主要的功能是使对应的按键,按照表中的对应关系产生相应的拨号音,完成对应行频及列频的叠加输出。此外,对于图形界面的需要,还要使按键的号码数字显示在拨号显示窗口中。鉴于 CCITT 对 DTMF 信号规定的指标,这里每个数字信号取 1000 个采样点模拟按键信号,并且每两个数字之间用 100 个 0 来表示间隔来模拟静音。以便区别连续的两个按键信号。间隔的静音信号也是在按键时产生的。 以按键 0 为例,简单介绍拨号音产生的过程: 按键 0 的响应函数 function

17、 varargout = pushbutton0_Callback(h, eventdata, handles, varargin) n=1:1000; % 每个数字 1000 个采样点表示 d0=sin(0.7217*n)+sin(1.0247*n); % 对应行频列频叠加 n0=strcat(get(handles.edit1,string),0 % 获取数字号码 set(handles.edit1,n0); % 显示号码 space=zeros(1,100); %100 个 0 模拟静音信号 global NUM phone=NUM,d0;NUM=phone,space; % 存储连续的

18、拨号音信号 wavplay(d0,8192); % 产生拨号音 程序解释:NUM 为定义的全局变量,用于存储连续的拨号音( DTMF )信号,包括数字信号音以及静音信号。d0=sin(0.7217*n)+sin(1.0247*n) 中的行频与列频是由表 1 中 0 键对应的, 计算得出,已知声音取样频率 则取样后对于保留的两个功能键“ * ”、“”,按照现行键盘式拨号电话的习惯,将“ * ”作为删除键,“”作为确认键。“ * ”删除键的作用是将前面拨错的号码删除退回,表现为将显示窗口已经显示的错误号码退回一位数字,并且将连续拨号音信号的存储单元 NUM 中退回一位拨号音信号和静音信号。删除可以

19、进行连续的操作。“”确认键的作用是将前面拨过的号码进行确认保留,意味着此时连续拨号音信号的存储单元 NUM 中的信号即为最后用于识别的连续拨号音 DTMF 信号,并在显示窗口中显示“”号作为标记。删除键的响应函数 function varargout = pushbuttonback_Callback(h, eventdata, handles, varargin) n=1: num=get(handles.edit1, l=length(num); n11=strrep(num,num,num(1:l-1); %去掉末尾号码在面板上的显示 d11=sin(0.7217*n)+sin(0.92

20、73*n); set(handles.edit1,n11); global NUM L=length(NUM); NUM=NUM(1:L-1100); %删除末尾号码在拨号音信号中的存储 wavplay(d11,8192); (3)DTMF 信号的检测识别要实现电话拨号音( DTMF )信号的检测识别,可以通过直接计算付里叶变换得到输入信号的组成频率。这里采用 FFT 算法对信号进行解码分析。首先对接收到的数字信号作 FFT 分析,计算出其幅频谱,进而得到功率谱,组成输入信号的频率必定对应功率谱的峰值。对于连续的双音多频( DTMF )信号,需要把有效的数字拨号信号从静音间隔信号中分割提取出来

21、,然后再用 FFT 算法对信号进行解码分析。DTFM信号的最小周期为40ms,取采样周期为8KHz,每个周期至少采样0.04*8000=320点。DTMF解码器计算采样序列的DFT,从给定的8个基本频中找出与结果最接近的频率。DFT的长度N决定了DFT样本的位置和计算该样本所用时间直接的间隔。对8KHz的采样率,人们发现检测八个基本DTMF音调的DFT长度N的最佳值为205,表中给出N205是最接近的音调频率的DFT指标k。基本音调 (Hz)实际k67918770208522294124120931133634147738163342附件1:信号的插值重构以对一个简单正弦信号的重构为例,以10

22、倍原信号长度进行插值。clear;close all;f=10;fs=100;k=1:100;x=sin(2*pi*f*k/fs);n=10;y=zeros(1,n*length(x);y(1:n:length(y)=x;附图 2-1 信号插值前后的波形附图 2-2 信号插值前后的频谱图由上图可看出,插值后信号最大频率同样变为原来的10倍,高频部分进行了拓展(由于在原始信号中插入0的缘故),为原始频谱的周期延拓(类似采样定理)。故,只需根据以上插值后信号的频率特性,设计FIR低通滤波器进行滤波,即可得到(滤波器具体的设计方法见附录)。低频滤波器的通带为050Hz,由于1对应最大频率500Hz,

23、故,50Hz对应的转换频率为50/500=0.1,设计通带截止频率为wp为0.09, 阻带截止频率为0.11。N为滤波器阶数,理想状况下,阶数越高,滤波器效果越好。(工程中涉及到的滤波器阶数问题需另做考虑)N=100;B=firls(N,0 0.09 0.11 1,1 1 0 0);figure,plot(-N/2:N/2)/(N/2),abs(fftshift(fft(B),title(FIR低通滤波器);xx=filter(B,1,y); % 利用低通滤波器滤波subplot(211),plot(xx);滤波后信号subplot(212),plot(-n*50:n*50-1)/(n*100

24、)*n*fs,abs(fftshift(fft(xx);滤波后信号频谱附图2-3 FIR低通滤波器的频率响应附图2-4 插值后的信号经低通滤波的信号波形和频谱图附件2:信号频谱有限长序列的离散傅立叶变换(DFT)定义为逆变换为:Matlab频谱分析相关函数:(1)一维快速傅立叶变换FFT函数fft,调用格式:y=fft(x)y=fft(x,n)函数说明:fft函数用于计算矢量或矩阵的离散傅立叶变换,可通过来实现,式中。Y=fft(x)利用FFT算法计算矢量x的离散傅立叶变换,当x为矩阵时,y为矩阵x 的每一列的FFT。当x的长度为2的幂次方时,则fft采用基-2FFT算法,否则采用稍慢的混合基

25、算法。Y=fft(x,n)采用n点FFT。当x长度小于n 时,fft函数在x尾部补零.。当x长度大于n时,函数将序列截断.(2)一维逆快速傅立叶变换(IFFT)ifft,调用格式:Y=ifft(x)Y=ifft(x,n)ifft函数用于计算矢量或矩阵的逆傅立叶变换,即式中,(3)fft函数最通常的应用是计算信号的频谱。考虑由一个50Hz和120Hz正弦信号构成的信号,受零均值随机信号的干扰,数据采样率为1000Hz。通过fft函数来分析其信号频率成分。相关程序如下:t=0:0.001:0.6;x=sin(2*pi*50*t)+sin(2*pi*120*t);y=x+1.5*randn(1,le

26、ngth(t);Y=fft(y,512);附件3:滤波器设计一、IIR数字滤波器设计1、经典设计法:主要有两种方法:脉冲响应不变法、双线性变换法经典设计IIR滤波器的步骤:A根据给定的性能指标和方法,首先对设计性能指标中的频率指标进行转换,转换后的频率指标作为模拟滤波器原型设计指标;B估计模拟滤波器最小阶数和边界频率,可利用Matlab工具函数buttord,cheb1ord等;如,设计buttord滤波器的调用格式:n,Wn=buttord(Wp,Ws,Rp,Rs)n,Wn=buttord(Wp,Ws,Rp,Rs,s)buttord可在给定滤波器性能的情况下,选择模拟或数字滤波器的最小阶数,其中,Wp和Ws分别是通带和阻带的截止频率,取值范围为0Wp(或Ws)1,其值为1时表示0。fs为采样频率,Rp和Rs分别是通带和阻带区的波纹系数。C设计模拟低通滤波器原型,可利用buttap,cheblap等;D由模拟低通原型经频率变换得到模拟滤波器(低通,高通,带通,带阻),可利用MATLAB工具函数lp2lp,lp2hp,lp2bs,lp2bp等;如低通到低通模拟滤波器变换函数为bt,at=lp2lp(b,a,Wo),lp2lp函数将截止频率为1rad/s(归一化频率)的模拟低通滤波器原型变换为截止频率为Wo的低通滤波器。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1