实验三 语音信号的基频提取
一、实验目的
1、掌握语音信号基频的概念,加深对基频刻画声调特征作用的理解。 2、掌握语音信号基频特征的典型求解方法 二、仪器设备 HP计算机、Matlab软件 三、实验原理
1.人在发浊音时,气流通过声门使声带产生张弛振荡式振动,产生一股准周期脉冲气流,这一气流激励声道就产生浊音,又称有声语音,它携带着语音中的大部分能量。这种声带振动的频率称为基频,相应的周期就称为基音周期( Pitch) ,它由声带逐渐开启到面积最大(约占基音周期的50% ) 、逐渐关闭到完全闭合(约占基音周期的35% ) 、完全闭合(约占基音周期的15% )三部分组成。
当今主流的基音周期检测技术主要有时域的自相关法、频域的倒谱法、时频结合的小波变换分析方法以及在其基础上的衍生算法。本文所采用的方法是自相关法
2.本实验采用自相关法: (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点开始加入。 四、实验内容
1、找到机器中声音文件,对其进行相应的文件操作。 2、对该声音文件提取基频特征。 3、画出相应的基频曲线的图形。 4、按照实际的情况调整阈值 五、实验步骤及程序
1、实验步骤: (1)读取语音信号;
(2)分帧求取每帧的基因周期,前34帧和52帧以后的属于无声段,可以不予考虑;
(3)观察运行结果。 2、程序流程:
读入语音信号 开始
用中值滤波器去除野点 N除以采样频率,即的基音周期 对每一帧求短时自相关 对语音信号分帧处理 找出每帧自相关函数的最大值所在位置N 画图显示语音段每帧的基音周期 3、实验程序 function pitch
x=wavread('1.wav');%读取声音文件 figure(1);
stem(x,'.'); %显示声音信号的波形
n=160; %取20ms的声音片段,即160个样点 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 end
p=Rm(10:n) %防止误判,去掉前边10个数值较大的点 [Rmax,N(m)]=max(p); %读取第一个自相关函数的最大点 end %补回前边去掉的10个点 N=N+10; %每帧对应的最大值处
T=N/8; %算出对应的周期,f=8khz figure(2);stem(T,'.');axis([0 length(T) 0 10]);
xlabel('帧数(n)');ylabel('周期(ms)');title('各帧基音周期'); T1= medfilt1(T,5); %去除野点,中值滤波 figure(3);stem(T1,'.');axis([0 length(T1) 0 10]); xlabel('帧数(n)');ylabel('周期(ms)'); title('各帧基音周期(去处野点后的)');
figure;stem(35:52,T2(35:52),'.'); axis([0 length(T2) 0 300]);
title('frequency');ylabel('/HZ');xlabel('frame');grid
六、实验结果分析:
图3.1 原始语音
图3.2 语音段的基音周期
图3.3 去除野点后的基音周期
图3.4 基音频率
1、短时自相关函数法基音检测的主要原理是通过比较原始信号和它移位后的信号之间的类似性来确定基音周期,如果移位距离等于基音周期,那么两个信号具有最大类似性。基于自相关函数的算法是基音周期估计的常用方法,特别适用于噪声环境下的基音提取。自相关函数在基音周期处表现为峰值,相邻两个峰值之间的间隔即为一个基音周期。
2、从图中可以看出,该语音段的基音周期大约为6.9ms,即基因频率为145HZ,中间还有一段基音频率为3.5ms,基音频率为286HZ。
3、自相关法有一个缺点:运算量大,效率比较。无论是对随机的语音信号还是对离散的信号进行处理,只要是使用自相关函数对信号进行周期估计,必然涉及大量的乘法运算。虽然经过实验证明,自相关函数法是一种简单而且有效的方法,但是大量的乘法运算严重影响算法的效率。然而从估计基音周期的角度看,短时自相关函数所包含的信息许多是多余的,真正能反映基音周期性的只是少数几个峰,而其余的大多数峰都是由于声道的谐振特性引起的。为此,可以用三电平削波法来突现反映基音周期的信息,同时压缩与其无关的信息。