语言识别 实验指导书实施计划.docx
- 文档编号:12334407
- 上传时间:2023-04-18
- 格式:DOCX
- 页数:33
- 大小:5.21MB
语言识别 实验指导书实施计划.docx
《语言识别 实验指导书实施计划.docx》由会员分享,可在线阅读,更多相关《语言识别 实验指导书实施计划.docx(33页珍藏版)》请在冰豆网上搜索。
语言识别实验指导书实施计划
实践教学(智能应用系统设计)
实验指导书
智能科学与技术系
2017年9月
实验一语音信号的采集与处理
(一)实验目的
掌握自然语音处理的基本过程和方法,学会自己编程实现自然语音处理。
(二)实验环境
计算机、Matlab环境
(三)实验学时
18学时
(四)实验内容与步骤
一.预习知识:
1.用灵者录音机录制一段10s左右的音频,保存为wav格式。
2.学会用Matlab画图:
1)如下程序:
%绘制第一个图形
figure
(1);
t=0:
pi/12:
2*pi;%t的值从0到2*pi,步进为pi/12
y1=sin(t);
y2=cos(t);
y3=sin(t.^2)-t.*cos(t);
plot(t,y1,'r-',t,y2,'bo',t,y3,'k:
');%二维绘图,红线画y1,蓝圈画y2,黑虚线画y3
%绘制第二个图形
figure
(2);
x=0:
pi/6:
2*pi;%t的值从0到2*pi,步进为pi/6
y=x;
z1=sin(x);
z2=cos(x);
z3=atan(x);
subplot(2,2,1);%subplot(m,n,p)把一个窗口分为m*n,p为当前区域号
plot(x,z1,'r',x,z2,'g');%二维绘图,红线画z1,绿线画z2
subplot(2,2,2);%把一个窗口分为2*2,当前为第二个
plot(x,z3,'m');
subplot(2,2,3);
[x,y]=meshgrid(x,y);%生成网格平面,一次为基础绘制3D图形
z4=sin(x).*cos(y);
mesh(x,y,z4);%x,y为自变量矩阵,z为建立在x和y之上的函数矩阵
subplot(2,2,4);
surfc(x,y,z4);%与mesh类似,mesh绘制的是一个网格图,surf绘制的是着色的三维曲面
2)绘制的两个图形如下:
图1
3.什么是高斯白噪声。
高斯白噪声中的高斯是指概率分布是正态函数,
高斯白噪声的概率分布为
公式1
图2高斯白噪声的概率分布
白噪声是指它的二阶矩不相关,一阶矩为常数,是指先后信号在时间上的相关性。
如果一个噪声,它的幅度分布服从高斯分布,而它的功率谱密度又是均匀分布的,则称它为高斯白噪声,从我们耳朵的频率响应听起来它是非常明亮的“咝”声。
4.了解通带截止频率,阻带截止频率,频率归一化的含义。
通带截止频率:
通带截止频率指的是波特图中大于3dB的波段,指-3db的位置,也就是说从滤波器的通带的增益(最大值处)算起,下降-3db(0.707倍)的位置,如图3中的fp。
阻带截止频率:
就是在这个频率的信号,衰减到相应参数(比如-80db等)的边界频率,如图3中的fc。
频率归一化:
将频率化为0~1之间,如对于一个采样频率为1000Hz的系统,根据采样定律,信号的最大频率为500Hz,所以对于300Hz频率进行归一化即为300/500=0.6。
图3
5.了解滤波器的概念。
凡是可以使信号中特定的频率成分通过,而极大地衰减或抑制其他频率成分的装置或系统都称之为滤波器,相当于频率“筛子”。
6.了解如何进行时域分析、频域分析。
时域分析:
如图4时域波形图,横轴表示时间轴,纵轴表示声音信号的大小,幅度越高声音越大。
频谱图分析:
信号频谱图的分析,横轴表示频率,纵轴表示在此频率上声音的大小,频率幅值越大,表示声音信号中此频率的能量越强。
图4
二.实验涉及的MATLAB函数
1.[y,fs,nbits]=wavread(‘file’),读取file所规定的.wav文件,采样值放在向量y中,fs表示采样频率(Hz),nbits表示采样位数。
2.sound(y,fs,nbits),将y的数据转为声音信号,fs为采样频率,nbits表示采样位数。
3.pause(x)延时函数,x为延时的秒数。
4.L=length(y),L为y的长度。
5.noise=randn(L,1),产生L*1维正态随机分布的矩阵。
6.[N,wn]=buttord(wp,wc,Ap,As);设计巴特沃斯滤波器,N为滤波器的最低阶数,wn为-3dB的截至频率。
7.b=fir1(N,wn,'ftype'),窗函数法设计FIR滤波器,N为滤波器的阶数,wn为3dB的截至频率,ftype为滤波器类型,低通’low’,高通’high’,带通’bandpass’,带阻’stop’。
8.x=fftfilt(b,y),b为滤波器,y为待滤波信号,x为滤波后的信号。
9.y_p=fft(y,L),y为需要进行傅里叶变换的采样信号,L为y的长度,y_p为y傅里叶变换后的频域值。
三.实验内容
1.播放原始音频信号
1)采集文件voice.wav的语音信号(Matlab中直接调用wavread函数)。
2)调整采样值y(将采样值乘或除以一个倍数),使回放语音信号时声音大小在听觉适合的范围。
3)回放录制的语音信号y(Matlab中直接调用sound函数)。
4)进行延时(Matlab中直接调用pause函数),延时大约12s左右,完成原始语音信号的播放。
2.音频信号加入噪声
1)计算音频信号采样值y的长度L(Matlab中直接调用length函数)。
2)得到与采样值长度同为L的高斯白噪声信号noise(Matlab中直接调用randn函数)。
3)把高斯白噪声信号衰减0.05倍左右后,将音频信号与高斯白噪声信号叠加(直接将音频信号和噪声相加得到信号y_z),若高斯白噪声的信号较强会使音频信号完全被淹没。
4)回放加噪后的语音信号y_z(Matlab中直接调用sound函数)。
5)进行延时(Matlab中直接调用pause函数),延时大约12s左右,完成加噪后语音信号的播放。
3.将加噪后的信号进行低通滤波
1)低通滤波器性能指标的设定,fp为通带截至频率,fc为阻带截止频率,fc-fp为过渡带的带宽,AS为带外抑制度,AP为通带纹波,fp=1000,fc=1100,As=100,Ap=1。
2)将fc、fp进行频率归一化,wc=2*fc/fs,wp=2*fp/fs。
3)设计巴特沃斯滤波器滤波器的参数(Matlab中直接调用buttord函数),得到最低阶数N和截止频率wn。
4)设计FIR数字滤波器b(Matlab中直接调用fir1函数)。
5)对加噪后的信号y_z进行低通滤波处理,得到信号x(Matlab中直接调用fftfilt函数)。
6)回放加噪又低通滤波后的语音信号x(Matlab中直接调用sound函数)。
7)进行延时(Matlab中直接调用pause函数),延时大约12s左右,完成信号的播放。
4.将加噪后的信号进行高通滤波
1)高通滤波器性能指标的设定,fp=900,fc=1000,As=100,Ap=1,之后的步骤同低通滤波器。
5.将加噪后的信号进行带通滤波
1)带通滤波器性能指标的设定,fp=[200,1200],fc=[100,1300],As=100,Ap=1
,之后的步骤同低通滤波器。
四.拓展部分
任务:
采集自己录制的音频信号,进行加噪、滤波,同时在此过程中要进行时域和频域分析。
步骤:
1.录制与回放原始音频信号,同时对原始语音信号进行时域和频域的显示与分析
1)录制一段10s左右的音频,保存为wav格式。
2)采集录制的语音信号,得到采样值y(Matlab中直接调用wavread函数)。
3)调整采样值y,使回放语音信号时声音大小在听觉适合的范围(将采样值乘或除以一个倍数)。
4)回放录制的语音信号y(Matlab中直接调用sound函数)。
5)进行延时(Matlab中直接调用pause函数),延时大约12s左右,完成原始语音信号的播放。
6)计算采样值y的长度L(Matlab中直接调用length函数)。
7)对长度为L的采样值y傅里叶变换到频域得到y_p(Matlab中直接调用fft函数)。
8)计算对应点的频率,f=fs*(0:
L/2-1)/L。
9)画出时域波形图和频域的频谱图,参考预习知识中的程序,用plot(y)绘制时域波形图,用plot(f,abs(y_p(1:
L/2)))绘制频域的频谱图。
2.音频信号加入噪声,同时对加噪后语音信号进行时域和频域显示与分析
1)计算音频信号采样值的长度L(Matlab中直接调用length函数)。
2)得到与采样值长度同为L高斯白噪声信号noise(Matlab中直接调用randn函数)。
3)把高斯白噪声信号衰减0.05倍左右后,将音频信号与高斯白噪声信号叠加(直接将音频信号和噪声相加得到信号y_z),若高斯白噪声的信号较强会使音频信号完全淹没。
4)回放加噪后的语音信号y_z(Matlab中直接调用sound函数)。
5)进行延时(Matlab中直接调用pause函数),延时大约12s左右,完成加噪后语音信号的播放。
6)对长度为L的加噪后信号y_z傅里叶变换到频域得到y_zp(Matlab中直接调用fft函数)。
7)计算对应点的频率,f=fs*(0:
L/2-1)/L。
8)画出时域波形图和频域的频谱图,参考预习知识中的程序,用plot(y)绘制时域波形图,用plot(f,abs(y_zp(1:
L/2)))绘制频域的频谱图。
3.将加噪后的信号进行低通滤波,显示并分析时域波形图和频域频谱图
1)低通滤波器性能指标的设定,fp=300,fc=400,As=100,Ap=1。
2)将fc、fp进行频率归一化,wc=2*fc/fs,wp=2*fp/fs。
3)设计巴特沃斯滤波器滤波器的参数(Matlab中直接调用buttord函数),得到最低阶数N和截止频率wn。
4)设计FIR数字滤波器b(Matlab中直接调用fir1函数)。
5)对加噪后的信号y_z进行低通滤波处理得到x信号(Matlab中直接调用fftfilt函数)。
6)回放加噪又低通滤波后的语音信号x(Matlab中直接调用sound函数)。
7)进行延时(Matlab中直接调用pause函数),延时大约12s左右,完成信号的播放。
8)对长度为L的加噪又低通滤波信号x傅里叶变换到频域得到X(Matlab中直接调用fft函数)。
9)画出时域波形图和频域的频谱图,参考预习知识中的程序,用plot(x)绘制时域波形图,用plot(f,abs(X(1:
L/2)))绘制频域的频谱图。
4.将加噪后的信号进行高通滤波,显示并分析时域波形图和频域频谱图
1)高通滤波器性能指标的设定,fp=500,fc=600,As=100,Ap=1,之后步骤同低通滤波器。
5.将加噪后的信号进行带通滤波,显示并分析时域波形图和频域频谱图
1)带通滤波器性能指标的设定,fp=[200,1200],fc=[100,1300],As=100,Ap=1,之后步骤同低通滤波器。
五.应用部分
音频智能分析与处理
1.录一段音频,要求频率比较低(类似主持人赵忠祥之类的浑厚的声音);
2.录一段音频,要求频率比较高(类似歌手张靓颖海的豚音),时间长度和低频率的一致;
3.把两段音频合成一段(注意,不是首尾相连,而是重叠);
4.利用所学的知识把声音分开。
(五)、实验报告
1.报告采用相应的实践报告模板,内容包括以下基本内容:
(1)题目目标和要求
(2)设计思路
(3)实现过程
(4)结果及演示效果
(5)总结分析
注意:
若滤波器的效果不好,根据频谱图改变截止频率。
实验二数字图像处理基础及OpenCV
(一)实验目的
掌握基本的图像处理方法,学会图像的显示、缩放、旋转、直方图等基本操作。
学会图像中值滤波和均值滤波,掌握图像锐化、模糊、去噪的基本方法。
(二)实验环境
计算机、VS2010、OpenCV
(三)实验学时
30学时
(四)实验内容与步骤
一.安装OpenCV2.4.11
将opencv-2.4.11.exe解压并安放到某个目录下,例如D:
\,如右图1,则在D盘会出现opencv的文件夹。
图1
二.设置环境变量
1.右击“计算机”→“属性”→“高级系统设置”→“环境变量”如下图2所示:
图2
2.系统变量设置
(1)设置系统变量PATH选中PATH,单击编辑。
在PATH的末尾添加以下路径:
D:
\opencv\build\x86\vc10\bin
注意:
1、要在该路径前添加英文分号,以与前面的路径隔开,但该路径末尾不可加英文分号,除非还要在其后添加路径。
2、可根据自己的情况,将其改为你的opencv\build\x86\vc10\bin文件夹所在的路径;
3、注意:
如果使用的是64位系统,不用设置成opencv\build\x64\vc10\bin,而是设置成opencv\build\x86\vc10\bin。
4、路径中的VC10是和VS的版本号有关的,vc10,vc11,vc12分别表示VS2010,VS2012,VS2013的VisualStudio使用的编译器版本,根据自己的VS版本来填写正确的编译器版本号。
(2)在系统变量中新建OpenCV变量
单击新建,在弹出的对话框中,将变量名(可以自己定义)和变量值分别设置为OPENCV和D:
\opencv\build。
你要根据自己安装的路径来选择,找到opencv文件下的build即可,如图3。
图3
注意:
设置完环境变量,需要重启电脑,才能生效。
三.对VS2010的环境配置
配置VS2010,即告诉VC去什么地方寻找OpenCV的头文件和库。
1.新建一个VS项目
(1)打开VS2010,文件→新建项目→MF应用程序,在这里,我给项目命名为configuration,位置是在:
E盘下新建的一个opencvproject文件夹中,如图4单击确定。
图4
(2)选择“下一步”
(3)选择“基于对话框”,再单击“完成”。
2.设置VS项目的调用路径
(1)点击“视图”→“属性管理器”,如下图5所示。
图5
(2)从左侧项目中打开“Debug|Win32”→“Microsoft.Cpp.Win32.user”,双击“Microsoft.Cpp.Win32.user”,弹出如下图6所示的窗口。
图6
(3)点击左侧VC++目录,编辑右侧的“可执行文件目录”、“包含目录”与“库目录“,分别添加对应的路径,如下图7所示。
图7
对应的路径如下:
1)可执行文件目录
D:
\opencv\build\x86\vc10\bin
说明:
1、可根据自己的情况,将其改为你的opencv\build\x86\vc10\bin文件夹所在的路径;
2、即使是64位系统,也要选择opencv\build\x86\,切记!
!
2)包含目录
D:
\opencv\build\include
D:
\opencv\build\include\opencv
D:
\opencv\build\include\opencv2
说明:
1、可根据自己的情况,将其分别改为你的opencv\build\include、opencv\build\include\opencv和opencv\build\include\opencv2文件夹所在的路径;
2、这里的include目录为build文件夹下的include目录,不要选成与build文件夹在同一个根目录下的那个include文件夹。
3)库目录
D:
\opencv\build\x86\vc10\lib
说明:
1、可根据自己的情况,将其改为你的opencv\build\x86\vc10\lib文件夹所在的路径;
2、即使是64位系统,也要选择x86。
(4)附加依赖项
1)单击“链接器”→“输入”→“附加依赖项”,如下图8所示。
图8
2)如下图9所示,在附加依赖项里,添加opencv\build\x86\vc10\lib文件夹里的lib文件名称:
图9
注意:
不要被图片误导,图片中每个.lib之间好像是回车隔开的,其实不是。
你只需要把下面的内容复制进去即可,可以在opencv\build\x86\vc10\lib文件夹里面看到这些文件。
附加依赖项:
opencv_calib3d2411d.lib;opencv_contrib2411d.lib;opencv_core2411d.lib;opencv_features2d2411d.lib;opencv_flann2411d.lib;opencv_gpu2411d.lib;opencv_highgui2411d.lib;opencv_imgproc2411d.lib;opencv_legacy2411d.lib;opencv_ml2411d.lib;opencv_nonfree2411d.lib;opencv_objdetect2411d.lib;opencv_photo2411d.lib;opencv_stitching2411d.lib;opencv_ts2411d.lib;opencv_video2411d.lib;opencv_videostab2411d.lib;
3)从左侧项目中打开“Release|Win32”→“Microsoft.Cpp.Win32.user”,
双击“Microsoft.Cpp.Win32.user”,单击“链接器”→“输入”→“附加依赖项”,添加以下文件
opencv_calib3d2411.lib;opencv_contrib2411.lib;opencv_core2411.lib;opencv_features2d2411.lib;opencv_flann2411.lib;opencv_gpu2411.lib;opencv_highgui2411.lib;opencv_imgproc2411.lib;opencv_legacy2411.lib;opencv_ml2411.lib;opencv_nonfree2411.lib;opencv_objdetect2411.lib;opencv_photo2411.lib;opencv_stitching2411.lib;opencv_ts2411.lib;opencv_video2411.lib;opencv_videostab2411.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib
完成配置。
四.OpenCV实现打开并显示图像
1.新建项目
单击菜单栏的文件->新建->项目,选择VisualC++,MFC应用程序,名称为dispose_picture,选择好路径,然后单击“确定”再单击“下一步”。
选择“基于对话框”、不使用Unicode库,选择“在静态库中使用MFC”,单击“完成”。
随后,会出现一个编辑对话框的界面如图10所示。
图10
2.为对话框添加打开按钮
1.在右侧工具栏选择Button按钮,将其拖到对话框控件,如图11所示。
选中Button1按钮,点击右键,选择属性,修改Caption为“打开图像”,修改ID为IDC_open。
图11
2.添加消息相应函数,双击“打开图片”按钮,为Cdispose_pictureDlg:
:
OnBnClickedopen()函数添加如图12所示的代码,并添加头文件#include
图12
3.单击调试→启动调试,显示“全部生成成功:
1已成功,0已失败,0已跳过”,就可以运行程序了,运行界面如图13所示,单击打开图片就可以完成打开图片的功能。
图13
4.注意:
(1)若不小心关闭dispose_picture.cpp窗口,点击视图→解决方案资源管理器,单击dispose_picture→源文件,即可打开。
(2)若不小心关闭IDD_DISPOSE_PICTURE_DIALOG的对话窗,点击视图→资源视图,单击dispose_picture→dispose_picture.rc→Dialog→IDD_DISPOSE_PICTURE_DIALOG即可打开。
(3)一个button按钮有两个ID会出现错误,如果添加一个button按钮之后双击,此时会建立这个按钮的一个ID(默认值为buttonn),随后又修改此按钮的ID,那么又建立了一个ID,一个按钮出现两个ID,编译后会显示第一个ID为未申明的标识符,双击错误,删除ON_BN_CLICKED(IDC_BUTTONn,&Cdispose_pictureDlg:
:
OnBnClickedBUTTONn)即可解决。
五.OpenCV实现图片缩放
1.在右侧工具栏添加两个EditControl控件,单击右键选择属性,修改ID,一个为IDC_Height,另一个为IDC_Width,同时添加相应的StaticText,修改Caption为“高:
”和“宽:
”,用来接收用户输入缩放后的图像尺寸,然后添加一个缩放按钮,在工具栏添加一个按钮,修改Caption:
“缩放”,修改ID:
IDC_Resize,并使用一个GroupBox将上述控件集中,运行结果如图14所示。
图14
2.为缩放按钮添加消息响应函数,双击缩放按钮,为Cdispose_pictureDlg:
:
OnBnClickedResize()添加如下图15所示的代码,并添加头文件#include
图15
3.可能出现的错误
1)显示IDC_Height、IDC_Width为未定义的标识符,解决办法为点击视图→解决方案资源管理器,打开子目录,选中Rsource.h,双击,选中菜单上的全部保存,然后可以看到此时IDC_Height、IDC_Width在此文件中有定义,dispose_pictureDlg.cpp中不再显示IDC_Height、IDC_Width为未定义的标识符。
2)显示Width为未定义的标识符,虽然已定义CStringWidth,解决办法为菜单→视图→属性管理器→鼠标放在disposepicture,点击右键→属性→配置属性常规→字符集,选择使用多字节字符集,此问题就可以解决。
4.单击调试→启动调试,显示“全部生成成功:
1已成功,0已失败,0已跳过”,就可以运行程序了,打开一个图像,输入缩放后的图像尺寸(高400;宽200),然后单击缩放按钮,就可以对图片进行缩放,如图16。
图16
六.OpenCV实现
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言识别 实验指导书实施计划 语言 识别 实验 指导书 实施 计划