【问题标题】:How to compare two audio data?如何比较两个音频数据?
【发布时间】:2012-06-01 03:24:59
【问题描述】:

我会录制我自己的声音并将它们保存为我的计算机中的 wav 文件。稍后我会说话,计算机应该将我的语音命令与预先存在/预先录制的 wav 文件匹配..

问题:如何检查两个音频数据是否相等或两个音频之间是否有 80% 匹配?

if(audio1 == audio2)
   DO Task A
else if( audio1 is a bit similar to audio 2)
   DO TASK B
else if( audio1 (80% match) audio 2)
   DO TASK C
end if

比较两个音频数据的最佳方法是什么?

【问题讨论】:

  • 取决于您的音频数据。是声音吗?是音乐吗?是纯音吗?典型样本的长度是多少?
  • @DavidBrabant 是的,只有语音..
  • 认为这将是我自己对我的计算机的语音命令..“做这个”,“做那个”给我..

标签: audio voice-recognition voice-recording


【解决方案1】:

不幸的是,仅尝试直接比较音频波形,您不会很快到达任何地方。有大量关于语音和说话人识别的研究,如果你不熟悉基础知识,你只会重新发明轮子。我认为您在这里有多种选择,具体取决于您真正想做的事情

  • 开始阅读有关 HMM、DTW(如 learnvst 所述)和Mel-frequency Cepstral Coefficients 的信息,以了解从哪里开始。
  • 使用现有的语音 API,例如 Microsoft one,它负责低级信号处理,您可以将其构建到您的应用程序中
  • 使用更高级别的东西,例如 Windows Speech Recognition Macros,它使您能够通过语音控制 PC 的各个方面(例如“播放 Purple Haze”)

这取决于您是想了解低水平的语音处理(这将涉及大量数学),还是只想要一些几乎不需要编码的东西。

【讨论】:

    【解决方案2】:

    您可以从 Homemade Speech Recognition 找到一些想法。这适用于.NET 紧凑的框架,但可以很容易地适应普通的vanilla .NET。该解决方案基于快速傅里叶变换

    【讨论】:

      【解决方案3】:

      类似,你的意思是纯粹的数字吗?在这种情况下,交叉相关类型分析可能就足够了。否则,如果您的意思是人类听众对声音样本的听觉感知相似,那么您需要阅读声学指纹。

      编辑:

      我从你的更新中猜想你想做一种简单的语音识别,对吗?如果是这种情况,那么在非常有限的语料库中为信号获得最佳匹配的最佳选择是基于Dynamic Time Warping (DTW) 的识别器。基于Hidden Markov Model 的识别系统是最先进的,但基于 DTW 的系统实施起来要简单得多。

      【讨论】:

        【解决方案4】:

        正如其他人所建议的那样,除非您可以提供更多信息,否则没有简单的解决方案。如果它们只是很短的声音,不会随时间发生太大变化,一种可能性是进行 FFT 并比较 FFT 的结果。

        对于更复杂的事情,您可以采用类似的方法,但使用 STFT。

        但是,您的问题很可能有特定领域的答案。

        【讨论】:

        • 我更详细地解释了这个要求。我已经更新了帖子。请检查。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-18
        • 2011-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-16
        相关资源
        最近更新 更多