您的当前位置:首页正文

基于MATLAB的语音信号FIR数字滤波处理

2024-10-18 来源:威能网
目录

1 绪论 ....................................................... 2 2课程设计的具体实现 .......................................... 4

2.1 语音信号的录制 ........................................ 4 2.2 FIR滤波器的设计方法 .................................. 4 3语音信号的时频分析 .......................................... 5

3.1语音信号载入MATLAB .................................... 5 3.2语音信号时域和频域分析 ................................ 6 3.3设计FIR数字滤波器 .................................... 7

3.3.1 窗函数hamming设计带通滤波器 .................... 8 3.3.2 窗函数hanning设计带通滤波器 .................... 9 3.3.3 窗函数Blackman设计带通滤波器 .................. 10 3.3.4 窗函数Boxcar设计带通滤波器 .................... 11 3.4滤波之后的时域和频域分析 ............................. 12

3.4.1 窗函数hamming设计带通滤波器滤波 ............... 13 3.4.2 窗函数hanning设计带通滤波器滤波 ............... 13 3.4.3 窗函数Blackman设计带通滤波器滤波 .............. 14 3.4.4 窗函数Boxcar设计带通滤波器滤波 ................ 15 3.5回放语音信号 ......................................... 16

结论 ........................................................ 16 参考文献 .................................................... 18

1 绪论

数字信号处理是利用计算机或专用处理设备,以数值计算的方法对信号进行采集、抽样、变换、综合、估值与识别等加工处理,借以达到提取信息和便于应用的目的。它在语音、雷达、图像、系统控制、通信、航空航天、生物医学等众多领域都获得了极其广泛的应用。具有灵活、精确、抗干扰强、设备尺寸小、造价低、速度快等优点。

数字滤波器, 是数字信号处理中及其重要的一部分。随着信息时代和数字技术的发展,受到人们越来越多的重视。数字滤波器可以通过数值运算实现滤波,所以数字滤波器处理精度高、稳定、体积小、重量轻、灵活不存在阻抗匹配问题,可以实现模拟滤波器无法实现的特殊功能。数字滤波器种类很多,根据其实现的网络结构或者其冲激响应函数的时域特性,可分为两种,即有限冲激响应( FIR,Finite Impulse Response)滤波器

和无限冲激响应( IIR,Infinite Impulse Response)滤波器。

FIR滤波器结构上主要是非递归结构,没有输出到输入的反馈,系统函数H (z)在处收敛,极点全部在z = 0处(因果系统),因而只能用较高的阶数达到高的选择性。FIR数字滤波器的幅频特性精度较之于IIR数字滤波器低,但是线性相位,就是不同频率分量的信号经过fir滤波器后他们的时间差不变,这是很好的性质。FIR数字滤波器是有限的单位响应也有利于对数字信号的处理,便于编程,用于计算的时延也小,这对实时的信号处理很重要。 FIR滤波器因具有系统稳定,易实现相位控制,允许设计多通带(或多阻带)滤波器等优点收到人们的青睐。

IIR滤波器采用递归型结构,即结构上带有反馈环路。IIR滤波器 运算结构通常由延时、乘以系数和相加等基本运算组成,可以组合成直接型、正准型、级联型、并联型四种结构形式,都具有反馈回路。同时,IIR数字滤波器在设计上可以借助成熟的模拟滤波器的成果,如巴特沃斯、契比雪夫和椭圆滤波器等,有现成的设计数据或图表可查,在设计一个IIR数字滤波器时,我们根据指标先写出模拟滤波器的公式,然后通过一定的变换,将模拟滤波器的公式转换成数字滤波器的公式。

滤波器的设计可以通过软件或设计专用的硬件两种方式来实现。随着

MATLAB软件及信号处理工具箱的不断完善,MATLAB很快成为应用学科等领域不可或缺的基础软件。它可以快速有效地实现数字滤波器的设计、分析和仿真,极减轻了工作量,有利于滤波器设计的最优化。

2课程设计的具体实现

2.1 语音信号的录制

声音格式有很多种类,而MATLAB能够识别的有两种:*.wav和*au。 利用不同方式录制的音频文件格式不正确时,需要利用专门的软件处理。一种简便的方法是利用“千千静听”播放器进行格式转换。

利用PC 机上的声卡和WINDOWS 操作系统可以进行数字信号的采集。将话筒输入计算机的语音输入插口上,启动录音机。按下录音按钮,接着对话筒说话“电子信息工程”,说完后停止录音,屏幕左侧将显示所录声音的长度。点击放音按钮,可以实现所录音的重现。以文件名“fengxiao”。可以看到,文件存储器的后缀默认为. wav ,这是WINDOWS 操作系统规定的声音文件存的标准,以下以wav格式进行。

2.2 FIR滤波器的设计方法

FIR滤波器的设计方法有许多种,如窗函数设计法、频率采样设计法和最优化设计法等。窗函数设计法的基本原理是用一定宽度窗函数截取无限脉冲响应序列获得有限长的脉冲响应序列,主要设计步骤为:

(1) 通过傅里叶逆变换获得理想滤波器的单位脉冲响应hd(n)。

(2) 由性能指标确定窗函数W(n)和窗口长度N。

(3) 求得实际滤波器的单位脉冲响应h(n), h(n)即为所设计FIR滤波器系数向量b(n)。

(4) 检验滤波器性能。

根据滤波前后的时域和频域波形,比较去噪性能。

3语音信号的时频分析

3.1语音信号载入MATLAB

利用MATLAB中的“wavread”命令来读入(采集)语音信号,将它赋值给某一向量。再对其进行采样,记住采样频率和采样点数。

Wavread的函数调用格式为:

[y,fs,nbits]=wavered (‘wav文件的存放路径’);

%把语音信号加载入Matlab 仿真软件平台中,并返回采样频率fs。

3.2语音信号时域和频域分析

时域波形用plot(y)就可以画出。

MATLAB提供了快速傅里叶变换算法FFT计算DFT的函数fft,其调用格式如下:

Xk=fft(xn,N)

参数xn为被变换的时域序列向量,N是DFT变换区间长度,当N大于xn的长度时,fft函数自动在xn后面补零。,当N小于xn的长度时,fft函数计算xn的前N个元素,忽略其后面的元素。

在本次设计中,我们利用fft对语音信号进行快速傅里叶变换,就可以得到信号的频谱特性。其程序如下: clc; clear all;

[x1,Fs,bits]=wavread('F:\\学习\\新建文件夹\\2.wav');sound(x1,Fs); figure(1);

subplot(2,1,1);plot(x1); %做原始语音信号的时域图形 title('原始语音信号时域波形'); xlabel('time n');

ylabel('yinliang n');axis([0,200000,-0.4,0.4]); y1=fft(x1); %做length(x1)点的FFT y1=fftshift(y1);%平移,是频率中心为0

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

subplot(2,1,2);plot([-Fs/2:derta_Fs: Fs/2-derta_Fs],abs(y1));%

画出原始语音信号的频谱图

title('原始语音信号的频谱');axis([-25000,25000,0,400]);grid on; 波形为:

3.3设计FIR数字滤波器

根据语音信号的频谱特点,大致在300~3400之间,因此考虑用带通滤波器对噪声部分进行过滤。

MATLAB中设计FIR滤波器的方法有窗函数法、多带方法、最小二乘

法、任意响应法、余弦法等。本设计从比较熟知的窗函数法入手,通过不同窗函数的分析和比较进行编程。

h(n)=hd(n)w(n)

W(n)所加的窗函数,通过上式将理想滤波器变为物理可实现的滤波器。MATLAB中提供的窗函数有矩形窗、汉明窗、汉宁窗、Blackman窗、三角窗、Kaiser窗等。各种窗函数都有明显的主瓣和旁瓣,主瓣和旁瓣的幅值衰减决定了窗函数的应用场合。矩形窗具有最窄的主瓣,但也具有最大的旁瓣峰值;Blackman窗具有最大的旁瓣衰减,但也具有最宽的主瓣宽度。不同的窗函数在这两方面的特点不同,因此应根据具体的问题进行选择。通常来讲,哈明窗和汉宁窗的主瓣具有较小的旁瓣和较大的衰减速度,是较为常用的窗函数。

3.3.1 窗函数hamming设计带通滤波器

以下是基于窗函数hamming带通滤波器: f1=500;

f2=4000; %带通滤波器的通带围 w1=2*pi*f1/Fs; w2=2*pi*f2/Fs; w=[w1,w2];

N3=ceil(4*pi/(2*pi*200/Fs)); %计算滤波器的阶数 b3=FIR1(N3,w/pi,'DC-0'); %设计FIR带通滤波器

figure(2);

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

3.3.2 窗函数hanning设计带通滤波器

以下是基于窗函数hanning的带通滤波器 f1=100;

f2=2000; %带通滤波器的通带围 w1=2*pi*f1/Fs; w2=2*pi*f2/Fs; w=[w1,w2]; N=ceil(4*pi/(2*pi*200/Fs)); Nw=N;

Windows=HANNING(N) ;

b3=FIR1(N,w, Windows);%带通滤波器

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

3.3.3 窗函数Blackman设计带通滤波器

以下是带通滤波器1(基于窗函数Blackman) f1=100;

f2=2000; %带通滤波器的通带围 w1=2*pi*f1/Fs; w2=2*pi*f2/Fs;

w=[w1,w2];

N=ceil(4*pi/(2*pi*200/Fs)); Nw=N;

Windows=BLACKMAN(N+1) ;

b3=FIR1(N,w,Windows);%带通滤波器 figure(2);

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

3.3.4 窗函数Boxcar设计带通滤波器

以下是基于窗函数Kaiser的带通滤波器 f1=200;f2=3400; %带通滤波器的通带围 w1=2*pi*f1/Fs;w2=2*pi*f2/Fs;

w=[w1,w2];

N=ceil(4*pi/(2*pi*200/Fs)); Nw=N;

Windows=BOXCAR(N+1) ;

b3=FIR1(N,w,Windows);%带通滤波器 figure(2);

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

3.4滤波之后的时域和频域分析

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

3.4.1 窗函数hamming设计带通滤波器滤波

滤波后的波形为:

1、利用haimming窗设计的FIR滤波器滤波后:

3.4.2 窗函数hanning设计带通滤波器滤波

利用hainning窗设计的FIR滤波器滤波后:

3.4.3 窗函数Blackman设计带通滤波器滤波

利用Blackman窗设计的FIR滤波器滤波后:

3.4.4 窗函数Boxcar设计带通滤波器滤波

利用窗设计的FIR滤波器滤波后:

3.5回放语音信号

经过以上的加噪声处理后,可在Matlab中用函数sound对声音进行回放。其调用格式:sound(y,Fs),sound(y)和sound(y,Fs,bits)。可以察觉滤波前后的声音有明显的变化。

结论

本设计圆满的完成了对加噪声语音信号的读取与打开,与课题的要求十分相符;也较好的完成了对原始语音信号和加噪声后的语音信号的频谱分析,通过fft变换,得出了语音信号的频谱图;在滤波这一部分,课题主要是从窗函数巴特沃斯滤波器入手来设计滤波器,实现了的滤波效果; 不足之处是对MATLAB中函数运用熟练,设计的滤波器滤波效果不是太明显。

通过此次课程设计,让我了解到数字滤波是数字信号分析中最重要的组成部分之一,与模拟滤波相比,它具有精度和稳定性高、系统函数容易改变、灵活性强、便于大规模集成和可实现多维滤波等优点。还了解到MATLAB具有许多的优点比如:语言简洁紧凑,使用方便灵活,库函数极其丰富。.

参考文献

1高西全,丁玉美.数字信号处理.第3版.:电子科技大学,2008 2 泉,阙大顺.数字信号处理原理与实现.:电子工业,2005 3 磊,毕靖,郭莲英.MATLAB实用教程.:人民邮电,2008 4 威.MATLAB基础与编程入门.:电子科技大学,2006 5 周利清,菲.数字信号处理基础.:邮电大学,2005

因篇幅问题不能全部显示,请点此查看更多更全内容