如何比较两个音频数据?

时间:2012-05-25 14:28:10

标签: audio voice-recognition voice-recording

我将录制自己的声音并将其保存为计算机中的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

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

4 个答案:

答案 0 :(得分:3)

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

这取决于你是否想要了解低水平的语音处理(这将涉及大量的数学),或者你是否只想要一些适用于少量编码的东西。

答案 1 :(得分:2)

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

答案 2 :(得分:1)

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

编辑:

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

答案 3 :(得分:0)

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

对于更复杂的东西,你可以采取类似的方法,但做STFT。

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