语音合成vocoder(三) spectral envelope参数
基本概念[1]
spectral envelope的三个性质:
- 包络线连接峰值,并且紧紧包裹幅度谱
- 包络线不能震荡太剧烈,需要平滑
- 包络线不能有corner
语音信号可以模拟为激励脉冲序列与声道冲激响应的离散卷积,对于浊音信号
上式中的
常用方法[1]
LPC
linear predictive coding一开始用于语音的传输压缩,基本思想是n时刻的信号
要求预测误差
从另外一角度理解,analysis filter的作用是压缩输入信号的高幅值的频率分量,而synthesis filter的作用是放大这些分量,所以在一定程度上面synthesis filter体现了包络的信息。
缺点是包络有可能包含将peak之间的噪声部分,尤其当两个peak间距比较大的时候(f0比较大),如下图。
cepstrum
倒谱分析属于同态解卷积的方法,对于卷积信号,不能通过线性方法进行分离,可以通过FFT变为乘积信号,取log将乘积信号变为加性信号,IFFT变换获取倒谱,通过简单的低通滤波即可获得最后的频谱包络。
假设两部分对应的时域信号分别是h(n)和e(n),那么满足:
此时我们是无法区分开h(n)和e(n)。
对频域两边取log:
然后进行反傅里叶变换:
假设此时得到的时域信号如下:
虽然此时获得时域信号x’(n)即为倒谱,已经和原始的时域信号x(n)不一样,但是可以把时域信号的卷积关系转化为了线性加关系。
对应上图的频域信号,可以拆分成两部分的乘积:频谱的包络和频谱的细节。包络部分对应的是频谱的低频信息,而细节部分对应的是频谱的高频信息。倒谱分析已经将两部分对应的时域信号的卷积关系转化为了线性加关系,所以只需要将倒谱通过一个低通滤波器即可获得包络部分对应的时域信号h’(t)。
CheapTrick[2]
1. F0-adaptive windowing
参考pitch synchronous,语音分段的时候不再以传统的定长帧为单位,而是以f0对应的周期为单位,以保证波形和频谱的平滑连续。
一般使用长度为
清音没有基频,一般使用一个适当的常数。
2. smoothing of the power spectrum
对于加窗以后的时域信号进行FFT获得对应的功率谱
3. liftering in the quefrency domain
可以将功率谱看做是普通信号,求出信号的包络也就是找到信号的低频部分。
1. 首先对上一步求出来的功率谱做反傅里叶变换
2. 过滤得到信号的低频部分
sinc函数第一个作用,相当于一个低通滤波器;第二个作用,它在
3. spectral recovery
两个参数的经验值是1.18和-0.09。目的是为了消除前面平滑带来的畸变。
4. 获取最后的频谱包络
参考文献
[1].Spectral Envelopes in Sound Analysis and Synthesis
[2].CheapTrick, a spectral envelope estimator for high-quality speech synthesis