PSOLA(Pitch Synchronous Overlap Add)算法
语音合成:基于波形合成(波形编码合成、波形编辑合成),基于参数合成,基于规则合成
PSOLA算法在规则指导下,对波形进行编辑。
基音同步叠加法最初是在20世纪80年代由F.Charpentier和E.Moulines等提出,是用于语音编辑合成语音技术中对合成语音的韵律进行修改的一种算法。基音同步叠加技术的实现可分为三种方式,分别为时域基音同步叠加TD-PSOLA、频域基音同步叠加FD-PSOLA和线性预测基音同步叠加LP-PSOLA。与其他语音合成方法相比,基音同步叠加具有计算简单、合成语音清晰、自然度高等显著优点。
主要介绍TD——PSOLA,主要通过以下三个步骤实现:
1)基音脉冲标记: 是指能够准确表征语音信号浊音段各基音周期起始位置的一系列位置点,是语音短时信号的截取、叠加、以及时间长度选取的基础。由于自然语音的浊音信号有基音周期,而清音信号为白噪声,为在计算和合成过程中保持算法的一致性,可设清音信号的基音周期为某一常数。为获得相应的短时语音信号,在计算过程中,常将同步标记为中心原始语音信号与窗函数相乘。其中,常用的窗函数主要包括两倍基音周期长度的准汉宁窗(Hanning)或汉明窗(Hamming),帧移为相邻短时语音信号的50%,即一个窗长。
基音脉冲标注,目前已有很多算法,常用的是动态规划方法,对一个个浊音段做整体处理。假设已知语音基音周期,则可以利用该基音周期在浊音部分寻找基音脉冲标注侯选位置,再通过动态规划从候选位置矩阵中求取最佳路径,导出基音脉冲标注的位置,具体步骤:
- 在时域波形上,找出第一个浊音段的最大峰值,该最大峰值位置t0,必然是一个基音脉冲标注点。
- 取出该浊音段最大峰值对应的基音周期T0。
- 下一点开始,以t0为中心,左右两边区间 [ t0-1.5T0, t0-0.5T0 ]和 [ t0+1.5T0, t0+0.5T0 ]中寻找基音脉冲点候选值,在每个搜索区间内选3个峰值作为候选值,然后t1,t2…下去一直在整个浊音段搜索。
- 对三个候选值中,通过动态规划求取最佳路径,使得相邻两帧之间标注距离最短,选出最短的一个峰值给出基音脉冲标注。
- 对整个浊音段逐个完成。
2)时长基频修改: 在合成规则指导下,插入或删除1)中获得的同步标记(变速),增大或缩小标记间隔(变调) ,对语音信号的时长和基频等信息进行调整,建立转换语音和原始语音之间的对应关系。
- 在基音脉冲标注基础上,加窗分帧,得到语音xm=hm(tm-n)x.窗长一般为两基音周期,所以帧长随着基音周期而变化,相邻窗有重叠。
- 时长修改因子a,
3)合成: 利用步骤2)获得的语音信号同步标记对步骤1)中得到的短时语音信号进行叠加,所得的语音序列即为所求合成语音。