STRAIGHT特征提取算法学习

来源:互联网 发布:看广告赚钱软件 编辑:程序博客网 时间:2024/06/05 15:11

最近看STRAIGHT特征提取算法,整理相关文档,也写些自己的理解。先整体,细节有时间再补充。

1.F0提取

STRAIGHT F0的提取主要分为:F0粗定位->F0轨迹平滑->F0精定位。

F0粗定位是指对语音信号进行小波变换,得到小波系数。再将小波系数转换为瞬时频率作为各帧的一组候选F0值。在进行小波变换前,要经过高通滤波器去除信号的直流分量;然后对信号降采样。

F0轨迹平滑指根据计算得到的高频能量比、最小噪声能量、判决门限、跳跃度(帧级别的基音频率与参考频率的误差),在一组候选F0值中寻找最可能的F0平滑曲线。

F0精定位和F0粗定位相似,也会用到瞬时频率。但F0粗定位是用小波变换得到瞬时频率,而F0精定位则是用FFT得到瞬时频率,再根据当前帧的噪声能量和语音能量对瞬时频率进行微调。

2.自适应谱提取

自适应加权谱的提取,其核心算法在于对提取出的功率谱进行一系列的平滑和补偿过程。对输入的语音信号进行:语音信号预处理 -> 功率谱提取 -> 低频噪声补偿 -> 过平滑补偿 -> 无音帧谱的处理,最后得到自适应功率谱。

其中,语音信号预处理包括让语音信号x(n)经过三个六阶butterworth高通滤波器:截止频率分别为70Hz,300Hz,3kHz。滤波得到x1(n),x2(n),x3(n)。算法通过x1(n)求取功率谱,通过x2(n),x3(n)产生无音帧功率谱的加权系数。

在提取当前帧的功率谱时,首先要设计截取帧的数据窗函数,窗函数w1(n)和频率有关,因此由于各帧基音频率F0不同,窗长是变化的。当语音信号x1(n)被截取后,作FFT得到功率谱。为使功率谱更平滑,算法基于w1(n)设计了一个补偿滤波器w2(n).w2(n)在频域上对w1(n)的幅度谱进行了搬移,在相位谱上则较w2(n)偏移了pi/2.

低频噪声补偿的原因:若当前帧为有音帧,基音频率为F0.功率谱E(k)在F0的倍频处具有较强的能量,而在其他频率各处能量较低.考虑到STAIGHT算法在语音合成部分,E(k)需要按输入的基音频率为间隔进行抽样,因此需要保证E(k)在F0以下的低频处比较平滑.因此需要对F0以下的频带进行低频噪声补偿.将 F0/2 ~ F0 Hz频带上的功率谱E(k)翻折复制到0~F0/2的频带上.

经过低频噪声补偿的功率谱为E1(k).对E1(k)进行一次平滑w1(n),以获取E1(k)的大致变化趋势E'1(k).过平滑补偿则首先构造出平滑滤波器的逆滤波器g1(n),使得: g1(n)*w1(n) = 冲激函数.对经过低频噪声补偿的功率谱E1(k)在时域进行过平滑补偿,再转换为频域的功率谱E2(k);最后,利用变化趋势E'1(k)和E2(k)进行加权,得到过平滑补偿后的功率谱E3(k).

无音帧功率谱修正,首先获得300Hz以上语音x2(n)的各帧能量P1(nframe),根据有/无音的程度,将P1(nframe)和本帧功率谱E3(k)所得能量P(nframe)加权,得到P'1(nframe).最后,当语音帧为无音帧时,功率谱作如下修正:

E3(k,nframe) = P'1(nframe)E3(k,nframe)/∑∑E3(k,nframe).

(当语音帧为有音帧时,相邻帧能量较为接近,高频能量也较为相似;而无音帧相邻帧的高频能量变化剧烈,因此采用此性质来判断有/无音程度)

3.语音非周期成分(噪声)提取

语音非周期成分的提取,主要是分析信号的功率谱,提取功率谱的上包络与下包络(ERB域提取谱包络),利用上下谱包络的比例t(f,n)=EL/EH,判决语音信号在该频率点处的非周期成分的大小。t(f,n)在频率f处越大,非周期成分也越大,则合成时衰减频率f处的可能性也越大,从而提升合成音质。

对非周期成分划分组得到bap。

原创粉丝点击