语音信号处理课设说明书.docx
- 文档编号:3224121
- 上传时间:2022-11-20
- 格式:DOCX
- 页数:24
- 大小:1,018.31KB
语音信号处理课设说明书.docx
《语音信号处理课设说明书.docx》由会员分享,可在线阅读,更多相关《语音信号处理课设说明书.docx(24页珍藏版)》请在冰豆网上搜索。
语音信号处理课设说明书
目录
1技术要求-1-
2基本原理-1-
2.1语音信号时域波形和频谱特性-1-
2.2窗函数法和双线性变换法-2-
2.2.1窗函数法的设计步骤-2-
2.2.2双线性变换法-2-
2.3GUI界面设计和MATLAB编程-3-
2.3.1GUI界面-3-
2.3.2MATLAB编程-3-
3建立模型描述-3-
3.1系统模型描述-3-
3.1.1实时语音信号的采集和保存-4-
3.1.2语音信号分析-5-
3.1.3分析结果的动态输出-5-
3.2系统模型建立-6-
3.2.1GUI界面设计-6-
4程序流程图-8-
5源程序代码-9-
6调试过程及结论-14-
7心得体会-20-
8思考题-21-
9参考文献-22-
语音信号处理的设计
1技术要求
录制一段个人的语音信号,并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;给定滤波器的性能指标,采用窗函数法和双线性变换法设计滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号;最后,设计一个信号处理系统界面。
2基本原理
语音信号处理是研究用数字信号处理技术对语音信号进行处理的一门学科。
语音信号处理的目的是要得到某些语音特征参数以便高效地传输或存储;或者通过某种运算以达到某种用途的要求,例如人工合成语音、辨别出说话者、识别出讲话的内容等。
本次课程设计涉及到语音信号的时域波形和频谱特性,窗函数法和双线性变换法,以及GUI界面设计和MATLAB编程等方面的理论知识,下面从这几方面进行简单的介绍。
2.1语音信号时域波形和频谱特性
在时域里,语音信号可以直接用他的时间波形表示出来,通过观察时间波形可以看出语音信号的一些重要特性。
语音信号是一个随机非平稳过程,具有短时平稳性,一般认为在10-30ms内语音信号特性基本是不变的,或者变化很缓慢。
语音信号是时变信号,所以其频谱也是随时间变化的。
但是由于语音信号随时间变化是很缓慢的,因而在一段时间内(如10-30ms之间,即所谓的一帧之内)可以认为其频谱是固定不变的,这种频谱又称为短时谱。
本次课程设计主要工作是设计滤波器实现对语音信号的滤波,并观察滤波前后信号的时域和频谱变化,为了简化处理,不对语音信号进行加窗分帧处理,而仅利用傅里叶变换(FFT)代替短时傅里叶变换(STFT)。
2.2窗函数法和双线性变换法
2.2.1窗函数法的设计步骤
窗函数法设计FIR滤波器的主要步骤如下:
(1)给出希望设计的滤波器的频率频率响应Hd(ejw);
(2)根据允许的过渡带宽度及阻带衰减,初步选定窗函数及其长度N;
(3)根据技术要求确定待求滤波器的单位取样响应hd(n),
。
(4)将hd(n)与窗函数相乘得FIR数字滤波器的单位取样响应h(n),
。
(5)按如下方法计算FIR数字滤波器的频率响应,并验证是否达到所要求的技术指标:
或
。
2.2.2双线性变换法
双线性变换法是使数字滤波器的频率响应与模拟滤波器的频率响应相似的一种变换方法,为了克服映射这一缺点,首先把整个
平面压缩变换到某一中介的
平面的一条横带里(宽度为
,即从
到
),其次再通过标准变换关系
将此横带变换到整个z平面上,这样就是s平面与z平面是一一对应的关系,消除了多值变换性,从根本上消除了频谱混叠现象。
s平面与z平面之间的单值映射关系:
其中变换常数c一般取为2/T,上述变换就成为双线性变换。
由于在双线性变换中,
,即模拟角频率和数字角频率之间存在非线性关系,所以双线性变换避免了混叠失真,却又带来了非线性的频率失真。
2.3GUI界面设计和MATLAB编程
2.3.1GUI界面
GUI(GraphicalUserInterfaces)即图形用户界面,是由窗口、光标、按键、菜单、文字说明对象(Objects)构成的一个用户界面。
用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化,如实现计算、绘图等。
MATLAB中设计GUI程序的前台界面有全命令行的M文件编程和GUIDE辅助的图形界面设计两种方式。
由于使用GUIDE建立GUI界面相对简单,故本次课程设计采用GUIDE创建GUI界面并进行相关回调函数的编程。
2.3.2MATLAB编程
本次课程设计的主要工作量在于GUI界面回调函数(callback)的编写,程序界面越丰富,编程量越大,代码也相对越长。
编程中用到与语音信号处理相关的函数有wavrecord、wavplay、wavwrite等,它们分别实现录音、播放和保存的功能。
其他未用到的如wavread函数实现语音数据的读取,sound函数也可以实现语音播放的功能。
关于滤波器这块,filter函数实现滤波,freqz函数绘制频率响应,bilinear函数实现双线性变换,fir1函数实现窗函数滤波。
由于原理较简单,其他相关函数及其功能可以参见所附源程序代码及注释。
3建立模型描述
3.1系统模型描述
根据技术要求,我设计了一个基于MATLAB的实时语音可视化时频域分析系统,该系统可以通过计算机声卡和语音采集工具箱采集实时的语音信号,并通过MATLAB进行时频域分析处理以及滤波处理后,将语音信号进行可视化输出。
同时使用MATLAB的GUI集成开发环境GUIDE进行界面的设计,通过简单的图形界面简化操作过程及参数的修改和调试。
GUI界面设计主要包括语音信号采集、播放和保存部分,滤波处理部分和图形动态显示输出部分等。
语音信号采集部分可以设置采样时间和采样频率,并可实现语音信号的播放和保存功能。
滤波处理部分可以选用窗函数法或双线性变换法,实现语音信号的低通、高通、带通、带阻滤波,实现语音信号的波形变换。
图形动态显示输出部分实现原始语音信号波形、原始信号频谱、滤波后语音信号波形、滤波后信号频谱以及所设计的滤波器的频率响应的绘制。
由上述分析可知,为了实现系统的各项功能,设计的系统结构如下图1所示。
下面将从这三个部分对系统的原理和工作过程进行介绍。
图1系统结构图
3.1.1实时语音信号的采集和保存
一般来说,语音信号的频率范围通常是在300Hz-3400Hz之间,在设定语音信号的采样频率时要注意采样频率必须要不小于最高频率的两倍,这时语音信号才能无失真的恢复。
MATLAB中利用wavrecord函数实现语音信号的采集,在最终设计的GUI界面中可以通过可编辑文本框(EditText)控制采样时间和采样频率,实际中采样频率可以取8000Hz、11025Hz、22050Hz和44100Hz。
利用wavwrite函数可以实现以指定的名字将语音信号以wav格式保存起来,同时,wavplay函数可以实现语音信号的播放。
编程时将采样频率和采样的语音信号存储在全局变量(global)中,便于程序的后续处理。
在“开始录音”按钮的回调函数中先读入输入可编辑文本框设置的参数,然后按指定录音时间和采样频率进行录音。
3.1.2语音信号分析
语音信号分析包括傅里叶变换后的频谱分析和滤波后的时域波形和频谱。
对采样所得的语音信号进行FFT变换后即可得到原始语音信号的频谱图,令原始语音信号通过所设计的滤波器,即可得到滤波后时域的语音信号,然后对该信号进行FFT变换,即可得到滤波后的频谱图。
滤波器设计是本次课程设计的重点,可以采用窗函数法和双线性变换法,而每一种方法又有着低通、高通、带通、带阻等多种滤波器,在所设计的GUI界面中,低通滤波器和高通滤波器的相关参数可以通过可编辑文本框(EditText)输入,进而得到相应的滤波效果。
由于带通和带阻滤波器的参数个数较低通和高通滤波器的多,回调函数中已设定好带通和带阻滤波器的参数,滤波器输入参数不会影响带通和带阻滤波器的效果。
注意调试时滤波器输入参数中抽样频率必须与语音信号的采样频率相等,否则滤波后横坐标的频率范围与实际输入滤波器的截止频率有出入,例如录音时的采样频率为8000Hz,则滤波器抽样频率Fs也必须响应为8000Hz。
在窗函数法中,可以通过下拉列表框选择相应的窗函数,从而实现利用不同的窗函数对原始语音信号的滤波处理,可供选择的窗函数有boxcar(矩形窗)、triang(三角窗)、hamming(汉明窗)、hanning(汉宁窗)、blackman(布莱克曼窗)和kaiser(凯泽窗)等。
3.1.3分析结果的动态输出
采用GUI界面设计,设计输出界面以及控制界面,以达到语音信号的可视化处理并简化操作。
通过GUI界面上的按钮可以实现原始语音信号波形、原始信号频谱、滤波后语音信号波形、滤波后信号频谱以及滤波器的频率响应的绘制,还可以实现指定滤波器的设计和语音信号滤波处理,以及录制指定时间的语音信号。
3.2系统模型建立
3.2.1GUI界面设计
GUI界面设计主要步骤如下:
(1)打开GUI界面编辑器,新建一个GUI文件。
(2)在界面编辑器的GUI布局区中放入10个PushButton、5个Axes、2个Panel、2个ButtonGroup、6个RadioButton、11个EditText、1个Pop-upMenu和17个StaticText对象,将各GUI对象布局在合适位置。
(3)在各对象上双击打开属性查看器,设置对象的相应属性,由于控件对象数量较多,下面仅对重要的控件属性分别进行说明:
Pop-upMenu的String属性设置为“-请选择窗口类型-(回车)boxcar(回车)triang(回车)hamming(回车)hanning(回车)blackman(回车)kaiser”;
11个EditText的String属性全部设为空字符串,对齐方式全部设为右对齐(right)方式,其Tag属性可以参考源程序代码部分查看;
6个RadioButton控件属性如下表1所示;
表1RadioButton属性
Tag
String
Value
radiobutton1
窗函数法
1.0
radiobutton2
双线性变换法
0.0
lowpass
低通
1.0
highpass
高通
0.0
bandpass
带通
0.0
bandstop
带阻
0.0
10个PushButton属性设置如下表2所示;
表2PushButton属性
Tag
String
Fontsize
record_speech
开始录音
10
save_speech
保存录音
10
续表2
pushbutton3
原始信号波形
12
pushbutton4
原始信号频谱
12
pushbutton5
滤波后波形
12
pushbutton6
滤波后频谱
12
play_speech
播放语音
12
pushbutton10
滤波后语音
12
close
关闭
12
pushbutton7
滤波器频率响应
12
其他如StaticText、Panel、ButtonGroup以及Axes控件对象属性大部分取默认属性,仅相关控件的String属性需要修改,具体可参照所设计的GUI界面。
(4)编写相关控件的回调函数,主要是编写10个PushButton按钮的回调函数,实现对语音信号可视化的时频域分析。
经过上述主要步骤后,最终设计的GUI界面如图2所示,该GUI界面为
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语音 信号 处理 说明书