Bei der Echtzeit-Musikgenerierung mit Lyria wird eine persistente, bidirektionale Streamingverbindung mit niedriger Latenz über WebSockets verwendet. In diesem Abschnitt finden Sie weitere Informationen zur WebSockets API.
Sitzungen
Über eine WebSocket-Verbindung wird eine Sitzung eingerichtet, um eine Echtzeitkommunikation mit dem Modell aufrechtzuerhalten. Nachdem ein Client eine neue Verbindung initiiert hat, können in der Sitzung Nachrichten mit dem Server ausgetauscht werden, um:
- Sie können Prompts und Steuerelemente senden, um die Musikgenerierung zu steuern.
- Steuerung der Musikwiedergabe senden
- Audio-Chunks empfangen.
WebSocket-Verbindung
Um eine Sitzung zu starten, stellen Sie eine Verbindung zu diesem WebSocket-Endpunkt her:
wss://generativelanguage.googleapis.com/ws/google.ai.generativelanguage.v1alpha.GenerativeService.BidiGenerateMusic
Sitzungskonfiguration
Mit der ersten Nachricht nach der Verbindung wird das Modell festgelegt, das während der Sitzung verwendet werden soll.
Sehen Sie sich die folgende Beispielkonfiguration an. Beachten Sie, dass die Groß- und Kleinschreibung in SDKs variieren kann. Hier finden Sie die Konfigurationsoptionen für das Python SDK.
{
"model": string
}
Nachrichten senden
Um Nachrichten über die WebSocket-Verbindung auszutauschen, muss der Client ein JSON-Objekt über eine offene WebSocket-Verbindung senden. Das JSON-Objekt muss genau eines der Felder aus der folgenden Objektgruppe enthalten:
{
"setup": BidiGenerateMusicSetup,
"client_content": BidiGenerateMusicClientContent,
"music_generation_config": BidiGenerateMusicGenerationConfig,
"playback_control": BidiGenerateMusicPlaybackControl
}
Unterstützte Clientnachrichten
Die unterstützten Clientnachrichten sind in der folgenden Tabelle aufgeführt:
Nachricht | Beschreibung |
---|---|
BidiGenerateMusicSetup
|
Sitzungskonfiguration, die nur in der ersten Nachricht gesendet werden soll |
BidiGenerateMusicClientContent |
Gewichtete Prompts als Modelleingabe |
BidiGenerateMusicGenerationConfig |
Konfiguration für die Musikgenerierung |
BidiGenerateMusicPlaybackControl
|
Signale zur Wiedergabesteuerung für die Modellgenerierung |
Nachrichten empfangen
Um Nachrichten vom Server zu empfangen, müssen Sie auf das WebSocket-Ereignis „message“ warten und das Ergebnis dann gemäß der Definition der unterstützten Servernachrichten parsen.
Weitere Informationen finden Sie hier:
async def receive_audio(session):
"""Example background task to process incoming audio."""
while True:
async for message in session.receive():
audio_data = message.server_content.audio_chunks[0].data
# Process audio...
await asyncio.sleep(10**-12)
async with (
client.aio.live.music.connect(model='models/lyria-realtime-exp') as session,
asyncio.TaskGroup() as tg,
):
# Set up task to receive server messages.
tg.create_task(receive_audio(session))
# Send initial prompts and config
await session.set_weighted_prompts(
prompts=[
types.WeightedPrompt(text='minimal techno', weight=1.0),
]
)
await session.set_music_generation_config(
config=types.LiveMusicGenerationConfig(bpm=90, temperature=1.0)
)
# Start streaming music
await session.play()
Servernachrichten enthalten genau ein der anderen Felder aus der Nachricht BidiGenerateMusicServerMessage
.
Die messageType
-Union wird nicht in JSON ausgedrückt, daher wird das Feld auf der obersten Ebene der Nachricht angezeigt.
Nachrichten und Ereignisse
AudioChunk
Darstellung eines Audio-Chunks.
Felder | |
---|---|
Union-Feld Für |
|
data |
Rohbyte des Audio-Chunks. |
mimeType |
Der MIME-Typ des Inhalts des Audio-Chunks, z. B. „audio/wav“. |
sourceMetadata |
Nur Ausgabe. Prompts und Konfiguration, die zum Generieren dieses Audio-Chunks verwendet wurden. |
SourceMetadata
Metadaten zur Eingabequelle, die zum Generieren dieses Audio-Chunks verwendet wurde.
Felder | |
---|---|
clientContent |
Gewichtete Prompts zum Generieren dieses Audio-Chunks. |
musicGenerationConfig |
Konfiguration für die Musikgenerierung zum Generieren dieses Audio-Chunks. |
BidiGenerateMusicClientContent
Nutzereingabe zum Starten oder Steuern der Musik.
Felder | |
---|---|
weightedPrompts[] |
Erforderlich. Gewichtete Prompts als Modelleingabe. |
BidiGenerateMusicClientMessage
Vom Client im BidiGenerateMusic-Aufruf gesendete Nachrichten.
Felder | |
---|---|
Union-Feld Für |
|
setup |
Optional. Die Sitzungskonfiguration wird nur in der ersten Clientnachricht gesendet. |
clientContent |
Optional. Gewichtete Prompts und Konfigurationen für die Musikgenerierung als Eingabe für die Musikgenerierung. |
musicGenerationConfig |
Optional. Konfiguration für die Musikgenerierung. |
playbackControl |
Optional. Signal zur Steuerung der Wiedergabe für die Musikgenerierung. |
BidiGenerateMusicFilteredPrompt
Gefilterter Prompt mit Grund.
Felder | |
---|---|
filteredReason |
Nur Ausgabe. Der Grund, warum der Prompt herausgefiltert wurde. |
Union-Feld prompt . Die gefilterte Aufforderung. Für prompt ist nur einer der folgenden Werte zulässig:
|
|
text |
Optional. Text-Prompt. |
BidiGenerateMusicGenerationConfig
Konfiguration für die Musikgenerierung.
Felder | |
---|---|
temperature |
Optional. Steuert die Varianz bei der Audiogenerierung. Höhere Werte führen zu einer höheren Varianz. Bereich: [0.0, 3.0]. Der Standardwert ist 1.1. |
topK |
Optional. Steuert, wie das Modell Tokens für die Ausgabe auswählt. Es werden die „Top-K“-Tokens mit den höchsten Wahrscheinlichkeiten abgetastet. Bereich: [1, 1000]. Der Standardwert ist 40. |
seed |
Optional. Unterstützt die Audiogenerierung. Wenn nicht festgelegt, wird für die Anfrage ein zufällig generiertes Seed verwendet. |
guidance |
Optional. Steuert, wie genau das Modell Prompts folgt. Bei einer höheren Gewichtung wird die Anleitung genauer befolgt, aber die Übergänge sind abrupter. Der Bereich liegt zwischen 0,0 und 6,0. Der Standardwert ist 4,0. |
bpm |
Optional. Schläge pro Minute. Der Bereich ist [60, 200]. |
density |
Optional. Dichte der Geräusche. Bereich: [0,0, 1,0]. |
brightness |
Optional. Ein höherer Wert führt zu einem helleren Audio. Bereich: [0,0, 1,0]. |
scale |
Optional. Tonart der generierten Musik. |
muteBass |
Optional. Die Audioausgabe sollte keinen Bass enthalten. |
muteDrums |
Optional. Die Audioausgabe sollte keine Drums enthalten. |
onlyBassAndDrums |
Optional. Die Audioausgabe sollte nur Bass und Schlagzeug enthalten. |
musicGenerationMode |
Optional. Die Art der Musikgenerierung. Der Standardwert ist QUALITY. |
MusicGenerationMode
Enums | |
---|---|
MUSIC_GENERATION_MODE_UNSPECIFIED |
Dieser Wert wird nicht verwendet. |
QUALITY |
In diesem Modus werden Text-Prompts auf Regionen des latenten Raums mit Musik von höherer Qualität ausgerichtet. |
DIVERSITY |
In diesem Modus werden Text-Prompts in Bereiche des latenten Raums mit einer größeren Vielfalt an Musik gelenkt. |
VOCALIZATION |
In diesem Modus werden Text-Prompts auf Regionen des latenten Raums ausgerichtet, in denen mit höherer Wahrscheinlichkeit Musik mit Gesang generiert wird. |
Skalieren
Tonart der generierten Musik.
Enums | |
---|---|
SCALE_UNSPECIFIED |
Standardwert Dieser Wert wird nicht verwendet. |
C_MAJOR_A_MINOR |
C-Dur oder A-Moll |
D_FLAT_MAJOR_B_FLAT_MINOR |
Des-Dur oder B-Moll |
D_MAJOR_B_MINOR |
D-Dur oder H-Moll |
E_FLAT_MAJOR_C_MINOR |
Es-Dur oder C-Moll |
E_MAJOR_D_FLAT_MINOR |
E-Dur oder des-Moll |
F_MAJOR_D_MINOR |
F-Dur oder D-Moll |
G_FLAT_MAJOR_E_FLAT_MINOR |
Ges-Dur oder Es-Moll |
G_MAJOR_E_MINOR |
G-Dur oder E-Moll |
A_FLAT_MAJOR_F_MINOR |
A-Dur oder F-Moll |
A_MAJOR_G_FLAT_MINOR |
A-Dur oder ges-Moll |
B_FLAT_MAJOR_G_MINOR |
B-Dur oder G-Moll |
B_MAJOR_A_FLAT_MINOR |
H-Dur oder As-Moll |
BidiGenerateMusicPlaybackControl
Wiedergabesteuerung für die Musikgenerierung.
Enums | |
---|---|
PLAYBACK_CONTROL_UNSPECIFIED |
Dieser Wert wird nicht verwendet. |
PLAY |
Starten Sie die Generierung der Musik. |
PAUSE |
Musikgenerierung anhalten Verwende PLAY, um die Wiedergabe an der aktuellen Position fortzusetzen. |
STOP |
Die Musikgenerierung wird beendet und der Kontext wird zurückgesetzt (Prompts bleiben erhalten). Verwende PLAY, um die Musikgenerierung neu zu starten. |
RESET_CONTEXT |
Setzen Sie den Kontext zurück (Prompts werden beibehalten), ohne die Musikgenerierung zu stoppen. |
BidiGenerateMusicServerContent
Inkrementelles Server-Update, das vom Modell als Reaktion auf Clientnachrichten generiert wird.
Inhalte werden so schnell wie möglich generiert, aber nicht in Echtzeit. Clients können die Inhalte puffern und in Echtzeit abspielen.
Felder | |
---|---|
audioChunks[] |
Nur Ausgabe. Audio-Chunks, die vom Modell generiert wurden. |
BidiGenerateMusicServerMessage
Antwortnachricht für den BidiGenerateMusic-Aufruf.
Felder | |
---|---|
Union-Feld messageType . Der Typ der Nachricht.
Für messageType ist nur einer der folgenden Werte zulässig:
|
|
setupComplete |
Nur Ausgabe. Wird als Antwort auf eine |
serverContent |
Nur Ausgabe. Inhalte, die vom Modell als Reaktion auf Clientnachrichten generiert werden. |
filteredPrompt |
Nur Ausgabe. Gefilterter Prompt mit Grund. |
warning |
Nur Ausgabe. Die Warnmeldung vom Server. Warnungen führen nicht zum Beenden des Streams. |
BidiGenerateMusicSetup
Nachricht, die im ersten (und nur im ersten) BidiGenerateMusicClientMessage
gesendet werden soll.
Clients sollten auf eine BidiGenerateMusicSetupComplete
-Nachricht warten, bevor sie weitere Nachrichten senden.
Felder | |
---|---|
model |
Erforderlich. Der Ressourcenname des Modells. Dies dient als ID für das zu verwendende Modell. Format: |
BidiGenerateMusicSetupComplete
Dieser Typ hat keine Felder.
Wird als Antwort auf eine BidiGenerateMusicSetup
-Nachricht vom Client gesendet.
WeightedPrompt
Gewichteter Prompt als Modelleingabe.
Felder | |
---|---|
weight |
Erforderlich. Gewichtung der Aufforderung. Mit dem Gewicht wird die relative Bedeutung des Prompts gesteuert. Höhere Gewichte sind wichtiger als niedrigere. Die Gewichte aller „weighted_prompts“ in diesem „BidiGenerateMusicClientContent“ dürfen nicht alle 0 sein. Die Gewichte aller „weighted_prompts“ in dieser BidiGenerateMusicClientContent-Nachricht werden normalisiert. |
Union-Feld Für |
|
text |
Text-Prompt. |
Weitere Informationen zu Typen
Weitere Informationen zu den von der API verwendeten Typen finden Sie im Python SDK.