Magenta RT - 实时音乐生成库


一、关于 Magenta RT

1、项目概览

Magenta RealTime 是一个用于在本地设备上实现流式音乐音频生成的 Python 库。该项目是 MusicFX DJ ModeLyria RealTime API 的开源/设备端实现。


2、相关链接资源


3、功能特性

  1. 实时音乐生成

    • 以 2 秒为块生成音频
    • 使用 10 秒上下文进行连续生成
    • 通过交叉淡化减少块间伪影
  2. 多模态风格融合

    • 支持文本和音频提示的混合风格控制
    • 基于 MusicCoCa 联合嵌入模型
  3. 高质量音频编解码

    • SpectroStream 编解码器支持立体声 48kHz 音频
    • 基于语言模型的音频标记化

二、安装配置

# GPU 支持版本
pip install 'git+https://github.com/magenta/magenta-realtime#egg=magenta_rt[gpu]'

# TPU 支持版本
pip install 'git+https://github.com/magenta/magenta-realtime#egg=magenta_rt[tpu]'

# CPU 版本
pip install 'git+https://github.com/magenta/magenta-realtime'

或者clone 本地安装

git clone https://github.com/magenta/magenta-realtime.git && cd magenta-realtime
pip install -e .[gpu]

三、使用示例

1、使用 Magenta RT 生成音频

Magenta RT 通过给定有限的历史上下文(10秒)来生成短片段音频(2秒)。我们采用交叉淡入淡出技术来减轻片段间的边界伪影。更多关于模型的细节将很快在技术报告中发布!


from magenta_rt import audio, system
from IPython.display import display, Audio

num_seconds = 10
mrt = system.MagentaRT()
style = system.embed_style('funk')

chunks = []
state = None
for i in range(round(num_seconds / mrt.config.chunk_length)):
  state, chunk = mrt.generate_chunk(state=state, style=style)
  chunks.append(chunk)
generated = audio.concatenate(crossfade_time=mrt.crossfade_length)
display(Audio(generated.samples.swapaxes(0, 1), rate=mrt.sample_rate))

2、使用 MusicCoCa 混合文本与音频风格

MusicCoCa 是一个融合文本与音频风格的联合嵌入模型。Magenta RT 基于 MusicCoCa 嵌入进行条件化处理,能够无缝混合任意数量的文本和音频提示来生成风格。


from magenta_rt import audio, musiccoca

style_model = musiccoca.MusicCoCa()
my_audio = audio.Waveform.from_file('myjam.mp3')
weighted_styles = [
  (2.0, my_audio),
  (1.0, 'heavy metal'),
]
weights = np.array([w for w, _ in weighted_styles])
styles = style_model.embed([s for _, s in weighted_styles])
weights_norm = weights / weights.sum()
blended = (weights_norm[:, np.newaxis] * styles).mean(axis=0)

3、使用 SpectroStream 进行音频标记化

SpectroStream 是一种针对高保真音乐音频(立体声,48kHz)运行的离散音频编解码模型。在底层实现中,Magenta RT 模型通过语言模型来处理 SpectroStream 音频标记。


from magenta_rt import audio, spectrostream

codec = spectrostream.SpectroStream()
my_audio = audio.Waveform.from_file('jam.mp3')
my_tokens = codec.encode(my_audio)
my_audio_reconstruction = codec.decode(tokens)

四、运行测试

单元测试:

pip install -e .[test]
pytest .

集成测试:

python test/musiccoca_end2end_test.py
python test/spectrostream_end2end_test.py
python test/magenta_rt_end2end_test.py

五、未来计划

  • 技术报告发布
  • 实时音频输入处理 Colab
  • 模型微调 Colab

伊织 xAI 2025-06-23(一)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

EAI工程笔记

请我喝杯伯爵奶茶~!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值