应用matlab对语音信号进行频谱分析及滤波.

合集下载

应用Matlab对信号进行频谱分析及滤波程序

应用Matlab对信号进行频谱分析及滤波程序

完整的程序%写上标题%设计低通滤波器:[N,Wc]=buttord()%估算得到Butterworth低通滤波器的最小阶数N和3dB截止频率Wc[a,b]=butter(N,Wc); %设计Butterworth低通滤波器[h,f]=freqz(); %求数字低通滤波器的频率响应figure(2); % 打开窗口2subplot(221); %图形显示分割窗口plot(f,abs(h)); %绘制Butterworth低通滤波器的幅频响应图title(巴氏低通滤波器'');grid; %绘制带网格的图像sf=filter(a,b,s); %叠加函数S经过低通滤波器以后的新函数subplot(222);plot(t,sf); %绘制叠加函数S经过低通滤波器以后的时域图形xlabel('时间 (seconds)');ylabel('时间按幅度');SF=fft(sf,256); %对叠加函数S经过低通滤波器以后的新函数进行256点的基—2快速傅立叶变换w= %新信号角频率subplot(223);plot()); %绘制叠加函数S经过低通滤波器以后的频谱图title('低通滤波后的频谱图');%设计高通滤波器[N,Wc]=buttord()%估算得到Butterworth高通滤波器的最小阶数N和3dB截止频率Wc[a,b]=butter(N,Wc,'high'); %设计Butterworth高通滤波器[h,f]=freqz(); %求数字高通滤波器的频率响应figure(3);subplot(221);plot()); %绘制Butterworth高通滤波器的幅频响应图title('巴氏高通滤波器');grid; %绘制带网格的图像sf=filter(); %叠加函数S经过高通滤波器以后的新函数subplot(222);plot(t,sf); ;%绘制叠加函数S经过高通滤波器以后的时域图形xlabel('Time(seconds)');ylabel('Time waveform');w; %新信号角频率subplot(223);plot()); %绘制叠加函数S经过高通滤波器以后的频谱图title('高通滤波后的频谱图');%设计带通滤波器[N,Wc]=buttord([)%估算得到Butterworth带通滤波器的最小阶数N和3dB截止频率Wc[a,b]=butter(N,Wc); %设计Butterworth带通滤波器[h,f]=freqz(); %求数字带通滤波器的频率响应figure(4);subplot(221);plot(f,abs(h)); %绘制Butterworth带通滤波器的幅频响应图title('butter bandpass filter');grid; %绘制带网格的图像sf=filter(a,b,s); %叠加函数S经过带通滤波器以后的新函数subplot(222);plot(t,sf); %绘制叠加函数S经过带通滤波器以后的时域图形xlabel('Time(seconds)');ylabel('Time waveform');SF=fft(); %对叠加函数S经过带通滤波器以后的新函数进行256点的基—2快速傅立叶变换w=( %新信号角频率subplot(223);plot(')); %绘制叠加函数S经过带通滤波器以后的频谱图title('带通滤波后的频谱图');。

应用Matlab对含噪声语音信号进行频谱分析及滤波

应用Matlab对含噪声语音信号进行频谱分析及滤波

应用Matlab对含噪声语音信号进行频谱分析及滤波应用Matlab对含噪声的语音信号进行频谱分析及滤波一、实验内容录制一段个人自己的语音信号,并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;在语音信号中增加正弦噪声信号(自己设置几个频率的正弦信号),对加入噪声信号后的语音信号进行频谱分析;给定滤波器的性能指标,采用窗函数法和双线性变换设计数字滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比试听,分析信号的变化。

二、实现步骤1.语音信号的采集利用Windows下的录音机,录制一段自己的话音,时间在1 s内。

然后在Matlab软件平台下,利用函数wavread对语音信号进行采样,(可用默认的采样频率或者自己设定采样频率)。

2.语音信号的频谱分析要求首先画出语音信号的时域波形;然后对语音号进行快速傅里叶变换,得到信号的频谱特性。

在采集得到的语音信号中加入正弦噪声信号,然后对加入噪声信号后的语音号进行快速傅里叶变换,得到信号的频谱特性。

并利用sound试听前后语音信号的不同。

分别设计IIR和FIR滤波器,对加入噪声信号的语音信号进行去噪,画出并分析去噪后的语音信号的频谱,并进行前后试听对比。

3.数字滤波器设计给出数字低通滤波器性能指标:如,通带截止频率fp=10000 Hz,阻带截止频率fs=12000 Hz(可根据自己所加入噪声信号的频率进行阻带截止频率设置),阻带最小衰减Rs=50 dB,通带最大衰减Rp =3 dB(也可自己设置),采样频率根据自己语音信号采样频率设定。

报告内容一、实验原理含噪声语音信号通过低通滤波器,高频的噪声信号会被过滤掉,得到清晰的无噪声语音信号。

二、实验内容录制一段个人自己的语音信号,并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;在语音信号中增加正弦噪声信号(自己设置几个频率的正弦信号),对加入噪声信号后的语音信号进行频谱分析;给定滤波器的性能指标,采用窗函数法和双线性变换设计数字滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比试听,分析信号的变化。

matlab对语音信号的频谱分析及滤波资料

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作为一种强大的科学计算软件,提供了丰富的工具和函数用于频谱分析和滤波。

下面将详细介绍如何使用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软件对音频信号进行频谱分析与处理一、简介频谱分析是通过对信号的频率成分进行分析,它允许我们了解信号的特性,计算信号的能量分布,同时还可以用来定位造成干扰的频率组件,以及检测和分析信号的变化。

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.频谱分析频谱分析的主要工作是计算信号的谱密度,也就是每一个频率分量的能量。

利用MATLAB软件对音频信号进行频谱分析与处理

利用MATLAB软件对音频信号进行频谱分析与处理

本科毕业设计说明书(论文)第I 页共I 页毕业设计说明书(论文)外文摘要本科毕业设计说明书(论文)第II 页共I 页目次1 引言 (1)1.1 研究背景 (1)1.2 本文主要研究内容 (1)2 MATLAB简介 (3)2.1 什么是MATLAB (3)2.2 MATLAB的发展历史 (3)2.3 MATLAB系统 (4)2.4 MATLAB的主要功能和特性 (6)3. 数字滤波器简介 (8)3.1 数字滤波器的定义及分类 (8)3.2 数字滤波器设计方法 (10)4.音频信号频谱分析的软件实现 (13)4.1 数字滤波器设计 (13)4.2 音频信号频谱分析 (17)4.3 界面设计 (37)结论 (43)致谢 (44)参考文献 (45)本科毕业设计说明书(论文)第1 页共45 页1 引言1.1 研究背景在计算机技术日新月异的今天,计算机已同人们的日常生活和工作越来越紧密的联系在一起。

而在工程计算领域中,计算机技术的应用正逐步把科技人员从繁重的计算工作中解放出来。

在科学研究和工程应用的过程中,往往需要进行大量的数学计算,传统的纸笔和计算器已根本不能满足海量计算的要求。

MATLAB的产生是与数学计算紧密联系在一起的, MATLAB由主包和功能各异的工具箱组成,其基本数据结构是矩阵,它具有非常强大的计算功能,正是凭借其杰出的性能,MATLAB现在已成为世界上应用最广泛的工程计算应用软件之一。

MATLAB在国外的高校已成为大学生、硕士生、博士生必须掌握的基本程序设计语言。

信号处理是科学研究和工程技术许多领域都需要进行的一个重要环节,这种处理包括信号的检测、变换、滤波、传输、信号提取等。

传统上对信号的处理大都采用模拟系统来实现,然而,随着人们对信号处理要求的不断提高,以及模拟信号处理中一些不可克服的缺点,对信号的许多处理转而采用数字的方法来进行。

信号处理技术是开发具有自主知识产权的各类先进产品的瓶颈,是一项关键技术。

应用Matlab对语音信号进行频谱分析及滤波

应用Matlab对语音信号进行频谱分析及滤波

数字信号处理课程设计报告书应用Matlab对语音信号进行频谱分析及滤波题目:应用Matlab 对语音信号进行频谱分析及滤波一、课程设计内容录制一段个人自己的语音信号,画出此语音信号的时域波形和频谱图;给定滤波器的性能指标,设计IIR 和FIR 滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号;最后,设计一个信号处理系统界面。

二、课程设计目的1、进一步巩固数字信号处理的基本概念、理论、分析方法和实现方法;2、增强应用Mat lab 语言编写数字信号处理的应用程序及分析、解决实际问题的能力。

三、设计内容及步骤1、语音信号的采集利用matlab 的内置函数,设计一个录音器,录制一段自己的话音,时间在1s 内。

然后在Matlab 软件平台下,利用函数w avread 提取录制的语音信号,记住采样频率和采样点数。

说明:由于录音程序录制后用w avwrite 和w avrec ord 时一直出现错误,无法运行,在这里用[filen ame,filepath]=uig etfile('.w av','Open w av file'); [y,fs,nbits]=w avread([filepath,filen ame]);格式打开本地一个已录制好的w av 文件进行分析。

2 、语音信号的频谱分析首先画出语音信号的时域波形;然后对语音号进行快速傅里叶变换,得到信号的频谱特性,从而加深对频谱特性的理解。

3、设计数字滤波器和画出其频率响应用窗函数法和双线性变换法设计下面要求的3种滤波器。

(1)低通滤波器性能指标通带截止频率c f =1000Hz ,阻带截止频率st f =1200 Hz ,通带最大衰减1δ=1dB ,阻带最小衰减2δ=100d B 。

(2)高通滤波器性能指标通带截止频率c f =5000Hz ,阻带截止频率st f =3000 通带衰减1δ≤1dB ,阻带衰减2δ≥100d B 。

基于MATLAB的语音信号分析及滤波

基于MATLAB的语音信号分析及滤波

基于MATLAB的语音信号分析及滤波MATLAB是一种强大的数值计算和数据分析工具,也可以用于语音信号的分析和滤波。

本文将介绍基于MATLAB的语音信号分析和滤波方法。

首先,我们需要将语音信号导入MATLAB中进行分析。

语音信号可以以.wav格式的文件保存,可以使用`audioread`函数将.wav文件导入MATLAB中。

例如:```matlab[x, fs] = audioread('speech.wav');```其中,`x`是导入的语音信号,`fs`是采样率。

接下来,我们可以通过绘制波形图和频谱图来对语音信号进行分析。

波形图可以用`plot`函数绘制,频谱图可以用`spectrogram`函数绘制。

```matlabsubplot(2, 1, 1);plot(x);title('Waveform');xlabel('Sample');ylabel('Amplitude');subplot(2, 1, 2);spectrogram(x, hann(256), 128, 512, fs, 'yaxis');title('Spectrogram');```绘制的波形图显示了语音信号的振幅随时间的变化,而频谱图显示了语音信号在不同频率上的能量分布。

在分析完语音信号的基本特征后,我们可以应用滤波器对语音信号进行滤波。

常用的语音信号滤波器包括低通滤波器、高通滤波器和带通滤波器。

可以使用MATLAB中的`filter`函数来应用这些滤波器。

例如,下面的代码展示了如何使用低通滤波器对语音信号进行滤波:```matlabfc = 4000; % 截止频率为4000 Hz[b, a] = butter(6, fc/(fs/2), 'low'); % 6阶Butterworth低通滤波器filtered_x = filter(b, a, x);figure;subplot(2, 1, 1);plot(x);title('Original Signal');xlabel('Sample');ylabel('Amplitude');subplot(2, 1, 2);plot(filtered_x);title('Filtered Signal');xlabel('Sample');ylabel('Amplitude');```通过调整截止频率和滤波器阶数,可以实现不同的滤波效果。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数字信号处理—综合实验报告综合实验名称:应用MatLab对语音信号进行频谱分析及滤波系:学生姓名:班级:学号:成绩:指导教师:开课时间学年学期目录一.综合实验题目 (1)二、综合实验目的和意义 (1)2.1 综合实验目的 (1)2.2 综合实验的意义 (1)三.综合实验的主要内容和要求 (1)3.2 综合实验的要求: (2)四.实验的原理 (2)4.1 数字滤波器的概念 (2)4.2 数字滤波器的分类 (2)(1)根据单位冲激响应h(n)的时间特性分类 (2)五.实验的步骤 (3)下面对各步骤加以具体说明。

5.1语音信号的采集 (3)5.2 语音信号的频谱分析; (3)5.3 设计数字滤波器和画出其频率响应 (5)5.3.1设计数字滤波器的性能指标: (5)5.3.2 用Matlab设计数字滤波器 (6)5.6 设计系统界面 (19)六、心得体会 (20)参考文献: (21)一.综合实验题目应用MatLab对语音信号进行频谱分析及滤波二、综合实验目的和意义2.1 综合实验目的为了巩固所学的数字信号处理理论知识,使学生对信号的采集、处理、传输、显示和存储等有一个系统的掌握和理解,再者,加强学生对Matlab软件在信号分析和处理的运用综合运用数字信号处理的理论知识进行频谱分析和滤波器设计,通过理论推导得出相应结论,再利用 MATLAB 作为编程工具进行计算机实现,从而加深对所学知识的理解,建立概念。

2.2 综合实验的意义语言是我们人类所特有的功能,它是传承和记载人类几千年文明史,没有语言就没有我们今天人类的文明。

语音是语言最基本的表现形式,是相互传递信息最重要的手段,是人类最重要、最有效、最常用和最方便的交换信息的形式。

语音信号处理属于信息科学的一个重要分支,大规模集成技术的高度发展和计算机技术的飞速前进,推动了这一技术的发展;它是研究用数字信号处理技术对语音信号进行处理的一门新兴学科,同时又是综合性的多学科领域和涉及面很广的交叉学科,因此我们进行语言信号处理具有时代的意义。

三.综合实验的主要内容和要求3.1综合实验的主要内容:录制一段个人自己的语音信号,并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;给定滤波器的性能指标,采用窗函数法和双线性变换设计滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号;综合实验应完成的工作:(1)语音信号的采集;(2)语音信号的频谱分析;(3)数字滤波器的设计;(4)对语音信号进行滤波处理;(5)对滤波前后的语音信号频谱进行对比分析;3.2 综合实验的要求:(1)学生能够根据设计内容积极主动查找相关资料;(2)滤波器的性能指标可以根据实际情况作调整;(3)对设计结果进行独立思考和分析;(4)设计完成后,要提交相关的文档;①综合实验报告书(纸质和电子版各一份,具体格式参照学校课程设计管理规定),报告内容要涵盖设计题目、设计任务、详细的设计过程、原理说明、、频谱图的分析、调试总结、心得体会、参考文献(在报告中参考文献要做标注,不少于5篇)。

②可运行的源程序代码(电子版)(5)在基本要求的基础上,学生可以根据个人对该综合实验的理解,添加一些新的内容。

四.实验的原理4.1 数字滤波器的概念:若滤波器的输入、输出都是离散时间信号,那么该滤波器的单位冲激响应h(n)也必然是离散的,这种滤波器称为数字滤波器(DF)。

【1】数字滤波器实质上是一种运算过程——用来描述离散系统输入与输出关系的差分方程的计算或卷积计算。

数字滤波器的实质是用一有限精度算法实现的离散时间线性时不变系统,以完成对信号进行滤波处理的过程。

它是数字信号处理的一个重要分支,具有稳定性好、精度高、灵活性强、体积小、质量轻等诸多优点。

【2】4.2 数字滤波器的分类:数字滤波器根据不同的分类标准可以将滤波器分成不同的类别。

(1)根据单位冲激响应h(n)的时间特性分类无限冲激响应(IIR)数字滤波器有限冲激响应(FIR)数字滤波器[1](2)根据实现方法和形式分类递归型数字滤波器非递归型数字滤波器快速卷积型(3)根据频率特性分类低通数字滤波器、高通数字滤波器、带通数字波器4.3 滤波器的作用:滤波器是一种用来消除干扰杂讯的器件,将输入或输出经过过滤而得到纯净的直流电【3】。

对特定频率的频点或该频点以外的频率进行有效滤除的电路,就是滤波器,其功能就是得到一个特定频率或消除一个特定频率。

五.实验的步骤录制一段个人自己的语音信号,并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;给定滤波器的性能指标,采用窗函数法和双线性变换设计滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号;最后,设计一个信号处理系统界面。

下面对各步骤加以具体说明。

5.1语音信号的采集:利用 PC机上的声卡和 Windows操作系统可以进行数字信号的采集。

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

按下录音按钮,对话筒读一段话,读完后停止录音,屏幕左侧将显示所录声音的长度。

【1】5.2 语音信号的频谱分析:(1)首先画出由wavread函数采样后的信号的时域波形和它的频域响应波形;语音信号的程序如下:[x1,fs,bits]=wavread('c:\wudan2.wav'); %读取语音信号的数据,赋给变量x1figure(20)plot(x1) %做原始语音信号以44.1k采样后的时域图形title('原始语音采样后时域信号');xlabel('时间轴n');ylabel('幅值A');figure(21)freqz(x1) %绘制原始语音信号采样后的频率响应图title('原始语音信号采样后频率响应图');运行结果:图1图2(2) 对语音信号进行FFT变换,得到FFT频谱特性曲线,与原语音信号的频谱特性曲线进行比较。

语音信号FFT的程序如下:[x1,fs,bits]=wavread(' c:\wudan2.wav'); %读取语音信号的数据,赋给变量x1y1=fft(x1,1024); %对采样后信号做1024点FFT变换f=fs*(0:511)/1024;figure(19)subplot(2,1,1);plot(f,abs(y1(1:512)));title('原始语音信号频谱')xlabel('频率/Hz');ylabel('幅值')subplot(2,1,2);plot(abs(y1(1:1024))) %采样后信号的FFT频谱图title('原始语音信号FFT频谱')xlabel('点数N');ylabel('幅值');运行结果:图35.3 设计数字滤波器和画出其频率响应5.3.1设计数字滤波器的性能指标:①低通滤波器性能指标fb=1000Hz,fc=1200Hz, As=100db,Ap=1db。

②高通滤波器性能指标 fs=4800Hz,fb=5000Hz,As=100db,Ap=1db。

③带通滤波器性能指标 fb1=1200Hz,fb2=3000Hz,fc1=1000Hz,fc2=3200Hz,As=100db,Ap=1db。

5.3.2 用Matlab设计数字滤波器①用双线性变换法设计上面要求的3种滤波器。

在Matlab中,可以利用函数butter,cheby1和ellip设计IIR滤波器;利用Matlab中的函数frepz画出各滤波器的频率响应。

【2】②用窗函数法设计上面要求的3种滤波器。

在Matlab中,可以利用函数fir1设计FIR滤波器;利用Matlab中的函数freqz画出各滤波器的频率响应。

5.4对语音信号进行滤波处理用自己设计的各滤波器分别对采集的信号进行滤波,在Matlab中,FIR滤波器利用函数fftfilt对信号进行滤波,IIR滤波器利用函数filter对信号进行滤波。

并比较滤波前后语音信号的波形及频谱。

【4】IIR低通滤波器程序如下:fs=22050;[x2]=wavread('c:\wudan2.wav');Ts=1/fs;R1=10;wp=2*pi*1000/fs;ws=2*pi*1200/fs;Rp=1;Rl=100;wp1=2/Ts*tan(wp/2); %将模拟指标转换成数字指标ws1=2/Ts*tan(ws/2);[N,Wn]=buttord(wp1,ws1,Rp,R1,'s'); %选择滤波器的最小阶数[Z,P,K]=buttap(N); %创建butterworth模拟滤波器[Bap,Aap]=zp2tf(Z,P,K);[b,a]=lp2lp(Bap,Aap,Wn);[bz,az]=bilinear(b,a,fs); %用双线性变换法实现模拟滤波器到数字滤波器的转换[H,W]=freqz(bz,az); %绘制频率响应曲线figure(16)plot(W*fs/(2*pi),abs(H))gridxlabel('频率/Hz')ylabel('频率响应幅度')title('IIR低通滤波器')f1=filter(bz,az,x2);figure(17)subplot(2,1,1)plot(x2) %画出滤波前的时域图title('IIR低通滤波器滤波前的时域波形');subplot(2,1,2)plot(f1); %画出滤波后的时域图title('IIR低通滤波器滤波后的时域波形');sound(f1,44100); %播放滤波后的信号F0=fft(f1,1024);f=fs*(0:511)/1024;figure(18)y2=fft(x2,1024);subplot(2,1,1);plot(f,abs(y2(1:512))); %画出滤波前的频谱图title('IIR低通滤波器滤波前的频谱')xlabel('频率/Hz');ylabel('幅值');subplot(2,1,2)F1=plot(f,abs(F0(1:512))); %画出滤波后的频谱图title('IIR低通滤波器滤波后的频谱')xlabel('频率/Hz');ylabel('幅值');【5】运行结果:图4图5图6IIR高通滤波器程序如下:fs=22050;x1=wavread('c:\wudan2.wav');Fs=22050;Ts=1/Fs;R1=50;Wp=2*pi*5000/fs;Ws=2*pi*4800/fs;Rp=1;Rl=100;Wp1=2/Ts*tan(Wp/2); %将模拟指标转换成数字指标Ws1=2/Ts*tan(Ws/2);[N,Wn]=cheb2ord(Wp1,Ws1,Rp,Rl,'s'); %选择滤波器的最小阶数[Z,P,K]=cheb2ap(N,Rl); %创建切比雪夫模拟滤波器[Bap,Aap]=zp2tf(Z,P,K);[b,a]=lp2hp(Bap,Aap,Wn);[bz,az]=bilinear(b,a,Fs); %用双线性变换法实现模拟滤波器到数字滤波器的转换[H,W]=freqz(bz,az); %绘制频率响应曲线figure(13)plot(W*fs/(2*pi),abs(H))gridxlabel('频率/Hz')ylabel('频率响应幅度')title('IIR高通滤波器')f1=filter(bz,az,x1);figure(14)subplot(2,1,1)plot(x1) %画出滤波前的时域图title('IIR高通滤波器滤波前的时域波形');subplot(2,1,2)plot(f1); %画出滤波后的时域图title('IIR高通滤波器滤波后的时域波形');sound(f1,44100); %播放滤波后的信号F0=fft(f1,1024);f=fs*(0:511)/1024;figure(15)y2=fft(x1,1024);subplot(2,1,1);plot(f,abs(y2(1:512))); %画出滤波前的频谱图title('IIR高通滤波器滤波前的频谱')xlabel('频率/Hz');ylabel('幅值');subplot(2,1,2)plot(f,abs(F0(1:512))); %画出滤波后的频谱图title('IIR高通滤波器滤波后的频谱')xlabel('频率/Hz');ylabel('幅值');运行结果:图7图8图9IIR带通滤波器程序如下:fs=22050;x1=wavread('c:\wudan2.wav');Fs=22050;Ts=1/Fs;R1=30;fb1=1200;fb2=3000;fc1=1000;fc2=3200;fs=22050;W1=2*fb1*pi/fs;W2=2*fc1*pi/fs;W3=2*fb2*pi/fs;W4=2*fc2*pi/fs;Wp=[W1,W3];Ws=[W2,W4];Rp=1;Rl=100;Wp1=2/Ts*tan(Wp/2); %将模拟指标转换成数字指标Ws1=2/Ts*tan(Ws/2);[N,Wn]=cheb2ord(Wp1,Ws1,Rp,R1,'s'); %选择滤波器的最小阶数[Z,P,K]=cheb2ap(N,Rl); %创建切比雪夫模拟滤波器[Bap,Aap]=zp2tf(Z,P,K);[b,a]=lp2bp(Bap,Aap,2100*2*pi,1800*2*pi);[bz,az]=bilinear(b,a,Fs); %用双线性变换法实现模拟滤波器到数字滤波器的转换[H,W]=freqz(bz,az); %绘制频率响应曲线figure(10)plot(W*fs/(2*pi),abs(H))gridxlabel('频率/Hz')ylabel('频率响应幅度')title('IIR带通滤波器')f1=filter(bz,az,x1);figure(11)subplot(2,1,1)plot(x1) %画出滤波前的时域图title('IIR带通滤波器滤波前的时域波形');subplot(2,1,2)plot(f1); %画出滤波后的时域图title('IIR带通滤波器滤波后的时域波形');sound(f1,44100); %播放滤波后的信号F0=fft(f1,1024);f=fs*(0:511)/1024;figure(12)y2=fft(x1,1024);subplot(2,1,1);plot(f,abs(y2(1:512))); %画出滤波前的频谱图title('IIR带通滤波器滤波前的频谱')xlabel('频率/Hz');ylabel('幅值');subplot(2,1,2)plot(f,abs(F0(1:512))); %画出滤波后的频谱图title('IIR带通滤波器滤波后的频谱')xlabel('频率/Hz');ylabel('幅值'); 【6】运行结果:图10图11图12FIR低通滤波器程序如下:fs=10000;x1=wavread('c:\wudan2.wav');wp=2*pi*1000/fs;ws=2*pi*1200/fs;Rp=1;Rs=100;wdelta=ws-wp;N=ceil(8*pi/wdelta); %取整wn=(wp+ws)/2;[b,a]=fir1(N,wn/pi,hamming(N+1)); %选择窗函数,并归一化截止频率figure(7)freqz(b,a,512);title('FIR低通滤波器');f2=filter(b,a,x1);figure(8)subplot(2,1,1)plot(x1)title('FIR低通滤波器滤波前的时域波形');subplot(2,1,2)plot(f2);title('FIR低通滤波器滤波后的时域波形');sound(f2,44100); %播放滤波后的语音信号F0=fft(f2,1024);f=fs*(0:511)/1024;figure(9)y2=fft(x1,1024);subplot(2,1,1);plot(f,abs(y2(1:512)));title('FIR低通滤波器滤波前的频谱')xlabel('频率/Hz');ylabel('幅值');subplot(2,1,2)F2=plot(f,abs(F0(1:512)));title('FIR低通滤波器滤波后的频谱')xlabel('频率/Hz');ylabel('幅值'); 【7】运行结果:图13图14图15 FIR高通滤波器程序如下:fs=22050;x1=wavread('c:\wudan2.wav');wp=2*pi*5000/fs;ws=2*pi*4800/fs;Rp=1;Rs=100;wdelta=wp-ws;N=ceil(8*pi/wdelta); %取整wn=(wp+ws)/2;[b,a]=fir1(N,wn/pi,'high');figure(4)freqz(b,a,512);title('FIR高通滤波器');f2=filter(b,a,x1);figure(5)subplot(2,1,1)plot(x1)title('FIR高通滤波器滤波前的时域波形');subplot(2,1,2)plot(f2);title('FIR高通滤波器滤波后的时域波形');sound(f2,44100); %播放滤波后的语音信号F0=fft(f2,1024);f=fs*(0:511)/1024;figure(6)y2=fft(x1,1024);subplot(2,1,1);plot(f,abs(y2(1:512)));title('FIR高通滤波器滤波前的频谱')xlabel('频率/Hz');ylabel('幅值');subplot(2,1,2)F2=plot(f,abs(F0(1:512)));title('FIR高通滤波器滤波后的频谱')xlabel('频率/Hz');ylabel('幅值'); 【9】运行结果:图16图17图18 FIR带通滤波器程序如下:fs=22050;x1=wavread('c:\wudan2.wav');wp1=2*pi*1200/fs;wp2=2*pi*3000/fs;ws1=2*pi*1000/fs;ws2=2*pi*3200/fs;Rp=1;Rs=100;wp=(wp1+ws1)/2;ws=(wp2+ws2)/2;wdelta=wp1-ws1;N=ceil(8*pi/wdelta); %取整wn=[wp ws];[b,a]=fir1(N,wn/pi,'bandpass');figure(1)freqz(b,a,512);title('FIR带通滤波器');f2=filter(b,a,x1);figure(2)subplot(2,1,1)plot(x1)title('FIR带通滤波器滤波前的时域波形');subplot(2,1,2)plot(f2);title('FIR带通滤波器滤波后的时域波形');sound(f2,44100); %播放滤波后的语音信号F0=fft(f2,1024);f=fs*(0:511)/1024;figure(3)y2=fft(x1,1024);subplot(2,1,1);plot(f,abs(y2(1:512)));title('FIR带通滤波器滤波前的频谱')xlabel('频率/Hz');ylabel('幅值');subplot(2,1,2)plot(f,abs(F0(1:512)));title('FIR带通滤波器滤波后的频谱')xlabel('频率/Hz');ylabel('幅值');运行结果:图19图20图215.5 回放语音信号在Matlab中,函数sound可以对声音进行回放。

相关文档
最新文档