2016-12-14 86 views
-3

这里是一个例子,我会尽量使它尽可能简单。如何检查两个.wav文件是否包含相同的声音数据?

我有2个.wav/.mp3声音文件“A”和“B”。
“A”听起来像这样:“asdfasdafasfsaf DATA sdafsfdafsa”。
“B”听起来像这样:“DATA”。

现在我的问题是,如何检查“A”是否包含“B”?
我使用Visual Studio 2015并在C#中编码。没有第三方软件甚至有可能吗? 在此先感谢。

回答

0

这不但是一件小事:

  • 如果两个wav文件具有相同的采样频率,你是好去。如果没有,您必须重新采样以对应(使用工具或编程方式)
  • 找出两个文件实际数据的起始位置(这可能差别很大,请阅读wav文件头大小以及如何检测它们)
  • 阅读这两个文件的数据转换成字节数组

以上是相当多步0

  • 你的“样本”,你要寻找的,具有长度。该长度将成为目标字节数组的滑动窗口。
  • 如果您满意地搜索完全相同的样本(A的某些部分听起来像B),那么您可以对滑动窗口内容与参考样本进行哑比较(字节比较)。但是,如果您想在混音目标wav中找到您的示例(与其他声音或图层混合在一起,因此A的某些部分含有B,但它只是您在B发生时的索引时听到的x个内容之一)然后根据我的理解你正在进行快速和/或离散傅里叶变换,隐马尔可夫模型或任何数目的模式识别算法。毫无疑问,这里有无数人比我更聪明,他们在数学方面实际上可以说出理智的东西。只是...不是我。

直到数学部分,这是非常简单的,但真正的魔法开始时,当你实现的算法(S)你解决。当然,你可以根据你的需要,根据你的要求和你的数学背景/技能/耐心/ ...

一个小方面说明:“这是可能的,没有第三方软件”很少一个非常相关的问题。第三方软件并不是什么黑魔法,它只是由你和我这样的人编写的软件。不同之处在于,它有时是由非常聪明的人(通常是复数)编写的,并且经常在很长一段时间内开发和测试和完善,所以如果问题是“可以完成”,那么几乎总是“是”。如果问题是“我能在短时间内自己复制一个完整,复杂和高性能的图书馆”......呃...也许我猜。

相关问题