A geração de música em tempo real da Lyria usa uma conexão de streaming persistente, bidirecional e de baixa latência usando WebSockets. Nesta seção, você encontra mais detalhes sobre a API WebSockets.
Sessões
Uma conexão WebSocket estabelece uma sessão para manter uma comunicação em tempo real com o modelo. Depois que um cliente inicia uma nova conexão, a sessão pode trocar mensagens com o servidor para:
- Enviar comandos e controles para direcionar a criação de músicas.
- Enviar controles de reprodução de música.
- Receber partes de áudio.
Conexão WebSocket
Para iniciar uma sessão, conecte-se a este endpoint websocket:
wss://generativelanguage.googleapis.com/ws/google.ai.generativelanguage.v1alpha.GenerativeService.BidiGenerateMusic
Configuração da sessão
A mensagem inicial após a conexão define o modelo a ser usado durante a sessão.
Confira o exemplo de configuração a seguir. A capitalização do nome nos SDKs pode variar. Confira as opções de configuração do SDK do Python.
{
"model": string
}
Enviar mensagens
Para trocar mensagens pela conexão WebSocket, o cliente precisa enviar um objeto JSON por uma conexão WebSocket aberta. O objeto JSON precisa ter exatamente um dos campos do seguinte conjunto de objetos:
{
"setup": BidiGenerateMusicSetup,
"client_content": BidiGenerateMusicClientContent,
"music_generation_config": BidiGenerateMusicGenerationConfig,
"playback_control": BidiGenerateMusicPlaybackControl
}
Mensagens de clientes compatíveis
Confira as mensagens do cliente compatíveis na tabela a seguir:
Mensagem | Descrição |
---|---|
BidiGenerateMusicSetup
|
Configuração da sessão a ser enviada apenas na primeira mensagem |
BidiGenerateMusicClientContent |
Comandos ponderados como entrada do modelo |
BidiGenerateMusicGenerationConfig |
Configuração para geração de música |
BidiGenerateMusicPlaybackControl
|
Indicadores de controle de mídia para geração de modelos |
Receber mensagens
Para receber mensagens do servidor, ouça o evento "message" do WebSocket e analise o resultado de acordo com a definição das mensagens compatíveis do servidor.
Confira estes guias:
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()
As mensagens do servidor incluem exatamente um dos outros campos da mensagem
BidiGenerateMusicServerMessage
.
A união messageType
não é expressa em JSON, então o campo vai aparecer no nível superior da mensagem.
Mensagens e eventos
AudioChunk
Representação de um trecho de áudio.
Campos | |
---|---|
Campo de união
|
|
data |
Bytes brutos do trecho de áudio. |
mimeType |
O tipo MIME do conteúdo do trecho de áudio, como "audio/wav". |
sourceMetadata |
Apenas saída. Comandos e configuração usados para gerar este trecho de áudio. |
SourceMetadata
Metadados sobre a origem de entrada usada para gerar esse trecho de áudio.
Campos | |
---|---|
clientContent |
Comandos ponderados para gerar esse trecho de áudio. |
musicGenerationConfig |
Configuração de geração de música para gerar este trecho de áudio. |
BidiGenerateMusicClientContent
Interação do usuário para iniciar ou direcionar a música.
Campos | |
---|---|
weightedPrompts[] |
Obrigatório. Comandos ponderados como entrada do modelo. |
BidiGenerateMusicClientMessage
Mensagens enviadas pelo cliente na chamada BidiGenerateMusic.
Campos | |
---|---|
Campo de união
|
|
setup |
Opcional. A configuração da sessão é enviada apenas na primeira mensagem do cliente. |
clientContent |
Opcional. Comandos ponderados e configurações de geração de música como entrada da geração de música. |
musicGenerationConfig |
Opcional. Configuração para geração de música. |
playbackControl |
Opcional. Sinal de controle de reprodução para a geração de música. |
BidiGenerateMusicFilteredPrompt
Solicitação filtrada com motivo.
Campos | |
---|---|
filteredReason |
Apenas saída. O motivo pelo qual o comando foi filtrado. |
Campo de união prompt . O comando que foi filtrado. prompt pode ser apenas uma das seguintes opções:
|
|
text |
Opcional. Comando de texto. |
BidiGenerateMusicGenerationConfig
Configuração para geração de música.
Campos | |
---|---|
temperature |
Opcional. Controla a variância na geração de áudio. Valores mais altos produzem variância maior. O intervalo é [0,0, 3,0]. O padrão é 1.1. |
topK |
Opcional. Controla como o modelo seleciona tokens para saída. Faz a amostragem dos tokens topK com as maiores probabilidades. O intervalo é [1, 1000]. O padrão é 40. |
seed |
Opcional. Inicia a geração de áudio. Se não for definido, a solicitação usará uma seed gerada aleatoriamente. |
guidance |
Opcional. Controla o quanto o modelo segue os comandos. Uma orientação maior segue mais de perto, mas torna as transições mais abruptas. O intervalo é [0,0, 6,0]. O padrão é 4,0. |
bpm |
Opcional. Batimentos por minuto. O intervalo é [60, 200]. |
density |
Opcional. Densidade dos sons. O intervalo é [0.0, 1.0]. |
brightness |
Opcional. Valores mais altos produzem um áudio mais brilhante. O intervalo é [0.0, 1.0]. |
scale |
Opcional. Escala da música gerada. |
muteBass |
Opcional. A saída de áudio não pode ter graves. |
muteDrums |
Opcional. A saída de áudio não pode conter bateria. |
onlyBassAndDrums |
Opcional. A saída de áudio precisa conter apenas baixo e bateria. |
musicGenerationMode |
Opcional. O modo de geração de música. O padrão é "QUALITY". |
MusicGenerationMode
Enums | |
---|---|
MUSIC_GENERATION_MODE_UNSPECIFIED |
Esse valor não é usado. |
QUALITY |
Esse modo direciona comandos de texto para regiões do espaço latente com música de maior qualidade. |
DIVERSITY |
Esse modo direciona comandos de texto para regiões do espaço latente com uma diversidade maior de músicas. |
VOCALIZATION |
Esse modo direciona comandos de texto para regiões do espaço latente com mais probabilidade de gerar música vocal. |
Escala
Escala da música gerada.
Enums | |
---|---|
SCALE_UNSPECIFIED |
Valor padrão. Esse valor não é usado. |
C_MAJOR_A_MINOR |
Dó maior ou lá menor |
D_FLAT_MAJOR_B_FLAT_MINOR |
Ré bemol maior ou si bemol menor |
D_MAJOR_B_MINOR |
Ré maior ou Si menor |
E_FLAT_MAJOR_C_MINOR |
Mi bemol maior ou dó menor |
E_MAJOR_D_FLAT_MINOR |
Mi maior ou ré bemol menor |
F_MAJOR_D_MINOR |
Fá maior ou ré menor |
G_FLAT_MAJOR_E_FLAT_MINOR |
Sol bemol maior ou mi bemol menor |
G_MAJOR_E_MINOR |
Sol maior ou mi menor |
A_FLAT_MAJOR_F_MINOR |
Um ré bemol maior ou fá menor |
A_MAJOR_G_FLAT_MINOR |
Um acorde de lá maior ou sol bemol menor |
B_FLAT_MAJOR_G_MINOR |
Si bemol maior ou sol menor |
B_MAJOR_A_FLAT_MINOR |
B maior ou A bemol menor |
BidiGenerateMusicPlaybackControl
Controle de reprodução para a geração de música.
Enums | |
---|---|
PLAYBACK_CONTROL_UNSPECIFIED |
Esse valor não é usado. |
PLAY |
Comece a gerar a música. |
PAUSE |
Suspenda a geração de música. Use PLAY para retomar da posição atual. |
STOP |
Interrompe a geração de música e redefine o contexto (comandos mantidos). Use PLAY para reiniciar a geração de música. |
RESET_CONTEXT |
Redefina o contexto (comandos mantidos) sem interromper a geração de música. |
BidiGenerateMusicServerContent
Atualização incremental do servidor gerada pelo modelo em resposta às mensagens do cliente.
O conteúdo é gerado o mais rápido possível, e não em tempo real. Os clientes podem optar por fazer buffer e reproduzir em tempo real.
Campos | |
---|---|
audioChunks[] |
Apenas saída. Trechos de áudio gerados pelo modelo. |
BidiGenerateMusicServerMessage
Mensagem de resposta para a chamada BidiGenerateMusic.
Campos | |
---|---|
Campo de união messageType . Tipo da mensagem.
messageType pode ser apenas de um dos tipos a seguir:
|
|
setupComplete |
Apenas saída. Enviada em resposta a uma mensagem |
serverContent |
Apenas saída. Conteúdo gerado pelo modelo em resposta às mensagens do cliente. |
filteredPrompt |
Apenas saída. Solicitação filtrada com motivo. |
warning |
Apenas saída. A mensagem de aviso do servidor. Os avisos não encerram a transmissão. |
BidiGenerateMusicSetup
Mensagem a ser enviada no primeiro (e apenas no primeiro)
BidiGenerateMusicClientMessage
.
Os clientes precisam aguardar uma mensagem BidiGenerateMusicSetupComplete
antes de enviar
outras mensagens.
Campos | |
---|---|
model |
Obrigatório. O nome do recurso do modelo. Ele serve como um ID para o modelo usar. Formato: |
BidiGenerateMusicSetupComplete
Esse tipo não tem campos.
Enviado em resposta a uma mensagem BidiGenerateMusicSetup
do cliente.
WeightedPrompt
Prompt ponderado como entrada do modelo.
Campos | |
---|---|
weight |
Obrigatório. Peso do comando. O peso é usado para controlar a importância relativa do comando. Pesos maiores são mais importantes do que pesos menores. Os pesos de todos os weighted_prompts neste BidiGenerateMusicClientContent não podem ser todos 0. Os pesos de todos os weighted_prompts nesta mensagem BidiGenerateMusicClientContent serão normalizados. |
Campo de união
|
|
text |
Comando de texto. |
Mais informações sobre tipos
Para mais informações sobre os tipos usados pela API, consulte o SDK para Python.