温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
2023
基于
MATLAB
语音
信号
采集
函数
滤波
目录
…………………………………………………………………………0
1 MATLAB程序设计的根本方法……………………………………… 1
2 数字信号处理的根本理论与方法………………………………… 2
2.1 设计理论依据……………………………………………… 2
2.1.1 采样定理…………………………………………………2
2.1.2 采样频率…………………………………………………3
2.1.3 采样位数与采样频率……………………………………3
3 利用MATLAB采集语言信号并分析………………………………… 4
3.1 语音的录入与翻开………………………………………… 4
3.2 时域信号的FFT分析…………………………………………4
3.3 程序设计源代码………………………………………………5
4 用MATLAB环境采用窗函数法设计数字滤波器………………… 8
4.1 数字滤波器的设计过程………………………………………8
4.2 利用窗函数法设计线性相位FIR数字滤波器………………8
4.2.1 常见窗函数…………………………………………… 8
4.2.2 MATLAB窗函数的实现………………………………… 10
4.3 利用hanning窗设计低通滤波器……………………………11
5 根据所设计的低通滤波器对语音信号进行处理并分析………… 14
6 心得体会…………………………………………………………… 16
参考文献………………………………………………………………… 17
1 MATLAB程序设计的根本方法
MATLAB是矩阵实验室〔Matrix Laboratory〕的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大局部。MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。
MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创立用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB 产品族可以用来进行以下各种工作:
● 数值分析
● 数值和符号计算
● 工程与科学绘图
● 控制系统的设计与仿真
● 数字图像处理技术
● 数字信号处理技术
● 通讯系统设计与仿真
● 财务与金融工程
2 数字信号处理的根本理论与方法
2.1 设计理论依据
图1 原理示意图
2.1.1 采样定理
在进行模拟/数字信号的转换过程中,当采样频率fs.max大于信号中,最高频率fmax的2倍时,即:fs.max>=2fmax,那么采样之后的数字信号完整地保存了原始信号中的信息,一般实际应用中保证采样频率为信号最高频率的5~10倍;采样定理又称奈奎斯特定理:
理想低通信道的最高大码元传输速率=2Wxlog2 N (其中W是理想低通信道的带宽,N是电平强度)
2.1.2 采样频率
采样频率〔也称为采样速度或者采样率〕定义了每秒从连续信号中提取并组成离散信号的采样个数,它用赫兹〔Hz〕来表示。采样频率的倒数是采样周期或者叫作采样时间,它是采样之间的时间间隔。
采样频率只能用于周期性采样的采样器,对于非周期性采样的采样器没有规那么限制。采样频率的常用的表示符号是 f_s。
2.1.3 采样位数与采样频率
采样位数可以理解为声卡处理声音的解析度。这个数值越大,解析度就越高,录制和回放的声音就越真实。中的声音文件是用数字0和1来表示的,所以在上录音的本质就是把模拟声音信号转换成数字信号。反之,在播放时那么是把数字信号复原成模拟声音信号输出。
采样频率是指录音设备在一秒钟内对声音信号的采样次数,采样频率越高声音的复原就越真实越自然。
采样位数和采样频率对于音频接口来说是最为重要的两个指标,也是选择音频接口的两个重要标准。无论采样频率如何,理论上来说采样的位数决定了音频数据最大的力度范围。每增加一个采样位数相当于力度范围增加了6dB。采样位数越多那么捕捉到的信号越精确。采样率越高,计算机摄取的图片越多,对于原始音频的复原也越加精确。
3 利用MATLAB采集语言信号并分析
3.1 语音的录入与翻开
利用MATLAB中的wavread命令来读入〔采集〕语音信号,将它赋值给某一向量。再将该向量看作一个普通的信号,对其进行FFT变换实现频谱分析,再依据实际情况对它进行滤波。对于波形图与频谱图〔包括滤波前后的比照图〕都可以用MATLAB画出。我们还可以通过sound命令来对语音信号进行回放,以便在听觉上来感受声音的变化。
[y,fs,bits]=wavread('Blip',[N1 N2]),用于读取语音,采样值放在向量y中,fs表示采样频率(Hz),bits表示采样位数。[N1 N2]表示读取从N1点到N2点的值〔假设只有一个N的点那么表示读取前N点的采样值〕。
sound(x,fs,bits); 用于对声音的回放。向量y那么就代表了一个信号〔也即一个复杂的“函数表达式〞〕也就是说可以像处理一个信号表达式一样处理这个声音信号。
3.2 时域信号的FFT分析
函数的一种调用格式为:
y=fft(x)
其中,x是序列,y是序列的FFT,x可以为一向量或矩阵,假设x为一向量,y是x的FFT。且和x相同长度。假设x为一矩阵,那么y是对矩阵的每一列向量进行FFT。如果x长度是2的幂次方,函数fft执行高速基-2FFT算法;否那么fft执行一种混合基的离散傅立叶变换算法,计算速度较慢。
函数FFT的另一种调用格式为:
y=fft(x,N)
式中,x,y意义同前,N为正整数。函数执行N点的FFT。假设x为向量且长度小于N,那么函数将x补零至长度N。假设向量x的长度大于N,那么函数截短x使之长度为N。假设x 为矩阵,按相同方法对x进行处理。
经函数fft求得的序列y一般是复序列,通常要求其幅值和相位。MATLAB提供求复数的幅值和相位函数:abs,angle,这些函数一般和FFT同时使用。
3.3 程序设计源代码
fs=8000;
x1=wavread('C:\WINDOWS\Media\Windows XP 关机.wav');
t=(0:length(x1)-1)/8000;
figure(1)
plot(t,x1)
grid on;axis tight;
title('原始语音信号');
xlabel('时间(s)');
ylabel('幅度');
figure(2)
plot(abs(fft(x1,40480)));
grid on;axis tight;
title('原始语音信号FFT频谱')
xlabel('Hz');
ylabel('幅度');
图2 原始语音信号时域波形
图3 原始语音信号频谱图
4 用MATLAB环境采用窗函数法设计数字滤波器
数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来到达频域滤波的目的。根据其单位冲激响应函数的时域特性可分为两类:无限冲激响应〔IIR〕滤波器和有限冲激响应〔FIR〕滤波器。与IIR滤波器相比,FIR的实现是非递归的,总是稳定的;更重要的是,FIR滤波器在满足幅频响应要求的同时,可以获得严格的线性相位特性。因此,它在高保真的信号处理,如数字音频、图像处理、数据传输、生物医学等领域得到广泛应用。
4.1 数字滤波器设计的过程
不管是IIR滤波器还是FIR滤波器的设计都包括三步:
(1) 按照实际任务的要求,确定滤波器的性能指标。
(2) 用一个因果、稳定的离散线性时不变系统的系统函数去逼近这一性能指标。根据不同的要求可以用IIR系统函数,也可以用FIR系统函数去逼近。
(3) 利用有限精度算法实现系统函数,包括结构选择、字长选择等。
4.2 利用窗函数法设计线性相位FIR数字滤波器
4.2.1常用窗函数
(l) 矩形窗
矩形窗使用最多,习惯上不加窗就是使信号通过了矩形窗。这种窗的优点是主瓣比拟集中,缺点是旁瓣较高,并有负旁瓣,导致变换中带进了高频干扰和泄漏,甚至出现负谱现象。
(2) 三角窗
三角窗亦称费杰〔Fejer〕窗,是幂窗的一次方形式,三角窗与矩形窗比拟,主瓣宽约等于矩形窗的两倍,但旁瓣小,而且无负旁瓣
(3) 汉宁窗
汉宁〔Hanning〕窗又称升余弦窗,汉宁窗可以看作是3个矩形时间窗的频谱之和,它可以使用旁瓣互相抵消,消去高频干扰和漏能。
汉宁窗与矩形窗的谱图比照,可以看出,汉宁窗主瓣加宽〔第一个零点在2π/T处〕并降低,旁瓣那么显著减小。第一个旁瓣衰减一32dB,而矩形窗第一个旁瓣衰减-13dB。此外,汉宁窗的旁瓣衰减速度也较快,约为60dB/〔10oct〕,而矩形窗为20dB/〔10oct〕。由以上比拟可知,从减小泄漏观点出发,汉宁窗优于矩形窗。但汉宁窗主瓣加宽,相当于分析带宽加宽,频率分辨力下降。
(4) 海明窗
海明〔Hamming〕窗也是余弦窗的一种,又称改良的升余弦窗,海明窗与汉宁窗都是余弦窗,只是加权系数不同。海明窗加权的系数能使旁瓣到达更小。分析说明,海明窗的第一旁瓣衰减为-42dB。海明窗的频谱也是由 3个矩形时窗的频谱合成,但其旁瓣衰减速度为20dB/〔10oct〕,这比汉宁窗衰减速度慢。海明窗与汉宁窗都是很有用的窗函数。
除了以上几种常用窗函数以外,尚有多种窗函数,如平顶窗、帕仁〔Parzen〕窗、布拉克曼〔Blackman〕窗、凯塞〔kaiser〕窗等。
对于窗函数的选择,应考虑被分析信号的性质与处理要求。如果仅要求精确读出主瓣频率,而不考虑幅值精度,那么可选用主瓣宽度比拟窄而便于分辨的矩形窗,例如测量物体的自振频率等;如果分析窄带信号,且有较强的干扰噪声,那么应选用旁瓣幅度小的窗函数,如汉宁窗、三角窗等;对于随时间按指数衰减的函数,可采用指数窗来提高信噪比。
4.2.2 MATLAB窗函数的实现
利用MATLAB实现窗函数法设计FIR滤波器,主要是选择适宜的窗函数进行截断运算。先从理论上得到待逼近理想滤波器的单位脉冲响应,再由通带、阻带衰减指标确定窗函数类型,由过渡带确定FIR滤波器阶数M,最后利用MATLAB计算出窗函数的值,以及hd[k]Wn[k]的值,由此即得所设计的FIR滤波器的h[k]。MATLAB提供了许多常用的窗函数,其中局部窗函数的调用形式为
W=hanning(N)
W=hamming(N)
W=Blackman(N)
W=Kaiser(N,beta)
其中N是窗函数的长度,beta是控制kaiser窗形状的参数。返回的变量w是一个长度为N的列向量,给出窗函数N点的取值。对于kaiser窗,MATLAB还提供了一个根据带设计滤波器的指标直接计算窗函数的函数,其根本调用形式为
[M,Wc,beta,ftype]=kaiserord(f,a,dev)
其中:参数f表示需要设计的FIR滤波器的B个频带;参数a为B个频带的幅度值,一个通带取1,阻带取0;参数dev为B个频带中的波动值。
4.3 利用hanning窗设计低通滤波器
由题意可知:要设计滤波器滤除信号的高频成分,即设计低通滤波器。故确定设计的低通滤波器的设计指标为:Wp=0.3xpi,Ws=0.5xpi
程序如下:
fs=8000;
x1=wa