Gjenerimi i muzikës në kohë reale me Lyria përdor një lidhje të vazhdueshme, dydrejtimëshe, me vonesë të ulët transmetimi duke përdorur WebSockets. Në këtë seksion do të gjesh detaje shtesë në lidhje me WebSockets API.
Seancat
Një lidhje WebSocket krijon një seancë për të mbajtur një komunikim në kohë reale me modelin. Pasi një klient nis një lidhje të re, seanca mund të shkëmbejë mesazhe me serverin për:
- Dërgo kërkesa dhe kontrolle për të drejtuar gjenerimin e muzikës.
- Dërgo kontrollet e luajtjes së muzikës.
- Merr pjesë audio.
Lidhja e WebSocket
Për të nisur një seancë, lidhu me këtë pikë fundore të websocket:
wss://generativelanguage.googleapis.com/ws/google.ai.generativelanguage.v1beta.GenerativeService.BidiGenerateMusic
Konfigurimi i seancës
Mesazhi fillestar pas lidhjes cakton modelin që do të përdoret gjatë seancës.
Shiko shembullin e mëposhtëm të konfigurimit. Ki parasysh se shkrimi i emrave me gërma të mëdha në SDK mund të ndryshojë. Mund të kërkosh opsionet e konfigurimit të Python SDK këtu.
{
"model": string
}
Dërgo mesazhe
Për të shkëmbyer mesazhe nëpërmjet lidhjes WebSocket, klienti duhet të dërgojë një objekt JSON nëpërmjet një lidhjeje të hapur WebSocket. Objekti JSON duhet të ketë pikërisht 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 mbështetura të klientit
Shiko mesazhet e mbështetura të klientit në tabelën e mëposhtme:
| Dërgo mesazh | Përshkrimi |
|---|---|
BidiGenerateMusicSetup
|
Konfigurimi i seancës do të dërgohet vetëm në mesazhin e parë |
BidiGenerateMusicClientContent |
Kërkesat e ponderuara si hyrje e 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ëgjo për ngjarjen "message" të WebSocket dhe më pas analizo rezultatin sipas përkufizimit të mesazheve të mbështetura të serverit.
Shiko sa më poshtë:
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 sipërm të mesazhit.)
Mesazhet dhe ngjarjet
AudioChunk
Paraqitja e një pjese audioje.
| Fushat | |
|---|---|
Fusha e Unionit
|
|
data |
Bajte të papërpunuara të pjesës së audios. |
mimeType |
Lloji i MIME-s i përmbajtjes së pjesës së audios, si p.sh. "audio/wav". |
sourceMetadata |
Vetëm dalje. Kërkesat dhe konfigurimi i përdorur për gjenerimin e këtij fragmenti audioje. |
SourceMetadata
Metadatat rreth burimit të hyrjes të përdorur për gjenerimin e këtij fragmenti audioje.
| Fushat | |
|---|---|
clientContent |
Kërkesat e ponderuara për gjenerimin e këtij fragmenti audioje. |
musicGenerationConfig |
Konfigurimi i gjenerimit të muzikës për gjenerimin e kësaj pjese audioje. |
BidiGenerateMusicClientContent
Hyrja e përdoruesit për të filluar ose drejtuar muzikën.
| Fushat | |
|---|---|
weightedPrompts[] |
Kërkohet. Kërkesat e ponderuara si hyrje e modelit. |
BidiGenerateMusicClientMessage
Mesazhet e dërguara nga klienti në telefonatën e BidiGenerateMusic.
| Fushat | |
|---|---|
Fusha e Unionit
|
|
setup |
Opsionale. Konfigurimi i seancës u dërgua në mesazhin e parë dhe vetëm në mesazhin e parë të klientit. |
clientContent |
Opsionale. Kërkesat e ponderuara dhe konfigurimet e gjenerimit të muzikës si hyrje e gjenerimit të muzikës. |
musicGenerationConfig |
Opsionale. Konfigurimi për gjenerimin e muzikës. |
playbackControl |
Opsionale. Sinjali i kontrollit të luajtjes për gjenerimin e muzikës. |
BidiGenerateMusicFilteredPrompt
Kërkesa e filtruar me arsyen.
| Fushat | |
|---|---|
filteredReason |
Vetëm dalje. Arsyeja pse kërkesa u filtrua. |
Fusha e Unionit prompt. Kërkesa që u filtrua. prompt mund të jetë vetëm një nga sa më poshtë: |
|
text |
Opsionale. Kërkesë me tekst. |
BidiGenerateMusicGenerationConfig
Konfigurimi për gjenerimin e muzikës.
| Fushat | |
|---|---|
temperature |
Opsionale. Kontrollon variancën në gjenerimin e audios. Vlerat më të larta prodhojnë variancë më të lartë. Intervali është [0.0, 3.0]. Parazgjedhja është 1.1. |
topK |
Opsionale. Kontrollon se si modeli zgjedh tokenët për rezultatin. Merr kampionë të topK token-ëve me probabilitetet më të larta. Intervali është [1, 1000]. Parazgjedhja është 40. |
seed |
Opsionale. Gjenerimi i audios për farërat. Nëse nuk caktohet, kërkesa përdor një vlerë të gjeneruar në mënyrë rastësore. |
guidance |
Opsionale. Kontrollon se sa i ndjek modeli kërkesat. Udhëzimi më i lartë ndjek më nga afër, por do t'i bëjë kalimet më të papritura. Intervali është [0.0, 6.0]. Parazgjedhja është 4.0. |
bpm |
Opsionale. Rrahje në minutë. Intervali është [60, 200]. |
density |
Opsionale. Dendësia e tingujve. Intervali është [0,0, 1,0]. |
brightness |
Opsionale. Vlera më e lartë prodhon audio më të ndritshme. Intervali është [0,0, 1,0]. |
scale |
Opsionale. Shkalla e muzikës së gjeneruar. |
muteBass |
Opsionale. Rezultati i audios nuk duhet të përmbajë bas. |
muteDrums |
Opsionale. Rezultati i audios nuk duhet të përmbajë bateri. |
onlyBassAndDrums |
Opsionale. Dalja e audios duhet të përfshijë vetëm basin dhe baterinë. |
musicGenerationMode |
Opsionale. Modaliteti i gjenerimit të muzikës. Parazgjedhja është QUALITY. |
MusicGenerationMode
| Enumeracionet | |
|---|---|
MUSIC_GENERATION_MODE_UNSPECIFIED |
Kjo vlerë është e papërdorur. |
QUALITY |
Ky modalitet i drejton kërkesat me tekst në rajone të hapësirës latente me muzikë me cilësi më të lartë. |
DIVERSITY |
Ky modalitet i drejton kërkesat me tekst në rajone të hapësirës latente me një diversitet më të madh të muzikës. |
VOCALIZATION |
Ky modalitet i drejton kërkesat me tekst në rajone të hapësirës latente që kanë më shumë gjasa të gjenerojnë muzikë vokale. |
Shkalla
Shkalla e muzikës së gjeneruar.
| Enumeracionet | |
|---|---|
SCALE_UNSPECIFIED |
Vlera e parazgjedhur. Kjo vlerë është e papërdorur. |
C_MAJOR_A_MINOR |
Do maxhor ose La minor |
D_FLAT_MAJOR_B_FLAT_MINOR |
Re bemol maxhor ose si bemol minor |
D_MAJOR_B_MINOR |
Re maxhor ose Si minor |
E_FLAT_MAJOR_C_MINOR |
Mi bemol maxhor ose Do minor |
E_MAJOR_D_FLAT_MINOR |
Mi maxhor ose Re bemol minor |
F_MAJOR_D_MINOR |
Fa maxhor ose Re minor |
G_FLAT_MAJOR_E_FLAT_MINOR |
Sol bemol maxhor ose mi bemol minor |
G_MAJOR_E_MINOR |
Sol maxhor ose Mi minor |
A_FLAT_MAJOR_F_MINOR |
La bemol maxhor ose Fa minor |
A_MAJOR_G_FLAT_MINOR |
La maxhore ose Sol bemol minore |
B_FLAT_MAJOR_G_MINOR |
Si bemol maxhor ose Sol minor |
B_MAJOR_A_FLAT_MINOR |
Si maxhor ose la bemol minor |
BidiGenerateMusicPlaybackControl
Kontrolli i luajtjes për gjenerimin e muzikës.
| Enumeracionet | |
|---|---|
PLAYBACK_CONTROL_UNSPECIFIED |
Kjo vlerë është e papërdorur. |
PLAY |
Fillo të gjenerosh muzikën. |
PAUSE |
Prit për gjenerimin e muzikës. Përdor PLAY për të vazhduar nga pozicioni aktual. |
STOP |
Ndalo gjenerimin e muzikës dhe rivendos kontekstin (kërkesat ruhen). Përdor PLAY për të rinisur gjenerimin e muzikës. |
RESET_CONTEXT |
Rivendos kontekstin (kërkesat e ruajtura) pa ndaluar gjenerimin e muzikës. |
BidiGenerateMusicServerContent
Përditësimi rritës i serverit i gjeneruar 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ë në ndërmemorie dhe ta luajnë në kohë reale.
| Fushat | |
|---|---|
audioChunks[] |
Vetëm dalje. Pjesët e audios që ka gjeneruar modeli. |
BidiGenerateMusicServerMessage
Response message for the BidiGenerateMusic call.
| Fushat | |
|---|---|
Fusha e Unionit messageType. Lloji i mesazhit. messageType mund të jetë vetëm një nga sa më poshtë: |
|
setupComplete |
Vetëm dalje. Dërguar në përgjigje të një mesazhi të |
serverContent |
Vetëm dalje. Përmbajtja e gjeneruar nga modeli në përgjigje të mesazheve të klientit. |
filteredPrompt |
Vetëm dalje. Kërkesa e filtruar me arsyen. |
warning |
Vetëm dalje. Mesazhi paralajmërues nga serveri. Paralajmërimet nuk do ta mbyllin transmetimin. |
BidiGenerateMusicSetup
Mesazhi që do të dërgohet në BidiGenerateMusicClientMessage e parë (dhe vetëm në të parën).
Klientët duhet të presin për një mesazh BidiGenerateMusicSetupComplete para se të dërgojnë mesazhe të tjera.
| Fushat | |
|---|---|
model |
Kërkohet. Emri i burimit të modelit. Kjo shërben si një ID për modelin që do të përdoret. Formati: |
BidiGenerateMusicSetupComplete
Ky lloj nuk ka fusha.
Dërguar në përgjigje të një mesazhi BidiGenerateMusicSetup nga klienti.
WeightedPrompt
Kërkesa e ponderuar si hyrje e modelit.
| Fushat | |
|---|---|
weight |
Kërkohet. Pesha e kërkesës. Pesha përdoret për të kontrolluar rëndësinë relative të kërkesës. Peshat më të larta janë më të rëndësishme se peshat më të ulëta. Peshat e të gjitha weighted_prompts në këtë BidiGenerateMusicClientContent nuk duhet të jenë të gjitha 0. Weights of all weighted_prompts in this BidiGenerateMusicClientContent message will be normalized. |
Fusha e Unionit
|
|
text |
Kërkesë me tekst. |
Më shumë informacione për llojet
Për më shumë informacione për llojet e përdorura nga API-ja, shiko Python SDK.