+-
通过音频指纹技术识别歌曲,可以将本地歌曲保存到数据库中,并为其生成音频指纹,用于后续的匹配识别。

seek-tune

SeekTune 是对 Shazam 歌曲识别算法的一种实现,它基于一些相关资源的见解开发而成,并且整合了 Spotify 和 YouTube 的 API 来查找和下载歌曲。

Github地址

https://github.com/cgzirim/seek-tune

通过音频指纹技术识别歌曲,可以将本地歌曲保存到数据库中,并为其生成音频指纹,用于后续的匹配识别。

项目功能

  • 歌曲识别:通过音频指纹技术识别歌曲,与 Shazam 的核心功能类似。

  • 歌曲下载:支持从 Spotify 获取歌曲信息,并通过 YouTube 下载歌曲(需注意版权问题)。

  • 本地歌曲管理:可以将本地歌曲保存到数据库中,并为其生成音频指纹,用于后续的匹配识别。

安装与部署

  • 依赖环境

    • Golang:用于运行后端代码,需提前安装。

    • FFmpeg:用于音频处理,需提前安装。

    • NPM:用于运行前端代码,需提前安装。

  • 部署方式

    • 克隆项目后,分别进入clientserver目录安装依赖。

    • 启动前端应用:在client目录下运行npm start

    • 启动后端应用:在server目录下运行go run *.go serve

    • 需安装 Docker 和 Docker Compose。

    • 使用命令docker-compose up --build启动应用,访问http://localhost:8080即可使用。

    • 使用命令docker-compose down停止应用。

    • 使用 Docker

    • 本地部署

使用方法

  • 下载歌曲

    • 使用命令go run *.go download <Spotify 链接>,需提供有效的 Spotify 歌曲链接。

  • 保存本地歌曲到数据库

    • 使用命令go run *.go save [-f|--force] <歌曲文件或目录路径>,可选-f--force参数,即使未找到 YouTube ID 也会保存歌曲。

  • 查找匹配歌曲

    • 使用命令go run *.go find <wav 文件路径>,程序会尝试匹配数据库中的歌曲,并返回相似度分数。

  • 清除数据

    • 使用命令go run *.go erase,删除数据库中的音频指纹和歌曲信息。

数据库选项

  • 默认使用 SQLite 数据库。

  • 可切换到 MongoDB 数据库,需设置相关环境变量(如DB_TYPEDB_USERDB_PASS等)来配置连接。