基于MATLAB的语音信号滤波处理
基于MATLAB的语音滤波实验设计

A e in fra dofl re p rme tb s d o d sg o u i i e x e i n a e n MAT AB t L
LEIXue tn —a g, XU o x Hu — i
( eto P yis ungn om l nvrt,H b i u nzo 30 0 h a D p.f hs ,H a gagN r a U i sy u e H aghu4 80 ,C i ) c ei n
维普资讯
! =! 堑
CNl l一2 3 / 04T
实
验
技
术
与
管
理
第2 4卷
第 4期
20 0 7年 4月
E p rme tlTe h o o y a d Ma a e n xe i n a c n l g n n g me t
Vo . 4 No 4 Ap .2 07 12 . r 0
基 于 MA L B的语 音 TA 滤 波 实验 设 计
雷学堂 ,徐 火希
( 冈师范学院 物 电系
要: 利用 MA L B的声音处理 函数作为数据接 口,并利 用多媒体播放 器作 为交互界面 ,设计 了一组 语 TA
音信号滤波实验 ,目的在于通过对比滤波前后 的语音效果来加深对数字信 号处理 的认识 。 关键词 :M T A A L B;数字信号处理 ;语音滤 波 中图分类号 : P9 T3 1 文献标识码 : B 文章 编号 :10 -9 6 2 0 )4 0 3 — 4 0 24 5 (0 7 0 — 0 8 0
理解数字信号处理中抽象数学运算的现实物理意义
很 有 帮助 。
1 语音信 号时域滤波实验的设计
由于 MA L B是 以 矩 阵 的 形 式 组 织 数 据 的 , TA 对 于单 声道 的语音 数据 在 MA L B中是一 维 数组 。 TA MA L B中有 2个 处 理 . a 式 语 音 的 函数 ,一 TA w y格 个 是将 . a 语 音 流 文件 转 换 为 数 组 格 式 数据 的 函 wy
如何利用Matlab进行语音降噪

如何利用Matlab进行语音降噪引言:随着科技的不断进步,语音处理技术得到了广泛应用。
在日常生活中,我们经常会遇到因环境噪音而影响语音质量的情况,比如通话中的噪音干扰、音频文件中的杂音等。
而语音降噪技术的出现,为我们解决这些问题提供了更加便捷和高效的方法。
本文将着重介绍如何利用Matlab进行语音降噪的方法和步骤。
一、了解语音降噪的原理在进行语音降噪之前,我们需要先了解语音降噪的原理。
语音降噪的核心目标是通过滤波等处理方法,尽可能减小或去除语音信号中的噪音成分,使得经过降噪处理后的语音信号更加纯净和清晰。
常用的语音降噪方法包括时域滤波法、频域滤波法等。
而在Matlab中,我们通常使用基于频域滤波的方法来实现语音降噪。
二、准备工作在使用Matlab进行语音降噪之前,首先需要准备好相关的工具和材料。
我们需要安装Matlab软件,并确保具备一定的编程能力和相关的信号处理知识。
此外,还需要一段包含噪音的语音信号作为我们的输入数据,方便我们进行处理和测试。
三、确定降噪算法在进行语音降噪之前,我们需要选择合适的降噪算法。
降噪算法的选择至关重要,直接影响到降噪效果的好坏。
常用的降噪算法有小波降噪、谱减法、模糊集合等。
在Matlab中,我们可以根据实际情况和特定需求选择适合的降噪算法。
四、准备输入数据在进行语音降噪之前,我们需要将相关的语音数据导入到Matlab中进行处理。
可以通过直接录制语音、导入.wav格式的音频文件等方式进行数据的准备。
在准备数据时,需要注意选择含有噪音的语音信号作为输入数据,以便进行后续的降噪处理。
五、实施降噪处理通过上述步骤的准备工作,我们可以开始进行语音降噪处理。
在Matlab中,我们可以根据选择的降噪算法,编写相应的代码进行处理。
具体实施过程中,可以结合Matlab提供的信号处理工具和函数,如fft、ifft、滤波器设计等进行降噪处理。
六、优化和调整在进行语音降噪处理之后,需要对结果进行优化和调整。
基于matlab的语音信号的基本处理

专题研讨四、信号与系统综合应用确定题目(根据个人兴趣、结合实际确定题目,可从下面参考题目中选择,也可自由确定):基于matlab的语音信号的基本处理参考题目:题目1:含噪信号滤波题目2:双音多频信号的产生与检测题目3:磁盘驱动系统仿真题目4:卡尔曼滤波器的应用题目5:应用反馈扩大放大器的带宽(以上只是本专题的部分题目)开题报告课题实施过程记录包括仿真程序、仿真结果、结果分析、方案完善等 ○1语音信号的制作及描述 1) 制作语音文件:用windows 录音机录制一小段语音文件"333.wav ”,内容为"信号与信息系统",由一同学播音. 2) 用matlab 播放”333.wav ”仿真程序:3) [y,Fs,bits]=wavread('333.wav'); sound(y,Fs);pause;4) 绘画出语音文件的时域和频域波形: 仿真程序:[y,Fs,bits]=wavread('333.wav'); plot(y);仿真结果:0123456789x 104-0.8-0.6-0.4-0.20.20.40.6结果分析:随着时间变化,声音能量图形 方案完善:1.时间轴有问题,与实际的时间不一样.2.语音信号的频域分析更清楚.仿真程序:[y,Fs,bits]=wavread('333.wav'); y=y(:,1);sLength=length(y); Y = fft(y,sLength);Pyy = Y.* conj(Y) / sLength; halflength=floor(sLength/2); f=Fs*(0:halflength)/sLength; figure;plot(f,Pyy(1:halflength+1));xlabel('Frequency(Hz)'); t=(0:sLength-1)/Fs; figure;plot(t,y);xlabel('Time(s)');仿真结果:0.51 1.52 2.5x 104Frequency(Hz)00.20.40.60.81 1.2 1.4 1.6 1.82-0.8-0.6-0.4-0.20.20.40.6Time(s)结果分析:频域分析是从另一个角度观察信号;语音信号的一般频域范围"200~2000"Hz ○2语音信号抽取及倍插仿真程序:[y,Fs,bits]=wavread('111.wav'); sound(y,Fs/2);pause;[y,Fs,bits]=wavread('111.wav'); sound(y,2*Fs);pause;仿真结果与分析:以Fs/2及2*Fs 播放的语音信号存在失真, 方案完善:需要做出波形,做更直观的观察. ○3语音信号的加噪1)语音信号加高频噪音及播放. 仿真程序:[y,Fs,bits]=wavread('333.wav'); y=y(:,1);sLength=length(y);t=(0:sLength-1)/Fs;f=50000;A=0.5;d=A*cos(2*pi*f*t)';y=y+d;sound(y,Fs);仿真结果:播放时伴有尖锐的”吱吱”声.结果分析:由于加入高频成分余弦信号,信号叠加后出现了尖锐的噪音.2)加噪后的语音信号的时域和频域波形.仿真程序:[y,Fs,bits]=wavread('333.wav');y=y(:,1);sLength=length(y);t=(0:sLength-1)/Fs;f=50000;A=0.05;d=A*cos(2*pi*f*t)';y1=y+d;sLength=length(y1);Y = fft(y1,sLength);Pyy = Y.* conj(Y) / sLength;halflength=floor(sLength/2);f=Fs*(0:halflength)/sLength;figure;plot(f,Pyy(1:halflength+1));xlabel('Frequency(Hz)');仿真结果:00.20.40.60.81 1.2 1.4 1.6 1.82-0.8-0.6-0.4-0.20.20.40.6Time(s)0.51 1.522.5x 10405101520253035404550Frequency(Hz)结果分析:时域波形跟加噪前没有什么明显的区别.在频域上我们发现有一个近6000Hz的高频成分,这是产生的噪音的根本所在.方案完善:运用subplot将加噪前和加噪后的时域和频域波形进行对比,效果会更好.○4数字滤波这一部分我们学习了函数BUTTER,进行了最简单的数字滤波.[b,a]=butter(N,wc);代表数字低通滤波器,wc代表归一化频率(0<wc<=1,等于一时为奈奎斯特频率);N为滤波器的阶数.y2=filter(b,a,y1);对信号y1进行巴特滤波,滤波器为[b,a]系统滤波后信号的效果播放.仿真程序:[y,Fs,bits]=wavread('333.wav');y=y(:,1);sLength=length(y);t=(0:sLength-1)/Fs;f=50000;A=0.05;d=A*cos(2*pi*f*t)';y1=y+d;N=2;wc=[0.01,0.07];[b,a]=butter(N,wc);y2=filter(b,a,y1);sound(y2,Fs);仿真结果:原先的噪声消失,语音信号变回原样.滤波器为低通滤波器,滤去高频成分.方案完善:1.画出滤波后的时域和频域波形2. 对滤波器进行系统分析1.画出滤波后的时域和频域波形仿真程序:[y,Fs,bits]=wavread('333.wav');y=y(:,1);sLength=length(y);t=(0:sLength-1)/Fs;f=50000;A=0.05;d=A*cos(2*pi*f*t)';y1=y+d;plot(t,y);xlabel('Time(s)');N=2;wc=[0.01,0.07];[b,a]=butter(N,wc);y2=filter(b,a,y1); sLength1=length(y2); Y1 = fft(y2,sLength1);Pyy = Y1.* conj(Y1) / sLength1; halflength1=floor(sLength1/2); f1=Fs*(0:halflength1)/sLength1; figure;plot(f,Pyy(1:halflength+1));xlabel('Frequency(Hz)'); t=(0:sLength-1)/Fs; figure;plot(t,y2);xlabel('Time(s)');仿真结果:00.51 1.52 2.5x 1040.511.522.53Frequency(Hz)00.20.40.60.81 1.2 1.4 1.6 1.82-0.8-0.6-0.4-0.20.20.40.6Time(s)结果分析:基本效果良好,有少许失真. 2. 对滤波器进行系统分析 仿真程序:w=linspace(0,6000,10000); wc=[0.01 0.07]; N=2;[b,a]=butter(N,wc); H=freqz(b,a,w); plot(w,abs(H)); axis([0 2500 0 1.5]);仿真结果:010002000300040005000600000.511.5○3RC 模拟滤波(物理形式熟悉) [y,Fs,bits]=wavread('333.wav');%¶Á³öÐźţ¬²ÉÑùÂʺͲÉÑùλÊý¡£y=y(:,1);sLength=length(y);t=(0:sLength-1)/Fs;f=50000;A=0.5;d=A*cos(2*pi*f*t)';y1=y+d;RC=0.001;b=1/RC;a=[1,1/RC];sys=tf(b,a);y2=lsim(sys,y1,t);sound(y2,Fs);结果:效果良好,声音恢复.RC 滤波器的波特图RC=0.001;w=linspace(0,2,1024);b=1/RC;a=[1,1/RC];g=tf(b,a);bode(g);xlabel('w');ylabel('H(jw)');-40-30-20-100M a g n i t u d e (d B)101102103104105H (j w ) (d e g )Bode Diagramw (rad/sec)总结报告摘要:利用所学的知识对实际语音信号进行时域,频域分析;体会信号的抽样定理,即信号的抽取和倍插;运用信号叠加对信号进新加噪(高频),并用数字滤波器butter 滤去高频成分去噪;课题原理框图:课题最终仿真程序:○1语音信号的制作及描述; [y,Fs,bits]=wavread('333.wav');sound(y,Fs);pause;[y,Fs,bits]=wavread('333.wav');y=y(:,1);sLength=length(y);Y = fft(y,sLength);Pyy = Y.* conj(Y) / sLength;halflength=floor(sLength/2);f=Fs*(0:halflength)/sLength;figure;plot(f,Pyy(1:halflength+1));xlabel('Frequency(Hz)');t=(0:sLength-1)/Fs;figure;plot(t,y);xlabel('Time(s)');○2语音信号抽取及倍插; [y,Fs,bits]=wavread('111.wav');sound(y,Fs/2);pause;[y,Fs,bits]=wavread('111.wav');sound(y,2*Fs);pause;○3语音信号的加噪;[y,Fs,bits]=wavread('333.wav');y=y(:,1);sLength=length(y);t=(0:sLength-1)/Fs;f=50000;A=0.05;d=A*cos(2*pi*f*t)';y1=y+d;N=2;wc=[0.01,0.07];[b,a]=butter(N,wc);y2=filter(b,a,y1);sound(y2,Fs);[y,Fs,bits]=wavread('333.wav');y=y(:,1);sLength=length(y);t=(0:sLength-1)/Fs;f=50000;A=0.05;d=A*cos(2*pi*f*t)';y1=y+d;sLength=length(y1);Y = fft(y1,sLength);Pyy = Y.* conj(Y) / sLength;halflength=floor(sLength/2);f=Fs*(0:halflength)/sLength;figure;plot(f,Pyy(1:halflength+1));xlabel('Frequency(Hz)');○4滤波器.[y,Fs,bits]=wavread('333.wav');y=y(:,1);sLength=length(y);t=(0:sLength-1)/Fs;f=50000;A=0.05;d=A*cos(2*pi*f*t)';y1=y+d;N=2;wc=[0.01,0.07];[b,a]=butter(N,wc);y2=filter(b,a,y1);sound(y2,Fs);[y,Fs,bits]=wavread('333.wav');y=y(:,1);sLength=length(y);t=(0:sLength-1)/Fs;f=50000;A=0.05;d=A*cos(2*pi*f*t)';y1=y+d;plot(t,y);xlabel('Time(s)');N=2;wc=[0.01,0.07];[b,a]=butter(N,wc);y2=filter(b,a,y1);sLength1=length(y2);Y1 = fft(y2,sLength1);Pyy = Y1.* conj(Y1) / sLength1;halflength1=floor(sLength1/2);f1=Fs*(0:halflength1)/sLength1;figure;plot(f,Pyy(1:halflength+1));xlabel('Frequency(Hz)');t=(0:sLength-1)/Fs;figure;plot(t,y2);xlabel('Time(s)');w=linspace(0,6000,10000);wc=[0.01 0.07];N=2;[b,a]=butter(N,wc);H=freqz(b,a,w);plot(w,abs(H));axis([0 2500 0 1.5]);[y,Fs,bits]=wavread('333.wav');%¶Á³öÐźţ¬²ÉÑùÂʺͲÉÑùλÊý¡£y=y(:,1);sLength=length(y);t=(0:sLength-1)/Fs;f=50000;A=0.5;d=A*cos(2*pi*f*t)';y1=y+d;RC=0.001;b=1/RC;a=[1,1/RC];sys=tf(b,a);y2=lsim(sys,y1,t);sound(y2,Fs);RC=0.001;w=linspace(0,2,1024);b=1/RC;a=[1,1/RC];g=tf(b,a);bode(g);xlabel('w');ylabel('H(jw)');课题成果:1)了解了语音信号matlab处理的基本过程及思路,重点复习了波形绘制,系统响应;2)体会到理论与实践的结合,语音信号的处理和实际生活接近,趣味性强.本课题还存在哪些问题?1)对matlab的一些函数比较模糊,比如信号的长度估计,butter滤波函数的运用2)对于信号的滤波只是在很理想的高频情形下,过于单一简单,对实际的噪声滤波还有很多需要完善的.研究性学习自我体会与评价通过研究性学习你在哪些方面有所收获?(如学习方法、合作精神、探索精神、创新意识等)。
MATLAB语音信号采集与处理

MATLAB课程设计报告课题:语音信号采集与处理目录一、实践目的 (3)二、实践原理: (3)三、课题要求: (3)四、MATLAB仿真 (4)1、频谱分析: (4)2、调制与解调: (5)3、信号变化: (8)快放: (8)慢放: (8)倒放: (8)回声: (8)男女变声: (9)4、信号加噪 (10)5、用窗函数法设计FIR滤波器 (11)FIR低通滤波器: (12)FIR高通滤波器: (13)FIR带通滤波: (14)一、实践目的本次课程设计的课题为《基于MATLAB的语音信号采集与处理》,学会运用MATLAB的信号处理功能,采集语音信号,并对语音信号进行滤波及变换处理,观察其时域和频域特性,加深对信号处理理论的理解,并为今后熟练使用MATLAB进行系统的分析仿真和设计奠定基础。
此次实习课程主要是为了进一步熟悉对matlab软件的使用,以及学会利用matlab对声音信号这种实际问题进行处理,将理论应用于实际,加深对它的理解。
二、实践原理:利用MATLAB对语音信号进行分析和处理,采集语音信号后,利用MATLAB软件平台进行频谱分析;并对所采集的语音信号加入干扰噪声,对加入噪声的信号进行频谱分析,设计合适的滤波器滤除噪声,恢复原信号。
语音信号的“短时谱”对于非平稳信号, 它是非周期的, 频谱随时间连续变化, 因此由傅里叶变换得到的频谱无法获知其在各个时刻的频谱特性。
如果利用加窗的方法从语音流中取出其中一个短断, 再进行傅里叶变换, 就可以得到该语音的短时谱。
三、课题要求:○1利用windows 自带的录音机或者其它录音软件,录制几段语音信号(要有几种不同的声音,要有男声、女声)。
○2对录制的语音信号进行频谱分析,确定该段语音的主要频率范围,由此频率范围判断该段语音信号的特点(低沉or 尖锐)。
○3利用采样定理,对该段语音信号进行采样,观察不同采样频率(过采样、欠采样、临界采样)对信号的影响。
基于Matlab的语音信号数字滤波

基 于语 音 的产 生 和语 音 感 知 的研 究 ; 二 是 将 语 音 信 号 作 为一 种 信 号 进 行 处 理 , 如利用数字滤波 、 快 速 傅 里 叶变换 等 方法 | 2 J 。笔 者 将利 用 Ma t l a b软件 , 设 计 数 字滤 波器 对语 音 信 号 做 降 噪处 理 , 达 到 提 高 语
内容 。 对语音 信 号处 理 的方 法 主 要 包 括 两 方 面 : 一 是
式中: ( ) , Y ( z ) 分 别 为输入 ( T t ) 和输 出 Y ( n ) 的z 在频 率域 内 , 输入 和输 出存 在下 列关 系
Y ( j 6 0 )=H( j ) X( j 6 0 ) ( 3 )
【 关键词 】M a t l a b ; 数字滤波器 ; 语音信号处理 ; 噪声 【 中图分类号 】T B 9 1 2 【 文献标 志码 】A
Di gi t a l Fi l t e r o f S pe e c h S i g na l Ba s e d o n M a t l ab
2 数 字滤 波 器 原 理 概 述及 设 计 方 法
2 . 1 数 字滤 波器 的 工作原 理
到各种噪声的干扰。例如 , 有线电话和无线通信中的 回波 噪声¨ J 、 工频 干 扰 和 一 些 随 机 噪声 。这些 噪声
严重影 响 了人们 的通话 质 量 。长期 在强 噪 声 的环境 下生活 和工作 , 还会 危害人 的身心健康 。
法设计 F I R 数 字 滤波 器 和 用 双 线性 变化 法 设 计 I I R 数 字 滤波 器 , 并对语音信号进行滤 波, 去 除 噪 声 。 通 过 分 析 滤 波 后 信 号 的频 谱 图 , 简 单 而 有效 地 阐述 了两种 数 字滤 波 器 在 信 号 处 理 中的 优 势 。
利用Matlab进行语音合成和音频增强处理

利用Matlab进行语音合成和音频增强处理引言人类语音是一种重要的交流工具,语音合成和音频增强处理是利用计算机技术来模拟和改善语音信号的质量和特征的方法。
在实际应用中,利用Matlab进行语音合成和音频增强处理可以帮助我们实现更好的语音识别、语音合成和音频处理效果。
本文将介绍如何利用Matlab进行语音合成和音频增强处理,并探讨其在实际应用中的潜在价值。
一、语音合成语音合成是指通过计算机技术将文本转化为与人类语音相似的声音信号。
利用Matlab可以通过多种方法进行语音合成,其中最常用的方法之一是基于合成过程的参数提取和重构。
在语音合成中,首先需要从文本中提取语音的特征参数,例如基频、共振峰频率等。
然后,根据这些参数和合成模型,可以通过数字信号处理技术将这些特征参数转化为声音信号。
最后,可以应用数字信号处理算法来改善合成声音的质量。
除了基于合成过程的方法,利用深度学习和神经网络等技术进行语音合成也是一种常见的方法。
这些方法可以通过训练模型来实现高质量的语音合成,但是需要大量的数据和计算资源。
二、音频增强处理音频增强处理是指通过算法和技术改善音频信号的质量和清晰度。
利用Matlab 可以进行多种音频增强处理,例如降噪、去混响、音频增益调整等。
降噪是一种常见的音频增强处理方法,它可以通过去除环境噪声和其他干扰声音来提升语音信号的清晰度。
利用Matlab可以应用数字滤波器和自适应滤波器等算法来实现降噪处理。
去混响是另一种常见的音频增强处理方法,它可以通过去除声音的反射和共振效应来改善音频信号的质量。
利用Matlab可以应用卷积混响模型和数字滤波器等算法来实现去混响处理。
除了降噪和去混响,音频增益调整也是一种常见的音频增强处理方法。
它可以通过调整音频信号的增益来改变音频信号的音量和动态范围。
三、实例应用利用Matlab进行语音合成和音频增强处理在实际应用中具有广泛的潜在价值。
下面举例说明几个应用场景:1. 语音合成应用于自动语音电话系统。
(完整版)基于MATLAB的FIR滤波器语音信号去噪

*****************实践教学******************兰州理工大学计算机与通信学院2013年春季学期《信号处理》课程设计题目:基于MATLAB的FIR滤波器语音信号去噪专业班级:姓名:学号:指导教师:成绩:摘要本次课程设计是基于MATLAB的FIR滤波器语音信号去噪,在设计过程中,首先录制一段不少于10秒的语音信号,并对录制的信号进行采样;其次使用MATLAB会出采样后的语音信号的时域波形和频谱图;然后在给原始的语音信号叠加上噪声,并绘出叠加噪前后的时域图及频谱图;再次设计FIR滤波器,针对语音信号的性质选取一种适合的窗函数设计滤波器进行滤波;最后对仿真结果进行分析。
设计出的滤波器可以满足要求。
关键词: FIR滤波器;语音信号;MATLAB仿真目录一 FIR滤波器设计的基本原理 (1)1.1滤波器的相关介绍 (1)1.1.1数字滤波器的概念 (1)1.1.2 IIR和FIR滤波器 (1)1.2利用窗函数法设计FIR滤波器 (1)1.2.1窗函数法设计FIR滤波器的基本思想 (1)1.2.2窗函数法设计FIR滤波器的步骤 (2)1.2.2窗函数法设计FIR滤波器的要求 (2)1.2.3常用窗函数的性质和特点 (3)1.2.4 语音处理中的采样原理 (3)二语音信号去噪实现框图 (5)三详细设计 (7)3.1 信号的采集 (7)3.2 语音信号的读入与打开 (7)3.3 语音信号的FFT变换 (8)3.4含噪信号的合成 (9)3.5 FIR滤波器的设计 (10)3.6 利用FIR滤波器滤波 (11)3.7 结果分析 (14)总结 (15)参考文献 (16)附录 (17)致谢 (21)一 FIR滤波器设计的基本原理1.1滤波器的相关介绍1.1.1数字滤波器的概念数字滤波器(Digital Filter,简称为DF)是指用来对输入信号进行滤波的硬件和软件。
所谓数字滤波器,是指输入、输出均为数字信号,通过一定运算关系改变输入信号所含频率成分的相对比例或者滤除某些频率成分的器件。
matlab对语音信号的处理及分析

Matlab对语音信号的处理及分析摘要:Matlab语言是一种数据分析和处理功能十分强大的计算机应用软件,它可以将声音文件变换为离散的数据文件,然后利用其强大的矩阵运算能力处理数据,如数字滤波,时域和频谱分析等,他的信号处理与分析工具箱为语音信号的处理和分析提供了十分丰富的功能函数,利用这些函数可以快捷而又方便地完成语音信号的处理和分析。
关键词:Matlab、语音信号、数字滤波、信号处理Matlab for speech signal processing and analysisZhu hao(College of Physics and Electronic Engineering Information Wenzhou university)Abstract:Matlab language is a data analysis and processing functions are very powerful computer application software, sound files which can be transformed into discrete data files, then use its powerful ability to process the data matrix operations, such as digital filtering,when domain and frequency domain analysis and so on. Its signal processing and analysis toolkit for voice signal analysis provides a very rich feature function, use of these functions can be quick and convenient features complete voice signal processing and analysis.Keywords: Matlab,Voice Signal,Digital filtering,The signal processing正文:1.引言随着社会文化的进步和科学技术的发展,人类开始进入了信息化时代,用现代手段研究语音处理技术,使人们能更加有效地产生、传输、存储、和获取语音信息,这对于促进社会的发展具有十分重要的意义,因此,语音信号处理正越来越受到人们的关注和广泛的研究。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于MATLAB的语音信号滤波处理题目:基于MATLAB的语音信号滤波处理课程:数字信号处理学院:电气工程学院班级:学生:指导教师:二O一三年十二月目录CONTENTS摘要一、引言二、正文1.设计要求2.设计步骤3.设计内容4.简易GUI设计三、结论四、收获与心得五、附录一、引言随着Matlab仿真技术的推广,我们可以在计算机上对声音信号进行处理,甚至是模拟。
通过计算机作图,采样,我们可以更加直观的了解语音信号的性质,通过matlab编程,调用相关的函数,我们可以非常方便的对信号进行运算和处理。
二、正文2.1 设计要求在有噪音的环境中录制语音,并设计滤波器去除噪声。
2.2 设计步骤1.分析原始信号,画出原始信号频谱图及时频图,确定滤波器类型及相关指标;2.按照类型及指标要求设计出滤波器,画出滤波器幅度和相位响应,分析该滤波器是否符合要求;3.用所设计的滤波器对原始信号进行滤波处理,画出滤波后信号的频谱图及时频图;4.对滤波前的信号进行分析比对,评估所设计滤波器性能。
2.3 设计内容1.原始信号分析分析信号的谱图可知,噪音在1650HZ和3300HZ附近的能量较高,而人声的能量基本位于1000HZ以下。
因此,可以设计低通滤波器对信号进行去噪处理。
2.IIR滤波器设计用双线性变换法分别设计了巴特沃斯低通滤波器和椭圆低通滤波器和带阻滤波器:①巴特沃斯滤波器fp=800;fs=1300;rs=35;rp=0.5;程序代码如下:fp=800;fs=1300;rs=35;rp=0.5;Fs=44100;wp=2*Fs*tan(2*pi*fp/(2*Fs));ws=2*Fs*tan(2*pi*fs/(2*Fs));[n,wn]=buttord(wp,ws,rp,rs,'s');[b,a]=butter(n,wn,'s');[num,den]=bilinear(b,a,Fs);[h,w]=freqz(num,den,512,Fs);②椭圆低通滤波器fp=1300;fs=1600;rs=60;rp=0.5; 程序代码如下:fp=1300;fs=1600;rs=60;rp=0.5;Fs=44100;wp=2*Fs*tan(2*pi*fp/(2*Fs));ws=2*Fs*tan(2*pi*fs/(2*Fs)); [n,wn]=ellipord(wp,ws,rp,rs,'s');[b,a]=ellip(n,rp,rs,wn,'s');[num,den]=bilinear(b,a,Fs);[h,w]=freqz(num,den,512,Fs);③带阻滤波器fp1=800;fp2=2300;fs1=1300;fs2=1800;rs=30;rp=0.6 fp3=2800;fp4=4000;fs3=3200;fs4=3700;rs=30;rp=0.6 程序代码如下:fp1=800;fp2=2300;fs1=1300;fs2=1800;rs=30;rp=0.6;Fs=44100; fp=[fp1,fp2];fs=[fs1,fs2];wp=2*Fs*tan(2*pi*fp/(2*Fs));ws=2*Fs*tan(2*pi*fs/(2*Fs));[n,wn]=buttord(wp,ws,rp,rs,'s');[b,a]=butter(n,wn,'stop','s');[num,den]=bilinear(b,a,Fs);[h,w]=freqz(num,den,512,Fs);fp3=2800;fp4=4000;fs3=3200;fs4=3700;rs=30;rp=0.6;Fs=44100; fp1=[fp3,fp4];fs1=[fs3,fs4];wp1=2*Fs*tan(2*pi*fp1/(2*Fs));ws1=2*Fs*tan(2*pi*fs1/(2*Fs));[n1,wn1]=buttord(wp1,ws1,rp,rs,'s');[b1,a1]=butter(n1,wn1,'stop','s');[num1,den1]=bilinear(b1,a1,Fs);[h1,w1]=freqz(num1,den1,512,Fs);3.FIR滤波器①加hamming窗n=100;fp=1000;Fs=44100;b=fir1(n,fp/(Fs/2),Hamming(n+1)); [h,w]=freqz(b,1,512,Fs);②加hanning窗n=;fp=1000;Fs=44100;b=fir1(n,fp/(Fs/2),Hanning(n+1)); [h,w]=freqz(b,1,512,Fs);③加blackman窗n=100;fp=1000;Fs=44100;b=fir1(n,fp/(Fs/2),blackman(n+1));[h,w]=freqz(b,1,512,Fs);4.滤波前后比对①巴特沃斯低通滤波器滤波后②椭圆低通滤波器滤波后③带阻滤波器④加hamming窗⑤加hanning窗⑥加blackman窗2.4简易GUI界面设计为了便于操作和演示,设计了如下的简易GUI界面。
三、结论由以上谱图分析可知,经过滤波器滤波后,信号中的高频杂音明显被抑制,而人声成分大部分被保留,起到了预期的滤波作用。
对比所设计的两种滤波器,椭圆滤波器在过渡带相对较窄的情况下,能满足相对较高阻带衰减。
四、收获与心得本次设计大概进行了一周的时间,语音信号处理的是目前比较流行且十分有趣的,在编程实现的过程中还是遇到了很多困难。
在前期的准备工作中,查阅了大量资料,以完善我们的理论知识。
我们为了完成本次设计,我们通过查阅相关书籍以及matlab中的帮助,选用不同的matlab函数,尝试不同的参数。
经过接近一个礼拜的反复调试,最终基本的实现了设计任务。
虽然遇到了很多困难,但是我们在设计过程中都有收获很大。
本次设计将信号与系统课上学习的知识用于实践,让我们对对语音信号处理更深入的了解,也让我们加深了对滤波器相关内容的理解,同时也使得我们的Matlab能力有了很大的提高。
参考文献《应用matlab实现信号分析和处理》科学出版社附录1 巴特沃斯低通滤波器fp=800;fs=1300;rs=35;rp=0.5;Fs=44100; wp=2*Fs*tan(2*pi*fp/(2*Fs));ws=2*Fs*tan(2*pi*fs/(2*Fs));[n,wn]=buttord(wp,ws,rp,rs,'s');[b,a]=butter(n,wn,'s');[num,den]=bilinear(b,a,Fs);[h,w]=freqz(num,den,512,Fs);figure(1)%subplot(3,1,1)plot(w,abs(h));xlabel('频率/Hz');ylabel('幅值');title('巴特沃斯低通滤波器幅度特性');axis([0,5000,0,1.2])grid on;figure(2)%subplot(3,1,2)plot(w,20*log10(abs(h)));xlabel('频率/Hz');ylabel('幅值db');title('巴特沃斯低通滤波器幅度特性db'); axis([0,5000,-90,10]);grid on;figure(3)plot(w,180/pi*unwrap(angle(h))); xlabel('频率/Hz');ylabel('相位');title('巴特沃斯低通滤波器相位特性');axis([0,5000,-1000,10])grid on;[s1,Fs,bits]=wavread('D:\222.wav');x1=s1(:,1);sound(x1,Fs,bits);N1=length(x1);Y1=fft(x1,N1);f1=Fs*(0:N1-1)/N1;t1=(0:N1-1)/Fs;figure(4)plot(f1,abs(Y1))xlabel('频率/Hz');ylabel('幅度');title('原始信号频谱');grid on;axis([0 6000 0 400])y=filter(num,den,x1);sound(y,Fs,bits);N2=length(y);Y2=fft(y,N2);f2=Fs*(0:N2-1)/N2;t2=(0:N2-1)/Fs;figure(5)plot(f2,abs(Y2))xlabel('频率/Hz');ylabel('幅度');title('过滤后信号的频谱');grid on;axis([0 6000 0 100])2椭圆低通滤波器fp=1300;fs=1600;rs=60;rp=0.5;Fs=44100; wp=2*Fs*tan(2*pi*fp/(2*Fs));ws=2*Fs*tan(2*pi*fs/(2*Fs));[n,wn]=ellipord(wp,ws,rp,rs,'s');[b,a]=ellip(n,rp,rs,wn,'s');[num,den]=bilinear(b,a,Fs);[h,w]=freqz(num,den,512,Fs);figure(1)plot(w,abs(h));xlabel('频率/Hz');ylabel('幅值');title('椭圆低通滤波器幅度特性');axis([0,5000,0,1.2])grid on;figure(2)plot(w,20*log10(abs(h)));xlabel('频率/Hz');ylabel('幅值db');title('椭圆低通滤波器幅度特性db');axis([0,5000,-90,10]);grid on;figure(3)plot(w,180/pi*unwrap(angle(h)));xlabel('频率/Hz');ylabel('相位');title('椭圆低通滤波器相位特性');axis([0,5000,-1000,10])grid on;[s1,Fs,bits]=wavread('D:\222.wav');x1=s1(:,1);sound(x1,Fs,bits);N1=length(x1);Y1=fft(x1,N1); %对信号做N点FFT变换f1=Fs*(0:N1-1)/N1;t1=(0:N1-1)/Fs;figure(4)plot(f1,abs(Y1))xlabel('频率/Hz');ylabel('幅度');title('原始信号频谱');grid on;axis([0 6000 0 400])y=filter(num,den,x1);sound(y,Fs,bits);N2=length(y);Y2=fft(y,N2); %对信号做N点FFT变换f2=Fs*(0:N2-1)/N2;t2=(0:N2-1)/Fs;figure(5)plot(f2,abs(Y2))xlabel('频率/Hz');ylabel('幅度');title('过滤后信号的频谱');grid on;axis([0 6000 0 100])3.带阻滤波器fp1=800;fp2=2300;fs1=1300;fs2=1800;rs=30;rp=0.6;Fs=44100; fp=[fp1,fp2];fs=[fs1,fs2];wp=2*Fs*tan(2*pi*fp/(2*Fs));ws=2*Fs*tan(2*pi*fs/(2*Fs));%wap=2*tan(wp/2)/Ts[n,wn]=buttord(wp,ws,rp,rs,'s');[b,a]=butter(n,wn,'stop','s');[num,den]=bilinear(b,a,Fs);[h,w]=freqz(num,den,512,Fs);fp3=2800;fp4=4000;fs3=3200;fs4=3700;rs=30;rp=0.6;Fs=44100; fp1=[fp3,fp4];fs1=[fs3,fs4];wp1=2*Fs*tan(2*pi*fp1/(2*Fs));ws1=2*Fs*tan(2*pi*fs1/(2*Fs));%wap=2*tan(wp/2)/Ts[n1,wn1]=buttord(wp1,ws1,rp,rs,'s');[b1,a1]=butter(n1,wn1,'stop','s');[num1,den1]=bilinear(b1,a1,Fs);[h1,w1]=freqz(num1,den1,512,Fs);figure(1)plot(w,abs(h));xlabel('频率/Hz');ylabel('幅值');title('巴特沃斯带阻滤波器幅度特性');axis([0,5000,0,1.2])grid on;figure(2)plot(w,20*log10(abs(h)));xlabel('频率/Hz');ylabel('幅值db');title('巴特沃斯带阻滤波器幅度特性db');axis([0,5000,-90,10]);grid on;figure(3)plot(w,180/pi*unwrap(angle(h)));xlabel('频率/Hz');ylabel('相位');title('巴特沃斯带阻滤波器相位特性');axis([0,5000,-1000,10])grid on;figure(4)plot(w1,abs(h1));xlabel('频率/Hz');ylabel('幅值');title('巴特沃斯带阻滤波器幅度特性');axis([0,5000,0,1.2])grid on;figure(5)plot(w1,20*log10(abs(h1)));xlabel('频率/Hz');ylabel('幅值db');title('巴特沃斯带阻滤波器幅度特性db');axis([0,5000,-90,10]);grid on;figure(6)plot(w1,180/pi*unwrap(angle(h1)));xlabel('频率/Hz');ylabel('相位');title('巴特沃斯带阻滤波器相位特性');axis([0,5000,-1000,10])grid on;[s1,Fs,bits]=wavread('D:\222.wav'); x1=s1(:,1);sound(x1,Fs,bits);N1=length(x1);Y1=fft(x1,N1); %对信号做N点FFT变换f1=Fs*(0:N1-1)/N1;t1=(0:N1-1)/Fs;figure(7)plot(f1,abs(Y1))xlabel('频率/Hz');ylabel('幅度');title('原始信号频谱');grid on;axis([0 6000 0 400])y1=filter(num,den,x1);y=filter(num1,den1,y1);sound(y,Fs,bits);N2=length(y);Y2=fft(y,N2);f2=Fs*(0:N2-1)/N2;t2=(0:N2-1)/Fs;figure(8)plot(f2,abs(Y2))xlabel('频率/Hz');ylabel('幅度');title('过滤后信号的频谱');grid on;axis([0 6000 0 100])4.加hamming窗n=100;fp=1000;Fs=44100;b=fir1(n,fp/(Fs/2),Hamming(n+1)); [h,w]=freqz(b,1,512,Fs);a=num2str(a);[s1,Fs,bits]=wavread('D:\222.wav'); x1=s1(:,1);sound(x1,Fs,bits);N1=length(x1);Y1=fft(x1,N1);f1=Fs*(0:N1-1)/N1;y=fftfilt(b,x1);sound(y,Fs,bits);N2=length(y);Y2=fft(y,N2);f2=Fs*(0:N2-1)/N2;figure(4)subplot(2,1,1)plot(f1,abs(Y1))xlabel('频率/Hz');ylabel('幅度');title('原始信号频谱');grid on;axis([0 6000 0 400])subplot(2,1,2)plot(f2,abs(Y2));xlabel('频率/Hz');ylabel('幅度');title('过滤后信号的频谱');grid on;axis([0 6000 0 100])5.加hanning窗n=100;fp=1000;Fs=44100;b=fir1(n,fp/(Fs/2),Hanning(n+1)); [h,w]=freqz(b,1,512,Fs);a=num2str(a);[s1,Fs,bits]=wavread('D:\222.wav'); x1=s1(:,1);sound(x1,Fs,bits);N1=length(x1);Y1=fft(x1,N1);f1=Fs*(0:N1-1)/N1;y=fftfilt(b,x1);sound(y,Fs,bits);N2=length(y);Y2=fft(y,N2);f2=Fs*(0:N2-1)/N2;figure(4)subplot(2,1,1)plot(f1,abs(Y1))xlabel('频率/Hz');ylabel('幅度');title('原始信号频谱');grid on;axis([0 6000 0 400])subplot(2,1,2)plot(f2,abs(Y2));xlabel('频率/Hz');ylabel('幅度');title('过滤后信号的频谱');grid on;axis([0 6000 0 100])6.加blackman窗n=100;fp=1000;Fs=44100;b=fir1(n,fp/(Fs/2),blackman(n+1));[h,w]=freqz(b,1,512,Fs);a=num2str(a);[s1,Fs,bits]=wavread('D:\222.wav');x1=s1(:,1);sound(x1,Fs,bits);N1=length(x1);Y1=fft(x1,N1);f1=Fs*(0:N1-1)/N1;y=fftfilt(b,x1);sound(y,Fs,bits);N2=length(y);Y2=fft(y,N2);f2=Fs*(0:N2-1)/N2;figure(4)subplot(2,1,1)plot(f1,abs(Y1))xlabel('频率/Hz');ylabel('幅度');title('原始信号频谱');grid on;axis([0 6000 0 400])subplot(2,1,2)plot(f2,abs(Y2));xlabel('频率/Hz');ylabel('幅度');title('过滤后信号的频谱');grid on;axis([0 6000 0 100])7.巴特沃斯低通滤波时频分析clearFs=44100;[s1,Fs,bits]=wavread('D:\222.wav');x=s1(:,1);x1=x(40001:64576)l=length(x1);N=6;m=downsample(x1,N);%降抽样后 Fs=7350hzz=length(m);%4096[tfr, t, f] = tfrstft(m);figure(13)contour(t,(Fs/N)*(0:z/2-1)/z,abs(tfr(1:z/2,:)).^2); xlabel('时间t');ylabel('频率f');title('等高线图(滤波前)');grid on;figure(14)mesh(t,(Fs/N)*(0:z/2-1)/z,abs(tfr(1:z/2,:)).^2);xlabel('时间t');ylabel('频率f');zlabel('幅值A');title('三维图(滤波前)');grid on;fp=1300;fs=1600;rs=60;rp=0.5;Fs=44100;wp=2*Fs*tan(2*pi*fp/(2*Fs));ws=2*Fs*tan(2*pi*fs/(2*Fs)); [n,wn]=ellipord(wp,ws,rp,rs,'s');[b,a]=ellip(n,rp,rs,wn,'s');[num,den]=bilinear(b,a,Fs);[h,w]=freqz(num,den,512,Fs);y=filter(num,den,x);x1=y(40001:64576)l=length(x1);N=6;m=downsample(x1,N);%降抽样后 Fs=7350hzz=length(m);%4096[tfr,t,f] = tfrstft(m);figure(15)contour(t,(Fs/N)*(0:z/2-1)/z,abs(tfr(1:z/2,:)).^2); xlabel('时间t');ylabel('频率f');title('等高线图(滤波后)');grid on;figure(16)mesh(t,(Fs/N)*(0:z/2-1)/z,abs(tfr(1:z/2,:)).^2);xlabel('时间t');ylabel('频率f');zlabel('幅值A');title('三维图(滤波后)');grid on;。