❤️ 如果你也关注 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 是清华大学人工智能学院朱文武教授团队推出的一个多模态、多语言音乐信息检索框架。它基于对比学习,能够将乐谱(如ABC符号)、音频(如MERT特征)和表演信号(如MIDI文本格式)与多种语言的文本描述对齐到一个共享的表示空间中。CLaMP 3 支持27种语言,并能够泛化到100种语言,适用于跨模态检索任务,如文本到音乐、图像到音乐检索,零样本音乐分类和音乐语义相似性评估。CLaMP 3 的主要优势在于其强大的多模态支持和多语言处理能力。通过对不同形式的音乐数据进行统一表示,CLaMP 3 可以实现高效、准确的音乐检索和分类任务,极大地提升了音乐信息检索的灵活性和实用性。CLaMP 3 的主要功能文本到音乐检索:根据文本描述(支持100种语言)检索与之语义匹配的音乐。图像到音乐检索:通过图像生成的描述(如BLIP模型生成的caption)检索与之匹配的音乐。跨模态音乐检索:在不同音乐表示形式(如乐谱、MIDI、音频)之间进行检索。例如,用音频检索乐谱或用乐谱检索音频。零样本音乐分类:无需标注数据,基于语义相似性将音乐分类到特定类别(如风格、情绪等)。音乐推荐:基于语义相似性进行音乐推荐,支持同一模态内的推荐(如音频到音频)。CLaMP 3 的技术原理多模态数据对齐:将不同模态的音乐数据(如乐谱、MIDI、音频)和多语言文本统一到一个共享的语义空间。基于对比学习,模型学习将不同模态的数据映射到相似的向量表示,实现跨模态检索。对比学习框架:用对比学习(如CLIP的变体)训练模型。模型通过正样本对(如音乐与对应文本)和负样本对(随机配对的样本)学习区分语义相关和不相关的数据,优化表示空间。多语言支持:基于XLM-R(一种多语言预训练模型)实现多语言文本嵌入,支持27种语言的训练,并泛化到100种语言。大规模数据集训练:模型在大规模数据集(如M4-RAG)上进行训练,包含231万对高质量的音乐-文本对,覆盖27种语言和194个国家。如何运行 CLaMP 31. 环境设置要设置 CLaMP 3 的运行环境,请运行以下命令:conda env create -f environment.ymlconda activate clamp32. 数据准备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.py2.2 将 MIDI 文件转换为 MTF 格式CLaMP 3 处理性能信号时使用 MIDI 文本格式(MTF)。将 MIDI 文件(.mid, .midi)转换为 MTF 格式:python batch_midi2mtf.py2.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_features3. 训练和特征提取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.py3.2 使用预训练模型建议直接使用预训练模型权重,下载链接如下:3.3 提取特征使用预训练模型提取特征:accelerate launch extract_clamp3.py --epoch <epoch> <input_dir> <output_dir> --get_global4. 语义搜索使用 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 在线答疑 -> 智能检索历史文章和开源项目 -> 尽在微信公众号 -> 搜一搜:蚝油菜花 ?