基于自相关法的语音基音周期估计
- 格式:doc
- 大小:664.00 KB
- 文档页数:8
语音信号的自相关基音周期检测语音信号是一种人类最基本的交流方式,它包含人声的频率、强度和时间三个方面的信息。
语音信号的自相关和基音周期是语音信号分析中的重要技术,对于语音信号分析、识别、合成等应用有着积极的作用。
一、语音信号的自相关语音信号的自相关是指语音信号的样本与样本之间的相关性。
在语音信号中,相邻的样本之间一般都具有相关性,该相关性可以通过计算信号的自相关函数获得。
自相关函数描述了语音信号在不同延迟情况下的相似程度,也就是说,自相关函数可以反映语音信号的周期特征和基音周期。
二、语音信号的基音周期检测语音信号的基音周期是指人语中相邻两个基音周期之间的时间长度。
基音周期检测是一项关键的语音信号分析技术,在音素识别、语音合成、语音编码等领域应用广泛。
基音周期检测方法主要有三种:自相关法、FFT法和LP法。
自相关法是指通过计算信号与自身在不同延迟下的相似度,判断语音信号的基音周期。
具体来说,自相关法首先将语音信号进行预加重和分帧处理,然后计算每一帧的自相关函数,最后采用模板匹配的方法找到最强的周期峰值,从而得到基音周期。
FFT法则是将分帧后的语音信号进行傅里叶变换,提取频谱信息,并通过在频域滑动一个窗口,检测周期性的能量最大值,确定基音周期数。
LP法是通过线性预测,将语音信号分解成具有不同频率的谐波分量,然后利用实验数据验证模型,得到基音周期。
总的来说,不同的基音周期检测方法有其各自的优缺点。
自相关法较为简单但在噪声环境下准确度不高,FFT法可以检测到非周期性的基音,但精度不如自相关法,LP法精度较高但计算复杂度较大。
作为一门复杂的反演问题,语音信号的自相关和基音周期检测一直是语音处理研究中的重要问题,目前的研究主要集中在解决语音信号分析和识别中的实际问题和应用,为提高语音合成、语音编码等方面的应用水平提供技术支持。
专业班级组别成员实验内容:编程求解出各自声音信号的基音周期。
1 程序代码(或者软件流程图等)(1)function zhouqi=jiyinzhouqi(filename)%帧长和帧位移是重要的参数,位移是帧长的0~1/2%短时自相关分析%filename语音文件*.wav%zhouqi基音周期,以毫秒为单位表示[signal,fs]=wavread(filename); %用于得到声音文件的数据和采样率shift=0.02; %每次移动20毫秒shift=round(fs*shift); %帧移n1=fix(fs*0.01)+1; %分析起点0.01ms,帧长20msn2=fix(fs*0.03)+1;shift_count=fix((length(signal)-n1)/shift);value =zeros(1,shift_count); %存放每次移位后的帧的基音周期for ii=1:shift_count %分析次数if n2<length(signal) %防止溢出data=signal(n1:n2); %加窗,提取一帧数据N=n2-n1+1; %每一帧的长度R=zeros(1,N); %创建一个一行N列的矩阵for k=1:N-1 %求自相关序列for jj=1:N-kR(k)=R(k)+data(jj)*data(jj+k); %矩阵用于储存每次自相关的结果; endendvalue(ii)=find_maxn(R); %调用基音周期分析函数,求最大值所对应的位置,即基音周期n1=n1+shift; %移动帧,计算下一帧的基音周期n2=n2+shift;endendfigure(1)stem(value); %画出基因周期走势图axis([0 length(value) 0 1000])aver=mean(value); %基音周期的平均值,未去除野点value=value(logical(abs(value-aver)<=aver/5));%找出偏移均值超出均值的1/5的基音周期,将其去除len= length(value); %去除大野点后剩余的基音点数for jj=1:3:len/3 %中值平滑,滑动窗口宽度3,精度为中值1/4(剔除野点)average=(value(jj)+value(jj+1)+value(jj+2))/3;for kk=1:3if abs((value(jj-1+kk))-average)>average/4value(jj-1+kk)=0; %将野点置零,同时数组长度减一endendendvalue=value(( value~=0)); %出去所有野点后的基音周期数组len= length(value); %去除野点以后的基音点数figure(2)stem(value);axis([0 length(value) 0 max(value)])zhouqi=1000*sum(value)/len/fs; %求平均的基音周期,单位是毫秒(2) function nmax=find_maxn(r) %寻找峰值最大的n值及基音周期%r,自相关序列%maxn,为峰值最大的nzer=find(r==0); %找第一个零点如果存在jiaocha=0; %找第一近零点ii=1;while (jiaocha<=0)if(r(ii)>0 && r(ii+1)<0 && (ii+1)<length(r))jiaocha=ii;endii=ii+1;if ii==length(r) %没有找到符合要求的点jiaocha=1;endendif length(zer)>0 %检查是否存在零点if zer(1)<jiaocha %存在,则和jiaocha比较大小,用于祛除前点的对基音周期的查找带来的影响jiaocha=zer(1);endendr(1:jiaocha)=0; %祛除影响maxn=max(r); %找最大值temp=find(r==maxn); %返回第一个最大值nmax=temp(1);(3) function zhouqi=get_frq_frame(filename)%帧长和帧位移是重要的参数,位移是帧长的0~1/2%短时自相关分析%filename语音文件*.wav%zhouqi基音周期,以毫秒为单位表示[signal,fs]=wavread(filename);%用于得到声音文件的数据和采样率shift=0.02; %每次移动20毫秒shift=round(fs*shift); %帧移n1=fix(fs*0.01)+1; %分析起点0.01ms,帧长20msn2=fix(fs*0.03)+1;shift_count=fix((length(signal)-n1)/shift);value = zeros(1,shift_count); %存放每次移位后的帧的基音周期zhouqi = zeros(1,shift_count); %存放每次移位后的帧的基音周期for ii=1:shift_count %分析次数if n2<length(signal) %防止溢出data=signal(n1:n2); %加窗,提取一帧数据N=n2-n1+1; %每一帧的长度R=zeros(1,N);for k=1:N-1 %求自相关序列for jj=1:N-kR(k)=R(k)+data(jj)*data(jj+k);endendvalue(ii)=find_maxn(R); %调用基音周期分析函数,求最大值所对应的位置,即基音周期n1=n1+shift; %移动帧,计算下一帧的基音周期n2=n2+shift;zhouqi(ii) = 8000/value(ii);endendfor ii=1:length(zhouqi)if zhouqi(ii)==0zhouqi(ii) = [];endendplot(zhouqi);2 程序使用说明(1) function zhouqi=jiyinzhouqi(filename)① 函数基音周期是计算所采样的声音的平均基音周期的函数,函数使用加窗计算自相关函数的办法,通过帧移得到不同位置加窗信号的相关性,然后用矩阵R储存相对应的n2-n1+1个自相关值。
华南理工大学《语音信号处理》实验报告实验名称:基音周期估计姓名:学号:班级:10级电信5班日期:2013年5 月15日1.实验目的本次试验的目的是通过matlab编程,验证课本中基音周期估计的方法,本实验采用的方法是自相关法。
2. 实验原理1、基音周期基音是发浊音时声带震动所引起的周期性,而基音周期是指声带震动频率的倒数。
基音周期是语音信号的重要的参数之一,它描述语音激励源的一个重要特征,基音周期信息在多个领域有着广泛的应用,如语音识别、说话人识别、语音分析与综合以及低码率语音编码,发音系统疾病诊断、听觉残障者的语音指导等。
因为汉语是一种有调语言,基音的变化模式称为声调,它携带着非常重要的具有辨意作用的信息,有区别意义的功能,所以,基音的提取和估计对汉语更是一个十分重要的问题。
由于人的声道的易变性及其声道持征的因人而异,而基音周期的范围又很宽,而同—个人在不同情态下发音的基音周期也不同,加之基音周期还受到单词发音音调的影响,因而基音周期的精确检测实际上是一件比较困难的事情。
基音提取的主要困难反映在:①声门激励信号并不是一个完全周期的序列,在语音的头、尾部并不具有声带振动那样的周期性,有些清音和浊音的过渡帧是很难准确地判断是周期性还是非周期性的。
②声道共振峰有时会严重影响激励信号的谐波结构,所以,从语音信号中直接取出仅和声带振动有关的激励信号的信息并不容易。
③语音信号本身是准周期性的(即音调是有变化的),而且其波形的峰值点或过零点受共振峰的结构、噪声等的影响。
④基音周期变化范围大,从老年男性的50Hz到儿童和女性的450Hz,接近三个倍频程,给基音检测带来了一定的困难。
由于这些困难,所以迄今为止尚未找到一个完善的方法可以对于各类人群(包括男、女、儿童及不向语种)、各类应用领域和各种环境条件情况下都能获得满意的检测结果。
尽管基音检测有许多困难,但因为它的重要性,基音的检测提取一直是一个研究的课题,为此提出了各种各样的基音检测算法,如自相关函数(ACF)法、峰值提取算法(PPA)、平均幅度差函数(AMDF)法、并行处理技术、倒谱法、SIFT、谱图法、小波法等等。
基于自相关函数法的语音基音周期的检测
方臻成
【期刊名称】《科学与财富》
【年(卷),期】2014(000)009
【摘要】语音的基音周期是指人说话时声带振动的周期,它是语音信号的一个重
要参数,广泛运用在语音识别、说话人识别、发音系统诊断、语言指导等多个领域。
因此,准确的提取语音信号的基音周期显得尤为重要。
本文针对基音周期检测,介绍了一种较为简单的方法---自相关函数法。
【总页数】1页(P203-203)
【作者】方臻成
【作者单位】华南理工大学电子与信息学院,广州市,510641
【正文语种】中文
【相关文献】
1.基于改进小波变换的语音基音周期检测 [J], 吴兴铨;周金治
2.一种基于线性预测与自相关函数法的语音基音周期检测新算法 [J], 柏静;韦岗
3.基于LPC的藏语语音基音周期的检测分析 [J], 马英;陈超;贾国庆
4.基于自相关函数的藏语语音基音周期检测 [J], 李积逊;余玲梅
5.基于倒谱分析法的藏语语音基音周期检测 [J], 李积逊;范武英
因版权原因,仅展示原文概要,查看原文内容请购买。
综合实验报告自相关法及其变种学院电子与信息学院专业信息与信号处理学生姓名学生学号提交日期2013年7月10日一、实验目标1.1 了解语音基音周期估计方法,掌握自相关法估计基音周期的原理,分析其变种。
二、实验基础知识2.1 基音与基音周期估计人在发音时,根据声带是否震动可以将语音信号分为清音跟浊音两种。
浊音又称有声语言,携带者语言中大部分的能量,浊音在时域上呈现出明显的周期性;而清音类似于白噪声,没有明显的周期性。
发浊音时,气流通过声门使声带产生张弛震荡式振动,产生准周期的激励脉冲串。
这种声带振动的频率称为基音频率,相应的周期就成为基音周期。
基音周期的估计称谓基音检测,基音检测的最终目的是为了找出和声带振动频率完全一致或尽可能相吻合的轨迹曲线。
基因周期作为语音信号处理中描述激励源的重要参数之一,在语音合成、语音压缩编码、语音识别和说话人确认等领域都有着广泛而重要的问题,尤其对汉语更是如此。
汉语是一种有调语言,而基因周期的变化称为声调,声调对于汉语语音的理解极为重要。
因为在汉语的相互交谈中,不但要凭借不同的元音、辅音来辨别这些字词的意义,还需要从不同的声调来区别它,也就是说声调具有辨义作用;另外,汉语中存在着多音字现象,同一个字的不同的语气或不同的词义下具有不同的声调。
因此准确可靠地进行基音检测对汉语语音信号的处理显得尤为重要。
2.2 基音周期估计的现有方法到目前为止,基音检测的方法大致上可以分为三类:1)时域估计法,直接由语音波形来估计基音周期,常见的有:自相关法、并行处理法、平均幅度差法、数据减少法等;2)变换法,它是一种将语音信号变换到频域或者时域来估计基音周期的方法,首先利用同态分析方法将声道的影响消除,得到属于激励部分的信息,然后求取基音周期,最常用的就是倒谱法,这种方法的缺点就是算法比较复杂,但是基音估计的效果却很好;3)混合法,先提取信号声道模型参数,然后利用它对信号进行滤波,得到音源序列,最后再利用自相关法或者平均幅度差法求得基因音周期。
语⾳基⾳周期估计基础先说下为什么要检测语⾳基⾳周期(1)基⾳决定了语⾳的⾳调。
汉语是⼀种有调的语⾳,同⼀句话,语调不同,意义差别⾮常⼤,准确的检测语⾳的基⾳周期,有利于“理解”话语中的意思。
(2)语⾳合成、声调控制等⾳效果制作的需要。
再说下什么是基⾳周期按照经典的语⾳激励模型,声带周期性的张开和闭合所需要的时间,就是指基⾳的周期(假如声带某次从开启到闭合的时间为4ms,那么,它的基⾳频率为250Hz)。
很显然,要准确的检测基⾳周期,需要尽可能的先去掉声道模型和辐射模型的⼲扰。
⼀般来说,男性的基⾳频率约为50Hz~250Hz,⼥性的基⾳频率约为:100Hz~500Hz,所以我们通常把基⾳频率的上限限制为500Hz,同时,⼜由于50Hz对应的是交流电的⼯频频率,难以去掉它的噪声⼲扰,所以这个频率检测时也不予考虑。
综上,基⾳频率的检测范围在60Hz~500Hz或者70Hz~500Hz⽐较好。
基⾳周期检测的困难(1)有些⾳的发⾳不具有声带的震动,通常这些⾳为过渡⾳。
(2)基波的分量往往不是最强的分量,容易把⼀些浊⾳的谐波当做基波(这是因为经过声道激励后,⼀些谐波分量变的⽐较强)(3)基⾳周期变化范围⼤,从⽼年男⼈的50Hz到⼉童和⼥性的500Hz,给检测带来了⼀定的困难。
基⾳周期检测预处理(1)端点检测(多媒体核⼼技术群中在2015-04-18⽇已经讲过了)(2)带通滤波(60Hz~500Hz),尽可能去掉声道模型和辐射模型的⼲扰(去掉50Hz是为了避免⼯频噪声的⼲扰)基⾳周期估计的⽅法(1)平均幅度差法 语⾳的浊⾳,通常会呈现出⼀定的周期性,这个周期性与基⾳的周期⼀致,通过计算平均幅度差,来找到这个周期,就可以得到基⾳的周期。
(2)相关法 同样的道理,通过计算语⾳信号的⾃相关特性,并寻找相应的周期性,也可以得到语⾳的基⾳周期(3)倒谱法 使⽤倒谱处理,使得脉冲激励与声道响应进⾏分离,再查找最⼤值,就可以得到语⾳的基⾳周期(4)线性预测法 这类⽅法是先利⽤线性预测法,得到预测系数,再⽤这些系数去重建信号,这样就弱化了声道响应的影响。
f0提取算法音频信号处理领域中的F0提取算法是一种用于分析和提取音频信号中基频(Fundamental Frequency,F0)的技术方法。
F0是音频中频率最低的基本音高成分,也是人耳感知音高的主要依据。
F0提取算法的应用涉及音乐信息检索、语音合成、说话人识别等多个领域。
本文将介绍几种常见的F0提取算法及其原理。
一、自相关法自相关法是最早被广泛应用于F0提取的算法之一。
其基本思想是计算音频信号与其自身的相关性,以确定F0的周期。
具体步骤如下:1. 对输入音频信号进行预处理,如去除直流分量、滤波或均衡化等。
2. 将预处理后的音频信号与其自身进行互相关运算,得到自相关函数。
3. 寻找自相关函数的峰值,即表示F0的周期。
自相关法简单易懂,计算速度快,但在存在噪声或谐波干扰的情况下,会出现F0提取不准确的问题。
二、基于频谱法的YIN算法YIN算法是一种基于频谱的F0提取算法,广泛应用于音乐信息检索和语音分析等领域。
该算法通过计算音频信号的差分谱,准确地估计F0的频率。
YIN算法的主要步骤如下:1. 对输入音频信号进行短时傅里叶变换(STFT),得到音频的频谱表示。
2. 在频谱中计算差分谱,即对频谱进行平滑操作。
3. 通过差分谱计算自相似度,找到F0候选值。
4. 对F0候选值进行累积平均和阈值处理,得到最终的F0估计值。
YIN算法具有较高的F0估计准确度,并且对噪声和谐波有较好的抑制能力。
然而,该算法的计算复杂度较高,在实时性要求较高的应用场景中可能存在问题。
三、基于互相关谱的SWIPE算法SWIPE算法(SWIPE,Spectral Method for Efficient Pitch Estimation)是一种高效的F0提取算法,可以在实时处理中实现准确的F0估计。
SWIPE算法的主要步骤如下:1. 对输入音频信号进行短时傅里叶变换(STFT),得到音频的频谱。
2. 计算互相关函数,通过频谱的并列相乘和累加操作得到。
F0及FH值计算公式F0(Fundamental Frequency)值是指声音波形中最基本的频率成分,它代表了说话者声音的基调高低。
FH(Formant Frequency)值是声音波形中特定频率谐振的峰值,它代表了声音的共振特征。
F0值通常用于声音分析中,对于语音、音乐以及其他语言表达形式都有重要意义。
它是通过测量波形的波峰和波谷的时间间隔来计算的。
具体的计算公式如下:1.预处理:首先需要对输入的声音波形进行预处理,包括采样率转换、平滑、滤波等。
2.提取基音周期:利用自相关函数方法或者模型拟合等技术,可以得到基音周期。
自相关函数方法是基于信号在时间上的相似性,通过计算波形与其自身延迟一段时间后的波形之间的相关性来得到基音周期。
3.计算基音频率:通过将基音周期的倒数转换为基音频率来计算F0值。
基音频率的单位通常是赫兹(Hz),代表每秒震荡的周期数。
FH值是用于描述声音共振情况的,它与声道的形状和共振特性有关。
常见的计算FH值的方法是通过使用倒谱分析(Cepstrum Analysis)、线性预测编码(Linear Predictive Coding)等技术。
具体的计算公式如下:1.预处理:与计算F0值类似,首先需要对输入的声音波形进行预处理,包括采样率转换、平滑、滤波等。
2.分析频谱:通过应用傅里叶变换或其他频谱分析技术,将声音信号从时域转换到频域。
3.计算倒谱:倒谱是指将频谱的对数幅度谱进行傅里叶逆变换,得到时域表示的倒谱信号。
4.求取倒谱峰值:在倒谱信号中,通过选择合适的峰值算法,找到表示共振峰的峰值点。
5.转换为频率:将峰值点的位置转换为对应的频率值,即得到FH值。
需要注意的是,F0值和FH值的计算都依赖于准确的声音采样和信号处理技术。
对于复杂的声音波形,这些计算可能需要更多的预处理和分析步骤,以获得准确的结果。
此外,不同的声音和语言可能对应不同的计算公式和参数设置,因此计算F0值和FH值时需要注意适配具体的声音数据和分析目标。
基音周期中两种算法常用的基音周期检测方法-自相关函数法、倒谱法、平均幅度差函数法都属于非基于事件基音检测方法,都先将语音信号分为长度一定的语音帧,然后对每一帧语音求平均基音周期,它们的优点是比较简单,主要应用于只需要平均基音周期作为参数的语音编解码,语音识别等。
自相关函数具有很好的抗噪性,但易受半频、倍频错误影响。
平均幅度差函数只需加法、减法和取绝对值等计算,算法简单;它们在无背景噪声情况下可以精确地提取的语音基音周期,但在语音环境较恶劣、信噪比较低时,检测的结果很差,难以让人满意。
2.1 基于短时自相关函数的方法能量有限的语音信号}{()s n 的短时自相关函数[10][11]定义为:10()[()()][()()]N n m R s n m w m s n m w m ττττ--==++++∑ (2.1)其中,τ为移位距离,()w m 是偶对称的窗函数。
短时自相关函数有以下重要性质:①如果}{()s n 是周期信号,周期是P ,则()R τ也是周期信号,且周期相同,即()()R R P ττ=+。
②当τ=0时,自相关函数具有最大值;当0,,2,3P P P τ=+++…处周期信号的自相关函数达到极大值。
③自相关函数是偶函数,即()()R R ττ=-。
短时自相关函数法基音检测的主要原理是利用短时自相关函数的第二条性质,通过比较原始信号和它移位后的信号之间的类似性来确定基音周期,如果移位距离等于基音周期,那么,两个信号具有最大类似性。
在实际采用短时自相关函数法进行基音检测时,使用一个窗函数,窗不动,语音信号移动,这是经典的短时自相关函数法。
窗口长度N 的选择至少要大于基音周期的两倍,N 越大,短时自相关函数波形的细节就越清楚,更有利于基音检测,但计算量较大,近年来由于高速数字信号处理器(DSP )的使用,从而使得这一算法简单有效,而不再采用结构复杂的快速傅里叶变换法、递归计算法等;N越小,误差越大,但计算量较小。
综合实验报告
自相关法及其变种
学院电子与信息学院专业信息与信号处理学生
学生学号
提交日期2013年7月10日
一、实验目标
1.1 了解语音基音周期估计方法,掌握自相关法估计基音周期的原理,分析其变种。
二、实验基础知识
2.1 基音与基音周期估计
人在发音时,根据声带是否震动可以将语音信号分为清音跟浊音两种。
浊音又称有声语言,携带者语言部分的能量,浊音在时域上呈现出明显的周期性;而清音类似于白噪声,没有明显的周期性。
发浊音时,气流通过声门使声带产生弛震荡式振动,产生准周期的激励脉冲串。
这种声带振动的频率称为基音频率,相应的周期就成为基音周期。
基音周期的估计称谓基音检测,基音检测的最终目的是为了找出和声带振动频率完全一致或尽可能相吻合的轨迹曲线。
基因周期作为语音信号处理中描述激励源的重要参数之一,在语音合成、语音压缩编码、语音识别和说话人确认等领域都有着广泛而重要的问题,尤其对汉语更是如此。
汉语是一种有调语言,而基因周期的变化称为声调,声调对于汉语语音的理解极为重要。
因为在汉语的相互交谈中,不但要凭借不同的元音、辅音来辨别这些字词的意义,还需要从不同的声调来区别它,也就是说声调具有辨义作用;另外,汉语中存在着多音字现象,同一个字的不同的语气或不同的词义下具有不同的声调。
因此准确可靠地进行基音检测对汉语语音信号的处理显得尤为重要。
2.2 基音周期估计的现有方法
到目前为止,基音检测的方法大致上可以分为三类:
1)时域估计法,直接由语音波形来估计基音周期,常见的有:自相关法、并行处理法、平均幅度差法、数据减少法等;
2)变换法,它是一种将语音信号变换到频域或者时域来估计基音周期的方法,首先利用同态分析方法将声道的影响消除,得到属于激励部分的信息,然后求取基音周期,最常用的就是倒谱法,这种方法的缺点就是算法比较复杂,但是基音估计的效果却很好;
3)混合法,先提取信号声道模型参数,然后利用它对信号进行滤波,得到音源序列,最后再利用自相关法或者平均幅度差法求得基因音周期。
三、实验原理
3.1 自相关函数
能量有限的语音信号x(n)的短时自相关函数定义为:
此公式表示一个信号和延迟m 点后该信号本身的相似性。
如果信号x(n)具有周期性,那么它的自相关函数也具有周期性,而且周期与信号x(n)的周期性相同。
自相关函数提供了一种获取周期信号周期的方法。
在周期信号周期的整数倍上,它的自相关函数可以达到最大()()()n n R m x n x n m =+∞=-∞
=+∑
值,因此可以不考虑起始时间,而从自相关函数的第一个最大值的位置估计出信号的基音周期,这使自相关函数成为信号基音周期估计的一种工具。
3.2 短时自相关函数法
语音信号是非稳态信号它的特征是随时间变化的,但在一个很短的时间段可以认为具有相对稳定的特征即 短时平稳性。
因此语音具有短时自相关性。
这个时间段约5ms-50ms 。
为其统计特性和频谱特性都是对短时段而言的。
这使得要对语音信号作数字处理必须先按短时段对语音信号分帧。
这样每一帧信号都具有短时平稳性从而进行短时相关分析。
能量有限的语音信号s(n)的短时自相关函数定义为:
一般要求一帧至少包含2个以上的周期。
而且相邻帧之间要有足够的重叠。
3.3 自相关方法变种
3.3.1 中心削波
由于语音信号与声道特性影响有关,有的情况下即使窗长已选得足够长,第一最大峰值点与基音仍不一致,这就是声道特性的共振峰特性造成的“干扰”。
实际上影响从自相关函数中正确提取基音周期的最主要的因素就是声道响应部分。
当基音的周期性和共振峰的周期性混叠在一起时,被检测出来的峰值就会偏离原来峰值的真实位置。
另外,某些浊音中,第一共振峰频率可能会等于或低于基音频率。
此时,如果其幅度很高,它就可能在自相关函数中产生一个峰值,而该峰值又可以同基音频率的峰值相比拟,从而给基音检测带来误差。
为了提高基音周期检测的可靠性,采用中心削波法对原始信号进行预处理。
其中削波电平 C L 一般取最大信号幅度的 60%~70%。
图1给出了中心削波处理后的结果。
中心削波后,再用自相关检测出基音频率,错判为倍频或分频的情况就可以大大减少了。
中心削波法实质上是对信号做非线性处理,它消除语音信号的低幅值部分,而保留高振幅的峰值,从而能有利于信号的基音周期估计。
10()[()()][()()]N n m R s n m w m s n m w m τ
τττ--==
++++∑
图1 中心削波处理
经过中心削波后的信号,削去了大部分与声道响应有关的波动,只保留了超过削波电平的部分。
对中心削波后的语音信号计算自相关函数,这样在基音周期位置呈现大而尖的峰值,而其余的次要峰值幅度都很小。
3.3.2 三电平削波
由自相关函数表达式可知,自相关需要大量的乘法运算,算法的运行效率低。
结合自相关函数法和中心削波法对信号做基音周期估计,并在不影响基音周期估计准确性的前提下,用两个信号的互相关序列代替自相关序列而避免了大量的乘法运算,有效地提高了算法的运行效率。
图2 显示的是经过三电平削波后的信号。
图2 经过三电平削波后的信号
显然x(n)只有-1,0,1 三种可能的取值。
自相关中的乘法运算都变成了加减运算,使得算法的效率得到大幅度的提高。
3.3.3 基于时域自相关平方函数
原始输入的语音信号经过三电平削波后的信号
第一峰值点的位置非常重要,峰值越尖锐则确定的位置就越准确。
求短时自相关函数的平方:
它们周期一致,但平方后在峰值处波形尖锐尤为明显。
图3示为某女性发元音[a]的波形/短时自相关函数及短时自相关平方函数波形.
图3 某女性发元音[a]的波形/短时自相关函数及短时自相关平方函数波形
3.4 短时能量分析
语音信号{x(n)}的某帧信号的短时平均能量En的定义为:
式中,w(n)为窗函数,N为窗长,h(n)= w2(n),则有
由上式表明,短时平均能量En相当于将语音信号的平方通过一个单位冲激响应为h(n)的线性滤波器的输出。
实验统计发现,语音中浊音段的短时平均能量远远大于清音段的短时
平均能量。
因此,短时平均能量的计算给出了区分清音段与浊音段的依据,即En(浊)>En(清)。
根据E由高到低的跳变可定出浊音变为清音语音的时刻,E由低向高的跳变可定出清音变为浊音语音的时刻,又由于只有浊音才有基音周期,清音的基音周期为零,这样就可判别出清、浊音。
图4 男声“确定”的语音波形及其局部短时能量
四、结果与分析
检测流程如下:我们先通过Matlab实现,然后再通过C++实现。
图5 基于自相关函数的基因周期检测流程
实验采用一段男声读“播放”两个字的声音wav文件,其为16KHz采样率,16bit量化。
整段语音长656.7ms,节点共10508个。
图6 男声读“播放”两个字的声音文件
4.1 滤波
将滤波器低端截止频率设为60Hz,这是因为可以抑制50Hz电源工频的干扰;高端截止频率设为900Hz既可除去大部分共振峰影响,又可以当基音最高频率为450Hz时仍能保留其一二次谐波。
图7 经过滤波器后的语音信号
4.2 不同帧长
窗口长度至少要大于基音周期的两倍。
一般,基频最低50Hz,故周期最长为20ms,再根据采样率确定帧长。
图8 截取不同帧长的语音信号
4.3 清浊音区分
这里我们通过计算短时能量来区分清浊音,结果如图9所示。
图9 清、浊音短时能量图
4.4 平滑
去除野点。
图10 平滑后的结果
五、总结
通过本次课程实验设计,我们从中学习了语音信号处理的一些基本知识,了解了基音周期的相关概念和现有的基因周期估计方法,重点掌握了自相关法估计基音周期的原理以及其变种。
尤其是在基因周期估计后,利用平滑处理的方法对实验结果中存在的“野点”进行处理,是在以后的学习中应特别注意的地方。
本次实验设计得益于贺老师课堂耐心细致的授课辅导和助理师兄何伟俊的悉心帮助以及邹晓艺同学的热心帮助,在此表示特别感!。