Contents
听歌识曲C++程序说明
- 本工程在VS2015下编译运行;运行时,机器上需要已经安装有
MySql
软件,我使用的是MySql 5.7
版本的,MySql C++ connector
用的是1.19版本的; - 直接拿过来编译肯定是编译不过的,详情见下描述
工程目录说明
- 3rd_party : 第三方库
- boost_1_62_0 : boost库
- Eigen : 矩阵与FFT
- maximilian : 音频库
- sqdlog : log库,这个库暂时未使用
- MySQL Connector C++ 1.1.9 : 连接数据库的库
- Audio : 封装音频操作
- DB : 封装DB操作
- General : 放一些通用模块,目前其实就一个计时函数
- Hash : 哈希值计算
- Log : 打算预留封装log操作的
- ShazamAlgorithm : 识别算法模块,主要是哈希值的提取和匹配两个过程
- Test : 各个模块的测试程序,比较粗糙
how to build
- 因为boost的体积太大,所以我本次就没有上传上去,这一部分可以自己从官网上下载,不一定是1.62这个版本的,最近的几个版本都可以,放置的目录如果有变动,可以修改一下工程里面的设置
- 我已经修改了一下工程的目录设置,按道理应该不会出现找不到文件的情况,但是因为时间有限,我也没有精力和条件在一个全新的环境下进行尝试,所以如果编译过程中出现什么问题,我建议是对照工程里面的设置条件进行排查
- MySql的root账号和密码的设置这个肯定得改成自己的,我当前是填充了一个简单的值;修改的位置详见DB目录下的文件
- boost目录的安装可以选择不需要本地编译的版本;当然这一部分网上有很多说明,如果是在遇到了困难,可以私信我,我把我的包直接上传到百度云分享出来;
- 本工程在32位模式下进行编译运行,理论上,准备好第三方库,核对好工程设置以后,直接build就可以通过了
how to use
- testEncoder.cpp文件中有如何建立数据库的代码;指定一个目录,对目录中所有的歌曲提取特征并存放进数据库中
- test_DB.cpp文件中有如何检测的代码,指定一首歌的位置,即可对其进行识别,并输出得分最高的几首歌作为识别结果
写在最后
- 这是我第一次做类似分享,所以考虑的可能不是很全面,诸位如果遇到工程编译的问题,可以及时反馈给我,我有条件的话会帮助解决
- 这个识别程序是非常粗糙的,很多东西都有优化的空间,如果有大佬,欢迎批评指正
- 程序在运行过程中SQL的效率太低,不确定是否是正常现象,建立索引以后速度提高了些,但提高有限,如果有了解如何提高数据库使用效率的,不吝赐教
- 本人公众号如下,觉得文章对你有帮助的,就扫码关注下吧~