查找音频的一部分何时在另一个音频中开始和结束

信息处理 声音的 指纹识别 声音识别
2022-02-08 14:44:15

我有两个音频文件,其中一个句子被两个不同的人朗读(比如唱歌)。所以它们有不同的长度。他们只是声乐,没有乐器。

A1:音频文件 1
A2:音频文件 2
例句: “Lorem ipsum dolor sit amet, ...”

示例音频文件的结构

我知道每个单词以 A1 开头和结尾的时间(以十进制秒为单位)。我需要自动找到每个单词在 A2 中开始和结束的时间。那么,如何在另一个具有不同持续时间(单词)和不同声音的音频(A2)中找到一个单词(在 A1 中)的声音?

2个回答

您可以考虑为此使用动态时间规整(DTW)。通常可行的一种方法如下:

  1. 根据所需的时间分辨率将两个音频划分为具有适当重叠的较小(分析)窗口
  2. 将音频从时域转换为倒谱。您可以计算 MFCC。
  3. 计算 DTW 以分析翘曲

我相信您并不真的想要信号处理(数学)解决方案来解决您的问题,相反,以下编程方法也可能会有所帮助。

假设 A2 数据集中的说话人,不改变词序,那么你知道第二组中的每个音频文件都有不同人说出的词数完全相同。

然后,您应该寻找一个体面的语音识别(语音到文本)库,该库至少具有将口语相互隔离的能力,并指示每个孤立词的开始和结束时间。你不需要知道他们在说什么,你所需要的只是他们彼此隔离

然后有了这样一个孤立集的输出,您将参考音频中的每个单词一一映射到测试集中对应的孤立单词。

根据隔离算法的成功率,你可能会得到错误的结果。无论如何,没有算法可以保证无错误隔离。

如果您需要更强大的方法,当然您可以寻找将口语单词作为文本输出的完整识别库。那么你现在会更好。