CLaMP 3:音乐搜索AI革命!多模态AI能听懂乐谱/MIDI/音频,用27国语言搜索全球音乐

242 阅读5分钟

❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!

🥦 AI 在线答疑 -> 智能检索历史文章和开源项目 -> 尽在微信公众号 -> 搜一搜:蚝油菜花 🥦


🚀 「音乐检索进入「多模态对齐」时代!清华CLaMP 3突破三大极限:零样本分类、跨语言泛化、多模态语义桥」

大家好,我是蚝油菜花。当ChatGPT还在处理文字时,音乐AI已经学会「看见乐谱、听懂旋律、理解文化」!

CLaMP 3 的三大维度突破:

  • 🎯 模态无界:乐谱特征(ABC符号)+音频特征(MERT)+MIDI文本 → 统一语义空间
  • 🌐 语言无疆:基于XLM-R模型,训练27语→泛化100语,维吾尔语搜雷鬼不是梦
  • 🔥 零样本飞跃:无需标注数据,直接根据语义完成音乐分类/推荐/检索

依托 231万音乐-文本对 构建的M4-RAG数据集,这项发表于ICML的研究正在重塑音乐科技版图——点击体验Hugging Face Demo,感受多模态检索如何打破音乐认知边界!

🚀 快速阅读

CLaMP 3 是一个支持多模态、多语言的音乐信息检索框架,适用于跨模态音乐检索和零样本分类等任务。

  • 核心功能:文本到音乐检索、图像到音乐检索、跨模态音乐检索、零样本音乐分类、音乐推荐。
  • 技术原理:基于对比学习,将不同模态的音乐数据(如乐谱、MIDI、音频)与多语言文本统一到一个共享的语义空间中。

CLaMP 3 是什么

CLaMP 3

CLaMP 3 是清华大学人工智能学院朱文武教授团队推出的一个多模态、多语言音乐信息检索框架。它基于对比学习,能够将乐谱(如ABC符号)、音频(如MERT特征)和表演信号(如MIDI文本格式)与多种语言的文本描述对齐到一个共享的表示空间中。CLaMP 3 支持27种语言,并能够泛化到100种语言,适用于跨模态检索任务,如文本到音乐、图像到音乐检索,零样本音乐分类和音乐语义相似性评估。

CLaMP 3 的主要优势在于其强大的多模态支持和多语言处理能力。通过对不同形式的音乐数据进行统一表示,CLaMP 3 可以实现高效、准确的音乐检索和分类任务,极大地提升了音乐信息检索的灵活性和实用性。

CLaMP 3 的主要功能

  • 文本到音乐检索:根据文本描述(支持100种语言)检索与之语义匹配的音乐。
  • 图像到音乐检索:通过图像生成的描述(如BLIP模型生成的caption)检索与之匹配的音乐。
  • 跨模态音乐检索:在不同音乐表示形式(如乐谱、MIDI、音频)之间进行检索。例如,用音频检索乐谱或用乐谱检索音频。
  • 零样本音乐分类:无需标注数据,基于语义相似性将音乐分类到特定类别(如风格、情绪等)。
  • 音乐推荐:基于语义相似性进行音乐推荐,支持同一模态内的推荐(如音频到音频)。

CLaMP 3 的技术原理

clamp3-framework

  • 多模态数据对齐:将不同模态的音乐数据(如乐谱、MIDI、音频)和多语言文本统一到一个共享的语义空间。基于对比学习,模型学习将不同模态的数据映射到相似的向量表示,实现跨模态检索。
  • 对比学习框架:用对比学习(如CLIP的变体)训练模型。模型通过正样本对(如音乐与对应文本)和负样本对(随机配对的样本)学习区分语义相关和不相关的数据,优化表示空间。
  • 多语言支持:基于XLM-R(一种多语言预训练模型)实现多语言文本嵌入,支持27种语言的训练,并泛化到100种语言。
  • 大规模数据集训练:模型在大规模数据集(如M4-RAG)上进行训练,包含231万对高质量的音乐-文本对,覆盖27种语言和194个国家。

如何运行 CLaMP 3

1. 环境设置

要设置 CLaMP 3 的运行环境,请运行以下命令:

conda env create -f environment.yml
conda activate clamp3

2. 数据准备

2.1 将 MusicXML 文件转换为 Interleaved ABC 格式

CLaMP 3 需要使用 Interleaved ABC 格式的乐谱。首先,将 MusicXML 文件(.mxl, .xml, .musicxml)转换为标准 ABC 格式:

python batch_xml2abc.py

然后,将标准 ABC 文件转换为 Interleaved ABC 格式:

python batch_interleaved_abc.py

2.2 将 MIDI 文件转换为 MTF 格式

CLaMP 3 处理性能信号时使用 MIDI 文本格式(MTF)。将 MIDI 文件(.mid, .midi)转换为 MTF 格式:

python batch_midi2mtf.py

2.3 提取音频特征

CLaMP 3 使用 MERT-extracted 特征处理音频。从原始音频(.mp3, .wav)中提取 MERT 特征:

python extract_mert.py --input_path <input_path> --output_path <output_path> --model_path m-a-p/MERT-v1-95M --mean_features

3. 训练和特征提取

3.1 训练模型

修改 config.py 中的超参数和数据路径后,可以使用以下命令训练模型:

python -m torch.distributed.launch --nproc_per_node=<GPUs> --use_env train_clamp3_symbolic.py

对于音频数据,使用:

python -m torch.distributed.launch --nproc_per_node=<GPUs> --use_env train_clamp3_audio.py

3.2 使用预训练模型

建议直接使用预训练模型权重,下载链接如下:

3.3 提取特征

使用预训练模型提取特征:

accelerate launch extract_clamp3.py --epoch <epoch> <input_dir> <output_dir> --get_global

4. 语义搜索

使用 semantic_search.py 进行语义搜索:

python semantic_search.py <query_file> <reference_folder> [--top_k TOP_K]

5. 分类

训练线性分类器:

python train_cls.py --train_folder <path> --eval_folder <path> [--num_epochs <int>] [--learning_rate <float>] [--balanced_training]

运行推理:

python inference_cls.py <weights_path> <feature_folder> <output_file>

资源


❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!

🥦 AI 在线答疑 -> 智能检索历史文章和开源项目 -> 尽在微信公众号 -> 搜一搜:蚝油菜花 🥦