用python通过声音指纹来识别歌曲

用python通过声音指纹来识别歌曲

大家还记得微信里有个摇一摇识别歌曲的功能吧,怎么实现的呢,今天我来揭秘一下,用python来实现这个功能

用python通过声音指纹来识别歌曲

试验准备条件

操作系统:Ubuntu 18.04
硬件:usb的麦克风一台
安装好的Python 2 (sudo apt install python2.7)
安装好的pip (sudo apt install python-pip)

第一步:安装依赖包

sudo apt-get install python-tk

sudo apt install ffmpeg

sudo apt-get install portaudio19-dev python-pyaudio

还需要python依赖包

pip install matplotlib termcolor scipy pydub PyAudio

这个包 包含了

matplotlib: 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形.
termcolor: 用于在命令行窗口中打印出多彩的消息的库.
scipy:Scipy是一个用于数学、科学、工程领域的常用软件包.
pydub:是一个Python模块,用于处理音频,它有一个简单易用的高层接口,底层依赖于ffmpeg或者avconv工具.
PyAudio:是Python下的一个音频处理模块,用于将音频流输送到计算机声卡上。理论上,该模块能够播放任何解码器解码而成的有效音频帧.

第二步:下载声音指纹(声纹)项目

git clone https://github.com/itspoma/audio-fingerprint-identifying-python.git

用python通过声音指纹来识别歌曲

下载完后还需要清空一下数据库

make clean reset

第三步:准备歌曲

在目录下新建一个mp3目录,里面存放一下mp3个歌曲文件

用python通过声音指纹来识别歌曲

第四步:生成声纹数据库文件

接下来是最重要的一步,就是为mp3下的声音文件生成一个声音指纹的数据库

python collect-fingerprints-of-songs.py

用python通过声音指纹来识别歌曲

恭喜你,现在声纹数据库已经建立,你可以通过麦克风与声音文件进行匹配了,那么我们先看看数据库中有几条声音的指纹

python get-database-stat.py

用python通过声音指纹来识别歌曲
我们可以看到有6首歌曲已经建好指纹库了

第五步:从麦克风识别歌曲

python recognize-from-microphone.py -s 5

执行上面的命令行,会从麦克风获取5秒的声音并进行数据库声纹识别匹配

用python通过声音指纹来识别歌曲

ok,试验成功了

{{collectdata}}

网友评论0