基于matlab的语音信号滤波处理数字信号处理课程设计2Word格式文档下载.docx
《基于matlab的语音信号滤波处理数字信号处理课程设计2Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于matlab的语音信号滤波处理数字信号处理课程设计2Word格式文档下载.docx(10页珍藏版)》请在冰豆网上搜索。
2.3信号经低通滤波器滤波 3
2.4信号经高通滤波器滤波 6
第三章总结 8
参考文献:
8
第一章 绪论
1.1数字滤波器
数字滤波是数字信号分析中最重要的组成部分之一,与模拟滤波相比,它具有精度和稳定性高、系统函数容易改变、灵活性强、便于大规模集成和可实现多维滤波等优点。
在信号的过滤、检测和参数的估计等方面,经典数字滤波器是使用最广泛的一种线性系统。
数字滤波器是指完成信号滤波处理功能的,用有限精度算法实现的离散时间线性非时变系统,其输入是一组数字量,其输出是经过变换的另一组数字量。
因此,数字滤波器本身既可以是用数字硬件装配成的一台完成给定运算的专用的数字计算机,也可以将所需要的运算编成程序,让通用计算机来执行。
从数字滤波器的单位冲击响应来看,可以分为两大类:
有限冲击响应(FIR)数字滤波器和无限冲击响应(IIR)数字滤波器。
滤波器按功能上分可以分为低通滤波器(LPF)、高通滤波器(HPF)、带通滤波器(BPF)、带阻滤波器(BSF)。
在很多实际应用中如语音和音频信号处理中,数字滤波器来实现选频功能。
因此,指标的形式应为频域中的幅度和相位响应。
在通带中,通常希望具有线性相位响应。
在FIR滤波器中可以得到精确的线性相位。
FIR滤波器传递函数的极点是固定在原点,是不能动的,它只能靠改变零点位置来改变它的性能,所以要达到高的选择性,必须用高的阶数,对于同样的滤波器设计指标,FIR
滤波器所要求的阶数可能比IIR滤波器高5-10倍,结果成本高信号延时也较大,如果按线性相位要求来说,则IIR滤波器就必须加全通网络进行相位校正,同样大大增加了滤波器的阶数和复杂性。
而FIR滤波器却可以得到严格的线性相位。
不论是IIR滤波器还是FIR滤波器的设计都包括三个步骤:
(1)按照实际任务的要求,确定滤波器的性能指标。
(2)用一个因果、稳定的离散线性时不变系统的系统函数去逼近这一性能指标。
根据不同的要求 可以用IIR系统函数,也可以用FIR系统函数去逼近。
(3)利用有限精度算法实现系统函数,包括结构选择、字长选择等。
1.2MATLAB
MATLAB是矩阵实验室(MatrixLaboratory)之意。
除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多,工具包又可以分为功能性工具包和学科工具包。
功能工具包用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能。
学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类。
MATLAB具有许多的优点比如:
语言简洁紧凑,使用方便灵活,库函数极其丰富;
MATLAB既具有结构化的控制语句(如for循环,while循环,break语句和if语句),又有面向对象编程的特性;
程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行,等等优点。
MATLAB的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。
附加的工具箱
(单独提供的专用MATLAB函数集)扩展了MATLAB环境,以解决这些应用领域内特定类型的问题。
第二章 语音信号处理
2.1语音信号的采集
首先利用Windows下的录音机,录制一段自己的话音,时间在1s内,存为文件:
music.wav。
然后在MATLAB软件平台下,利用函数wavread对语音信号进行采样,记下采样频率和采样点数为:
PCM44.100kHz,16位。
通过
wavread函数的使用,我们能很快理解采样频率、采样位数等概念。
利用函数wavread对语音信号的采集的程序如下:
functionx=yuanshixinhao(j)
[x,fs,bits]=wavread('
C:
\DocumentsandSettings\gsz\桌面\信号课程设计
\matlab程序\程序\girlsday.wav'
);
%x:
语音数据;
fs:
采样频率;
bits:
采样
7
点数
sound(x,fs,bits);
%话音回放N=length(x);
n=0:
N-1;
figure
(1);
subplot(2,1,1);
plot(n,x);
%画出原始语音信号的波形
xlabel('
n'
ylabel('
x(n)'
title('
原始语音信号'
subplot(2,1,2);
y=fft(x);
%做length(x1)点的FFT
y=fftshift(y);
%平移,是频率中心为0
F=fs/length(x);
%设置频谱的间隔,分辨率
plot([-fs/2:
F:
fs/2-F],abs(y));
%画出原始语音信号的频谱图xlabel('
f/HZ'
Y'
原始语音信号的频谱'
end
2.2语音信号的频谱分析
由2.1节的程序可以得到频谱图图1:
图1
2.3信号经低通滤波器滤波:
先设计低通FIR滤波器,由2.1节可以得到采样频率Fs为44100HZ,bits=16。
设计通带截止频率为1000HZ,阻带截止频率为1200HZ,阻带最大衰减40db。
通过指标可以考虑用hanning窗口实现此低通滤波,程序如下:
functionhn_flp=FLP(i)
fp=1000;
fs=1200;
as=40;
Fs=44100;
%确定技术指标
wp=2*pi*fp/Fs;
ws=2*pi*fs/Fs;
%求归一化频率bt=ws-wp;
%求过渡带
N0=ceil(6.2*pi/bt);
%用hanning窗N=N0+mod(N0+1,2);
wc=(wp+ws)/2;
hn_flp=fir1(N-1,wc/pi,hanning(N));
freqz(hn_flp,1,512);
FIR低通滤波器'
end
其频谱图如图2:
图2
信号经过此滤波器,实现功能:
放大信号并且滤除高频成分。
程序如下:
hn=FLP(0);
x_low0=filter(hn,1,x);
x_low=100*x_low0;
sound(x_low,fs,bits);
%话音回放subplot(2,1,1);
plot(x_low);
xlabel('
t'
x_low'
信号经过低通滤波器(时域)'
y=fft(x_low);
F=fs/length(x_low);
信号经过低通滤波器(频域)'
程序运行频谱图如图3,可对比原信号图图1,可以看出高频成分减少。
图3
2.4、信号经高通滤波器滤波:
设计高通滤波器,通带截止频率5000HZ,阻带截止频率设置为4500HZ,阻带最小衰减40db。
所以可以考虑用hanning高通窗口设计该高通滤波器,其程序如
下:
functionhn=FHP(i)
fp=5000;
fs=4500;
%确定技术指标
ws=2*pi*fs/Fs;
%求归一化频率
bt=wp-ws;
%求过渡带
hn=fir1(N-1,wc/pi,'
high'
hanning(N));
freqz(hn,1,512);
FIR高通滤波器的幅频特性'
其频谱图如下图4:
图4
让原始信号通过此高通滤波器,通过图5(信号通过高通滤波器后的频谱图)可以和图1对比,可以明显发现低频成分被滤除,程序如下:
hn=FHP(0);
信号经过高通滤波器(时域)'
信号经过高通滤波器(频域)'
图5
第3章总结
本次设计让我有了很大的收获,终于清楚的理解了从原始信号到滤波再到还原的过程,实现一种看的见的功能,加深了对基础知识的理解,同时也更加熟悉了matlab这个软件。
不过通过这次设计也发现了自身的缺点,那就是自己理论知识没有那么贯通,还缺乏一个整体的布局。
以后的日子里,要更加注重对原理的理解,同时自己应该多动手做,那样记忆才会深刻。
不管怎样,在这有限的时间里我会更加努力的提高自己,为自己的梦想奋斗。
高西全、丁玉美《数字信号处理》第三版 西安电子科技大学出版社