你喜歡用傳統的文字轉音樂模型產生靜態歌曲嗎?準備好指揮一場永無止境的交響樂吧。隆重介紹Lyria RealTime ,這是 Google DeepMind 的實驗性模型,它不僅能生成音樂,還能像在 Toro y Moi IO 預覽中與你即興演奏:
{% embed https://youtu.be/thAhd82XnMc %}
傳統音樂生成模型的工作方式類似於點唱機(輸入提示 -> 等待 -> 獲取歌曲),而 Lyria RealTime 則基於「音樂即動詞」的原理運作。它建立了一個持久的雙向流連接,產生連續的 48kHz 立體聲流。您可以即時控制、扭曲和變形音頻,使其成為首個真正為互動式體驗而設計的生成模型。
最棒的是什麼?現在這款模型可以免費使用!
以下是本指南內容的簡要概述:

本指南將引導您使用 Gemini API 建立 Lyria RealTime。
本指南將涵蓋以下內容:
Lyria RealTime 的工作原理(「金魚記憶」架構)
專案設定
基礎串流媒體(音樂界的「Hello World」)
引導流(加權提示)
高階配置(BPM、密度和規模)
未來藍圖:進階應用案例
提示策略與最佳實踐
在哪裡可以玩 Lyria Real Time
如果您想直接使用 Lyria RealTime 進行遊戲,例如擔任DJ 、駕駛太空船或使用相機,請直接跳到最後一節。
附註:若要查看此貼文的互動版本,請查看python cookbook 。
Lyria RealTime 使用低延遲的 WebSocket 連線來維持與模型的即時通訊通道。與規劃完整歌曲結構(前奏-主歌-副歌)的離線模型不同,Lyria 採用基於分塊的自回歸系統。

它以兩秒為單位生成音頻片段,回溯幾秒鐘的上下文以保持節奏“律動”,同時根據你當前的控制來決定風格。這意味著該模型並非以傳統意義上的方式“創作歌曲”,而是駕馭音樂狀態。
要按照本指南操作,您需要:
來自 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 工作室應用程式。
要啟動會話,您需要連接到模型( models/lyria-realtime-exp ),發送初始配置,然後啟動音訊串流。交互循環是異步的:您發送命令,伺服器持續返回原始音訊區塊。
[註:請確保您使用的是v1alpha API 版本,以便為 Lyria 等實驗性模型進行開發] 。
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())
恭喜,你找到適合電梯播放的音樂了!
沒被震撼到?親愛的學徒,這只是個開始,精彩的部分才剛開始。
這就是神奇之處。與靜態生成不同,你可以在音樂播放過程中發送新的WeightedPrompt訊息,從而平滑地過渡音樂類型、樂器或情緒。
weight參數就是你的音量調節器。預設值為1.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,但實際情況可能並非如此。
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()
我們已經介紹了基本的串流播放,但 Lyria 的參數化控制功能允許將物理世界與音訊串流連接起來的應用。以下四個想法可以幫助您入門。
大多數健身應用程式使用靜態播放列表,這些列表很少能與你的實際節奏相符。而 Lyria 支援即時控制bpm和density ,因此你可以建立一個與使用者生理節奏高度契合的音樂引擎。
心率監測器 (HRM) -> BPM:將使用者的心率直接對應到曲目的節奏。
加速度計 -> 密度:如果使用者正在衝刺(運動幅度較大),則將density提高到1.0 ,以增加衝擊力和複雜性。如果使用者停下來休息,則將density降低到0.2 ,以營造環境音效的層次感。
由於WeightedPrompts接受浮點數值,您可以為 Twitch 直播或 Discord 機器人建立一個協作式電台,讓觀眾投票決定音樂類型。 Lyria 可以混合投票結果,而不是採用贏家通吃的製度。
輸入: 100 位用戶投票。 60 票投給“賽博朋克”,30 票投給“爵士樂”,10 票投給“雷鬼樂”。
歸一化:將投票轉換為權重(0.6、0.3、0.1)。
結果:該模型生成了一首以清晰的爵士和聲和微妙的雷鬼節奏為主導的賽博朋克曲目,並根據投票結果隨時間推移而改變。
深度工作和腦力激盪需要不同的音訊體驗。您可以將 Lyria 的brightness和guidance參數對應到番茄鐘計時器,以引導使用者的認知狀態。
深度工作階段:低brightness (較暗、較暖的聲音)、 density (幹擾最小)、高guidance (重複、可預測)。
休息階段:高brightness (充滿活力,清晰),高density ,低guidance (富有創意,出乎意料)。
我來自遊戲產業,所以不禁想到一個關於 Lyria Real Time 的遊戲創意。你可以讓 Lyria 根據以下條件即時創作遊戲音樂:
遊戲的獨特風格:一系列提示定義了遊戲內容和整體氛圍。
環境:根據你身處繁華都市、森林或希臘海域航行,會有不同的提示。
玩家的行動:如果他們正在戰鬥,則加入“史詩”提示;如果他們正在調查,則將其更改為“神秘”提示。
玩家目前狀態:您可以根據玩家的生命值調整「危險」提示的 BPM 和力度。生命值越低,音樂的緊張感越強。
提示公式:
經過測試,一個可靠的公式已經形成: [類型錨點] + [樂器] + [氛圍] ...
樂器: 303 Acid Bass、Buchla Synths、Hang Drum、TR-909 鼓機...
**音樂類型:**酸爵士、孟加拉巴烏爾、故障嘻哈、自賞搖滾、蒸氣波…
**氛圍:**嘎吱作響的失真、空靈的氛圍、不祥的嗡嗡聲、旋轉的相位器…
開發者最佳實務:
緩衝音訊:由於這是透過網路進行即時串流傳輸,因此需要實現客戶端音訊緩衝(2-3 個資料區塊)來處理網路抖動,以確保流暢播放。
「穩定」期:當您開始一個串流或重設情境時,模型需要大約 5-10 秒才能「穩定」到一個穩定的狀態。
安全過濾器:此模型會根據安全過濾器檢查提示訊息。避免詢問具體的受版權保護的藝術家(例如“泰勒·斯威夫特的風格”);而是將他們的音樂風格分解成描述詞(例如“流行、女聲、原聲吉他”)。
僅樂器演奏:此模型僅提供樂器演奏。雖然您可以將music_generation_mode設為VOCALIZATION ,但它會產生類似人聲的音效(例如“嗚嗚”/“啊啊”),而不是連貫的歌詞。
會話時長限制:目前會話時長限制為 10 分鐘,但之後您可以重新開始一個新會話。
更多詳情和提示資訊請參閱 Lyria RealTime 的文件。
AI Studio 是最容易上手的地方之一,那裡有一些很棒的應用程式供你體驗,並且可以根據你的需求進行個人化:
<
video src="https://storage.googleapis.com/gdm-deepmind-com-prod-public/media/media/Mixing\_prompts.mp4" controls>
<
video src="https://magenta.withgoogle.com/assets/spacedj/spacedj-video.mp4" controls>
<
video src="https://magenta.withgoogle.com/assets/lyria\_camera/lyria\_camera\_video.mp4" autoplay="false" loop="true" muted="false" controls="true">
Magenta網站上還有很多很棒的示範。它也是了解DeepMind音樂生成模型更多詳情的好去處。
最後,來看看我製作的神奇鏡子演示,它使用 Lyria 根據鏡子裡的內容建立背景音樂(Gemini 會即時生成提示):
{% embed https://youtu.be/Z7FUh8B4im4 %}
現在輪到你了,你會用 Lyria RealTime 創造出什麼呢?

原文出處:https://dev.to/googleai/lyria-realtime-the-developers-guide-to-infinite-music-streaming-4m1h