matlab基于 HMM 的语音识别 matlab语音信号的采集与读写_高通滤波

基于matlab的语音信号的采集和处理.doc

电子科技大学课程设计报告课程名称:信号与系统设计名称:语音信号的采集和处理姓名:肖燕平学号:2011019090028班级:通信九班指导教师:何春起止日期:2012.12.15-2012.12.20基于MATLAB的语音信号的采集和处理摘要:本文介绍了一种基于matlab的语音信号的采集和处理设计实现方案。声音是由物体的振动产生,以声波的形式在介质中传播,介质主要可分为固体,液体以及气体。声波振动内耳的听小骨,这些振动被转化为微小的电子脑波,它就是我们觉察到的声音。内耳采用的原理与麦克风捕获声波或扬声器的发音一样,它是移动的机械部分与气压波之间的关系。在国际标准中,人声的频率范围是300Hz~3400Hz,不同的人或乐器产生的声音频率不一致,通过对声音信号的研究能够更好的处理声音信号的处理以及传输。Matlab作为一款主要面对科学计算、可视化以及交互式程序设计的高科技计算软件,能够很好的完成对声音信号的分析和处理,快速的得出声音信号的时域图以及频域图。关键字:声音|、频率、时域图、频域图1绪论1.1课题研究目的及意义掌握语音信号采集的方法掌握一种语音信号基音周期提取方法了解Matlab的编程方法1.2本课题的设计要求及设计方案概述一:使用wavrecord录入自己的语音信号,使用save函数进行保存后使用wavplay函数进行播放。二:使用plot再画出该语音信号的时域波形,对原始波形进行用fft函数傅里叶变换后,使用plot画出其频谱。三:设计切比雪夫的低通,高通,带通滤波器对原始信号进行滤波。四:画出滤波后的信号时域、频域图五:考虑到国际标准人声的频率范围在300Hz~3400Hz,于是给原始语音信号加入3800hz的正弦高频噪声,再分析语音信号的特点。六:设计低通计滤波器将高频噪声滤除。2设计过程2.1本课题的设计要求1,使用wavrecord录入自己的语音信号,保存到一个数组后,再使用save函数进行保存文件,后使用wavplay函数进行播放。程序实现如下:fs=8000;%采样频率为8000hzy=wavrecord(3*fs,fs);%录入3s的声音wavplay(y,fs);%播放已录入的声音信号file= voice.mat ;%创建一个数据文件,且赋给变量filesave( voice.mat , y );%将语音数据保存到数据文件voice.mat中loadvoice.mat;%读出voicet.mat的语音数据2,使用plot再画出该语音信号的时域波形程序代码为:subplot(211);%对图形窗口进行分割plot(y);xlabel( timen );ylabel( amplitude );title( 原始语音信号 );%标出横纵坐标和图像名称再对原始波形进行用fft函数傅里叶变换后得到向量,使用plot画出其频谱。因为直接用fft得出的数据与频率不是对应的,由于fftshift可以将fft的直流分量移到频谱中心,即让正半轴部分和负半轴部分的图像分别关于各自的中心对称。故再使用fftshift对fft进行变换。程序代码为:a=fftshift(fft(y,l)/l);%对语音信号进行离散时间傅里叶变换,且将fft的直流分量移到频谱中心fd=fs/l;fx=fd*(-l/2:l/2-1);%将横轴变为频率轴fy=abs(a);%将纵轴变为频率幅度轴subplot(212);plot(fx,fy);xlabel( 频率Hz );ylabel( 幅度 );title( 原始信号频谱 );如图所示:3,设计切比雪夫滤波器对原始信号进行滤波时,利用cheb1ord计算滤波器阶数:[N,Wn]=cheb1ord(Wp,Ws,Rp,Rs);利用cheby1计算滤波器系数:[b,a]=cheby1(N,Wn)。其中设计了通带截止频率为1000hz,阻带截止频率为1200hz的低通滤波器,如图所示程序为:fph=1000;fsh=1200;rp=2;rs=15;omegaph=fph/(fs/2);%归一化omegash=fsh/(fs/2);[N,wn]=cheb1ord(omegaph,omegash,rp,rs);[BZ,AZ]=cheby1(N,rp,wn, low );yl=filter(BZ,AZ,y);subplot(211);plot(yl);xlabel( timen );ylabel( amplitude );title( 低通滤波后语音信号时域波形 );al=fftshift(fft(yl,l))/l;%对低通滤波后信号进行傅里叶变换fdl=fs/l;fxl=fdl*(-l/2:l/2-1);fyl=abs(al);subplot(212);plot(fxl,fyl);xlabel( 频率Hz );ylabel( 幅度 );title( 低通滤波后信号频谱 );设计了通带截止频率为2000hz,阻带截止频率为1600hz的高通滤波器,如图所示fph=2000;fsh=1600;rp=2;rs=15;omegaph=fph/(fs/2);omegash=fsh/(fs/2);[N,wn]=cheb1ord(omegaph,omegash,rp,rs);[BZ,AZ]=cheby1(N,rp,wn, high );%计算切比雪夫高通滤波器系数yh=filter(BZ,AZ,y);subplot(211);plot(yh);xlabel( timen );ylabel( amplitude );title( 高通滤波后语音信号时域波形 );ah=fftshift(fft(yh,l))/l;fdh=fs/l;fxh=fdh*(-l/2:l/2-1);fyh=abs(ah);subplot(212);plot(fxh,fyh);xlabel( 频率Hz );ylabel( 幅度 );title( 高通滤波后信号频谱 );设计了截止频率Wp=[1000Hz2000Hz];阻带截止频率Ws=[800Hz2500Hz];的带通滤波器,如图所示程序为:fph=[1000,2000];fsh=[800,2500];rp=3;rs=20;omegaph=fph/(fs/2);omegash=fsh/(fs/2);[N,wn]=cheb1ord(omegaph,omegash,rp,rs);[BZ,AZ]=cheby1(N,rp,wn, bandpass );yb=filter(BZ,AZ,y);subplot(211);plot(yb);xlabel( timen );ylabel( amplitude );title( 带通滤波后语音信号时域波形 );ab=fftshift(fft(yb,l))/l;fdb=fs/l;fxb=fdb*(-l/2:l/2-1);fyb=abs(ab);subplot(212);plot(fxb,fyb);xlabel( 频率Hz );ylabel( 幅度 );title( 带通滤波后信号频谱 );