语音信号的滤波设计.docx
- 文档编号:5625252
- 上传时间:2022-12-29
- 格式:DOCX
- 页数:14
- 大小:119.41KB
语音信号的滤波设计.docx
《语音信号的滤波设计.docx》由会员分享,可在线阅读,更多相关《语音信号的滤波设计.docx(14页珍藏版)》请在冰豆网上搜索。
语音信号的滤波设计
目录
1引言1
2设计任务与方案2
2.1设计要求2
2.2设计方案2
3MATLAB简介4
4设计过程5
4.1原理分析5
4.2语音信号的获取5
4.2.1语音信号的采集5
4.2.2语音信号的时频分析7
4.3干扰信号及其频谱8
4.3.1干扰信号的产生8
4.3.2干扰信号的时频分析9
4.4信号合成10
4.5数字滤波器的设计11
4.6数字信号的滤波13
4.7结果比较分析14
5结束语16
参考文献17
致谢18
摘要
随着信息技术的发展,现代信号处理正向着数字化、软件化方向发展。
滤波器设计是信号处理的重要组成部分,而研究语音信号的滤波设计是现代信息处理的基本内容。
本设计利用计算机WINDOWS下的录音机录入一句语音信号,用MATLAB软件对其进行频谱分析,然后加入一干扰信号,利用设计好的滤波器将干扰信号去除,最后对各部分的频谱进行分析比较。
关键词:
语音信号滤波器MATLAB
1引言
信号处理是现代信息处理的基本内容,数字信号的处理更是重中之重。
数字信号处理的研究内容主要是语音信号和图像信号,而研究语音信号对于现代语音通信有着积极的意义。
研究语音信号又分为时域和频域两个方面。
(1)语音信号的时域分析处理:
一类是进行语音信号分析,另一类是生成和变换各种调制信号,对信号平均累加器的动态范围进行压缩扩张,用门限方法进行噪声的抑制等等。
前一类是属于时域中信号平均累加器的线性处理,主要通过信号的加减、时移、倍乘、卷积、求相关函数等来实现。
而后一类,则属于非线性的变换和处理。
(2)语音信号的频谱分析处理:
信号的时域频谱分析通常是要结合在一起进行的。
在数字设计系统中,任何信号处理器件都可以看成是一个滤波器,滤波器设计是数字信号处理的重要内容。
滤波器就是在对信号进行分析的基础上,设计适当的系统,提取有用的信号,抑制噪声信号干扰。
滤波器的设计通常是在频率域进行的[1]。
本设计是用MATLAB仿真软件设计滤波器对受干扰的语音信号进行滤波处理,并对各部分进行频谱分析。
2设计任务与方案
2.1设计要求
本设计是设计一个滤波器对话音信号进行滤波,具体要求如下:
(1)语音信号的采集及频谱分析[1]
利用PC机WINDOW下的录音机,用单声道录制一句自己的声音,时间在3S内。
在MATLAB软件平台下用命令对语音信号进行时频变换、时频分析。
(2)对合成信号时频分析
构造一段干扰信号,对其进行时频分析,再在MATLAB软件下加入录制的语音信号当中,并对合成的语音信号进行时频分析。
(3)设计数字滤波器
滤波器的性能指标:
BW型带阻滤波器指标f0=2000/4000;fc=100/4000;Ap=1;As=30;用窗函数法或线性变换法设计以上要求数字滤波器,绘制频率响应曲线。
(4)用滤波器对信号进行滤波
用设计好的滤波器对加入噪声的语音信号进行滤波处理,绘制处理后的语音信号的频谱图,并对原始语音信号,加入噪声后的语音信号和去噪后的语音信号的频谱图进行比较分析。
(5)回放语音信号
在MATLAB软件下,对各个阶段的话音信号进行回放。
2.2设计方案
采用MATLAB仿真软件对WINDOWS下录音机录制的语音信号进行采集,并设计恰当的滤波器,对合成的语音进行滤波处理,对前后滤波前后的频谱进行分析比较,其原理框图如图1所示。
图1语音信号的滤波原理示意图
3MATLAB简介
MATLAB是MathWorks公司开发的一种跨平台的用于多种仿真的简单高效的数学语言。
MATLAB语言是一种广泛应用于工程计算及数值分析领域的新型高级语言,MATLAB功能强大、简单易学、编程效率高,深受广大科技工作者的欢迎。
特别是MATLAB还具有信号分析工具箱,不需具备很强的编程能力就可以很方便地进行信号分析、处理和设计。
与其它计算机高级语言相比,其语言编程要简洁得多,编程语句更加接近数学描述,可读性好,其强大的图形功能和可视化数据处理能力也是其它高级语言不可比拟的。
与其它高级语言相比较,MATLAB具有独特的优势[2]:
(1)MATLAB是一种跨平台的数学语言。
采用MATLAB编写的程序可在目前所有的操作系统上运行(只要这些系统上安装了MATLAB软件仿真平台)。
MATLAB程序不依赖于计算机类型和操作系统类型。
(2)MATLAB是一种超高级语言。
MATLAB平台本身是用C语言写成的,其中汇集了当前最新的数学库,是许多专业数学家和工程师学者多年的劳动结晶。
使用MATLAB在编程效率、程序的可读性、可靠性和可移植上远远超过了常规的高级语言。
(3)MATLAB具有强大的绘图功能。
利用MATLAB的绘图功能,可以轻易的获得高质量的曲线图。
具有多种形式来表达二维、三维图形。
(4)MATLAB具有串口操作、声音输入输出等逻辑硬件操控能力。
本设计主要是利用MATLAB仿真的声音输出、图形绘制和滤波器设计。
4设计过程
4.1原理分析
本设计主要是对语音信号的时频进行分析,并对语音信号加噪后设计滤波器对其进行滤波处理,对话音信号加噪声前后的频谱进行比较分析,对合成语音信号滤波前后进行频谱的分析比较。
首先用PC机WINDOWS下的录音机录制一段3S长的语音信号,并保存入MATLAB软件的根目录下文件名为“daojiahao”,再运行MATLAB仿真软件把录制好的语音信号用wavread函数加载入MATLAB仿真软件的工作环境中,输入命令对语音信号进行时域,频谱变换。
再在MATLAB中用命令设计一段噪声信号,对噪声信号进行频谱变换。
把设计的噪声信号加入到录制的语音信号中,用命令可以得到其频谱图。
对该段合成的语音信号,用命令在MATLAB中设计一个恰当的滤波器对其进行滤波处理,此处用BW带阻滤波器对其进行滤波,滤波后用命令可以绘制出其频谱图,回放语音信号。
对原始语音信号、合成的语音信号和经过滤波器处理的语音信号进行频谱的比较分析。
4.2语音信号的获取
4.2.1语音信号的采集
利用PC机上的硬件和WINDOWS操作系统可以很方便地进行数字信号的采样。
在计算机的话筒输入插口上,插入话筒。
打开计算机,用鼠标依次点击[开始]/[程序]/[附件]/[娱乐]/[录音机]。
使用录音机操作界面出现在在屏幕上如图2所示。
图2录音机操作界面
用鼠标单击有以红色圆点为标志的录音按钮,接着对话筒说话“大家好”,说完后立即按下以方块为了标志的停止按钮,屏幕左侧将显示所录声音的长度。
这里显示的是0.77s。
点击上面的三角形按钮,可以实现所录音的放音重现。
这一步工作中,已利用了计算机上的A/D转换器,把模拟的声音信号变成了离散的量化了的数字信号,放音时,它又通过D/A转换器,把保存的数字数据恢复为原来的模拟的声音信号。
现在把这段声音以数据文件的形式存储起。
单击主菜单上的[文件]/[保存],以文件名“dajiahao”(因为MATLAB等软件不接受中文文件名,所以用拼音)保存入g:
\MATLAB\work中。
可以看到,文件存储器的后缀默认为.wav,这是WINDOWS操作系统规定的声音文件存的标准。
为了进一步看出它的特征,再单击[文件]/[属性]就可以出现如图3所示的文件属性界面。
图3录音文件属性
从图3可以清楚看到整个文件的数据大小为6226字节,它的采样频点是8000Hz,量化为8位二进制码,编码方式为PCM(脉冲编码调制)。
这几个数据格式是系统默认设定。
然后打开MATLAB软件,在MATLAB软件平台下利用函数wavread对语音信号进行采样,得到了声音数据变量x,同时也把x的采样频率Fs=8000Hz和数据位Nbits=8Bit放进了MATALB的工作空间。
其程序如下[3]:
Fs=8000Hz;%给出抽样频率
Nbits=8Bit;%放入数据位
[x,fs,Nbits]=wavread(‘g:
\matlab\work\dajiahao.wav’);%把语音信号进行加载入Matlab仿真软件平台中
sound(x,fs);%对加载的语音信号进行回放
4.2.2语音信号的时频分析
首先在MATLAB软件仿真平台中画出语音信号的时域波形如图4所示。
其命令如下[4]:
stem(x);%绘制时域波形图
title(‘语音信号的时域波形’);%加入图形的标题
图4语音信号的时域波形图
从图4可以看出在时域环境下,说出一个字时就会出现一个不规则的随机信号。
然后对语音信号进行频谱分析,在MATLAB中可以利用函数fft对信号行快速傅里叶变换,得到信号的频谱图如图5所示。
其命令如下[5]:
n=length(x);%求出语音信号的长度
x1=fft(x,n);%傅里叶变换
x2=fftshift(x1);%对频谱图进行平移
f=0:
fs/s:
fs*(s-1)/s;%得出频点
plot(f,abs(x2));%绘制频谱图
title(‘语音信号的时域波形’);%加入图形的标题
图5语音信号的频谱图
从图5可以看出对各个频点上的随机信号在频域进行抽样,抽样频率为8000Hz。
4.3干扰信号及其频谱
4.3.1干扰信号的产生
在MATLAB中设计一段噪声干扰信号。
噪声信号通常为随机序列,为方便设计,在本设计中用正弦序列代替,干扰信号如下[6]:
c1=10*sin(2*pi*2000*k)(k=1:
1:
s);
4.3.2干扰信号的时频分析
在MATLAB仿真平台中用命令得出其时域图如图6所示。
命令如下:
k=1:
1:
s;%定义k值
c1=10*sin(2*pi*2000*k);%噪声信号的函数
plot(k(1:
50),c1(1:
50));%画出噪声信号的时域波形并取其中一段
title(‘噪声信号的时域波形图);%加入图形的标题
图6干扰信号时域波形图
从图6可以看出给出的干扰信号为一个正弦信号。
针对上面的语音信号,采集了一其中一段。
然后再对噪音信号进行频谱变换得到其频谱图如图7所示。
其命令如下:
s=length(c1);%求噪声信号的长度
xc=fft(c1,s);%频谱变换
xcc=fftshift(xc);%对频谱图进行平移
f=0:
fs/s:
fs*(s-1)/s;%得出频点
plot(f,abs(xcc));%画出噪声信号的频谱图
title(‘噪声的频谱图’);%加入图形的标题[5]
图7干扰信号频谱图
从图7可以看出干扰信号在2000Hz和6000Hz频点处有一高峰。
2000Hz正是本设计所要利用的。
4.4信号合成
在MATLAB中把语音信号与噪声信号进行叠加。
对其进行播放,并画出其频谱图如图8所示。
其命令如下[7]:
z=x’+c1;%噪声信号的叠加
y=fft(z,s);%对叠加信号进行频谱变换
y1=fftshift(y);%对频谱图平移
f=0:
fs/s:
fs*(s-1)/s;%得出频点
plot(f,abs(y1));%绘出频谱图
axis([080000400]);
title('含噪语音信号的频谱');%加入图形的标题
pause;%暂停
sound(z,fs);%对叠加了噪声信号的语音信号回放
图8加噪声后的语音信号频谱图
从图8可以看出,在该语音信号的2000Hz处有一高峰,这正是干扰所造成的。
4.5数字滤波器的设计
数字滤波器分为FIR数字滤波器和IIR数字滤波器两种,可以用硬件和软件来设计实现。
软件设计主要有脉冲响应不变法、双线性变换法、窗口函数法。
本设计是用双线性变换法设计BW带阻型滤波器[8]。
针对以上语音信号给出滤波器的性能指标:
BW带阻型滤波器性能指标:
f0=2000/4000;fc=100/4000;Ap=1;As=30;
用双线性变换法设计上面要求的滤波器。
在MATLAB中,可以利用函数butterworth,设计IIR滤波器,利用MATLAB中的函数freqz画出各滤波器的频率响应。
程序如下[9]:
f0=2000/4000;c=100/4000;%给出指标
ws=[f0-0.5*fcf0+0.5*fc];%ws为带阻滤波器阻带截频
wp=[f0-fcf0+fc];%wp为带阻滤波器通带截频
Ap=1;s=30;%Ap是滤波器的通带衰减,As是滤波器的阻带衰减
[nwc]=buttord(wp,s,p.s,’s’);%n为BW滤波器的阶数,wc等于BW滤波器3db截频
[num,den]=butter(n,c,’stop’);%设计带阻滤波器的系数
w=linspace(0,pi,512);
[h,w]=freqz(num,den,fs);%设计带阻滤波器的系数
plot(w/pi,20*log10(abs(h)));%得出滤波器的频谱图
grid;%加入表格
title(‘BW型阻带滤波器’);%加入图形标题
由以上命令得出BW型带阻滤波器,画出其增益响应曲线如图8所示。
该滤波器的通带和阻带衰减分别为Ap=1;As=30。
图8带阻滤波器的增益响应
4.6数字信号的滤波
用设计好的带阻滤波器对合成语音信号进行滤波,在MATLA中FIR滤波器利用函数fftfilt对信号进行滤波,IIR滤波器利用函数filter对信号进行滤波。
在一个窗口同时画出滤波前后的波形及频谱如图9所示。
其程序如下[10]:
y=filter(num,den,z);%对加入噪声的语音信号进行滤波
X=fft(y,s);%滤波后的信号进行FFT变换
Y=fftshift(X);%对得出的频谱图进行平移
n=length(Y);%求Y的长度
plot(f,abs(Y));%画出滤波后的语音信号频谱
title(‘滤波后的语音信号频谱图’)
pause;%暂停
Sound(y,fs);%回放滤波后的语音信号
图9滤波后的语音信号频谱图
从图9可以看出,在图7中2000Hz看到的高峰消失了,语音信号与开始的一样,滤波器成功的滤除了干扰信号。
4.7结果比较分析
为方便对比,现将前述各图排列在一起,如图10所示。
本设计可以得出如下结论:
加入噪声后回放可以听到“大家好”的声音与原始的语音信号有明显的不同,其伴随较尖锐的干扰啸叫声。
从含噪语音信号的频谱图中可以看出是伴有噪声的语音信号的频谱,在2000Hz处有上高峰,这正是干扰所造成的。
当回放通过BW型带阻滤波器滤波后的含噪声语音信号,可以听到不含噪声“大家好”的声音,把滤波噪声后语音信号的频谱图与原始语音信号的频谱图相比较,可以明显看出两频谱一样,滤波器成功的滤除了噪声信号。
因此,软件设计的滤波器代替硬件滤波器是可行的,软件设计的滤波器可以完成硬件的滤滤功能。
图10信号仿真显示
5结束语
在完成本设计的过程中,指导老师给出了设计的具体思路。
设计中信号的采集,滤波器的设计及滤波前后频谱的变化和滤波效果都是与指导老师,同学一起讨论、查阅资料、修改参数、多次仿真完成的。
通过设计,我对信号的采集、处理、传输、显示和滤波器的设计等有一个较系统的掌握和理解,加深了对课堂抽象知识的理解,巩固了数字信号处理的理论知识。
参考文献
[1]陈怀琛.数字信号处理教程——MATLAB释义与实现.北京:
电子工业出版社,2004.12:
11-25
[2]徐明远,邵玉斌.MATLAB仿真在通信与电子工程中的应用.西安:
西安电子科技大学出版社,2005:
47-58
[3]唐建锋,游开明,陈列尊.基于MATLAB的数字滤波器设计研究型实验探讨.湖南:
衡阳师范学院学报,2006:
164-166
[4]雷学堂,徐火希.可直接感受的基于MATLAB的语音滤波.湖北:
黄冈师范学院学报,2006:
45-52
[5]袁小平,王艳芬,史良.基于MATLAB的数字信号处理课程的实验教学[J].上海:
实验室研究与探索,2002:
58-60
[6]程佩青.数字信号处理教程[M].北京:
清华大学出版社,2002:
158-204
[7]李永全.MATLAB在数字信号处理课程设计中的应用[J].西安:
现代电子技术,2004,27(7):
37-38.
[8]陈怀琛,吴大正,高西全.MATLAB及其在电子信息课程中的应用[M].北京:
电子工业出版社,2002:
19-25
[9]陈后金.数字信号处理[M].北京:
高等教育出版社,2004:
195-200
[10]刘敏,魏玲.Matlab通信仿真与应用[M].北京:
国防工业出版社,2001:
15-19
致谢
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语音 信号 滤波 设计