进行音频断句的自动拆分方法及系统与流程

文档序号:11834514阅读:3383来源:国知局
进行音频断句的自动拆分方法及系统与流程

本发明涉及语音、字幕处理技术领域,尤其涉及进行音频断句的自动拆分方法及系统。



背景技术:

目前字幕制作领域,主要通过人工进行语音断句,人工语音断句的前提是将语音全部听一遍,在听写的同时通过拍打快捷键来标注一句话的开始点和结束点。由于拍打的延时,所得到的开始点和结束点存在错位,需要手动调整。整个流程需要消耗大量时间。比如,30分钟的音频需要耗时40分钟至1小时的断句时间,生产力极其低下。而在网络直播领域,如果不进行断句,由人工进行听写,很难进行并行化,而人听写的速度会比直播速度慢,无法进行并行化就不能进行实时图文直播。依靠人工断句,由于人工断句的速度也比播放速度慢,也导致难以进行实时直播。



技术实现要素:

针对上述现有技术中的缺陷,本发明的目的是提供音频断句的自动拆分方法及系统。从而解决了现有字幕对应过程中,无法进行自动断句的问题。本发明针对课堂录播和网络直播,提出一种智能语音断句的方法,这种方法通过语音分析技术,能够自动快速的分析录制或采集的音频数据,检测得到符合字幕规范的语音片段,节约视音频字幕制作的时间。

为了达到上述目的,本发明提供如下技术方案:

进行音频断句的自动拆分方法,包括:

步骤S101,根据音频获取多个分帧段;

步骤S102,根据各分帧段的能量值获取能量阈值Ek

步骤S103,根据所述能量阈值Ek,从所述各分帧段中获取其能量值超过能量阈值Et;的分帧段,则以该分帧段为句中间帧对该帧的前序帧或后序帧进行扫描,若前序帧或后序帧的能量阀值小于设定能量阈值Et,则将该帧与所述句中间帧按帧起始顺序合并成为独立句;

步骤S104,从每个句子的前后两帧分别向前后搜索,如果搜索到的下一帧属于其他句子,则对两个句子进行合并;如果下一帧的能量小于Et,且不属于其他句子,则对该帧进行傅立叶变换,取0-4000HZ的幅值,按照固定宽度分成z条谱带,每条谱带的强度为Vi,i=1,2,…z。总强度为Vsum,Pi为每条谱带的概率。Pi的计算公式为:

<mrow> <msub> <mi>P</mi> <mi>i</mi> </msub> <mo>=</mo> <mfrac> <msub> <mi>V</mi> <mi>i</mi> </msub> <msub> <mi>V</mi> <mrow> <mi>s</mi> <mi>u</mi> <mi>m</mi> </mrow> </msub> </mfrac> </mrow>

则,该帧的谱熵为:

<mrow> <mi>H</mi> <mo>=</mo> <mo>-</mo> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>z</mi> </munderover> <msub> <mi>P</mi> <mi>i</mi> </msub> <msub> <mi>logP</mi> <mi>i</mi> </msub> </mrow>

每一帧的能量与谱熵的比值为能熵比,记为R。设定一个能熵比阈值Rt,如果该帧的能熵比不小于Rt,则将该帧归到句子中。如果扫描到语音流的开始或结束,扫描中止。

在一种优选的实施方式中,所述步骤S101中包括:

步骤S1011:接收音频文件;

步骤S1012:根据设定的分割时间对所述音频文件进行分割,获取多个分帧段。

在一种优选的实施方式中,所述步骤S102中包括:根据各分帧段的能量值的平均值获取能量阈值Ek

在一种优选的实施方式中,所述步骤S103中“若前序帧或后序帧的能量阀值小于设定能量阈值Et,则将该帧与所述句中间帧按帧起始顺序合并成为独立句单元”的步骤包括:

若前序帧或后序帧的能量阀值小于设定能量Et,则判断当前帧与下一帧的间隔时间是否小于设定间隔时间,若是,则将所述句中间帧按帧起始顺序合并成为独立句;

所述谱熵分析单元,配置为从每个句子的前后两帧分别向前后搜索,如果搜索到的下一帧属于其他句子,则对两个句子进行合并;如果下一帧的能量小于Et,且不属于其他句子,则对该帧进行傅立叶变换,取0-4000HZ的幅值,按照固定宽度分成z条谱带,每条谱带的强度为Vi,i=1,2,…z。总强度为Vsum,Pi为每条谱带的概率。Pi的计算公式为:

<mrow> <msub> <mi>P</mi> <mi>i</mi> </msub> <mo>=</mo> <mfrac> <msub> <mi>V</mi> <mi>i</mi> </msub> <msub> <mi>V</mi> <mrow> <mi>s</mi> <mi>u</mi> <mi>m</mi> </mrow> </msub> </mfrac> </mrow>

则,该帧的谱熵为:

<mrow> <mi>H</mi> <mo>=</mo> <mo>-</mo> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>z</mi> </munderover> <msub> <mi>P</mi> <mi>i</mi> </msub> <msub> <mi>logP</mi> <mi>i</mi> </msub> </mrow>

每一帧的能量与谱熵的比值为能熵比,记为R。设定一个能熵比阈值Rt,如果该帧的能熵比不小于Rt,则将该帧归到句子中。如果扫描到语音流的开始或结束,扫描中止。

在一种优选的实施方式中,步骤S103后还包括:

步骤S1031:若所述独立句的帧长超出设定独立帧长,则计算该独立局每帧的谱熵比,以最低谱熵比所对应的帧作为分割点,将上述独立局风格为两个独立句。

同时本发明还提供了一种进行音频断句的自动拆分系统,包括:分帧单元、能量阀值获取单元、独立句获取单元及所述谱熵分析单元。

所述分帧单元,配置为根据音频获取多个分帧段;

所述能量阀值获取单元,配置为根据各分帧段的能量值获取能量阈值Ek

所述独立句获取单元,配置为根据所述能量阈值Ek,从所述各分帧段中获取其能量值超过能量阈值Et;的分帧段,则以该分帧段为句中间帧对该帧的前序帧或后序帧进行扫描,若前序帧或后序帧的能量阀值小于设定能量阈值Et,则将该帧与所述句中间帧按帧起始顺序合并成为独立句;

所述谱熵分析单元,配置为从每个句子的前后两帧分别向前后搜索,如果搜索到的下一帧属于其他句子,则对两个句子进行合并;如果下一帧的能量小于Et,且不属于其他句子,则对该帧进行傅立叶变换,取0-4000HZ的幅值,按照固定宽度分成z条谱带,每条谱带的强度为Vi,i=1,2,…z。总强度为Vsum,Pi为每条谱带的概率。Pi的计算公式为:

<mrow> <msub> <mi>P</mi> <mi>i</mi> </msub> <mo>=</mo> <mfrac> <msub> <mi>V</mi> <mi>i</mi> </msub> <msub> <mi>V</mi> <mrow> <mi>s</mi> <mi>u</mi> <mi>m</mi> </mrow> </msub> </mfrac> </mrow>

则,该帧的谱熵为:

<mrow> <mi>H</mi> <mo>=</mo> <mo>-</mo> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>z</mi> </munderover> <msub> <mi>P</mi> <mi>i</mi> </msub> <msub> <mi>logP</mi> <mi>i</mi> </msub> </mrow>

每一帧的能量与谱熵的比值为能熵比,记为R。设定一个能熵比阈值Rt,如果该帧的能熵比不小于Rt,则将该帧归到句子中。如果扫描到语音流的开始或结束,扫描中止。

在一种优选的实施方式中,所述分帧单元还配置为:接收音频文件;根据设定的分割时间对所述音频文件进行分割,获取多个分帧段。

在一种优选的实施方式中,所述能量阀值获取单元还配置为,根据各分帧段的能量值的平均值获取能量阈值Ek

在一种优选的实施方式中,所述独立句获取单元还配置为,若前序帧或后序帧的能量阀值小于设定能量Et,则判断当前帧与下一帧的间隔时间是否小于设定间隔时间,若是,则将所述句中间帧按帧起始顺序合并成为独立句。

在一种优选的实施方式中,还包括:长句判断单元;

所述长句判断单元,配置为若所述独立句的帧长超出设定独立帧长,则计算该独立局每帧的谱熵比,以最低谱熵比所对应的帧作为分割点,将上述独立局风格为两个独立句。

本发明的有益效果为:本方法主要的计算是在时域进行的,计算速度快。针对可能是辅音也可能是噪音的有限局部区域,结合时域与频域进行分析,增加切割的准确度。只需要对少数帧进行耗时的频谱分析(如下图所示框选部分),切割速度即快、又准确,同时又有较强的抗噪音特性。用于自动生成语音切割的时间点,可以节约音视频字幕编辑的工作量。设计了一套直接利用现有计算结果,不再进行二次特征计算的切分方法,能够快速进行长句切分,保障不会出现过长的句子,满足制作字幕的需求。使用机器学习方法,对短句子进行判定检测,判定它是否是人音还是噪音,抛弃噪音,进一步提升准确度。本方法既可以处理已经录制好的音视频,也可以处理正在直播的音视频。对于网络直播流,能够自动的将网络直播语音切割,方便后续环节如听写环节并行处理,加快处理时间。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明一种实施方式中,进行音频断句的自动拆分方法的流程示意图;

图2为本发明一种实施方式中,进行音频断句的自动拆分系统的逻辑连接示意图。

具体实施方式

下面将结合本发明的附图,对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明中的进行音频断句的自动拆分方法,如图1所示,包括:

步骤S101,根据音频获取多个分帧段。

本发明可以安装在服务器上,也可以安装在个人计算机或移动计算设备上。以下所称的计算终端即可以是服务器,也可以是个人计算机,也可以是移动计算设备。首先,向服务器上传音视频文件,或者在个人计算机或者移动计算设备上打开音视频文件。之后,计算设备提取音视频文件里的音频流,将音频流统一到固定采样频率有符号单通道数据。之后采用预先设定的分帧参数,对数据进行分帧处理。

步骤S1011:接收音频文件;步骤S1012:根据设定的分割时间对所述音频文件进行分割,获取多个分帧段。

对音频进行分帧处理。每帧长度从10ms到500ms不等。在语音识别中,为了准确识别语音,相邻帧之间需要重叠。本发明的目的不是进行语音识别,因此帧与帧之间可以重叠,也可以不重叠,甚至相邻帧之间允许有间隔,间隔为0ms至500ms。这样语音分割得到的帧数要少于语音识别所需帧数,从而减少计算量,提高计算速度。以F1,F2,…Fm,代表得到的帧,每个帧有n个样本,分别是sk1,sk2,…,skn,每个样本的幅度值为fki,fk2,…,fkn。每一帧记录开始时间和结束时间。

语音数据是按固定采样率对声音进行采样后,得到的实数数字串。采样率16K,就代表1秒采样16000个数据。分帧的意思是将这一串数据按固定的时间段为一个集合作为分析单元。比如,16K采样率,如果每帧长度为100毫秒,则1帧里面有1600个语音数据。通过分帧来确定控制的粒度。本专利里,通常按照100毫秒分帧的,也就是说,N秒的视频,需要分成10N个帧。当然,帧与帧之间可以不相邻,比如,两帧之间隔100毫秒,则N秒的视频,分帧就是5N帧了。增加帧与帧之间的间隔可以降低总帧数,提高分析速度,但代价是时间精确度会降低。

步骤S102,根据各分帧段的能量值获取能量阈值Ek

本步骤中:

对每一帧计算它的能量Ek。能量定义包含但不限于幅度平方和与绝对值之和两种方式。

按照幅度平方和定义的能量计算公式为:

<mrow> <msub> <mi>E</mi> <mi>k</mi> </msub> <mo>=</mo> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>n</mi> </munderover> <msup> <msub> <mi>f</mi> <mrow> <mi>k</mi> <mi>i</mi> </mrow> </msub> <mn>2</mn> </msup> </mrow>

按照绝对值定义的能量计算公式为:

<mrow> <msub> <mi>E</mi> <mi>k</mi> </msub> <mo>=</mo> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>n</mi> </munderover> <mo>|</mo> <msub> <mi>f</mi> <mrow> <mi>k</mi> <mi>i</mi> </mrow> </msub> <mo>|</mo> </mrow>

设定一个能量阈值Et,查找相邻且能量均超过Et的语音帧,得到语音句子S1,S2,…Sj。也即是:

Si={Fk|k=a,a+1,a+2,…a+b,Ek>=Et,且E(a-1)<Et,且E(a+b+1)<Et}。

在另一实施方式中,所述步骤S101中包括:

所述步骤S102中包括:根据各分帧段的能量值的平均值获取能量阈值Ek。即,将上一步得到的能量值除以样本数量,得到平均能量。能量阈值是每帧平均能量的阈值,通常根据经验设置的,常用0.001-0.01之间的某个数字,且用户可以手动调整。

步骤S103,合并为独立句。

根据所述能量阈值Ek,从所述各分帧段中获取其能量值超过能量阈值Et;的分帧段,则以该分帧段为句中间帧对该帧的前序帧或后序帧进行扫描,若前序帧或后序帧的能量阀值小于设定能量阈值Et,则将该帧与所述句中间帧按帧起始顺序合并成为独立句。

所述步骤S103中“若前序帧或后序帧的能量阀值小于设定能量阈值Et,则将该帧与所述句中间帧按帧起始顺序合并成为独立句单元”的步骤包括:若前序帧或后序帧的能量阀值小于设定能量Et,则判断当前帧与下一帧的间隔时间是否小于设定间隔时间,若是,则将所述句中间帧按帧起始顺序合并成为独立句。

步骤S104,对每句进行谱熵分析。

从每个句子的前后两帧分别向前后搜索。如果搜索到的下一帧属于其他句子,则对两个句子进行合并。如果下一帧的能量小于Et,且不属于其他句子,则对该帧进行傅立叶变换,取0-4000HZ的幅值,按照固定宽度分成z条谱带,每条谱带的强度为Vi,i=1,2,…z。总强度为Vsum,Pi为每条谱带的概率。Pi的计算公式为:

<mrow> <msub> <mi>P</mi> <mi>i</mi> </msub> <mo>=</mo> <mfrac> <msub> <mi>V</mi> <mi>i</mi> </msub> <msub> <mi>V</mi> <mrow> <mi>s</mi> <mi>u</mi> <mi>m</mi> </mrow> </msub> </mfrac> </mrow>

则,该帧的谱熵为:

<mrow> <mi>H</mi> <mo>=</mo> <mo>-</mo> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>z</mi> </munderover> <msub> <mi>P</mi> <mi>i</mi> </msub> <msub> <mi>logP</mi> <mi>i</mi> </msub> </mrow>

每一帧的能量与谱熵的比值为能熵比,记为R。设定一个能熵比阈值Rt,如果该帧的能熵比不小于Rt,则将该帧归到句子中。如果扫描到语音流的开始或结束,扫描中止。

比如说,有10个语音帧,每帧能量分别是:

0.05,0.12,0.002,0.004,0.1,0.2,0.4,0,5,0.001,0.12

如果以0.003为阈值,则通过第三步,可以得到三个句子:

句子1包含:0.05,0.12

句子2包含:0.004,0.1,0.2,0.4,0.5

句子3包含:0.12

以句子2为例子,向前扫描,它前面的一帧是0.002,这一帧不属于任何句子,并且它的能量小于阈值0.003,这时,对这帧进行傅立叶变换,计算能熵比。如果能熵比低于这个阈值,则认为这一帧不属于句子2,向前扫描结束。如果能熵比不低于这个阈值,则认为这一帧属于句子2,继续向前扫描下一帧。下一帧是0.12,0.12属于句子1,则将句子1与句子2合并。合并完后,最前面一帧是0.05,已经是第一帧了,无法向前扫描了,向前扫描结束。向后扫描的逻辑与向前扫描的逻辑一样。遇到能量低于能量阈值的,计算其能熵比,能熵比低于能熵比阈值,则扫描结束,否则,继续扫描。遇到其他句子,则合并,合并之后,继续扫描。

之后,合并相近的句子。对于临接的句子,计算其间隔时间,如果间隔时间低于指定的时间阈值,则将两个句子合并。

这一步是进一步合并,比如,假设每帧长度为100毫秒,句子1包含第22,23,24,25,26共5帧,句子2包含29,30,31,32,33,34,35共7帧,两个句子之间并没有其他句子。这两个句子之间间隔了2帧,也就是200毫秒。假定指定的时间阈值十300毫秒,因为200毫秒小于300毫秒,则将句子1和句子2进行合并,合并为1个句子。句子1和句子2之间的帧27,28也一并合并入内,合并后的新句子包含22,23,24,25,26,27,28,29,30,31,32,33,34,35共14帧。

在一种优选的实施方式中,步骤S103后还包括:

步骤S1031:若所述独立句的帧长超出设定独立帧长,则计算该独立局每帧的谱熵比,以最低谱熵比所对应的帧作为分割点,将上述独立局风格为两个独立句。

拆分过长的句子。如果句子的长度高于指定的时间阈值,则对该句子进行拆分。拆分方式如下:忽略句子的首尾各一定比例的语音帧,对剩下语音帧进行遍历。如果每一帧已经计算了谱熵比,则采用谱熵比作为权值W。如果未计算谱熵比,则采用该帧能量作为权值W。对于每一帧,如果本句子中,该帧左侧有Nleft个帧,右侧有Nright个帧,定义拆分系数值WS如下:通过遍历,寻找令该句子的拆分值WS最低的帧,将该句子分为左右两个句子。如果左右两个句子里仍然存在过长的句子,则采用本方法对过长句子继续拆分,直到不存在过长的句子。过滤过短的无意义句子。指定一个时间阈值,对于低于时间长度的句子,有可能并不是人在说话。对于这样的句子,采其能量最高的一帧,计算它的梅尔倒谱系数。使用时先训练好的支持向量机(SVM)分类器对它进行分类,判断是否是人的声音。如果不是人的声音,则抛弃该句子。SVM分类器训练方式如下:从讲座视频与网络直播视频中采集若干人音样本,作为正样本,若干典型的非人音样本作为负样本。使用梅尔到谱系数作为特征进行训练,得到模型参数。(支持向量机的原理可参考)。这里也可以采取其他机器学习方法,如深度神经网络进行分类判定。

本发明同时还提供进行音频断句的自动拆分系统,如图2所示,包括:分帧单元101、能量阀值获取单元201、独立句获取单元301;谱熵分析单元401。

所述分帧单元101,配置为根据音频获取多个分帧段;

所述能量阀值获取单元201,配置为根据各分帧段的能量值获取能量阈值Ek

所述独立句获取单元301,配置为根据所述能量阈值Ek,从所述各分帧段中获取其能量值超过能量阈值Et;的分帧段,则以该分帧段为句中间帧对该帧的前序帧或后序帧进行扫描,若前序帧或后序帧的能量阀值小于设定能量阈值Et,则将该帧与所述句中间帧按帧起始顺序合并成为独立句。

谱熵分析单元401,配置为从每个句子的前后两帧分别向前后搜索,如果搜索到的下一帧属于其他句子,则对两个句子进行合并;如果下一帧的能量小于Et,且不属于其他句子,则对该帧进行傅立叶变换,取0-4000HZ的幅值,按照固定宽度分成z条谱带,每条谱带的强度为Vi,i=1,2,…z。总强度为Vsum,Pi为每条谱带的概率。Pi的计算公式为:

<mrow> <msub> <mi>P</mi> <mi>i</mi> </msub> <mo>=</mo> <mfrac> <msub> <mi>V</mi> <mi>i</mi> </msub> <msub> <mi>V</mi> <mrow> <mi>s</mi> <mi>u</mi> <mi>m</mi> </mrow> </msub> </mfrac> </mrow>

则,该帧的谱熵为:

<mrow> <mi>H</mi> <mo>=</mo> <mo>-</mo> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>z</mi> </munderover> <msub> <mi>P</mi> <mi>i</mi> </msub> <msub> <mi>logP</mi> <mi>i</mi> </msub> </mrow>

每一帧的能量与谱熵的比值为能熵比,记为R。设定一个能熵比阈值Rt,如果该帧的能熵比不小于Rt,则将该帧归到句子中。如果扫描到语音流的开始或结束,扫描中止。

在一种优选的实施方式中,所述分帧单元101还配置为:接收音频文件;根据设定的分割时间对所述音频文件进行分割,获取多个分帧段。

在一种优选的实施方式中,所述能量阀值获取单元201还配置为,根据各分帧段的能量值的平均值获取能量阈值Ek

在一种优选的实施方式中,所述独立句获取单元301还配置为,若前序帧或后序帧的能量阀值小于设定能量Et,则判断当前帧与下一帧的间隔时间是否小于设定间隔时间,若是,则将所述句中间帧按帧起始顺序合并成为独立句。

在一种优选的实施方式中,包括:长句判断单元;

所述长句判断单元,配置为若所述独立句的帧长超出设定独立帧长,则计算该独立局每帧的谱熵比,以最低谱熵比所对应的帧作为分割点,将上述独立局风格为两个独立句。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

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