Lyria RealTime:开发者无限音乐流媒体指南
你喜欢用传统的文本转音乐模型生成静态歌曲吗?准备好指挥一场永无止境的交响乐吧。隆重推出Lyria RealTime,这是 Google DeepMind 的实验性模型,它不仅能生成音乐,还能像在 Toro y Moi IO 预演中那样与你即兴演奏:
传统音乐生成模型的工作方式类似于点唱机(输入提示 -> 等待 -> 获取歌曲),而 Lyria RealTime 则基于“音乐即动词”的原理运行。它创建了一个持久的双向流连接,生成连续的 48kHz 立体声流。您可以即时控制、扭曲和变形音频,使其成为首个真正为交互式体验而设计的生成模型。
最棒的是什么?现在这款模型可以免费使用!
本指南将引导您使用 Gemini API 构建 Lyria RealTime。
本指南将涵盖以下内容:
- Lyria RealTime 的工作原理(“金鱼记忆”架构)
- 项目设置
- 基础流媒体(音乐界的“Hello World”)
- 引导流(加权提示)
- 高级配置(BPM、密度和规模)
- 未来蓝图:高级应用案例
- 提示策略与最佳实践
- 在哪里可以玩 Lyria Real Time
如果您想直接使用 Lyria RealTime 进行游戏,例如担任DJ、驾驶宇宙飞船或使用相机,请直接跳到最后一节。
注:要查看此帖子的交互式版本,请查看python cookbook。
1) Lyria RealTime 的工作原理
Lyria RealTime 使用低延迟的 WebSocket 连接来维持与模型的实时通信通道。与规划完整歌曲结构(前奏-主歌-副歌)的离线模型不同,Lyria 采用基于分块的自回归系统。
它以两秒为单位生成音频片段,回溯几秒钟的上下文以保持节奏“律动”,同时根据你当前的控制来决定风格。这意味着该模型并非以传统意义上的方式“创作歌曲”,而是驾驭音乐状态。
2)项目设置
要按照本指南操作,您需要:
- 来自 Google AI Studio 的 API 密钥(可以是免费的)。
- Google Gen AI SDK。
安装 SDK:
Python(3.12+推荐):
pip install "google-genai>=1.52.0"
JavaScript/TypeScript:您至少需要JS/TS SDK
1.30 版本。
npm install @google/genai
注意:以下示例使用 Python SDK 进行演示。有关 JS/TS 代码示例,请查看AI 工作室应用。
3)基本流媒体
要启动会话,您需要连接到模型(models/lyria-realtime-exp),发送初始配置,然后启动音频流。交互循环是异步的:您发送命令,服务器持续返回原始音频块。
[注:请确保您使用的是v1alphaLyria 等实验性模型的 API 版本]。
import asyncio
from google import genai
from google.genai import types
client = genai.Client(http_options={'api_version': 'v1alpha'})
async def main():
async def receive_audio(session):
"""Background task to process incoming audio chunks."""
while True:
async for message in session.receive():
if message.server_content.audio_chunks:
# 'data' is raw 16-bit PCM audio at 48kHz
audio_data = message.server_content.audio_chunks.data
# Add your audio playback logic here!
await asyncio.sleep(10**-12)
async with (
client.aio.live.music.connect(model='models/lyria-realtime-exp') as session,
asyncio.TaskGroup() as tg,
):
# 1. Start listening for audio
tg.create_task(receive_audio(session))
# 2. Send initial musical concept
await session.set_weighted_prompts(
prompts=[types.WeightedPrompt(text='elevator music', weight=1.0)]
)
# 3. Set the vibe (BPM, Temperature)
await session.set_music_generation_config(
config=types.LiveMusicGenerationConfig(bpm=90, temperature=1.0)
)
# 4. Drop the beat
await session.play()
# Keep the session alive
await asyncio.sleep(30)
if __name__ == "__main__":
asyncio.run(main())
恭喜,你找到了适合电梯播放的音乐!
没被震撼到?亲爱的学徒,这只是个开始,精彩的部分才刚刚开始。
4)引导流(加权提示)
这就是神奇之处。与静态生成不同,你可以在音乐播放的同时WeightedPrompt发送新消息,从而平滑地切换音乐类型、乐器或情绪。
参数weight就是你的推子。1.0默认权重为 0,但你可以使用多个提示来混合各种效果。
例如:从钢琴演奏过渡到现场表演
from google.genai import types
# Send this while the loop is running to shift the style
await session.set_weighted_prompts(
prompts=[
# Keep the piano strong
{"text": "Piano", "weight": 2.0},
# Add a subtle meditative layer
types.WeightedPrompt(text="Meditation", weight=0.5),
# Push the 'Live' feeling
types.WeightedPrompt(text="Live Performance", weight=1.0),
]
)
注意:由于模型会生成一个又一个数据块,因此更改可能需要几秒钟(通常约为 2 秒)才能反映在音乐中。
专业提示:交叉淡入淡出
剧烈的即时变化可能会显得突兀。为了获得专业效果,请通过快速发送中间权重值(例如,每 500 毫秒一次)来实现客户端交叉淡入淡出,从而使音乐平滑地“过渡”。
例如:“变形”函数
import asyncio
from google.genai import types
async def cross_fade(session, old_prompt, new_prompt, duration=2.0, steps=10):
"""Smoothly morphs from one musical idea to another."""
step_time = duration / steps
for i in range(steps + 1):
# Calculate the blend ratio (alpha goes from 0.0 to 1.0)
alpha = i / steps
await session.set_weighted_prompts(
prompts=[
# Fade out the old
types.WeightedPrompt(text=old_prompt, weight=1.0 - alpha),
# Fade in the new
types.WeightedPrompt(text=new_prompt, weight=alpha),
]
)
await asyncio.sleep(step_time)
# Usage in your main loop:
# Morph from 'Ambient' to 'Techno' over 5 seconds
await cross_fade(session, "Ambient Drone", "Hard Techno", duration=5.0)
请注意,此代码示例假设所有提示的权重均为 1,但实际情况可能并非如此。
5)高级配置(旋钮)
Lyria RealTime 提供了参数化控制功能,可以改变音乐的结构。如果您不是音乐家,可以将这些控制功能理解为音频世界的物理定律:
- 密度(0.0 - 1.0):可以将其理解为“繁忙程度”。
- 低(0.1):孤独的鼓手每隔几秒敲击一次。稀疏。
- 高(0.9):混乱的交响乐,所有人同时演奏。激烈。
- 亮度(0.0 - 1.0):可以将其理解为“模糊与清晰”。
- 低(0.1):隔着墙在俱乐部外听音乐。声音昏暗,低音很重。
- 高(0.9):使用高端耳机聆听。声音尖锐、清晰,高音突出。
- BPM(60 - 200):歌曲的心跳(每分钟节拍数)。
- 音阶:它决定了音乐的“情绪”。它将音乐强制纳入一组特定的音符(调/模式)。
重要提示:虽然密度和亮度可以实时平滑地调整,但更改 BPM 或音阶是根本性的结构性改变。您必须调用
reset_context()这些更改才能使其生效。这将清除模型的“短期记忆”,导致音频突然中断。
例如:“硬坠落”
# Changing structural parameters requires a context reset
await session.set_music_generation_config(
config=types.LiveMusicGenerationConfig(
bpm=140,
scale=types.Scale.C_MAJOR_A_MINOR, # Force happy/neutral mood
)
)
# This command is mandatory for BPM/Scale changes to apply!
await session.reset_context()
6)未来蓝图:高级用例
我们已经介绍了基本的流媒体播放,但 Lyria 的参数化控制功能允许将物理世界与音频流连接起来的应用。以下四个想法可以帮助您入门。
应用案例 A:“生物识别节拍”(健身与健康)
大多数健身应用使用静态播放列表,很少能与你的实际节奏相匹配。而 Lyria 支持实时bpm控制density,因此你可以构建一个与用户生理节奏高度契合的音乐引擎。
- 心率监测器 (HRM) -> BPM:将用户的心率直接映射到曲目的节奏。
- 加速度计 -> 密度:如果用户正在冲刺(运动幅度较大),则增加密度
density以1.0增强打击乐效果和复杂性。如果用户停下来休息,则降低density密度0.2以营造环境音效的层次感。
用例 B:“民主 DJ”(社交流媒体)
由于WeightedPromptsLyria 接受浮点数值,您可以为 Twitch 直播或 Discord 机器人构建一个协作式电台,让观众投票决定音乐类型。Lyria 不会采用赢家通吃的模式,而是可以将投票结果混合起来。
- 输入: 100 位用户投票。60 票投给“赛博朋克”,30 票投给“爵士乐”,10 票投给“雷鬼乐”。
- 归一化:将投票转换为权重(0.6、0.3、0.1)。
- 结果:该模型生成了一首以清晰的爵士和声和微妙的雷鬼节奏为主导的赛博朋克曲目,并根据投票结果随时间推移而改变。
用例 C:“专注流程”(生产力)
深度工作和头脑风暴需要不同的音频体验。您可以将 Lyria 的参数映射brightness到guidance番茄钟计时器,以引导用户的认知状态。
- 深度工作阶段:低
brightness(较暗、较温暖的声音),低density(干扰极少),高guidance(重复、可预测)。 - 休息阶段:高
brightness(精力充沛,干脆利落),高density,低guidance(富有创造力,出人意料)。
用例 D:“实时游戏音乐”(游戏)
我来自游戏行业,所以不禁想到一个关于 Lyria Real Time 的游戏创意。你可以让 Lyria 根据以下条件实时创作游戏音乐:
- 游戏的独特风格:一系列定义游戏内容和整体氛围的提示信息。
- 环境:根据你身处繁华都市、森林还是希腊海域航行,会有不同的提示。
- 玩家的行动:如果他们正在战斗,则添加“史诗”提示;如果他们正在调查,则将其更改为“神秘”提示。
- 玩家当前状态:您可以根据玩家的生命值调整“危险”提示的 BPM 和力度。生命值越低,音乐的紧张感就越强。
7)提示策略和最佳实践
提示公式:
经过测试,一个可靠的公式已经形成:[类型锚点] + [乐器] + [氛围] ...
- 乐器: 303 Acid Bass、Buchla Synths、Hang Drum、TR-909 鼓机...
- 音乐类型: 酸爵士、孟加拉巴乌尔、故障嘻哈、自赏摇滚、蒸汽波……
- 氛围: 嘎吱作响的失真、空灵的氛围、不祥的嗡鸣声、旋转的相位器……
开发者最佳实践:
- 缓冲音频:由于这是通过网络进行实时流传输,因此需要实现客户端音频缓冲(2-3 个数据块)来处理网络抖动,以确保流畅播放。
- “稳定”期:当您开始一个流或重置上下文时,模型需要大约 5-10 秒才能“稳定”到一个稳定的状态。
- 安全过滤器:该模型会根据安全过滤器检查提示信息。避免询问具体的受版权保护的艺术家(例如“泰勒·斯威夫特的风格”);而是将他们的音乐风格分解成描述词(例如“流行、女声、原声吉他”)。
- 纯乐器模式:该模型仅支持乐器演奏。虽然您可以将其设置
music_generation_mode为“是”VOCALIZATION,但它会产生类似人声的音效(例如“哦哦”/“啊啊”),而不是连贯的歌词。 - 会话时长限制:目前会话时长限制为 10 分钟,但之后您可以重新开始一个新会话。
更多详情和提示信息请参阅 Lyria RealTime 的文档。
8. 准备好开始了吗?选择你喜欢的 Lyria RealTime 游戏方式
AI Studio 是最容易上手的地方之一,那里有一些很棒的应用程序供你体验,并可以根据你的需求进行个性化定制:
- Space DJ让你驾驶宇宙飞船探索音乐性别宇宙!我个人最喜欢在意大利迪斯科和欧洲法国音乐星球上穿梭。
- Lyria Camera可以根据拍摄到的画面实时创作音乐。我真希望它能连接到我的行车记录仪上!
-
Magenta网站上还有很多很棒的演示。它也是了解DeepMind音乐生成模型更多详情的好去处。
-
最后,来看看我制作的神奇镜子演示,它使用 Lyria 根据镜子里的内容创建背景音乐(Gemini 会即时生成提示):
现在轮到你了,你会使用 Lyria RealTime 创造出什么呢?


