音频数据处理方法、装置、设备以及存储介质转让专利

申请号 : CN202210471428.9

文献号 : CN114827756B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 曹启云杨咏臻黄佳维

申请人 : 北京百度网讯科技有限公司

摘要 :

本公开提供了一种音频数据处理方法、装置、设备及存储介质,涉及人工智能技术领域,尤其涉及智能媒体和视频流技术领域。具体实现方案为:获取待处理音频数据;对所述待处理音频数据进行语音活动检测VAD,得到VAD结果;根据所述VAD结果在所述待处理音频数据中查找第一目标音频片段;根据所述第一目标音频片段对所述待处理音频数据进行切分。在本公开实施例中,根据VAD结果可以在待处理音频数据查找用于进行切分的第一目标音频片段,根据查找到的第一目标音频片段可以更加灵活地对待处理音频数据进行切分,得到更加准确的切分结果。

权利要求 :

1.一种音频数据处理方法,包括:

获取待处理音频数据;所述待处理音频数据是基于实时产生的媒体流数据提取得到的,且所述待处理音频数据存储在第一存储单元中;

从所述第一存储单元的待处理音频数据中每次读取第二时长的检测片段进行语音活动检测VAD,得到VAD结果;所述VAD结果存储在第二存储单元中;

根据所述VAD结果在所述待处理音频数据中查找第一目标音频片段;

根据所述第一目标音频片段对所述待处理音频数据进行切分,包括:将所述第一存储单元中的所述待处理音频数据在所述第一目标音频片段的起点和终点处切分;将所述第一目标音频片段的起点之前的数据保存为一个第二目标音频片段;从所述第一存储单元中删除所述第一目标音频片段;从所述第一目标音频片段的终点开始继续累计所述第一存储单元中的所述待处理音频数据的音频时长。

2.根据权利要求1所述的方法,其中,根据所述VAD结果在所述待处理音频数据中查找第一目标音频片段,包括:在根据所述第一存储单元和/或所述第二存储单元确定所述待处理音频数据对应的音频时长达到第一时长的情况下,根据所述VAD结果在所述待处理音频数据中查找第一目标音频片段。

3.根据权利要求2所述的方法,其中,从所述第一存储单元的待处理音频数据中每次读取第二时长的检测片段进行语音活动检测VAD,得到VAD结果,包括:得到所述检测片段的静音标记,所述静音标记用于表示所述检测片段为静音状态或非静音状态;

将所述检测片段的静音标记存入所述第二存储单元中,以得到所述VAD结果。

4.根据权利要求1至3中任一项所述的方法,其中,根据所述VAD结果在所述待处理音频数据中查找第一目标音频片段,包括:根据所述VAD结果所包括的待处理音频数据中检测片段的静音标记,在所述待处理音频数据中查找第一目标音频片段,所述第一目标音频片段包括所述待处理音频数据中的一个静音状态的检测片段或多个连续的静音状态的检测片段。

5.根据权利要求4所述的方法,其中,根据所述VAD结果所包括的待处理音频数据中检测片段的静音标记,在所述待处理音频数据中查找第一目标音频片段,包括:在所述待处理音频数据对应的第一音频时间范围内查找静音片段作为所述第一目标音频片段,所述静音片段中包括一个静音状态的检测片段或多个连续的静音状态的检测片段,所述第一音频时间范围对应的音频时长小于所述待处理音频数据对应的音频时长。

6.根据权利要求5所述的方法,其中,在所述待处理音频数据对应的第一音频时间范围内查找静音片段作为所述第一目标音频片段,包括:在所述第一音频时间范围内存在多个静音片段的情况下,确定对应的音频时长最长的静音片段作为所述第一目标音频片段。

7.根据权利要求4所述的方法,其中,根据所述VAD结果所包括的待处理音频数据中检测片段的静音标记,在所述待处理音频数据中查找第一目标音频片段,包括:在所述待处理音频数据对应的第一音频时间范围内不存在静音片段的情况下,在所述待处理音频数据对应的第二音频时间范围内查找所述第一目标音频片段,所述静音片段中包括一个静音状态的检测片段或多个连续的静音状态的检测片段。

8.根据权利要求7所述的方法,其中,在所述待处理音频数据对应的第二音频时间范围内查找所述第一目标音频片段,包括:在所述第二音频时间范围内,将从所述待处理音频数据对应的第一音频时间点向前查找到的第一个静音片段作为所述第一目标音频片段,所述第一音频时间范围为从所述第一音频时间点到所述待处理音频数据的终点的时间范围,所述第二音频时间范围为从所述第一音频时间点到所述待处理音频数据的起点的时间范围。

9.根据权利要求4所述的方法,其中,根据所述VAD结果所包括的待处理音频数据中检测片段的静音标记,在所述待处理音频数据中查找第一目标音频片段,包括:在所述待处理音频数据对应的第二音频时间点所属的检测片段是静音状态的情况下,在所述待处理音频数据对应的第三音频时间范围内查找所述第一目标音频片段的终点,在所述待处理音频数据的第四音频时间范围内查找所述第一目标音频片段的起点,并基于所述终点和所述起点确定所述第一目标音频片段,所述第三音频时间范围为从所述第二音频时间点到所述待处理音频数据的终点的时间范围,所述第四音频时间范围为从所述第二音频时间点到所述待处理音频数据的起点的时间范围。

10.根据权利要求9所述的方法,其中,在所述待处理音频数据的第三音频时间范围内查找所述第一目标音频片段的终点,包括以下之一:在所述第三音频时间范围内,将从所述第二音频时间点向后查找到的第一个非静音状态的检测片段的起点作为所述第一目标音频片段的终点;

在所述第三音频时间范围内未查找到非静音状态的检测片段的情况下,将所述第三音频时间范围的终点作为所述第一目标音频片段的终点。

11.根据权利要求9或10所述的方法,其中,在所述待处理音频数据的第四音频时间范围内查找所述第一目标音频片段的起点,包括以下之一:在所述第四音频时间范围内,将从所述第二音频时间点向前查找到的第一个非静音状态的检测片段的终点作为所述第一目标音频片段的起点;

在所述第四音频时间范围内未查找到非静音状态的检测片段的情况下,将所述第四音频时间范围的起点作为所述第一目标音频片段的起点。

12.根据权利要求1至3、或、5至10中任一项所述的方法,其中,根据所述第一目标音频片段对所述待处理音频数据进行切分,包括:基于所述第一目标音频片段的起点和终点对所述待处理音频数据进行切分。

13.根据权利要求3所述的方法,其中,还包括以下之一:

在所述待处理音频数据的全部检测片段均是静音状态的情况下,删除第一存储单元中的所述待处理音频数据;

在所述待处理音频数据的全部检测片段均是非静音状态的情况下,将第一存储单元中的所述待处理音频数据保存为一个第二目标音频片段。

14.根据权利要求1至3、或、5至10、或、13中任一项所述的方法,获取待处理音频数据,包括:通过进程从媒体流数据中提取所述待处理音频数据,不同的媒体流数据通过不同的进程处理。

15.根据权利要求14所述的方法,其中,所述进程包括第一线程、第二线程和第三线程,不同线程之间通过存储单元交互数据;其中:所述第一线程,用于从媒体流数据中提取原始音频数据,对所述原始音频数据进行解码处理,将解码后得到的待处理音频数据存入第一存储单元中,将所述原始音频数据存入第三存储单元中;

所述第二线程,用于从第一存储单元中读取所述待处理音频数据进行VAD,将VAD结果存入第二存储单元中;

所述第三线程,用于在检测到所述第一存储单元中存储的待处理音频数据的音频时长达到第一时长的情况下,根据所述VAD结果在所述待处理音频数据中查找第一目标音频片段,并根据所述第一目标音频片段对所述待处理音频数据进行切分。

16.根据权利要求1至3、或、5至10、或、13、或、15中任一项所述的方法,还包括:在第三存储单元存储的原始音频数据中,获取与所述待处理音频数据的第二目标音频片段对应的可播放音频数据。

17.一种音频数据处理装置,包括:

获取模块,用于获取待处理音频数据;所述待处理音频数据是基于实时产生的媒体流数据提取得到的,且所述待处理音频数据存储在第一存储单元中;

VAD模块,用于从所述第一存储单元的待处理音频数据中每次读取第二时长的检测片段进行语音活动检测VAD,得到VAD结果;所述VAD结果存储在第二存储单元中;

查找模块,用于根据所述VAD结果在所述待处理音频数据中查找第一目标音频片段;

切分模块,用于根据所述第一目标音频片段对所述待处理音频数据进行切分,包括:将所述第一存储单元中的所述待处理音频数据在所述第一目标音频片段的起点和终点处切分;将所述第一目标音频片段的起点之前的数据保存为一个第二目标音频片段;从所述第一存储单元中删除所述第一目标音频片段;从所述第一目标音频片段的终点开始继续累计所述第一存储单元中的所述待处理音频数据的音频时长。

18.根据权利要求17所述的装置,其中,

所述查找模块用于在根据所述第一存储单元和/或所述第二存储单元确定所述待处理音频数据对应的音频时长达到第一时长的情况下,根据所述VAD结果在所述待处理音频数据中查找第一目标音频片段。

19.根据权利要求18所述的装置,其中,所述VAD模块用于得到所述检测片段的静音标记,所述静音标记用于表示所述检测片段为静音状态或非静音状态;将所述检测片段的静音标记存入所述第二存储单元中,以得到所述VAD结果。

20.根据权利要求17至19中任一项所述的装置,其中,所述查找模块用于根据所述VAD结果所包括的待处理音频数据中检测片段的静音标记,在所述待处理音频数据中查找第一目标音频片段,所述第一目标音频片段包括所述待处理音频数据中的一个静音状态的检测片段或多个连续的静音状态的检测片段。

21.根据权利要求20所述的装置,其中,所述查找模块包括:

第一查找子模块,用于在所述待处理音频数据对应的第一音频时间范围内查找静音片段作为所述第一目标音频片段,所述静音片段中包括一个静音状态的检测片段或多个连续的静音状态的检测片段,所述第一音频时间范围对应的音频时长小于所述待处理音频数据对应的音频时长。

22.根据权利要求21所述的装置,其中,所述第一查找子模块用于在所述第一音频时间范围内存在多个静音片段的情况下,确定对应的音频时长最长的静音片段作为所述第一目标音频片段。

23.根据权利要求20所述的装置,其中,所述查找模块还包括:

第二查找子模块,用于在所述待处理音频数据对应的第一音频时间范围内不存在静音片段的情况下,在所述待处理音频数据对应的第二音频时间范围内查找所述第一目标音频片段,所述静音片段中包括一个静音状态的检测片段或多个连续的静音状态的检测片段。

24.根据权利要求23所述的装置,其中,所述第二查找子模块用于在所述第二音频时间范围内,将从所述待处理音频数据对应的第一音频时间点向前查找到的第一个静音片段作为所述第一目标音频片段,所述第一音频时间范围为从所述第一音频时间点到所述待处理音频数据的终点的时间范围,所述第二音频时间范围为从所述第一音频时间点到所述待处理音频数据的起点的时间范围。

25.根据权利要求20所述的装置,其中,所述查找模块还包括:

第三查找子模块,用于在所述待处理音频数据对应的第二音频时间点所属的检测片段是静音状态的情况下,在所述待处理音频数据对应的第三音频时间范围内查找所述第一目标音频片段的终点,在所述待处理音频数据的第四音频时间范围内查找所述第一目标音频片段的起点,并基于所述终点和所述起点确定所述第一目标音频片段,所述第三音频时间范围为从所述第二音频时间点到所述待处理音频数据的终点的时间范围,所述第四音频时间范围为从所述第二音频时间点到所述待处理音频数据的起点的时间范围。

26.根据权利要求25所述的装置,其中,所述第三查找子模块用于在所述待处理音频数据的第三音频时间范围内查找所述第一目标音频片段的终点,包括以下之一:在所述第三音频时间范围内,将从所述第二音频时间点向后查找到的第一个非静音状态的检测片段的起点作为所述第一目标音频片段的终点;

在所述第三音频时间范围内未查找到非静音状态的检测片段的情况下,将所述第三音频时间范围的终点作为所述第一目标音频片段的终点。

27.根据权利要求25或26所述的装置,其中,所述第三查找子模块用于在所述待处理音频数据的第四音频时间范围内查找所述第一目标音频片段的起点,包括以下之一:在所述第四音频时间范围内,将从所述第二音频时间点向前查找到的第一个非静音状态的检测片段的终点作为所述第一目标音频片段的起点;

在所述第四音频时间范围内未查找到非静音状态的检测片段的情况下,将所述第四音频时间范围的起点作为所述第一目标音频片段的起点。

28.一种电子设备,包括:

至少一个处理器;以及

与所述至少一个处理器通信连接的存储器;其中,

所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1‑16中任一项所述的方法。

29.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1‑16中任一项所述的方法。

说明书 :

音频数据处理方法、装置、设备以及存储介质

技术领域

[0001] 本公开涉及人工智能技术领域,尤其涉及智能媒体、视频流技术领域。

背景技术

[0002] 随着第五代通信(5th‑Generation,5G)技术的普及,实时视频流技术得到了飞速发展和广泛的应用,直播的用户越来越多。但是,很多直播的内容、时长等无法控制,用户在直播过程中可能会为了增加流量而涉及各种敏感话题。平台需要有效的手段实时监控直播内容,例如对视频流中的语音进行审核,以阻止此类行为的发生。

发明内容

[0003] 本公开提供了一种音频数据处理方法、装置、设备以及存储介质。
[0004] 根据本公开的一方面,提供了一种音频数据处理方法,包括:
[0005] 获取待处理音频数据;
[0006] 对所述待处理音频数据进行语音活动检测VAD,得到VAD结果;
[0007] 根据所述VAD结果在所述待处理音频数据中查找第一目标音频片段;
[0008] 根据所述第一目标音频片段对所述待处理音频数据进行切分。
[0009] 根据本公开的另一方面,提供了一种音频数据处理装置,包括:
[0010] 获取模块,用于获取待处理音频数据;
[0011] VAD模块,用于对所述待处理音频数据进行语音活动检测VAD,得到VAD结果;
[0012] 查找模块,用于根据所述VAD结果在所述待处理音频数据中查找第一目标音频片段;
[0013] 切分模块,用于根据所述第一目标音频片段对所述待处理音频数据进行切分。
[0014] 根据本公开的再一方面,提供了一种电子设备,包括:
[0015] 至少一个处理器;以及
[0016] 与至少一个处理器通信连接的存储器;其中,
[0017] 存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行以上任一项的方法。
[0018] 根据本公开的再一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,计算机指令用于使计算机执行根据以上任一项的方法。
[0019] 根据本公开的再一方面,提供了一种计算机程序产品,包括计算机程序,计算机程序在被处理器执行时实现根据以上任一项的方法。
[0020] 应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。

附图说明

[0021] 附图用于更好地理解本方案,不构成对本公开的限定。其中:
[0022] 图1是根据本公开一实施例的音频数据处理方法的流程示意图;
[0023] 图2是根据本公开另一实施例的音频数据处理方法的流程示意图;
[0024] 图3是根据本公开另一实施例的音频数据处理方法的流程示意图;
[0025] 图4是根据本公开另一实施例的音频数据处理方法的流程示意图;
[0026] 图5是根据本公开另一实施例的音频数据处理方法的流程示意图;
[0027] 图6是根据本公开另一实施例的音频数据处理方法的流程示意图;
[0028] 图7是根据本公开另一实施例的音频数据处理方法的流程示意图;
[0029] 图8是根据本公开另一实施例的音频数据处理方法的流程示意图;
[0030] 图9是根据本公开一实施例的音频数据处理装置的结构示意图;
[0031] 图10是根据本公开另一实施例的音频数据处理装置的结构示意图;
[0032] 图11是根据本公开另一实施例的音频数据处理装置的结构示意图;
[0033] 图12是应用本公开实施例的音频数据处理方法的系统的结构示意图;
[0034] 图13是多种缓存的示意图;
[0035] 图14是根据本公开实施例的音频数据处理方法的示例性流程的示意图;
[0036] 图15是用来实现本公开实施例的音频数据处理方法的电子设备的框图。

具体实施方式

[0037] 以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
[0038] 图1是根据本公开一实施例的音频数据处理方法的流程示意图。该方法可以包括:
[0039] S101、获取待处理音频数据;
[0040] S102、对所述待处理音频数据进行语音活动检测(Voice Activity Detection,VAD)得到VAD结果;
[0041] S103、根据所述VAD结果在所述待处理音频数据中查找第一目标音频片段;
[0042] S104、根据所述第一目标音频片段对所述待处理音频数据进行切分。
[0043] 在本公开实施例中,原始音频数据中可以包括语音、非语音等模拟信号。对原始音频数据进行解码等处理,可以将模拟信号转换为数字信号,得到待处理音频数据例如二进制码。基于待处理音频数据进行后续的检测、查找、切分等处理。在一种示例中,可以对媒体流等可能具有语音信号的数据进行编码,从媒体流数据中提取原始音频数据(也可以称为音频流数据),再对原始音频数据进行解码处理,得到待处理音频数据。媒体流数据可以包括直播数据等实时产生的流数据。
[0044] 在本公开实施例中,VAD还可以称为语音端点检测、语音边界检测等。利用VAD可以检测语音的状态是静默状态还是激活状态。静默状态可以称为静音状态,激活状态可以称为非静音状态。利用VAD对待处理音频数据进行检测,可以从待处理音频数据中识别出静音状态的数据和/或非静音状态的数据。也就是说,VAD结果可以包括待处理音频数据中哪些数据是静音状态的数据,哪些数据是非静音状态的数据。
[0045] 在本公开实施例中,根据VAD结果可以在待处理音频数据查找用于进行切分的第一目标音频片段,根据查找到的第一目标音频片段可以更加灵活地对待处理音频数据进行切分,得到更加准确的切分结果。这样,有利于使得切分得到的片段具有较为完整的语义。例如,在需要语音审核的场景中,采用本公开实施例的音频数据处理方法,可以减少将同一句话切分到不同片段的概率,进而提高后续基于切分得到的片段进行语音审核的准确性,减少漏报错报。再如,在超长视频的切分场景,采用本公开实施例的音频数据处理方法,也可以尽量避免同一句话被切分到不同的片段中。
[0046] 图2是根据本公开另一实施例的音频数据处理方法的流程示意图。该实施例的方法包括上述音频数据处理方法实施例的一个或多个特征。在一种可能的实施方式中,所述待处理音频数据存储在第一存储单元中,所述VAD结果存储在第二存储单元中。在本公开实施例中,存储单元可以为缓存,也可以为队列等具有存储功能的单元。
[0047] 在一种可能的实施方式中,在S103中,根据所述VAD结果在所述待处理音频数据中查找第一目标音频片段,包括:
[0048] S201、在根据所述第一存储单元和/或所述第二存储单元确定所述待处理音频数据对应的音频时长达到第一时长的情况下,根据所述VAD结果在所述待处理音频数据中查找第一目标音频片段。
[0049] 在本公开实施例中,待处理音频数据的音频时长可能随时时间的变化逐渐增加。例如,从实时的媒体流数据中提取待处理音频数据,当提取的待处理音频数据达到一定时长阈值例如60秒(s)后,可以对音频时长为60s的待处理音频数据进行后续的检测和查找等处理。第一存储单元和/或第二存储单元可以是缓存,也可以是队列。可以对缓存或队列中不断累计的待处理音频数据的音频时长进行监测,以确定待处理音频数据的音频时长是否达到设置的第一时长。
[0050] 在本公开实施例中,第一时长可以表示音频时长的阈值。第一时长的具体数值可以根据需求灵活设置。例如,第一时长可以60s、120s等,也可以为其他数值,本公开实施例中不做限定。
[0051] 在本公开实施例中,可以先将待处理音频数据存入第一存储单元,再对第一存储单元中的待处理音频数据进行VAD,将VAD结果存入第二存储单元。也可以在提取出待处理音频数据后,一边将提取的待处理音频数据存入第一存储单元,一边对提取的数据进行VAD,将VAD结果存入第二存储单元。每次进行VAD的数据可以认为是待处理音频数据中的一个检测片段。检测片段的长度可以根据需求进行设置。例如,检测片段的时长可以为10毫秒(ms)、20毫秒、30毫秒等。第二存储单元中的VAD结果和第一存储单元中的待处理音频数据的检测片段具有对应关系。
[0052] 在本公开实施例中,可以检测第一存储单元以确定待处理音频数据的音频时长是否达到第一时长,也可以检测第二存储单元以确定待处理音频数据的音频时长是否达到第一时长。
[0053] 例如,第一存储单元为第一缓存,第二存储单元为第二缓存,将第一缓存和/或第二缓存的存储上限设置为第一时长。如果检测到第一缓存和/或第二缓存达到存储上限,可以表示待处理音频数据的音频时长达到第一时长。
[0054] 再如,第一存储单元为第一队列,第二存储单元为第二队列,将第一队列和/或第二队列的存储上限设置为第一时长。如果检测到第一队列和/或第二队列达到存储上限,可以表示待处理音频数据的音频时长达到第一时长。
[0055] 再如,检测第一存储单元的当前时刻存入的数据与第一存储单元的起点存入的数据的时间差。如果检测到该时间差为第一时长如60s,可以表示待处理音频数据的音频时长达到第一时长。
[0056] 再如,检测从第二存储单元的当前时刻存入的VAD结果到第一存储单元的起点存入的VAD结果的数据量。如果检测到的数据量达到第一时长如60s应该存入的数据量,可以表示待处理音频数据的音频时长达到第一时长。
[0057] 在本公开实施例中,通过多个存储单元分别存储待处理音频数据和VAD结果,能够按照一定时长例如第一时长控制每次处理的待处理音频数据的时间长短,从而控制能够处理速度,有利于更加灵活地进行切分。
[0058] 在本公开实施例中,S201可以是循环处理的过程,每当待处理音频数据的音频时长达到第一时长的情况下,就根据VAD结果在第一时长的待处理音频数据中查找第一目标音频片段。然后利用第一目标音频片段进行切分。这样,可以更加适用于待处理音频数据不断增加的场景,例如从直播数据等媒体流数据中不断提取待处理音频数据的场景。
[0059] 在一种可能的实施方式中,所述待处理音频数据为脉冲编码调制(Pulse Code Modulation,PCM)数据。PCM的过程可以包括:将话音、图像等模拟信号每隔一定时间进行取样,使其离散化,将抽样值按分层单位四舍五入取整量化,并将抽样值按一组二进制码来表示抽样脉冲的幅值。在本公开实施例中,可以对原始音频数据进行PCM得到PCM数据。也可以采用与PCM类似的其他方式对原始音频数据进行解码处理得到待处理数据,本公开实施例不做具体限定。
[0060] 在一种可能的实施方式中,如图3所示,在S102中,对所述待处理音频数据进行语音活动检测VAD,得到VAD结果,包括:
[0061] S301、从所述第一存储单元的待处理音频数据中每次读取第二时长的检测片段进行VAD,得到所述检测片段的静音标记,所述静音标记用于表示所述检测片段为静音状态或非静音状态;
[0062] S302、将所述检测片段的静音标记存入所述第二存储单元中,以得到所述VAD结果。
[0063] 在本公开实施例中,例如,VAD结果包括PCM数据的各检测片段的静音标记,所述静音标记用于表示PCM数据的检测片段为静音状态或非静音状态。可以预先设置每次读取的检测片段的第二时长。例如,检测片段的第二时长可以为10毫秒(ms)、20毫秒、30毫秒等。如果待处理的待处理音频数据总时长为60s,每次读取的检测片段的时长为30ms,则检测片段的数量为2000个。如果对每个检测片段进行VAD得到1个静音标记,在第二存储单元中可以包括2000个静音标记。
[0064] 在本公开实施例中,S301和S302可以是循环处理的过程,对于第一时长的待处理音频数据,可以每次处理一个第二时长的检测片段,直至将第一时长的待处理音频数据处理完为止。
[0065] 在本公开实施例中,静音标记可以用于表示某个检测片段是静音状态或非静音状态。例如,检测片段L1的静音标记为1表示L1是静音状态,检测片段L1的静音标记为0表示L1是非静音状态。再如,检测片段L1的静音标记为0表示L1是静音状态,检测片段L1的静音标记为1表示L1是非静音状态。静音标记的具体取值及其对应的含义可以根据需求灵活设置,在本公开实施例中不做限定。
[0066] 在本公开实施例中,按照一定时长对待处理音频数据进行分段检测,能够得到准确的VAD结果,通过灵活设置检测片段的时长,可以调整检测精度、准确性和处理速度等,能够适用于更加丰富的应用场景。
[0067] 在一种可能的实施方式中,如图4所示,在S103或S201中,根据所述VAD结果在所述待处理音频数据中查找第一目标音频片段,包括:
[0068] S401、根据所述VAD结果所包括的待处理音频数据中检测片段的静音标记,在所述待处理音频数据中查找第一目标音频片段,所述第一目标音频片段包括所述待处理音频数据中的一个静音状态的检测片段或多个连续的静音状态的检测片段。
[0069] 在本公开实施例中,如果待处理的待处理音频数据包括多个检测片段,对这些检测片段分别进行VAD之后,可以得到这些检测片段对应的静音标记。例如,待处理音频数据包括N个检测片段,其中可能M个检测片段为静音状态。M是小于或等于N的正整数。如果仅查找到一个静音状态的检测片段,例如M等于1,可以将这个静音状态的检测片段作为查找到的第一目标音频片段。如果查找到多个静音状态的检测片段,例如M大于1,可以基于这M个静音状态的检测片段确定第一目标音频片段。如果这M个静音状态的检测片段是连续的,将可以将这M个静音状态的检测片段作为一个第一目标音频片段。如果这M个静音状态的检测片段是不连续的,可以根据这M个检测片段中连续的静音状态的检测片段长度确定第一目标音频片段。例如,这M个检测片段中,分为M1个连续的静音状态的检测片段和M2个连续的静音状态的检测片段。其中M1和M2是大于或等于1的正整数,并且M等于M1与M2之和。如果M2的时长大于M1的时长,可以将M2作为第一目标音频片段。
[0070] 在本公开实施例中,根据待处理音频数据中一个或多个检测片段的静音标记,确定出的第一目标音频片段可以包括一个静音状态的检测片段或多个连续的静音状态的检测片段,能够基于待处理音频数据中静音状态的第一目标音频片段进行切分,得到更加准确的切分结果,减少冗余。
[0071] 在一种可能的实施方式中,如图5所示,在S401中,根据所述VAD结果所包括的待处理音频数据中检测片段的静音标记,在所述待处理音频数据中查找第一目标音频片段,包括:
[0072] S501、在所述待处理音频数据对应的第一音频时间范围内查找静音片段作为所述第一目标音频片段,所述静音片段中包括一个静音状态的检测片段或多个连续的静音状态的检测片段,所述第一音频时间范围对应的音频时长小于所述待处理音频数据对应的音频时长。
[0073] 在本公开实施例中,在第一存储单元中的待处理音频数据达到第一时长的情况下,可以从待处理音频数据的起点开始查找第一目标音频片段,也可以从某个设定的时间点开始查找。基于开始查找的时间点可以确定优先查找第一目标音频片段的时间范围,即第一音频时间范围。第一音频时间范围可以是第一时长的待处理音频数据的一部分。第一音频时间范围对应的音频时长小于待处理音频数据对应的第一时长。例如,第一音频时间范围可以位于该待处理音频数据的后半部分,也可以位于该待处理音频数据的前半部分,还可以位于该待处理音频数据的中间部分。如果在第一音频时间范围内查找不到符合要求的第一目标音频片段,可以再在待处理音频数据的第一音频时间范围之外的其他时间范围内查找。优先在一定时间范围内查找第一目标音频片段,有利于快速确定第一目标音频片段的位置,可以提高查找速度,进而提高整体的数据处理速度。
[0074] 在一种可能的实施方式中,如果以第一音频时间点作为查找开始的时间点,则所述第一音频时间范围可以包括从所述待处理音频数据的第一音频时间点到所述待处理音频数据的终点的时间范围。例如,需要处理的待处理音频数据的总时长即第一时长为60s,第一音频时间点为第40s,第一音频时间范围可以为第40s到第60s。再如,需要处理的待处理音频数据的第一时长为120s,第一音频时间点为第60s,第一音频时间范围可以为第60s到第120s。将优先查找的第一音频时间范围设定为从某个时间点开始到待处理音频数据的终点,有利于在待处理音频数据的靠近结束的位置处快速查找出第一目标音频片段。在循环处理待处理音频数据的情况下,能够减少重复检测,更快速和合理查找出第一目标音频片段。例如,第一次切分之后,保留在第一存储单元中的待处理音频数据的起点是非静音数据;第二次切分时,可以不从待处理音频数据的起点开始寻找第一目标音频片段,从而减少重复检测,提高检测效率。
[0075] 在一种可能的实施方式中,在S501中,在所述待处理音频数据对应的第一音频时间范围内查找静音片段作为所述第一目标音频片段,包括:在所述第一音频时间范围内存在多个静音片段的情况下,确定对应的音频时长最长的静音片段作为所述第一目标音频片段。例如,如果待处理音频数据的第一时长为60s,在第一音频时间范围第40s到第60s查找到多个静音片段M1、M2和M3。M1的时长为3s,M2的时长为10s,M3的时长为1s,则可以保留时长最长的M2作为后续的第一目标音频片段。保留第一音频时间范围内时长最长的静音片段,后续能够基于第一音频时间范围内最长时间的静音片段进行合理切分,并且有利于更大程度地减少冗余数据。
[0076] 在一种可能的实施方式中,在S401中,根据所述VAD结果所包括的待处理音频数据中检测片段的静音标记,在所述待处理音频数据中查找第一目标音频片段,包括:
[0077] S502、在所述待处理音频数据对应的第一音频时间范围内不存在静音片段的情况下,在所述待处理音频数据对应的第二音频时间范围内查找所述第一目标音频片段,所述静音片段中包括一个静音状态的检测片段或多个连续的静音状态的检测片段。
[0078] 在本公开实施例中,待处理音频数据可以包括第一音频时间范围,也可以包括第二音频时间范围。第一音频时间范围和第二音频时间范围不同,二者可以具有边界点,也可以不具有边界点。第二音频时间范围的查找优先级可以低于第一音频时间范围。
[0079] 在本公开实施例中,第一音频时间范围和第二音频时间范围的划分方式有多种。一种方式中,以第一时长的待处理音频数据中的某个时间点作为划分位置,将待处理音频数据的一部分划分第一音频时间范围,另一部分划分为第二音频时间范围。例如,待处理音频数据的第一时长为60s,在第40s处划分,第0s到第40s为第二音频时间范围,第40s到第
60s为第一音频时间范围。另一种方式中,第一音频时间范围和第二音频时间范围不包括待处理音频数据的端点,不具有边界点。例如,待处理音频数据的第一时长为60s,第10s到第
30s为第二音频时间范围,第35s到第50s为第一音频时间范围。上述划分方式仅是示例而非限制,具体可以根据实际应用场景的需求进行选择。如果待处理音频数据的第一音频时间范围内不存在合适的第一目标音频片段,可以扩大查找范围,在待处理音频数据的第二音频时间范围内查找,有利于得到更合适的第一目标音频片段。
[0080] 在一种可能的实施方式中,第一音频时间范围和第二音频时间范围可以以第一音频时间点为分界点。所述第一音频时间范围包括从所述待处理音频数据的第一音频时间点到所述待处理音频数据的终点的时间范围。所述第二音频时间范围包括从所述待处理音频数据的第一音频时间点到所述待处理音频数据的起点的时间范围。例如,需要处理的待处理音频数据的第一时长为60s,第一音频时间点为第40s,第一音频时间范围可以为第40s到第60s,第二音频时间范围可以为第0s到第40s。再如,需要处理的待处理音频数据的即第一时长为120s,第一音频时间点为第60s,第一音频时间范围可以为第60s到第120s,第二音频时间范围可以为第0s到第60s。将补充查找的第二音频时间范围设定为从某个时间点开始到待处理音频数据的起点,有利于第一音频时间范围内查找结果不合适的情况下,利用待处理音频数据的其他时间范围辅助查找,得到更加合适的第一目标音频片段,进而实现后续的切分。
[0081] 在一种可能的实施方式中,在S502中,在所述待处理音频数据对应的第二音频时间范围内查找所述第一目标音频片段,包括:在所述第二音频时间范围内,将从所述待处理音频数据对应的第一音频时间点向前查找到的第一个静音片段作为所述第一目标音频片段,所述第一音频时间范围为从所述第一音频时间点到所述待处理音频数据的终点的时间范围,所述第二音频时间范围为从所述第一音频时间点到所述待处理音频数据的起点的时间范围。这样有利于提高查找效率,并且在第一时长的待处理音频数据中保留较长的数据。此外,也可以从第二音频时间范围的起点开始向后检测,以查找出第二音频时间范围所有的静音片段,并保留时长最长的静音片段,这样有利于最大程度的减少冗余。
[0082] 在一种可能的实施方式中,在S401中,根据所述VAD结果所包括的待处理音频数据中检测片段的静音标记,在所述待处理音频数据中查找第一目标音频片段,包括:
[0083] S503、在所述待处理音频数据对应的第二音频时间点所属的检测片段是静音状态的情况下,在所述待处理音频数据对应的第三音频时间范围内查找所述第一目标音频片段的终点,在所述待处理音频数据的第四音频时间范围内查找所述第一目标音频片段的起点,并基于所述终点和所述起点确定所述第一目标音频片段,所述第三音频时间范围为从所述第二音频时间点到所述待处理音频数据的终点的时间范围,所述第四音频时间范围为从所述第二音频时间点到所述待处理音频数据的起点的时间范围。
[0084] 在本公开实施例中,S503可以与S501和/或S502结合执行,S503也可以独立于S501和/或S502执行。例如,先执行S501,再执行S503。再如,先执行S502,再执行S503。再如,先执行S501和S502,再执行S503。再如,仅执行S503,不执行S501和S502。第二音频时间点与第一音频时间点可以相同,也可以不同。第三音频时间范围与第一音频时间范围可以相同,也可以不同。第四音频时间范围与第二音频时间范围可以相同,也可以不同。
[0085] 在本公开实施例中,如果在待处理音频数据中,将第二音频时间点作为分界点划分第三音频时间范围和第四音频时间范围,并且第二音频时间点所属的检测片段是静音状态,表示在第二音频时间点向前查找还可能存在与第二音频时间点所属的检测片段连续的静音状态的检测片段。在第一音频时间点所属的检测片段是静音状态的情况下,从第二音频时间点向前查找第一目标音频片段的起点,向后查找第一目标音频片段的终点,能够扩大第一目标音频片段的时间范围,有利于更大程度的减少数据冗余。例如,需要处理的待处理音频数据的第一时长为60s,第二音频时间点为第40s,第三音频时间范围可以为第40s到第60s,第四音频时间范围可以为第0s到第40s。如果第40s是所属的检测片段是静音状态,在第0s到第40s内,可以从第40s向前查找,在第20s属于非静音状态。并且,在第40s到第60s内,可以从第40s向后查找,在第50s属于非静音状态。这种情况下,第一目标音频片段可以为包括从第20s到第50s的连续的静音状态的检测片段。
[0086] 在一种可能的实施方式中,在S503中,在所述待处理音频数据的第三音频时间范围内查找所述第一目标音频片段的终点,包括以下之一:
[0087] 在所述第三音频时间范围内,将从所述第二音频时间点向后查找到的第一个非静音状态的检测片段的起点作为所述第一目标音频片段的终点;
[0088] 在所述第三音频时间范围内未查找到非静音状态的检测片段的情况下,将所述第三音频时间范围的终点作为所述第一目标音频片段的终点。
[0089] 例如,需要处理的待处理音频数据的第一时长为60s,第二音频时间点为第40s,第三音频时间范围可以为第40s到第60s。从第二音频时间点第40s向后查找,如果在第40s到第60s内最先查找到的第一个非静音状态的检测片段的起点为第45s,可以将该第45s作为的第一目标音频片段的终点。如果在第40s到第60s内查找不到非静音状态的检测片段,表示在第40s到第60s内的检测片段均为静音状态,可以将第60s作为第一目标音频片段的终点。
[0090] 在本公开实施例中,将第三音频时间范围的从第二音频时间点向后查找到的第一个非静音状态的检测片段的起点作为第一目标音频片段的终点,可以快速确定第一目标音频片段的终点。进一步地,如果第三音频时间范围的检测片段全部是静音状态,将第三音频时间范围的终点作为第一目标音频片段的终点,能够最大化第一目标音频片段的范围。
[0091] 在一种可能的实施方式中,在S503中,在所述待处理音频数据的第四音频时间范围内查找所述第一目标音频片段的起点,包括以下之一:
[0092] 在所述第四音频时间范围内,将从所述第二音频时间点向前查找到的第一个非静音状态的检测片段的终点作为所述第一目标音频片段的起点;
[0093] 在所述第四音频时间范围内未查找到非静音状态的检测片段的情况下,将所述第四音频时间范围的起点作为所述第一目标音频片段的起点。
[0094] 接上例,第四音频时间范围可以为第0s到第40s。从第二音频时间点第40s向前查找,如果在第0s到第40s内最先查找到的第一个非静音状态的检测片段的起点为第25s,可以将该第25s作为的切分音片段的起点。如果在第0s到第40s内查找不到非静音状态的检测片段,表示在第0s到第40s内的检测片段均为静音状态,可以将第0s作为第一目标音频片段的终点。
[0095] 上述的S501、S502和S503没有时序限制,可以根据需求灵活设置。
[0096] 在本公开实施例中,将第四音频时间范围的从第二音频时间点向前查找到的第一个非静音状态的检测片段的终点作为第一目标音频片段的起点,可以快速确定第一目标音频片段的起点。进一步地,如果第四音频时间范围的检测片段全部是静音状态,将第四音频时间范围的起点作为第一目标音频片段的起点,能够最大化第一目标音频片段的范围。
[0097] 在一种可能的实施方式中,在S104中,根据所述第一目标音频片段对所述待处理音频数据进行切分,包括:基于所述第一目标音频片段的起点和终点对所述待处理音频数据进行切分。
[0098] 例如,如果根据上述任意一种方式确定出的第一目标音频片段的时长小于第一时长,可以在基于第一目标音频片段的起点和终点对该第一时长的待处理音频数据进行切分。这样,有利于使得切分得到的第二目标音频片段具有较为完整的语义,并且较大程度的减少冗余。
[0099] 在一种可能的实施方式中,如图6所示,基于所述第一目标音频片段的起点和终点对所述待处理音频数据进行切分,包括:
[0100] S601、将所述第一存储单元中的所述待处理音频数据在所述第一目标音频片段的起点和终点处切分;
[0101] S602、将所述第一目标音频片段的起点之前的数据保存为一个第二目标音频片段;
[0102] S603、从所述第一存储单元中删除所述第一目标音频片段;
[0103] S604、从所述第一目标音频片段的终点开始继续累计所述第一存储单元中的所述待处理音频数据的音频时长。
[0104] 上述的S602、S603和S604没有时序限制,可以根据需求灵活设置。
[0105] 在本公开实施例中,可以利用第一目标音频片段的起点和终点,对第一存储单元中第一时长的待处理音频数据进行切分。将第一目标音频片段的起点之前的数据作为一个第二目标音频片段例如PCM片段,保存到设定的存储位置。删除该第一目标音频片段,并将第一目标音频片段的终点之后的数据保留在第一存储单元中累计下一次的待处理音频数据。
[0106] 例如,第一时长为60s,第一目标音频片段为第25s到第45s,则将第0s到第25s保存为一个第二目标音频片段,将第45s到第60s保留在第一缓存或第一队列中继续累计。这种情况下,第45s可以变为下一次需要处理的待处理音频数据的起点第0s,累计达到第一时长60s后再次开始在第一缓存或第一队列中查找第一目标音频片段并切分。以第一目标音频片段的起点和终点对第一存储单元中的待处理音频数据进行切分,将第一目标音频片段的起点之前的数据保存为一个第二目标音频片段,可以使得第二目标音频片段具有较为完整的语义,删除第一目标音频片段可以较大程度的减少冗余。
[0107] 在一种可能的实施方式中,该方法还包括以下之一:
[0108] 在所述待处理音频数据的全部检测片段均是静音状态的情况下,删除第一存储单元中的所述待处理音频数据;
[0109] 在所述待处理音频数据的全部检测片段均是非静音状态的情况下,将第一存储单元中的所述待处理音频数据保存为一个第二目标音频片段。
[0110] 例如,如果根据上述任意一种方式得到第一目标音频片段的时长例如60s等于第一时长,则第一时长的待处理音频数据的全部检测片段是静音状态,可以从第一存储单元例如第一缓存或第一队列中删除该第一时长的待处理音频数据。删除第一存储单元中全部为静音状态的待处理音频数据,可以较大程度地减少冗余数据。
[0111] 再如,如果根据上述任意一种方式查找不到第一目标音频片段,则第一时长的待处理音频数据的全部检测片段是非静音状态,可以直接在第一时长的待处理音频数据的终点处切分。从第一存储单元例如第一缓存或第一队列中提取出该第一时长的待处理音频数据,作为一个第二目标音频片段保存到设定的存储位置例如某个数据库中。保存该第二目标音频片段后,可以从该第一存储单元中的删除该第一时长的待处理音频数据。然后重新开始累计下一次需要处理的待处理音频数据。将第一存储单元中全部为非静音状态的待处理音频数据作为一个第二目标音频片段进行保存,可以较大程度地保持语音的完整性,有利于提高后续语音审核的准确性。
[0112] 在本公开实施例中,提取第二目标音频片段后可以将存储单元中已经保存为第二目标音频片段以及第一目标音频片段对应的数据删除。第一存储单元和第二存储单元的删除动作可以联动进行。例如,如果删除第一存储单元中第一时长的待处理音频数据,也删除第二存储单元中该第一时长的待处理音频数据对应的VAD结果。再如,如果删除第一存储单元中第一目标音频片段及其之前的数据,也删除第二存储单元中第一目标音频片段及其之前的数据对应的VAD结果。
[0113] 在一种可能的实施方式中,如图7所示,该方法还包括:
[0114] S701、在第三存储单元存储的原始音频数据中,获取与所述待处理音频数据的第二目标音频片段对应的可播放音频数据。
[0115] 在本公开实施例中,对媒体流数据进行解码可以得到原始视频数据(可以称为视频流数据)和原始音频数据(可以称为音频流数据)。其中,音频流数据包括可播放音频数据。在存储阶段,可以将原始音频数据转换的待处理音频数据保存到第一存储单元,将待处理音频数据的VAD结果保存到第二存储单元,将原始音频数据复制到第三存储单元中。例如,在第三缓存中可以保存与第一缓存中的待处理音频数据对应的可播放音频数据。再如,在第三队列中可以保存与第一队列中的待处理音频数据对应的可播放音频数据。这样,能够保存更加丰富的数据资源,便于利用可播放音频数据辅助审核,得到更加准确的审核结果。
[0116] 在本公开实施例中,第一存储单元、第二存储单元和第三存储单元的动作可以联动进行。例如,如果第二目标音频片段包括第一存储单元中第一时长的待处理音频数据中的第25s到第45s,可以对应地将第三存储单元中第一时长的原始音频数据的第25s到第45s切分为一个可播放音频数据。然后,可以将切分得到的可播放音频数据与第二目标音频片段对应地保存在设定的存储位置。
[0117] 在本公开实施例中,提取第二目标音频片段对应的可播放音频数据,便于后续作为审核的辅助数据,提取第二目标音频片段和可播放音频数据后可以将存储单元中已经保存的数据删除,从而减少对存储空间例如内存的占用,提高运算速度。如果删除第一存储单元中第一时长的待处理音频数据,也删除第二存储单元中该第一时长的待处理音频数据对应的VAD结果,还删除第三存储单元中该第一时长的待处理音频数据对应的原始音频数据。再如,如果删除第一存储单元中第一目标音频片段及其之前的数据,也删除第二存储单元中第一目标音频片段及其之前的数据对应的VAD结果,还删除第三存储单元中第一目标音频片段及其之前的数据对应的原始音频数据。
[0118] 在一种可能的实施方式中,如图8所示,S101包括:
[0119] S801、通过进程从媒体流数据中提取所述待处理音频数据,不同的媒体流数据通过不同的进程处理。
[0120] 首先,可以通过进程从媒体流数据中提取原始音频数据,不同的媒体流数据可以通过不同的进程处理。例如,使用多媒体视频处理工具例如FFmpeg(Fast Forward Moving Picture Experts Group,快速前进动态图像专家组)的API(Application Programming Interface,应用程序编程接口),从媒体流中提取原始音频数据。
[0121] 然后,可以通过进程对原始音频数据进行解码处理得到待处理音频数据,从而实现通过不同进程从不同媒体流数据中提取待处理音频数据。这样,可以利用进程的并发处理能力,对多个媒体流并发地进行数据处理,从而减少计算资源利用率,提高处理媒体流数据的速度。进一步地,可以提高并发处理实时媒体流的数量。
[0122] 在一种可能的实施方式中,所述进程包括多个线程例如第一线程、第二线程和第三线程。不同线程之间通过存储单元交互数据。不同的线程可以负责不同的功能。例如,第一线程可以主要负责编解码处理。第二线程可以主要负责VAD。第三线程可以主要负责切分。这三个进程可以通过缓存或队列等存储单元交互数据。例如,这三个进程可以通过第一存储单元、第二存储单元和第三存储单元交互数据。
[0123] 在一种可能的实施方式中,第一线程,用于从媒体流数据中提取原始音频数据,对所述原始音频数据进行解码处理,将解码后得到的待处理音频数据存入第一存储单元中,将所述原始音频数据存入第三存储单元中。例如,第一线程可以对媒体流数据进行编解码处理,将编码得到的原始音频数据存入第三存储单元中,将对原始音频数据进行解码得到的待处理音频数据例如PCM数据存入第一存储单元中。
[0124] 在一种可能的实施方式中,第二线程,用于从第一存储单元中读取所述待处理音频数据进行VAD,将VAD结果存入第二存储单元中。
[0125] 在一种可能的实施方式中,第三线程,用于在检测到所述第一存储单元中存储的待处理音频数据的音频时长达到第一时长的情况下,根据所述VAD结果在所述待处理音频数据中查找第一目标音频片段,并根据所述第一目标音频片段对所述待处理音频数据进行切分。
[0126] 参见上述图1的步骤,第一线程可以执行S101,第二线程可以执行S102,第三线程可以执行S103和S104。参见上述图2的步骤,第三线程可以执行S201。参见上述图3的步骤,第二线程可以执行S301和S302。参见上述图4的步骤,第三线程可以执行S401。参见上述图5的步骤,第三线程可以执行S501、S502和S503的至少之一。参见上述图6的步骤,第三线程可以执行S601至S604。参见上述图7的步骤,第一线程可以执行S701,第三线程可以执行S702。参见上述图8的步骤,第一线程可以执行S801。
[0127] 此外进程内部还可以包括主线程,用于检测上述的三个线程是否存活,如果有线程不存活,就重建线程。
[0128] 在本公开实施例中,通过进程内多线程的方式,可以提高资源利用率、减少卡顿。
[0129] 图9是根据本公开一实施例的音频数据处理装置的结构示意图,该装置可以包括:
[0130] 获取模块901,用于获取待处理音频数据;
[0131] VAD模块902,用于对所述待处理音频数据进行语音活动检测VAD,得到VAD结果;
[0132] 查找模块903,用于根据所述VAD结果在所述待处理音频数据中查找第一目标音频片段;
[0133] 切分模块904,用于根据所述第一目标音频片段对所述待处理音频数据进行切分。
[0134] 在本公开实施例中,根据VAD结果可以在待处理音频数据查找用于进行切分的第一目标音频片段,根据查找到的第一目标音频片段可以更加灵活地对待处理音频数据进行切分,得到更加准确的切分结果。
[0135] 图10是根据本公开另一实施例的音频数据处理装置的流程示意图。该实施例的装置包括上述音频数据处理装置实施例的一个或多个特征。在一种可能的实施方式中,所述待处理音频数据存储在第一存储单元中,所述VAD结果存储在第二存储单元中;
[0136] 所述查找模块903用于在根据所述第一存储单元和/或所述第二存储单元确定所述待处理音频数据对应的音频时长达到第一时长的情况下,根据所述VAD结果在所述待处理音频数据中查找第一目标音频片段。
[0137] 在本公开实施例中,通过多个存储单元分别存储待处理音频数据和VAD结果,能够按照一定时长例如第一时长控制每次处理的待处理音频数据的时间长短,从而控制能够处理速度,有利于更加灵活地进行切分。
[0138] 在一种可能的实施方式中,所述VAD模块902用于从所述第一存储单元的待处理音频数据中每次读取第二时长的检测片段进行VAD,得到所述检测片段的静音标记,所述静音标记用于表示所述检测片段为静音状态或非静音状态;将所述检测片段的静音标记存入所述第二存储单元中,以得到所述VAD结果。
[0139] 在本公开实施例中,按照一定时长对待处理音频数据进行分段检测,能够得到准确的VAD结果,通过灵活设置检测片段的时长,可以调整检测精度、准确性和处理速度等,能够适用于更加丰富的应用场景。
[0140] 所述查找模块903用于根据所述VAD结果所包括的待处理音频数据中检测片段的静音标记,在所述待处理音频数据中查找第一目标音频片段,所述第一目标音频片段包括所述待处理音频数据中的一个静音状态的检测片段或多个连续的静音状态的检测片段。
[0141] 在本公开实施例中,根据待处理音频数据中一个或多个检测片段的静音标记,确定出的第一目标音频片段可以包括一个静音状态的检测片段或多个连续的静音状态的检测片段,能够基于待处理音频数据中静音状态的第一目标音频片段进行切分,得到更加准确的切分结果,减少冗余。
[0142] 在一种可能的实施方式中,如图10所示,所述查找模块903包括:第一查找子模块9031,用于在所述待处理音频数据对应的第一音频时间范围内查找静音片段作为所述第一目标音频片段,所述静音片段中包括一个静音状态的检测片段或多个连续的静音状态的检测片段,所述第一音频时间范围对应的音频时长小于所述待处理音频数据对应的音频时长。这样,优先在一定时间范围内查找第一目标音频片段,有利于快速确定第一目标音频片段的位置,可以提高查找速度,进而提高整体的数据处理速度。
[0143] 在一种可能的实施方式中,所述第一查找子模块9031用于在所述第一音频时间范围内存在多个静音片段的情况下,确定对应的音频时长最长的静音片段作为所述第一目标音频片段。这样,保留第一音频时间范围内时长最长的静音片段,后续能够基于第一音频时间范围内最长时间的静音片段进行合理切分,并且有利于更大程度地减少冗余数据。
[0144] 在一种可能的实施方式中,所述查找模块903还包括:第二查找子模块9032,用于在所述待处理音频数据对应的第一音频时间范围内不存在静音片段的情况下,在所述待处理音频数据对应的第二音频时间范围内查找所述第一目标音频片段,所述静音片段中包括一个静音状态的检测片段或多个连续的静音状态的检测片段。这样,如果待处理音频数据的第一音频时间范围内不存在合适的第一目标音频片段,可以扩大查找范围,在待处理音频数据的第二音频时间范围内查找,有利于得到更合适的第一目标音频片段。
[0145] 在一种可能的实施方式中,所述第二查找子模块9032用于在所述第二音频时间范围内,将从所述待处理音频数据对应的第一音频时间点向前查找到的第一个静音片段作为所述第一目标音频片段,所述第一音频时间范围为从所述第一音频时间点到所述待处理音频数据的终点的时间范围,所述第二音频时间范围为从所述第一音频时间点到所述待处理音频数据的起点的时间范围。这样有利于提高查找效率,并且在第一时长的待处理音频数据中保留较长的数据。
[0146] 在一种可能的实施方式中,所述查找模块903还包括:第三查找子模块9033,用于在所述待处理音频数据对应的第二音频时间点所属的检测片段是静音状态的情况下,在所述待处理音频数据对应的第三音频时间范围内查找所述第一目标音频片段的终点,在所述待处理音频数据的第四音频时间范围内查找所述第一目标音频片段的起点,并基于所述终点和所述起点确定所述第一目标音频片段,所述第三音频时间范围为从所述第二音频时间点到所述待处理音频数据的终点的时间范围,所述第四音频时间范围为从所述第二音频时间点到所述待处理音频数据的起点的时间范围。这样,从第二音频时间点向前查找第一目标音频片段的起点,向后查找第一目标音频片段的终点,能够扩大第一目标音频片段的时间范围,有利于更大程度的减少数据冗余。
[0147] 在一种可能的实施方式中,所述第三查找子模块9033用于在所述待处理音频数据的第三音频时间范围内查找所述第一目标音频片段的终点,包括以下之一:
[0148] 在所述第三音频时间范围内,将从所述第二音频时间点向后查找到的第一个非静音状态的检测片段的起点作为所述第一目标音频片段的终点;
[0149] 在所述第三音频时间范围内未查找到非静音状态的检测片段的情况下,将所述第三音频时间范围的终点作为所述第一目标音频片段的终点。
[0150] 在本公开实施例中,将第三音频时间范围的从第二音频时间点向后查找到的第一个非静音状态的检测的起点作为第一目标音频片段的终点,可以快速确定第一目标音频片段的终点。进一步地,如果第三音频时间范围的检测片段全部是静音状态,将第三音频时间范围的终点作为第一目标音频片段的终点,能够最大化第一目标音频片段的范围。
[0151] 在一种可能的实施方式中,所述第三查找子模块9033用于在所述待处理音频数据的第四音频时间范围内查找所述第一目标音频片段的起点,包括以下之一:
[0152] 在所述第四音频时间范围内,将从所述第二音频时间点向前查找到的第一个非静音状态的检测片段的终点作为所述第一目标音频片段的起点;
[0153] 在所述第四音频时间范围内未查找到非静音状态的检测片段的情况下,将所述第四音频时间范围的起点作为所述第一目标音频片段的起点。
[0154] 在本公开实施例中,将第四音频时间范围的从第二音频时间点向前查找到的第一个非静音状态的检测片段的终点作为第一目标音频片段的起点,可以快速确定第一目标音频片段的起点。进一步地,如果第四音频时间范围的检测片段全部是静音状态,将第四音频时间范围的起点作为第一目标音频片段的起点,能够最大化第一目标音频片段的范围。
[0155] 在一种可能的实施方式中,所述切分模块904用于基于所述第一目标音频片段的起点和终点对所述待处理音频数据进行切分。这样,有利于使得切分得到的第二目标音频片段具有较为完整的语义,并且较大程度的减少冗余。
[0156] 在一种可能的实施方式中,如图10所示,该装置还包括以下之一:
[0157] 删除模块1001,用于在所述待处理音频数据的全部检测片段均是静音状态的情况下,删除第一存储单元中的所述待处理音频数据;
[0158] 保存模块1002,用于在所述待处理音频数据的全部检测片段均是非静音状态的情况下,将第一存储单元中的所述待处理音频数据保存为一个第二目标音频片段。
[0159] 在本公开实施例中,删除第一存储单元中全部为静音状态的待处理音频数据,可以较大程度地减少冗余数据。将第一存储单元中全部为非静音状态的待处理音频数据作为一个第二目标音频片段进行保存,可以较大程度地保持语音的完整性,有利于提高后续语音审核的准确性。在第一目标音频片段处对该第一时长的待处理音频数据进行切分,有利于使得切分得到的第二目标音频片段具有较为完整的语义,并且较大程度的减少冗余。
[0160] 在一种可能的实施方式中,所述切分模块9043用于基于所述第一目标音频片段的起点和终点对所述待处理音频数据进行切分,包括:
[0161] 将所述第一存储单元中的所述待处理音频数据在所述第一目标音频片段的起点和终点处切分;
[0162] 将所述第一目标音频片段的起点之前的数据保存为一个第二目标音频片段;
[0163] 从所述第一存储单元中删除所述第一目标音频片段;
[0164] 从所述第一目标音频片段的终点开始继续累计所述第一存储单元中的所述待处理音频数据的音频时长。
[0165] 在本公开实施例中,以第一目标音频片段的起点和终点对第一存储单元中的待处理音频数据进行切分,将第一目标音频片段的起点之前的数据保存为一个第二目标音频片段,可以使得第二目标音频片段具有较为完整的语义,删除第一目标音频片段可以较大程度的减少冗余。
[0166] 在一种可能的实施方式中,如图10所示,获取模块901用于通过进程从媒体流数据中提取所述待处理音频数据,不同的媒体流数据通过不同的进程处理。这样,可以利用进程的并发处理能力,对多个媒体流并发地进行数据处理,从而减少计算资源利用率,提高处理媒体流数据的速度。
[0167] 在一种可能的实施方式中,所述进程包括第一线程、第二线程和第三线程,不同线程之间通过存储单元交互数据;其中:
[0168] 所述第一线程,用于从媒体流数据中提取原始音频数据,对所述原始音频数据进行解码处理,将解码后得到的待处理音频数据存入第一存储单元中,将所述原始音频数据存入第三存储单元中;
[0169] 所述第二线程,用于从第一存储单元中读取所述待处理音频数据进行VAD,将VAD结果存入第二存储单元中;
[0170] 所述第三线程,用于在检测到所述第一存储单元中存储的待处理音频数据的音频时长达到第一时长的情况下,根据所述VAD结果在所述待处理音频数据中查找第一目标音频片段,并根据所述第一目标音频片段对所述待处理音频数据进行切分。
[0171] 在本公开实施例中,通过进程内多线程的方式,可以提高资源利用率、减少卡顿。
[0172] 在一种可能的实施方式中,如图11所示,该装置还包括:存储模块1101,用于将原始音频数据存入第三存储单元中。存储模块1101还用于将原始音频数据转换得到的待处理音频数据存入第一存储单元中。存储模块1103还用于将对待处理音频数据进行VAD得到VAD结果存入第二存储单元中。这样,能够保存更加丰富的数据资源,便于利用可播放音频数据辅助审核,得到更加准确的审核结果。
[0173] 在一种可能的实施方式中,切分模块904还用于在第三存储单元存储的原始音频数据中,获取与所述待处理音频数据的第二目标音频片段对应的可播放音频数据。在本公开实施例中,切分模块提取第二目标音频片段对应的可播放音频数据,便于后续作为审核的辅助数据。提取第二目标音频片段和可播放音频数据后可以将存储单元中已经保存的数据删除,从而减少对存储空间例如内存的占用,提高运算速度。
[0174] 本公开实施例的音频数据处理装置的各模块、子模块的具体功能和示例的描述,可以参见上述音频数据处理处理方法实施例中对应步骤的相关描述,在此不再赘述。
[0175] 在媒体流场景中,监控实时媒体流例如直播的语音内容的主要方式可以包括人工审核、规则审核、人工智能(Artificial Intelligence,AI)能力审核等。其中,人工审核效率不高,且容易疲劳出现误判漏判,不适用于直播数量大的平台。规则审核依赖经过人工审核总结出的经验,形成专家系统,需要不断的补充修正,容易漏判。AI能力审核按照固定时长切分音频,导致一句话很大概率被切成两段,可能导致后续的AI模型无法正确的识别这句话是否是有风险的语音,从而造成误判漏判。
[0176] 本公开实施例提供的基于VAD算法的实时媒体流语音审核系统,可以使用本公开实施例中任一种音频数据处理方法。该系统可以结合流媒体技术和VAD(Voice Activity Detection)算法,节约计算资源,提高处理效率。利用流媒体技术可以实时的从媒体流中分离提取出音频数据,并通过编解码技术转换成需要的数据。利用VAD算法可以从带有噪声的语音中准确的定位出语音的开始点和结束点,从而尽可能的将两句话分开,以使得切分后的音频满足AI算法模型输入的要求。
[0177] 为了保证实时性和语音切分的合理性,基于VAD算法的实时媒体流语音审核系统可以包括以下几个部分,具体的系统组件与联动关系可以参见图12:
[0178] (1)媒体流音频提取编解码模块1201:运用音视频编解码技术,使用多媒体视频处理工具例如FFmpeg的API,从媒体流中提取出原始音频数据。并且,可以将每个原始音频数据(简称包)解码成待处理音频数据例如PCM原始数据(简称PCM数据),便于后续处理。在解码的同时,也可以将原始音频数据编码成可以播放的音频数据(简称可播放音频数据),可用作二次审核或者留存。其中,PCM数据可以保存到PCM缓存中,可播放音频数据可以保存在原音频数据缓存中。本示例中的缓存也可以为队列,下述以缓存为例进行说明,队列的原理是类似,可以参考缓存的示例。
[0179] (2)VAD模块1202:例如,可以将网页即时通信(Web Real‑Time Communication,WebRTC)中的VAD模块,单独提取出来集成到系统中。VAD模块的输入可以包括音频的PCM原始数据,时长可以固定为10ms、20ms、30ms等,非常短的一小段音频,VAD模块输出可以为0或1等静音标记,代表静音或非静音。在使用VAD模块进行检测之前,还可以对音频数据进行噪声抑制(Noise Suppression,NS)等处理,减少音频数据中的噪音信号。此外,VAD模块输出的静音标记可以保存在静音标记缓存中。
[0180] (3)音频切分模块1203:由于媒体流的实时性要求,媒体流一直在生成,没有固定的结束时间,不能等到媒体流停播之后再处理,并且VAD模块只接收很短的音频数据,所以在音频切分模块中可以根据VAD模块的输出实时的切分音频段例如PCM片段(第二目标音频片段的示例)。后续,可以将切分的音频段输入到AI模型进行审核,以确定该媒体流是合规,还是不合规。
[0181] 在通常情况下,通过FFmpeg的API处理媒体流的速度远远大于通过网络传递过来的流媒体数据的速度,因此可能出现中央处理器(Central Processing Unit,CPU)空闲等待。所以该可以创建多个进程同时处理多个媒体流,用高并发的方式可以解决硬件空闲等待的问题,从而使得硬件的功能以最大效能运转。在解码音频数据进行切分的同时,也可以通过编码技术保留对应的编码音频(可播放)片段数据,方便核对。
[0182] 在该系统中可以采用下述的方法寻找切分点以及实现方法:
[0183] 1、寻找合理的切分点
[0184] 如果固定按一定时长例如60s(假设AI模型的输入最长支持60s)切分音频,会将音频中大量的语句切分到两段音频段中,容易造成AI模型识别不准确。本公开实施例的方案可以更合理的切分。
[0185] 在本公开实施例的方案中,引入了WebRTC中的VAD技术,可以检测一小段音频(例如固定为10ms、20ms、30ms等)是否是静音,将识别出来的结果(例如,0表示非静音,1表示静音)存到缓存例如静音表示缓存(buffer)里,解码出来的待处理音频数据例如PCM数据也按前后顺序存到缓存例如PCM缓存里,并复制(copy)原始的音频数据到缓存例如原始数据缓存里。其中原始的音频数据可以是对媒体流数据进行编码得到的音频数据,也可以是对媒体流数据进行编码后再经过NS等处理后得到的音频数据。参见图13,为三种缓存的数据的示例,其中PCM数据中的0到7等数值可以表示PCM数据的每个检测片段的标号,检测片段的具体内容可以包括一些二进制码,对检测片段的具体内容进行VAD,可以确定该检测片段是静音状态还是非静音状态。如果静音标记缓存中,0表示非静音状态,1表示静音状态,则PCM缓存中的检测片段0至4为非静音状态,5至7为静音状态。
[0186] 参见图14,一种音频数据处理方法的具体流程可以包括:
[0187] S1401、接收数据包例如从媒体流数据中提取的音频数据。
[0188] S1402、判断缓存例如PCM缓存里的时长是否大于或等于设定阈值例如60S。如果是则执行S1403,否则返回执行S1401。
[0189] S1403、查找有没有静音片段。例如,根据VAD缓存中的静音标记在PCM缓存查找PCM数据中是否有静音片段。如果有静音片段,则执行S1404,如果没有静音片段,执行S1407。其中,每个静音片段中可以包括一个静音状态的检测片段或多个连续的静音状态的检测片段。
[0190] S1404、判断缓存里的时长中的第一音频时间范围例如第40s至第60s之间是否有静音片段。如果是,则执行S1405,否则执行S1406。
[0191] S1405、选取第一音频时间范围例如第40s至第60s之间最大(例如时长最长)的连续静音片段作为第一目标音频片段。第一目标音频片段也可以称为切分片段、分割片段、分割点等。然后,执行S1408。
[0192] S1406、选取第二音频时间范围例如第0s至第40s之间最大(例如时长最长)的连续静音片段作为第一目标音频片段。然后,执行S1408。
[0193] S1407、直接在终点处切分,例如在PCM数据的总时长终点第60s处切分。然后,执行S1408。
[0194] S1408、保存第二目标音频片段例如PCM片段和可播放音频数据例如原始音频数据中与第二目标音频片段对应的数据。
[0195] S1409、清除切分处之前的缓存。例如,在PCM缓存中将第一目标音频片段与其之前的已缓存的第二目标音频片段删除。在原始数据缓存中,将与第一目标音频片段与其之前的已缓存的第二目标音频片段对应的原始数据删除。在VAD缓存中,将与第一目标音频片段与其之前的已缓存的第二目标音频片段对应的VAD结果删除。
[0196] 参见图14,假设AI模型接收的最大长度为60s,每当缓存里的数据时长超过一定阈值60s时(用户可配置该阈值),可以对缓存里的数据进行切分。
[0197] 参见图14,可以判断这60s的缓存里数据是否都是静音或者非静音的。如果全是静音的可以直接清空掉缓存。如果全是非静音的,则直接切分,保存这60s的PCM数据和原始音频数据。
[0198] 如果缓存里数据包括静音和非静音的,可以在第40s‑第60s之间寻找切分点。选择第40s可以在总时长的三分之二处选择开始查找,防止切分出来的音频片段太短,提高系统的利用率,不容易生成一小段的噪声片段。在第40s‑第60s寻找最长的连续静音片段,按静音片段的前后作为切分点,可以使得切分的音频片段不太短,又尽可能的保证一句话不被切分到两段音频中。
[0199] 如果没有在第40s‑第60s之间寻找到静音片段,则可以从第40s处往前寻找,找到静音片段即可。这种情况下,可以不需要检测到最长的静音片段,因为第40s之后的20s时长已经够长了,肯定会被分开。
[0200] 每次切分后,可以将对应时段的三个缓存的数据清理掉,从而保证缓存的数据量一直小于等于60s。这样,可以在保证实时性的情况下也不会导致内存持续增长。在切分后会产生小于等于60s的PCM数据和原始数据,且尽可能的减少过短的音频碎片。
[0201] 2、并发
[0202] 通常情况下,音视频编解码和保存到磁盘的速度会远大于从网络中获取流数据的速度,造成了CPU空闲等待资源利用率不高的问题。并且,机器负载可能由于其他业务影响导致写磁盘速度偶尔变慢等问题。本示例的方案提供了并发架构,以解决机器资源利用率和子模块运行速度问题,提高了单机处理媒体流的并发数。
[0203] 1)多进程处理
[0204] 为了解决CPU空闲等待的问题,用户可以根据机器负载情况,自定义启动的进程数量,每个进程独立的拉取一个媒体流,且同一个媒体流只会被一个进程拉取。进程内部会对媒体流数据进行处理,最后输出使用VAD算法切分好的音频原始数据和PCM数据。
[0205] 2)多线程处理
[0206] 进程内部的运行过程如图12所示。如果每个模块之间是串行的,如果在接收一个媒体数据包后,某个模块由于环境问题运行的较缓慢,可能会导致整个媒体流的处理变慢,降低了实时性且容易丢失部分媒体流数据。常见的环境问题可能包括磁盘输入/输出(Input/Output,I/O)被其他程序影响、保存音频文件到网络存储上可能受网络波动影响等。为了提高处理速度,系统中的每个模块之间的交互可以通过本地缓存(或队列)进行交互,每个模块可以通过单独的一个线程执行。例如,线程1执行编解码模块的功能,解码得到PCM数据,编码得到可播放音频数据,并存放到相应的缓存(或队列)。线程2执行VAD检测模块的功能,每次读取一定时长例如20ms的PCM数据的片段,VAD识别得到每个片段的静音标记,并存放到相应的缓存(或队列)。线程3执行切分模块的功能,如果检查到缓存相应的缓存(或队列)达到设定时长,则执行切分。并且,主线程还可以检测三个线程是否存活,不存活就重建。三个线程可以通过上述的缓存(或队列)交互。这种情况下,单个模块的偶尔卡顿并不会影响系统整体运行的流畅性,也不会导致丢失部分流媒体数据。
[0207] 本公开实施例提供的方案,不仅能解决传统的实时媒体流语音审核方法的误报漏报、浪费人力的问题,还能解决AI模型审核的音频数据的一句话被切分到两段音频中导致识别不准确的问题。此外,通过机器上多进程、进程内多线程的方式,可以有效的提高资源利用率、避免卡顿导致的问题、提高并发处理实时媒体流数量。本公开实施例提供的方案,不仅能应用到审核中,还可以应用于超长视频的切分场景,避免同一句话被切分到不同的片段中。例如,应用在多个真实的线上系统中,可以降低人工审核的人力浪费,大幅提高AI模型识别的准确率。
[0208] 本公开的技术方案中,所涉及的用户个人信息的获取,存储和应用等,均符合相关法律法规的规定,且不违背公序良俗。
[0209] 根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
[0210] 图15示出了可以用来实施本公开的实施例的示例电子设备1500的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
[0211] 如图15所示,设备1500包括计算单元1501,其可以根据存储在只读存储器(ROM)1502中的计算机程序或者从存储单元1508加载到随机访问存储器(RAM)1503中的计算机程序,来执行各种适当的动作和处理。在RAM 1503中,还可存储设备1500操作所需的各种程序和数据。计算单元1501、ROM 1502以及RAM 1503通过总线1504彼此相连。输入/输出(I/O)接口1505也连接至总线1504。
[0212] 设备1500中的多个部件连接至I/O接口1505,包括:输入单元1506,例如键盘、鼠标等;输出单元1507,例如各种类型的显示器、扬声器等;存储单元1508,例如磁盘、光盘等;以及通信单元1509,例如网卡、调制解调器、无线通信收发机等。通信单元1509允许设备1500通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
[0213] 计算单元1501可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元1501的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元1501执行上文所描述的各个方法和处理,例如音频数据处理方法。例如,在一些实施例中,音频数据处理方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1508。在一些实施例中,计算机程序的部分或者全部可以经由ROM 1502和/或通信单元1509而被载入和/或安装到设备1500上。当计算机程序加载到RAM 1503并由计算单元1501执行时,可以执行上文描述的音频数据处理方法的一个或多个步骤。备选地,在其他实施例中,计算单元1501可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行音频数据处理方法。
[0214] 本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
[0215] 用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
[0216] 在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD‑ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
[0217] 为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入、或者触觉输入)来接收来自用户的输入。
[0218] 可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
[0219] 计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端‑服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
[0220] 应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
[0221] 上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。