基于matlab的数字信号滤波处理
- 格式:doc
- 大小:753.00 KB
- 文档页数:12
数字信号处理课程设计
---------------------------基于matlab的语音
信号滤波处理
学院:
班号:
姓名:
学号:
目录:
一.设计内容 (3)
二.设计原理 (3)
1.运用快速傅里叶变换 (3)
2.采用矩形窗设计滤波器 (3)
三.设计过程 (1)
1.语音信号的采集 (4)
2.语音信号的频谱分析 (4)
3.用滤波器对语音信号进行滤波 (5)
4.回放语音信号 (11)
四.总结 (11)
五.参考文献 (12)
摘要
语音信号处理是研究用数字信号处理技术和语音学知识对语音信号进行处理的新兴的学科,是目前发展最为迅速的信息科学研究领域的核心技术之一。通过语音传递信息是人类最重要、最有效、最常用和最方便的交换信息形式。
Matlab语言是一种数据分析和处理功能十分强大的计算机应用软件,它可以将声音文件变换为离散的数据文件,然后利用其强大的矩阵运算能力处理数据,如数字滤波、傅里叶变换、时域和频域分析、声音回放以及各种图的呈现等,它的信号处理与分析工具箱为语音信号分析提供了十分丰富的功能函数,利用这些功能函数可以快捷而又
方便地完成语音信号的处理和分析以及信号的可视化,使人机交互更加便捷。信号处理是Matlab 重要应用的领域之一。
本设计针对现在大部分语音处理软件内容繁多、操作不便等问题,采用MATLAB7.0各种函数调用等来实现语音信号的变频、变幅、傅里叶变换及滤波,程序界面简练,操作简便,具有一定的实际应用意义。
一.设计内容
首先采集一段语音信号(.wav 格式),时间在几十秒内,运用MATLAB 软件,调用函数功能画出它的时域波形和频谱特性。然后设计滤波器对语音信号进行滤波,比较滤波前后的波形和特性。最后,调用sound 函数回放信号,感觉滤波前后的声音变化。
二.设计原理
1.运用快速傅里叶变换(FFT )对信号进行傅里叶变换,得到频谱特性。
2.采用矩形窗设计滤波器。
矩形窗的定义:一个N 点的矩形窗函数定义为如下
10
10()[()]()1()[()]()N k
N n N kn N k X k DFT x n x n W
x n IDFT x n X k W N -=--=====∑∑n
{1,00,
w n≤<
=
()n N
其他
矩形窗的主瓣宽度小(4*pi/N),具有较高的频率分辨率,旁瓣峰值-13dB,过渡带宽为1.8*pi/N,阻带最小衰减-21dB。
三.设计过程
1.语音信号的采集
在Matlab软件平台下, 利用函数wavread对语音信号《刘若英原来你也在这里.wav》进行采样, 并记住采样频率和采样点数。
运用函数[y,fs,bits]=wavread(‘D:\信号处理\tada.wav’);可以得到:
采样频率:fs = 44100Hz bits =16 Ts=26s
采样点数N=Ts*fs N=26*44100=11.5*105
2.语音信号的频谱分析
首先画出语音信号的时域波形,然后对语音信号进行频谱分析。在Matlab 中, 可以利用函数fft对信号进行快速傅里叶变换, 得到
信号的频谱特性。
程序如下:
[x1,Fs,bits]=wavread('d:\tada.wav');
sound(y,Fs,bits);
figure(1);
plot(x1); %做原始语音信号的时域图形
title('原始语音信号');
xlabel('time n');ylabel('volice 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;
3.用滤波器对语音信号进行滤波
设计滤波器对采集的信号进行滤波, 比较滤波前后语音信号的波形及频谱。要求自己确定滤波器的性能指标,用冲激响应不变法、双线性变换法或窗函数法设计3种滤波器:低通、高通和带通滤波器。
A.运用矩形窗设计的低通滤波器程序:
性能指标:wc1是滤波器截止频率;wp1是通带边界频率;ws1是阻带边界频率fs=44100;
fs=44100;
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('信号经过低通滤波器(频域)');