探索Dejavu:音频指纹识别的强大工具

探索Dejavu:音频指纹识别的强大工具

dejavuAudio fingerprinting and recognition in Python项目地址:https://gitcode.com/gh_mirrors/dej/dejavu

项目介绍

Dejavu是一款基于Python实现的音频指纹识别算法。它能够通过一次聆听就记住音频并生成指纹,然后通过播放歌曲并录制麦克风输入或从磁盘读取,Dejavu会尝试将音频与数据库中的指纹进行匹配,从而返回正在播放的歌曲。值得注意的是,Dejavu并不适用于语音识别,它在识别带有合理噪音的精确信号方面表现出色。

项目技术分析

Dejavu的核心技术在于其音频指纹识别算法,该算法通过分析音频的频谱图来生成独特的指纹。这些指纹是基于音频信号的特定特征生成的,使得即使在存在一定噪音的情况下,也能准确识别音频内容。Dejavu支持多种数据库后端,包括MySQL和PostgreSQL,这使得它在不同的应用环境中都能灵活部署。

项目及技术应用场景

Dejavu的应用场景广泛,特别适合于需要音频识别的系统,如音乐识别服务、版权监控系统、自动内容标记等。例如,音乐流媒体服务可以使用Dejavu来识别用户正在播放的歌曲,从而提供更个性化的推荐。此外,Dejavu还可以用于监控广播和网络流媒体,以确保版权内容的合法使用。

项目特点

  1. 高效性:Dejavu能够快速生成音频指纹,并在数据库中进行高效匹配。
  2. 灵活性:支持多种数据库后端,易于集成到现有的技术栈中。
  3. 可扩展性:Dejavu的设计允许轻松添加新的音频格式和数据库类型,适应不断变化的需求。
  4. 易用性:提供了详细的文档和示例代码,使得即使是非专业开发者也能快速上手。

通过Docker的快速启动选项,Dejavu进一步简化了部署过程,使得用户可以轻松地在不同的环境中运行和测试。无论是个人开发者还是企业用户,Dejavu都是一个值得考虑的音频识别解决方案。


通过以上分析,我们可以看到Dejavu不仅技术成熟,而且应用广泛,是一个值得推荐的开源项目。如果你正在寻找一个强大且灵活的音频识别工具,Dejavu绝对值得一试。

dejavuAudio fingerprinting and recognition in Python项目地址:https://gitcode.com/gh_mirrors/dej/dejavu

Audio-Fingerprinting 是一个音乐指纹识别系统,使用的语言为 JAVA,同时需要用到 MySQL 数据库(虽然不是必须的,但这个系统采用他保存指纹和音乐信息)。他包含了指纹生成,数据库存储,和简易的服务器和客户端。他通过生成和记录音乐指纹,能够识别来自麦克风、文件等各个来源的音乐,并且有很高的抗噪性,同时他对文件属性和音乐质量不敏感。你可以使用服务器给手机或者其他程序提供音乐识别服务。你可以根据需求调节里面的参数,当前参数是为了在较短时间识别来自极大噪声和失真的音源,1500个左右的文件将产生接近24000000个指纹数 据。如果你只用于识别文件并且没有严重的噪声与失真,你可以修改参数,1个文件只需要少量指纹就可以识别,对于噪声较低的音源10s 200个指纹已经满足大多需求。简易使用方法需要安装MySQL,并执行Fingerprint. sql, 同时你可能需要修改max_allowed_packet参数,因为添加歌曲需要发送较大的包,我采用的参数是32M。修改MysqlDB中的数据库信息为你的数据库信息,如:private final String url = "jdbc:mysql://127.0.0.1:3306/musiclibary?user=yecheng"; private final String user = "yecheng"; private final String password = "yecheng";添加文件的方法:Ps:你可以重写添加的方法或者制作脚本或者直接使用其他软件实现转码功能,目前他能够从%title%}}%album%}}%artist%的文件名中获得信息。将文件转码为WAV,采样率为8000。调用Insert,参数为文件名或者文件夹。搜索音乐你可以调用Search 文件名搜索。在数据库较大的情况推荐采用运行Server,使用Client 文件名搜索。主要参数介绍Fingerprint:NPeaks:一个周期中每个子带的峰值点的个数 fftSize:FFT的窗口大小 overlap:FFT的窗口重叠大小 C:一个周期包含多少个窗口 peakRange:取峰值点时与多大范围的邻居比较 range_time:取点对的时候的时间范围,单位为秒 range_freq:取点对的时候的频率范围,单位为频率 Band:分成的子带,值对应FFT产生的数组索引 minFreq:最小频率 maxFreq:最大频率 minPower:最小能量修改的建议:提高识别率:减小minPower, 增加Band、NPeaks、range_time降低数据量:增大minPower,减小Band、NPeaks、rang_time其中建议先修改Band和minPower。Server:port:服务器的端口Client:ip:服务器的ip port:服务器的端口性能与效果数据量:音乐库为1500首歌,指纹数量为24000000个左右,服务器稳定后占用内存约340M。速度:处理器i7-3632QM,添加1500首歌用时约1919秒,一首歌约用时1.3秒。使用服务器查找10s的歌曲用时约0.2秒(不考虑客户端读取文件的时间)。准确度:对噪声较低的音频有很高的识别率,对噪声较高的也有接近商用的准确率,但是相对来说如果对于未出现在曲库的歌曲,也有一定的误报率。抗噪性:能够抵抗较强的失真和噪声,可以参考我给的测试音频。工作原理参考文档:ShazamMel scale本算法实现类似Shazam,首先我计算出音频的频谱图,将频谱根据频率分成若干子带,对每个子带查找若干个峰值点,本算法子带划分基于Mel频率。将获得的峰值点根据频率、时间范围组成点对。本算法的取点对频率范围为在子带内,其目的在于减少点对的数目并且提高分布式能力。取点对的时间范围为1s-4s。你可以根据需要修改这些参数。 标签:Audio
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贡沫苏Truman

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值