基于matlab的语音信号滤波处理 - 数字信号处理课程设计2

更新时间:2024-04-24 12:09:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

数字信号处理课程设计

题目: 基于matlab的语音信号滤波处理 学院: 专业: 班级: 学号: 姓名:

指导教师:

摘要

本课程设计旨在熟悉在Windows环境下语音信号采集的方法,掌握数字信号处理的基本概念、基本理论和基本方法,掌握MATLAB设计FIR和IIR数字滤波器的方法并且学会用MATLAB对信号进行分析和处理。

课题的制作过程中,首先对语音信号进行采集和频谱分析,然后再分别用低通、高通和带通三种滤波器进行滤波处理,最后回放语音信号。

语音信号经过滤波器滤波处理后,杂音有所减少,效果变的更好。

目录

实验内容: ................................................................................... .4

一、语音信号的采集 ............................................ .........................4 二、语音信号的频谱分析 ............................................................ .4 三、用滤波器对语音信号进行滤波 ............................................ .4 四、回放语音信号 ........................................................................ .4

实验原理:.................................................................................. .4

一、数字滤波器................................................................................4 二、MATLAB....................................................................................5

实验步骤:......................................................................................6

一、语音信号的采集.........................................................................6

二、语音信号的频谱分析................................................................6 三、信号经低通滤波器滤波..............................................................8 四、信号经高通滤波器滤波..............................................................9 五、信号经带通滤波器滤波...........................................................12 六、回放语音信号...........................................................................14

结论:.............................................................................................14 参考文献:...................................................................................14

实验内容:

1、语音信号的采集

利用Windows下的录音机, 录制一段自己的话音, 时间在几秒内。然后在Matlab软件平台下, 利用函数wavread对语音信号进行采样, 记住采样频率和采样点数。 [y,fs,bits]=wavread();

2、语音信号的频谱分析

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

3、用滤波器对语音信号进行滤波

设计滤波器对采集的信号进行滤波, 比较滤波前后语音信号的波形及频谱。

要求自己确定滤波器的性能指标,用冲激响应不变法、双线性变换法或窗函数法设计3种滤波器:低通、高通和带通滤波器。

4、回放语音信号

在Matlab中, 函数sound 可以对声音进行回放,其调用格式:

sound (x, fs, bits);

实验原理:

1.数字滤波器

数字滤波是数字信号分析中最重要的组成部分之一,与模拟滤波相比,它具有精度和稳定性高、系统函数容易改变、灵活性强、便于大规模集成和可实现多维滤波等优点。在信号的过滤、检测和参数的估计等方面,经典数字滤波器是使用最广泛的一种线性系统。

数字滤波器是指完成信号滤波处理功能的,用有限精度算法实现的离散时间线性非时变系统,其输入是一组数字量,其输出是经过变换的另一组数字量。因此,数字滤波器本身既可以是用数字硬件装配成的一台完成给定运算的专用的数字计算机,也可以将所需要的运算编成程序,让通用计算机来执行。

从数字滤波器的单位冲击响应来看,可以分为两大类:有限冲击响应(FIR)数字滤波器和无限冲击响应(IIR)数字滤波器。滤波器按功能上分可以分为低通滤波器(LPF)、高通滤波器

(HPF)、带通滤波器(BPF)、带阻滤波器(BSF)。

在很多实际应用中如语音和音频信号处理中,数字滤波器来实现选频功能。因此,指标的形式应为频域中的幅度和相位响应。在通带中,通常希望具有线性相位响应。在FIR滤波器中可以得到精确的线性相位。FIR滤波器传递函数的极点是固定在原点,是不能动的,它只能靠改变零点位置来改变它的性能,所以要达到高的选择性,必须用高的阶数,对于同样的滤波器设计指标,FIR滤波器所要求的阶数可能比IIR滤波器高5-10倍,结果成本高信号延时也较大,如果按线性相位要求来说,则IIR滤波器就必须加全通网络进行相位校正,同样大大增加了滤波器的阶数和复杂性。而FIR滤波器却可以得到严格的线性相位。

不论是IIR滤波器还是FIR滤波器的设计都包括三个步骤: (1) 按照实际任务的要求,确定滤波器的性能指标。

(2) 用一个因果、稳定的离散线性时不变系统的系统函数去逼近这一性能指标。根据不同的要求 可以用IIR系统函数,也可以用FIR系统函数去逼近。

(3) 利用有限精度算法实现系统函数,包括结构选择、字长选择等。

2.MATLAB

MATLAB是矩阵实验室(Matrix Laboratory)之意。除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多,工具包又可以分为功能性工具包和学科工具包。

功能工具包用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能。学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类。

MATLAB具有许多的优点比如:语言简洁紧凑,使用方便灵活,库函数极其丰富;MATLAB既具有结构化的控制语句(如for循环,while循环,break语句和if语句),又有面向对象编程的特性;程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行,等等优点。

MATLAB 的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。附加的工具箱(单独提供的专用MATLAB 函数集)扩展了MATLAB 环境,以解决这些应用领域内特定类型的问题。

实验步骤:

一、语音信号的采集

[y,fs,bits]=wavread(); fs =

22050 bits = 16

二、语音信号的频谱分析

实验程序:

[x1,Fs,bits]=wavread('C:\\WINNT\\Media\\ding.wav'); %sound(y,Fs,bits); figure(1);

plot(x1); %做原始语音信号的时域图形 title('原始语音信号');

xlabel('时间 n');ylabel('音量 n'); figure(2);

y1=fft(x1); %做length(x1)点的FFT y1=fftshift(y1);%平移,是频率中心为0

derta_Fs = Fs/length(x1);%设置频谱的间隔,分辨率

plot([-Fs/2:derta_Fs: Fs/2-derta_Fs],abs(y1));%画出原始语音信号的频谱图

title('原始语音信号的频谱');grid on;

三、信号经低通滤波器滤波:

fs=22050; fc1=1100;

wc1=2*pi*fc1/fs;

wp1=2*pi*1000/fs;ws1=2*pi*1200/fs; N1=ceil(200*2*pi/ws1-wp1);

Window=boxcar(N1+1); %长度为N1的矩形窗Window b1=fir1(N1,wc1/pi,Window); figure(3);

freqz(b1,1,512);

title('低通滤波器的频率响应');

x1_low = filter(b1,1, x1);%对信号进行低通滤波 figure(4);

plot(x1_low);title('信号经过低通滤波器(时域)'); figure(5);

plot([-Fs/2:derta_Fs: Fs/2-derta_Fs],abs(fftshift(fft(x1_low)))); title('信号经过低通滤波器(频域)');

四、信号经高通滤波器滤波:

fc2=4900;

wc2=2*pi*fc2/fs;

wp2=2*pi*4800/fs;ws2=2*pi*5000/fs; N2=ceil(4*pi/(ws2-wp2)); Window=boxcar(N2+1);

b2=fir1(N2,wc2/pi,Window); figure(6);

freqz(b2,1,512);%数字滤波器频率响应 title('高通滤波器的频率响应');

x1_high = filter(b2,1,x1);%对信号进行高通滤波

figure(7);plot(x1_high);title('信号经过高通滤波器(时域)');

figure(8);plot([-Fs/2:derta_Fs:

Fs/2-derta_Fs],abs(fftshift(fft(x1_high)))); title('信号经过高通滤波器(频域)');

五、信号经带通滤波器滤波:

f1=1100;f2=3100; %带通滤波器的通带范围 w1=2*pi*f1/fs; %0.1567=0.0499pi w2=2*pi*f2/fs; %0.4417=0.1407pi w=[w1,w2];

N3=ceil(4*pi/(2*pi*200/fs));

b3=fir1(N3,w/pi,'high');%带通滤波器 figure(9);

freqz(b3,1,512);%数字滤波器频率响应 title('高通滤波器的频率响应');

x1_daitong = filter(b3,1,x1);%对信号进行高通滤波

figure(10);plot(x1_daitong);title('信号经过高通滤波器(时域)'); figure(11);

plot([-Fs/2:derta_Fs: Fs/2-derta_Fs],abs(fftshift(fft(x1_daitong)))); title('信号经过带通滤波器(频域)');

六、回放语音信号:

在Matlab中, 函数sound 可以对声音进行回放,其调用格式:

sound (x, fs, bits);

sound(x1_low,Fs); sound(x1_high,Fs); sound(x1_daitong,Fs); 可以感觉滤波前后的声音变化。

结论:

通过此次课程设计,让我了解到数字滤波是数字信号分析中最重要的组成部分之一,与模拟滤波相比,它具有精度和稳定性高、系统函数容易改变、灵活性强、便于大规模集成和可实现多维滤波等优点。还了解到MATLAB具有许多的优点比如:语言简洁紧凑,使用方便灵活,库函数极其丰富;MATLAB既具有结构化的控制语句(如for循环,while循环,break语句和if语句),又有面向对象编程的特性。

参考文献:

1 黄文梅,熊佳林,杨勇编著.信号分析与处理——MATALB言 及应用.长沙:国防科技大学出版社,2000

2 钱同惠编著.数字信号处理.北京:机械工业出版社,2004 3 姚天任,江太辉编著.数字信号处理.第2版.武汉:武汉理工大学出版社,2000

本文来源:https://www.bwwdw.com/article/wnpp.html

Top