最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

MATLAB语音信号滤波处理和时频域分析

来源:动视网 责编:小OO 时间:2025-09-24 10:05:20
文档

MATLAB语音信号滤波处理和时频域分析

湖南工业大学课程设计资料袋计算机与通信学院(系、部)2009~2010学年第二学期课程名称:MATLAB语言与应用指导教师:文鸿职称讲师学生姓名:申鹏专业班级通信071班学号07408200112设计题目:语音信号的滤波处理及时频域分析成绩:起止日期:2009年7月5日至2010年7月11日目录清单序号材料名称资料数量备注1课程设计任务书12课程设计说明书13张456湖南工业大学课程设计任务书2009—2010学年第二学期计算机与通信学院(系、部)通信工程专业071班级课程名称:MATLAB语
推荐度:
导读湖南工业大学课程设计资料袋计算机与通信学院(系、部)2009~2010学年第二学期课程名称:MATLAB语言与应用指导教师:文鸿职称讲师学生姓名:申鹏专业班级通信071班学号07408200112设计题目:语音信号的滤波处理及时频域分析成绩:起止日期:2009年7月5日至2010年7月11日目录清单序号材料名称资料数量备注1课程设计任务书12课程设计说明书13张456湖南工业大学课程设计任务书2009—2010学年第二学期计算机与通信学院(系、部)通信工程专业071班级课程名称:MATLAB语
湖南工业大学

课程设计

资料袋

计算机与通信学院(系、部)2009~2010 学年第二学期课程名称:MATLAB 语言与应用

指导教师:文鸿职称讲师

学生姓名:申鹏专业班级通信071班学号07408200112 设计题目:语音信号的滤波处理及时频域分析

成绩:

起止日期:2009 年7 月5 日至2010 年7 月11 日

目录清单

序号材料名称资料数量备注

1 课程设计任务书 1

2 课程设计说明书 1

3 张

4

5

6湖南工业大学

课程设计任务书

2009 — 2010学年第二学期

计算机与通信学院(系、部)通信工程专业071 班级课程名称:MATLAB语言及应用

设计题目:语音信号的滤波处理及时频域分析

完成期限:自2010 年 6 月26 日至2010 年7 月 2 日共 1 周

内容及任务一、设计的主要技术参数

语音信号的录入、波形的滤波处理和信号的回放效果比较分析。

二、设计任务

1.录制声音信号

2.设计滤波器

3.用设计的滤波器进行滤波

4.回放声音信号

三、设计工作量

1周完成

进度安排

起止日期工作内容

2010.7.5 查找相关资料掌握语音信号的滤波和时频域分析2010.7.6—7.8 设计时频域分析的方法

2010.7.9—7.10 设计滤波器(包括低通、高通和带通)

2010.7.11 总结,撰写课程设计报告

主要参考资料1、陈怀琛.MATLAB及在电子信息课程中的应用[M].北京:电子工业出版社

2、张文.基于MATLAB的语音信号的滤波与实现[J].山西电子技术.

3、蔡莲红,黄德智.现代语音技术基础与应用清华大学出版社

4、胡航.语音信号处理[M].哈尔滨:哈尔滨工业大学出版社

指导教师(签字):年月日系(教研室)主任(签字):年月日

MATLAB语言与应用

课程设计说明书

语音信号的滤波处理及时频域分析起止日期:2010年07月5日至2010年07月11日

学生姓名申鹏

班级通信071班

学号07408200112

成绩

指导教师(签字)

计算机与通信学院

2010年7 月11日课题名称语音信号的滤波处理及时频域分析人数 6

组长申鹏同组人员申鹏、郭胜华、朱钧宇、姚广哲、罗顺湖、邓勇

课题的主要内容和要求一、设计的要求

设计要求:

1。录制一段2s左右的语音信号,并对录制的信号进行8000Hz采样,画出采样后语音信号的时域波形和频谱图。

2。给定滤波器的性能指标,采用窗函数法和双线性变换设计滤波器,并画出滤波器的频率响应。各滤波器的性能指标:

(1)低通滤波器性能指标fb=1 000 Hz, fc=1 200 Hz, As=100 dB, Ap=1 dB。

(2)高通滤波器性能指标fc=4 800 Hz, fb=5000 Hz As=100 dB, Ap=1 dB。

(3)带通滤波器性能指标fb1=1200 Hz, fb2=3000 Hz, fc1=1 000 Hz, fc2=3200 Hz, As=100 dB, Ap=1 dB。要求用窗函数法或双线性变换法设计上面要求的3种IIR滤波器。

3。然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化。

4。回放语音信号。

二、设计任务:

1、录制一段2S左右的声音文件

2、设计三种滤波器对信号进行滤波(包括低通,高通和带通)

3、对滤波前后的波形进行比较

4、回放各个部分的语音信号

三、内容:

1、语音信号的滤波处理

2、语音信号的时频域分析

3、滤波器的设计

4、滤波后的语音信号的效果

具体任务

查找资料 录制声音信号 设计滤波器

用设计的滤波器进行滤波 回放声音信号 书写报告

时间安排与完成情况

2010.7.5 查找相关资料掌握语音信号的滤波处理及时频域分析; 2010.7.6 完成实验的总体设计; 2010.7.7 分析时频域的信号图像; 2010.7.8 设计椭圆低通滤波器; 2010.7.9 设计高通滤波器,并且比较两者的细节; 2010.7.10 设计带通滤波器,会放声音部分; 2010.7.11

比较信号各个时机的绘图情况和滤波后的声音效果。

一、MATLAB环境简介

MATLAB 语言是一种数据分析和处理功能十分强大的计算机应用软件 ,它可以将声音文件变换为离散的数据文件 , 然后利用其强大的矩阵运算能力处理数据 ,如数字滤波、傅里叶变换、时域和频域分析、声音回放以及各种图的呈现等 , 信号处理是MATLAB 重要应用的领域之一。

本课程设计介绍了基于Matlab的对语音信号采集、处理及滤波器的设计,并使之实现的过程。理解与掌握课程中的基本概念、基本原理、基本分析方法,用Matlab进行数字语音信号处理,并阐述了课程设计的具体方法、步骤和内容。综合运用本课程的理论知识进行频谱分析以及滤波器设计,通过理论推导得出相应结论,并利用MATLAB作为工具进行实现,从而复习巩固课堂所学的理论知识,提高对所学知识的综合应用能力,并从实践上初步实现对数字信号的处理。二、设计步骤

1.整体设计思路

Matlab 语言是一种数据分析和处理功能十分强大的计算机应用软件 ,它可以将声音文件变换为离散的数据文件 , 然后利用其强大的矩阵运算能力处理数据 ,如数字滤波、傅里叶变换、时域和频域分析、声音回放以及各种图的呈现等 , 信号处理是 Matlab 重要应用的领域之一。本文是用 Matlab对含噪的的语音信号同时在时域和频域进行滤波处理和分析。整个设计思路的设计原理示意图如图 1 所示:2.整体实现过程

采样器的作用是把连续信号变为脉冲或数字序列。图中示出了一个连续信号f(t)经采样器采样后变为离散信号的过程

图 2 连续信号f(t)经采样器采样后变为离散信号

图中f(t)为被采样的连续信号,S(t)为周期性窄脉冲信号,f s(t)为采样后的离散信号,它用下式来表征:fs(t)=f(t)s(t) 采样信号的频率特性为:

如果|F*(jω)|中各个波形不重复搭接,相互间有一定的距离(频率)即若

即采样定理可叙述如下:如果采样周期满足下列条件,即:

式中ωma x为连续信号f(t)的最高次谐波的角频率。则采样信号f*(t)

就可以无失真地再恢复为原连续信号f(t)。需要指出的是,采样定理只是在理论上给出了信号准确复现的条件。

我们可以利用windows自带的录音机录制语音文件,进行数字信号的采集。(开始—程序—附件—娱乐—录音机,文件—属性—立即转换—8000KH z,8位,单声道)或其他软件,将话筒输入计算机的语音输入插口上,启动录音机,录制一段自己的话音。然后在MATLAB软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数。通过wavread函数的使用进一步理解采样频率、采样

位数等概念。图2是基于PC 机的语音信号采集过程:

声音

图3 语音采集过程

3.语音信号的读取

在matlab 软件平台下,利用wavread 函数对语音信号进行采样,记住采样频率和采样点数。通过使用wavread 函数,理解采样频率、采样位数等概念。

wavread 函数调用格式

y=wavread(file),读取file 所规定的wav 文件,返回采样值放在向量y 中。

[y,fs,nbits]=wavread(file),采样值放在向量y 中,fs 表示采样频率(hz ),nbits 表示采样位数。

y=wavread (file ,N ),读取钱N 点的采样值放在向量y 中。

y=wavread (file ,[N1,N2]),读取从N1到N2点的采样值放在向量y 中。

对语音信号“shiyan.wav ”进行采样其程序如下:

[y,fs,nbits]=wavread('shiyan.wav')

可知该语音信号的采样频率fs = 8000Hz ,数据位nbits = 16Bit 。

4语音信号的频谱分析

首先画出语音信号的时域波形,然后对语音信号进行频谱分析。在Matlab 中可以利用函数fft 对信号行快速傅里叶变换,得到信号的频谱特性,从而加深对频谱特性的理解。

其程序如下:

Windows 自带录音机

麦克风 声卡 滤波 采样 A/D 转换 Wav

sound(y,fs,nbits); %回放语音信号

n = length (y) ; %求出语音信号的长度

Y=fft(y,n); %快速傅里叶变换

subplot(2,1,1);plot(y);title('原始信号波形');

subplot(2,1,2);plot(abs(Y));title('原始信号频谱')

程序结果如下图3:

图4 语音信号的频谱

5.噪声信号的构建

利用MATLAB中的随机函数(randn)产生噪声加入到语音信号中,模仿语音信号被污染,并对其进行频谱分析。程序如下:N=length(y); %求出语音信号的长度

noise=rand(N,2)/20; %噪声信号的函数

z=fft(noise); %快速傅里叶变换

subplot(2 ,1 ,1),plot(noise);title('噪声信号波形');

subplot(2 ,1 ,2),plot(abs(z));title('噪声信号频谱');

axis([0,250000,0,100]);

图5 噪声信号的频谱

6.加入噪声的语音信号的频谱

matlab程序如下:

y=wavread(' yuyin.wav');

N=length(y);

noise=rand(N,2)/20;

s=y+noise; %噪声信号的叠加

Subplot(2,1,1);

plot(s);title ('滤波前的时域波形');

S=fft(s);Subplot(2,1,2);

plot(abs(S));title ('滤波前的频域波形');

axis([0,45000,0,200]);

图6 加噪语音信号的频谱

7. 滤波器的设计原理

设计数字滤波器的任务就是寻求一个因果稳定的线性时不变系统,并使系统函数H(z)具有指定的频率特性。数字滤波器根据其冲激响应函数的时域特性,可分为两种,即无限长冲激响应(IIR)滤波器和有限长冲激响应(FIR)滤波器。IIR滤波器的特征是,具有无限持续时间冲激响应。这种滤波器一般需要用递归模型来实现,因而有时也称之为递归滤波器。FIR滤波器的冲激响应只能延续一定时间,在工程实际中可以采用递归的方式实现,也可以采用非递归的方式实现。

8. 滤波器的性能指标

在设计一个滤波器之前,必须首先根据工程实际的需要确定滤波器的技术指标。在很多实际应用中,数字滤波器常常被用来实现选频操作。因此,指标的形

式一般在频域中给出幅度和相位响应。幅度指标主要以两种方式给出。第一种是绝对指标。它提供对幅度响应函数的要求,一般应用于FIR 滤波器的设计。第二种指标是相对指标。它以分贝值的形式给出要求。在工程实际中,这种指标最受欢迎。对于相位响应指标形式,通常希望系统在通频带中人有线性相位。运用线性相位响应指标进行滤波器设计具有如下优点:①只包含实数算法,不涉及复数运算;②不存在延迟失真,只有固定数量的延迟;③长度为N 的滤波器(阶数为N-1),计算量为N/2数量级。下面给出了有关滤波器的性能指标

1、 低通滤波器的性能指标:Fp=1000Hz ,Fs=1200Hz ,As=50dB ,Ap=1dB ;

2、 高通滤波器的性能指标:Fp=4000Hz ,Fs=3500Hz ,As=50dB ,Ap=1dB ;

3、 带通滤波器的性能指标:Fp1=1200Hz ,Fp2=3000HZ ,Fs1=1000Hz , Fs2=3200Hz ,As=50dB ,Ap=1dB ;

9. IIR 数字滤波器设计

IIR 数字滤波器是一种离散时间系统,其系统函数为

(1-3)

假设M ≤N ,当M >N 时,系统函数可以看作一个IIR 的子系统和一个(M-N)的FIR 子系统的级联。IIR 数字滤波器的设计实际上是求解滤波器的系数和 ,它是数学上的一种逼近问题,即在规定意义上(通常采用最小均方误差准则)去逼近系统的特性。如果在S 平面上去逼近,就得到模拟滤波器;如果在z 平面上去逼近,就得到数字滤波器。

设计流程如图所示:

频域指标 双线性变换法 脉冲响应不变法

图7 IIR 滤波器的间接法设计

8.IIR 低通滤波器:

Ft=8000;

设计模拟滤波器

H (s ) 数字滤波器 H (z )

Fs=1200;

wp=2*pi*Fp/Ft;

ws=2*pi*Fs/Ft;

fp=2*Ft*tan(wp/2);

fs=2*Ft*tan(ws/2);

[N,wc]=ellipord(wp,ws,1,50,'s');

[b,a]=ellip(N,wc,'s');

[bz,az]=bilinear(b,a,0.5);

[h,w]=freqz(bz,az);

plot(w*8000*0.5/pi,abs(h));

Legend('用椭圆设计');

title('IIR低通滤波器');

grid;

图8

9.滤波器对信号滤波

用设计好的数字滤波器对含噪语音信号进行滤波,在Matlab 中FIR 滤波器利用函数fftfilt 对信号进行滤波, IIR滤波器利用函数filter 对信号进行滤波,在一个窗口同时画出滤波前后的波形及频谱如图。

程序源代码:

[y,fs,nbits]=wavread('shiyan.wav');

N=length(y);

y=wavread('shiyan.wav'); %把语音信号进行加载入Matlab 仿真软件平台中

sound(y,fs,nbits); %对加载的语音信号进行回放

Y=fft(y); %快速傅里叶变换

figure(1);

subplot(2 ,1 ,1),plot(y);title('原始信号波形');

subplot(2 ,1 ,2),plot(abs(Y));title('原始信号频谱');

noise=rand(N,2)/20; %噪声信号的函数

z=fft(noise); %快速傅里叶变换

figure(2);

subplot(2 ,1 ,1),plot(noise);title('噪声信号波形');

subplot(2 ,1 ,2),plot(abs(z));title('噪声信号频谱');

axis([0,1000,0,10]);

s=y+noise; %噪声信号的叠加

figure(3)

subplot(2,2,1);plot(s);title ('滤波前的时域波形');

S=fft(s);subplot(2,2,2);plot(abs(S));title ('滤波前的频域波形');

%设计低通椭圆滤波器

Ft=8000;

Fp1=1000;

Fs1=1200;

wp1=2*Fp1/Ft;

ws1=2*Fs1/Ft;

[N,wc]=ellipord(wp1,ws1,1,100,'s'); %最小阶数和截止频率根据转换后的技术指标使用滤波器阶数函数,确定滤波器的最小阶数N和截止频率Wc; 巴特沃斯模拟滤波器的阶数N 及频率参数wc,

[b,a]=ellip(N,1,100,wc);

[h,w]=freqz(b,a); %绘出频率响应曲线

figure(4);

subplot(3,1,1);

plot(w*Ft*0.5/pi,abs(h));

legend('用ellip设计');

title('IIR低通滤波器');

axis([0,2000,0,1]);

z11=filter(b,a,s);

m11=fft(z11);

figure(3)

subplot(2,2,3);plot(z11,'g');title ('滤波后的时域波形');

subplot(2,2,4);plot(abs(m11),'r');title ('滤波后的频域波形');

sound(z11);

%设计高通滤波器

%Ft=8000;

Fp2=5000;

Fs2=4800;

wp2=Fp2/Ft;

ws2=Fs2/Ft;

[N,wc]=ellipord(wp2,ws2,1,100,'s'); %最小阶数和截止频率

[b,a]=ellip(N,1,100,wc,'high');

[h,w]=freqz(b,a); %绘出频率响应曲线

figure(4);

subplot(3,1,2)

plot(w*Ft*0.5/pi,abs(h));

legend('用ellip设计');

title('IIR高通滤波器');

axis([0,5000,0,1]);z12=filter(b,a,s);

m12=fft(z12);

figure(5)

subplot(2,1,1);plot(z12,'g');title ('高通滤波后的时域波形');

subplot(2,1,2);plot(abs(m12),'r');title ('高通滤波后的频域波形');

sound(z12);

%设计带通滤波器

wp3=[1200,3000]/(Ft/2);

ws3=[1000,3200]/(Ft/2);

[N,wc]=ellipord(wp3,ws3,1,100,'s'); %最小阶数和截止频率

[b,a]=ellip(N,1,100,wc);

[h,w]=freqz(b,a); %绘出频率响应曲线

figure(4);

subplot(3,1,3);

plot(w*Ft*0.5/pi,abs(h));

legend('用ellip设计');

title('IIR带通滤波器');

axis([0,5000,0,1]);

z13=filter(b,a,s);

m13=fft(z13);

figure(6);

subplot(2,1,1);plot(z13,'g');title ('带通滤波后的时域波形');

subplot(2,1,2);plot(abs(m13),'r');title ('带通滤波后的频域波形');

sound(z13);

10.语音信号回放

以上几种滤波,我们都可以从信号滤波前后的波形图以及频谱图上看出变化。我们可以用sound()函数来播放滤波后的语音,从听觉上直接感受语音信号的变化,但由于人耳听力的,有些情况下我们是很难听出异同的。在matlab 中, 函数sound 可以对声音进行回放,其调用格式为: sound( z13) 。通过回放可以发现滤波前后的声音有变化。

三、心得体会

通过这次的课程设计我们可以学的到很多的东西,不仅可以巩固以前所学过的知识,还可以学到很多在书本上所没有学到过的知识。进一步加深了对数字信号处理的了解,让我对它有了更加浓厚的兴趣。因为以前学过信号与系统和数字信号处理两门课,但这只是理论知识,通过实验我们才能真正理解其意义。语音信号处理在以前的学习中并没有怎么接触,但是通过网上查找资料,我很快的理解了其基本原理。

在设计的过程中我还是遇到不少的问题的,比如刚开始,要处理的是WAV 格式的语音信号,可是我发现并不是所有的WAV文件都可以用WAVREAD函数读取的,这才了解到WAV文件之间也是有区别的,并且如果格式不对的话,我们要把格式转换成WAV格式。刚开始由于对滤波器的滤波原理并不是很了解,于是我又翻出学过的数字信号处理课本,认真研究起各种滤波器了,这才使我明白了大多数滤波器是如何工作地,不再单单只是懂理论,理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论。

总的来说,通过这次的课程设计我对语音信号有了全面的认识,对数字信号处理的知识又有了深刻的理解,让我感受到只有在充分理解课本知识的前提下,才能更好的应用这个工具;并且熟练的应用MATLAB也可以很好的加深我对课程的理解,方便我的思维。这次设计使我了解了MATLAB的使用方法,学会分析滤波器的优劣和性能,提高了分析和动手实践能力。同时我相信,进一步加强对MATLAB的学习与研究对我今后的学习将会起到很大的帮助!

文档

MATLAB语音信号滤波处理和时频域分析

湖南工业大学课程设计资料袋计算机与通信学院(系、部)2009~2010学年第二学期课程名称:MATLAB语言与应用指导教师:文鸿职称讲师学生姓名:申鹏专业班级通信071班学号07408200112设计题目:语音信号的滤波处理及时频域分析成绩:起止日期:2009年7月5日至2010年7月11日目录清单序号材料名称资料数量备注1课程设计任务书12课程设计说明书13张456湖南工业大学课程设计任务书2009—2010学年第二学期计算机与通信学院(系、部)通信工程专业071班级课程名称:MATLAB语
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top