如何比较/匹配两个不相同的声音片段

时间:2018-04-18 08:50:14

标签: audio audio-fingerprinting

我需要每隔5秒拍摄一次简短的声音样本,然后将这些样本上传到我们的云端服务器。

然后我需要找到一种方法来比较/检查该样本是否是完整长音频文件的一部分。

样本将从手机麦克风录制,因此它们确实不准确。

我知道这个主题可能会非常技术性和复杂性,但我确信必须有一些图书馆或在线服务可以协助这种复杂的音频匹配/配对。

一个想法是使用音频到文本转换服务,然后根据实际对话框进行匹配。然而,这对我来说效率不高。其中基于实际声音频率或模式的匹配会更有效率。

我知道有一些服务,例如Shazam,可以进行这种类型的音频匹配。但是,我认为他们的服务都是适当的。

可能影响它的一些因素:

  • 两个音频样本都带有时间戳。所以我们不必搜索整个声音片段。

1 个答案:

答案 0 :(得分:0)

为了帮助您获得答案,您需要关注一个可以回答的问题,即您已完成战斗并展示您的代码

在我的头顶上,我会走过音频,拿出一桶几个样品...然后将你的水桶滑过几个样品并执行另一个水桶采摘操作...允许每个水桶包含重叠样品在前一个桶和下一个桶...更少的样品更快的计算更多的样品更高的准确度YMMV

...对于每个样本桶,尽可能地对音频幅度进行归一化...然后可能将每个桶送入傅立叶变换以将时域输入音频渲染到其频域对应...记录到数据库中每个桶的FFT的显着属性,如具有最大能量的X频率(FFT上的最大幅度)......也可能存储那些前X个频率相对于其能量的标准偏差(这些频率的分散程度) ...根据需要定义其他此类属性...对于这种频域工作方法,您需要在每个桶中使用相对较少的样本,因为FFT对周期时间序列数据起作用,因此如果您为其提供500毫秒的复杂音频,如语音或音乐你不再有定期的音频

然后,一旦通过上述处理发送了所有现有音频,就会对您的实时新音频执行相同操作,然后确定哪些先前音频包含与当前音频输入匹配的最相似的音频序列...使用贝叶斯方法,因此您的猜测具有概率权重附件,适合实时更新

听起来很酷的项目好运......这里有一些音频指纹资源

Python中的音频指纹识别和识别 https://github.com/worldveil/dejavu

Chromaprint是AcoustID项目的核心组成部分。 它是一个客户端库,它实现了一个自定义算法,用于从任何音频源中提取指纹 https://acoustid.org/chromaprint

Audio Matching (Audio Fingerprinting)

是否有可能比较两个相似的歌曲给出他们的wav文件? Is it possible to compare two similar songs given their wav files?

音频哈希 https://en.wikipedia.org/wiki/Hash_function#Finding_similar_records

音频指纹 https://encrypted.google.com/search?hl=en&pws=0&q=python+audio+fingerprinting

ACRCloud https://www.acrcloud.com/ How to recognize a music sample using Python and Gracenote?