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
|
|
data |
Son los bytes sin procesar del fragmento de audio. |
mimeType |
Es el tipo de MIME del contenido del fragmento de audio, como "audio/wav". |
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 |
Son las instrucciones ponderadas para generar este fragmento de audio. |
musicGenerationConfig |
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[] |
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
|
|
setup |
Opcional. La configuración de la sesión se envía solo en el primer mensaje del cliente. |
clientContent |
Opcional. Configuraciones de generación de música y mensajes ponderados como entrada de la generación de música. |
musicGenerationConfig |
Opcional. Es la configuración para la generación de música. |
playbackControl |
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 |
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 |
Opcional. Instrucción de texto. |
BidiGenerateMusicGenerationConfig
Es la configuración para la generación de música.
Campos | |
---|---|
temperature |
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 |
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 |
Opcional. Genera audio a partir de pistas. Si no se establece, la solicitud usa una semilla generada de forma aleatoria. |
guidance |
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 |
Opcional. Pulsaciones por minuto. El rango es [60, 200]. |
density |
Opcional. Densidad de los sonidos. El rango es de [0.0, 1.0]. |
brightness |
Opcional. Un valor más alto produce un audio más brillante. El rango es de [0.0, 1.0]. |
scale |
Opcional. Escala de la música generada. |
muteBass |
Opcional. La salida de audio no debe contener graves. |
muteDrums |
Opcional. La salida de audio no debe contener batería. |
onlyBassAndDrums |
Opcional. El audio de salida solo debe contener el bajo y la batería. |
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[] |
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 |
Solo salida. Se envía en respuesta a un mensaje |
serverContent |
Solo salida. Es el contenido que genera el modelo en respuesta a los mensajes del cliente. |
filteredPrompt |
Solo salida. Es la instrucción filtrada con un motivo. |
warning |
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 |
Es obligatorio. Es el nombre del recurso del modelo. Esto sirve como ID para que lo use el modelo. Formato: |
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 |
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
|
|
text |
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.