基于短时自相关函数法的基音周期检测
短时自相关函数法基音检测
成员
1、引言
人在发浊音时,气流通过声门使声带产生张弛振荡式振动,产生一股准周期脉冲气流,这一气流激励声道就产生浊音,又称有声语音,它携带着语音中的大部分能量。这种声带振动的频率称为基频,相应的周期就称为基音周期( Pitch) ,它由声带逐渐开启到面积最大(约占基音周期的50% )、逐渐关闭到完全闭合(约占基音周期的35% )、完全闭合(约占基音周期的15% )三部分组成。
xlabel('帧数(n)');ylabel('周期(ms)');title('各帧基音周期');
运行结果如下
图3
5、设计中遇到的问题与心得
(1)设计中遇到的问题:
由于每一帧做短时自相关时,Rm(k)开始的几个点的值比第一个周期的峰值还大,因此无法正常提取出第一个峰值对应的点。开始程序的运行结果如下:
图4
于是经过和同学讨论之后决定舍弃Rm开始几个值较大的点,于是运行结果就正常了
图5
(2)心得体验:
短时自相关函数法基音检测的主要原理是通过比较原始信号和它移位后的信号之间的类似性来确定基音周期,如果移位距离等于基音周期,那么两个信号具有最大类似性。基于自相关函数的算法是基音周期估计的常用方法,特别适用于噪声环境下的基音提取。自相关函数在基音周期处表现为峰值,相邻两个峰值之间的间隔即为一个基音周期。
但是短时自相关函数法也存在以下缺点:
倍频现象
通常情况下,基波分量往往不是最强的分量,丰富的谐波成分使语音信号的波形变得非常复杂,给基音检测带来了困难,经常发生基频估计结果为其实际基音频率的二次倍频或二次分频的情况。加之还有清浊混杂等情况,使基音检测成为一大难题。
如图5( a)是一帧语音信号,图4( b)是这帧语音信号的自相关函数,可以看出自相关函数在基音周期处表现为峰值,这些峰值点之间的间隔的平均值就是基音周期,如图6( b)所示可以看出自相关函数检测出的基音周期是原始信号基音周期的一半,这是由于谐波峰值点(箭头所示)的影响,这就是上述缺点中所说的倍频现象。
《语音信号处理》实验2-基音周期估计
华南理工大学《语音信号处理》实验报告实验名称:基音周期估计姓名:学号:班级:10级电信5班日期:2013年5 月15日1.实验目的本次试验的目的是通过matlab编程,验证课本中基音周期估计的方法,本实验采用的方法是自相关法。
2. 实验原理1、基音周期基音是发浊音时声带震动所引起的周期性,而基音周期是指声带震动频率的倒数。
基音周期是语音信号的重要的参数之一,它描述语音激励源的一个重要特征,基音周期信息在多个领域有着广泛的应用,如语音识别、说话人识别、语音分析与综合以及低码率语音编码,发音系统疾病诊断、听觉残障者的语音指导等。
因为汉语是一种有调语言,基音的变化模式称为声调,它携带着非常重要的具有辨意作用的信息,有区别意义的功能,所以,基音的提取和估计对汉语更是一个十分重要的问题。
由于人的声道的易变性及其声道持征的因人而异,而基音周期的范围又很宽,而同—个人在不同情态下发音的基音周期也不同,加之基音周期还受到单词发音音调的影响,因而基音周期的精确检测实际上是一件比较困难的事情。
基音提取的主要困难反映在:①声门激励信号并不是一个完全周期的序列,在语音的头、尾部并不具有声带振动那样的周期性,有些清音和浊音的过渡帧是很难准确地判断是周期性还是非周期性的。
②声道共振峰有时会严重影响激励信号的谐波结构,所以,从语音信号中直接取出仅和声带振动有关的激励信号的信息并不容易。
③语音信号本身是准周期性的(即音调是有变化的),而且其波形的峰值点或过零点受共振峰的结构、噪声等的影响。
④基音周期变化范围大,从老年男性的50Hz到儿童和女性的450Hz,接近三个倍频程,给基音检测带来了一定的困难。
由于这些困难,所以迄今为止尚未找到一个完善的方法可以对于各类人群(包括男、女、儿童及不向语种)、各类应用领域和各种环境条件情况下都能获得满意的检测结果。
尽管基音检测有许多困难,但因为它的重要性,基音的检测提取一直是一个研究的课题,为此提出了各种各样的基音检测算法,如自相关函数(ACF)法、峰值提取算法(PPA)、平均幅度差函数(AMDF)法、并行处理技术、倒谱法、SIFT、谱图法、小波法等等。
语音基音周期检测方法
相 关函数 ,提出一种语音基音周期检测方法 ,在 确保 运算量 较低 的前提下 ,获得准确结果 。使用平滑算法消除倍频 点、半频点和随机点产
生的误差 ,实现基音 曲线平滑 。
关健诃 :连续小波 ;多尺度分析 ;基音周期检测 ;自相关函数
M e h d f rV_ c t h Pe i d De e to t o o 0 ePic ro t c i n i
pthcres ohn . j uv mo tig c
[ yw r s o t u u vltmutsa ayi; i hpr eet n atcr lt nfnt n Ke o d ic n n o s i wa e ; l—c eal s pt ei d tc o ;uoor ai ci e i l n s c d o i e o u o
mu t— c l o tn ou v l tt r —i e n h i a f v c .Ba e n t e s o t t u c re a o u ci n a d t e a e a e ma n t d l s a e c n i u s wa e e o p e fl r g t e sgn l o n e i ti i s d o h r-i h me a t o r l t n f n t o i o n h v rg g u e i d fe e c un to , t o o o c i h p ro ee t n i r po e Th s me o n e i l o u a o x n e a d c n o t i e rg t if r n e f c i n a me d f rv i e p t e d d t c o s p o s d. i t d e dslt e c mp t t n e pe s n a b an t i h h c i i h t i h p t h p ro . m o h n l o t m se p o t d t e v e e r r fmu tp e fe u n y p i t h l e u n y p n d r d m i t a d r a i e i e i d S ot i g a g r h i x l i o r mo e t ro so li l r q e c o n , a ff q e c oi t c i e h r n a a o po n , n n e l z
基于ACF的基音检测算法
信号的处理中具有重要作用.
目前 常 用 的 基 音 频 率 检 测 方 法 大 致 分 为 3 类 , 即波形估 计法 、 关 处 理 法 和变 换 法 . 中波 相 其 形 估计 法实 现原 理简 单 , 是 往 往 会 引入 较 大 的误 但 差; 变换 法算 法较 为 复 杂 , 增 加 实 际运 算 的难 度 ; 会 相 关处 理法 算 法 实 现 简 单 、 测 精 度 高 , 此 成 为 检 因 常用 的基音 周 期 的 检 测 方 法 . 于 此 , 文 拟 采 用 鉴 本
表征 了浊 音激 励 的本 质 特 征 , 还包 含 了汉 语 音 节 的
收稿 日期 :0 1 0 2 1 — 6—1 4
种基音 检测 算法 .
1 相关处 理法的原理实现
由于 自相 关 函数 抗 噪性 能较 强 , 别 适 于 噪 声 特
作者简介 : 郭淑婷 ( 92 ) 女 , 18 一 , 河南省新 乡市人 , 州轻 工业学院助教 , 郑 硕士 , 主要研 究方向为信 号与信 息处理
第2 6卷 第 5期 21年 1 01 0月
郑 州 轻 工 业 学 院 学 报 (自 然 科 学 版 )
JU N L F H N Z O NV R IYO IH D S R N ta Si c ) O R A E G H UU IE S F G T N U T Y( a r c ne OZ T L I ul e
p th d tci n o o a te ctto pe c ina a e c mp ee fe t ey. ic ee t fs n n x iai n s e h sg lc n b o ltd efc i l o v Ke r s: t h dee to ACF; r — r c s i g; o tp o e sn y wo d pi t cin; c p e p o e sn p s— r c s i g
语音信号的自相关基音周期检测
(colfC m u r n fr ai ni e n , hn hiU ir yo l tcPw r S aga 2O9 , hn ) Sho o o pt dI o t nE gn r g Sa ga nv s e r oe, hn hi OOO C i ea n m o ei e  ̄ fE c i a
E ce c ft e a g r h i lo i o tn x e t o h u l y o e sg a r c s .P t h p r d i f i n y o lo t m sa s h i mp r t c p rt e q ai f h in lp e s i e i a e f t t o c o o e d l s u d i o ti e r u h t e s o — me a tc re a in f n t n,a d p l r y c rea in ft u l o n s b an d t o g h h r t u o o r lt u c i h h t i o o n o a t o r l t i o a d p a au si t n a e u e o r ie t e e c e c n t e p o e s o e a tc r eai n n e k v le et ma i r s d t as f in y i r c s ft u o o r lt . o h i h h o Ke r s a t c rea in;p t h p r d;p l r y c rea in y wo d : u o o l t o i eo c i o a t o l t i o
基音周期的估计称为基音周期检测, 基音周 期检测的最终 目的是得到与声音振动频率吻合较
基音检测技术及其在语音信号处理中的应用研究
基音检测技术及其在语音信号处理中的应用研究摘要:本文先对自相关函数法、平均幅度差函数法、倒谱法、小波变换法这四种经典的基音检测方法的原理进行分析;然后用MATLAB软件完成了基于短时自相关函数法、倒谱法的基音检测。
通过实验可知,这两种方法针对实验室环境下的一帧语音信号比较准确,但在噪声环境下不够理想。
为了克服这两种方法的不足,本文对它们均做了改进,对于短时自相关函数法增加了预处理,使得基音轨迹曲线更加明显。
在对基音检测的倒谱法进行分析时,提出了一种功率谱二次处理的二次谱基音检测方法,该方法克服了倒谱法基音检测的抗噪能力低的弱点,基音轨迹曲线估计的准确性也得到了改善。
关键词:基音检测;短时能量;自相关函数;倒谱函数;预处理;基音轨迹Abstract:Four typical pitch detection methods are analyzed firstly, i.e, autocorrelation function, average magnitude difference function, cepstrum, and wavelet transform. The pitch detection based on short time energy autocorrelation function and cepstrum functions are implemented with MATLAB. The experimental results show that both methods work well for the speech in the lab. But for the noised signal, the detection performance is not so good. In order to overcome these shortcomings,some improvements are presented in this article .For the short time autocorrelation, there introduce the pro-processing operations ,as a result ,the accuracy of the estimated pitch contour is improved. The cepstrum method of speech pitch detection is analyzed carefully,and also propose a secondary processing power spectrum of secondary spectrum pitch detection methods. It used the power spectrum reprocessing results of speech to extract the pitch contour. The presented method not only overcame the shortcomings of cepstrum method, but also improved the accuracy of the estimated pitch contour.Keywords:pitch detection;short time energy;autocorrelation function;cepstrum function;pro-processing;pitch contour前言基音是指发浊音时声带振动所引起的周期性,而声带振动频率的倒数就是基音周期。
基于自相关的语音基音周期检测方法研究
为信号 xn和 Y() () n的互相关函数 。如果 Y()x()则互相关 函 n = n, 数 变 成 了 自相 关 函数 :
R( Ⅱ m)
X() n m) nx(+
式 中 , 为 信 号 的延 迟 点 数 。 m 自相 关 函 数反 映 了信 号 xf 和 自身 n 1 作 了一 段 延 迟之 后 的 x( m) 似 程 度 。 n 的相 + 自相 关 函 数 具 有 以下 的 性 质 : 果 序 列 xn 具 有 周 期 N , 如 () 。 则 其 自相关 函数 也 是 同 周期 的周 期 函 数 。 : x 】 ( 即 若 ( =xn+N1 n n , 则 R =Rm + 。 ㈤ ( 清 音 信 号 没 有 周期 性 ,它 的 自相 关 函 数 也 没 有 周 期 , ㈤ R 会 随着 1 的增 大 迅 速 衰 减 。浊 音 信 号 具 有 准 周 期 性 . 的 自相 1 1 它 关 函数 R 具 有 与 xn 同 的周 期 。浊 音 信 号 的 自相 关 函数 在 ㈤ (1 相 基 音 周 期 的 整数 倍 位 置 上 出现 峰 值 .而 清 音 信 号 的 自相 关 函数 没 有 明显 的 峰值 。 自相 关法 基 音 检 测 就 是 利用 R m 的这 一 性 质 f) 对 语 音 信 号 进行 基 音 检 测 的 。 于 浊音 信 号 。 要检 测 到 N 的位 对 只 置 , 可 以估 计 语音 信 号 的基 音周 期 值 。 就
福
建
电
脑
2 0 年 第 1 期 08 1
基 于 自相 关 的语 音 基 音 周 期检 测 方 法研 究
基于短时自相关函数法的基音周期检测
ixb=vseg(i).begin;
ixe=vseg(i).end;
ixd=ixe-ixb+1;% 求取一段有话段的帧数
for k=1 : ixd % 对该段有话段数据处理
u=y(:,k+ixb-1); % 取来一帧数据
ru= xcorr(u, 'coeff'); % 计算归一化自相关函数
ru = ru(wlen:end);% 取延迟量为正值的部分
[tmax,tloc]=max(ru(lmin:lmax)); % 在基音频率范围内寻找最大值
period(k+ixb-1)=lmin+tloc-1; % 给出对应最大值的延迟量
end
end
4.2.4实验结果
图4端点检测的语音信号
图5有话段的基音周期
图2图中实线代表语音起始点,虚线代表语音终点
2.2.5结果分析
基音周期是语音信号的重要参数之一,它描述了语音激励源的一个重要特征。语音的头、尾部并不能具有声带振动那样的周期性,也就是检测不到相应的基音周期。如果要进行基音周期的计算,首要的必然是检测语音端点,将有话段从整段语音中分离出来,才能开始对语音的基音周期进行计算.
Esum(i) = sum(Sp.*Sp); % 计算能量值 (能量放入Esum里)
prob = Sp/(sum(Sp));% 计算概率
H(i) = -sum(prob.*log(prob+eps)); % 求谱熵值(eps表示很小的数,避免为零)(谱熵放入H里)
end
hindex=find(H<0.1);%(find返回非零元素,hindex放入,即谱熵值小于0.1的索引)
一种改进的基音周期检测方法
一种改进的基音周期检测方法曾树华【摘要】提出了一种改进的基于自相关算法的基音周期检测方法,首先对信号进行了预滤波.消除二次谐波的影响.计算自相关系数时使用的是削波后的数据,大大降低了计算复杂度,野波平滑在保持周期的阶跃性的同时去除野波.【期刊名称】《电声技术》【年(卷),期】2011(035)004【总页数】3页(P53-55)【关键词】基音周期检测;自相关;滤波;削波;平滑【作者】曾树华【作者单位】湖南铁路科技职业技术学院,湖南,株洲,412003【正文语种】中文【中图分类】TN912语音是人类相互交流和通信最方便快捷的手段。
人类发音时,声门从一次开启到下一次开启就形成一个基音周期,而基音频率是基音周期的倒数。
基音频率是一个重要的参数,因此准确检测基音频率具有十分重要的意义。
由于基音周期[1]只具有准周期性,所以只能采用短时平均方法估计该周期,这个过程也称为基音检测(Pitch Detection)。
基音检测的方法主要有短时自相关函数法、平均幅度差函数法、倒谱解卷积法、Hilbet—Huang变换法、小波变换[2]等。
笔者提出一种改进的基于自相关函数法的基音检测方法,并在Matlab上进行仿真,实验证明,准确性得到提高。
基音周期检测分为取样、分帧、短时能量分析、自相关计算和基音周期估计,如图1所示。
取样的点数一般为帧长的整数倍,而帧长一般选15~30 ms(8 000 Hz,120~240点),短时能量分析的目的是进行清浊判别,再通过计算信号的自相关来判断信号x(n)的周期。
取样与分帧:取样是指从语音信号中取出一部分进行分析,一般取样点为帧长的整数倍。
基音的准周期性要求对语音信号采用短时分析,需要把语音信号分成一段一段来进行分析,这就是分帧。
对信号进行加窗来分帧,窗长度一般应大于基音周期的两倍,所以一般选择120~240点(8 000 Hz,15~30 ms)。
短时能量分析:语音信号的大部分能量集中在浊音段,所以浊音段的短时能量会远远大于清音段,据此可以判断清浊音的起止时间。
用修正的短时自相关检测语音的基音周期
用修正的短时自相关检测语音的基音周期一、实验目的1.熟悉前一个实验程序以及中心削波的意义。
.2.用Matlab实现用修正的短时自相关检测语音的基音周期。
3.分析修正的短时自相关在基音周期检测中的应用。
4.能够对程序进行重新编制。
二、实验原理如果x(n) 是一个周期为P 的信号,则其自相关函数也是周期为P的信号,且在信号周期的整数倍处,自相关函数取最大值。
语音的浊音信号具有准周期性,其自相关函数在基音周期的整数倍处取最大值。
计算两相邻最大峰值间的距离,就可以估计出基音周期。
观察浊音信号的自相关函数图,其中真正反映基音周期的只有少数几个峰,而其余大多数峰都是由于声道的共振特性引起的。
因此为了突出反映基音周期的信息,同时压缩其他无关信息,减小运算量,有必要对语音信号进行适当预处理后再进行自相关计算以获得基音周期。
第一种方法是先对语音信号进行低通滤波,再进行自相关计算,因为语音信号包括十分丰富的谐波分量,基音频率的范围分布宰0~500Hz左右,即使女高音升c调最高也不会超过1Kz,所以采用1Kz的低通滤波器先对语音信号进行滤波,保留基音频率,再用2Kz采样频率进行采样;最后用2~20ms的滞后时间计算短时自相关,帧长取10~20ms,即可估计出基音周期。
且中心削波函数如式(3-1)取本帧语音幅度的60%~70%。
将削波后的序列f(x) 用短时自相关函一般削波电平XL数估计基音周期,在基音周期位置的峰值更加尖锐,可以有效减少倍频或半频错误。
三、实验要求1.实验前自己用Cool Edit 音频编辑软件录制浊音部分,并把它保存为.txt文件。
2.分别取长度N=160和N’=N+K的矩形窗函数作用于语音信号上,首先对其进行中心削波,比较削波前和削波后语音信号波形,并使得削波后的信号进行乘积并求和,计算延迟为0<K<160时的相关值,并且用得到的相关值来检测语音信号的基音周期,用MA TLAB画出图形。
基于短时自相关函数的基因周期检测讲解PPT
举例来说,输入:Y[1-10]:1,2,3,4,5,6,7,8,9,10. 取区间2k = 4,所 以k=2;执行中值滤波 K=中值滤波(Y)由x-k+1>=1,所以当k=2时, x>=2滤波时:K[1]=Y[1]K[2]=(Y[1]、Y[2]、Y[3]、Y[4])的中间值,即 为2或3
什么是共振峰
• 共振峰是指在声音的频谱中能量相对集中的一 些区域,共振峰不但是音质的决定因素,而且 反映了声道(共振腔)的物理特征。 • 声音在经过共振腔时,受到腔体的滤波作用, 使得频域中不同频率的能量重新分配,一部分 因为共振腔的共振作用得到强化,另一部分则 受到衰减。由于能量分布不均匀,强的部分犹 如山峰一般,故而称之为共振峰。
一 算法原理 设语音信号的时间序列是x(n),它的自相关函数定 义为: R(k)=Σ x(n)x(n+k), K是时间的延迟量。 短时自相关函数有以下重要性质 ① 如果信号x(n))具有周期性,周期是P,那么它的自相 关函数R(k) 也具有周期性,而且周期与信号x(n)的周期 性相同。 ② 当k=0时,短时自相关函数具有最大值,即在延迟量 为0,±P,±2P,,,时,周期信号的自相关函数也达 到最大值。 ③ 短时自相关函数是偶函数,即R(k) =R(-k)。
• 目前,基音检测的算法有很多种,常用的 检测算法有自相关法、平均幅度差函数法、 并行处理法、倒谱法、简化逆的是短时 自相关函数法,包括四个模块。 • 第一个模块为基音的端点检测,主要为了 区分浊音和清音。第二个模块为基音检测 中的带通滤波器,主要为了减少共振峰的 干扰。第三个模块为短时自相关函数法做 基音检测,主要为了计算出基音周期。第 四个模块为平滑处理,主要为了消除偏离 值点。
基音周期的检测(端点检测)
基音周期的一种检测方法
第 6卷
第1 7期
20 0 6年 9月
科
学
技
术
与
工
程
Vo . No 1 S p 0 6 16 .7 e .2 0
17 —85 2 0 )72 7 -4 6 111 (0 6 1 -7 40
S in eT c n lg n n ie r g ce c e h o o y a d E g n ei n
部分。对中心削波后 的语音信 号计算 自相关 函数 ,
图 4 三电平削波 函数
这样在基音周期位置呈 现大 而尖的峰值 , 而其余 的
L【 ’ J
/ / /
/ C—
图 1 中心削波 函数 图 5 原始输 入的语音信 号
维普资讯
+
3 中心 削波法
中心削波法实质上是对信号做非线性处理 , 它
图 2 原始输入后 的语言信号
消除语音 信号 的低幅值 部分 , 保 留高 振幅 的峰 而 值, 从而能有利于信号的基音周期估计 。中心削波
函数如图 1 所示 , 工作过Leabharlann 见图 2 图 3 、 。它的数学
冒
时间
厦
y凡 c =c 凡 c =
形 图像 。E m i le i 13 cm - al l ma @ 6 .o :j l
( |) ∑ ( ) m+} m+} = m ( |。 i ) i )
维普资讯
1 7期
刘丽娟 , : 音周 期的一种检测方法 等 基
式中, 表示窗函数是从第 几点开始加入 。 凡 无论是对 随机 的语音 信号还 是对离散 的信 号
进行处理 , 只要是使用 自相关 函数对信 号进行周期
基于小波变换和自相关函数的基音频率检测算法.
基于小波变换和自相关函数的基音频率检测算法0 引言基音周期(Pitch)是指发浊音时声带振动所引起的周期运动的时间间隔,而基音频率是基音周期的倒数。
由于基音周期只具有准周期性,所有只能采用短时平均方法估计该周期,这个过程也称为基音检测(Pitch De—tection)。
在对说话人确认和辨认研究中,基音频率是一个重要的参数,因此准确检测基音频率有着十分重要的意义。
到目前为止,基音检测的方法主要有短时自相关函数法、平均幅度差函数法、倒谱解卷积法、Hil—be;t—Huang变换法等。
但尚未找到一个完善的可以适用于不同语音状况和环境的基音检测算法。
近几年,小波分析理论发展迅速。
它已经被广泛地应用到信号处理中。
这里利用小波变换的滤波特性对信号进行预处理,然后利用自相关函数法检测语音的基音频率,该方法利用小波滤波特性有效剔除了高频共振峰和噪音的影响,估计基音频率准确性高,稳定性好,运算速度较快。
实验结果表明,此方法是一种有效的基音频率检测算法。
1 小波变换及其滤波特征在多分辨分析中,塔式正交分解L。
(R)空间:对ν f∈L(R),设f在Vj上的投影系数为Cj,k,在wj上的投影系数为Dj,k(j=J,J一1,…,一J),于是,f有以下分解式:在式(2)中,第一和式在小波空间中,它表示信号的细节部分(即高频部分),Dj,k就是对应于小波函数φj,k的小波系数;第二和式在尺度空间中(即低频部分),它反映了信号的本征部分,C-j,k就是对应于尺度函数φ-j,k的尺度系数。
这里语音信号使用的采样频率是11 025 Hz,因此原始语音信号频带为0~5 512.5 Hz,如图1所示,原始语音信号s2d0f占据频带为0~5 512.5 Hz,经小波滤波器组滤波后,Sd23f占据频带0~689 Hz,S争f就是需要的低频信号,因为语音基音频率变化范围从老年男性的50 Hz到儿童和女性的450 Hz,所以这部分的信号将用于估计语音的基音频率。
基于自相关函数的基音检测 代码
基于自相关函数的基音检测代码基音检测是语音信号处理中的一个关键任务,它涉及到声音的频率和时间特性。
在语音信号中,基音通常被定义为频率最低的周期性模式,其表现为声音的基础音调高低。
基于自相关函数的基音检测是一种常用的方法,通过计算语音信号的自相关函数,可以确定基音周期。
具体地,自相关函数是将原始信号延迟一定时间后和自身进行乘积和的结果。
直观地理解,延迟越长,两个信号重叠的区域就越少,乘积和也就越小,在周期性信号中,当延迟达到一个周期时,两个信号完全重叠,此时自相关函数取得最大值。
使用自相关函数进行基音检测的代码实现具有如下的步骤:1. 读取音频数据使用语音信号的处理工具库,例如MATLAB或Python,读取音频数据以进行后续的基音检测。
在读取音频数据时,需要注意采样率、位深度和声道数等参数,确保正确识别音频文件。
2. 信号预处理在自相关函数计算前,需要对信号进行预处理,以减少干扰和噪声的影响。
具体预处理方式包括高通滤波和去噪等。
3. 自相关函数计算使用公式计算自相关函数。
$R[m] = \sum_{n=1}^{N - m} x[n]x[n+m]$其中,$x[n]$是原始语音信号的采样值,$m$表示延迟时间,$N$是语音信号的采样时间。
$R[m]$则表示与原始信号的延迟时间之间的自相关值。
4. 基音周期确定基于自相关函数的基音周期确定方式是寻找自相关函数的极大值点。
因为自相关函数在周期性信号中达到最大值,因此基音周期应与最大值点的位置相对应。
具体算法如下:a. 找到自相关函数的第一个极大值点,该点被认为是周期性信号的第一个峰值。
b. 找到第一个峰值右侧的最小值,该点被认为是基音周期的一半。
c. 根据基音周期的一半,在左侧寻找一个最大值,作为基音周期。
d. 根据基音周期从长至短逐步寻找其他符合条件的峰值,确定基音的位置。
5. 基音频率计算基音频率是基音周期的倒数,通过求解频率,可以计算出基音的音高。
语音信号的自相关基音周期检测
学
院
学
报
2011 年
( 2 ) 取样模块 从频率为 8 000 Hz 的语音信 号中截取 Length( 样点数 ) 长的个样点值, 一般取 样点数设计成帧长度的整数倍; ( 3 ) 分帧模块 主要将语音去样点分割为若 干个语音帧, 语音信号属于短时平稳信号, 一般认 为在 10 ~ 30 ms 内语音特性基本上是不变的, 或 者变化缓慢, 因此可从中截取一段进行频谱分析 , 在范例中取一帧信号的长度为 30 ms, 即每帧为 240 点; ( 4 ) 短时能量分析 对分割好的语音帧信号 进行清浊音的判断, 知道浊音变清音的时刻, 提取 浊音段; ( 5 ) 自相关分析 计算浊音段信号的自相关 函数, 根据自相关函数的周期性计算语音信号的 基音周期.
本文利用信号的自相关运算实现了两个语音 信号的基音周期检测. 在检测过程中采用极性相 关和峰值估计法, 一方面可降低相关计算中乘法 的计算量, 另一方面也降低了进行自相关运算的 点数, 从而提高了基因周期检测的效率 . 这种极性
( 编辑
吴寿林)
檿檿檿檿檿檿檿檿檿檿檿檿檿檿檿檿檿檿檿檿檿檿檿檿檿檿檿檿檿檿檿檿檿檿檿檿檿檿檿檿檿檿檿檿 . [2001 - 12 - 12] . http: / / proach for Webbased CRM [J / OL] ( 上接第 296 页) 函数截取结果.
基音周期的估计称为基音周期检测, 基音周 期检测的最终目的是得到与声音振动频率吻合较 好的基音周期变化轨迹曲线. 在语音信号的处理 中只有准确捕获语音信号参数, 才能高效地识别 语音. 而在这些语音信号参数中, 基音周期提取的 精确性和效率直接影响到合成语音能否真实快速 地再现原始语音信号. 本文在基音周期检测一般 方法的基础上, 对自相关运算过程加以修改, 并给 出使用该种方法对两段语音信号进行基音周期检 测的结果.
两种基音周期检测方法
基音周期中两种算法常用的基音周期检测方法-自相关函数法、倒谱法、平均幅度差函数法都属于非基于事件基音检测方法,都先将语音信号分为长度一定的语音帧,然后对每一帧语音求平均基音周期,它们的优点是比较简单,主要应用于只需要平均基音周期作为参数的语音编解码,语音识别等。
自相关函数具有很好的抗噪性,但易受半频、倍频错误影响。
平均幅度差函数只需加法、减法和取绝对值等计算,算法简单;它们在无背景噪声情况下可以精确地提取的语音基音周期,但在语音环境较恶劣、信噪比较低时,检测的结果很差,难以让人满意。
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越小,误差越大,但计算量较小。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
项目总结报告—基音周期的检测1.项目整体框架1.1目标了解语音基音周期估计方法,掌握自相关法估计基音周期的原理。
1.2主要容本次基音周期的估算,我们选用的是短时自相关函数法,包括四个模块。
第一个模块为基音的端点检测,主要为了区分浊音和清音。
第二个模块为基音检测中的带通滤波器,主要为了减少共振峰的干扰。
第三个模块为短时自相关函数法做基音检测,主要为了计算出基音周期。
第四个模块为平滑处理,主要为了消除偏离值点。
2.模块一(端点检测)2.1主要负责工作利用能熵比法进行语音端点检测,区分语音帧的起点以与终点。
2.2具体实现方法2.2.1实验步骤1)取一段语音“tone4.wav”,该语音容是“妈妈,好吗,上马,骂人”,语音长度为3.5秒,采样率Fs=8000. 进行简单的去除直流分量,然后幅值归一化,时域波形如图1所示。
2)设置好分帧参数,帧长wlen=320,帧移inc=80,调用函数y=enframe(x,wlen,inc)';对语音信号x分帧处理。
最后帧数Fn=337。
3)设置端点检测门限值T1=0.05,使用能熵比法进行端点检测。
对分帧后的语音y 每一帧进行FFT运算,然后计算每一帧的能熵比值。
从而计算出语音y中的语音端点。
结果如图2所示。
2.2.2能熵比法设语音信号时域波形为,加窗分帧处理后得到的第i帧语音信号为,则FFT后表示为,其中下标i表示为第i帧,而k表示为第k条谱线。
该语音帧在频域中的短时能量为式中,N为FFT的长度,只去正频率部分。
而对于某一谱线k的能量谱为,则每个频率分量的归一化谱概率密度函数定义为该语音帧的短时谱熵定义为其中,只取正频率部分的谱熵,对应的能熵比表示为2.2.3代码编写在主程序中,执行的是[voiceseg,vosl,SF,Ef]=pitch_vad1(y,fn,T1);而调用了以下函数function [voiceseg,vosl,SF,Ef]=pitch_vad1(y,fn,T1,miniL)if nargin<4, miniL=10; endif size(y,2)~=fn, y=y'; end % 把y转换为每列数据表示一帧语音信号wlen=size(y,1); % 取得帧长for i=1:fnSp = abs(fft(y(:,i))); % FFT取幅值(:表示所有y(:,1)表示第一列)Sp = Sp(1:wlen/2+1); % 只取正频率部分Esum(i) = sum(Sp.*Sp); % 计算能量值(能量放入Esum 里)prob = Sp/(sum(Sp)); % 计算概率H(i) = -sum(prob.*log(prob+eps)); % 求谱熵值(eps表示很小的数,避免为零)(谱熵放入H里)endhindex=find(H<0.1);%(find返回非零元素,hindex放入,即谱熵值小于0.1的索引)H(hindex)=max(H);%(除去元音)Ef=sqrt(1 + abs(Esum./H)); % 计算能熵比(将每一帧的能熵比放入Ef里)Ef=Ef/max(Ef); % 归一化zindex=find(Ef>=T1); % 寻找Ef于T1的部分zseg=findSegment(zindex); % 给出端点检测各段的信息zsl=length(zseg); % 给出段数j=0;SF=zeros(1,fn);for k=1 : zsl % 在大于T1中剔除小于miniL 的部分if zseg(k).duration>=miniLj=j+1;in1=zseg(k).begin;in2=zseg(k).end;voiceseg(j).begin=in1;voiceseg(j).end=in2;voiceseg(j).duration=zseg(k).duration;SF(in1:in2)=1; % 设置SF(有话段的SF帧为1)endendvosl=length(voiceseg); % 有话段的段数2.2.4实验结果图1 “妈妈,好吗,上马,骂人”语音的时域波形图2 图中实线代表语音起始点,虚线代表语音终点2.2.5结果分析基音周期是语音信号的重要参数之一,它描述了语音激励源的一个重要特征。
语音的头、尾部并不能具有声带振动那样的周期性,也就是检测不到相应的基音周期。
如果要进行基音周期的计算,首要的必然是检测语音端点,将有话段从整段语音中分离出来,才能开始对语音的基音周期进行计算.利用能熵比法检测语音端点后,该语音段可分为四段,每段的起点以与终点如图二所示.2.3总结语音的预处理是非常关键的一环,做好这个实验的关键在于理解matlab语句的作用,录入语音信号,设定好参数,进行分帧处理,并通过能熵值的大小标比较,确定好语音信号的端点。
通过这次的检测,我了解了Matlab函数库非常的多,理解起来需要查阅很多公式以与资料,非常的耗时。
做实验务必讲究认真专心,一步一个脚印的去做好每一个环节就可以了,与队友的配合以与沟通也是重要的一环,与时了解队友的情况,做好衔接。
3.模块二(基音检测中的带通滤波器)3.1主要负责工作用带通滤波器减少共振峰的干扰。
3.2具体实现方法算法原理在使用相关法和AMDF法的基音检测之前常用到低通滤波器和带通滤波器,其主要目的是减少共振峰的干扰。
在文献中作者选用了500Hz作为滤波器的上限频率,并指出选择截止频率高不利于减少噪声和共振峰的影响。
所以在本书的基音检测中的预滤波器选择的带宽为60~500Hz,高频截止频率选择500Hz,是因为基频区间的高端就在这个区域中,低频截止频率选择60Hz是为了减少工频和低频噪声的干扰。
我们选用IIR滤波器中的椭圆滤波器,因为IIR滤波器的运算量比FIR少,当然IIR滤波器会带来延迟,也就是相位的变化,但语音信号是对相位不敏感的信号;又选用椭圆滤波器,因为它在经典滤波器设计中相同过渡带和带宽条件下,需要的阶数比较小。
在阶数相同的条件下,椭圆滤波器相比于其他类型的滤波器,能获得更窄的过渡带宽和较小的阻带波动, 就这点而言, 椭圆滤波器是最优的。
滤波器的要求为采样频率8000Hz,通带是60~500Hz,通带波纹为1dB,阻带分别为30Hz和2000Hz,阻带衰减为40dB。
3.2.2代码编写%% pr8_1_1clear all; clc; close all;fs=8000; fs2=fs/2; % 采样频率Wp=[60 500]/fs2; % 滤波器通带Ws=[20 2000]/fs2; % 滤波器阻带Rp=1; Rs=40; % 通带的波纹和阻带的衰减[n,Wn]=ellipord(Wp,Ws,Rp,Rs); % 计算滤波器的阶数[b,a]=ellip(n,Rp,Rs,Wn); % 计算滤波器的系数fprintf('b=%5.6f %5.6f %5.6f %5.6f %5.6f %5.6f %5.6f\n',b)fprintf('a=%5.6f %5.6f %5.6f %5.6f %5.6f %5.6f %5.6f\n',a)[db, mag, pha, grd,w]=freqz_m(b,a); % 求取频率响应曲线plot(w/pi*fs/2,db,'k'); % 作图grid; ylim([-90 10]);xlabel('频率/Hz'); ylabel('幅值/dB');title('椭圆6阶带通滤波器频率响应曲线');实验结果由程序计算出滤波器系数为:b=0.012280 -0.039508 0.042177 0.000000 -0.042177 0.039508 -0.012280a=1.000000 -5.527146 12.854342 -16.110307 11.479789 -4.4101790.713507实验结果图:图3 滤波前和后的语音信号结果分析带通滤波器使原始信号变得更加平整,滤去了杂音,为基音检测减少干扰,使检测更加顺利进行。
3.3总结通过这次课程实践,我深刻体会到自己在课程理论方面的不足,MATLAB的应用也相当生疏。
在设计过程中,看不懂的东西很多,但是学会了通过上网搜查资料和自主从书本寻找知识。
实践中遇到许多问题,但是和同学分工合作与讨论让我学会了很多平常学不到的知识。
这次实践让我明白知识就像大海一样宽广,我们要像海绵吸水一样吸取有用的知识。
4.模块三(短时自相关函数法做基音检测)4.1主要负责工作在前面两个步骤之后用自相关函数法去实现基音周期的检测4.2具体实现方法4.2.1算法设语音信号的时间序列x(n),它的自相关函数定义为:R(k)=Σx(n)x(n-k),K是时间的延迟量。
短时自相关函数有以下重要性质:①如果信号x(n))具有周期性,周期是P,那么它的自相关函数R(k) 也具有周期性,而且周期与信号x(n)的周期性相同。
②当k=0时,短时自相关函数具有最大值,即在延迟量为0,±P,±2P,,,时,周期信号的自相关函数也达到最大值。
③短时自相关函数是偶函数,即R(k) =R(-k)。
短时自相关函数基因检测的主要原理大都是利用它的这些性质,通过比较原始信号和它的延迟后的信号之间的类似性质来确定基音周期。
如果延迟量等于基音周期,那么两个信号具有最大类似性,或是直接找出短时自相关函数的两个最大值间的距离,即为基音周期的初估值。
在用短时自相关函数检测基音是,常用归一化的短时自相关函数,表达式为 r(k)= R(k)/ R(0)以上性质②中已指出,k=0,R(0)为最大值。
所以r(k)的模值永远小于或等于1。
已知基音频率围为60Hz~500Hz之间,采样率为fs时,则基音周期(样点值)围在fs/500~fs/60之间,然后在这个围之间寻找归一化相关函数的最大值,对应的延迟量就是基音周期。
4.2.2代码编写步骤①根据前面步骤所得分帧后的语音数组,对它进行处理,把它转换为每一列数据表示一阵语音信号,行数为总的帧长。
②对每一帧语音信号的基音周期进行初始化,让其为零保证清音段无基音周期。
③利用前面端点检测后所得的有话段和有话段段数,对每一段的有话段的每一帧数据计算归一化自相关函数。
④最后对每一帧所得的归一化自相关函数取正延迟量的部分,然后在基音频率围得最大值,从而可得最大值对应的样点数,利用函数循环计算,最后可以得出每段有话段每一帧的基音周期。
代码编写用短时自相关函数法的程序:function period=ACF_corr(y,fn,vseg,vsl,lmax,lmin)pn=size(y,2);if pn~=fn, y=y'; end % 把y转换为每列数据表示一帧语音信号wlen=size(y,1); % 取得帧长period=zeros(1,fn); % 初始化for i=1 : vsl % 只对有话段数据处理ixb=vseg(i).begin;ixe=vseg(i).end;ixd=ixe-ixb+1; % 求取一段有话段的帧数for k=1 : ixd % 对该段有话段数据处理u=y(:,k+ixb-1); % 取来一帧数据ru= xcorr(u, 'coeff'); % 计算归一化自相关函数ru = ru(wlen:end); % 取延迟量为正值的部分[tmax,tloc]=max(ru(lmin:lmax)); % 在基音频率围寻找最大值period(k+ixb-1)=lmin+tloc-1; % 给出对应最大值的延迟量endend实验结果图4 端点检测的语音信号图5 有话段的基音周期结果分析在端点检测和滤波后,经过短时自相关函数法处理后,由上面的实验结果图可看出基音周期有很多的偏离点即野点,需要进行平滑处理,也可以看出基音周期大约为40个样点数,即基音周期为40/fs,采样率为8000Hz,得周期为0.005s,基音频率为200Hz.4.3总结通过这次设计,我深刻体会到在信号处理方面我的严重不足,MATLAB的应用也相当生疏。