Live Music API - WebSockets API reference

Lyria RealTime müzik üretimi, WebSockets kullanılarak kalıcı, çift yönlü ve düşük gecikmeli bir akış bağlantısı kullanır. Bu bölümde, WebSockets API'si hakkında ek ayrıntılar bulabilirsiniz.

Oturum sayısı

WebSocket bağlantısı, modelle gerçek zamanlı iletişimi sürdürmek için bir oturum oluşturur. Bir istemci yeni bir bağlantı başlattıktan sonra oturum, sunucuyla mesaj alışverişinde bulunarak şunları yapabilir:

  • Müzik üretimini yönlendirmek için istemler ve kontroller gönderme
  • Müzik çalma kontrollerini gönderme
  • Ses parçaları alma

WebSocket bağlantısı

Oturum başlatmak için şu WebSocket uç noktasına bağlanın:

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

Oturum yapılandırması

Bağlantı kurulduktan sonraki ilk mesaj, oturum sırasında kullanılacak modeli belirler.

Aşağıdaki örnek yapılandırmaya bakın. SDK'lardaki ad büyük/küçük harf kullanımının farklılık gösterebileceğini unutmayın. Python SDK yapılandırma seçeneklerini buradan inceleyebilirsiniz.


{
  "model": string
}

Mesaj gönderin

WebSocket bağlantısı üzerinden mesaj alışverişi yapmak için istemcinin açık bir WebSocket bağlantısı üzerinden bir JSON nesnesi göndermesi gerekir. JSON nesnesi, aşağıdaki nesne grubundaki alanlardan tam olarak birini içermelidir:


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

Desteklenen müşteri mesajları

Desteklenen istemci mesajlarını aşağıdaki tabloda görebilirsiniz:

Mesaj Açıklama
BidiGenerateMusicSetup Yalnızca ilk mesajda gönderilecek oturum yapılandırması
BidiGenerateMusicClientContent Model girişi olarak ağırlıklı istemler
BidiGenerateMusicGenerationConfig Müzik üretimi için yapılandırma
BidiGenerateMusicPlaybackControl Model oluşturma için oynatma kontrol sinyalleri

İleti alma

Sunucudan mesaj almak için WebSocket "message" etkinliğini dinleyin ve ardından sonucu desteklenen sunucu mesajlarının tanımına göre ayrıştırın.

Aşağıdaki bilgilere bakın:

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

Sunucu mesajları, BidiGenerateMusicServerMessage mesajındaki diğer alanlardan tam olarak birini içerir. (messageType birleşimi JSON'da ifade edilmediğinden alan, mesajın üst düzeyinde görünür.)

Mesajlar ve etkinlikler

AudioChunk

Ses parçası gösterimi.

Alanlar

Birleştirme alanı content.

content yalnızca aşağıdakilerden biri olabilir:

data

bytes

Ses parçasının işlenmemiş baytları.

mimeType

string

Ses parçası içeriğinin MIME türü (ör. "audio/wav").

sourceMetadata

SourceMetadata

Yalnızca çıkış. Bu ses parçasını oluşturmak için kullanılan istemler ve yapılandırma.

SourceMetadata

Bu ses parçasını oluşturmak için kullanılan giriş kaynağıyla ilgili meta veriler.

Alanlar
clientContent

BidiGenerateMusicClientContent

Bu ses parçasını oluşturmak için kullanılan ağırlıklı istemler.

musicGenerationConfig

BidiGenerateMusicGenerationConfig

Bu ses parçasını oluşturmak için müzik oluşturma yapılandırması.

BidiGenerateMusicClientContent

Müziği başlatmak veya yönlendirmek için kullanıcı girişi.

Alanlar
weightedPrompts[]

WeightedPrompt

Zorunlu. Model girişi olarak ağırlıklı istemler.

BidiGenerateMusicClientMessage

BidiGenerateMusic çağrısında istemci tarafından gönderilen mesajlar.

Alanlar

Birleştirme alanı messageType.

messageType yalnızca aşağıdakilerden biri olabilir:

setup

BidiGenerateMusicSetup

İsteğe bağlıdır. Oturum yapılandırması yalnızca ilk istemci mesajında gönderilir.

clientContent

BidiGenerateMusicClientContent

İsteğe bağlıdır. Müzik üretme girişleri olarak ağırlıklı istemler ve müzik üretme yapılandırmaları.

musicGenerationConfig

BidiGenerateMusicGenerationConfig

İsteğe bağlıdır. Müzik üretme yapılandırması.

playbackControl

BidiGenerateMusicPlaybackControl

İsteğe bağlıdır. Müzik üretimi için oynatma kontrol sinyali.

BidiGenerateMusicFilteredPrompt

Filtrelenen istem ve nedeni.

Alanlar
filteredReason

string

Yalnızca çıkış. İstemin filtrelenme nedeni.

Birleştirme alanı prompt. Filtrelenen istem. prompt yalnızca aşağıdakilerden biri olabilir:
text

string

İsteğe bağlıdır. Metin istemi.

BidiGenerateMusicGenerationConfig

Müzik üretme yapılandırması.

Alanlar
temperature

float

İsteğe bağlıdır. Ses üretimindeki varyansı kontrol eder.

Daha yüksek değerler, daha yüksek varyans üretir. Aralık [0.0, 3.0] şeklindedir. Varsayılan değer 1,1'dir.

topK

int32

İsteğe bağlıdır. Modelin çıkış için jetonları nasıl seçeceğini kontrol eder.

En yüksek olasılıklara sahip topK jetonlarını örnekler. Aralık [1, 1000]'dir. Varsayılan değer 40'tır.

seed

int32

İsteğe bağlıdır. Ses üretme işlemini başlatır. Ayarlanmazsa istekte rastgele oluşturulmuş bir başlangıç değeri kullanılır.

guidance

float

İsteğe bağlıdır. Modelin istemleri ne kadar yakından takip edeceğini kontrol eder. Yüksek yönlendirme, daha yakından takip eder ancak geçişleri daha ani hale getirir. Aralık [0,0, 6,0]'dır. Varsayılan değer 4,0'dır.

bpm

int32

İsteğe bağlıdır. Dakikadaki nabız sayısı. Aralık [60, 200]'dür.

density

float

İsteğe bağlıdır. Seslerin yoğunluğu Aralık [0.0, 1.0] şeklindedir.

brightness

float

İsteğe bağlıdır. Daha yüksek değer, daha net ses üretir. Aralık [0.0, 1.0] şeklindedir.

scale

Scale

İsteğe bağlıdır. Oluşturulan müziğin ölçeği.

muteBass

bool

İsteğe bağlıdır. Ses çıkışında bas olmamalıdır.

muteDrums

bool

İsteğe bağlıdır. Ses çıkışında davul olmamalıdır.

onlyBassAndDrums

bool

İsteğe bağlıdır. Ses çıkışında yalnızca bas ve davul olmalıdır.

musicGenerationMode

MusicGenerationMode

İsteğe bağlıdır. Müzik üretme modu. Varsayılan değer QUALITY'dir.

MusicGenerationMode

Sıralamalar
MUSIC_GENERATION_MODE_UNSPECIFIED Bu değer kullanılmıyor.
QUALITY Bu mod, metin istemlerini daha kaliteli müziklerin bulunduğu latent uzay bölgelerine yönlendirir.
DIVERSITY Bu mod, metin istemlerini daha fazla çeşitlilikte müzik içeren latent uzay bölgelerine yönlendirir.
VOCALIZATION Bu mod, metin istemlerini latent uzayın vokal müzik üretme olasılığı daha yüksek olan bölgelerine yönlendirir.

Ölçek

Oluşturulan müziğin ölçeği.

Sıralamalar
SCALE_UNSPECIFIED Varsayılan değer. Bu değer kullanılmıyor.
C_MAJOR_A_MINOR Do majör veya La minör
D_FLAT_MAJOR_B_FLAT_MINOR Re bemol majör veya si bemol minör
D_MAJOR_B_MINOR Re majör veya si minör
E_FLAT_MAJOR_C_MINOR Mi bemol majör veya Do minör
E_MAJOR_D_FLAT_MINOR Mi majör veya re bemol minör
F_MAJOR_D_MINOR Fa majör veya Re minör
G_FLAT_MAJOR_E_FLAT_MINOR Sol bemol majör veya mi bemol minör
G_MAJOR_E_MINOR Sol majör veya mi minör
A_FLAT_MAJOR_F_MINOR Fa majör veya fa minör
A_MAJOR_G_FLAT_MINOR La majör veya sol bemol minör
B_FLAT_MAJOR_G_MINOR Si bemol majör veya sol minör
B_MAJOR_A_FLAT_MINOR Si majör veya la bemol minör

BidiGenerateMusicPlaybackControl

Müzik üretimi için oynatma kontrolü.

Sıralamalar
PLAYBACK_CONTROL_UNSPECIFIED Bu değer kullanılmıyor.
PLAY Müziği oluşturmaya başlayın.
PAUSE Müzik üretimini bekletme Mevcut konumdan devam etmek için PLAY'i kullanın.
STOP Müzik oluşturma işlemini durdurun ve bağlamı sıfırlayın (istemler korunur). Müzik oluşturmayı yeniden başlatmak için PLAY'i (OYNAT) kullanın.
RESET_CONTEXT Müzik oluşturma işlemini durdurmadan bağlamı sıfırlayın (istemler korunur).

BidiGenerateMusicServerContent

Model tarafından istemci mesajlarına yanıt olarak oluşturulan artımlı sunucu güncellemesi.

İçerik, mümkün olduğunca hızlı bir şekilde oluşturulur ve anlık olarak oluşturulmaz. İstemciler, içeriği arabelleğe alıp gerçek zamanlı olarak oynatmayı seçebilir.

Alanlar
audioChunks[]

AudioChunk

Yalnızca çıkış. Modelin oluşturduğu ses parçaları.

BidiGenerateMusicServerMessage

BidiGenerateMusic çağrısı için yanıt mesajı.

Alanlar
Birleştirme alanı messageType. Mesajın türü. messageType yalnızca aşağıdakilerden biri olabilir:
setupComplete

BidiGenerateMusicSetupComplete

Yalnızca çıkış. Kurulum tamamlandığında istemciden gelen BidiGenerateMusicSetup mesajına yanıt olarak gönderilir.

serverContent

BidiGenerateMusicServerContent

Yalnızca çıkış. Modelin istemci mesajlarına yanıt olarak oluşturduğu içerik.

filteredPrompt

BidiGenerateMusicFilteredPrompt

Yalnızca çıkış. Filtrelenen istem ve nedeni.

warning

string

Yalnızca çıkış. Sunucudan gelen uyarı mesajı. Uyarılar akışı sonlandırmaz.

BidiGenerateMusicSetup

İlk (ve yalnızca ilk) BidiGenerateMusicClientMessage içinde gönderilecek mesaj.

Müşteriler, ek mesaj göndermeden önce BidiGenerateMusicSetupComplete mesajını beklemelidir.

Alanlar
model

string

Zorunlu. Modelin kaynak adı. Bu, modelin kullanacağı bir kimlik görevi görür.

Biçim: models/{model}

BidiGenerateMusicSetupComplete

Bu türde alan yok.

İstemciden gelen BidiGenerateMusicSetup mesajına yanıt olarak gönderilir.

WeightedPrompt

Model girişi olarak ağırlıklı istem.

Alanlar
weight

float

Zorunlu. İstemin ağırlığı.

Ağırlık, istemin göreceli önemini kontrol etmek için kullanılır. Yüksek ağırlıklar, düşük ağırlıklardan daha önemlidir.

Bu BidiGenerateMusicClientContent'teki tüm weighted_prompts'un ağırlıkları 0 olmamalıdır. Bu BidiGenerateMusicClientContent mesajındaki tüm weighted_prompts öğelerinin ağırlıkları normalleştirilir.

Birleştirme alanı prompt.

prompt yalnızca aşağıdakilerden biri olabilir:

text

string

Metin istemi.

Türler hakkında daha fazla bilgi

API tarafından kullanılan türler hakkında daha fazla bilgi için Python SDK'sına bakın.