我将录制自己的声音并将其保存为计算机中的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
比较两个音频数据的最佳方法是什么?
答案 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。
但是,很有可能,您的问题会针对特定领域的答案。