安徽财经大学管理科学与工程学院本科毕业论文
图2-3 (a) 原信号(b) 平均幅度差函数
图2-4 (a)加噪信号(b) 平均幅度差函数
2.3 本章小结
本章对常用基于ACF、AMDF的基音检测算法的基本原理进行了详细介绍,并进行了分析。两种算法对纯净的语音信号都能取得较好的检测精度但是由于语音信号的复杂多变,以及噪声等因素的影响,这些方法都有一定的局限性。基于语
7
安徽财经大学管理科学与工程学院本科毕业论文
音信号短时平稳性,它们的优点是比较简单,主要应用于只需要平均基音周期作为参数的语音编解码,语音识别等。
自相关函数法具有很好的抗噪性,但易受半频、倍频错误影响。平均幅度差函数法只需加法、减法和取绝对值等计算,算法简单,运算量相比自相关函数法大为减少,易于硬件实现。
8
安徽财经大学管理科学与工程学院本科毕业论文
第3章 基于Matlab基因周期的检测
3.1 语音文件的录制与读入
1.利用windows附件中的录音机功能录制2-3秒的.wav语音文件,并以a为文件名保存到Matlab/work的文件夹中。 a.打开 开始/程序/附件/娱乐/录音机;
b.自已说话a的四个音调录音(按
键),到2-3秒时停止(按
键);
c.将录制的文件加存为C:/Matlab/work中,文件名为a1.wav,a2.wav,a3.wav,
a4.wav,采样频率选11.025KHz,16位,单声道;
2.打开Matlab并新建一.m文件;
3.在.m文件中用y=wavread(‘a1.wav’)命令读入语音文件。
3.2 语音信号的采样和分帧
这里的“采样”是指从语音信号中选取一段样本,一般取样点数为帧长的整数倍。短时分析将语音分为一段一段来处理,每一段就称为一“帧”。分帧时需要对语音信号进行加窗操作,窗口长度的选择非常重要,窗口长度过短会使得分析
9
安徽财经大学管理科学与工程学院本科毕业论文
窗内没有包含足够的数据点来进行周期判断,且短时能量变化剧烈;窗口长度过长,短时能量是一段长时间的平均,不但不能反映语音信号基频的细节变化部分,而且使得计算量增大。窗口长度至少要大于基音周期的两倍。一般窗长选为120-240点,分帧模块主要完成将取样模块中获得的语音样值点分为若干个语音帧。
以a1.wav语音为例,在Matlab上进行语音的采样与分帧。 打开Matlab并新建一.m文件,运行:
x=wavread('a1.wav');%读取声音文件
figure(1);
stem(x,'.'); %显示声音信号的波形
得到的波形如下:
图3-1 a1原始语音波形
对语音信号采样,通过matlab对语音文件“a1.wav”计算得知其语音长度为2.5秒,若采样频率为11KHz,共计27500个采样点。采样模块从采样频率为11KHz的语音信号中截取1秒到2秒这一时间段,取了11000个样点进行分析,取帧长为20ms,即每帧为220个样点值,共分为50帧。
10
安徽财经大学管理科学与工程学院本科毕业论文
打开Matlab,运行:
x=wavread('a1.wav');%读取声音文件
x=x(11001:22000); figure(1);
stem(x,'.'); %显示声音信号的波形
得到波形如下:
图3-2 a1采样信号波形
3.3 语音信号基音周期的检测
3.3.1 短时自相关函数法检测基音周期
对每一帧信号进行自相关运算程序如下:
n=220; %取20ms的声音片段,即220个样点 for m=1:length(x)/n; %对每一帧求短时自相关函数
for k=1:n;
Rm(k)=0; for i=(k+1):n;
Rm(k)=Rm(k)+x(i+(m-1)*n)*x(i-k+(m-1)*n);
end
11