SongRec 支持哪些歌曲识别方式?

更新时间

SongRec 支持四种识别路径:从任意音频文件识别、从麦克风实时识别、在兼容的 PulseAudio 环境下从扬声器输出识别,以及从麦克风持续检测歌曲。它是一款用 Rust 编写的非官方开源 Shazam 客户端,面向 Linux 桌面,同时提供 Windows x64 版本。选择哪种方式取决于你手头有什么:已有录音文件就用文件识别;想识别正在播放的音乐,优先尝试扬声器识别;临时听到一段音乐则用麦克风识别。

四种识别方式及适用条件

识别方式 输入来源 适用场景 前提或限制
音频文件识别 任意音频文件 手头有录音、视频提取的音频、下载的音乐片段 支持 GUI 和命令行两种操作方式
麦克风实时识别 麦克风 现场听到的音乐,如房间外放、现场演出 可选择输入设备
扬声器输出识别 系统音频输出 电脑上正在播放的音乐,无需外部拾音 需要兼容的 PulseAudio 环境
麦克风持续检测 麦克风 长时间守候识别,自动记录听到的歌曲 持续运行,识别结果进入历史记录

从任意音频文件识别

这是最可控的方式。你提供一个音频文件,SongRec 返回识别结果。由于文件识别同时支持 GUI 和命令行,批量处理或脚本化场景可以用命令行完成,日常使用则用 GUI 更直观。适合处理录下的广播片段、会议中听到的背景音乐,或从视频中提取的音轨。

从麦克风实时识别

直接采集麦克风声音进行识别,适合识别外部音源,比如手机外放、房间里的音响。SongRec 允许选择输入设备,当系统有多个麦克风(内置、USB、耳机)时,可以指定实际能拾取到音乐的那个,避免选错设备导致识别失败。

从扬声器输出识别

在兼容的 PulseAudio 环境下,SongRec 可以直接捕获系统播放的音频,而不是通过麦克风“听”一遍。这种方式不受环境噪音影响,识别电脑上正在播放的歌曲更干净。注意这是有条件的:不兼容的音频架构下此方式不可用,此时应退回麦克风识别。

持续歌曲检测

针对麦克风的持续检测模式会一直监听并自动识别,适合长时间开着电脑听歌或电台的场景。识别出的歌曲会进入 GUI 的历史记录,并可导出为 CSV,方便事后整理。

识别结果如何留存

GUI 提供已识别歌曲的历史记录,并支持导出 CSV。如果你需要记录一段时间的收听内容,持续检测加 CSV 导出是完整的工作流;单次文件识别或临时麦克风识别则更适合即用即走。

获取与安装入口

SongRec 提供多个分发渠道,按你的系统选择:

  • Flathub:适用于 Ubuntu、Fedora、Arch、Manjaro 等大多数 Linux 发行版
  • Launchpad PPA:适用于 Ubuntu 24.04 及以上
  • Arch Linux 官方 extra 仓库
  • Snap Store:适用于 Ubuntu
  • Windows x64:提供安装程序和独立 EXE 两种形式
  • 也可以自行从源码编译

功能细节和实现原理可查阅其 GitHub readme;问题反馈通过 GitHub issues 提交,另有 Matrix 频道作为补充沟通渠道。

怎么选

已有音频文件,选文件识别;识别电脑自身播放的音乐,先确认 PulseAudio 兼容性再选扬声器识别;识别外部环境声音,选麦克风识别并指定正确输入设备;需要长期自动记录,选持续检测并配合 CSV 导出。四种方式可以按场景组合使用,历史记录会统一沉淀在 GUI 中。