Live Music API - WebSockets API reference

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 content.

Für content ist nur einer der folgenden Werte zulässig:

data

bytes

Rohbyte des Audio-Chunks.

mimeType

string

Der MIME-Typ des Inhalts des Audio-Chunks, z. B. „audio/wav“.

sourceMetadata

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

BidiGenerateMusicClientContent

Gewichtete Prompts zum Generieren dieses Audio-Chunks.

musicGenerationConfig

BidiGenerateMusicGenerationConfig

Konfiguration für die Musikgenerierung zum Generieren dieses Audio-Chunks.

BidiGenerateMusicClientContent

Nutzereingabe zum Starten oder Steuern der Musik.

Felder
weightedPrompts[]

WeightedPrompt

Erforderlich. Gewichtete Prompts als Modelleingabe.

BidiGenerateMusicClientMessage

Vom Client im BidiGenerateMusic-Aufruf gesendete Nachrichten.

Felder

Union-Feld messageType.

Für messageType ist nur einer der folgenden Werte zulässig:

setup

BidiGenerateMusicSetup

Optional. Die Sitzungskonfiguration wird nur in der ersten Clientnachricht gesendet.

clientContent

BidiGenerateMusicClientContent

Optional. Gewichtete Prompts und Konfigurationen für die Musikgenerierung als Eingabe für die Musikgenerierung.

musicGenerationConfig

BidiGenerateMusicGenerationConfig

Optional. Konfiguration für die Musikgenerierung.

playbackControl

BidiGenerateMusicPlaybackControl

Optional. Signal zur Steuerung der Wiedergabe für die Musikgenerierung.

BidiGenerateMusicFilteredPrompt

Gefilterter Prompt mit Grund.

Felder
filteredReason

string

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

string

Optional. Text-Prompt.

BidiGenerateMusicGenerationConfig

Konfiguration für die Musikgenerierung.

Felder
temperature

float

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

int32

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

int32

Optional. Unterstützt die Audiogenerierung. Wenn nicht festgelegt, wird für die Anfrage ein zufällig generiertes Seed verwendet.

guidance

float

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

int32

Optional. Schläge pro Minute. Der Bereich ist [60, 200].

density

float

Optional. Dichte der Geräusche. Bereich: [0,0, 1,0].

brightness

float

Optional. Ein höherer Wert führt zu einem helleren Audio. Bereich: [0,0, 1,0].

scale

Scale

Optional. Tonart der generierten Musik.

muteBass

bool

Optional. Die Audioausgabe sollte keinen Bass enthalten.

muteDrums

bool

Optional. Die Audioausgabe sollte keine Drums enthalten.

onlyBassAndDrums

bool

Optional. Die Audioausgabe sollte nur Bass und Schlagzeug enthalten.

musicGenerationMode

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[]

AudioChunk

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

BidiGenerateMusicSetupComplete

Nur Ausgabe. Wird als Antwort auf eine BidiGenerateMusicSetup-Nachricht vom Client gesendet, wenn die Einrichtung abgeschlossen ist.

serverContent

BidiGenerateMusicServerContent

Nur Ausgabe. Inhalte, die vom Modell als Reaktion auf Clientnachrichten generiert werden.

filteredPrompt

BidiGenerateMusicFilteredPrompt

Nur Ausgabe. Gefilterter Prompt mit Grund.

warning

string

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

string

Erforderlich. Der Ressourcenname des Modells. Dies dient als ID für das zu verwendende Modell.

Format: models/{model}

BidiGenerateMusicSetupComplete

Dieser Typ hat keine Felder.

Wird als Antwort auf eine BidiGenerateMusicSetup-Nachricht vom Client gesendet.

WeightedPrompt

Gewichteter Prompt als Modelleingabe.

Felder
weight

float

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 prompt.

Für prompt ist nur einer der folgenden Werte zulässig:

text

string

Text-Prompt.

Weitere Informationen zu Typen

Weitere Informationen zu den von der API verwendeten Typen finden Sie im Python SDK.