基于MATLAB的语音信号的频谱分析
基于MATLAB语音信号频谱分析

基于MATLAB语音信号频谱分析-语谱图(2012-03-01 15:48:00)转载▼分类:信号处理标签:语音信号语谱图频谱分析matlab杂谈目前已经有成熟的MATLAB程序(参考文献1)进行语音信号的频谱分析,但是该程序中对信号分帧的部分采用的算法有一些复杂,为了更方便大家理解,降低编程的难度,我利用标准的语音工具箱voicebox中的enframe分帧命令替换了原来的程序。
我的程序如下:首先,编写一个频谱分析的函数,其中Winsiz: 定义帧长, 一般应取2 的幂次, 其目的是适合FFT 的要求。
通过对Winsiz的选值可实现宽带频谱或窄带频谱的选择。
Shift: 定义帧移值。
一般此值小于或等于Winsiz。
Shift 值越小, 时域分辨率越高。
Base: 基准电平值。
注意, 此值的设定需根据实际经验, 可以通过在多次运行此程序中给出不同的Base 值, 观察所获得的频谱图的视觉和分辨率效果, 选择一个合适的Base 值, 如果没有特别要求, 可取默认值Base=0。
Mode: 定义显示模式。
1 伪彩色映射, 0 为灰度映射function sogram1(Winsiz,Shift,Base,Mode,Gray);[x,Fs]=wavread('npu.wav');n=fix((length(x)-Winsiz)/Shift)+1;A=zeros(1+Winsiz/2,n);s=enframe(x,Winsiz,Shift);fori=1:nz=fft(s(i,:));z=z(1:(Winsiz/2)+1);z=z.*conj(z);z=10*log10(z);A(:,i)=z;endL0=(A>Base);L1=(A<Base);B=A.*L0 +Base*L1;L=(B- Base)./(max(max(B))- Base);y=[0:Winsiz/2]*Fs/Winsiz;x=[0:n-1]*Shift;if Mode==1colormap('jet' );elsemymode =gray;mymode =mymode (Gray: - 1:1,:);colormap(mymode);endimagesc(x,y,L);axisxy;然后,编写主程序,输入相应的参数,得到语谱图:close all;sogram1(2048,128,0,1,64);文献中得程序得到的语谱图如图一所示:图-1修改后得到语谱图如图2图-2可以明显看出,改进后的程序更加清晰,且能够分析出更加细微的高频成分。
实验二基于MATLAB分析语音信号频域特征

实验二 基于MATLAB 分析语音信号频域特征一、实验目的信号的傅立叶表示在信号的分析与处理中起着重要的作用。
因为对于线性系统来说,可以很方便地确定其对正弦或复指数和的响应,所以傅立叶分析方法能完善地解决许多信号分析和处理问题。
另外,傅立叶表示使信号的某些特性变得更明显,因此,它能更深入地说明信号的各项物理现象。
由于语音信号是随着时间变化的,通常认为,语音是一个受准周期脉冲或随机噪声源激励的线性系统的输出。
输出频谱是声道系统频率响应与激励源频谱的乘积。
声道系统的频率响应及激励源都是随时间变化的,因此一般标准的傅立叶表示虽然适用于周期及平稳随机信号的表示,但不能直接用于语音信号。
由于语音信号可以认为在短时间内,近似不变,因而可以采用短时分析法。
本实验要求掌握傅里叶分析原理,会利用已学的知识,编写程序估计短时谱、倒谱,画出语谱图,并分析实验结果,在此基础上,借助频域分析方法所求得的参数分析语音信号的基音周期或共振峰。
二、实验原理1、短时傅立叶变换由于语音信号是短时平稳的随机信号,某一语音信号帧的短时傅立叶变换的定义为:()()()jwjwmn m X e x m w n m e∞-=-∞=-∑ (1.1)其中w(n-m)是实窗口函数序列,n 表示某一语音信号帧。
令n-m=k',则得到(')'()(')(')jwjw n k n k X e w k x n k e∞--=-∞=-∑ (1.2)于是可以得到()()()jw jwnjwkn k X e ew k x n k e∞-=-∞=-∑ (1.3)假定()()()jwjwkn k X e w k x n k e∞=-∞=-∑ (1.4)则可以得到()()jw jwn jw n n X e e X e -= (1.5)同样,不同的窗口函数,将得到不同的傅立叶变换式的结果。
由上式可见,短时傅立叶变换有两个变量:n 和ω,所以它既是时序n 的离散函数,又是角频率ω的连续函数。
基于matlab实现语音信号频谱分析

目录第1章课题的设计要求、目的、意义 (3)1.1课题的设计要求: (3)1.1.1.信号采集 (3)1.1.2.构造受干扰信号并对其进行FFT频谱分析 (3)1.1.3.数字滤波器设计 (3)1.1.4.信号处理 (3)1.1.5.设计图形用户界面 (3)1.2课题的设计目的与意义: (3)第2章课程设计报告内容 (4)2.1理论依据 (4)2.2信号采集 (4)2.3构造一个正弦干扰信号来干扰语音信号 (4)2.4数字滤波器设计 (4)2.5信号处理 (4)2.6具体指标 (4)2.7设计图形用户界面 (4)第3章设计理论依据 (5)3.1采样定理 (5)3.2采样频率 (5)第4章图形用户界面制作及Matlab实现 (6)4.1 按钮、静态文本和编辑器的使用 (6)4.1.1打开guide (6)4.2 按钮与程序的联系 (8)第5章调试及分析 (8)5.1打开信号。
(8)5.2声音播放,同时显示波形。
(9)5.3语音信号的频谱、幅度和相位。
(10)5.3.1频谱。
(10)5.3.2幅度。
(10)5.3.3相位。
(11)5.4加噪声后的语音信号波形。
(12)5.5加噪声后的语音信号的频谱、幅度和相位。
(12)5.5.1频谱。
(12)5.5.2幅度。
(13)5.5.3相位。
(13)5.6信号通过FIR滤波器后的波形。
(14)5.7信号通过FIR滤波器后的频谱、幅度和相位。
(15)5.7.1频谱。
(15)5.7.2幅度。
(16)5.7.3相位。
(16)5.8信号通过IIR滤波器后的波形。
(17)5.9 信号通过IIR滤波器后的频谱、幅度和相位。
(18)5.9.1频谱。
(18)5.9.2幅度。
(18)5.9.3相位。
(19)5.10信号通过巴特沃斯滤波器后的波形。
(20)5.11 信号通过巴特沃斯滤波器后的频谱、幅度和相位。
(21)5.11.1频谱。
基于Matlab的DFT及FFT频谱分析

基于Matlab的DFT及FFT频谱分析基于Matlab的DFT及FFT频谱分析一、引言频谱分析是信号处理中的重要任务之一,它可以揭示信号的频率特性和能量分布。
离散傅里叶变换(DFT)及快速傅里叶变换(FFT)是常用的频谱分析工具,广泛应用于许多领域。
本文将介绍通过Matlab进行DFT及FFT频谱分析的方法和步骤,并以实例详细说明。
二、DFT及FFT原理DFT是一种将时域信号转换为频域信号的离散变换方法。
它将信号分解成若干个正弦和余弦函数的叠加,得到频率和幅度信息。
FFT是一种高效的计算DFT的算法,它利用信号的对称性和周期性,将计算复杂度从O(N^2)降低到O(NlogN)。
FFT通过将信号分解成不同长度的子序列,递归地进行计算,最终得到频谱信息。
三、Matlab中的DFT及FFT函数在Matlab中,DFT及FFT可以通过内置函数进行计算。
其中,DFT使用函数fft,FFT使用函数fftshift。
fft函数可直接计算信号的频谱,fftshift函数对频谱进行频移操作,将低频移到频谱中心。
四、Matlab中DFT及FFT频谱分析步骤1. 读取信号数据首先,将待分析的信号数据读入到Matlab中。
可以使用内置函数load读取文本文件中的数据,或通过自定义函数生成模拟信号数据。
2. 时域分析通过plot函数将信号数据在时域进行绘制,以观察信号的波形。
可以设置合适的坐标轴范围和标签,使图像更加清晰。
3. 信号预处理针对不同的信号特点,可以进行预处理操作,例如去除直流分量、滤波等。
这些操作可提高信号的频谱分析效果。
4. 计算DFT/FFT使用fft函数计算信号数据的DFT/FFT,并得到频谱。
将信号数据作为输入参数,设置采样频率和点数,计算得到频谱数据。
5. 频域分析通过plot函数将频谱数据在频域进行绘制,观察信号的频率特性。
可以设置合适的坐标轴范围和标签,使图像更加清晰。
6. 结果解读根据频谱图像,分析信号的频率成分、幅度分布和峰值位置。
基于MATLAB实现对语音信号频谱分析

的起点移至 处截取信号 ,再做傅里叶变换而得到
的一个频谱函数。这是直接将频率轴方向来理解的。
另一种解释是从时间轴方向来理解,当频率固定时,
例如
,则
可以看作是信号经过一个中心频
率为 的带通滤波器产生的输出。这是因为窗口函数
通常具有低通频率响应,而指数 对语音信号
有调制的作用,使频谱产生移位,即将 频谱中
对应于频率 的分量平移到零频。
3、短时傅里叶反变换(倒谱分析)
傅里叶变换建立了信号从时域到频域的变换桥
梁,而傅里叶反变换则建立了信号从频域到时域的
变换桥梁这两个域之间的变换为一对一映射关系。
我们知道,
可以看作是加窗后函数的傅里叶变
换,为了实现反变换,将
进行频率采样,即令
图2 频谱分析过程
,则有
2、短时傅里叶变换(频谱分析)
公司推出的一种面向工程和科学计算的交互式计算软 的录音机功能可以用麦克风直接录制一段女声“世界
件,它以矩阵运算为基础,把计算、可视化、程序设 上最遥远的距离不是生与死,而是我就站在你面前
计融合到了一个简单易用的交互式工作环境中。同时 你确不知道我爱你”,并保存为WAV 格式文件,供
由于Matlab是一个数据分析和处理功能十分强大的工程 MATLAB 相关函数直接读取、写入或播放。本文以
三、语音信号分析及MATLAB的实现 1、语音信号的频谱分析过程 傅里叶频谱分析是语音信号频域分析中广泛采用的 一种方法。语音波是一个非平稳过程,因此适用于周 期、瞬变或平稳随机信号的标准傅里叶变换不能直接 表示语音信号,而应该用短时傅里叶变换对语音信号 的频谱进行分析,相应的频谱称为“短时谱”。 进行频谱分析时,在时域数据进行短时FFT处理之 前都要进行加窗处理。在FFT处理之后,普通频谱分析 可以进行频域上的滤波处理,从而使频谱更加平滑。 最后IFFT处理观察恢复后的时域信号图形,频谱分析过 程(如图2所示)。
matlab对语音信号的频谱分析及滤波资料

一.综合实验题目应用MatLab对语音信号进行频谱分析及滤波二.主要内容录制一段个人自己的语音信号,并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;给定滤波器的性能指标,采用窗函数法和双线性变换设计滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号;课程设计应完成的工作:1、语音信号的采集;2、语音信号的频谱分析;3、数字滤波器的设计;4、对语音信号进行滤波处理;5、对滤波前后的语音信号频谱进行对比分析;三.具体要求1、学生能够根据设计内容积极主动查找相关资料;2、滤波器的性能指标可以根据实际情况作调整;3、对设计结果进行独立思考和分析;4、设计完成后,要提交相关的文档;1)课程设计报告书(纸质和电子版各一份,具体格式参照学校课程设计管理规定),报告内容要涵盖设计题目、设计任务、详细的设计过程、原理说明、频谱图的分析、调试总结、心得体会、参考文献(在报告中参考文献要做标注,不少于5篇)。
2)可运行的源程序代码(电子版)四.进度安排在基本要求的基础上,学生可根据个人对该课程设计的理解,添加一些新的内容。
五.成绩评定(1)平时成绩:无故旷课一次,平时成绩减半;无故旷课两次平时成绩为0分,无故旷课三次总成绩为0分。
迟到15分钟按旷课处理(2)设计成绩:按照实际的设计过程及最终的实现结果给出相应的成绩。
(3)设计报告成绩:按照提交报告的质量给出相应的成绩。
课程设计成绩=平时成绩(30%)+设计成绩(30%)+设计报告成绩(40%)目录第一节实验任务 (3)第二节实验原理 (3)2.1 采样频率、位数及采样定理 (3)2.2 时域信号的FFT分析 (4)2.3 IIR数字滤波器设计原理 (4)2.4 FIR数字滤波器设计原理 (4)第三节实验过程 (5)3.1原始语音信号采样后的时域、频域分析 (5)3.2采样后信号的FFT变换分析 (7)3.3双线性变换法设计IIR数字滤波器 (8)3.4窗函数法设计FIR数字滤波器 (11)第四节心得体会 (14)第五节参考文献 (15)应用MatLab对语音信号进行频谱分析及滤波第一节实验任务录制一段个人自己的语音信号,并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;给定滤波器的性能指标,采用窗函数法和双线性变换设计滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号。
应用Matlab对含噪声语音信号进行频谱分析及滤波

应用Matlab对含噪声语音信号进行频谱分析及滤波频谱分析是对信号的频率特性进行研究和描述的一种方法,而滤波是对信号进行去除或者强调特定频率成份的处理。
在语音信号处理中,频谱分析及滤波常用于去除噪声、增强语音信号的清晰度和可听度。
Matlab作为一种强大的科学计算软件,提供了丰富的工具和函数用于频谱分析和滤波。
下面将详细介绍如何使用Matlab对含噪声语音信号进行频谱分析及滤波的步骤和方法。
1. 导入语音信号首先,我们需要将含噪声的语音信号导入到Matlab中进行处理。
可以使用Matlab提供的`audioread()`函数读取语音文件,并将其存储为一个向量。
```matlab[y, Fs] = audioread('noisy_speech.wav');```其中,`y`是读取到的语音信号向量,`Fs`是采样率。
如果语音文件的采样率不是默认的16kHz,可以使用`resample()`函数调整采样率。
2. 绘制时域波形为了对语音信号有一个直观的了解,可以绘制其时域波形图。
使用Matlab的`plot()`函数可以实现这一目标。
```matlabt = (0:length(y)-1)/Fs;plot(t, y);xlabel('Time (s)');ylabel('Amplitude');title('Time Domain Waveform');```这段代码将绘制出含噪声语音信号的时域波形图,横轴表示时间,纵轴表示信号的幅值。
3. 进行频谱分析频谱分析可以匡助我们了解语音信号在不同频率上的能量分布情况。
在Matlab 中,可以使用`fft()`函数对语音信号进行傅里叶变换,得到其频谱。
```matlabN = length(y);Y = fft(y);P = abs(Y).^2/N;f = Fs*(0:(N/2))/N;plot(f, 10*log10(P(1:N/2+1)));xlabel('Frequency (Hz)');ylabel('Power (dB)');title('Power Spectrum');```上述代码将绘制出含噪声语音信号的功率谱图,横轴表示频率,纵轴表示功率(以分贝为单位)。
利用MATLAB软件对音频信号进行频谱分析与处理

利用MATLAB软件对音频信号进行频谱分析与处理一、简介频谱分析是通过对信号的频率成分进行分析,它允许我们了解信号的特性,计算信号的能量分布,同时还可以用来定位造成干扰的频率组件,以及检测和分析信号的变化。
MATLAB是一种编程语言和科学计算软件,它可以非常便捷地实现对音频信号的频谱分析和处理。
二、实现方法1.导入音频信号在使用MATLAB进行频谱分析时,首先需要先将音频信号导入MATLAB环境中。
可以使用audioplayer和audioread函数来完成这一步骤,示例代码如下:[audioData, fs] = audioread(‘AudioFile.wav’);player = audioplayer(audioData, fs);play(player);其中audioData表示从wav文件中读取的音频数据,fs表示采样率,player表示存储audioData和fs的audioplayer实例,play函数可以播放音频文件。
2.信号预处理针对所记录的音频信号,需要进行一些基本的信号处理操作,包括去噪、均衡、时域平均等。
去噪可以用MATLAB内置的函数完成,例如:audioData_NoiseRemoved = denoise(audioData,‘meanspectrum’);均衡是指将频谱的一些区域调整到更好的水平,可以用equalizer函数实现:audioData_Equalized = equalizer(audioData, ‘bandwidth’, 0.2);时域平均则可以使用conv函数实现:audioData_Meaned = conv(audioData, [1/N 1/N ... 1/N]);3.频谱分析频谱分析的主要工作是计算信号的谱密度,也就是每一个频率分量的能量。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字信号处理结课报告设计题目:基于MATLAB的语音信号的频谱分析姓名:专业班级:学号:成绩:指导教师:日期: 2013 年 11 月 30 日1.课程设计目的综合运用数学信号处理的理论知识进行语音信号的频谱分析,通过理论推导得出相应结论,再利用MATLAB作为编程工具进行计算机实现,从而加深对所学知识的理解,建立概念。
2.理解设计基本要求1)熟悉离散信号和系统的时域特性。
2)熟悉线性卷积和相关的计算编程方法。
3)掌握序列傅里叶变换的计算机实现方法,利用序列傅里叶变换对离散信号、系统和系统的响应进行频域分析。
4)学会MATLAB的使用,掌握MATLAB的程序设计方法。
5)利用MATLAB对wav文件进行频谱分析。
6)分别用不同的滤波器对加噪语音信号进行滤波,选择最佳滤波器。
3.课程设计内容选择一个wav文件作为分析的对象,或录制一段语音信号,对其进行频谱分析,分别对加噪前后的语音信号进行频谱分析,再通过不同滤波器根据信号的频谱特点重构语音信号,选出最佳滤波方案。
4.课程设计实现步骤(1)语音信号的获取选择一个wav文件作为分析的对象,可以利用Windows下的录音机或其他软件,录制一段自己的话音,在MATLAB中,[y,fs,bits]=wavread('Blip',[N1 N2]);用于读取语音,采样值放在向量y中,fs表示采样频率(Hz),bits表示采样位数。
[N1 N2]表示读取的值从N1点到N2点的值。
sound(y);用于对声音的回放。
向量y则就代表了一个信号,也即一个复杂的“函数表达式”,也可以说像处理一个信号的表达式一样处理这个声音信号。
下面是语音信号在MATLAB中的语言程序,它实现了语音的读入与打开,并绘出了语音信号时域波形,然后对语音信号进行频谱分析。
在MATLAB中,可以利用函数fft对信号进行快速傅里叶变化,得到信号的频谱特性。
在频谱特性中分析最大值的位置(可能有几个),它代表的频率和时域的采样时间有关,相邻的两点之间的距离为。
其中,N是离散傅里叶变换用的点数,是采样的时间,前面在读取 wav文件时得到了采样频率。
既然知道了该声波的频谱,按频率就可以反演它的时域值,利用以上分析的主要峰值来重构声波。
由于没有考虑相位和其他的频谱分量,所以波形和原来的波形相差甚大,但大体的频率是没有错的。
fs=25600; %语音信号采样频率为25600[x,fs,bits]=wavread('C:\windows\system32\config\systemprofile\Des ktop\mayue.wav');sound(x,fs,bits); %播放语音信号y1=fft(x,4096); %对信号做2048点FFT变换f=fs*(0:2047)/4096;figure(1)magy1=abs(y1);angy1=angle(y1);subplot(3,1,1),plot(x);title('原始信号波形')subplot(3,1,2),plot(magy1);title('原始信号幅值') subplot(3,1,3),plot(angy1);title('原始信号相位') figure(2)freqz(x) %绘制原始语音信号的频率响应图title('频率响应图')figure(3)plot(f,abs(y1(1:2048)));title('原始语音信号频谱')xlabel('Hz');ylabel('fudu');axis([0 4500 0 400])图1.1原始信号波形、幅值和相位图图1.2频率响应图图1.3原始语音信号频谱(2)wav语音信号加噪声在MATLAB软件平台下,给原始的语音信号叠加上噪声,噪声类型分为如下几种:1)单频噪色(正弦干扰);2)高斯随机噪声。
绘出加噪声后的语音信号时域和频谱图,在视觉上与原始语音信号图形对比,也可通过Windows播放软件从听觉上进行对比,分析并体会含噪语音信号频谱和时域波形的改变。
本实验采用正弦干扰。
clc;clear;fs=22050; %语音信号采样频率为22050[x,fs,bits]=wavread('C:\windows\system32\config\systemprofile\Des ktop\mayue.wav'); %读取语音信号的数据,赋给变量xy1=fft(x,4096); %对信号做4096点FFT变换f=fs*(0:511)/4096;t=(0:length(x)-1)/22050;x1=[0.05*sin(2*pi*10000*t)]';x0=x(:,1);x2=x1+x0;sound(x2,fs,bits);figure(1)subplot(2,1,1)plot(x) %做原始语音信号的时域图形title('原语音信号时域图')subplot(2,1,2)plot(x2) %做原始语音信号的时域图形title('加高斯噪声后语音信号时域图')xlabel('time n');ylabel('fudu');y2=fft(x2,4096);figure(2)subplot(2,1,1)plot(abs(y1))title('原始语音信号频谱');xlabel('Hz');ylabel('fudu');subplot(2,1,2)plot(abs(y2))title('加噪语音信号频谱');xlabel('Hz');ylabel('fudu');axis([0 4500 0 300]);wavwrite(x2,fs,'C:\windows\system32\config\systemprofile\Desktop\加噪.wav');图1.4语音信号时域图图1.5语音信号频谱图(3)IIR数字滤波器的设计:分别利用巴特沃斯滤波器、切比雪夫I型和II型滤波器、椭圆滤波器进行滤波,写出详细的分析结果。
巴特沃斯低通滤波对加入高斯随机噪声和正弦噪声的语音信号进行滤波。
用双线性变换法设计了巴特沃斯数字低通IIR滤波器对两加噪语音信号进行滤波,并绘制了巴特沃斯低通滤波器的幅度图和两加噪语音信号滤波前后的时域图和频谱图。
clear all;fb = 1000;fc = 1200;fs = 22050;wp=0.1*pi;ws=0.4*pi;Rp=1;Rs=15;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'); %选择滤波器的最小阶数[Z,P,K]=buttap(N); %创建butterworth模拟滤波器[Bap,Aap]=zp2tf(Z,P,K);[b,a]=lp2lp(Bap,Aap,Wn);[bd,ad]=bilinear(b,a,Fs); %用双线性变换法实现模拟滤波器到数字滤波器的转换[h,w]=freqz(bd,ad);figure(1)subplot(111);plot(w*fs/(2*pi),abs(h))grid;title('滤波器的性能分析');pause;figure(2)[x,fs,bits]=wavread('C:\windows\system32\config\systemprofile\Des ktop\加噪.wav');n=length(x);f=fs*(0:(n/2-1))/n;X=fft(x);z=filter(bd,ad,x);subplot(211);plot(x);title('原始信号的波形');subplot(212);plot(z);title('滤波后信号的波形');pause;figure(3)sound(z,fs,bits);subplot(211);plot(f,abs(X(1:n/2)));title('原始信号的频谱');xlabel('Hz');Z=fft(z);subplot(212);plot(f,abs(Z(1:n/2)));title('滤波后的信号频谱');xlabel('Hz');wavwrite(z,fs,C:\windows\system32\config\systemprofile\Desktop\巴滤.wav');图1.6滤波器的性能分析图1.7滤波前后信号分析波形图图1.8滤波前后信号频谱图(4)FIR数字滤波器的设计:分别利用矩形窗、三角形窗、汉明窗、哈明窗进行滤波,写出几种滤波器的优缺点,写出详细的分析结果。
汉明窗的FIR低通滤波使用窗函数法,选用海明窗设计了数字FIR低通滤波器对加了正弦噪声的语音信号进行滤波,并绘制了滤波器滤波后的语音信号时域图和频谱图。
%FIR滤波fs=22050;[x,fs,bits]=wavread('C:\windows\system32\config\systemprofile\Des ktop\加噪.wav');wp=0.25*pi;ws=0.3*pi;wdelta=ws-wp;N=ceil(6.6*pi/wdelta); %取整t=0:(size(x)-1);wn=(0.2+0.3)*pi/2;b=fir1(N,wn/pi,hamming(N+1)); %选择窗函数,并归一化截止频率f1=fftfilt(b,x);figure(1)freqz(b,1,512)[h1,w1]=freqz(b,1);plot(w1*fs/(2*pi),20*log10(abs(h1)));figure(2)subplot(2,1,1)plot(t,x)title('滤波前的时域波形');subplot(2,1,2)plot(t,f1);title('滤波后的时域波形');sound(f1); %播放滤波后的语音信号F0=fft(f1,1024);f=fs*(0:511)/1024;figure(3)y2=fft(x,1024);subplot(2,1,1);plot(f,abs(y2(1:512))); %画出滤波前的频谱图title('滤波前的频谱')xlabel('Hz');ylabel('fuzhi');subplot(2,1,2)F1=plot(f,abs(F0(1:512))); %画出滤波后的频谱图title('滤波后的频谱')xlabel('Hz');ylabel('fuzhi');wavwrite(f1,fs,'C:\windows\system32\config\systemprofile\Desktop\F滤.wav');图1.9语音信号波形图1.10滤波前后时域波形图1.11滤波前后频谱图5.课程设计心得体会本设计采用了高效快捷的开发工具——MATLAB,实现了语音信号的采集,对语音信号加噪声及设计滤波器滤除噪声的一系列工作。