去除干扰蜂鸣音_第1页
去除干扰蜂鸣音_第2页
去除干扰蜂鸣音_第3页
去除干扰蜂鸣音_第4页
去除干扰蜂鸣音_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

一、课程设计题目去除干扰蜂鸣音1・目的:掌握信号时频域分析方法,正确理解采样定理,准确理解滤波器的概念。2.内容:提供一个包含某人说话语音片段的声音文件,但该语音信号被一个包含有几个谐波分量的蜂鸣信号十扰了。用Matlab的wavread命令读取该声音文件。注意,该命令可以同时得到声音文件的采样率和采样位宽,请查阅Matlab的帮助文件。用快速傅立叶变换(FFT)计算并画出声音信号的频谱,列写出蜂鸣信号的谐波频率。思考如何将这些蜂鸣音去除将去除了蜂鸣音的语音片段播放出来,仔细聆听并写下语音片段中人物所说的话。注意:由于只能播放实信号,因此记得提取信号的实部。Matlab命令:wavread,wavplay,fft,fftshift,firl,filter,plot,figure.二、 设计思路用waveread()函数读取音频和其采样率和采样位宽,对读取的音频信号使用fft()函数进行快速傅立叶变换并绘出得到的频谱。观察频谱分析噪声(蜂鸣信号)的谐波频率分布,选择合适的滤波模式将噪声信号的谐波滤去,便可以得到去除噪声后的人声。设计滤波器的频域特性便成了除去噪声并留下原声的关键,我们注意到所学的采样定理以及一维sinc函数(辛格函数疽”侦=誓,然而汉宁窗可以看作是3个矩形时间窗的频谱之和,或者说是3个Sinc(x)型函数之和,而括号中的两项相对于第一个谱窗向左、右各移动了n/T,从而使旁瓣互相抵消,消去高频十扰和漏能。它适用于非周期性的连续信号。利用它的选择特性使用fir1()建立一个汉宁窗函数,并用filter()函数进行滤波,去除噪声部分。最后用play()函数播放音频检查效果。三、 设计过程音频的读取和分析先将原始音频文件读入,[audioO,Fs,nbits]=wavread('C:\Users\Administrator\Desktop\signal\');%按路径读取音频存入audioO变量,并用Fs变量记录采样率,nbits变量记录采样位宽。其中,Fs=11025 #采样率为11025Hznbits=32 #采样带为32pO=audioplayer(audioO,Fs);%将audioO载入音频播放器play(pO);%并进行播放subplot(2,1,1);%分屏绘图plot(audio0);%绘制原始音频时域图,如下图所示title('时域');%标注题目[k]=fft(audio0,Fs);%对原始音频进行快速傅立叶变换subplot(2,1,2);plot(abs(k));%绘制原始音频频域图title('频域');频域图如图1下图所示图1原声时域频域图像此时,在时域中杂乱分布的声音信号变换到频域中将噪声谐波所分布的频域中显得尤为清晰简洁,这样就不难发现干扰信号主要分布在0--1000HZ以内,由于听到的噪声比人声大得多,我们又画出了,声音强度的时域和频域图像,figure;subplot(2,1,1);plot(audio0);plot(20*log10(abs(audio0)/max(abs(audio0))));%绘制原始音频声音强度的频域图ylabel('分贝/dB');xlabel(时间/ms');title('时域');[k]=fft(audio0,Fs);subplot(2,1,2);plot(abs(k));plot(20*log10(abs(abs(k))/max(abs(abs(k)))));%绘制原始音频声音强度的频域图ylabel('分贝/dB');xlabel('频率/Hz');title('频域');figure;plot(abs(k));ylabel('振幅/A');xlabel('频率/Hz');set(gca,'XLim',[01000]);set(gca,'XTick',[0:20:1000]);得到如图2所示的声音强度的时域和频域图像2DA0SDCQ1MDQ12DD0set(gca,'XTick',[0:20:1000]);得到如图2所示的声音强度的时域和频域图像2DA0SDCQ1MDQ12DD0图2原声声音强度时域频域图像从频域图中我们仍然发现了四个异常尖峰,再次明显的证实了干扰信号主要分布在0--1000HZ以内;为了跟清晰地和观察干扰信号的频域分布情况,我们进一步绘制这一范围的图像,进行局部深入研究。plot(abs(k));%重绘图像set(gca,'XLim',[01000]);%更改显示范围为0-1000set(gca,'XTick',[0:20:1000]);%更改坐标步长为20图3噪声局部频域放大图观察图像可发现,干扰信号的谐波频率为:220Hz、440Hz、660Hz、880Hz,在放大后发现噪声信号为4个几乎对称的三角波,而非单位冲击,结合以上几个图,我们分析得到干扰信号主要分布在01000Hz以内,而人声是大部分分布于大于1000Hz区间的,由此我们想到了对频率具有选择特性的滤波器,且此处需要设计一个高通滤波器,以将位于01000Hz以内的噪声滤掉,留下大于1000Hz人声信号。滤波器的设计由于干扰信号的谐波频率为:220Hz、440Hz、660Hz、880Hz,而人类说话的频率大概在3003400Hz,而干扰信号非常大,需要一个滤波器来实现将大约高于1000Hz的信号保留,低于1000Hz的信号滤掉,观察分贝图,发现大部分噪声分布在40dB以内,因此阻带最小衰减不应小于40dB表1常用窗函数的特点窗函数主瓣宽旁瓣峰值/dB阻带最小衰减/dB矩形窗4qr/N-13-21三角形窗M/N-25-25汉宁窗阮小-31-44哈明窗Stt/N-41-53kaiser窗12M-57-80根据上表显示各种窗函数的参数特点,选择hanning窗滤波,利用其可以使旁瓣互相抵消频域特性,据此可设定合适的参数设计一个hanning窗函数高通滤波器。fp=1000;fs=900;%通带频率fp,阻带频率fswp=2*fp*pi/Fs;ws=2*fs*pi/Fs;%归一化边界频率wc=(wp+ws)/2/pi;%归一化中心频率wdp=wpws;#过渡带宽N=ceil(12*pi/wdp);%由窗函数主瓣宽和过渡带宽,求得窗函数最小长度N=N+mod(N,2);%高通滤波器N必为奇数HPfir=fir1(N,wc,'high',hanning(N+1));%设计高通hanning窗滤波器HPfir该滤波器的主要参数为:通带边界为1000Hz,阻带边界为900Hz,阻带衰减不小于40dB。接下来在时域和频域直观地展示其滤波特性,再根据滤波效果对其参数做微调,figure;%新建图像subplot(2,1,1);plot(HPfir);%绘制滤波器时域图像title('滤波器时域');plot(abs(fft(HPfir)));%绘制滤波器频域图像title('滤波器频域');得到图4所示的滤波器时域和频域特性图。图4基于汉宁函数的高通滤波器时域频域图由图4可见该滤波器的截止频率大约在900Hz--1000Hz之间,完全符合设计的目的,滤波器设计完成之后,对原始音频信号进行滤波处理:audio1=filter(HPfir,1,audio0);%使用filter函数对原声做一维数字滤波p1=audioplayer(audio1,Fs);figure;%新建滤波后的图像subplot(2,1,1);plot(audio1);%绘制滤波后的时域图像title('滤波后时域');[k0]=fft(audio1,Fs);%对滤波后的信号做快速傅里叶变换subplot(2,1,2);plot(abs(k0));%绘制滤波后的频域图像title('滤波后频域');此时,我们得到了如图5所示的滤波后的时域频域图像图5滤波后时域频域图最后由于处理后的声音信号幅度较小,听不清晰,需要对音频信号进行增幅处理。audio1=audio1*10;%增幅处理p1=audioplayer(audio1,Fs);play(pl);%播放处理后的音频至此,设计结束,我们获得了去除噪音后较为清晰的、完整的人声信号。四、源代码[audio。,Fs,nbits]=wavread('C:\Users\xufanyun\Desktop\signal\');p0=audioplayer(audio0,Fs);subplot(2,1,1);plot(audio0);ylabel('振幅/A');xlabel(时间/ms');title('时域');[k]=fft(audio0,Fs);subplot(2,1,2);plot(abs(k));ylabel('振幅/A');xlabel('频率/Hz');title('频域');figure;subplot(2,1,1);plot(audio0);plot(20*log10(abs(audio0)/max(abs(audio0))));ylabel('分贝/dB');xlabel(时间/ms');title('时域');[k]=fft(audio0,Fs);subplot(2,1,2);plot(abs(k));plot(20*log10(abs(abs(k))/max(abs(abs(k)))));ylabel('分贝/dB');xlabel('频率/Hz');title('频域');figure;subplot(2,1,1);plot(abs(k));ylabel('振幅/A');xlabel('频率/Hz');set(gca,'XLim',[01000]);set(gca,'XTick',[0:20:1000]);fp=1000;fs=900;wp=2*fp*pi/Fs;ws=2*fs*pi/Fs;wc=(wp+ws)/2/piwdp=wp-ws;N=ceil(8*pi/wdp)N=N+mod(N,2);HPfir=fir1(N,wc,'high',hanning(N+1));figure;plot(HPfir);title('滤波器时域');subplot(2,1,2);plot(abs(fft(HPfir)));title('滤波器频域');audio1=conv(audio0,HPfir);audio1=filter(HPfir,1,audio0)p1=audioplayer(audio1,Fs);figure;subplot(2,1,1);plot(audio1);title('滤波后时域');[k0]=fft(audio1,Fs);subplot(2,1,2);plot(abs(k0));title('滤波后频域');xlabel('f(Hz)');audio1=audio1*10;p1=audioplayer(audio1,Fs);wavwrite(audio1,Fs,nbits,'C:\Users\Administrator\Desktop\signal\'五、结论我们将包含有几个谐波分量的蜂鸣信号干扰了的人声信号读入到MATLAB当中,对读取的音频信号做出其时

温馨提示

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

评论

0/150

提交评论