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önderin.
  • Müzik çalma kontrollerini gönderme
  • Ses parçalarını 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 nesnesinde aşağıdaki nesne grubundan tam olarak bir alan bulunmalıdır:


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

Desteklenen istemci 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 üretme 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

content birleşik alanı.

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

data

bytes

Ses parçasının ham 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 üretme 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

messageType birleşik alanı.

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

setup

BidiGenerateMusicSetup

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

clientContent

BidiGenerateMusicClientContent

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

musicGenerationConfig

BidiGenerateMusicGenerationConfig

İsteğe bağlı. Müzik üretme için yapılandırma.

playbackControl

BidiGenerateMusicPlaybackControl

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

BidiGenerateMusicFilteredPrompt

Filtrelenen istem ve nedeni.

Alanlar
filteredReason

string

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

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

string

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

BidiGenerateMusicGenerationConfig

Müzik üretme için yapılandırma.

Alanlar
temperature

float

İsteğe bağlı. 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ı. 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ı. Ses üretme özelliğini başlatır. Ayarlanmazsa istekte rastgele oluşturulmuş bir başlangıç değeri kullanılır.

guidance

float

İsteğe bağlı. 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ı. Dakikadaki nabız sayısı. Aralık [60, 200]'dür.

density

float

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

brightness

float

İsteğe bağlı. Değer yükseldikçe ses daha net duyulur. Aralık [0.0, 1.0] şeklindedir.

scale

Scale

İsteğe bağlı. Üretilen müziğin ölçeği.

muteBass

bool

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

muteDrums

bool

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

onlyBassAndDrums

bool

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

musicGenerationMode

MusicGenerationMode

İsteğe bağlı. Müzik üretme modu. Varsayılan değer KALİTE'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 vokal müzik üretme olasılığı daha yüksek olan latent uzay bölgelerine yönlendirir.

Ölçek

Üretilen 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 D majör veya B 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 üretme için oynatma kontrolü.

Sıralamalar
PLAYBACK_CONTROL_UNSPECIFIED Bu değer kullanılmıyor.
PLAY Müziği üretmeye başlayın.
PAUSE Müzik üretimini duraklatma 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 (OYNA) 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
messageType birleşik alanı. Mesajın türü. messageType aşağıdakilerden yalnızca 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, yayını 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.

prompt birleşik alanı.

prompt aşağıdakilerden yalnızca 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.