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ı
|
|
data |
Ses parçasının işlenmemiş baytları. |
mimeType |
Ses parçası içeriğinin MIME türü (ör. "audio/wav"). |
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 |
Bu ses parçasını oluşturmak için kullanılan ağırlıklı istemler. |
musicGenerationConfig |
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[] |
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ı
|
|
setup |
İsteğe bağlıdır. Oturum yapılandırması yalnızca ilk istemci mesajında gönderilir. |
clientContent |
İsteğe bağlıdır. Müzik üretme girişleri olarak ağırlıklı istemler ve müzik üretme yapılandırmaları. |
musicGenerationConfig |
İsteğe bağlıdır. Müzik üretme yapılandırması. |
playbackControl |
İsteğe bağlıdır. Müzik üretimi için oynatma kontrol sinyali. |
BidiGenerateMusicFilteredPrompt
Filtrelenen istem ve nedeni.
Alanlar | |
---|---|
filteredReason |
Yalnızca çıkış. İstemin filtrelenme nedeni. |
Birleştirme alanı prompt . Filtrelenen istem. prompt yalnızca aşağıdakilerden biri olabilir:
|
|
text |
İsteğe bağlıdır. Metin istemi. |
BidiGenerateMusicGenerationConfig
Müzik üretme yapılandırması.
Alanlar | |
---|---|
temperature |
İ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 |
İ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 |
İ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 |
İ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 |
İsteğe bağlıdır. Dakikadaki nabız sayısı. Aralık [60, 200]'dür. |
density |
İsteğe bağlıdır. Seslerin yoğunluğu Aralık [0.0, 1.0] şeklindedir. |
brightness |
İsteğe bağlıdır. Daha yüksek değer, daha net ses üretir. Aralık [0.0, 1.0] şeklindedir. |
scale |
İsteğe bağlıdır. Oluşturulan müziğin ölçeği. |
muteBass |
İsteğe bağlıdır. Ses çıkışında bas olmamalıdır. |
muteDrums |
İsteğe bağlıdır. Ses çıkışında davul olmamalıdır. |
onlyBassAndDrums |
İsteğe bağlıdır. Ses çıkışında yalnızca bas ve davul olmalıdır. |
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[] |
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 |
Yalnızca çıkış. Kurulum tamamlandığında istemciden gelen |
serverContent |
Yalnızca çıkış. Modelin istemci mesajlarına yanıt olarak oluşturduğu içerik. |
filteredPrompt |
Yalnızca çıkış. Filtrelenen istem ve nedeni. |
warning |
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 |
Zorunlu. Modelin kaynak adı. Bu, modelin kullanacağı bir kimlik görevi görür. Biçim: |
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 |
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ı
|
|
text |
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.