7

如果已知确切的样本存在于 wav 中的某处(但可能与其他声音混合),则 FFT 是否有可能在较长的 wav 中找到一个小 wav 样本的出现?

编辑

(在收到两个回复后):如果我有一个包含所有已知声音的库,可以在较大的 WAV 中,并希望在该 WAV 中找到它们中的每一个的出现,该怎么办?换句话说,我知道可以混入大 wav 的所有可能的声音,并希望找到它们的出现?

4

4 回答 4

5

这完全取决于您要查找的内容以及要查找的内容。

  • 如果您正在寻找一个与较大的 WAV 文件块完全相同的样本,逐位,那么您可以直接搜索这些值。
  • 如果它是完全相同的声音,但样本不准确(例如,将 MP3 的剪辑与同一首歌的 WAV 匹配),您可以使用cross-correlation轻松找到它。通过使用 FFT 方法而不是显式地将样本相乘和求和的“朴素”方法,可以显着加快互相关。
  • 如果您正在寻找与其他声音混合的短样本,仍然可以使用互相关,但这取决于其他声音是否会影响匹配。对于具有简单样本且没有效果的数码钢琴,直接进入数码录音机,这可能会奏效。
  • 但是,如果声音经过了任何类型的滤波、极性反转或相移,则效果不会很好,因为波形会发生变化。因此,如果钢琴是通过扬声器演奏然后用麦克风录制的,这不是一个可行的解决方案。

在这种情况下,更好的方法是使用短时傅里叶变换(STFT) 创建记录的频谱图,以及您正在寻找的东西的频谱图,然后两张图片。频谱图是声音频谱随时间变化的幅度的 2D 图像,然后您可以进行匹配。(这可能是一种迂回的方式来做一些有更专业算法的事情,但我不知道它会被称为什么。);)

你能在某处上传一些声音片段吗?

于 2009-07-13T14:24:48.683 回答
3

我假设您的精确值并不意味着样本值精确。如果它是精确的样本值,那么搜索样本值将是一件简单的事情,既快速又高效。

如果您正在寻找有贡献的声音,最好的方法是使用称为“卷积”的数学过程。基本上,取您试图在大样本中找到的样本,有效地将其放在大样本旁边,然后进行关联。对每个样本位置执行此操作。您将由此得到一条曲线,该曲线将在样本所在的位置具有明显的尖峰。它的计算量很大,但是计算机的速度很快,所以它是可行的。

但是 - 这是假设样本来自两种情况的相同记录。从两个不同的位置拾取鼓声,即使是相同的鼓声,也不会产生很好的相关性。

希望有帮助。

于 2009-05-16T14:38:00.363 回答
0

不完全像你定义的那样,如果它与其他声音混合,这就是原因;考虑波与其逆波精确混合的影响;结果是平淡的反应。波的混合可以具有单调功能,即以一种无法恢复的方式有效地用另一种波掩盖一个波。

也就是说,可能有一种方法可以表征波的“签名”,使其可能出现在合成的波文件中,但该签名将取决于波文件的长度以及在某种程度上是什么类型预计将在其上进行组合。

您的问题可能与确定一件作品的样本是否存在于另一件复合作品中有关。一般来说,是的,FFT 可用于确定给定波的“特征”,并能够从另一个波中提取该“特征”;它们对某些事情有好处(例如频移;它只是在 FFT 上显示为位移),但对其他事情不是很好(例如,改变频率调制;原始的高(或不均匀)带宽压缩信号)。换句话说:FFT 是检测样本“幼稚”使用的好方法,但如果他知道这是使用的检测技术,则确定的重采样器可以修改原始样本,使其难以通过 FFT 检测。

于 2009-05-15T19:37:08.717 回答
0

如果您知道样本的确切性质(以位为单位的长度等),那么很有可能。如果它以任何方式发生变化,那么您将首先要做很多工作。

由于 WAV 文件的编码方式(按轨道顺序 - 所以你得到第一个轨道的第一批位,然后是第二个轨道的第一批位,然后是第一个轨道的第二批位)

这显然可以重复尽可能多的轨道。如果您知道您要查找的 WAV 文件是在其中一个轨道中专门编码的,那么您可以隔离每个轨道并对其执行操作。

显然,如果您的样本在速度、速度、音高等方面有所不同,那么它将具有不同的位签名,因此您必须对音轨进行归一化。

于 2009-05-15T19:40:10.943 回答