我想以编程方式比较2个音频文件。 例如:我的iPhone应用程序中有一个声音文件,然后我录制另一个。我想检查现有声音是否与录制的声音匹配( - 类似于语音识别)。
我该如何做到这一点?
答案 0 :(得分:24)
这就是所谓的音频指纹识别。存在一些开源项目,您可以从中获得一些想法。看看这里:Audio Fingerprint - MusicBrainz。
答案 1 :(得分:13)
让服务器进行音频指纹计算,无论如何都不适合移动设备。然后您的移动应用程序将您的文件上传到服务器并获取分析结果以供显示。所以我认为实现它的编程语言并不重要。以下是一些AF实现。
Java:http://www.redcode.nl/blog/2010/06/creating-shazam-in-java/
答案 2 :(得分:4)
我知道很久以前就已经问过这个问题,但一个明确的答案可以帮助其他人。
答案 3 :(得分:3)
答案 4 :(得分:3)
我很感兴趣,我发现了另一种Java over sourge forge的解决方案。你可以从SVN中检索代码。
http://sourceforge.net/projects/comparisong/
看看它,让我知道它是否适合你。
欢呼声
答案 5 :(得分:2)
它可能相当Mhz密集。
DSP详细信息在众所周知的文本中:
答案 6 :(得分:1)
我认为您也可以尝试从两个音频轨道中选择几个第二个样本,将它们的幅度调整为正常,并使用带通滤波器降低噪声并尝试使用相关器。
例如,你可以拍摄其中一个的5秒样本并使其滑过第二个样本,计算交叉核心化时间。 (小心如果你拿一个太小的小袋,你可能会有很高的相关性,如果没有被消除,你会因为信号的裁剪和交叉相关而软化副作用)。 之后你可以收集一个带有交叉相关结果的数组并得到最大值的索引。然后你应该通过实验设置threshould o决定你什么时候假设小袋为b。这将根据您所比较的音轨的质量而改变。
我实施了一个验证器,用于接收和区分无线通信中的前导码。我的脚本实际上是在matlab中完成的。如果您有兴趣,我可以尝试找到共同部分并发送给您。
在论坛中粘贴hene将是一个太长的代码。如果你想让我知道,我会尽快发送给你。
欢呼声