Live Music API - WebSockets API reference

La generación de música en tiempo real de Lyria usa una conexión de transmisión persistente, bidireccional y de baja latencia con WebSockets. En esta sección, encontrarás detalles adicionales sobre la API de WebSockets.

Sesiones

Una conexión WebSocket establece una sesión para mantener una comunicación en tiempo real con el modelo. Después de que un cliente inicia una conexión nueva, la sesión puede intercambiar mensajes con el servidor para hacer lo siguiente:

  • Enviar instrucciones y controles para dirigir la generación de música
  • Enviar controles de reproducción de música
  • Recibe fragmentos de audio.

Conexión de WebSocket

Para iniciar una sesión, conéctate a este extremo de WebSocket:

wss://generativelanguage.googleapis.com/ws/google.ai.generativelanguage.v1alpha.GenerativeService.BidiGenerateMusic

Configuración de la sesión

El mensaje inicial después de la conexión establece el modelo que se usará durante la sesión.

Consulta el siguiente ejemplo de configuración. Ten en cuenta que el uso de mayúsculas y minúsculas en los nombres puede variar en los SDKs. Puedes consultar las opciones de configuración del SDK de Python aquí.


{
  "model": string
}

Enviar mensajes

Para intercambiar mensajes a través de la conexión WebSocket, el cliente debe enviar un objeto JSON a través de una conexión WebSocket abierta. El objeto JSON debe tener exactamente un campo del siguiente conjunto de objetos:


{
  "setup": BidiGenerateMusicSetup,
  "client_content": BidiGenerateMusicClientContent,
  "music_generation_config": BidiGenerateMusicGenerationConfig,
  "playback_control": BidiGenerateMusicPlaybackControl
}

Mensajes de cliente admitidos

Consulta los mensajes del cliente admitidos en la siguiente tabla:

Mensaje Descripción
BidiGenerateMusicSetup Es la configuración de la sesión que se enviará solo en el primer mensaje.
BidiGenerateMusicClientContent Instrucciones ponderadas como entrada del modelo
BidiGenerateMusicGenerationConfig Configuración para la generación de música
BidiGenerateMusicPlaybackControl Indicadores de control de reproducción para la generación de modelos

Recibir mensajes

Para recibir mensajes del servidor, escucha el evento "message" de WebSocket y, luego, analiza el resultado según la definición de los mensajes del servidor admitidos.

Consulta lo siguiente:

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()

Los mensajes del servidor incluyen exactamente uno de los otros campos del mensaje BidiGenerateMusicServerMessage. (La unión messageType no se expresa en JSON, por lo que el campo aparecerá en el nivel superior del mensaje).

Mensajes y eventos

AudioChunk

Es la representación de un fragmento de audio.

Campos

Campo de unión content.

content puede ser una de las siguientes opciones:

data

bytes

Son los bytes sin procesar del fragmento de audio.

mimeType

string

Es el tipo de MIME del contenido del fragmento de audio, como "audio/wav".

sourceMetadata

SourceMetadata

Solo salida. Son las instrucciones y la configuración que se usaron para generar este fragmento de audio.

SourceMetadata

Son los metadatos sobre la fuente de entrada que se usó para generar este fragmento de audio.

Campos
clientContent

BidiGenerateMusicClientContent

Son las instrucciones ponderadas para generar este fragmento de audio.

musicGenerationConfig

BidiGenerateMusicGenerationConfig

Es la configuración de generación de música para generar este fragmento de audio.

BidiGenerateMusicClientContent

Entrada del usuario para iniciar o dirigir la música

Campos
weightedPrompts[]

WeightedPrompt

Es obligatorio. Instrucciones ponderadas como entrada del modelo

BidiGenerateMusicClientMessage

Son los mensajes que envía el cliente en la llamada a BidiGenerateMusic.

Campos

Campo de unión messageType.

messageType puede ser una de las siguientes opciones:

setup

BidiGenerateMusicSetup

Opcional. La configuración de la sesión se envía solo en el primer mensaje del cliente.

clientContent

BidiGenerateMusicClientContent

Opcional. Configuraciones de generación de música y mensajes ponderados como entrada de la generación de música.

musicGenerationConfig

BidiGenerateMusicGenerationConfig

Opcional. Es la configuración para la generación de música.

playbackControl

BidiGenerateMusicPlaybackControl

Opcional. Es el indicador de control de reproducción para la generación de música.

BidiGenerateMusicFilteredPrompt

Es la instrucción filtrada con un motivo.

Campos
filteredReason

string

Solo salida. Es el motivo por el que se filtró la instrucción.

Campo de unión prompt. Es la instrucción que se filtró. prompt solo puede ser uno de los siguientes:
text

string

Opcional. Instrucción de texto.

BidiGenerateMusicGenerationConfig

Es la configuración para la generación de música.

Campos
temperature

float

Opcional. Controla la varianza en la generación de audio.

Los valores más altos producen una mayor varianza. El rango es de [0.0, 3.0]. El valor predeterminado es 1.1.

topK

int32

Opcional. Controla cómo el modelo selecciona los tokens para el resultado.

Muestra los tokens topK con las probabilidades más altas. El rango es [1, 1000]. El valor predeterminado es 40.

seed

int32

Opcional. Genera audio a partir de pistas. Si no se establece, la solicitud usa una semilla generada de forma aleatoria.

guidance

float

Opcional. Controla qué tan cerca sigue las instrucciones el modelo. Una guía más alta sigue más de cerca, pero hará que las transiciones sean más abruptas. El rango es de [0.0, 6.0]. El valor predeterminado es 4.0.

bpm

int32

Opcional. Pulsaciones por minuto. El rango es [60, 200].

density

float

Opcional. Densidad de los sonidos. El rango es de [0.0, 1.0].

brightness

float

Opcional. Un valor más alto produce un audio más brillante. El rango es de [0.0, 1.0].

scale

Scale

Opcional. Escala de la música generada.

muteBass

bool

Opcional. La salida de audio no debe contener graves.

muteDrums

bool

Opcional. La salida de audio no debe contener batería.

onlyBassAndDrums

bool

Opcional. El audio de salida solo debe contener el bajo y la batería.

musicGenerationMode

MusicGenerationMode

Opcional. Es el modo de generación de música. El valor predeterminado es QUALITY.

MusicGenerationMode

Enumeraciones
MUSIC_GENERATION_MODE_UNSPECIFIED Este valor no se usa.
QUALITY Este modo dirige las instrucciones de texto a regiones del espacio latente con música de mayor calidad.
DIVERSITY Este modo dirige las instrucciones de texto a regiones del espacio latente con una mayor diversidad de música.
VOCALIZATION Este modo dirige las instrucciones de texto a regiones del espacio latente que tienen más probabilidades de generar música vocal.

Escala

Escala de la música generada.

Enumeraciones
SCALE_UNSPECIFIED Valor predeterminado Este valor no se usa.
C_MAJOR_A_MINOR Do mayor o La menor
D_FLAT_MAJOR_B_FLAT_MINOR Re bemol mayor o si bemol menor
D_MAJOR_B_MINOR Re mayor o si menor
E_FLAT_MAJOR_C_MINOR Mi bemol mayor o do menor
E_MAJOR_D_FLAT_MINOR Mi mayor o Re bemol menor
F_MAJOR_D_MINOR Fa mayor o re menor
G_FLAT_MAJOR_E_FLAT_MINOR Sol bemol mayor o Mi bemol menor
G_MAJOR_E_MINOR Sol mayor o mi menor
A_FLAT_MAJOR_F_MINOR Fa mayor o fa menor
A_MAJOR_G_FLAT_MINOR La bemol mayor o Sol bemol menor
B_FLAT_MAJOR_G_MINOR Si bemol mayor o sol menor
B_MAJOR_A_FLAT_MINOR Si bemol mayor o La bemol menor

BidiGenerateMusicPlaybackControl

Control de reproducción para la generación de música.

Enumeraciones
PLAYBACK_CONTROL_UNSPECIFIED Este valor no se usa.
PLAY Comienza a generar la música.
PAUSE Detener la generación de música Usa PLAY para reanudar la reproducción desde la posición actual.
STOP Detiene la generación de música y restablece el contexto (se conservan las instrucciones). Usa PLAY para reiniciar la generación de música.
RESET_CONTEXT Restablece el contexto (se conservan las instrucciones) sin detener la generación de música.

BidiGenerateMusicServerContent

Es la actualización incremental del servidor que genera el modelo en respuesta a los mensajes del cliente.

El contenido se genera lo más rápido posible, pero no en tiempo real. Los clientes pueden optar por almacenarlo en búfer y reproducirlo en tiempo real.

Campos
audioChunks[]

AudioChunk

Solo salida. Son fragmentos de audio que generó el modelo.

BidiGenerateMusicServerMessage

Es el mensaje de respuesta para la llamada a BidiGenerateMusic.

Campos
Campo de unión messageType. Es el tipo de mensaje. Las direcciones (messageType) solo pueden ser una de las siguientes opciones:
setupComplete

BidiGenerateMusicSetupComplete

Solo salida. Se envía en respuesta a un mensaje BidiGenerateMusicSetup del cliente cuando se completa la configuración.

serverContent

BidiGenerateMusicServerContent

Solo salida. Es el contenido que genera el modelo en respuesta a los mensajes del cliente.

filteredPrompt

BidiGenerateMusicFilteredPrompt

Solo salida. Es la instrucción filtrada con un motivo.

warning

string

Solo salida. Es el mensaje de advertencia del servidor. Las advertencias no interrumpirán la transmisión.

BidiGenerateMusicSetup

Mensaje que se enviará en el primer BidiGenerateMusicClientMessage (y solo en el primero).

Los clientes deben esperar un mensaje de BidiGenerateMusicSetupComplete antes de enviar mensajes adicionales.

Campos
model

string

Es obligatorio. Es el nombre del recurso del modelo. Esto sirve como ID para que lo use el modelo.

Formato: models/{model}

BidiGenerateMusicSetupComplete

Este tipo no tiene campos.

Se envía en respuesta a un mensaje BidiGenerateMusicSetup del cliente.

WeightedPrompt

Instrucción ponderada como entrada del modelo.

Campos
weight

float

Es obligatorio. Es el peso de la instrucción.

El peso se usa para controlar la importancia relativa de la instrucción. Los pesos más altos son más importantes que los más bajos.

Los pesos de todos los weighted_prompts en este BidiGenerateMusicClientContent no deben ser todos 0. Se normalizarán los pesos de todos los weighted_prompts en este mensaje de BidiGenerateMusicClientContent.

Campo de unión prompt.

prompt puede ser una de las siguientes opciones:

text

string

Instrucción de texto.

Más información sobre los tipos

Si deseas obtener más información sobre los tipos que usa la API, consulta el SDK de Python.