您的位置:首页 > 编程语言 > Python开发

听歌识曲!python这个骚操作可以了解一下!

2019-01-09 15:03 573 查看

音频指纹识别的目的是确定音频的数字“摘要”。从而与音频样本进行比对得出它出自哪首歌曲,像现在QQ音乐、网易云音乐等各大音乐软件都有此功能,它根据歌曲的前两到五秒识别音乐歌名。今天我们用python来实现这一骚操作。

进群进群:700341555可以获取Python各类入门学习资料!

这是我的微信公众号【Python编程之家】各位大佬用空可以关注下,每天更新Python学习方法,感谢!

111111111111.png

 

image

Dejavu库

Dejavu用Python实现的音频指纹识别库,通过聆听音频并对其进行指纹识别来记忆音频。然后,通过将麦克风读取的音频与数据库中保存的音频指纹进行匹配,然后返回正在播放的歌曲的歌名。

一、安装

Dejavu可直接通过pip进行安装

<pre style="margin: 0px; padding: 0px; border: 0px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-numeric: inherit; font-weight: normal; font-stretch: inherit; font-size: 18px; line-height: inherit; font-family: inherit; vertical-align: baseline; word-break: break-word; color: rgb(93, 93, 93); letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial;">

[code]pip3 install Dejavu

</pre>

二、工作原理

dejavu库会读取音频文件,利用时频分析的方法得到不同时刻的频率分布,然后按照一定的算法将音频的指纹信息从音频文件的时频信息中提取出来。通过指纹信息来识别和区分声音文件,每个音频文件都有其单独的指纹库,比对指纹库可以根据声音片段以识别出整个音频文件,以达到听歌识曲的目的。

1

项目步骤

音频指纹识别系统有两个任务:

1、通过指纹识别来学习新歌

2、通过在学习歌曲的数据库中搜索未知歌曲来识别它们

1.从磁盘读取

通过本地读取音频文件,然后通过音频提取与比对进行歌曲识别,由于读取的文件与数据库中文件几乎一样,所以此项测试对系统准确率参考不大。

2.音频笔记本电脑麦克风

随机选择原始mp3文件中的音频进行播放,并让Dejavu通过麦克风收听。此外,我的朋友甚至在说话,我在整个过程中都哼了一声,只是为了引起一些噪音。

3.在我的iPhone上播放压缩的流式音乐

我通过我的iPhone扬声器播放音乐,Dejavu再次在我的MacBook话筒上收听来测试歌曲的识别率。

1

测试结果

以下是不同听音时间值(n)的结果:

image

对应准确率百分比:

image

从中我们可以看到,即使只有一秒钟,从歌曲的任何地方随机选择,Dejavu获得60%的正确率!一秒钟到2秒钟让我们达到96%左右,而100%只需要5秒或更长时间。老实说,当我自己测试这个时,这个结果还是很好的, 毕竟只听了1-2秒的一首歌的背景来识别是非常困难的。

示例代码

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐