Live Music API - WebSockets API reference

Gjenerimi i muzikës Lyria RealTime përdor një lidhje të vazhdueshme, me dy drejtime dhe me vonesë të ulët duke përdorur WebSockets . Në këtë seksion, do të gjeni detaje shtesë në lidhje me API-në e WebSockets.

Sesionet

Një lidhje WebSocket krijon një seancë për të mbajtur një komunikim në kohë reale me modelin. Pasi një klient fillon një lidhje të re, sesioni mund të shkëmbejë mesazhe me serverin për:

  • Dërgoni kërkesat dhe kontrollet për të drejtuar gjenerimin e muzikës.
  • Dërgo kontrollet e riprodhimit të muzikës.
  • Merr pjesë audio.

Lidhja WebSocket

Për të nisur një sesion, lidheni me këtë pikë fundore të uebsocket:

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

Konfigurimi i sesionit

Mesazhi fillestar pas lidhjes vendos modelin për t'u përdorur gjatë seancës.

Shihni shembullin e mëposhtëm të konfigurimit. Vini re se kutia e emrit në SDK mund të ndryshojë. Mund të kërkoni opsionet e konfigurimit të Python SDK këtu .


{
  "model": string
}

Dërgo mesazhe

Për të shkëmbyer mesazhe përmes lidhjes WebSocket, klienti duhet të dërgojë një objekt JSON mbi një lidhje të hapur WebSocket. Objekti JSON duhet të ketë saktësisht një nga fushat nga grupi i mëposhtëm i objekteve:


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

Mesazhet e klientit të mbështetur

Shihni mesazhet e klientit të mbështetur në tabelën e mëposhtme:

Mesazh Përshkrimi
BidiGenerateMusicSetup Konfigurimi i sesionit të dërgohet vetëm në mesazhin e parë
BidiGenerateMusicClientContent Kërkesat e ponderuara si hyrje të modelit
BidiGenerateMusicGenerationConfig Konfigurimi për gjenerimin e muzikës
BidiGenerateMusicPlaybackControl Sinjalet e kontrollit të luajtjes për gjenerimin e modelit

Merr mesazhe

Për të marrë mesazhe nga serveri, dëgjoni për ngjarjen 'mesazh' në WebSocket dhe më pas analizoni rezultatin sipas përcaktimit të mesazheve të serverit të mbështetur.

Shihni sa vijon:

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

Mesazhet e serverit përfshijnë pikërisht një nga fushat e tjera nga mesazhi BidiGenerateMusicServerMessage . (Bashkimi messageType nuk shprehet në JSON, kështu që fusha do të shfaqet në nivelin e lartë të mesazhit.)

Mesazhet dhe ngjarjet

AudioChunk

Përfaqësimi i një pjese audio.

Fushat

content e fushës së bashkimit.

content mund të jetë vetëm një nga sa vijon:

data

bytes

Bajt të papërpunuara të pjesës audio.

mimeType

string

Lloji MIME i përmbajtjes së pjesës audio, si p.sh. "audio/wav".

sourceMetadata

SourceMetadata

Vetëm dalje. Kërkesat dhe konfigurimi i përdorur për gjenerimin e kësaj pjese audio.

BurimiMetadata

Të dhënat meta në lidhje me burimin hyrës të përdorur për gjenerimin e kësaj pjese audio.

Fushat
clientContent

BidiGenerateMusicClientContent

Kërkesat e peshuara për gjenerimin e kësaj pjese audio.

musicGenerationConfig

BidiGenerateMusicGenerationConfig

Konfigurimi i gjenerimit të muzikës për gjenerimin e kësaj pjese audio.

BidiGenerateMusicClientContent

Hyrja e përdoruesit për të nisur ose drejtuar muzikën.

Fushat
weightedPrompts[]

WeightedPrompt

E detyrueshme. Kërkesat e ponderuara si hyrje të modelit.

BidiGenerateMusicClientMessage

Mesazhet e dërguara nga klienti në thirrjen BidiGenerateMusic.

Fushat

messageType i fushës së bashkimit Lloji .

messageType mund të jetë vetëm një nga sa vijon:

setup

BidiGenerateMusicSetup

Fakultative. Konfigurimi i sesionit është dërguar vetëm në mesazhin e parë të klientit.

clientContent

BidiGenerateMusicClientContent

Fakultative. Kërkesat e ponderuara dhe konfigurimet e gjenerimit të muzikës si input i gjenerimit të muzikës.

musicGenerationConfig

BidiGenerateMusicGenerationConfig

Fakultative. Konfigurimi për gjenerimin e muzikës.

playbackControl

BidiGenerateMusicPlaybackControl

Fakultative. Sinjali i kontrollit të riprodhimit për gjeneratën e muzikës.

BidiGenerateMusicFilteredPrompt

Prompti i filtruar me arsye.

Fushat
filteredReason

string

Vetëm dalje. Arsyeja pse kërkesa u filtua.

Fusha e prompt e Bashkimit . Kërkesa e filtruar. prompt mund të jetë vetëm një nga sa vijon:
text

string

Fakultative. Tekst i shpejtë.

BidiGenerateMusicGenerationConfig

Konfigurimi për gjenerimin e muzikës.

Fushat
temperature

float

Fakultative. Kontrollon variancën në gjenerimin e audios.

Vlerat më të larta prodhojnë variancë më të lartë. Gama është [0.0, 3.0]. Parazgjedhja është 1.1.

topK

int32

Fakultative. Kontrollon se si modeli zgjedh argumentet për dalje.

Merr mostra nga tokenat topK me probabilitetet më të larta. Gama është [1, 1000]. Parazgjedhja është 40.

seed

int32

Fakultative. Prodhimi i farërave audio. Nëse nuk është caktuar, kërkesa përdor një farë të krijuar rastësisht.

guidance

float

Fakultative. Kontrollon se sa nga afër i ndjek modeli udhëzimet. Udhëzimet më të larta ndjekin më nga afër, por do t'i bëjnë tranzicionet më të papritura. Gama është [0.0, 6.0]. Parazgjedhja është 4.0.

bpm

int32

Fakultative. Rrahje në minutë. Gama është [60, 200].

density

float

Fakultative. Dendësia e tingujve. Gama është [0.0, 1.0].

brightness

float

Fakultative. Vlera më e lartë prodhon audio më të ndritshme. Gama është [0.0, 1.0].

scale

Scale

Fakultative. Shkalla e muzikës së krijuar.

muteBass

bool

Fakultative. Dalja audio nuk duhet të përmbajë bas.

muteDrums

bool

Fakultative. Dalja audio nuk duhet të përmbajë bateri.

onlyBassAndDrums

bool

Fakultative. Dalja audio duhet të përmbajë vetëm bas dhe bateri.

musicGenerationMode

MusicGenerationMode

Fakultative. Mënyra e gjenerimit të muzikës. Parazgjedhja është QUALITY.

Music Generation Mode

Enums
MUSIC_GENERATION_MODE_UNSPECIFIED Kjo vlerë është e papërdorur.
QUALITY Ky modalitet i drejton kërkesat e tekstit drejt zonave të hapësirës latente me muzikë me cilësi më të lartë.
DIVERSITY Ky modalitet drejton kërkesat e tekstit drejt zonave të hapësirës latente me një diversitet më të madh muzikor.
VOCALIZATION Ky modalitet i drejton kërkesat e tekstit në rajone të hapësirës latente që ka më shumë gjasa të gjenerojë muzikë vokale.

Shkalla

Shkalla e muzikës së krijuar.

Enums
SCALE_UNSPECIFIED Vlera e paracaktuar. Kjo vlerë është e papërdorur.
C_MAJOR_A_MINOR C maxhor ose A minor
D_FLAT_MAJOR_B_FLAT_MINOR D flat major ose B flat minor
D_MAJOR_B_MINOR D maxhor ose B minor
E_FLAT_MAJOR_C_MINOR E flat major ose C minor
E_MAJOR_D_FLAT_MINOR E major ose D flat minor
F_MAJOR_D_MINOR F maxhor ose D minor
G_FLAT_MAJOR_E_FLAT_MINOR G flat major ose E flat minor
G_MAJOR_E_MINOR G maxhor ose E minor
A_FLAT_MAJOR_F_MINOR Një maxhore e sheshtë ose F minor
A_MAJOR_G_FLAT_MINOR Major ose G flat minor
B_FLAT_MAJOR_G_MINOR B flat major ose G minor
B_MAJOR_A_FLAT_MINOR B maxhor ose A flat minor

BidiGenerateMusicPlaybackControl

Kontrolli i riprodhimit për gjeneratën e muzikës.

Enums
PLAYBACK_CONTROL_UNSPECIFIED Kjo vlerë është e papërdorur.
PLAY Filloni të gjeneroni muzikë.
PAUSE Mbaj brezin e muzikës. Përdorni PLAY për të rifilluar nga pozicioni aktual.
STOP Ndaloni gjenerimin e muzikës dhe rivendosni kontekstin (kërkimet mbahen). Përdorni PLAY për të rifilluar gjenerimin e muzikës.
RESET_CONTEXT Rivendosni kontekstin (kërkimet mbahen) pa ndalur gjenerimin e muzikës.

BidiGenerateMusicServerContent

Përditësimi në rritje i serverit i krijuar nga modeli në përgjigje të mesazheve të klientit.

Përmbajtja gjenerohet sa më shpejt që të jetë e mundur, dhe jo në kohë reale. Klientët mund të zgjedhin ta ruajnë dhe ta luajnë atë në kohë reale.

Fushat
audioChunks[]

AudioChunk

Vetëm dalje. Pjesë audio që modeli ka krijuar.

BidiGenerateMusicServerMessage

Mesazh përgjigje për thirrjen BidiGenerateMusic.

Fushat
messageType i fushës së bashkimit Lloji . Lloji i mesazhit. messageType mund të jetë vetëm një nga sa vijon:
setupComplete

BidiGenerateMusicSetupComplete

Vetëm dalje. Dërguar në përgjigje të një mesazhi BidiGenerateMusicSetup nga klienti kur të përfundojë konfigurimi.

serverContent

BidiGenerateMusicServerContent

Vetëm dalje. Përmbajtja e krijuar nga modeli në përgjigje të mesazheve të klientit.

filteredPrompt

BidiGenerateMusicFilteredPrompt

Vetëm dalje. Prompti i filtruar me arsye.

warning

string

Vetëm dalje. Mesazhi paralajmërues nga serveri. Paralajmërimet nuk do ta mbyllin transmetimin.

BidiGenerateMusicSetup

Mesazhi që do të dërgohet në të parën (dhe vetëm në të parën) BidiGenerateMusicClientMessage .

Klientët duhet të presin për një mesazh BidiGenerateMusicSetupComplete përpara se të dërgojnë ndonjë mesazh shtesë.

Fushat
model

string

E detyrueshme. Emri i burimit të modelit. Kjo shërben si një ID për modelin për t'u përdorur.

Formati: models/{model}

BidiGenerateMusicSetupComplete

Ky lloj nuk ka fusha.

Dërguar si përgjigje ndaj një mesazhi BidiGenerateMusicSetup nga klienti.

WeightedPrompt

Prompt i ponderuar si hyrje e modelit.

Fushat
weight

float

E detyrueshme. Pesha e kërkesës.

Pesha përdoret për të kontrolluar rëndësinë relative të kërkesës. Pesha më e madhe është më e rëndësishme se pesha më e ulët.

Peshat e të gjitha kërkesave të peshuara në këtë BidiGenerateMusicClientContent nuk duhet të jenë të gjitha 0. Peshat e të gjitha kërkesave të peshuara në këtë mesazh BidiGenerateMusicClientContent do të normalizohen.

Fusha e prompt e Bashkimit .

prompt mund të jetë vetëm një nga sa vijon:

text

string

Tekst i shpejtë.

Më shumë informacion mbi llojet

Për më shumë informacion mbi llojet e përdorura nga API, shihni Python SDK .