当前位置:文档之家› Matlab语音信号加噪、滤波处理及幅值幅频响应

Matlab语音信号加噪、滤波处理及幅值幅频响应

课程设计二基于MATLAB的语音信号采集与处理一、实验目的和意义1. MATLAB软件功能简介MATLAB的名称源自Matrix Laboratory,1984年由美国Mathworks公司推向市场。

它是一种科学计算软件,专门以矩阵的形式处理数据。

MATLAB将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,从而被广泛的应用于科学计算、控制系统和信息处理等领域的分析、仿真和设计工作。

MATLAB软件包括五大通用功能,数值计算功能(Nemeric)、符号运算功能(Symbolic)、数据可视化功能(Graphic)、数字图形文字统一处理功能(Notebook)和建模仿真可视化功能(Simulink)。

其中,符号运算功能的实现是通过请求MAPLE内核计算并将结果返回到MATLAB命令窗口。

该软件有三大特点,一是功能强大;二是界面友善、语言自然;三是开放性强。

目前,Mathworks公司已推出30多个应用工具箱。

MATLAB在线性代数、矩阵分析、数值及优化、数值统计和随机信号分析、电路与系统、系统动力学、次那好和图像处理、控制理论分析和系统设计、过程控制、建模和仿真、通信系统以及财政金融等众多领域的理论研究和工程设计中得到了广泛应用。

MATLAB在信号与系统中的应用主要包括符号运算和数值计算仿真分析。

由于信号与系统课程的许多内容都是基于公式演算,而MATLAB借助符号数学工具箱提供的符号运算功能,能基本满足信号与系统课程的需求。

例如解微分方程、傅里叶正反变换、拉普拉斯正反变换和z正反变换等。

MATLAB在信号与系统中的另一主要应用是数值计算与仿真分析,主要包括函数波形绘制、函数运算、冲击响应与阶跃响应仿真分析、信号的时域分析、信号的频谱分析、系统的S域分析和零极点图绘制等内容。

数值计算仿真分析可以帮助学生更深入地理解理论知识,并为将来使用MATLAB进行信号处理领域的各种分析和实际应用打下基础。

2. 本题目的意义本次课程设计的课题为《基于MATLAB的语音信号采集与处理》,学会运用MATLAB 的信号处理功能,采集语音信号,并对语音信号进行滤波及变换处理,观察其时域和频域特性,加深对信号处理理论的理解,并为今后熟练使用MATLAB进行系统的分析仿真和设计奠定基础。

二、实验原理:1.理论原理利用MATLAB对语音信号进行分析和处理,采集语音信号后,利用MATLAB软件平台进行频谱分析;并对所采集的语音信号加入干扰噪声,对加入噪声的信号进行频谱分析,设计合适的滤波器滤除噪声,恢复原信号。

2. 具体流程(1) 语音信号的采集及分析基于声卡进行数字信号的采集。

将话筒插入计算机的语音输入插口上,启动录音机。

按下录音按钮,对话筒说话,说完后停止录音。

要保存文件时,利用了计算机上的A/D转换器,把模拟的声音信号变成了离散的量化了的数字信号,放音时,它又通过D/A转换器,把保存的数字数据恢复为原来的模拟的声音信号。

在 Matlab软件平台下可以利用函数wavread对语音信号进行采样,得到了声音数据变量。

在本设计中采用读取信号程序为:[x1]=wavread('yuanyin.wav');sound(x1,45050); %读出原始语音信号(2)给原始信号加上一个高频噪声在Matlab中设计一个高频噪声干扰信号。

噪声信号通常为随机序列,在本设计中为高斯随机噪声,干扰信号构建命令函数为x2=0.01*randn(N,2),给出的干扰信号为一个高斯随机信号,针对上面的语音信号 ,采集了其中一段。

再对噪音信号进行频谱变换得到其频谱图。

在MATLAB中把语音信号与噪声信号进行叠加,并对其进行播放,然后对加入噪声后的语音信号进行频谱分析,在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.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); %绘制滤波器的幅频响应图figure(4);plot(f,20*log10(abs(H)))xlabel('Hz');ylabel('幅值');title('滤波器幅频特性');信号滤波程序代码:x4=fftfilt(b,x3); %滤波输出sound(x4,45050);%输入输出频谱figure(1);subplot(2,2,3);plot(x4) % 绘制输出信号xlabel('time(s)'),ylabel('幅值');title('滤波后输出信号');Y=fft(x4);figure(3);subplot(2,2,3);plot(abs(Y));xlabel('Hz');ylabel('幅值');title('滤波后输出信号频谱')四、实验结果:本程序运行后,一共播放四段语音信号。

首先播放原语音信号,接着是噪声信号,然后是加噪后的语音信号,最后是滤波后的信号,每段语音信号大约45s。

同时对语音信号的特性进行图像显示,在figure1中显示了原始语音信号、加噪后的语音信号、滤波后输出信号各自的幅值随时间的变化,如下图所示:0.51 1.52x 106-1-0.500.51原始语音信号time(s)幅值0.51 1.52x 106-1-0.500.51加噪后的语音信号time(s)幅值0.51 1.52x 106-1-0.500.51time(s)幅值滤波后输出信号在figure2中显示了高斯随机噪声的幅值随时间的变化,如下图示:00.20.40.60.81 1.2 1.4 1.6 1.82x 106-0.06-0.04-0.020.020.040.06高斯随机噪声time(s)幅值在figure3中显示了原始语音信号、加噪后的语音信号、滤波后输出信号各自的频谱,显示结果如下图所示:123x 104-1-0.500.51原始语音信号频谱Hz幅值0123x 1040.51加噪后的语音信号频谱Hz幅值00.51 1.52x 10650010001500Hz幅值滤波后输出信号频谱在figure4中显示了所使用滤波器的幅频特性,如下图所示:00.511.522.5x 104-140-120-100-80-60-40-20020Hz幅值滤波器幅频特性五、心得体会:通过这一个礼拜使用Matlab对语音信号进行处理,进一步熟悉了Matlab的使用,并对语音信号的格式有了更全面的认识。

自己在电脑上录音并进行了语音的格式转换,变换为wav的语音格式。

在程序设计中学会了一些Matlab中基本的语音运行及处理程序,比如:语音读取函数wavread()、语音播放函数sound()、快速傅里叶变换fft()、滤波处理fftfilt()。

并加深了对课堂抽象概念的理解,巩固了课堂上所学的理论知识,并能很好的理解和掌握语音信号处理中运用的方法,同时掌握编程方法和解决实际问题的技巧。

附录(程序代码):[x1]=wavread('yuanyin.wav');sound(x1,45050); %读出原始语音信号y1=fft(x1,1024); %对原始信号进行1024点傅里叶变换Fs=45050;f=Fs*(0:511)/1024;figure(1)subplot(2,2,1);plot(x1) %显示原始信号title('原始语音信号');xlabel('time(s)');ylabel('幅值');figure(3)subplot(2,2,1);plot(f,abs(y1(1:512)));title('原始语音信号频谱');xlabel('Hz');ylabel('幅值');N=length(x1); %计算原始语音信号的长度x2=0.01*randn(N,2);sound(x2,45050);figure(2)plot(x2)title('高斯随机噪声');xlabel('time(s)');ylabel('幅值');x3=x2+x1;sound(x3,45050);y2=fft(x3,1024);figure(1)subplot(2,2,2);plot(x3) %显示加噪后的语音信号title('加噪后的语音信号');xlabel('time(s)');ylabel('幅值');figure(3);subplot(2,2,2);plot(f,abs(y2(1:512)));title('加噪后的语音信号频谱');xlabel('Hz');ylabel('幅值');Nbits=16;wavwrite(x3,Fs,Nbits,'noise.wav'); %将加噪的信号保存Wp=3000*2*pi;Ws=3500*2*pi;Ap=0.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); %绘制滤波器的幅频响应图figure(4);plot(f,20*log10(abs(H)))xlabel('Hz');ylabel('幅值');title('滤波器幅频特性');x4=fftfilt(b,x3); %滤波输出sound(x4,45050);%输入输出频谱figure(1);subplot(2,2,3);plot(x4) % 绘制输出信号xlabel('time(s)'),ylabel('幅值');title('滤波后输出信号');Y=fft(x4);figure(3);subplot(2,2,3);plot(abs(Y));xlabel('Hz');ylabel('幅值');title('滤波后输出信号频谱')课程设计三数字信号处理课程设计一、数字信号处理课程设计目的通过课程设计,主要达到以下目的:1.让学生掌握Matlab语言基础及使用入门知识,掌握使用Matlab语言及其工具箱进行基本信号的分析与处理。

相关主题