HeartMuLa音乐生成基础模型
发布时间:2026-01-26 17:00:09 浏览量:2
今天大多数AI音乐工具将有趣的部分隐藏在Web UI后面。你键入提示,等待,下载MP3,永远看不到任何东西如何工作。
HeartMuLa不同。
它是一个完全开放的音乐基础栈。你可以下载权重、检查架构,并在本地运行整个管道。更重要的是,论文、架构图和生产代码实际上是一致的。这很罕见。
在本文中,我们将直线移动:
使用HeartCodec进行音频令牌化使用HeartMuLa进行音乐生成两者如何在真实代码中出现这个设计在哪里解锁实用工作流程
这有目的地反映了论文和仓库的结构。
在我们谈论音乐生成之前,我们需要谈谈
音频令牌
。
原始波形是巨大的。44.1 kHz的3分钟立体声轨道包含数百万个样本。没有transformer能够以有用的方式直接建模。
HeartMuLa用
HeartCodec
解决这个问题,它是一个神经音频编解码器,将音频压缩成少量语义丰富的令牌。
在左侧,HeartCodec并行使用多个编码器:
MuEncoder
捕获音乐结构
WavLM
捕获音色和声学细节
Whisper
捕获语音和歌词对齐的语义
这是一个重要的设计选择。HeartCodec不仅仅是压缩声音。它正在压缩
有意义的音乐表示
。
每个编码器产生同一音频的不同视图。这些视图随后被融合。
在中间,模型执行投影、拼接和基于查询的提取。
此步骤激进地降低时间分辨率。在这个阶段的目标不是完美的重构。目标是产生
每秒非常少的令牌
,这样长轨道是可行的。
这就是HeartMuLa能够生成多分钟歌曲而不是短剪辑的原因。
在右侧,解码器使用以下内容重构音频:
Flow Matching以保持稳定性结构化解码解码
结果是在生产级采样率下的高质量波形重构。
此时,音频变成语言模型可以推理的离散令牌序列。
一旦音频令牌化,音乐生成就变成序列建模问题。
这就是HeartMuLa进入的地方。
HeartMuLa消耗三个流:
来自描述和歌词的
文本令牌
来自参考音乐的
音频嵌入
来自HeartCodec在训练期间的
音频令牌
这些在进入模型之前被组合成共享表示。
这不是装饰性的。它给模型关于歌曲结构的强先验。
HeartMuLa全局骨干
负责长程规划。
这是模型学习的地方:
主歌和副歌重复整体歌曲进展高级音乐一致性
你可以将其视为知道歌曲是什么的部分。
HeartMuLa局部解码器
处理细粒度细节:
节奏清晰度短程时机
全局规划和局部实现之间的这种分离是系统中最重要的架构决策之一。
最后,生成的音乐令牌通过HeartCodec解码器传回以产生音频。
文本变成令牌。令牌变成音乐。
架构图很好,但只有代码尊重它们时才重要。
HeartMuLa确实如此。
下面是一个反映论文的最小示例。
python -m venv heartmula-envsource heartmula-env/bin/activatepip install torch torchaudiopip install transformers accelerate huggingface_hub soundfile numpy
如果你使用GPU,请确保你的PyTorch安装与你的CUDA版本匹配。
import torchimport soundfile as sffrom transformers import AutoTokenizer, AutoModelForCausalLMDEVICE = "cuda" if torch.cuda.is_available else "cpu"tokenizer = AutoTokenizer.from_pretrained("heartmula/heartmula-oss-3b")model = AutoModelForCausalLM.from_pretrained( "heartmula/heartmula-oss-3b", torch_dtype=torch.float16, device_map="auto")lyrics = """[Verse]In the quiet of the city nightNeon dreams are burning bright[Chorus]Hold on to the echo of our songWe were right here all along"""style = "emotional pop ballad, 90 bpm, English, female vocal, acoustic"prompt = f"LYRICS:\n{lyrics}\nSTYLE:\n{style}"inputs = tokenizer(prompt, return_tensors="pt").to(DEVICE)with torch.no_grad: audio_tokens = model.generate( **inputs, max_new_tokens=80000, do_sample=True, top_p=0.95, temperature=1.0 )
在这个阶段,模型输出
音频令牌
,而不是波形。
from heartcodec import HeartCodeccodec = HeartCodec.from_pretrained("heartmula/heartcodec").to(DEVICE)waveform = codec.decode(audio_tokens[0].unsqueeze(0))waveform = waveform.cpu.numpy[0]sf.write("generated_song.wav", waveform, samplerate=44100)
这完全反映了论文:
在令牌空间中的自回归生成只在最后解码
这就是为什么长轨道在消费GPU上可能的原因。
三个决策使HeartMuLa实用。
音频令牌而不是波形
这按数量级减少序列长度。
提示中的显式结构
歌词被视为小领域特定语言。这显着改善了形式。
全局和局部建模的分离
歌曲级结构和微时机在不同层次学习。
这一切都不是偶然的。你可以在论文和代码中看到它。
5、你可以用这个栈构建什么
因为HeartMuLa是一个
基础模型
,而不仅仅是一个生成器,你可以构建:
歌词条件音乐工具多语言歌曲创作系统使用HeartCLAP的音乐搜索引擎使用HeartTranscriptor的歌词转录管道ComfyUI中的完整视听管道
重要的转变是控制。你不再局限于SaaS UI。
6、结束语
HeartMuLa有趣不是因为它生成音乐。
它有趣的是因为它展示了当架构、论文和代码对齐时,
开放、端到端的音乐基础模型
是什么样的。
如果你对生成音频认真,这是目前可用的最清晰的参考系统之一。
