4

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

4 回答 4

3

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

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

于 2012-05-29T21:12:53.567 回答
2

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

于 2012-05-29T19:00:52.047 回答
1

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

编辑:

我从您的更新中猜测您想做一种简单的语音识别形式,对吗?如果是这种情况,那么在非常有限的语料库中为信号获得最佳匹配的最佳选择是基于动态时间规整 (DTW)的识别器。 基于隐马尔可夫模型的识别系统是最先进的,但基于 DTW 的系统实现起来要简单得多。

于 2012-05-25T17:19:52.573 回答
0

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

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

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

于 2012-05-25T23:03:59.960 回答