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 | |
|---|---|
|
|
|
data |
Ses parçasının ham 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 üretme 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 | |
|---|---|
|
|
|
setup |
İsteğe bağlı. Oturum yapılandırması yalnızca ilk istemci mesajında gönderilir. |
clientContent |
İsteğe bağlı. Müzik üretme girişleri olarak ağırlıklı istemler ve müzik üretme yapılandırmaları. |
musicGenerationConfig |
İsteğe bağlı. Müzik üretme için yapılandırma. |
playbackControl |
İsteğe bağlı. Müzik üretme için oynatma kontrol sinyali. |
BidiGenerateMusicFilteredPrompt
Filtrelenen istem ve nedeni.
| Alanlar | |
|---|---|
filteredReason |
Yalnızca çıkış. İstemin filtrelenme nedeni. |
prompt birleşik alanı. Filtrelenen istem prompt aşağıdakilerden yalnızca biri olabilir:
|
|
text |
İsteğe bağlı. Metin istemi. |
BidiGenerateMusicGenerationConfig
Müzik üretme için yapılandırma.
| Alanlar | |
|---|---|
temperature |
İ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 |
İ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 |
İ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 |
İ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 |
İsteğe bağlı. Dakikadaki nabız sayısı. Aralık [60, 200]'dür. |
density |
İsteğe bağlı. Seslerin yoğunluğu. Aralık [0.0, 1.0] şeklindedir. |
brightness |
İsteğe bağlı. Değer yükseldikçe ses daha net duyulur. Aralık [0.0, 1.0] şeklindedir. |
scale |
İsteğe bağlı. Üretilen müziğin ölçeği. |
muteBass |
İsteğe bağlı. Ses çıkışında bas olmamalıdır. |
muteDrums |
İsteğe bağlı. Ses çıkışında davul olmamalıdır. |
onlyBassAndDrums |
İsteğe bağlı. Ses çıkışında yalnızca bas ve davul olmalıdır. |
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[] |
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 |
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, 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 |
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. |
|
|
|
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.