法律状态公告日
法律状态信息
法律状态
2017-07-11
未缴年费专利权终止 IPC(主分类):G10L21/007 授权公告日:20150826 终止日期:20160520 申请日:20130520
专利权的终止
2015-08-26
授权
授权
2013-11-06
实质审查的生效 IPC(主分类):G10L21/007 申请日:20130520
实质审查的生效
2013-10-02
公开
公开
(一)技术领域:
本发明涉及一种修改孤立音节基频曲线中野值的方法,属于信息技术领域。
(二)背景技术:
基频是语音处理领域一维很重要的声学特征。准确地检测基频意义重大,但 该问题一直未能得到很好解决,目前还没有一种方法能在任何情况下准确可靠地 检测出不同话者的基频曲线。这是由于语音信号自身的复杂性:声门激励信号并 不是一个完整的周期序列;声道响应强烈影响音源的谐波结构,使得检测出仅与 声带振动相关的音源信息困难;基因周期变化范围大,且受发音方式与情感状态 影响。在检测得到的基频曲线中,主要存在两类基频野值,第一类野值大多发生 在半频、倍频,甚至三倍频处,可由其相应的半频,倍频或其相关组合进行修正; 第二类野值是由于音节分割无法100%准确分离有音部分与无音部分而产生的随 机分布的基频值,这类错误主要分布在基频曲线的首尾段。基于此,本发明提出 了逐点修改第一类野值与移除第二类野值的算法,并对修改完成的曲线进行了评 价。
(三)发明内容:
本发明的目的在于提供一种修改基频曲线中野值的方法,本发明针对存在于 基频曲线中的第一类野值与第二类野值的特点,提出了一种利用半频,倍频或其 相关组合逐点修正第一类野值和移除第二类野值的算法。该算法首先利用统计的 方法确定第一类野值的修改起始点与修改结束点,然后逐点修改其间的基频值。 对于第二类野值,首先用Viterbi算法对基频曲线进行分段,分段数目由修改起 始点与修改结束点确定,并对分段后的结果进行最终基频曲线的决策,对于1 分段情况则整个基频曲线就是最终基频曲线;对于3分段情况,中间段为最终的 最终基频曲线;对于2分段情况,分别用-1与1代表第一部分与第二部分,并利 用FISHER比率选取相应的声学特征训练支持向量机(SVM)对两部分进行分类 获得最终基频曲线。
本发明提出一种修改基频曲线中野值的方法,其流程图见图1:其中包括以 下内容:
首先,提出了一种孤立音节基频曲线分段模型,将孤立音节的基频曲线划分 为正常基频值,第一类野值与第二类野值三部分;其中,第一类野值是由于语音 信号本身的复杂性产生的,由于语音信号并非完全周期性的信号,因此各种基频 提取算法得到的基频曲线均存在错误,而这些错误大多发生在倍频,半频,甚至 三倍频处;第二类野值是由于音节分割无法100%准确分离有音部分与无音部分 而产生的随机分布的基频值,这类错误主要分布在基频曲线的首尾段
其次,基于基频曲线分段模型,提出了一种逐点修改第一类野值与移除第二 类野值的算法,具体步骤如下:
步骤一:确定逐点修改第一类野值的修改起始点与修改结束点,最佳的修改起始 点与修改结束点是有音部分与无音部分的分界点,但由于无法100%准确确定分 界点,因此,修改起始点与修改结束点的确定应符合以下原则:(1)修改起始点 应位于理论起始分界点之后,修改结束点应位于理论结束分界点之前;(2)修改 起始点的基频值为正常基频值;修改起始点与修改结束点确定步骤如下:
步骤1.1:对所有孤立音节的基频曲线做一阶差分得到一阶差分基频曲线; 正常基频值在一节差分基频曲线中表现为接近0的值,基频野值在一阶差分基频 曲线中表现为邻近的远远大于0值的值,图2为一个4声孤立音节的基频曲线, 图3为该音节的一阶差分基频曲线;
步骤1.2:对一阶差分基频曲线的基频值做归一化处理,并对所有归一化后 的一阶差分基频曲线在0到1的基频值区间内,以0.1为步长做频数统计;
步骤1.3:对0~0.8区间内的频数分布用不同曲线(指数曲线,多项式曲线, 高斯曲线和幂分布曲线)拟合,对0.7~1区间内频数分布用高斯曲线进行拟合, 计算不同曲线拟合情况下的交点的平均值,为0.75,计算0.75前的一阶差分基 频值的频数占一阶差分基频值总频数的百分比,得到阈值85%,图4展示了一阶 差分基频的频数分布情况与曲线拟合结果;
步骤1.4:量化每个孤立音节的一阶差分基频曲线的基频值,基频值大小位 于前85%的点量化为0,基频值大小位于后15%的点量化为1,并计算每个孤立 音节中85%对应的基频值大小,得到量化阈值t,图5为量化后的一阶差分基频 曲线;
步骤1.5:对量化后的一阶差分基频曲线做一阶差分得到二阶差分基频曲线, 设定“nframe”为帧长,“1”为帧移,分别从二阶差分基频曲线的起始点进行前 向判断,从二阶差分基频曲线的结束点进行后向判断,若一帧中的基频值均为 “0”,则记录该帧起始点,若一帧中的基频值存在“1”,则移动帧移长度,判断 下一帧,直到出现一帧中的基频值均为0,记录该帧起始点,起始点与结束点的 确定算法流程如图6所示;
步骤1.6:由步骤1.5得到的临界点b1与b2,b1为由二阶差分基频曲线的起始 点开始判断得到的起始点,b2为由二阶差分基频曲线的结束点开始判断得到的起 始点,判断b1与b2的大小,若b1大于b2,从前向开始修改,b1为修改起始点,b2为修改结束点,若b1小于b2,从后向开始修改,b2为修改起始点,b1为修改结束 点;
步骤二:逐点修改b1与b2之间的基频值,算法流程图如图7所示,具体修改步骤 如下:
步骤2.1:确定待修改基频点F0(j)的修改候选值:
·Fp(j):第j个点的原始基频值;
·Mp(j):第j个点的倍频值;
·Hp(j):第j个点的半频值;
·第j-1个点的原始基频值与第j+1个点的原 始基频值的均值;
·第j-1个点的原始基频值与第j+1个点的 倍频值的均值;
·第j-1个点的原始基频值与第j+1个点的 半频值的均值;
步骤2.2:确定待修改基频点F0(j)的修改值的取值范围:
·范围range1:由参数c0确定的理想修改值范围,c0为修改起 始点与修改结束点之间的一阶差分基频值的均值的模值;
·范围range2:由参数t确定的保证修改值为正常值的取值范 围;
步骤2.3:由步骤2.1与2.2中确定的F0(j)的修改候选值与修改范围计算 逐点修改过程中用到的相关参数如下:
·初始化:Δ0=F0(j-1)-F0(j-2)
·一阶差分集合A:
Δ1=Fp(j)-F0(j-1)
Δ2=Sp(j)-F0(j-1)
Δ3=Hp(j)-F0(j-1)
·二阶差分模值集合B:
ε1=|Δ1-Δ0|
ε2=|Δ2-Δ0|
ε3=|Δ3-Δ0|
ε4=|Δ4-Δ0|
ε5=|Δ5-Δ0|
ε6=|Δ6-Δ0|
·取值集合R1:集合B中小于c0的元素的集合;
·取值集合R2:集合A中小于t的元素的集合;
步骤2.4:为了保证首帧F0(j-1)与F0(j-2)为正常的基频值,计算新的修 改起始点b1'为“b1+nframe-2”;从新的起始点开始,计算步骤2.3中所有的参数, 判断取值集合R1是否为空集,若不为空集则判断ε1是否在R1中,若在,则令ε等 于ε1,否则令R1中的最小值等于ε,计算新的基频值为“ε+Δ0+F0(j-1)”; 若R1为空集,则进入步骤2.5;
步骤2.5:判断取值集合R2是否为空集,若不为空集则判断Δ1是否在R2中, 若在,则令Δ1等于b,否则令R2中的最小值等于b,计算新的基频值为 “b+F0(j-1)”,若为空集,则计算新的基频值为“t+F0(1,j-1)”;
步骤2.6:计算得到新的F0(j)后,判断j是否小于等于n-2,若成立,则令 j=j+1并重复步骤2.4~2.6;若不成立,则令 Fp(n)=F0(n-1)+F0(n-1)-F0(n-2);
步骤2.7:计算修改完毕的一阶差分基频的平均值的模值f0,比较f0与c0, 若f0不等于c0,则重复2.4~2.7,若f0等于c0,则结束修改;
步骤三:移除首尾段存在的第二类野值,具体修改步骤如下:
步骤3.1:根据步骤1.6中得到的修改起始点与修改结束点的值确定基频曲 线分段数目:若修改起始点为1,修改结束点为n,n为基频曲线的总点数,则 分段数目为1,不存在第二类野值;若修改起始点为1,修改结束点不为n,或 者修改起始点不为1,修改结束点为n,则分段数目为2,首部或尾部存在一段 第二类野值;若修改起始点不为1,修改结束点不为n,则分段数目为3,首部 和尾部均存在第二类野值;
步骤3.2:根据3.1中的分段原则,利用Viterbi算法对基频曲线进行分段, 对于1分段情况,则整个基频曲线就是最终基频曲线;对于3分段情况,中间段 为最终基频曲线;对于2分段情况,分别用-1与1代表第一部分与第二部分,并 利用FISHER比率选取相应的声学特征训练支持向量机(SVM)对两部分进行分 类获得最终基频曲线。如图8所示,上图为音节的能量曲线,下图为音节的基频 曲线。
表1特征和FISHER比率
选取FISHER比率大于0.5的4维特征(η,σ,γ)作为最终的分类 特征组合。为了验证特征组合的有效性,选取236个样本并用该特征组合训练 SVM,利用训练完成的SVM识别另外236个样本,得到97.6%的识别率。
最后,为了验证基频曲线的修改效果,设计了3组评价实验,具体步骤如下:
步骤一:邀请20名志愿者对修改后的基频曲线的光滑程度与波动程度进行主观 评价,其中光滑程度描述的是曲线是否有突变,波动程度描述的是曲线是否按照 一定趋势变化;评价分为五个等级{-1,-0.5,0,0.5,1},数值越大代表曲线越光滑, 波动越少;每名志愿者分别对同一基频曲线的修改前与修改后进行评价,每名志 愿者评价50个音节,取20名志愿者的评价值的平均值作为被评价音节的最终结 果,图9为主观评价结果统计图。
步骤二:客观评测实验:分别计算孤立音节基频曲线修改前后的相对标准偏差 (RSD)与二阶差分的方差(δsec-order),计算公式如式(1)与式(2)所示:其中相 对标准偏差用于描述基频曲线的光滑度,二阶差分的方差用于描述波动程度,计 算结果如表2所示。
表2客观参数评测结果
步骤三:设计一组音节声调识别的对比实验:A实验用未修改的基频曲线提取声 学特征训练3726个音节获得4种声调的隐马尔可夫模型,然后识别2484个音节 的声调,得到4种声调的平均识别率P1;B实验用修改后的基频曲线提取声学 特征训练3726个音节获得4种声调的隐马尔可夫模型,然后识别2484个音节的 声调,得到4种声调的平均识别率P2,比较P1与P2,图10为4种声调的识别 率对比结果图;
步骤四:根据步骤一至步骤三的实验结果,总结结论。
本发明的优点及积极效果为提出了一种修改基频曲线中野值的算法。该算法 首先利用统计的方法确定第一类野值的修改起始点与修改结束点,然后逐点修改 其间的基频值。对于第二类野值,首先用Viterbi算法对基频曲线进行分段,分 段数目有修改起始点与修改结束点确定,并对分段后的结果进行目标基频曲线的 决策,得到最终的基频曲线。由主观评测实验、客观参数评价实验及音节声调识 别的对比实验的结果表明,经过修改的基频曲线更加光滑,波动更少。
(四)附图说明:
图1为基频曲线中野值修改的总体流程图;
图2为一个4声孤立音节的基频曲线;
图3为图2中4声孤立音节的一阶差分基频曲线;
图4为一阶差分基频的频数分布情况与曲线拟合结果;
图5为图2中4声孤立音节的一阶差分基频曲线量化结果;
图6为修改起始点与修改结束点的确定算法流程图;
图7为逐点修改第一类野值的算法流程图;
图8上图为孤立音节的能量曲线,下图为孤立音节的基频曲线;
图9为主观评价结果统计图;
图10利用不同方法得到的4种声调的识别率对比结果图;
(五)具体实施方式:
下面结合附图,对本发明所述的技术方案作进一步阐述。
首先,提出了一种孤立音节基频曲线分段模型,将孤立音节的基频曲线划分 为正常基频值,第一类野值与第二类野值三部分;其中,第一类野值是由于语音 信号本身的复杂性产生的,由于语音信号并非完全周期性的信号,因此各种基频 提取算法得到的基频曲线均存在错误,而这些错误大多发生在倍频,半频,甚至 三倍频处;第二类野值是由于音节分割无法100%准确分离有音部分与无音部分 而产生的随机分布的基频值,这类错误主要分布在基频曲线的首尾段。
其次,基频曲线分段模型,提出了一种逐点修改第一类野值与移除第二类野值的 算法,具体步骤如下:
步骤一:确立逐点修改第一类野值的修改起始点与修改结束点,最佳的修改起始 点与修改结束点是有音部分与无音部分的分界点,但由于无法100%准确确定分 界点,因此,修改起始点与修改结束点的确定应符合以下原则:(1)修改起始点 应位于理论起始分界点之后,修改结束点应位于理论结束分界点之前;(2)修改 起始点的基频值为正常基频值;修改起始点与修改结束点确定步骤如下:
步骤1.1:对所有孤立音节的基频曲线做一阶差分得到一阶差分基频曲线; 正常基频值在一节差分基频曲线中表现为接近0的值,基频野值在一阶差分基频 曲线中表现为邻近的远远大于0值的值,图2为一个4声孤立音节的基频曲线, 图3为该音节的一阶差分基频曲线;
步骤1.2:对一阶差分的基频曲线的基频值做归一化处理,并对所有归一化 后的一阶差分的基频曲线在0到1的基频值区间内,以0.1为步长做频数统计;
步骤1.3:对0~0.8区间内的频数分布用不同曲线(指数曲线,多项式曲线, 高斯曲线和幂分布曲线)拟合,对0.7~1区间内频数分布用高斯曲线进行拟合, 计算不同曲线拟合情况下的交点的平均值,为0.75,计算0.75前的一阶差分基 频值的频数占一阶差分基频值总频数的百分比,得到阈值85%,图4展示了一阶 差分基频的频数分布情况与曲线拟合结果;
步骤1.4:量化每个孤立音节的一阶差分基频曲线的基频值,基频值大小位 于前85%的点量化为0,基频值大小位于后15%的点量化为1,并计算每个孤立 音节中85%对应的基频值大小,得到量化阈值t,图5为量化后的一阶差分基频 曲线;
步骤1.5:对量化后的一阶差分基频曲线做一阶差分得到二阶差分基频曲线, 设定“nframe”为帧长,“1”为帧移,分别从二阶差分基频曲线的起始点进行前 向判断,从二阶差分基频曲线的结束点进行后向判断,若一帧中的基频值均为 “0”,则记录该帧起始点,若一帧中的基频值存在“1”,则移动帧移长度,判断 下一帧,直到出现一帧中的基频值均为0,记录该帧起始点,起始点与结束点的 确定算法流程如图6所示;
步骤1.6:由步骤1.5得到临界点b1与b2,b1为由二阶差分基频曲线的起始点 开始判断得到的起始点,b2为由二阶差分基频曲线的结束点开始判断得到的起始 点,判断b1与b2的大小,若b1大于b2,从前向开始修改,b1为修改起始点,b2为 修改结束点,若b1小于b2,从后向开始修改,b2为修改起始点,b1为修改结束点;
步骤二:逐点修改b1与b2之间的基频值,算法流程图如图7所示,具体修改步骤 如下:
步骤2.1:确定待修改基频点F0(j)的修改候选值:
·Fp(j):第j个点的原始基频值;
·Mp(j):第j个点的倍频值;
·Hp(j):第j个点的半频值;
·第j-1个点的原始基频值与第j+1个点的原 始基频值的均值;
·第j-1个点的原始基频值与第j+1个点的 倍频值的均值;
·第j-1个点的原始基频值与第j+1个点的 半频值的均值;
步骤2.2:确定待修改基频点F0(j)的修改值的取值范围:
·范围range1:由参数c0确定的理想修改值范围,c0为修改起 始点与修改结束点之间的一阶差分基频值的均值的模值;
·范围range2:由参数t确定的保证修改值为正常值的取值范 围;
步骤2.3:由步骤2.1与2.2中确定的F0(j)的修改候选值与修改范围计算 逐点修改过程中用到的相关参数如下:
·初始化:Δ0=F0(j-1)-F0(j-2)
·一阶差分集合A:
Δ1=Fp(j)-F0(j-1)
Δ2=Sp(j)-F0(j-1)
Δ3=Hp(j)-F0(j-1)
·二阶差分模值集合B:
ε1=|Δ1-Δ0|
ε2=|Δ2-Δ0|
ε3=|Δ3-Δ0|
ε4=|Δ4-Δ0|
ε5=|Δ5-Δ0|
ε6=|Δ6-Δ0|
·取值集合R1:集合B中小于c0的元素的集合;
·取值集合R2:集合A中小于t的元素的集合;
步骤2.4:为了保证首帧F0(j-1)与F0(j-2)为正常的基频值,计算新的修 改起始点b1'为“b1+nframe-2”;从新的起始点开始,计算步骤2.3中所有的参数, 判断取值集合R1是否为空集,若不为空集则判断ε1是否在R1中,若在,则令ε等 于ε1,否则令R1中的最小值等于ε,计算新的基频值为“ε+Δ0+F0(j-1)”; 若R1为空集,则进入步骤2.5;
步骤2.5:判断取值集合R2是否为空集,若不为空集则判断Δ1是否在R2中, 若在,则令Δ1等于b,否则令R2中的最小值等于b,计算新的基频值为 “b+F0(j-1)”,若为空集,则计算新的基频值为“t+F0(1,j-1)”;
步骤2.6:计算得到新的F0(j)后,判断j是否小于等于n-2,若成立,则令 j=j+1并重复步骤2.4~2.6;若不成立,则令 Fp(n)=F0(n-1)+F0(n-1)-F0(n-2);
步骤2.7:计算修改完毕的一阶差分基频的平均值的模值f0,比较f0与c0, 若f0不等于c0,则重复2.4~2.7,若f0等于c0,则结束修改;
步骤三:移除首尾段存在的第二类野值,具体修改步骤如下:
步骤3.1:根据步骤1.6中得到的修改起始点与修改结束点的值确定基频曲 线分段数目:若修改起始点为1,修改结束点为n,n为基频曲线的总点数,则 分段数目为1,不存在第二类野值;若修改起始点为1,修改结束点不为n,或 者修改起始点不为1,修改结束点为n,则分段数目为2,首部或尾部存在一段 第二类野值;若修改起始点不为1,修改结束点不为n,则分段数目为3,首部 和尾部均存在第二类野值;
步骤3.2:根据3.1中的分段原则,利用Viterbi算法对基频曲线进行重分段, Viterbi算法的实现参数如下:
·O=(o1o2o3...oN):代表基频曲线的观察值序列;
·oj=(logF0j,ΔlogF0j):观察值向量;
·I,(1≤I≤5):基频曲线被划分为I段连续部分;
·
部分,每部分的中心服从概率密度函数为p(oj|Φi)的多元高斯函数,其 中参数Φi包括均值μi与协方差矩阵Σi,μi和Εi可由第i部分的ni个观 察值的最大似然估计得到,计算公式如式(1)和(2)所示。.
·
·aij:由状态i转移到状态j的转移概率;
·T(i,j)=max(T(i-1,j-1)aijp(oj|Φi)),i∈(1,2...I),j∈(1,2...n):状态转移递推公 式。
对于1分段情况,则整个基频曲线就是最终基频曲线;对于3分段情况, 中间段为最终基频曲线;对于2分段情况,分别用-1与1代表第一部分与第二 部分,并利用FISHER比率选取相应的声学特征训练支持向量机(SVM)对两 部分进行分类获得最终基频曲线。如图8所示,上图为音节的能量曲线,下图 为音节的基频曲线。点线表示音节的边界,虚线为第一部分c1与第二部分c2的 分界线,A、B和C为相应c1与c2的起始点与结束点,t1与t2为音节起始与末尾 对应的帧数。备选的声学特征如下:
·归一化长度:
第一部分:
第二部分:
·ci帧长:ni.
·c1归一化帧长:dur1=tB1-tA1.
c2归一化帧长:dur2=tC1-tB1
·c1和c2的能量:
P为对应帧的能量.
·c1和c2的能量斜率
·分段能量比率:
·c1和c2的拟合斜率比率:
k为拟合斜率。
·c1和c2均值比率:
·均值:
·方差:
·c1和c2的自相关系数:
表1特征和FISHER比率
选取FISHER比率大于0.5的4维特征(η,σ,γ)作为最终的分类 特征组合。为了验证特征组合的有效性,选取236个样本并用该特征组合训练 SVM,利用训练完成的SVM识别另外236个样本,得到97.6%的识别率。
最后,为了验证基频曲线的修改效果,设计了3组评价实验,具体步骤如下:
步骤一:邀请20名志愿者对修改后的基频曲线的光滑程度与波动程度进行主观 评价,其中光滑程度描述的是曲线是否有突变,波动程度描述的是曲线是否按照 一定趋势变化;评价分为五个等级{-1,-0.5,0,0.5,1},数值越大代表曲线越光滑, 波动越少;每名志愿者分别对同一基频曲线的修改前与修改后进行评价,每名志 愿者评价50个音节,取20名志愿者的评价值的平均值作为被评价音节的最终结 果,图9为主观评价结果统计图,其中X坐标为平滑度,Y坐标为波动程度, 圆圈代表原始基频曲线的评价值,叉号代表修改后的基频曲线的评价值。由图可 以看出,大量的圆圈集中在第三区间而少部分的圆圈分布在第一区间,这说明大 部分的原始基频曲线中存在野值使得基频曲线不光滑且有波动。但是,全部的叉 号均位于第一区间内,也就是说经过修改后的基频曲线变得更加光滑且波动更 少。特别的,有三点的评价值在修改前后是一致的,这是因为原始的基频曲线中 不存在野值。
步骤二:客观评测实验:分别计算孤立音节基频曲线修改前后的相对标准偏差 (RSD)与二阶差分的方差(δsec-order),计算公式如式(3)与式(4)所示:其中相 对标准偏差用于描述基频曲线的光滑度,二阶差分的方差用于描述波动程度,计 算结果如表2所示。
表2客观参数评测结果
由表2的结果可以看出修改后的基频曲线的相对标准偏差(RSD)与二阶差分 的方差(δsec-order)均有所减小,这说明修改后的基频曲线更加光滑,波动更少。
步骤三:设计一组音节声调识别的对比实验:A实验用未修改的基频曲线提取声 学特征训练3726个音节获得4种声调的隐马尔可夫模型,然后识别2484个音节 的声调,得到4种声调的平均识别率P1;B实验用修改后的基频曲线提取声学 特征训练3726个音节获得4种声调的隐马尔可夫模型,然后识别2484个音节的 声调,得到4种声调的平均识别率P2,比较P1与P2,图10为4种声调的识别 率对比结果图;由图10可以看出实验B利用修改后的基频曲线进行声调识别比 实验A里用未修改的基频曲线进行声调识别提高了5.2%的识别率。这是由于经 过基频野值修改后的基频曲线更加光滑与标准。
机译: 编码数字数据音频数据,一种用于计算机的标记方法,包括将信息包含在一个位置的未编码数字数据中,使用编码算法对修改后的数据进行编码,以及将位置存储在修改后的编码数据中
机译: 一种修改活检系统和活检系统中至少一种计算算法的程序
机译: 在traeger-frequency系统的情况下一种由不同的基频产生基频的方法。