Video2Music
用 AI 将视频自动转化为情绪匹配的背景音乐,基于情感多模态 Transformer 架构
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
用 AI 将视频自动转化为情绪匹配的背景音乐,基于情感多模态 Transformer 架构
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
你打开一段旅行视频,画面里有海浪、街道、篝火——却找不到合适的背景音乐。逐帧手动配乐?太慢。随便选一首?总觉得哪里不对。这就是 Video2Music 试图解决的终极问题:让 AI 根据视频的视觉内容,自动生成情绪契合的背景音乐。
在短视频井喷的时代,视频创作者面临一个被低估的痛点:画面可以随手拍,但配乐往往决定视频的生死质感。传统的视频配乐依赖版权音乐库或专业剪辑师,而 AI 生成音乐在 2023 年以前,几乎没有能力"看懂"视频再去配乐——彼时的 AI 音乐模型还停留在哼唱旋律、文字生成 MIDI 的阶段。
这个领域的研究空白,由来自 AMAAI Lab(Affective Multimodal AI Lab)的研究团队填补。项目由 Dr. Jaeyong Kang(新加坡科技设计大学)、Prof. Soujanya Poria(新加坡科技设计大学)和 Prof. Dorien Herremans(新加坡科技设计大学)联合开发,论文于 2024 年发表在 Expert Systems with Applications(JCR Q1 期刊,CiteScore 高达 12.5),截至目前已被引用超过 109 次,是音视频跨模态生成领域的标杆工作之一。
研究团队收集并开源了 MuVi-Sync 数据集,包含超过 1500 个视频-音乐配对样本,涵盖了城市、自然、人物等多种场景。数据集现已发布在 Zenodo 平台,为后续研究者提供了重要的基准数据。
Video2Music 的技术架构可以用一句话概括:将视频的视觉特征和音乐的情感特征映射到同一个语义空间,再通过 Transformer 生成音符序列。
具体来说,模型处理视频的流程分为以下几个步骤:
第一步:多维视觉特征提取。 团队从视频中提取了六大类特征——语义特征(CLIP ViT-L/14@336px)、运动特征(光流分析)、场景特征(场景检测)、响度特征(音频响度曲线)、情感特征(情感分类)、音符密度特征(参考音乐结构)。每种特征从不同维度"理解"视频,最终融合为一个统一的视觉表征向量。
第二步:情感引导的音乐生成。 核心模型是基于 Transformer 的 Affective Multimodal Transformer (AMT),采用 Encoder-Decoder 架构。Encoder 接收视频特征和调式信息(major/minor),Decoder 则以和弦序列和起始音符为条件,逐一生成 MIDI 音符。模型支持琶音(Arpeggio)和复调生成,最大音符序列长度达 2048。
第三步:音色渲染。 生成的 MIDI 音符序列通过 FluidSynth 合成器加载 SoundFont 音色文件,最终渲染为 WAV/MP3 音频。项目默认使用 default_sound_font.sf2 音色库,可自行替换为其他 SoundFont 文件获得不同乐器风格。
图1:Video2Music 项目 Logo(来源:GitHub 仓库)
图2:Video2Music 技术框架图,展示了视频 → 视觉特征提取 → Affective Multimodal Transformer → MIDI 生成 → 音频渲染的完整流程(来源:GitHub 仓库)
项目采用标准的 PyTorch 研究代码结构,核心代码分布在以下模块:
video2music.py(约 30KB):主入口,集成 Gradio Web UI。用户可以上传本地视频或输入 YouTube URL,指定起始和弦与调式,输出带背景音乐的视频。内部调用视频帧提取、CLIP 特征提取、场景检测等子流程。
model/video_music_transformer.py(约 9.8KB):AMT 模型核心实现,包含 6 层 Transformer Encoder-Decoder,d_model=512,8 头注意力。Decoder 支持 RPR(Relative Position Representation)改进,支持和弦根音、属性音分离嵌入。
model/music_transformer.py:基础音乐 Transformer,源自 third_party/midi_processor。
utilities/preprocessing.py:六大视觉特征的提取逻辑,包含 semantic_feature.py、motion_feature.py、scene_feature.py、loudness_feature.py、emotion_feature.py、note_density_feature.py。
train.py:AMT 模型训练脚本,支持多视觉模型组合训练。
generate.py:独立推理脚本,支持批量生成和精度评估。
整个项目完全基于 Python 3.8 + PyTorch 1.12.1 开发,依赖明确,模块化程度高,适合学术研究和二次开发。
从部署角度评估,Video2Music 是一个有挑战但可达成的项目:
Gradio Web UI 已内置在 video2music.py 中,用户可以直接运行 python video2music.py 启动本地 Web 界面。HuggingFace 上也有官方在线 Demo 可直接体验(https://huggingface.co/spaces/amaai-lab/video2music),无需本地部署。
硬性门槛较高:项目需要 NVIDIA GPU(CUDA 11+),VRAM 建议 12GB 以上。CLIP 视觉特征提取对显存有一定要求。音频渲染依赖 ffmpeg 和 fluidsynth 音频合成器,这两个依赖在不同操作系统上的安装复杂度差异较大。
模型文件获取是最大痛点:预训练模型 AMT.zip(约数 GB)托管在 Google Drive,SoundFont 文件也在 Google Drive,需要手动下载后放入指定目录。这是非官方分发方式的固有问题,官方若能迁移到 HuggingFace Hub 将大大降低使用门槛。
Video2Music 并非完美。生成的 MIDI 音乐在情感细腻度上仍有局限,特别是在快速场景切换时,和弦过渡可能出现不够流畅的情况。由于依赖 CLIP 提取语义特征,对镜头语言复杂(如蒙太奇、快速剪辑)的视频,理解效果会打折扣。此外,当前版本仅支持 MIDI 输出,不支持直接生成波形音频或乐器录音,若要高质量音乐输出,需要配合专业 DAW 软件做后期混音。
从 AI 音乐生成的发展脉络来看,Video2Music 代表了一个重要方向——从"文字生成音乐"到"视觉理解生成音乐"的跨越。此前 Jukebox、MusicLM 等工作已经在纯音频生成上有突破,而 Video2Music 则首次将视频理解引入音乐生成的 conditioning 环节,为"多模态内容创作"工具链补上了关键一环。
随着 Sora、Runway 等视频生成模型的崛起,"视频+音频"的一体化 AI 创作工具正在成为新的竞争高地。Video2Music 的开源姿态和学术论文支撑,使其成为这个方向上不可忽视的基准项目——无论是学术研究还是工程实践,都能从中获得有价值的参考。