DSP语音试验箱.docx
- 文档编号:29593793
- 上传时间:2023-07-25
- 格式:DOCX
- 页数:32
- 大小:347.37KB
DSP语音试验箱.docx
《DSP语音试验箱.docx》由会员分享,可在线阅读,更多相关《DSP语音试验箱.docx(32页珍藏版)》请在冰豆网上搜索。
DSP语音试验箱
吉林工程技术师范学院
DSP语音信号处理课程设计报告书
设计内容:
语音信号处理GUI工具箱设计
专业:
电子信息班级:
0742
学生姓名:
陈阳学号:
29
指导教师:
李悦刘银辉
信息工程学院
摘要
语音信号处理是研究数字信号要处理技术和语音信号进行处理的一门学科,是一门新型的学科,是在多们学科基础上发展起来的综合性技术,它设计到数字信号处理、模式识别、语言学、语音信号处理是研究用数字信号处理技术对语音信号进行处理的一门学科。
处理的目的是要得到一些语音参一以便高效地传输或储存;或者是通过处理的某种运算以达到某种用途的要求。
语音信号处理又是一门新兴的边缘学科。
如上所述,它是“语言语音学”与“数字信号处理”两个学科相结合的产物。
语音信号处理属于信息科学的一个重要分支,大规模集成技术的高度发展和计算机技术的飞速前进,推动了这一技术的发展。
在数字音频技术和多媒体技术迅速发展的今天,传统的磁带语音录放系统因体积大、使用不便、放音不清晰而受到了巨大挑战。
本课题组提出的体积小巧,功耗低的数字化语音存储与回放系统,可以有效的解决传统的语音录放系统在电子与信息处理的使用中受到的限制。
本文提出了语音信号处理课程建设的实验环节中的一些考虑,作为专业课程的学习,实验内容不能仅仅停留在验证性实验上,还应增加实验延伸的设计要求,使学生加深对理论分析认识的同时,强调培养学生的实际动手能力和知识综合运用能力。
从而提高语音信号的教学和实验的质量。
实验内容采用MATLAB编程实现,不仅易于语音信号处理的实现,更易引导学生完成实验延伸的设计。
关键字:
MATLAB软件语音信号处理实验设计
目录
摘要Ⅰ
第一章绪论1
1.1选题背景1
1.2课题任务1
1.3课题意义1
第二章理论基础及系统要求2
2.1引言2
2.2课程设计基本要求2
2.3系统基本原理2
第三章设计方案论证3
3.1设计理论依据3
第四章图形用户界面设计4
4.1图形用户界面概念4
4.2用户界面设计4
第五章课程设计的软件实现8
5.1部分函数语法格8
5.2语音信号处理的相关函数8
5.3GUI实验箱操作界面设计14
第六章心得体会15
附录
源代码13
参考文献1
第一章绪论
1.1选题背景
在我们的现实生活中从磁带、录像带到CD、VCD、DVD;从黑白电视机、彩色电视机、高清晰度电视机(HDTV)到具有数字信号处理功能的电视机;从留声机、录音机到语音信箱;现在正处在模拟信息到数字信息的变革之中,传统的磁带语音录放系统因其体积大,使用不便,在电子与信息处理的使用中受到许多限制。
虽然,目前广播电视系统尚未实现真正的数字化,相信在不久的将来,真正的数字电视机、数字收音机、数字收录机将进入家庭。
所以,研究音频信号的数字化存储、处理和回放系统有着很重要的现实意义。
通过设计语音信号实验箱可以对语音信号实现各种形式的变换,因此学会对语音信号的处理,也可自行研究将此语音处理技术应用到现实生活中。
1.2课题任务
本实验任务所提出的语音信号处理实验箱系统,其基本原理是对语音的录音和放音进行数字化控制.其中,关键技术在于:
为了增加语音存储时间,提高存储器的利用率,采用了非失真压缩算法对语音信号进行压缩后再存储,而在回放是再进行解压缩;同时,对输入语音信号进行数字滤波以抑制杂音和干扰,从而确保了语音回放的可靠质量.
通过设计一个GUI实验箱,并添加相应的控制控件,添加一个声音文件,通过MATLAB编程,使其通过各种按钮实现语音信号处理的各种功能,最后做成一个完整的语音信号处理实验箱。
1.3课题意义:
语音信号处理是一门比较实用的电子工程的专业课程,语音是人类获取信息的重要来源和利用信息的重要手段,通过语言相互传递信息是人类最重要的基本功能之一,语言是人类特有的功能,它是创造和记载几千年来人类文明史的根本手段,没有语言就没有今天的人类文明,语音是语言的声学表现,是相互传递信息的重要的手段,是人类最重要、最有效、最常用和最方便的交换信息的形式。
语音信号处理是研究用数字信号处理技术对语音信号进行处理的一门学科,它是一门新兴的学科,同时又是综合性的多学科领域行业涉及面很广的交叉学科。
第二章理论基础及系统要求
2.1引言
目前,随着数字化信号处理技术的不断提高,单片机,数字信号处理器以及语音处理大规模集成电路的进步,语音合成,语音识别,语音存储和回放技术的应用越来越广泛.本文提出的体积小巧,功耗低的数字化语音存储与回放系统将完全可以替代传统的语音录放系统.
2.2课程设计基本要求
(1)学会MATLAB的使用,掌握MATLAB的程序设计方法;
(2)掌握在windows环境下语音信号采集的方法;
(3)掌握数字信号处理的基本概念,基本理论和基本方法;
(4)掌握MATLAB设计的方法;
(5)学会用MATLAB对信号进行分析和处理。
2.3系统基本原理
语音采集原理是,人耳能听到的声音是一种频率范围为20Hz20kHz,而一般语音频率最高为3.4kHz.语音的采集是指语音声波信号经麦克风和高频放大器转换成有一定幅度的模拟量电信号,然后再转换成数字量的全过程.
本次设计的基本原理是对语音的录音和放音进行数字化控制.其中,关键技术在于:
为了增加语音存储时间,提高存储器的利用率,采用了非失真压缩算法对语音信号进行压缩后再存储,而在回放是再进行解压缩;同时,对输入语音信号进行数字滤波以抑制杂音和干扰,从而确保了语音回放的可靠质量.
通过设计一个GUI实验箱,并添加相应的控制控件,添加一个声音文件,通过MATLAB编程,使其通过各种按钮实现语音信号处理的各种功能,最后做成一个完整的语音信号处理实验箱。
第三章设计方案论证
3.1设计理论依据
3.1.1采样定理:
在进行模拟/数字信号的转换过程中,当采样频率fs.max大于信号中,最高频率fmax的2倍时,则采样之后的数字信号完整地保留了原始信号中的信息,一般实际应用中保证采样频率为信号最高频率的5-10倍;采样定理又称乃奎斯特定理。
3.1.2采样频率:
采样频率是指计算机每秒钟采集多少个声音样本,是描述声音文件的音质、音调、衡量声卡、声音文件的质量标准。
采样频率越高,即采样的间隔时间越短,则在单位时间内计算机得到的声音样本数据就越多,对声音波形的表示也就越精确,采样频率与声音频率之间有一定的关系,根据奈奎斯特理论,只有采样频率高于声音信号最高频率的2倍的时候,才能把数字信号表示的声音还原成为原来的声音,这就是说采样频率是衡量声卡采集、记录和还原声音文件的质量标准。
3.1.3采样位数与采样频率
采样位数即采样值或取样值,用来衡量声音波动变化的参数,是指声卡在采集和播放声音文件时候使用数字声音信号的二进制为数。
采样频率是指录音设备在一秒钟内对声音信号的采样次数,采样频率越高声音的还原就越真实越自然。
采样位数和采样频率对于音频接口来说是最为重要的两个基本指标,也是选择音频接口的两个重要标准。
无论采样频率如何,理论上来说采样的位数决定了音频数据最大的力度范围。
每增加一个采样位数相当于力度范围增加了6dB。
采样位数越多则捕捉到的信号越精确。
对于采样率来说你可以想象它类似一个照相机。
显然采样率越高,计算机提取的图片越多,对于原始的还原也越加精确。
第四章图形用户界面设计
4.1图形用户界面概念
图形用户界面或图形用户接口是指采用图形方式显示的计算机操作环境用户接口。
与早期计算机使用的命令行界面相比,图形界面对于用户来说更为简便易用。
GUI是MATLAB提供的图形用户界面开发环境,提供了一系列用于创建图形用户界面的工具,从而简化界面布局和编程工作。
4.2用户界面设计
4.2.1GUI设计模板
在MATLAB主窗口中,选择File菜单中的New菜单项,再选择其中的GUI命令,就会显示图形用户界面的设计模板。
MATLAB为GUI设计一共准备了四个模板,分别是BlankGUI、GUIwithUicontrols、GUIwithAxesandMenu、ModalQuestionDialog。
当用户选择不同的模板时,在GUI设计模板界面的右边就会现实出与该模板对应的GUI图形。
4.2.2GUI设计窗口
在GUI设计模板中选中一个模板,然后单击OK按钮,就会现实GUI设计窗口,选择不同的GUI设计模式时,在GUI设计窗口中显示的结果是不一样的。
GUI设计窗口由菜单栏、工具栏、控件工具栏以及图形对象设计区等部分组成。
GUI设计窗口的菜单栏有File、Edit、View、Layout、Tools和Help六个菜单项,使用其中的命令可以完成图形用户界面的设计操作。
4.2.3GUI设计窗口的基本操作
(1)前面板的设计:
在GUI设计窗口创建图形对象后,通过双击该对象,就会显示该对象的属性编辑器。
如下图所示。
例如,创建一个PushButton对象,并设计该对象的属性值。
图4-1按钮属性编辑器
通过以上的按钮属性编辑器可以根据个人情况对按钮的名称、颜色、大小等方面的属性进行修改,使按钮在视觉上变的更加完美。
(2)按钮功能的实现:
在GUI设计窗口创建按钮后,通过右键单击按钮,选择viewcallbacks下的callback对相应的按钮进行编程,使按钮实现相应的功能,如下图所示对按钮的相应功能进行设置。
图4-2按钮功能编辑器
进入到按钮程序编辑窗口,通过编程即可实现按钮的相应功能,如下图:
图4-3按钮的编程实现界面
通过对各个按钮控件的修改,和对m文件程序的添加就完成对GUI窗口的设计,最后得到的图形化操作界面如下图所示:
图4-4图形化操作界面
4.2.4语音的录入与打开
在MATLAB中,[y,fs,bits]=wavread(‘Blip’,[N1N2]);用于读取语音,采样值放在向y中,fs表示采样频率,bits表示采样位数。
[N1N2]表示读取从N1点到N2点的值。
Sound(x,fs,bits);用于对声音的回放,向量y则就代表了一个信号也就是说可以像处理一个信号表达式一样处理这个声音信号。
第五章课程设计的软件实现
5.1部分函数语法格式
读wav文件:
x=wavread(‘filename’)
数组a及b中元素相乘:
a.*b
创建图形窗口命令:
figure
绘图函数:
plot(x)
坐标轴:
axis([xminxmaxyminymax])
坐标轴注解:
xlabel(‘…’)ylabel(‘…’)
图例注解:
legend(‘…’)
一阶高通滤波器:
y=filter([1-0.09375],1,x)
分帧函数:
f=enframe(x,len,inc)
x为输入语音信号,len指定了帧长,inc指定帧移,函数返回为n×len的一个矩阵,每一行都是一帧数据。
5.2语音信号处理的相关函数
5.2.1语音信号的短时谱:
周期性声门波可表示为:
(5-1)
其中,g[n]是声门波的单周期的波形,p[n]是间隔为P的周期采样序列。
当u[n]通过线性非时变声道,且该声道的单位冲击响应为h[n]时,声道输出为:
(5-2)
为了观察一段语音,需要将声道输出乘以一个以时刻τ为中心的窗函数w[n,τ],即得到:
(5-3)
这段语音信号的频域表达式为:
(5-4)
即语音信号的谱包络为
语谱图就是显示时变频谱幅度特征的图形表达式为
(5-5)
将语音信号短时谱程序写入到MATLAB中得到单色语谱图的波形如下:
图5-1语音信号单色语谱图
5.2.2自相关方法估计语音信号的声道参数:
由均方预测误差最小的得到正则方程
(5-6)
其中,
(5-7)
在最佳解时的误差为
(5-8)
在自相关法中式5-6,式5-8变为
(5-9)
(5-10)
由式5-9和式5-10可列出方程组式5-11
(5-11)
解方程组式5-9求出线性预测系数,通过误差式5-11可求出增益G
(5-12)
加窗后信号频谱图如下:
图5-2加窗后信号频谱图
通过以上的方法,改变参数分别求得4极点模型频率响应和6极点模型频率响应,六极点波形如下图所示:
图5-3六极点波形图
最后通过以上方法用一个函数分别实现以上三个功能,三个波形显示在一个界面,通过观察图形,查看它们之间的分别。
三者比较所得到的波形如下:
图5-4三者比较波形图
5.2.3基音周期检测:
数据为浊音语音信号speech1_10k(10000样点/秒)用25ms的汉明窗对语音信号speech1_10k进行加窗处理,并画出所得到的加窗信号的自相关函数,再用根据中心消波法及三电平中心消波法原理改进程序,最后对比中方法基音检测的效果并分析结果。
实验原理及方法
(1)自相关检测原理:
对于离散的数字语音信号序列x(n),如果周期N,则自相关函数也是同周期的周期函数。
即:
x(n)=x(n+N).清音信号没有周期性,它的自相关函数也没有周期。
浊音信号具有准周期性。
自相关基因检测正是利用这一性质对语音信号进行基因检测的。
(2)中心消波法检测原理:
中心消波处理是使用如下图所示的中心消波函数进行处理的:
图5-5中心消波检测图
(3)三电平消波法原理:
为了减少自相关计算中的乘法运算,可以把上述中心消波以后的信号y(n)的自相关用两个信号的互相关代替,其中一个信号是y(n)另一个信号是对y(n)进行三电平量化产生的结果。
且这个信号有三种可能的取值,因而这里的互相关计算只需要做加减法,而这个互相关序列的周期性与y(n)的自相关序列是近似相同的。
三电平法对语音信号处理得到的波形如下:
图5-6三电平法波形图
中心消波法得到的波形如下图:
图5-7中心消波法波形图
5.3GUI实验箱操作界面设计
通过对各个控件的编程和对参数的设计,最后得到的GUI实验箱操作界面如下图所示,通过界面上的各个按钮即可实现相应的功能。
图5-8GUI实验箱操作界面
第六章心得体会
通过本次课程设计完成了对语音信号的读取与打开,与课题的要求十分相符;初略的完成了界面的设计,但也存在相当的不足,达到了打开语音文件,显示已定波形。
语音信号处理时语音学与数字信号处理技术相结合的交叉学科,将语音当做一种特殊的信号,即一种“复杂向量”来看待。
也就是说,体现了数字信号处理技术。
本次课程设计时希望将数字信号处理技术应用于某一实际领域,这里就是指对语音的处理。
作为存储于计算机中的语音信号,其本身就是离散化了的向量,我们只需要将这些离散的量提取出来,就可以对其进行处理了。
本次课设,用到了处理数字信号的强有力工具MATLAB,通过MATLAB里几个命令函数的调用,很轻易的在实际化语音与数字信号的理论之间搭了一座桥。
最后,还利用了MATLAB的另一强大功能—GUI界面设计。
设计出了一个简易的用户应用界面,可以让人实现界面操作。
通过本次课程设计让我更加了解了语音信号处理在现实中的强大的应用空间,同时查阅了很多相关的资料,应用MATLAB软件来完成,熟练掌握了MATLAB软件,本次课程设计要求用GUI设计模块,查阅了很多资料,更加深刻的了解了这方面知识。
本次课程设计,我明白了理论的学习需要在实践中才能得到巩固。
在课程设计中,只有动手慢慢研究,才能真正了解MATLAB的运用以及各个基本函数的调用方法,掌握GUI实验箱的设计方法及在MATLAB软件平台中可以直接设计数字滤波器的各个函数的调用,对设计GUI实验箱的所有函数的运用有了比较好的认识。
通过这个课程设计,我学到了很多MATLAB和语音信号的知识,提高了自己在语音信号设计方面的知识能力,动手能力和思维能力都得到了一定的提升,希望自己以后可以更多的继续学习这一门课程设计方面的知识。
附录
1.源程序代码:
functionvarargout=Likunpeng(varargin)
gui_Singleton=1;
gui_State=struct('gui_Name',mfilename,...
'gui_Singleton',gui_Singleton,...
'gui_OpeningFcn',@Likunpeng_OpeningFcn,...
'gui_OutputFcn',@Likunpeng_OutputFcn,...
'gui_LayoutFcn',[],...
'gui_Callback',[]);
ifnargin&&ischar(varargin{1})
gui_State.gui_Callback=str2func(varargin{1});
end
ifnargout
[varargout{1:
nargout}]=gui_mainfcn(gui_State,varargin{:
});
else
gui_mainfcn(gui_State,varargin{:
});
end
functionLikunpeng_OpeningFcn(hObject,eventdata,handles,varargin)
handles.output=hObject;
guidata(hObject,handles);
functionvarargout=Likunpeng_OutputFcn(hObject,eventdata,handles)
varargout{1}=handles.output;
functionpushbutton1_Callback(hObject,eventdata,handles)
globalfile;
[x]=wavread(file);
sampling_rate=44100;
lfft=1024;lfft2=lfft/2;
winlgh=1024;frmlgh=100;
noverlap=winlgh-frmlgh;
x=2.0*x/max(abs(x));
etime=length(x)/sampling_rate;
spec=abs(specgram(x,lfft,sampling_rate,winlgh,noverlap));
axes(handles.axes1);plot((1:
length(x))/sampling_rate,x)
functionpushbutton2_Callback(hObject,eventdata,handles)
globalfile;
[x]=wavread(file);
sampling_rate=44100;
lfft=1024;lfft2=lfft/2;
winlgh=1024;frmlgh=100;
noverlap=winlgh-frmlgh;
x=2.0*x/max(abs(x));
etime=length(x)/sampling_rate;
spec=abs(specgram(x,lfft,sampling_rate,winlgh,noverlap));
axis([0etime-2.52.5]);
axes(handles.axes1);
imagesc(0:
.010:
etime,0:
1000:
(sampling_rate/2),log10(abs(spec)));axis('xy')
functionpushbutton7_Callback(hObject,eventdata,handles)
globalfile;
[y,fs]=wavread(file);
L=length(y);
fw=y.*hamming(L);
r=real(log(fft(fw,L)));
axes(handles.axes1);
plot(r);
functionpushbutton8_Callback(hObject,eventdata,handles)
globalfile;
[y,fs]=wavread(file);
L=length(y);
fw=y.*hamming(L);
axes(handles.axes1);
plot(fw);
functionpushbutton5_Callback(hObject,eventdata,handles)
globalfile;
[y,fs]=wavread(file);
L=length(y);
fw=y.*hamming(L);
r=real(log(fft(fw,L)))
pfw=cceps(fw);
rpfw=rceps(fw);
axes(handles.axes1);
plot(rpfw);
functionpushbutton6_Callback(hObject,eventdata,handles)
globalfile;
[y,fs]=wavread(file);
L=length(y);
fw=y.*hamming(L);
pfw=cceps(fw);
rpfw=rceps(fw);
z=rpfw(1:
30);
logz=real(exp(fft(z,L)));
axes(handles.axes1);
plot(logz);
functionpushbutton4_Callback(hObject,eventdata,handles)
globalfile;
[y,fs]=wavread(file);
L=length(y);
fw=y.*hamming(L);
r=real(log(fft(fw,L)))
pfw=cceps(fw);
axes(handles.axes1);
plot(pfw);
functionpushbutton3_Callback(hObject,eventdata,handles)
globalfile;
[y,fs]=wavread(file);
axes(handles.axes1);plot(y);
functionpushbutton9_Callback(hObject,eventdata,handles)
globalfile;
speech1_10k=wavread(file,[10241273]);%È¡250µãµÄÓïÒôÐźÅ
sw=speech1_10k.*hamming(250);%a¼ÓººÃ÷´°
Rsw=xcorr(sw');%a×ÔÏà¹Ø
t=0.1:
0.1:
25;
axes(handles.axes1);
plot(t,sw);
functionpushbutton10_Callback(hObject,eventdata
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 语音 试验