听歌识曲C++程序说明

听歌识曲C++程序说明

听歌识曲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的效率太低,不确定是否是正常现象,建立索引以后速度提高了些,但提高有限,如果有了解如何提高数据库使用效率的,不吝赐教
  • 本人公众号如下,觉得文章对你有帮助的,就扫码关注下吧~
    公众号二维码
Comments are closed.