我想以编程方式比较 2 个音频文件。例如:我的 iPhone 应用程序中有一个声音文件,然后我录制了另一个声音文件。我想检查现有声音是否与录制的声音匹配( - 类似于语音识别)。
我怎样才能做到这一点?
我想以编程方式比较 2 个音频文件。例如:我的 iPhone 应用程序中有一个声音文件,然后我录制了另一个声音文件。我想检查现有声音是否与录制的声音匹配( - 类似于语音识别)。
我怎样才能做到这一点?
让服务器进行不适合移动设备的音频指纹计算。然后您的移动应用程序将您的文件上传到服务器并获取分析结果进行显示。所以我认为实现它的编程语言并不重要。以下是一些 AF 实现。
Java:http ://www.redcode.nl/blog/2010/06/creating-shazam-in-java/
它可以是相当 Mhz 密集型的。
DSP 详细信息在众所周知的文本中:
我认为您也可以尝试从两个音轨中选择几秒钟的样本,将它们的幅度标准化并使用带通滤波器降低噪声,然后尝试使用相关器。
例如,您可以对其中一个进行 5 秒的采样,然后让它滑过第二个,计算您在任何时候移动的交叉相关性。(请注意,如果您使用的数据包太小,则可能会在未预料到的情况下具有很高的相关性,并且由于信号的裁剪和互相关,您会减轻副作用)。之后你可以收集一个包含所有互相关结果的数组并获得最大值的索引。
然后,您应该通过实验设置阈值,以决定何时假设 pachet 与 b 相同。这将根据您正在比较的音轨的质量而改变。
我实现了一个校正器来接收和区分无线通信中的前导码。我的脚本实际上是在 matlab 中完成的。如果您有兴趣,我可以尝试找到共同的部分并将其发送给您。
在论坛中粘贴的代码太长了。如果你想告诉我,我会尽快寄给你。
干杯