文章目录
一、关于 Magenta RT
1、项目概览
Magenta RealTime 是一个用于在本地设备上实现流式音乐音频生成的 Python 库。该项目是 MusicFX DJ Mode 和 Lyria RealTime API 的开源/设备端实现。
2、相关链接资源
- GitHub:https://github.com/magenta/magenta-realtime
- 官方博客:https://g.co/magenta/rt
- 模型卡片:https://github.com/magenta/magenta-realtime/blob/main/MODEL.md
- Colab 演示:https://colab.research.google.com/github/magenta/magenta-realtime/blob/main/notebooks/Magenta_RT_Demo.ipynb
- 演示视频:https://www.youtube.com/watch?v=SVTuEdeepVs
- 许可证:
- 代码:Apache 2.0
- 模型权重:CC-BY 4.0
3、功能特性
-
实时音乐生成
- 以 2 秒为块生成音频
- 使用 10 秒上下文进行连续生成
- 通过交叉淡化减少块间伪影
-
多模态风格融合
- 支持文本和音频提示的混合风格控制
- 基于 MusicCoCa 联合嵌入模型
-
高质量音频编解码
- 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(一)