公司动态

5分钟算出音乐相似度:用 Magenta 把两首 MIDI 压成指纹

📅 2026/8/24 11:14:10
5分钟算出音乐相似度:用 Magenta 把两首 MIDI 压成指纹
5分钟算出音乐相似度用 Magenta 把两首 MIDI 压成指纹【免费下载链接】magentaMagenta: Music and Art Generation with Machine Intelligence项目地址: https://gitcode.com/gh_mirrors/ma/magenta发 demo 被人留言那段过门怎么跟某首热歌很像最体面的回应是甩出一个数字。这正是开源音乐 AI 工具包 Magenta 解决的问题把每首曲子压成嵌入向量向量之间的距离就是音乐相似度。用它的 MusicVAE你能在几分钟内拿到可比的相似度数值。 一句话搞懂原理给曲子做 DNA 指纹曲子怎么变成一个向量先别想数学打个比方一首曲子先被写成乐谱MIDI 文件本身就是数字乐谱然后按 16 分音符切成小片每片记录当下有哪些音、什么力度。MusicVAE 的编码器顺序读完这些小片把整段旋律压缩成一个定长向量就像把一本小说压成一句摘要。为什么向量距离就是相似度两首旋律走向、节奏密度、音域习惯接近的曲子会落在向量空间的相近区域风格差得远的落在远处。于是像不像变成两个点近不近一个余弦相似度数字就能给出答案。 最短跑通路径从克隆到看到数字把项目拉到本地git clone https://gitcode.com/gh_mirrors/ma/magenta cd magenta仓库根目录执行pip install -e .[all]装依赖。拿一个预训练 checkpointmusic_vae 的 README 里有一张模型表相似度对比用cat-mel_2bar_big两小节旋律最顺手。写个小脚本编码两首曲子再算相似度。这段在干嘛加载模型把两个 MIDI 各压成一个向量算余弦相似度。import note_seq, numpy as np from magenta.models.music_vae import configs, trained_model model trained_model.TrainedModel(configs.CONFIG_MAP[cat-mel_2bar_big], 1, checkpoint_dir_or_path./ckpt) z, _, _ model.encode([note_seq.midi_file_to_note_sequence(a), note_seq.midi_file_to_note_sequence(b)]) sim np.dot(z[0], z[1]) / (np.linalg.norm(z[0]) * np.linalg.norm(z[1]))看结果sim 在 -1 到 1 之间越接近 1 越像。先拿同一首跑两遍确认链路通再换不同曲子校准你的直觉。拿它解决真实问题独立音乐人发 demo 之前把自己过门和疑似撞车热歌的对应片段各编码一次把相似度数字摆出来——争议从听着像变成有量化起点的讨论。平台审核同学内容入库时对新上传批量编码先比存量曲库把超阈值的配对拉出来人工复核机器负责初筛人只看少数。制作人找采样参考时不只是比相似度还可以把两首参考曲的向量做插值再解码得到一条两者之间的新旋律思路。乐理研究者做风格聚类时整批语料编码后用 t-SNE 画图同风格作品聚成一簇风格演化路线直接看得见。⚠️ 先别急着上生产2 小节模型只吃短片段cat-mel_2bar_*是在两小节旋律上训的整首歌要滑窗切段、算局部相似度再聚合取最大或均值别把全长硬塞进去。输入是 MIDI不是音频主链路不做音频转 MIDI——interfaces 目录里的 magenta_midi 是实时 MIDI 交互工具不是转录器。只有音频的话先备好 MIDI或用音头转录模型辅助。阈值要自己标定从自己语料里抽同风格、跨风格两批配对算出两个相似度分布分界线定在间隔处别抄任何通用数字。向量距离量的是结构相似它反映旋律轮廓与节奏习惯的接近程度不是逐音判定。版权场景下它是证据链起点不是结论。速度取舍CPU 上跑 big 配置偏慢大批量对比可以换 small 版本或者攒批一起编码。 接着往哪走想用 RNN 基线做旋律对比melody_rnn/手上只有音频、先要音头/节奏检测onsets_frames_transcription/模型结构、超参与训练脚本music_vae/要做相似度这件事先拿三五对 MIDI 把上面五步跑通再谈阈值和切段。下一步去哪从 music_vae 的 README 预训练模型表入手先让cat-mel_2bar_big出第一个数字。【免费下载链接】magentaMagenta: Music and Art Generation with Machine Intelligence项目地址: https://gitcode.com/gh_mirrors/ma/magenta创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考