C# 如何检查两个.wav文件是否包含相同的声音数据?

C# 如何检查两个.wav文件是否包含相同的声音数据?,c#,audio,C#,Audio,这里有一个例子,我会尽量使它简单 我有2.wav/.mp3声音文件“A”和“B”。 “A”听起来像这样:“asdfasdafasfsafDATAsdafsfdafsa”。 “B”听起来像:“数据”” 现在我的问题是,如何检查“A”是否包含“B”? 我正在使用Visual Studio 2015并用C#编写代码。如果没有第三方软件,这是否可能? 提前感谢。不过这不是一件小事: 如果两个wav文件具有相同的采样频率,则可以继续。如果没有,则必须重新采样以对应(使用工具或编程方式) 找出两个文件的实

这里有一个例子,我会尽量使它简单

我有2.wav/.mp3声音文件“A”和“B”。
“A”听起来像这样:“asdfasdafasfsafDATAsdafsfdafsa”。
“B”听起来像:“数据”

现在我的问题是,如何检查“A”是否包含“B”?
我正在使用Visual Studio 2015并用C#编写代码。如果没有第三方软件,这是否可能?
提前感谢。

不过这不是一件小事:

  • 如果两个wav文件具有相同的采样频率,则可以继续。如果没有,则必须重新采样以对应(使用工具或编程方式)
  • 找出两个文件的实际数据从何处开始(这可能会有很大差异,请阅读wav头大小以及如何检测它们)
  • 将两个文件的数据读入字节数组
上述步骤基本上是第0步

  • 你要寻找的“样本”有一个长度。该长度将是目标字节数组上的滑动窗口
  • 如果您满足于搜索完全相同的样本(A的某些部分听起来完全像B),那么您可以对滑动窗口内容与参考样本进行哑比较(字节比较)。但是,如果你想在合成目标波中寻找你的样本(与其他声音或层混合,因此a的某些部分中有B,但这只是在B出现时听到的x事物之一),那么据我所知,你正在走向快速和/或离散傅里叶变换,隐马尔可夫模型或任意数量的模式识别算法。毫无疑问,这里有无数比我聪明得多的人,当涉及到数学时,他们实际上可以说一些有道理的话。只是不是我
直到数学部分,它是相当简单的,但真正的魔术开始时,你实现算法(s)你定下来。当然,根据你的要求和你的数学背景/技能集/耐心/你可以想做什么就做什么

一个小小的旁注:“没有第三方软件,这是否可能”很少是一个真正相关的问题。第三方软件不是什么黑魔法,它只是像你我这样的人编写的软件。不同的是,它有时是由非常聪明的人写的(通常是复数),并且经常经过一段时间的发展、测试和完善,所以如果问题是“能做到吗”,那么几乎总是“是的”。如果问题是“我能在很短的时间内自己复制一个完整、复杂和高性能的库吗”…好吧。。。也许我猜