1、MATLAB软件包括五大通用功能,数值计算功能(Nemeric)、符号运算功能(Symbolic)、数据可视化功能(Graphic)、数字图形文字统一处理功能(Notebook)和建模仿真可视化功能(Simulink)。其中,符号运算功能的实现是通过请求MAPLE内核计算并将结果返回到MATLAB命令窗口。该软件有三大特点,一是功能强大;二是界面友善、语言自然;三是开放性强。目前,Mathworks公司已推出30多个应用工具箱。MATLAB在线性代数、矩阵分析、数值及优化、数值统计和随机信号分析、电路与系统、系统动力学、次那好和图像处理、控制理论分析和系统设计、过程控制、建模和仿真、通信系统以
2、及财政金融等众多领域的理论研究和工程设计中得到了广泛应用。MATLAB在信号与系统中的应用主要包括符号运算和数值计算仿真分析。由于信号与系统课程的许多内容都是基于公式演算,而MATLAB借助符号数学工具箱提供的符号运算功能,能基本满足信号与系统课程的需求。例如解微分方程、傅里叶正反变换、拉普拉斯正反变换和z正反变换等。MATLAB在信号与系统中的另一主要应用是数值计算与仿真分析,主要包括函数波形绘制、函数运算、冲击响应与阶跃响应仿真分析、信号的时域分析、信号的频谱分析、系统的S域分析和零极点图绘制等内容。数值计算仿真分析可以帮助学生更深入地理解理论知识,并为将来使用MATLAB进行信号处理领域
3、的各种分析和实际应用打下基础。2. 本题目的意义 本次课程设计的课题为基于MATLAB的语音信号采集与处理,学会运用MATLAB的信号处理功能,采集语音信号,并对语音信号进行滤波及变换处理,观察其时域和频域特性,加深对信号处理理论的理解,并为今后熟练使用MATLAB进行系统的分析仿真和设计奠定基础2实验原理1.理论原理利用MATLAB对语音信号进行分析和处理,采集语音信号后,利用MATLAB软件平台进行频谱分析;并对所采集的语音信号加入干扰噪声,对加入噪声的信号进行频谱分析,设计合适的滤波器滤除噪声,恢复原信号。2具体流程 NO(1) 语音信号的采集及分析从录制一段语音信号,经过格式工厂将格式
4、转为wav格式,并命名为“ww.wav”。在Matlab平台下调用wavread函数可采集到语音信号。即x1=wavread(D:/w.wav); sound(x1,45050); %读出原始语音信号原始的语音信号波形与频谱(2)给原始信号加上一个高频噪声在Matlab中设计一个高频噪声干扰信号。噪声信号通常为随机序列,在本设计中为高斯随机噪声,干扰信号构建命令函数为x2=0.01*randn(N,2),给出的干扰信号为一个高斯随机信号,针对上面的语音信号 ,采集了其中一段。再对噪音信号进行频谱变换得到其频谱图。在MATLAB中把语音信号与噪声信号进行叠加,并对其进行播放,然后对加入噪声后的语
5、音信号进行频谱分析,在MATLAB中可以利用函数FFT对信号进行快速傅里叶变换。将原语音信号与噪声信号x2叠加,调用的形式为:x3=x2+x1; 其中,x1为原语音信号,x2为所构造的随机高斯噪声,x3即为两者的叠加后的语音信号。加入的高斯随机噪声3) 滤波器的设计,滤除高频噪声在 MATLAB中 ,利用窗函数 hamming,设计FIR滤波器,利用 MATLAB 中的函数freqz 画出滤波器的频率响应。并用设计好的滤波器对含噪语音信号进行滤波,在Matlab中 ,FIR滤波器利用函数filter对信号进行滤波滤波器设计程序代码: Wp=3000*2*pi;Ws=3500*2*pi;Ap=0
6、.3;As=50;Fs=45050; wp=Wp/Fs;ws=Ws/Fs; %归一化通带截频 阻带截频 wdelta=ws-wp; %过渡带宽 %由阻带最小衰减指标确定选用汉明窗 并确定其阶数 N=ceil(6.6*pi/wdelta); Nw=N; n=0:N-1; wc=(wp+ws)/2; %理想截频 alpha=(N-1)/2; m=n-alpha+eps;%理想滤波器脉冲响应 hd=sin(wc*m)./(pi*m); %采用汉明窗设计 win=hamming(Nw); h=hd.*win; b=h; H,f=freqz(b,1,512,Fs); %绘制滤波器的幅频响应图 figur
7、e(4); plot(f,20*log10(abs(H) xlabel(Hzylabel(幅值title(滤波器幅频特性信号滤波程序代码: x4=fftfilt(b,x3); %滤波输出 sound(x4,45050);%输入输出频谱 figure(1); subplot(2,2,3); plot(x4) % 绘制输出信号time(s),ylabel( title(滤波后输出信号 Y=fft(x4); figure(3); plot(abs(Y);滤波后输出信号频谱)滤波后的波形和频谱3 实验结果滤波前后的波形比较4 本程序运行后,一共播放四段语音信号。首先播放原语音信号,接着是噪声信号,然后
8、是加噪后的语音信号,最后是滤波后的信号,每段语音信号大约11s。同时对语音信号的特性进行图像显示,在figure1中显示了原始语音信号、加噪后的语音信号、滤波后输出信号各自的幅值随时间的变化5 心得体会通过这一个礼拜使用Matlab对语音信号进行处理,进一步熟悉了Matlab的使用,并对语音信号的格式有了更全面的认识。自己在电脑上录音并进行了语音的格式转换,变换为wav的语音格式。在程序设计中学会了一些Matlab中基本的语音运行及处理程序,比如:语音读取函数wavread()、语音播放函数sound()、快速傅里叶变换fft()、滤波处理fftfilt()。并加深了对课堂抽象概念的理解,巩固
9、了课堂上所学的理论知识,并能很好的理解和掌握语音信号处理中运用的方法,同时掌握编程方法和解决实际问题的技巧参考文献1张志涌精通MATLAB 6.5版M北京:北京航空航天大学出版社,20032约翰普罗克斯数字信号处理M西安:西安交通大学出版社,20093张小虹信号系统与数字信号处理M第1版西安:西安电子科技出版社,20024谢德芳数字信号处理M北京:科学出版社,20055郝建军数字通信M第2版北京:北京邮电大学出版社,20106张威MATLAB 基础与编程入门M西安:西安电子科技大学出版社,2010附录:x1=wavread(E:sound(x1,45050);y1=fft(x1,1024);
10、%对原始信号进行1024点傅里叶变换频率f=Fs*(0:511)/1024; 分别表示nfft个频率点figure(1) 打开图形窗口subplot(2,2,1);确定第一个绘图窗口plot(x1) %显示原始信号 以x1绘图原始语音信号取名xlabel(x轴名figure(3)plot(f,abs(y1(1:512); 做原始语音信号的FFT频谱图原始语音信号频谱N=length(x1); %计算原始语音信号的长度x2=0.05*randn(N,2); x2为随机噪声sound(x2,45050);播放噪声figure(2)plot(x2)高斯随机噪声sound(x3,45050);y2=f
11、ft(x3,1024);figure(1)subplot(2,2,2);plot(x3) %显示加噪后的语音信号加噪后的语音信号figure(3);plot(f,abs(y2(1:加噪后的语音信号频谱Nbits=16;wavwrite(x3,Fs,Nbits,noise.wav %将加噪的信号保存Wp=3000*2*pi;wp=Wp/Fs;wdelta=ws-wp;%由阻带最小衰减指标确定选用汉明窗 并确定其阶数N=ceil(6.6*pi/wdelta);Nw=N;n=0:wc=(wp+ws)/2;alpha=(N-1)/2;m=n-alpha+eps;hd=sin(wc*m)./(pi*m);win=hamming(Nw);h=hd.*winb=h;H,f=freqz(b,1,512,Fs);figure(4);plot(f,20*log10(abs(H)x4=fftfilt(b,x3);sound(x4,45050);figure(1);subplot(2,2,3);plot(x4) % 绘制输出信号Y=fft(x4);plot(abs(Y);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1