一种音频句子边界检测方法与流程

文档序号:15097181发布日期:2018-08-04 14:51阅读:865来源:国知局

本发明涉及音频分割领域,特别是一种音频句子边界检测方法。



背景技术:

在音乐检索、语音识别和音频场景分析等领域中,音频分割是一个至关重要的处理技术。面对当前大数据时代数以万计的音频数据,若能自动的根据不同内容对音频数据流进行分割,将极大地简化人工操作和提高效率。但是,目前与歌声音频分句相关的研究还很少,部分工作本质上还是针对文本语句的分割。因此,研究如何对清唱歌声音频进行句子边界检测具有非常重要的实际应用价值。



技术实现要素:

本发明的目的在于提供一种音频句子边界检测方法,能够分析出清唱音频句子之间的边界序列,并自适应不同节奏的音乐。

为实现上述目的,本发明的技术方案是:一种音频句子边界检测方法,按照如下步骤实现:

步骤S1:将输入的清唱歌声音频信号进行预处理,预处理方式包括:滤波、预加重和归一化;

步骤S2:对预处理后的歌声音频x(n)进行CQT变换得到频域信号XCQT(k);

步骤S3:取频域信号XCQT(k)的50Hz-5kHz分量,将其按频率均等划分为八个子带,分别计算每个子带谱熵H(m);

步骤S4:采用单参数的双门限法反向端点检测将歌声音频x(n)分别标注为语音段起点序列Sp(n)和终点序列Ep(n);

步骤S5:根据肘部法则设置类簇的个数为K=2,将歌声段长度序列S(n)和非歌声段长度序列M(n)依次对应组合成样本数据集T(n)={(S(n),M(n))|0<n<L};

步骤S6:采用K-means聚类分析将样本数据集T(n)分为K类,并输出K个类簇和质心w1,w2,…,wk;

步骤S7:在K个类簇中,将质心最大的类簇作为音频句子边界的检测结果,以该类簇中的数据对歌声音频x(n)进行句子边界标注得到句子边界序列。

在本发明一实施例中,在所述步骤S2中,所述频域信号XCQT(k)为:

其中,是窗长为Nk的汉宁窗函数;Nk=[Q*fs/fk],[·]表示向上取整;Q=(21/b-1)-1,b表示相邻的倍频之间频率点个数,设置为12;fs为采样频率;fk为第k个半音的中心频率,fk=f0*2k/b,f0为基础频率。

在本发明一实施例中,在所述步骤S3中,所述子带谱熵H(m)为:

其中,式中P(l,m)表示第m帧的第l条谱线的子带频谱概率密度,eps为保证对数的运算对象不为零而引入的一个小数。

在本发明一实施例中,所述步骤S4,具体实现步骤如下:

步骤S41:将平滑滤波后子带谱熵H(m)的最小值记为Hmin,以及前250ms的均值记为Hmean,设置高阈值门限TH=0.99(Hmean-H min)+H min,低阈值门限TL=0.96(Hmean-H min)+H min;

步骤S42:以子带谱熵H(m)为参数,通过单参数的双门限法反向端点检测对歌声音频x(n)进行端点标注,将语音段起点序列记为Sp(n),终点序列记为Ep(n)。

在本发明一实施例中,在所述步骤S5中,所述歌声段长度序列S(n)为:

S(n)=Ep(n)-Sp(n),0<n<L;

非歌声段长度序列M(n)为:

M(n)=Sp(n+1)-Ep(n),0<n<L;

其中,L为起点序列Sp(n)和终点序列Ep(n)的长度。

在本发明一实施例中,所述步骤S6,具体实现步骤如下:

步骤S61:采用K-means++算法从T(n)中选出距离最远的K个点分别作为初始聚类中心c1,c2,…,ck;

步骤S62:计算每个数据点到K个聚类中心的欧氏距离d(T(i),cj),根据距离质心最近的原则,如果d(T(i),cj)是该样本数据到K个聚类中心距离中的最小值,那么T(i)∈cj;

步骤S63:计算K个类簇的质心w1,w2,…,wk,直到对任意的i∈{1,2,3,…,k},都有wi=ci成立,则聚类结束;否则令ci=wi,i∈{1,2,3,…,k},继续进行聚类;

步骤S64:输出K个类簇和质心w1,w2,…,wk。

相较于现有技术,本发明具有以下有益效果:本发明提出了一种音频句子边界检测方法,根据人耳听觉感知特性对演唱歌声采用CQT进行时频转换,通过子带谱熵法对演唱歌声进行细粒度的端点检测;在此基础上,利用演唱歌声句子之间停顿和发音间隔较长的特点,基于K-means算法进行聚类分析得到分句端点位置,可较好的得到清唱音频句子之间的边界序列,并自适应不同节奏的音乐。该方法简单,实现灵活,具有较强的实用性。

附图说明

图1为本发明中音频句子边界检测方法的流程图。

具体实施方式

下面结合附图,对本发明的技术方案进行具体说明。

本发明提出一种音频句子边界检测方法,如图1所示主要分为三个步骤:首先利用基于CQT改进的谱熵算法对歌声信号进行常规的端点检测,然后结合K-Means算法进行分析并归类出句子端点,最后分析句子边界序列对歌声信号进行分割。具体如下:

步骤S1:计算歌声音频的CQT谱:首先对整个歌声音频信号进行滤波,预加重、归一化等预处理,然后对预处理后的歌声音频x(n)进行CQT变换得到频域信号XCQT(k):

其中,是窗长为Nk的汉宁窗函数;Nk=[Q*fs/fk],[·]表示向上取整;Q=(21/b-1)-1,b表示相邻的倍频之间频率点个数,设置为12;fs为采样频率;fk为第k个半音的中心频率,fk=f0*2k/b,f0为基础频率。

步骤S2:计算子带谱熵:取频域信号XCQT(k)的50Hz-5kHz分量,将其按频率均等划分为八个子带,分别计算每个子带的谱熵H(m)。

步骤S3:双门限法反向端点检测:将平滑滤波后子带谱熵H(m)的最小值记为Hmin,以及前250ms的均值记为Hmean,设置高阈值门限TH=0.99(Hmean-Hmin)+Hmin,低阈值门限TL=0.96(Hmean-Hmin)+Hmin;以子带谱熵H(m)为参数,通过单参数的双门限法反向端点检测对歌声音频x(n)进行端点标注,将语音段起点序列记为Sp(n),终点序列记为Ep(n)。

步骤S4:构建样本数据集:歌声段长度序列为S(n)=Ep(n)-Sp(n),非歌声段长度序列为M(n)=Sp(n+1)-Ep(n),将S(n)和M(n)组合成样本数据集T(n)={(S(n),M(n))|0<n<L},根据肘部法则设置类簇的个数K=2。

步骤S5:K-means聚类分析:采用K-means++算法从T(n)中选出距离最远的K个点分别作为初始聚类中心c1,c2,…,ck;计算每个数据点到K个聚类中心的欧氏距离d(T(i),cj),根据距离质心最近的原则,如果d(T(i),cj)是该样本数据到K个聚类中心距离中的最小值,那么T(i)∈cj;计算K个类簇的质心w1,w2,…,wk,直到对任意的i∈{1,2,3,…,k},都有wi=ci成立,则聚类结束;否则令ci=wi,i∈{1,2,3,…,k},继续进行聚类;最后输出K个类簇和质心w1,w2,…,wk。

步骤S6:分句处理:在K个类簇中,将质心最大的类簇作为音频句子边界的检测结果,以该类簇中的数据对歌声音频x(n)进行句子边界标注得到句子边界序列。

以上是本发明的较佳实施例,凡依本发明技术方案所作的改变,所产生的功能作用未超出本发明技术方案的范围时,均属于本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1