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

合集下载

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

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

探究性学习之二--应用MatLab对语音信号进行频谱分析及滤波一、课题目的1.通过课下的自我的学习,加深对书本理论知识的理解,提升自身的实际应用能力;2.巩固所学的数字信号处理理论知识,使自身对信号的采集、处理、传输、显示和存储等有一个系统的掌握和理解;3.培养自我学习的能力和对相关课程的兴趣;二、课题内容录制一段个人自己的语音信号,并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;给定滤波器的性能指标,采用窗函数法和双线性变换设计滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号;最后,设计一个信号处理系统界面。

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

然后在Matlab软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数。

通过wavread函数的使用,我们很快理解了采样频率、采样位数等概念。

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

程序如下:clc;clear;close all;fs=22050; %语音信号采样频率为22050x1=wavread('wo.wav'); %读取语音信号的数据,赋给变量x1sound(x1,22050); %播放语音信号y1=fft(x1,1024); %对信号做1024点FFT变换f=fs*(0:511)/1024;figure(1);plot(x1) %做原始语音信号的时域图形title('原始语音信号');xlabel('time n');ylabel('fuzhi n');figure(2);freqz(x1) %绘制原始语音信号的频率响应图title('频率响应图')figure(3);subplot(2,1,1);plot(abs(y1(1:512))) %做原始语音信号的FFT频谱图??title('原始语音信号FFT频谱');subplot(2,1,2);plot(f,abs(y1(1:512)));%同一个图???title('原始语音信号频谱')xlabel('Hz');ylabel('fuzhi'); 波形如下:-1-0.8-0.6-0.4-0.200.20.40.60.81原始语音信号time nf u z h i n-10-5054Normalized Frequency (⨯π rad/sample)P h a s e (d e g r e e s)-200204060Normalized Frequency (⨯π rad/sample)M a g n i t u d e (d B )频率响应图010203040原始语音信号FFT 频谱010203040原始语音信号频谱Hzf u z h i3. 滤波电路设计给出低通滤波器性能指标fb =1000 Hz ,fc =1200 Hz ,Rs =15 dB ,Rp =1 dB 。

MATLAB处理语音信号

MATLAB处理语音信号

MATLAB处理语⾳信号⼀、实验项⽬名称语⾳信号的处理⼆、实验⽬的综合运⽤数字信号处理课程的理论知识进⾏频谱分析以及滤波器设计,通过理论推导得出相应结论,并进⾏计算机仿真,从⽽复习巩固了课堂所学的理论知识,提⾼了对所学知识的综合应⽤能⼒。

三、实验内容1. 语⾳信号的采集2. 语⾳信号的频谱分析3. 设计数字滤波器和画出频率响应4. ⽤滤波器对信号进⾏滤波5. ⽐较滤波前后语⾳信号的波形及频谱6. 回放语⾳信号四、实验具体⽅案1.语⾳信号采集录制⼀段语⾳信号并保存为⽂件,长度控制在1秒,并对录制的信号进⾏采样;录制时使⽤Windows⾃带的录⾳机。

采样是将⼀个信号(即时间或空间上的连续函数)转换成⼀个数值序列(即时间或空间上的离散函数)。

采样定理指出,如果信号是带限的,并且采样频率⾼于信号带宽的两倍,那么,原来的连续信号可以从采样样本中完全重建出来。

如果信号带宽不到采样频率的⼀半(即奈奎斯特频率),那么此时这些离散的采样点能够完全表⽰原信号。

⾼于或处于奈奎斯特频率的频率分量会导致混叠现象。

⼤多数应⽤都要求避免混叠,混叠问题的严重程度与这些混叠频率分量的相对强度有关。

⽤Windows⾃带录⾳机录⼊⼀段⾳乐,2秒钟,⽤audioread读取⾳频内容,这⾥不使⽤waveread是因为他要求⾳频⽂件格式为.wav ,并且我进⾏了尝试但没有成功,画出⾳频信号的时域波形图[y1,fs]=audioread('F:\MATLAB\ren.m4a');figure(1);plot( y1 );title('Ô原语⾳信号时域波形图');xlabel('单位');ylabel('幅度');2.语⾳信号频谱分析⾸先画出语⾳信号的时域波形,然后对语⾳信号进⾏频谱分析。

在matlab中利⽤fft对信号进⾏快速傅⾥叶变换,得到信号的频谱特性。

Matlab的信号处理⼯具箱中的函数FFT可⽤于对序列的快速傅⾥叶变换分析,其调⽤格式是y=fft(x,N),其中,x是序列,y是序列的FFT变换结果,N为整数,代表做N点的FFT,若x为向量且长度⼩于N,则函数将x补零⾄长度N;若向量x长度⼤于N,则截断x使之长度为N。

用MATLAB设计对信号进行频谱分析和滤波处理的程序

用MATLAB设计对信号进行频谱分析和滤波处理的程序

用MATLAB设计对信号进行频谱分析和滤波处理的程序设计出一套完整的系统,对信号进行频谱分析和滤波处理:1.产生一个连续信号,包含低频,中频,高频分量,对其进行采样,进行频谱分析,分别设计三种高通,低通,带通滤波器对信号进行滤波处理,观察滤波后信号的频谱。

2.采集一段含有噪音的语音信号(可以录制含有噪音的信号,或者录制语音后再加进噪音信号),对其进行采样和频谱分析,根据分析结果设计出一合适的滤波器滤除噪音信号。

完整的程序%写上标题%设计低通滤波器:[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对语音信号进行频谱分析及滤波二.主要内容录制一段个人自己的语音信号,并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;给定滤波器的性能指标,采用窗函数法和双线性变换设计滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号;课程设计应完成的工作: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对语音信号进行频谱分析及滤波

数字信号处理课程设计报告书应用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');```通过调整截止频率和滤波器阶数,可以实现不同的滤波效果。

应用MATLAB对信号进行频谱分析及滤波

应用MATLAB对信号进行频谱分析及滤波

应用MATLAB对信号进行频谱分析及滤波频谱分析和滤波是信号处理中常用的技术,可以帮助我们了解信号的频率特性并对信号进行去噪或增强。

MATLAB是一个强大的数学计算和工程仿真软件,提供了各种工具和函数用于频谱分析和滤波。

频谱分析是通过将信号在频域上进行分解来研究信号的频率特性。

MATLAB提供了几种进行频谱分析的函数,包括FFT(快速傅里叶变换)、periodogram和spectrogram等。

下面将以FFT为例,介绍如何使用MATLAB进行频谱分析。

首先,我们需要先生成一个信号用于频谱分析。

可以使用MATLAB提供的随机信号生成函数来生成一个特定频率和幅度的信号。

例如,可以使用以下代码生成一个包含两个频率成分的信号:```MATLABFs=1000;%采样率t=0:1/Fs:1;%时间向量,从0秒到1秒,采样率为Fsf1=10;%第一个频率成分f2=50;%第二个频率成分A1=1;%第一个频率成分的幅度A2=0.5;%第二个频率成分的幅度x = A1*sin(2*pi*f1*t) + A2*sin(2*pi*f2*t);```上述代码生成了一个采样率为1000Hz的信号,包含10Hz和50Hz两个频率的成分。

接下来,我们可以使用MATLAB的FFT函数对信号进行频谱分析,并将频谱绘制出来。

FFT函数将信号从时域转换到频域,并返回频谱幅度和频率信息。

以下是使用FFT函数对上述生成的信号进行频谱分析的代码:```MATLABN = length(x); % 信号长度X = abs(fft(x))/N; % 计算FFTf=(0:N-1)*(Fs/N);%计算频率坐标plot(f,X)xlabel('频率(Hz)')ylabel('幅度')title('信号频谱')```上述代码中,我们首先计算FFT并将结果除以信号长度,以得到正确的幅度值。

然后,我们计算频率坐标,并将频谱幅度与频率绘制出来。

应用MATLAB对信号进行频谱分析及滤波

应用MATLAB对信号进行频谱分析及滤波

应用MATLAB对信号进行频谱分析及滤波fs=input('please input the fs:');%设定采样频率N=input('please input the N:');%设定数据长度t=0:0.001:1;f=100;%设定正弦信号频率%生成正弦信号x=sin(2*pi*f*t);figure(1);subplot(211);plot(t,x);%作正弦信号的时域波形axis([0,0.1,-1,1]);title('正弦信号时域波形');z=square(50*t);subplot(212)plot(t,z)axis([0,1,-2,2]);title('方波信号时域波形');grid;%进行FFT变换并做频谱图y=fft(x,N);%进行fft变换mag=abs(y);%求幅值f=(0:N-1)*fs/N;%横坐标频率的表达式为f=(0:M-1)*Fs/M; figure(2);subplot(211);plot(f,mag);%做频谱图axis([0,1000,0,200]);title('正弦信号幅频谱图');y1=fft(z,N);%进行fft变换mag=abs(y1);%求幅值f=(0:N-1)*fs/N;%横坐标频率的表达式为f=(0:M-1)*Fs/M; subplot(212);plot(f,mag);%做频谱图axis([0,1000,0,200]);title('方波信号幅频谱图');grid;%求功率谱sq=abs(y);power=sq.^2;figure(3)subplot(211);plot(f,power);title('正弦信号功率谱');grid;sq1=abs(y1);power1=sq1.^2;subplot(212);plot(f,power1);title('方波信号功率谱');grid;%用IFFT恢复原始信号xifft=ifft(y);magx=real(xifft);ti=[0:length(xifft)-1]/fs;figure(4);subplot(211);plot(ti,magx);axis([0,0.1,-1,1]);title('通过IFFT转换的正弦信号波形');zifft=ifft(y1);magz=real(zifft);ti1=[0:length(zifft)-1]/fs;subplot(212);plot(ti1,magz);title('通过IFFT转换的方波信号波形');grid;please input the fs:1000please input the N:1024。

MATLAB的语音信号频谱分析报告

MATLAB的语音信号频谱分析报告

. . . .幅值时间(s )信号波形信号频谱数字角频率幅度123-1-0.500.51幅度时间(s )2:1减抽样信号波形00.51 1.521000200030002:1减抽样信号频谱数字角频率w幅度0.51 1.5幅度时间(s )5:1减抽样信号波形00.51 1.525:1减抽样信号频谱数字角频率w幅度实验一[y,fs,bit]=wavread<'I do'>%读取音乐片段,fs 是采样率 size<y>%求矩阵的行数和列数y1=y<:,1>;%对信号进行分列处理n1=length<y1>;%取y 的长度t1=<0:n1-1>/fs;%设置波形图横坐标 figuresubplot<2,1,1>;plot<t1,y1>; %画出时域波形图 ylabel<'幅值'>; xlabel<'时间〔s'>; title<'信号波形'>;subplot<2,1,2>;Y1=fft<y1>;w1=2/n1*<0:n1-1>;%设置角频率 plot<w1,abs<Y1>>;%画频谱图 title<'信号频谱'>; xlabel<'数字角频率'>; ylabel<'幅度'>; grid on ;sound<y,fs>;实验二[y,fs,bit]=wavread<'I do'> y1=y<:,1>; n1=length<y1>; D=2;%设置抽样间隔 y2=y1<1:D:n1>;%减抽样n2=length<y2>;%减抽样后信号长度 t2=<0:n2-1>/fs;%设置横坐标 figuresubplot<2,2,1>;plot<t2,y2>; %绘制减抽样信号波形图 ylabel<'幅度'>; xlabel<'时间〔s'>;title<'2:1减抽样信号波形'>;Y2=fft<y2>; %对y2进行n2点fft 谱分析 w2=2/n2*[0:n2-1]; subplot<2,2,3>;plot<w2,abs<Y2>>;%绘制减抽样信号频谱图 title<'2:1减抽样信号频谱'>; xlabel<'数字角频率w'>; ylabel<'幅度'>;246-1-0.500.51时间(s)幅度调制后信号246时间(s)幅度调制后信号100020003000数字角频率w幅度调制后信号的频谱(高频率调制)数字角频率w幅度调制后信号的频谱(低频率调制)grid on ;sound<y2,fs/D>; D=5;%设置抽样间隔 y3=y1<1:D:n1>;%减抽样n3=length<y3>;%减抽样后信号长度 t3=<0:n3-1>/fs;%设置横坐标 subplot<2,2,2>;plot<t3,y3>; %绘制减抽样信号波形图 ylabel<'幅度'>; xlabel<'时间〔s'>;title<'5:1减抽样信号波形'>;Y3=fft<y3>; %对y2进行n2点fft 谱分析 w3=2/n3*[0:n3-1]; subplot<2,2,4>;plot<w3,abs<Y3>>;%绘制减抽样信号频谱图 title<'5:1减抽样信号频谱'>; xlabel<'数字角频率w'>; ylabel<'幅度'>; grid on ;sound<y3,fs/D>实验三[y,fs,bit]=wavread<'I do'> y1=y<:,1>; n1=length<y1>; n3=0:n1-1;b1=cos<0.75*pi*n3>;%设置调制信号 b2=cos<0.5*pi*n3>;c1=b1'.*y1;%对原信号进行调制 c2=b2'.*y1; lc1=length<c1>; t=<0:lc1-1>/fs;figure %用载波对信号进行调制,并对其做fft 变换 subplot<2,2,1> %获取频谱,从图中可以观察到,调制后的 plot<t,c1>; %信号频谱发生搬移 xlabel<'时间<s>'>; ylabel<'幅度'>;title<'调制后信号'>;subplot<2,2,2> %获取频谱,从图中可以观察到,调制后的 plot<t,c2>; %信号频谱发生搬移 xlabel<'时间<s>'>; ylabel<'幅度'>;title<'调制后信号'>;w1=2/lc1*[0:lc1-1];%设置角频率W-1-0.50.51音频时间幅度0120200040006000频谱频率/pi 幅度AM 调制音频信号时间幅度12AM 调制频谱频率/pi幅度x 105-1-0.500.51时间幅度AM 解调音频信号012100020003000AM 解调频谱频率/pi幅度C1=fft<c1>; C2=fft<c2>; subplot<2,2,3> plot<w1,abs<C1>>;xlabel<'数字角频率w'>; ylabel<'幅度'>;title<'调制后信号的频谱<高频率调制>'>; grid on ;subplot<2,2,4> plot<w1,abs<C2>>;xlabel<'数字角频率w'>; ylabel<'幅度'>;title<'调制后信号的频谱<低频率调制>'>; grid on ;sound<c1,fs>;实验四clear all ;cla;close all [a,fs,bit]=wavread<'I do'>; y1=a<:,1>;%去单列数据进行分析 f1=fft<y1>; n=length<f1>; tn=<0:n-1>/fs; w=2/n*[0:n-1]; %sound<y1,fs>; figure<1>subplot<2,3,1>;plot<tn,y1>;grid on ;title<'音频'>;xlabel<'时间'>; ylabel<'幅度'>; subplot<2,3,4>;plot<w,abs<f1>>; grid on ; title<'频谱'>; xlabel<'频率/pi'>;ylabel<'幅度'>; t=[0:n-1]; y2=cos<pi*1/2*t>;%载波函数 y3=y1.*y2';%信号调制 ty3=<0:length<y3>-1>/fs; subplot<2,3,2>;plot<ty3,y3>;%绘制调制后信号波形图 grid on ;title<'AM 调制音频信号'>; xlabel<'时间'>;H 低通滤波器波形ylabel<'幅度'>;f3=fft<y3>;n2=length<f3>;w2=2/n2*[0:n2-1];subplot<2,3,5>;plot<w2,abs<f3>>;%绘制调制后信号频谱图grid on;title<'AM调制频谱'>;xlabel<'频率/pi'>;ylabel<'幅度'>;%解调后信号n3=length<y3>t2=0:n3-1;y4=cos<pi*1/2*t2>y5=y3.*y4';%解调后的信号函数subplot<2,3,3>;plot<t2,y5>;grid on;xlabel<'时间'>;ylabel<'幅度'>;title<'AM解调音频信号'>;f5=fft<y5>;w3=2/n3*[0:n3-1];subplot<2,3,6>;plot<w3,abs<f5>>;%绘制解调后信号频谱图grid on;title<'AM解调频谱'>;xlabel<'频率/pi'>;ylabel<'幅度'>;%设计巴特沃斯滤波器进行滤波去噪[N1,wc1]=buttord<0.05,0.17,1,15>;%确定低通滤波器的阶数和截止频率;[b,a]=butter<N1,wc1>;%确定低通滤波器分子分母系数[H,W]=freqz<b,a>;figure<2>plot<W,abs<H>>;%低通滤波器波形xlabel<'w'>;ylabel<'H'>;title<'低通滤波器波形'>;m=filter<b,a,y5>;wavplay<m,fs>;lm=length<m>;%滤波后信号长度tm=<0:lm-1>/fs;%设置横坐标wm=2/lm*[0:lm-1];M=fft<m>;figure<3>subplot<2,1,1>;plot<tm,m>;grid on;矩形窗滤波后音频0100020003000矩形窗滤波后频谱布莱克曼窗滤波后音频布莱克曼窗滤波后频谱x 10-4-0.100.10.20.3矩形窗时域矩形窗频域-0.100.10.20.3布莱克曼窗时域布莱克曼窗频域0123456t 幅度00.20.40.60.81 1.2 1.4 1.6 1.82100020003000滤波后波形频谱图w/pi 幅度title<'滤波后波形'>; xlabel<'t'>; ylabel<'幅度'>;subplot<2,1,2>;plot<wm,abs<M>>;title<'滤波后波形频谱图'>;xlabel<'w/pi'>; ylabel<'幅度'>;%矩形窗和布莱克曼窗 N=33;wc=0.3*pi;%基于经验的指标,其中N hd=ideal<N,wc>;%调用理想低通滤波器函数 w1=boxcar<N>;%产生各种窗函数 w2=blackman<N>;h1=hd.*w1';%加窗设计各种FIR 滤波器h2=hd.*w2'; th1=<0:32>/fs; th2=<0:32>/fs; M=21184; fh1=fft<h1,M>;%矩形窗频谱函数 w=2/M*[0:M-1]; fh2=fft<h2,M>;%布莱克曼窗频谱函数 figure<4>subplot<2,2,1>;plot<th1,h1> title<'矩形窗时域'>;subplot<2,2,2>;plot<w,abs<fh1>>; title<'矩形窗频域'>; subplot<2,2,3>;plot<th2,h2>; title<'布莱克曼窗时域'>;subplot<2,2,4>;plot<w,abs<fh2>>; title<'布莱克曼窗频域'> %解调后信号n3=length<y3>t2=0:n3-1; y4=cos<pi*1/2*t2>y5=y3.*y4';%调制后的信号函数figure %滤波处理y6=conv<h1,y5>;%用矩形窗对调制后信号进行滤波f6=fft<y6>;n4=length<f6>; ty6=<0:n4-1>/fs; w3=2/n4*[0:n4-1];%sound<y6,fs>;figure<5> subplot<2,2,1>;plot<ty6,y6>;100200时间(s )幅值三余弦信号音谱012W噪声频谱12200040006000W加噪信号频谱0510-2-1012时间(s )幅值加噪信号音谱0510-1-0.500.51t(s)信号幅值去噪后信号波形012200040006000w/pi幅度kIIR 滤波器滤波后信号频谱title<'矩形窗滤波后音频'>subplot<2,2,2>;plot<w3,abs<f6>>; title<'矩形窗滤波后频谱'>y7=conv<h2,y5>;%用布莱克曼窗进行滤波 f7=fft<y7>; n5=length<f7>; ty7=<0:n5-1>/fs; w4=2/n5*[0:n5-1]; %sound<y7,fs>;subplot<2,2,3>;plot<ty7,y7>; title<'布莱克曼窗滤波后音频'> subplot<2,2,4>;plot<w4,abs<f7>>; title<'布莱克曼窗滤波后频谱'>实验五clc;clear;close;[y,fs,bit]=wavread<'I do'>; y0=y<:,1>; l=length<y0>; %加三余弦混合噪声 t0=<0:l-1>/fs;d0=[0.05*cos<2*pi*3000*t0>]'; t1=<0:l-1>/fs;d1=[0.05*cos<2*pi*5000*t1>]'; t2=<0:l-1>/fs;d2=[0.05*cos<2*pi*8000*t2>]'; noise=d2+d1+d0; y1=y0+noise; %sound<y1,fs>;a=length<noise>;%绘制三余弦噪声音频图 wa=2/a*[0:a-1]; Noise=fft<noise>; figure<1>subplot<2,3,4>;plot<noise<1:150>>; xlabel<'时间〔s'> ylabel<'幅值'>title<'三余弦信号音谱'>subplot<2,3,1>;%绘制三余弦噪声频谱图 plot<wa,abs<Noise>>; grid on ; xlabel<'W'>title<'噪声频谱'>w0=2/l*[0:l-1];%绘制加噪信号音频Y1=fft<y1>;subplot<2,3,5>plot<w0,abs<Y1>>;grid on;xlabel<'W'>title<'加噪信号频谱'>ly1=length<y1>;ty1=<0:ly1-1>/fs;subplot<2,3,2>;plot<ty1,y1>;xlabel<'时间〔s'>ylabel<'幅值'>title<'加噪信号音谱'>m=rand<l,1>-0.5; %产生幅度为0.5的随机信号lm=length<m>;y2=m+y0;%将噪声信号与原声音信号叠加wm=2/lm*[0:lm-1];M=fft<m>;figure<2>subplot<2,2,3>;plot<m<1:150>>xlabel<'时间〔s'>ylabel<'幅值'>title<'白噪信号音谱'>subplot<2,2,1>;plot<wm,abs<M>>;grid on;xlabel<'W'>title<'噪声频谱'>l=length<y2>;ty2=<0:l-1>/fs;w=2/l*[0:l-1];Y2=fft<y2>;subplot<2,2,4>plot<w,abs<Y2>>;grid on;xlabel<'W'>title<'加噪信号频谱'>subplot<2,2,2>;plot<ty2,y2>;xlabel<'时间〔s'>ylabel<'加噪信号幅值'>title<'加噪信号音谱'>;%设计滤波器进行滤波去噪[N1,wc1]=buttord<0.04,0.17,1,30>;%确定低通滤波器的阶数和截止频率;[b,a]=butter<N1,wc1>; %确定低通滤波器分子分母系数2400.511.5wH 低通滤波器波形0510n信号幅值低通滤波后波形012200040006000数字角频率w 幅度低通滤波后频谱02400.511.5w1H 1高通滤波器波形0510n信号幅值m高通滤波后波形0120200400600数字角频率w幅度kIIR 高通滤波后频谱0123456音乐信号的波形ty 1音乐信号的频谱wf 1m=filter<b,a,y1>;%用滤波器滤除三余弦噪声 sound<m,fs>;lm=length<m>;%滤波后信号长度tm=<0:lm-1>/fs;%设置横坐标figure<1>;subplot<2,3,3>;plot<tm,m>;%绘制滤波后的波形 xlabel<'t<s>'>ylabel<'信号幅值'>title<'去噪后信号波形'>;k=fft<m>; %滤波后的波形做离散傅里叶变换 w=2*[0:length<k>-1]/length<k>; subplot<2,3,6>plot<w,abs<k>>; xlabel<'w/pi'>ylabel<'幅度k'>title<'IIR 滤波器滤波后信号频谱'>;实验六.一clear all ;clc [y,fs,bit]=wavread<'I do'>; size<y>%查看读取信号的声道类型 y1=y<: ,1>;%对信号进行分列处理 n=length<y1>;%求信号y1的的长度t1=<0:n-1>/fs;f1=fft<y1>;%对y1进行fft 谱分析 w=2/n*[0:n-1];%w 为连续频谱的数字角频率横坐标%sound<y,fs>;%播放音乐信号figure<1>subplot<2,1,1>;plot<t1,y1>; title<'音乐信号的波形'>;xlabel<'t'>; ylabel<'y1'>; subplot<2,1,2>;plot<w,abs<f1>>; title<'音乐信号的频谱'>; xlabel<'w'>; ylabel<'f1'>; %用IIR 滤波器滤波〔低[n2,wc2]=buttord<0.15,0.20,1,15>;%确定低通滤波器的阶数和截止频率; [B2,A2]=butter<n2,wc2>; %确定低通滤波器分子分母系数 [H,W]=freqz<B2,A2>; figure<2>subplot<2,3,1>;plot<W,abs<H>>;%低通滤波器波形-0.50.5音乐信号1的波形ty 100.20.40.60.81 1.21.4 1.6 1.82200040006000%音乐信号1的频谱wf 1xlabel<'w'> ylabel<'H'>title<'低通滤波器波形'>; m2=filter<B2,A2,y1>;%滤波 lm2=length<m2>; tm2=<0:lm2-1>/fs; subplot<2,3,2>plot<tm2,m2>;xlabel<'n'>ylabel<'信号幅值'> title<'低通滤波后波形'>;k2=fft<m2>;%滤波后的波形做离散傅里叶变换 l2=length<k2>; w2=2*[0:l2-1]/l2;subplot<2,3,3>; plot<w2,abs<k2>>;xlabel<'数字角频率w'> ylabel<'幅度'> title<'低通滤波后频谱'>; %解调滤波后的频谱 %用IIR 滤波器滤波〔高[N,WC]=buttord<0.15,0.20,1,15>;%确定高通滤波器的阶数和截止频率; [B,A]=butter<N,WC,'high'>; %确定高通滤波器分子分母系数 [H1,W1]=freqz<B,A>; subplot<2,3,4>;plot<W1,abs<H1>>;%高通滤波器波形 xlabel<'w1'> ylabel<'H1'>title<'高通滤波器波形'>; m=filter<B,A,y1>; %滤波 lm=length<m>; tm=<0:lm-1>/fs; subplot<2,3,5>; plot<tm,m>; xlabel<'n'>ylabel<'信号幅值m'>title<'高通滤波后波形'>; k=fft<m>;l2=length<k>; w2=2*[0:l2-1]/l2; subplot<2,3,6>; plot<w2,abs<k>>;xlabel<'数字角频率w'> ylabel<'幅度k'>title<'IIR 高通滤波后频谱'>;0123456-2-1012音乐1的幅度与音乐2的相位交叉组合后的波形t X 1200040006000音乐1的幅度与音乐2的相位交叉组合后的频谱w F1-0.4-0.200.20.4音乐信号2的波形ty 200.20.40.60.81 1.2 1.4 1.6 1.82100020003000音乐信号2的频谱wf 2实验六.二clear all ;clc[a,fs1,bit1]=wavread<'I do'>;[b,fs2,bit2]=wavread<'风声'>; size<b>%查看读取信号的声道类型y2=b<:,1>;%对信号进行分列处理 n2=length<y2>;%求信号y2的的长度t2=<0:n2-1>/fs2; f2=fft<y2>;w2=2/n2*[0:n2-1];%wavplay<y2,fs2>;size<a>%查看读取信号的声道类型y1=a<: ,1>;%对信号进行分列处理n1=length<y1>; t1=<0:n1-1>/fs1;f1=fft<y1>;w1=2/n1*[0:n1-1];%w 为连续频谱的数字角频率横坐标 %wavplay<y1,fs1>;Fy1=abs<f1>;%音乐1的幅度 Ay1=angle<f1>;%音乐1的相位 Fy2=abs<f2>;%音乐2的幅度 Ay2=angle<f2>;%音乐2相位F1=Fy1.*exp<j*Ay2>;%音乐1的幅度与音乐2的相位交叉组合 X1=ifft<F1>; n3=length<X1>;tx1=<0:<n3-1>>/fs1; w3=2/n3*[0:n3-1];%wavplay<real<X1>,fs1>;F2=Fy2.*exp<j*Ay1>;%幅度相位交叉组合 X2=ifft<F2>;n4=length<X2>; tx2=<0:<n4-1>>/fs2;w4=2/n4*[0:n4-1]%wavplay<real<X2>,fs2>;figure<1> subplot<2,1,1>;plot<t1,y1>;%绘制信号1波形title<'音乐信号1的波形'>; xlabel<'t'>;ylabel<'y1'>;subplot<2,1,2>;plot<w1,abs<f1>>;%绘制音乐信号1的频谱title<'%音乐信号1的频谱'>; xlabel<'w'>;.12 / 11 0123456-0.500.5音乐2的幅度与音乐1的相位交叉组合后的波形tX 20100020003000音乐2的幅度与音乐1的相位交叉组合后的频谱w F 2ylabel<'f1'>;figure<2>subplot<2,1,1>;plot<t2,y2>;title<'音乐信号2的波形'>;xlabel<'t'>;ylabel<'y2'>;subplot<2,1,2>;plot<w2,abs<f2>>;title<'音乐信号2的频谱'>;xlabel<'w'>;ylabel<'f2'>;figure<3>subplot<2,1,1>;plot<tx1,X1>;title<'音乐1的幅度与音乐2的相位交叉组合后的波形'>; xlabel<'t'>;ylabel<'X1'>;subplot<2,1,2>;plot<w3,abs<F1>>;title<'音乐1的幅度与音乐2的相位交叉组合后的频谱'>; xlabel<'w'>;ylabel<'F1'>;figure<4>subplot<2,1,1>;plot<tx2,X2>;title<'音乐2的幅度与音乐1的相位交叉组合后的波形'>; xlabel<'t'>;ylabel<'X2'>;subplot<2,1,2>;plot<w4,abs<F2>>;title<'音乐2的幅度与音乐1的相位交叉组合后的频谱'>; xlabel<'w'>;ylabel<'F2'>;。

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

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

应用Matlab对含噪声的语音信号进行频谱分析及滤波实验目的1.巩固所学的数字信号处理理论知识,理解信号的采集、处理、传输、显示和存储过程;2.综合运用专业及基础知识,解决实际工程技术问题的能力;3.学习资料的收集与整理,学会撰写课程设计报告。

实验环境1.微型电子计算机(PC);2.安装Windows 10操作系统,MATLAB7.0,FormatFactory等开发工具。

实验原理:在MATLAB环境中,有关声音(wave)录制、播放、存储和读取的函数有:●y=wavrecord(N,fs,Dtype)利用系统音频输入设备录音,以fs为采样频率,默认值为11025,即以11025Hz 进行采样。

Dtype为采样数据的存储格式,用字符串指定,可以是:‘double’、‘single’、’int16’、‘int8’其中只有int8是采用8位精度进行采样,其它三种都是16位采样结果转换为指定的MATLAB数据;●wavplay(y,fs)利用系统音频输出设备播放,以fs为播放频率,播放语音信号y;●wavwrite(y,fs,wavfile)创建音频文件;●wavread()读取wav格式的音频文件。

例如:[x,fs,bits]=wavread('myrecordsound.wav')x=x(:,1); %假设声音是双声道,只取单声道作分析上述语句表示读入存放在当前工作目录下的声音文件myrecordsound.wav,并以fs 为采样频率进行采样后存储在数组x中。

其中nbit是采样精度,比如16就是指16位精度的采样。

取单声道后,得到的数值x是一个列向量。

●sound();该函数的输入参量是音频数据向量、采样频率和转换位数。

例如:sound(sin(2*pi*25*(1:4000)/100));响两声就是:sound(sin(2*pi*25*(1:4000)/100));sleep(1);sound(sin(2*pi*25*(1:4000)/100));实验内容和任务要求1.采集语音信号并进行频谱分析2.对加入噪声的语音信号进行频谱分析3. 设计数字滤波器对加入噪声的语音信号进行滤波问题分析本实验要求设计IIR和FIR两种形式的滤波器对带有噪音的信号进行滤波。

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

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

目录1 MATLAB简介 (1)1.1 MATLAB的概况 (1)1.2 MATLAB产生的历史背景 (1)1.3 MATLAB的语言特点 (2)1.4 MATLAB界面介绍 (2)工作环境窗口 (2)当前路径窗口 (3)2 FIR滤波器的分析与设计 (4)窗函数法设计FIR滤波器 (4)2.2 FIR低通滤波器 (5)详细设计过程 (5)程序流程图 (5)2输出结果仿真 (6)2.3 FIR带通滤波器 (6)详细设计过程 (7)程序流程图 (7)输出结果仿真 (8)2.4 FIR高通滤波器 (8)详细设计过程 (8)程序流程图 (9)输出结果仿真 (9)3 IIR滤波器的分析与设计 (10)双线性变换法设计IIR滤波器 (10)3.2 IIR低通滤波器 (11)详细设计过程 (11)程序流程图 (12)输出结果仿真 (13)3.3 IIR带通滤波器 (13)详细设计过程 (13)程序流程图 (14)输出结果仿真 (15)3.4 IIR高通滤波器 (15)详细设计过程 (15)程序流程图 (16)输出结果仿真 (17)4 声音信号的滤波 (18)对信号进行滤波的流程 (18)对信号进行滤波的仿真 (18)滤波前后的时域对比 (18)滤波前后的频域对比 (20)5 图形用户界面GUI (21)5.1 GUI简介 (21)5.2 GUIDE及其组成部分 (21)基于滤波器应用的GUI设计 (21)6 总结 (23)参考文献 (24)附录 (25)1 MATLAB简介1.1 MATLAB的概况MATLAB是矩阵实验室(Matrix Laboratory)之意。

除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。

MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算问题要比用C、FORTRAN等语言完相同的事情简捷得多。

用matlab对信号进行频谱分析及滤波

用matlab对信号进行频谱分析及滤波

华东交通大学课程设计(论文)任务书专业 xxx 班级 xx 姓名 xxx一、课程设计(论文)题目应用Matlab对信号进行频谱分析及滤波二、课程设计(论文)工作:自 xxx 年 x 月 x 日起至 xxx 年 x 月 x 日止。

三、课程设计(论文)的内容要求:学生签名:20 年月日课程设计(论文)评阅意见评阅人职称20 年月日目录设计过程步骤(5)2.1 语音信号的采集(5)2.2 语音信号的频谱分析(6)2.3 设计数字滤波器和画出其频谱响应(7)2.4 用滤波器对信号进行滤波(9)2.5滤波器分析后的语音信号的波形及频谱(10)●心得和经验(11) ●参考文献 (12)设计过程步骤2.1 语音信号的采集我们利用Windows下的录音机,录制了一段开枪发出的声音,时间在1 s内。

接着在C盘保存为WAV格式,然后在Matlab软件平台下.利用函数wavread对语音信号进行采样,并记录下了采样频率和采样点数,在这里我们还通过函数sound引入听到采样后自己所录的一段声音。

通过wavread函数和sound的使用,我们完成了本次课程设计的第一步。

其程序如下:[x,fs,bite]=wavread('c:\alsndmgr.wav',[1000 20000]);sound(x,fs,bite);2.2 语音信号的频谱分析首先我们画出语音信号的时域波形;然后对语音信号进行频谱分析,在Matlab中,我们利用函数fft对信号进行快速傅里叶变换,得到信号的频谱特性性。

到此,我们完成了课程实际的第二部。

其程序如下:n=1024;subplot(2,1,1);y=plot(x(50:n/4));grid on ;title('时域信号')X=fft(x,256); subplot(2,1,2);plot(abs(fft(X))); grid on ;title('频域信号');运行程序得到的图形:2.3 设计数字滤波器和画出其频谱响应紧接着着我们做了一个数字滤波器:采样频率10Hz,通带截止频率fp=3Hz,阻带截止频率fs=4Hz通带衰减小于1dB,阻带衰减大于20dB,我们主要使用双线性变换法由模拟滤波器原型设计数字滤波器。

利用matlab处理语音信号及滤波

利用matlab处理语音信号及滤波

数字信号处理课程设计摘要:语音信号处理是研究用数字信号处理技术和语音学知识对语音信号进行处理的新兴学科,是目前发展最为迅速的学科之一,通过语音传递信息是人类最重要,最有效,最常用和最方便的交换信息手段,所以对其的研究更显得尤为重要。

Matlab语言是一种数据分析和处理功能十分强大的计算机应用软件,它可以将声音文件变换成离散的数据文件,然后用起强大的矩阵运算能力处理数据。

这为我们的本次设计提供了强大并良好的环境!本设计要求自己录制一段自己的语音后,在MATLAB软件中采集语音信号、回放语音信号并画出语音信号的时域波形和频谱图。

再在Matlab中分别设计不同形式的FIR数字滤波器。

之后对采集的语音信号经过不同的滤波器(低通、高通、带通)后,观察不同的波形,并进行时域和频谱的分析。

对比处理前后的时域图和频谱图,分析各种滤波器对于语音信号的影响。

最后分别收听进行滤波后的语音信号效果,做到了解在怎么样的情况下该用怎么样的滤波器。

目录1.设计内容 (4)2.设计原理 (4)2.1语音信号的时域分析 (4)2.2语音信号的频域分析 (5)3.设计过程 (5)3.1实验程序源代码 (6)3.1.1原语音信号时域、频域图 (6)3.1.2低通滤波器的设计 (6)3.1.3高通滤波器的设计 (7)3.1.4带通滤波器的设计 (8)3.1.5语音信号的回放 (9)3.2调试结果描述 (10)3.3所遇问题及结果分析 (15)3.3.1所遇主要问题 (16)3.3.2结果分析 (16)4.体会与收获 (17)5.参考文献 (17)1.设计内容:1.首先录制好一段自己的语音。

2.用Matlab分别设计好3种类型的滤波器(指标自己确定):低通型、高通型、带通型。

3.用Matlab将语音信号进行采样,并分别将其通过所设计的3种滤波器。

4.用Matlab自带的语音返回函数收听滤波后的语音信号,分析并比较其与原语音信号的差异。

2.设计原理:语音信号时一种非平稳的时变信号,它带着各种信息。

应用Matlab对信号进行频谱分析及滤波(数字信号处理)

应用Matlab对信号进行频谱分析及滤波(数字信号处理)

华东交通大学理工学院课程设计报告书所属课程名称数字信号处理题目应用Matlab对信号进行频谱分析及滤波分院电信分院专业班级电子信息工程*班学号**************学生姓名邓群指导教师****2013 年6月27 日课程设计(论文)评阅意见评阅人** 职称讲师2013 年6月27日一、目录一、目录 (2)二、设计内容及要求 (3)三、设计方法与步骤 (3)3.1 语音信号的采集 (3)3.2 语音信号的频谱分析 (4)3.3 设计数字滤波器和画出其频谱响应 (5)3.4 用滤波器对信号进行滤波 (7)3.5滤波器分析后的语音信号的波形及频谱 (8)四、课程设计心得 (8)五、参考文献 (9)二、设计内容及要求利用Windows下的录音机,录制了一段个人自己的语音。

在C 盘保存为W A V格式,然后在Matlab软件平台下.利用函数wavread 对语音信号进行采样,并记录下了采样频率和采样点数,在这里我们还通过函数sound引入听到采样后自己所录的一段声音。

然后画出语音信号的时域波形;然后对语音信号进行频谱分析,在Matlab中,我们利用函数fft对信号进行快速傅里叶变换,得到信号的频谱特性性。

紧接着着我们做了一个数字滤波器:采样频率10Hz,通带截止频率fp=3Hz,阻带截止频率fs=4Hz 通带衰减小于1dB,阻带衰减大于20dB,我们主要使用双线性变换法由模拟滤波器原型设计数字滤波器。

程序最后我们还利用Matlab 中的函数freqz画出了该滤波器的频率响应。

课设报告要求:1、字体必须是四号字体,宋体字,行间距设为1.25;2、报告书内容要涵盖课程设计题目、详细设计过程、频谱图的分析、心得体会和参考文献。

3、给出可运行的源程序代码。

三、设计方法与步骤3.1 语音信号的采集我们利用Windows下的录音机,录制了一段开枪发出的声音,时间在1 s内。

接着在C盘保存为W A V格式,然后在Matlab软件平台下.利用函数wavread对语音信号进行采样,并记录下了采样频率和采样点数,在这里我们还通过函数sound引入听到采样后自己所录的一段声音。

MATLAB的语音信号频谱分析

MATLAB的语音信号频谱分析

MATLAB的语音信号频谱分析MATLAB是一个功能强大的数学软件环境,它可以用于语音信号的频谱分析。

频谱分析是通过计算信号在不同频率上的能量分布来了解信号的频域特性。

在语音信号处理中,频谱分析可以用于声音的特征提取、语音识别、音频信号处理等各个方面。

要进行语音信号的频谱分析,我们需要首先将语音信号加载到MATLAB环境中。

这可以通过读取音频文件或者录制声音来实现。

然后,我们可以使用MATLAB中的信号处理工具箱中的函数来进行频谱分析。

下面是进行语音信号频谱分析的主要步骤:1.加载语音信号首先,我们需要将语音信号加载到MATLAB环境中。

可以使用`audioread`函数读取音频文件,或者使用`audiorecorder`函数录制声音。

```matlab[x, fs] = audioread('speech.wav');%或者recorder = audiorecorder(fs, 16, 1);recordblocking(recorder, 5); % 录制5秒声音x = getaudiodata(recorder);```2.预处理语音信号在进行频谱分析之前,通常需要对语音信号进行预处理。

这包括去除静音段、去除噪声等操作。

常用的预处理方法有均衡增强、滤波、语音端点检测等。

3.计算幅度谱幅度谱是频谱分析的最基本形式,它描述了信号在不同频率上的幅度分布。

可以使用`fft`函数对语音信号进行傅里叶变换,然后取幅度谱的绝对值。

```matlabX = abs(fft(x));```4.计算功率谱密度功率谱密度是幅度谱的平方值,它表示了信号在不同频率上的功率分布。

可以通过幅度谱的平方值来计算功率谱密度。

```matlabP=X.^2;```5.均衡化谱图为了更好地可视化频谱分析结果,可以对频谱图进行均衡化处理。

可以使用`db`函数将功率谱密度转换为分贝尺度。

```matlabdB = 10 * log10(P);```6.绘制谱图最后,可以使用`plot`函数绘制频谱图。

基于MATLAB对语音信号进行分析和处理

基于MATLAB对语音信号进行分析和处理

基于MATLAB对语音信号进行分析和处理一、设计目的1.学会MATLAB的使用,掌握MA TLAB的程序设计方法;2.掌握在Windows环境下语音信号采集的方法;3.掌握数字信号处理的基本概念、基本理论和基本方法;4.掌握MATLAB设计FIR和IIR数字滤波器的方法;5.学会用MA TLAB对信号进行分析和处理。

二、设计过程1、语音信号采集与分析运用windows下的录音机,录制一段自己的话音,时间为两秒。

然后在MATLAB 软件平台下,利用函数wavread对语音信号进行采样,再运用plot函数画出语音信号的时域波形,最后在语音信号频谱分析时运用fft对信号进行快速傅里叶变换,得到频谱特性图形。

人为设计一个固定频率5500Hz的噪声干扰信号。

噪声信号通常为随机序列,在本设计中用正弦序列代替,干扰信号构建命令函数为d=[Au*sin(2*pi*5500*t)]',给出的干扰信号为一个正弦信号,针对上面的语音信号 ,采集了其中一段。

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

2、滤波器设计和运用滤波器进行滤波1 )窗函数和等波纹逼近法设计FIR滤波器及滤波首先根据阻带最小衰减选定窗口类型,然后调用fir1函数设计线性相位FIR数字滤波器,再用freqz函数画出其频谱图形,最后运用fftfilt函数对信号进行滤波。

而等波纹逼近法中则运用remez和remezord直接设计FIR滤波器,然后运用fftfilt函数对信号进行滤波。

2 )双线性变换法社设计IIR数字滤波器及滤波首先将数字滤波器的技术指标运用预畸校正法转换成模拟滤波器的设计指标:Ωph=2/T*tan(wp/2),然后用butter、cheby1设计各种模拟滤波器,再用bilinear函数进行模拟滤波器和数字滤波器之间的转换,最后用filter函数对语音信号进行滤波,并运用函数sound播放滤波后语音。

三、结果及分析1、用MATLAB对原始语音信号进行分析,画出它的时域波形和频谱时域波形和频谱:图1 原始语音信号图2 语音信号频率响应图图3 原始语音信号FFT与信号频谱2、给原始的语音信号加上一个高频余弦噪声,频率为5500hz。

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

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

数字信号处理结课报告设计题目:基于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对信号进行快速傅里叶变化,得到信号的频谱特性。

在频谱特性中分析最大值的位置(可能有几个),它代表的频率和时域的采样时间有关,相邻的两点之间的距离为。

  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'); %读取语音信号的数据,赋给变量x1 y1=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可以对声音进行回放。

相关文档
最新文档