语音处理实验报告.docx
《语音处理实验报告.docx》由会员分享,可在线阅读,更多相关《语音处理实验报告.docx(13页珍藏版)》请在冰豆网上搜索。
语音处理实验报告
实验一语音信号的端点检测
一、实验目的
1、掌握短时能量的求解方法
2、掌握短时平均过零率的求解方法
3、掌握利用短时平均过零率和短时能量等特征,对输入的语音信号进行端点检测。
二、仪器设备实验仪器设备及软件
HP计算机,MATLAB
三、实验原理
端点检测是语音信号处理过程中非常重要的一步,它的准确性直接影响到语音信号处理的速度和结果。
本次实验利用短时过零率和短时能量相结合的语音端点检测算法利用短时过零率来检测清音,用短时能量来检测浊音,两者相配合便实现了信号信噪比较大情况下的端点检测。
算法对于输入信号的检测过程可分为短时能量检测和短时过零率检测两个部分。
算法以短时能量检测为主,短时过零率检测为辅。
根据语音的统计特性,可以把语音段分为清音、浊音以及静音(包括背景噪声)三种。
在本算法中,短时能量检测可以较好地区分出浊音和静音。
对于清音,由于其能量较小,在短时能量检测中会因为低于能量门限而被误判为静音;短时过零率则可以从语音中区分出静音和清音。
将两种检测结合起来,就可以检测出语音段(清音和浊音)及静音段
1、短时能量计算
定义n时刻某语言信号的短时平均能量
为:
式中N为窗长,可见短时平均能量为一帧样点值的平方和。
特殊地,当窗函数为矩形窗时,有
2、短时过零率
过零就是指信号通过零值。
过零率就是每秒内信号值通过零值的次数。
对于离散时间序列,过零则是指序列取样值改变符号,过零率则是每个样本的改变符号的次数。
对于语音信号,则是指在一帧语音中语音信号波形穿过横轴(零电平)的次数。
可以用相邻两个取样改变符号的次数来计算。
如果窗的起点是n=0,短时过零率Z为
波形穿过横轴(零电平)的次数
短时过零可以看作信号频率的简单度量
浊音的短时平均幅度最大,无声的短时平均幅度最小,清音的短时过零率最大,无声居中,浊音的短时过零率最小。
3、短时自相关函数
是偶函数;
s(n)是周期的,那么R(k)也是周期的;
可用于基音周期估计和线性预测分析
4、判断语音信号的起点和终点
利用短时平均幅度和短时过零率可以判断语音信号的起点和终点。
语音端点检测方法可采用测试信号的短时能量或短时对数能量、联合过零率等特征参数,并采用双门限判定法来检测语音端点,即利用过零率检测清音,用短时能量检测浊音,两者配合。
首先为短时能量和过零率分别确定两个门限,一个是较低的门限数值较小,对信号的变化比较敏感,很容易超过;另一个是比较高的门限,数值较大。
低门限被超过未必是语音的开始,有可能是很短的噪声引起的,高门限被超过并且接下来的自定义时间段内的语音。
四、实验步骤及程序
(1)实验步骤:
1、取一段录音作为音频样本。
2、利用公式分别编程计算这段语音信号的短时能量和短时过零率,然后分别画出它们的曲线。
3、调整能量门限。
4、进行幅度归一化并设置帧长、短时能量阈值、过零率阈值等参数。
5、编写程序实现语音端点检测。
6、最后得到语音端点检测图像。
(2)语音信号的端点检测程序流程图:
图1.1语音信号的端点检测程序流程图
(3)语音信号的端点检测实验源程序:
clc;
clear;
c=wavread('55.wav');//读语音文件波形
e_x=frame(c(:
1),'energy');//分析语音文件短时能量
z_x=frame(c(:
1),'zc');//分析语音文件过零率
subplot(5,1,1);
plot(c(:
1));
subplot(5,1,2);
plot(e_x);
subplot(5,1,3);
plot(z_x);
一、实验结果
图1.2语音信号的端点检测实验结果输出图像
6、实验体会
这次试验,让我掌握了调用matlab函数的结构体,一开始没学过matlab语言,所以,学这门课很吃力,好多语句都不知道,所以,无从下手去通过语言实现功能,只能一边学语句的涵义哦,一边摸索功能的实现,相当费劲。
以后,不知道还有没有机会系统的了解,学习matlab语言,不过,还是从这个试验学到一部分关于matlab的知识,以及用matlab实现语音信号处理的应用技巧。
实验二语音信号的特征提取
一、实验目的
1、掌握语音信号的Mel倒谱特征(MFCC)的求解方法
2、掌握语音信号的线性预测原理以及LPC特征的求解方法
二、仪器设备
HP计算机、Matlab软件
3、实验原理
MFCC:
语音识别和说话人识别中,常用的语音特征是基于Mel频率的倒谱系数(即MFCC)。
MFCC参数是将人耳的听觉感知特性和语音的产生机制相结合。
Mel频率可以用如下公式表示:
在实际应用中,MFCC倒谱系数计算过程如下;
1、将信号进行分帧,预加重和加汉明窗处理,然后进行短时傅里叶变换并得到其频谱。
2、求出频谱平方,即能量谱,并用M个Mel带通滤波器进行滤波;由于每一个频带中分量的作用在人耳中是叠加的。
因此将每个滤波器频带内的能量进行叠加,这时第k个滤波器输出功率谱x(k)。
3、将每个滤波器的输出取对数,得到相应频带的对数功率谱;并进行反离散余弦变换,得到L个MFCC系数,一般L取12~16个左右。
MFCC系数为
4、将这种直接得到的MFCC特征作为静态特征,再将这种静态特征做一阶和二阶差分,得到相应的动态特征。
四、实验内容
(1)、实验步骤
1、输入样本音频
2、给样本音频预加重、分帧、加窗
3、将处理好的样本音频做傅里叶变换
4、进行Mel频率滤波
5、进行Log对数能量
6、对样本求倒谱
7、输出MFCC图像
(2)、MFCC提取程序流程图
五、实验结果
实验三语音信号的基频提取
1、实验目的
1、掌握语音信号基频的概念,加深对基频刻画声调特征作用的理解。
2、掌握语音信号基频特征的典型求解方法
二、实验仪器设备及软件
HP计算机,MATLAB
三、实验原理
浊音信号的自相关函数在基因周期的整数倍位置上出现峰值,而清音的自相关函数没有明显的峰值出现。
因此检测自相关函数是否有峰值就可以判断是清音还是浊音,而峰-峰值之间对应的就是基音周期。
影响从自相关函数中正确提取基音周期的最主要原因是声道响应。
当基音的周期性和共振峰的周期性混在一起时,被检测出来的峰值可能会偏离原来峰值的真实位置。
另外,在某些浊音中,第一共振频率可能会等于或低于基音频率。
此时,如果其幅度很高,它就可能在自相关函数中产生一个峰值,而该峰值又可以同基音频率的峰值相比拟。
1、自相关函数
对于离散的语音信号x(n),它的自相关函数定义为:
R(k)=Σx(n)x(n-k),
如果信号x(n))具有周期性,那么它的自相关函数也具有周期性,而且周期与信号x(n)
的周期性相同。
自相关函数提供了一种获取周期信号周期的方法。
在周期信号周期的整数倍上,它的自相关函数可以达到最大值,因此可以不考虑起始时间,而从自相关函数的第一个最大值的位置估计出信号的基音周期,这使自相关函数成为信号基音周期估计的一种工具。
2、短时自相关函数
语音信号是非平稳的信号,所以对信号的处理都使用短时自相关函数。
短时自相关函数是在信号的第N个样本点附近用短时窗截取一段信号,做自相关计算所得的结果
Rm(k)=Σx(n)x(n-k)
式中,n表示窗函数是从第n点开始加入。
3、算法
通过对自相关基音检测原理的分析,考虑到检测准确度和检测速率2方面的因素,提出了算法实现方案,并对算法进行了Matlab编程实现。
算法包含6个功能模块:
带通滤波、取样、分帧、短时能量分析、相关运算、基音检测。
语音信号
带通滤波
图2.1基音检测框图
四、实验步骤
1、取一段录音作为音频样本。
2、对样本音频进行采样。
3、对采样后样本音频进行分帧。
4、对每一帧求短时自相关函数
5、算出对应周期。
6、进行带通滤波去除野点。
(2)语音信号基音周期提取的程序流程图:
输入语音信号
分帧
短时自相关分析
带通滤波
输出图像
图2.2语音信号基音周期提取的程序流程图
(3)实验源程序
functionpitch
x=wavread('1.wav');%读取声音文件
figure
(1);
stem(x,'.');%显示声音信号的波形
n=160;%取20ms的声音片段,即160个样点
form=1:
length(x)/n;%对每一帧求短时自相关函数
fork=1:
n;
Rm(k)=0;
fori=(k+1):
n;
Rm(k)=Rm(k)+x(i+(m-1)*n)*x(i-k+(m-1)*n);
end
end
p=Rm(10:
n);%防止误判,去掉前边10个数值较大的点
[Rmax,N(m)]=max(p);%读取第一个自相关函数的最大点
end%补回前边去掉的10个点
N=N+10;
T=N/8;%算出对应的周期
figure
(2);stem(T,'.');axis([0length(T)010]);
xlabel('帧数(n)');ylabel('周期(ms)');title('各帧基音周期');
T1=medfilt1(T,5);%去除野点
figure(3);stem(T1,'.');axis([0length(T1)010]);
xlabel('帧数(n)');ylabel('周期(ms)');title('各帧基音周期');
五、实验结果与分析
图2.3样本语音原始图像
图2.4滤波前各帧基音周期
图2.5滤波后各帧基音周期
哈尔滨工程大学
实验报告
班级:
学号:
姓名:
操作过程
试验报告
合计
语音信号的端点检测
语音信号的特征提取
语音信号的基频提取
总成绩