我在互联网上绝望地搜索了一些关于在另一个声音中检测声音的材料。比如说,我有一个录制的短声音(可能是任何东西,语音片段,音乐片段,噪音,它们的组合或其他东西)和一个较长的样本,其中包含该声音的某个地方。问题是,声音可能与一些环境声音部分混合。不过我知道,尽管与其他声音混合,这正是我之前录制的样本。
我可以使用哪种算法来执行此类搜索?
我在互联网上绝望地搜索了一些关于在另一个声音中检测声音的材料。比如说,我有一个录制的短声音(可能是任何东西,语音片段,音乐片段,噪音,它们的组合或其他东西)和一个较长的样本,其中包含该声音的某个地方。问题是,声音可能与一些环境声音部分混合。不过我知道,尽管与其他声音混合,这正是我之前录制的样本。
我可以使用哪种算法来执行此类搜索?
我不知道您是否熟悉统计信号处理,因此假设您不熟悉,我会写下我的答案。我在这里解释的所有内容都可以在任何有关统计的书中得到更好的介绍。我会推荐Kay 关于检测理论的书。我首先通过重新表述您提出的两点来总结您的问题,首先是综合英语,然后是信号处理的角度。
您可以访问两个信号:
你说你知道你在找什么(),但你不知道它“淹死”有多严重()在你正在观察的()。从这一点开始,我首先要尝试的是匹配滤波器 (MF) 方法。我不能肯定它会解决你的问题,因为你没有给我们任何关于. 我可以肯定地说,从理论和编程的角度来看,这是最简单的方法,而且很有可能奏效。如果这不起作用,那么您可以再次回到这里。有趣的部分将从那里开始:)
但是现在,让我们关注匹配的过滤器。更短,所以你应该能够采取连续的快照长度与,每个表示. 从以及那些快照,您可以构建第三个信号长度,每个样本定义如下:
如果真的在,那么你可能会看到一个明显的最大值, 在指数包含的快照. 如果不是,有两个可能的结论:
如果您的确切样本存在,您希望在信号和录制的短声音之间使用循环互相关:
https://en.wikipedia.org/wiki/Cross-correlation
因为它是相关性的度量,所以请考虑如果归一化互相关的绝对值在结果中超过 0.7,那么您的信号很可能位于该索引处。
如果数据集相对较小,则可以使用求和公式计算互相关,并且可以使用傅里叶变换和 fft 计算以提高更大数据集的速度: