2012-07-28 168 views
4

我想记录一条狗吠,保存文件并与包含不同类型树皮(警告树皮,哭泣的树皮等)的几个文件进行比较。匹配两个音频文件

我怎么可以做比较以获得比赛?这种类型的应用程序需要遵循什么流程?

谢谢你的提示。

+2

我认为最好的选择是谱分析师。使用FFT(快速傅立叶变换)来获取树皮的光谱并比较光谱。您可能可以定义一些过滤器来帮助分析师。玩的开心。 – cliff2310 2012-07-28 22:53:34

+0

谢谢你@ clif2310。有没有另一种方法来实现它?使用FFT将意味着大量的时间学习和实施,因为它非常复杂。 – pindleskin 2012-07-28 23:00:47

+2

FFT只是这里的冰山一角。我已经实现了仅在过程的一部分中使用FFT的音频指纹识别,并且它只匹配两个听起来相同的声音 - 您的问题远远大于此。无论如何,你最终可能会使用一些服务器端解决方案,在那里你的android设备只会获取音频并将其发送到服务器,这将进行比较。调查shazaam,playkontrol或soundhound ... – 2012-07-28 23:21:41

回答

3

对您的问题没有简单的答案。但是,对于初学者,您可能会了解音频指纹如何工作。本文是Shazam的创作者写一个良好的开端:

http://www.ee.columbia.edu/~dpwe/papers/Wang03-shazam.pdf

我不知道如何该方法将会对狗叫工作,但也有一些概念有可能证明是有用的。

另一个需要研究的问题是FFT如何工作。这是一个包含我为音高跟踪编写的代码的教程,这是使用FFT的一种方式。您正在更多地关注语气和音调如何与给定狗的共振峰结构相互作用。因此,你想要得到的参数可能包括基本音高(单独这可能足以区分呜呜声与其他树皮)以及基本音高与高次谐波的比率,这将有助于确定树皮的激进程度(I在这儿猜了一下):

http://blog.bjornroche.com/2012/07/frequency-detection-using-fft-aka-pitch.html

最后,你可能想要做一些研究,基本的语音识别和语音处理,因为会有一些重叠。维基百科可能足以让你开始。

编辑:哦,另外,一旦你确定了一些参数用于比较,你需要一种方法来比较你的多个参数到你的数据库的声音与多个参数。我不认为shazam文章中的技术会起作用。你可以尝试的一件事是Logistic Regression。还有其他选择,但这可能是最简单的。

1

我检查了谷歌的开源LIB musicg API:http://code.google.com/p/musicg/

它的Java因此它可以在Android和它给出了两个音频文件的相似性指标。

+0

你能建议我任何适当的链接或代码示例集成这种功能。我也面临同样的问题 – 2017-03-30 08:07:56