基于MATLAB的语音信号采集与处理.doc

上传人:scccc 文档编号:14399443 上传时间:2022-02-05 格式:DOC 页数:7 大小:81.50KB
返回 下载 相关 举报
基于MATLAB的语音信号采集与处理.doc_第1页
第1页 / 共7页
基于MATLAB的语音信号采集与处理.doc_第2页
第2页 / 共7页
基于MATLAB的语音信号采集与处理.doc_第3页
第3页 / 共7页
基于MATLAB的语音信号采集与处理.doc_第4页
第4页 / 共7页
基于MATLAB的语音信号采集与处理.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《基于MATLAB的语音信号采集与处理.doc》由会员分享,可在线阅读,更多相关《基于MATLAB的语音信号采集与处理.doc(7页珍藏版)》请在三一文库上搜索。

1、基于MATLAB的语音信号采集与处理1.理论原理利用MATLAB对语音信号进行分析和处理,采集语音信号后,利用MATLAB软件平台进行频谱分析;并对所采集的语音信号加入干扰噪声,对加入噪声的信号进行频谱分析,设计合适的滤波器滤除噪声,恢复原信号。语音信号的“ 短时谱”对于非平稳信号, 它是非周期的, 频谱随时间连续变化, 因此由傅里叶变换得到的频谱无法获知其在各个时刻的频谱特性。如果利用加窗的方法从语音流中取出其中一个短断, 再进行傅里叶变换, 就可以得到该语音的短时谱。2. 具体流程(1). 语音信号的采集及分析源代码:fs=22050; x1=wavread(F:Documents and

2、 SettingsAdministrator桌面333.wav);sound(x1,22050); y1=fft(x1,1024); f=fs*(0:511)/1024; figure(1) plot(x1) title(原始语音信号);xlabel(时间); ylabel(幅值); figure(2)freqz(x1) title(频率响应图)figure(3)subplot(2,1,1); plot(abs(y1(1:512) title(原始语音信号FFT频谱)subplot(2,1,2);plot(f,abs(y1(1:512); title(原始语音信号频谱)xlabel(Hz);y

3、label(幅值);原始语音信号波形:语音信号频率响应图:原始语音信号FFT及信号频谱:(2). 给原始信号加上一个高频噪声,5500Hz源代码:fs=22050; x1=wavread(F:Documents and SettingsAdministrator桌面333.wav);%读取语音信号的数据,赋给变量x1f=fs*(0:511)/1024; %将0到511,步长为1的序列的值与fs相乘并除以1024的值,赋值给ft=0:1/fs:(length(x1)-1)/fs; %将0到x1的长度减1后的值除以fs的值,且步长为1/fs的值,的序列的值,赋予tAu=0.5; %噪声幅值d=Au

4、*sin(2*pi*5500*t); %所加的噪声是正弦信号x2=x1+d; %将正弦信号噪声加在语音信号上sound(x2,22050); %播放语音信号y1=fft(x1,1024); %对信号y1做1024点FFT变换y2=fft(x2,1024); %对信号y2做1024点FFT变换figure(1); %创建图形窗1plot(t,x2); %做加噪后的信号时域图形(绘出t对x2的线性图)title(加噪后的信号);xlabel(时间); %x轴的名字是“时间”ylabel(幅值); %y轴的名字是“幅值”figure(2) %创建图形窗2subplot(2,1,1); % 创建两行一

5、列绘图区间的第1个绘图区间plot(f,abs(y1(1:512); %做原始语音信号的频谱图title(原始语音信号频谱);xlabel(Hz); %x轴的名字是“Hz”ylabel(幅值); % y轴的名字是“幅值”subplot(2,1,2); %创建两行一列绘图区间的第2个绘图区间plot(f,abs(y2(1:512); %做加噪后的语音信号的频谱图(abs是绝对值,plot是直角坐标下线性刻度曲线)title(加噪后的信号频谱);xlabel(Hz); % x轴的名字是“Hz”ylabel(幅值); % y轴的名字是“幅值”加噪后的信号波形:原始语音信号和加噪后的信号频谱:(3)设

6、计一个滤波器,滤除高频噪声用双线性变换法设计巴特沃思低通滤波器在加噪声的代码基础上续写代码:wp=0.25*pi; %通带截止频率ws=0.3*pi; %阻带截止频率Rp=1; %通带最大衰减(db)Rs=15; %阻带最大衰减(db)Fs=22050;Ts=1/Fs;wp1=2/Ts*tan(wp/2); %将模拟指标转换成数字指标ws1=2/Ts*tan(ws/2); %将模拟指标转换成数字指标N,Wn=buttord(wp1,ws1,Rp,Rs,s); %选择滤波器的最小阶数(估算得到Butterworth低通滤波器的最小阶数N和3dB截止频率Wc)z,p,k=buttap(N); %创

7、建Butterworth低通滤波器原型Bap,Aap=zp2tf(z,p,k); %将零极点增益转换为普遍分子,分母b,a=lp2lp(Bap,Aap,Wn); %将普遍的分子和分母转换为以Wn为截止频率bz,az=bilinear(b,a,Fs); %用双线性变换法实现模拟滤波器到数字滤波器的转换(模拟转换为数字)H,W=freqz(bz,az); %求频率响应figure(9)plot(W*Fs/(2*pi),abs(H) %绘制Butterworth低通滤波器频率响应曲线grid %添加图格xlabel(频率Hz)ylabel(频率响应幅度)title(Butterworth)f1=fi

8、lter(bz,az,z); %利用上面已做好的滤波器(已bz和az为特征的滤波器)对x2信号进行滤波,赋值给f1figure(10)subplot(2,1,1) %创建两行一列绘图区间的第1绘图区间plot(t,z) %做加噪后的信号时域图形title(滤波前的时域波形);subplot(2,1,2) %创建两行一列绘图区间的第2绘图区间plot(t,f1); title(滤波后的时域波形);sound(f1,22050); %播放语音信号p=length(f1);F0=fft(f1,p);f=0:fs/p:fs*(s-1)/p;figure(11)y2=fft(z,1024); %对信号y2做1024点FFT变换subplot(2,1,1); %创建两行一列绘图区间的第1绘图区间plot(f,abs(y4); title(滤波前的频谱)xlabel(Hz); %x轴的名字是“Hz”ylabel(fuzhi); %y轴的名字是“fuzhi”subplot(2,1,2)F1=plot(f,abs(F0); title(滤波后的频谱)xlabel(Hz);ylabel(fuzhi);低通滤波器频率响应曲线:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1