1、1摘要MATLAB 语言是一种数据分析和处理功能十分强大的计算机应用软件 ,它可以将声音文件变换为离散的数据文件 , 然后利用其强大的矩阵运算能力处理数据 ,如数字滤波 、傅里叶变换 、时域和频域分析 、声音回放以及各种图的呈现等 , 信号处理是 MATLAB 重要应用的领域之一 。本课程设计介绍了基于 Matlab 的对语音信号采集、处理及 FIR 滤波器的设计,并使之实现的过程。理解与掌握课程中的基本概念、基本原理、基本分析方法,用 Matlab 进行数字语音信号处理,并阐述了课程设计的具体方法、步骤和内容。综合运用本课程的理论知识进行频谱分析以及滤波器设计,通过理论推导得出相应结论,并利
2、用 MATLAB 作为工具进行实现,从而复习巩固课堂所学的理论知识,提高对所学知识的综合应用能力,并从实践上初步实现对数字信号的处理。5关键词: MATLAB 工具 信号语音采集 FIR 滤波器21 课程设计实现1.1 整体设计思路Matlab 语言是一种数据分析和处理功能十分强大的计算机应用软件 ,它可以将声音文件变换为离散的数据文件 , 然后利用其强大的矩阵运算能力处理数据 ,如数字滤波 、傅里叶变换 、时域和频域分析 、声音回放以及各种图的呈现等 , 信号处理是 Matlab 重要应用的领域之一 。本文是用 Matlab对含噪的的语音信号同时在时域和频域进行滤波处理和分析。整个设计思路的
3、设计原理示意图如图 1 所示:1.2 整体实现过程1.2.1 信号的采样 采 样 器 的 作 用 是 把 连 续 信 号 变 为 脉 冲 或 数 字 序 列 。 图 中 示 出了 一 个 连 续 信 号 f(t)经 采 样 器 采 样 后 变 为 离 散 信 号 的 过 程3图 2 连 续 信 号 f(t)经 采 样 器 采 样 后 变 为 离 散 信 号图 中 f(t)为 被 采 样 的 连 续 信 号 , S( t) 为 周 期 性 窄 脉 冲 信 号 ,fs(t)为 采 样 后 的 离 散 信 号 , 它 用 下 式 来 表 征 : fs(t)=f(t)s(t)采 样 信 号 的 频 率
4、 特 性 为 :如 果 F*(j ) 中 各 个 波 形 不 重 复 搭 接 , 相 互 间 有 一 定 的距 离 (频 率 )即 若即 采 样 定 理 可 叙 述 如 下 : 如 果 采 样 周 期 满 足 下 列 条 件 , 即 :式 中 max 为 连 续 信 号 f(t)的 最 高 次 谐 波 的 角 频 率 。 则 采样 信 号 f*(t)就 可 以 无 失 真 地 再 恢 复 为 原 连 续 信 号 f(t)。 需要 指 出 的 是 , 采 样 定 理 只 是 在 理 论 上 给 出 了 信 号 准 确 复 现 的 条 件 。我们可以利用windows自带的录音机录制语音文件,进行
5、数字信号的采集。 (开始程序附件娱乐录音机,文件属性立即转换8000KH z,8位,单声道)或其他软件,将话筒输入计算机的语音输入插口上,启动录音机,录制一段自己的话音。然后在MATLAB软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数。通过wavread函数的使用进一步理解采样频率、采样位数等概念。图2是基于PC机的语音信号采集过程:4声音图3 语音采集过程1.2.2 语音信号的读取在 matlab 软件平台下,利用 wavread 函数对语音信号进行采样,记住采样频率和采样点数。通过使用 wavread 函数,理解采样频率、采样位数等概念。wavread 函数调
6、用格式y=wavread(file),读取 file 所规定的 wav 文件,返回采样值放在向量 y 中。y,fs,nbits=wavread(file),采样值放在向量 y 中,fs 表示采样频率(hz) ,nbits 表示采样位数。y=wavread(file,N) ,读取钱 N 点的采样值放在向量 y 中。y=wavread(file,N1,N2) ,读取从 N1 到 N2 点的采样值放在向量y 中。对语音信号“leo.wav”进行采样其程序如下:y,fs,nbits=wavread(leo.wav)结果如下:Windows 自带录音机麦克风 声卡 滤波 采样 A/D 转换 Wav5可知
7、该语音信号的采样频率fs = 8000Hz ,数据位nbits = 8Bit。1.2.3 语音信号的频谱分析首先画出语音信号的时域波形,然后对语音信号进行频谱分析。在Matlab 中可以利用函数 fft 对信号行快速傅里叶变换,得到信号的频谱特性,从而加深对频谱特性的理解。其程序如下:y,fs,nbits=wavread (leo.wav ); %把语音信号进行加载入 Matlab 仿真软件平台中sound(y,fs,nbits); %回放语音信号n = length (y) ; %求出语音信号的长度Y=fft(y,n); %快速傅里叶变换subplot(2,1,1);plot(y);titl
8、e(原始信号波形);subplot(2,1,2);plot(abs(Y); axis(0 18000 -20 50);title(原始信号频谱)程序结果如下图 3:附录62 FIR 数字滤波器的设计2.1 FIR 滤波器的设计原理设计数字滤波器的任务就是寻求一个因果稳定的线性时不变系统,并使系统函数 H(z)具有指定的频率特性。数字滤波器根据其冲激响应函数的时域特性,可分为两种,即无限长冲激响应(IIR)滤波器和有限长冲激响应(FIR)滤波器。FIR 滤波器的冲激响应只能延续一定时间,在工程实际中可以采用递归的方式实现,也可以采用非递归的方式实现。2.2 FIR 滤波器的性能指标在设计一个滤波
9、器之前,必须首先根据工程实际的需要确定滤波器的技术指标。在很多实际应用中,数字滤波器常常被用来实现选频操作。因此,指标的形式一般在频域中给出幅度和相位响应。幅度指标主要以两种方式给出。第一种是绝对指标。它提供对幅度响应函数的要求,一般应用于 FIR 滤波器的设计。第二种指标是相对指标。它以分贝值的形式给出要求。在工程实际中,这种指标最受欢迎。对于相位响应指标形式,通常希望系统在通频带中人有线性相位。运用线性相位响应指标进行滤波器设计具有如下优点:只包含实数算法,不涉及复数运算;不存在延迟失真,7只有固定数量的延迟;长度为 N 的滤波器(阶数为 N-1),计算量为N/2 数量级。下面给出了有关滤
10、波器的性能指标:1:低通滤波器的性能指标:Fp=1000Hz,Fc=1200Hz,As=100dB,Ap=1dB; 2:高通滤波器的性能指标:Fp=3000Hz,Fc=2800Hz,As=100dB,Ap=1dB;3:带通滤波器的性能指标:Fp1=1200Hz,Fp2=3000HZ,Fc1=1000Hz, Fc2=3200Hz,As=100dB,Ap=1dB;2.3 FIR 数字滤波器设计FIR 滤波器的突出优点是,在保证满足滤波器幅频响应要求的同时,还可以获得严格的线性相位特性,这对于高保真的信号处理。如语音处理、数据处理和测试等是十分重要的。它的主要缺点是,达到相同性能指标所需滤波器阶数要
11、高得多,延迟也比较大FIR 滤波器:Ft=8000;Fp=1000;Fs=1200;wp=2*Fp/Ft;ws=2*Fs/Ft;Ap=1;As=100;p=1-10.(-Ap/20);s=10.(-As/20);fpts=wp ws;mag=1 0;dev=p s;N ,wc,beta,ftype=kaiserord(fpts,mag,dev);b=fir1(N,wc,kaiser(N+1,beta);h,w=freqz(b,1);plot(w/pi,abs(h);title(FIR 滤波器);8grid;图 52.4 滤波器对信号滤波用设计好的数字滤波器对含噪语音信号进行滤波,在Matlab 中FIR 滤波器利用函数fftfilt 对信号进行滤波,FIR滤波器利用函数filter 对信号进行滤波,在一个窗口同时画出滤波前后的波形及频谱如图。FIR低通滤波:FIR高通滤波:FIR带通滤波:2.5 语音信号回放以上几种滤波,我们都可以从信号滤波前后的波形图以及频谱图上看出变化。我们可以用sound()函数来播放滤波后的语音,从听觉上直接感受语音信号的变化,但由于人耳听力的限制,有些情况下我们是很难听出异同的。在matlab 中, 函数sound 可以对声音进行回放,其调用格式为: sound( x,fs,nbits) 。通过回放可以发现滤波前后的声音有变化。