一种语音文件裁剪还原方法、装置、设备和存储介质与流程
本发明属于语音处理领域,特别涉及一种语音文件裁剪还原方法、装置、设备和存储介质。
背景技术:
在语音分析中,为了防止将语音用作其他用途,需要对语音文件进行裁剪,在语音分析时,分析系统要求语音片段都为一段完整的语音,如果采用传统的语音裁剪方法,无法保证裁剪后语音片段词义的完整性,出现断词的现象,导致无法对于音片段无法做正常的语音分析工作,如关键词提取、语音转写等。
技术实现要素:
针对上述问题,本发明提出一种语音文件裁剪还原方法,设置最大静默时间和设置最小静默值;
获取原始语音文件;
获取原始语音文件中音频能量值小于等于最小静默值的无效语音片段;
判断无效语音片段时长是否大于最大静默时间;
对时长大于最大静默时间的无效语音片段的起点和终点进行裁剪;
剔除裁剪得到无效语音片段,获得多段有效语音片段;
顺序拼接多段有效语音片段,获得还原语音文件。
优选地,所述设置最小静默值具体包括:
采集原始语音文件初始静音段的平均能量值;
设置最小静默值等于平均能量值。
优选地,所述设置最小静默值具体包括:
采集原始语音文件初始静音段的平均能量值;
所述平均能量值乘以预设系数得到经验能量值;
设置最小静默值等于经验能量值。
优选地,所述获取原始语音文件中音频能量值低于最小静默值的无效语音片段包括:
在原始语音文件上等时间间隔设置采样点,在采样点采集音频能量值;
连续至少p个音频能量值大于最小静默值,并且连续至少q个音频能量值小于等于最小静默值,p个采样点与q个采样点之间无采样点,p个采样点与q个采样点之间为无效语音片段的起点;
连续至少m个音频能量值小于等于最小静默值,并且连续至少n个音频能量值大于最小静默值,m个采样点与n个采样点之间无采样点,m个采样点与n个采样点之间为无效语音片段的终点。
优选地,p=q=m=n。
优选地,所述获取原始语音文件中音频能量值低于最小静默值的无效语音片段包括:
将原始语音文件等时间间隔分割形成多段分割单元,每个分割单元设置多个采样点,在采样点采集音频能量值;
连续至少a个分割单元内的平均音频能量值大于最小静默值,并且连续至少b个分割单元内的平均音频能量值小于等于最小静默值,a个分割单元与b个分割单元之间无分割单元,a个分割单元与b个分割单元之间为无效语音片段的起点;
连续至少c个分割单元内的平均音频能量值小于等于最小静默值,并且连续至少d个分割单元内的平均音频能量值大于最小静默值,c个分割单元与d个分割单元之间无分割单元,c个分割单元与d个分割单元之间为无效语音片段的终点。
优选地,a=b=c=d。
优选地,获取原始语音文件的摘要信息;
计算还原语音文件的摘要信息;
比对原始语音文件的摘要信息和还原语音文件的摘要信息是否相同。
优选地,获取原始语音文件的长度;
计算还原语音文件的长度,计算无效语音片段的长度,将还原语音文件的长度和无效语音片段的长度求和;
比对原始语音文件的长度与求和后的还原语音文件的长度和无效语音片段的长度是否相等。
优选地,获取有效语音片段的位置信息,基于有效语音片段的位置信息拼接有效语音片段。
优选地,计算有效语音片段的片段名称,片段名称由当前时间戳加多位随机数字进行异或运算产生。
优选地,获取原始语音文件的文件名称,将文件名称赋予还原语音文件。
本发明还提出一种语音文件裁剪还原装置,包括:
设置模块,用于设置最大静默时间和最小静默值;
语音获取模块,用于获取原始语音文件;
片段获取模块,获取原始语音文件中音频能量值低于最小静默值的无效语音片段;
判断模块,用于判断无效语音片段时长是否大于最大静默时间;
裁剪模块,用于当无效语音片段时长大于最大静默时间,对无效语音片段的起点和终点进行裁剪,获得有效语音片段;
还原模块,用于顺序拼接多个有效语音片段,获得还原语音文件。
本发明还提出一种语音文件裁剪还原设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-10中任一项所述方法的步骤。
本发明还提出一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-10中任一项所述方法的步骤。
本发明的语音文件裁剪还原方法、装置、设备和存储介质,识别语音文件中的静音部分,在语音裁剪时,可以从静音部分裁剪,保证语音片段的完整性,避免出现断词的现象,提高语音分析结果的正确率。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所指出的结构来实现和获得。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一种语音文件裁剪还原方法的流程图;
图2为本发明实施例无效语音片段起点和终点获取的流程图;
图3为本发明实施例语音文件裁剪还原的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地说明,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
语音活动检测(voiceactivitydetection,vad)目的是从声音信号流里识别和消除长时间的静音期,以达到在不降低业务质量的情况下节省话路资源的作用,本实施例基于python编程语言的pydub开源语音处理工具,采用vad语音激活检测技术对语音文件进行裁剪。
参照图1,本实施例中的语音文件裁剪还原方法,包括以下几个步骤。
首先获取原始语音文件,原始语音文件内可能包含有一个或多个静音段。
配置vad裁剪参数信息,具体是设置最大静默时间(单位:毫秒),即允许的最大静音时长,以及设置最小静默值dbspl(声压:spl,soundpressurelevels),音频能量值小于等于最小静默值则认为是静音,如果音频能量值大于最小静默值则不认为是静音。
获取原始语音文件中音频能量值低于最小静默值的片段,该片段表示静音段,需要裁减删除,将该类片段确定为无效语音片段。原始语音文件往往存在多个无效语音片段,遍历整个原始语音文件,则获得多个无效语音片段。
判断无效语音片段时长是否大于最大静默时间。如果无效语音片段时长大于最大静默时间,该无效语音片段会对后续的语音分析工作造成影响,需要将该无效语音片段裁剪出去,因此对该无效语音片段的起点和终点进行裁剪并剔除,获得有效语音片段;将所有的无效语音片段裁剪出去后,得到多段有效语音片段,再顺序拼接多个有效语音片段,获得还原语音文件,并将还原语音文件发送至预定的存储位置。如果无效语音片段时长小于等于最大静默时间,该无效语音片段由于过小而不会对后续的语音分析工作造成影响,因此该无效语音片段可以保留下来。
理想的静音能量值为0,故上述最小静默值理想状态下取0,然而,采集音频的场景中往往有一定强度的背景音,这种单纯的背景音应当认为是静音,但其能量值显然不为0,因此,实际采集到的音频其背景音通常有一定的基础能量值。
一般采集到的原始语音文件在起始处有一小段静音,长度一般为几百毫秒,这一小段静音是估计最小静默值的基础。在估计最小静默值时,选取一定数量的帧比如前100帧语音数据(这些是“静音”),计算其平均能量值,然后加上一个经验值或乘以一个大于1的系数,由此得到经验能量值。设置最小静默值的大小与经验能量值的大小相等,这个最小静默值就是判断一帧语音是否是静音的基准,大于这个值就是有效语音,小于等于这个值就是静音。上述加上一个经验值或乘以一个大于1的系数不是必须的,可以直接设置最小静默值的大小等于平均能量值的大小。
另外也可以直接根据经验设置最小静默值,分贝范围可参考:
0-20分贝很静,几乎感觉不到;
20-40分贝安静,犹如轻声絮语;
40-60分贝一般,普通室内谈话;
试听一下当前的原始语音文件,根据经验选择适当大小的最小静默值,例如22分贝。这样就不需要采集并计算原始语音文件起始处一小段静音的平均能量值,提高了裁剪还原的效率。
最大静默时间可以根据经验以及当前原始语音文件中静音段的时长预估,确保将较长的无效语音片段裁剪出去。
获取原始语音文件中音频能量值低于最小静默值的无效语音片段,需要获取无效语音片段起点和终点,无效语音片段的起点也即有效语音片段的终点,无效语音片段的终点也即有效语音片段的起点,参照图2,无效语音片段起点和终点的获取具体包括以下步骤。
语音片段是一个以时间为自变量的一维连续函数,计算机处理的语音数据是语音信号按时间排序的采样值序列,这些采样值的大小同样表示了语音信号在采样点处的能量。
采样点的音频能量值通常使用采样值的平方,一段包含多个采样点的语音的音频能量值可以定义为其中各采样值的平方和,一段包含多个采样点的语音的平均能量值可以定义为所述平方和除以采样点的个数。
这样,一段语音的音频能量值既与其中的采样值大小有关,又与其中包含的采样点数量有关。为了考察音频能量值的变化,需要先将语音信号按照固定时长比如20毫秒进行分割,每个分割单元称为帧,每帧中包含数量相同的采样点,然后计算每帧语音的平均能量值。
遍历整段音频,判断是否有连续a帧的平均能量值大于最小静默值,如果没有则向后移动3帧继续判断,如果有,移动至下一帧,判断是否有连续b帧的平均能量值小于等于最小静默值,如果没有,如果没有则向后移动3帧继续判断。判断是否有连续c帧的平均能量值小于等于最小静默值,如果没有,如果没有则向后移动3帧继续判断,如果有,移动至下一帧,判断是否有连续d帧的平均能量值大于最小静默值,如果没有,如果没有则向后移动3帧继续判断。
如果连续的a帧平均能量值较大,大于最小静默值,随后连续的b帧平均能量值较小,小于等于最小静默值,a帧和b帧之间没有其他帧,可以认为a帧和b帧之间是无效语音片段的起点;同样的,连续的c帧平均能量值较小,小于等于最小静默值,随后连续的d帧平均能量值较大,大于最小静默值,c帧和d帧之间没有其他帧,可以认为c帧和d帧之间是无效语音片段的终点。
其中,a、b、c和d的取值可以相等,也可以互不相等,具体根据当前语音文件适应性设置。
根据上述步骤得到语音文件中无效语音片段的起点和终点位置,就可对语音文件的无效语音片段裁剪,得到多个完整的有效语音片段。
无效语音片段起点和终点的获取还可以是另外一种方法,步骤如下。
在原始语音文件上等时间间隔设置采样点,在采样点采集音频能量值。
连续至少p个音频能量值大于最小静默值,并且连续至少q个音频能量值小于等于最小静默值,p个采样点与q个采样点之间无采样点,p个采样点与q个采样点之间的任意一点为无效语音片段的起点;
连续至少m个音频能量值小于等于最小静默值,并且连续至少n个音频能量值大于最小静默值,m个采样点与n个采样点之间无采样点,m个采样点与n个采样点之间的任意一点为无效语音片段的终点。
其中,p、q、m和n的取值可以相等,也可以互不相等,具体根据当前语音文件适应性设置。
上述a、b、c、d、p、q、m和n,其大小决定了端点检测的灵敏度,a、b、c、d、p、q、m和n的值越小,起点和终点检测的灵敏度越高,反之越低。语音应用的场景不同,起点和终点检测的灵敏度也应该被设置为不同的值。例如,在声控遥控器的应用中,由于语音指令一般都是简单的控制指令,中间出现逗号或句号等较长停顿的可能性很小,所以提高端点检测的灵敏度是合理的,p、q、m和n设置为较小值,对应的音频时长一般为200-400毫秒左右。在大段的语音听写应用中,由于中间会出现逗号或句号等较长时间的停顿,宜将端点检测的灵敏度降低,此时p、q、m和n值设置为较大值,对应的音频时长一般为1500-3000毫秒。所以a、b、c、d、p、q、m和n的值,在实际中应该做成可调整的,它的取值要根据语音应用的场景来选择。
为了实现对多个有效语音片段顺序拼接,需要记录多个有效语音片段的时间顺序,因此建立索引文件,索引文件包括每个有效语音片段的位置信息,位置信息即是有效语音片段在整个原始语音文件中的顺序位置,还原时,基于位置信息顺序拼接多个有效语音片段,
另外索引文件还包括每个有效语音片段的片段名称,片段名称由当前时间戳(timestamp)加6位随机数字进行异或运算产生,随机数字的个数可以根据实际情况自行设定,保证有效语音片段的唯一性和随机性。
进一步地,需要对还原语音文件进行校验,校验还原语音文件的长度是否正确,校验还原语音文件有无丢失内容。
首先获取原始语音文件的长度,再计算还原语音文件的长度和无效语音片段的长度,将还原语音文件的长度和无效语音片段的长度求和,比对原始语音文件的长度与求和后的还原语音文件的长度和无效语音片段的长度是否相等,如果相等,则没有丢失语音片段,如果不相等,则说明丢失了语音片段,需要进行检查。
关于校验还原语音文件有无丢失内容,首先获取原始语音文件的摘要信息,再计算还原语音文件的摘要信息,比对原始语音文件的摘要信息和还原语音文件的摘要信息是否相同,如果相同,则说明还原语音文件没有丢失内容,如果不同,则说明还原语音文件丢失了内容。
因此在索引文件中,还包括原始语音文件的长度和原始语音文件的摘要信息,便于对还原语音文件进行校验。
另外索引文件中还包括原始语音文件的文件名称,当还原语音文件生成后,将文件名称赋予还原语音文件。
本发明的实施例还提出了一种语音文件裁剪还原装置,包括:
设置模块,用于设置最大静默时间和最小静默值;
语音获取模块,用于获取原始语音文件;
片段获取模块,获取原始语音文件中音频能量值低于最小静默值的无效语音片段;
判断模块,用于判断无效语音片段时长是否大于最大静默时间;
裁剪模块,用于当无效语音片段时长大于最大静默时间,对无效语音片段的起点和终点进行裁剪,获得有效语音片段;
还原模块,用于顺序拼接多个有效语音片段,获得还原语音文件。
下面举一实施例说明语音文件裁剪还原方法。
向语音文件裁剪还原装置输入原始语音文件的路径和还原语音文件的输出路径。
语音获取模块基于原始语音文件的路径获取到原始语音文件,获取原始语音文件的文件名称、摘要信息和长度。
建立索引文件,索引文件包括原始语音文件的文件名称、摘要信息和长度。将索引文件存储,索引文件采用json数据结构保存。
索引文件结构如下所示:
设置最大静默时间为1000毫秒。
采集原始语音文件起始处一小段静音,选取前100帧语音数据,计算其平均能量值为22分贝,然后将22分贝乘以1.2,由此得到经验能量值为26.4,则设置最小静默值为26.4。
在原始语音文件上等时间间隔设置采样点,时间间隔为20毫秒,在采样点采集音频能量值。若连续至少5个音频能量值大于最小静默值26.4,并且连续至少5个音频能量值小于等于最小静默值26.4,5个音频能量值大于最小静默值26.4的采样点与5个音频能量值小于等于最小静默值26.4采样点之间无采样点,则这10个采样点中间位置为无效语音片段的起点;
连续至少5个音频能量值小于等于最小静默值26.4,并且连续至少5个音频能量值大于最小静默值26.4,5个音频能量值小于等于最小静默值26.4的采样点与5个音频能量值大于最小静默值26.4采样点之间无采样点,则这10个采样点的中间位置为无效语音片段的终点。
参照图3,遍历整个原始语音文件,得到ab、cd、ef、gh四个无效语音片段,分别计算ab、cd、ef、gh四个静音段的时长,再将ab、cd、ef、gh四个静音段的时长分别与最大静默时间1000毫秒对比,得出ab静音段时长小于1000毫秒,cd静音段时长大于1000毫秒,ef静音段时长大于1000毫秒,gh静音段时长小于1000毫秒,则应当将ab、gh静音段保留,cd、ef静音段裁剪出去,因此引用pydub模块在c、d、e、f四个位置进行裁剪,cd、ef无效语音片段脱离原始语音文件,将cd、ef无效语音片段剔除出去,得到jc、de和fk三段有效语音片段,分别计算三个有效语音片段的片段名称和位置信息,将三个有效语音片段的片段名称和位置信息存储进入索引文件中。
同时对多个语音文件进行裁剪还原,为了防止不同语音文件之间发生错乱,或者得到多个有效语音片段后不是立即还原,而是一段时间后再进行还原,就需要对裁剪得到有效语音片段临时存储,因此将三个有效语音片段和索引文件存储。
还原时,首先向语音文件裁剪还原装置输入三个有效语音片段和索引文件存储路径,将三个有效语音片段和索引文件调出,基于三个有效语音片段的位置信息顺序拼接,得到还原语音文件。
计算还原语音文件的摘要信息,将还原语音文件的摘要信息与索引文件中的摘要信息进行比对,判断还原语音文件有无丢失内容。
计算还原语音文件的长度和无效语音片段的长度,将还原语音文件的长度和无效语音片段的长度求和,比对索引文件中的长度与求和后的还原语音文件的长度和无效语音片段的长度是否相等,判断有无丢失语音片段。
若还原语音片段比对通过,将还原语音文件存入还原语音文件的输出路径。
本发明的实施例提出了一种语音文件裁剪还原设备,包括:处理器、存储器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,例如语音文件裁剪还原程序。所述处理器执行所述计算机程序时实现上述语音文件裁剪还原方法实施例中的步骤,或者,所述处理器执行所述计算机程序时实现上述各装置实施例中各模块/单元的功能。
示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述裁剪还原设备中的执行过程。
所述语音文件裁剪还原设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述语音文件裁剪还原设备可包括,但不仅限于,处理器、存储器。例如所述语音文件裁剪还原设备还可以包括输入输出设备、网络接入设备、总线等。
所称处理器可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述语音文件裁剪还原设备的控制中心,利用各种接口和线路连接整个语音文件裁剪还原设备的各个部分。
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述语音文件裁剪还原设备的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
所述语音文件裁剪还原设备集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
起点商标作为专业知识产权交易平台,可以帮助大家解决很多问题,如果大家想要了解更多知产交易信息请点击 【在线咨询】或添加微信 【19522093243】与客服一对一沟通,为大家解决相关问题。
此文章来源于网络,如有侵权,请联系删除