1、NORTH CHINA UNIVERSITY OF SCIENCE AND TECHNOLOGY综合课程设计班 级:14 海洋技术专业 姓 名: 董一点 学 号: 201414590115 指导教师: 黄晓红 报告时间: 2017.1.5 语音信号的采集与分析音频信号时域和频域特征分析摘要本论文利用 matlab 2016a 和 voicebox 对信号进行时域特征和频域特征的研究,并对语音信号进行综合仿真分析, voicebox 的利用大大缩短研究的时间,简化 matlab 代码,matlab 2016a 的使用,也让 matlab 分析效率大大提高关键词:时域分析,频域分析,voicebo
2、x, matlab目录语音信号的采集与分析 .2音频信号时域和频域特征分析 .2课程设计的目的和意义、国内外研究现状 .4课程设计目的和意义 .4国内外研究现状 .4所需工具介绍 .4MATLAB 2016a 介绍 .4VOICEBOX 介绍 .4时域特征分析 .4短时平均能量 .5短时平均幅度 .6短时平均过零率 .7频域特征分析 .8短时傅立叶变换求短时谱 .8语音信号语谱图 .9语音信号的综合仿真分析(降噪) .10所需概念介绍 .10高斯噪声 .10中值滤波 .10randn 函数 .10加入噪声和降噪的过程 .11降噪前后综合仿真分析 .13时域对比分析 .13频域对比分析 .16全
3、部代码以及全部解释 .18时域频域分析.m .18降噪前后时域频域仿真分析 .19参考文献 .21附录 .21课程设计的目的和意义、国内外研究现状课程设计目的和意义加深理解和巩固数字信号处理和声学的相关知识。培养运用 matlab 软件独立分析问题、解决问题的实际工作能力;提高语音信号的时域、频域分析能力。国内外研究现状语音识别技术是 2000 年至 2010 年间信息技术领域十大重要的科技发展技术之一。它是一门交叉学科,正逐步成为信息技术中人机接口的关键技术。语音技术的应用已经成为一个具有竞争性的新兴高技术产业。所需工具介绍在编辑程序中,为了简化编程的步骤,我在 matlab 2016a 中
4、使用 voicebox工具箱,以下给出两者的介绍,所有的介绍都摘自官方网站。MATLAB 2016a 介绍matlab 2016a 是 MathWorks 出品一款的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括 MATLAB 和 Simulink 两大部分。VOICEBOX 介绍VOICEBOX 是一个语音处理工具箱,它由 MATLAB 程序组成,它主要是由英国伦敦大学的电子与电子工程学院的 Mike Brookes 编写的。时域特征分析时域是一个数学或物理词汇,表示以时间为轴线,以时间为标尺为基准。按照要求,对采录声音 dyd.wav
5、第一声道的短时平均幅度,短时平均能量,短时平均过零率,短时平均幅度三个特征量进行提取。以下为方便审查,将 matlab 程序用加粗斜体标出。短时平均能量定义 n 时刻某语音信号的短时平均能量为:=+()()2= =( 1) ()()2式中,N 为窗长,可见短时能量为一帧样点值的加权平方和。我选择使用矩形窗进行计算,则在公式中 w(n-m)=1;= =( 1) ()2然后将帧数设为 256,dyd.wav 声道中的单声道 a 中一共 217088 样点,所以我的窗长为 217088/265=848,在此之前我需要利用 voicebox 中的 enframe 函数对 a 声道进行分帧,官方给出的
6、enframe 函数使用方法如下:f,t,w=enframe(x,win,hop,m,fs)所以我设计的 matlab 程序为:a,fs,bit =readwav(dyd.wav);a=a(:,1);E=enframe(a,256);amp = sum(E.2, 2);短时平均幅度短时能量的一个问题是对信号电平值过于敏感,在定点实现时很容易产生溢出。为了克服它,定义一个短时平均幅度函数衡量语音幅度变化。我在这里仍然选择矩形窗口:= =1|()|()= =1|()|在不更改 enframe 分帧处理情况下,我给出 matlab 程序如下;M=sum(abs(E),2);短时平均过零率定义为每帧内
7、信号通过零值的次数。过零率在一定程度上可以反映信号的频率信息。短时平均过零率的定义为,此处我给出在矩形窗口下的公式:= =1|()(1)|()= =1|()(1)|因为出现 x(m-1),在这里需要利用 enframe 函数对信号重新进行设定,给出matlab 程序如下;tmp1 = enframe(a(1:end-1),256);tmp2 = enframe(a(2:end),256);Z=sum(abs(sign(tmp2)-sign(tmp1),2);频域特征分析频域是描述信号在频率方面特性时用到的一种坐标系。短时傅立叶变换求短时谱短时傅里叶变换(STFT,short-time Four
8、ier transform,或 short-term Fourier transform)是和傅里叶变换相关的一种数学变换,用以确定时变信号其局部区域正弦波的频率与相位。在这里我使用 matlab 里面的 spectroggram 函数,这是一个非常好用的函数,使用短时傅里叶变换得到信号的频谱图。当使用时无输出参数,会自动绘制频谱图;有输出参数,则会返回输入信号的短时傅里叶变换。用法如下:S,F,T,P=spectrogram(x,window,noverlap,nfft,fs)此时可以给出 matlab 程序:x,fs,bit =readwav(dyd.wav);a=x(:,1);S,F,T
9、,P=spectrogram(a);f=fs*(0:2047)/4096;figure(5);plot(f,abs(S(1:2048)语音信号语谱图语谱图的横坐标是时间,纵坐标是频率,坐标点值为语音数据能量。由于是采用二维平面表达三维信息,所以能量值的大小是通过颜色来表示的,颜色深,表示该点的语音能量越强。此处我们利用 matlab 的 spectrogram 函数,并给出 matlab 函数;plot(a);spectrogram(a,8192,7168,8192,44100,yaxis);语音信号的综合仿真分析(降噪)所需概念介绍按照要求,首先录制自己声音,然后加入噪声,最后去除噪声进行比较。在这里,我加入噪声为高斯随机噪声,降噪处理采用中值滤波的方法处理,下面各解释和步骤都在程序中给出。高斯噪声高斯噪声是一种随机噪声,在任选瞬时中任取 n 个,其值按 n 个变数的高斯概率定律分布。中值滤波中值滤波法是一种非线性平滑技术,它将每一像素点的样本值设置为该点某邻域窗口内的所有采样点样本值的中值。randn 函数randn 是一种产生标准正态分布的随机数或矩阵的函数。