Lyria RealTime 快速上手:3 步对话式生成实时音乐
【免费下载链接】cookbookExamples and guides for using the Gemini API项目地址: https://gitcode.com/GitHub_Trending/coo/cookbook
假设你在剪辑短片或做直播,想让背景音乐从“舒缓钢琴”一句话切成“轻快电子”,Google 的 Gemini Lyria RealTime 模型就是干这个的:它以流式方式持续生成纯器乐实时音乐,你可以在播放过程中随时改风格、调速、换调。这篇文章以官方示例仓库 cookbook 为准,走一遍实时音乐生成的完整流程。
Lyria RealTime 能做什么、不能做什么
先把能力边界说清楚,避免期望错位:
- 能持续生成纯器乐:通过 websocket(一种双向长连接通道)不断下发音频小块,而不是生成一段固定时长的片段就结束;
- 能在播放中实时改音乐:会话不中断,发新提示词后曲风逐步转向;
- 能单独调参数:速度(BPM,每分钟节拍数)、音阶(大小调)、采样多样性(top_k,控制生成随机性)各自独立设置;
- 不能生成人声:目前只输出器乐,没有歌手演唱;
- 还是预览功能:模型名
lyria-realtime-exp中的 exp 表示实验性,API 走 v1alpha 版本,当前免费但有配额限制,行为可能变化。
准备工作:两条命令跑通示例
需要 Python 3.9 及以上环境和一个 Gemini API key。
- 克隆示例仓库:
git clone https://gitcode.com/GitHub_Trending/coo/cookbook- 安装依赖(本地实时播放用 PyAudio 驱动声卡):
pip install -U google-genai pip install pyaudio websockets- 设置 API key(从 Google AI Studio 获取):
export GOOGLE_API_KEY="你的key"核心示例是本地可运行的 quickstarts/Get_started_LyriaRealTime.py;Colab 版 quickstarts/Get_started_LyriaRealTime.ipynb 因浏览器环境无法播放实时音频,适合用来理解流程,实际体验请用 Python 脚本。
实时音乐生成三步走
第 1 步:打开会话,播放第一首
python quickstarts/Get_started_LyriaRealTime.py脚本内部三个关键调用完成首次播放:client.aio.live.music.connect(model=...)建立连接,set_weighted_prompts发送初始提示词(示例用 "Piano"),session.play()启动音频流。之后音频块以 48000 Hz、双声道、16 位格式连续写入声卡。
第 2 步:播放中发一行命令
脚本启动后终端持续等待输入,命令不中断播放:
| 输入 | 作用 |
|---|---|
play/pause | 恢复 / 暂停 |
bpm=80 | 变速到 80 拍每分钟;bpm=AUTO恢复自动 |
scale=C_MAJOR | 切换音阶(大小调) |
top_k=50 | 调整生成多样性 |
lofi beats:2, piano:1 | 带权重的多提示词,lofi 风格占比更大 |
q | 结束会话 |
注意:改 bpm、scale、top_k 后示例会调用reset_context()重置上下文,让新参数从头生效;带权重的提示词里权重可以为小数甚至负数,但不能为 0。
第 3 步:理解缓冲,处理被过滤的提示词
示例中BUFFER_SECONDS=1:播放前先攒 1 秒缓冲,吸收网络抖动避免爆音。代码注释写得很直白——缓冲越大越不容易掉音,但播放和命令响应的延迟也越大,网络不稳时可以把它调大。
如果提示词触发内容安全过滤,模型不会报错,而是回一条filtered_prompt消息;终端里看到它就说明这段内容被拦下,需要换个说法重写。
调优技巧:输入示例 → 生成效果
- 输入
Piano(单提示词)→ 纯钢琴独奏;想叠加音色改用带权重写法,如warm piano:2, soft strings:1,前半占主导、弦乐作铺底; - 输入
bpm=70→ 曲速明显放慢,情绪变松弛;bpm=140→ 节奏紧凑紧张; - 输入
scale=C_MINOR→ 从明亮转忧郁;音阶必须写 SDKtypes.Scale枚举里的值,拼错只会提示 “Matching enum not found”; - 输入较小的
top_k→ 旋律选择更保守、重复增多;想要更多意外感就调大。
实操建议:一次只改一个变量,效果好坏才归因得清。
上图是 AI 生成的手绘城堡,适合“先生成画面、再配实时 BGM”这类组合创作场景。
常见问题
| 现象 | 可能原因 | 解决办法 |
|---|---|---|
| 连接成功但没声音 | PyAudio 装不上或系统无输出设备 | Linux 先装 PortAudio;用python -c "import pyaudio; print(pyaudio.PyAudio().get_device_count())"确认设备数 |
| 音频断音、卡顿 | 网络抖动、缓冲过小 | 调大BUFFER_SECONDS |
| 改参数后没变化 | 上一命令未生效,或改的项没有重置上下文 | 等几秒再发;bpm/scale/top_k 在示例中会自动 reset |
| 提示词被拦截,音乐停更 | 触发内容安全过滤 | 看filtered_prompt日志,改写措辞 |
| 在 Colab 里听不到实时音频 | 浏览器环境无法播放实时流 | 换本地 Python 脚本,或试用 AI Studio 的 Prompt DJ、MIDI DJ 应用 |
场景延伸
短视频 / 直播的动态配乐:剪辑时按场景发对应提示词(开场 lofi、冲突段落电子、结尾钢琴),把实时音频流录下来当临时代声;成片后用同一套参数重跑整段,保证风格一致。
游戏氛围乐:不预置长曲目,而是让模型循环播放基底旋律,按玩家状态(战斗中紧张、探索时舒缓)发风格切换指令,并用 bpm 与带权重提示词实时调节紧张度。
写在最后
Lyria RealTime 把“给音乐写提示词”变成了可以边听边改的实时过程:连会话、发提示词、调参数,三步就能跑起来。想继续深入,建议按 quickstarts/Get_started_LyriaRealTime.py(本地实时体验)→ quickstarts/websockets/Get_started_LyriaRealTime_websockets.ipynb(看懂底层 websocket 协议)→ quickstarts/Get_started_Lyria.ipynb(非实时的 Lyria,适合批量生成对比)的顺序阅读。
【免费下载链接】cookbookExamples and guides for using the Gemini API项目地址: https://gitcode.com/GitHub_Trending/coo/cookbook
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考