Live Music API - WebSockets API reference

تولید موسیقی RealTime Lyria با استفاده از WebSockets از اتصال جریان مداوم، دو طرفه و با تاخیر کم استفاده می کند. در این بخش، جزئیات بیشتری در مورد WebSockets API خواهید یافت.

جلسات

یک اتصال WebSocket یک جلسه برای برقراری ارتباط بلادرنگ با مدل ایجاد می کند. پس از اینکه یک کلاینت یک اتصال جدید را آغاز کرد، جلسه می تواند پیام هایی را با سرور مبادله کند:

  • پیام‌ها و کنترل‌ها را برای هدایت تولید موسیقی ارسال کنید.
  • ارسال کنترل های پخش موسیقی
  • تکه های صوتی را دریافت کنید.

اتصال WebSocket

برای شروع یک جلسه، به این نقطه پایانی وب سوکت متصل شوید:

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

پیکربندی جلسه

پیام اولیه پس از اتصال، مدل را برای استفاده در جلسه تنظیم می کند.

پیکربندی مثال زیر را ببینید. توجه داشته باشید که پوشش نام در SDK ممکن است متفاوت باشد. می‌توانید گزینه‌های پیکربندی Python SDK را در اینجا جستجو کنید.


{
  "model": string
}

ارسال پیام

برای تبادل پیام از طریق اتصال WebSocket، مشتری باید یک شی JSON را از طریق اتصال WebSocket باز ارسال کند. شی JSON باید دقیقاً یکی از فیلدهای مجموعه اشیاء زیر را داشته باشد:


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

پیام های مشتری پشتیبانی شده

پیام های مشتری پشتیبانی شده را در جدول زیر ببینید:

پیام توضیحات
BidiGenerateMusicSetup تنظیمات جلسه فقط در اولین پیام ارسال شود
BidiGenerateMusicClientContent درخواست های وزنی به عنوان ورودی مدل
BidiGenerateMusicGenerationConfig پیکربندی برای تولید موسیقی
BidiGenerateMusicPlaybackControl سیگنال های کنترل پخش برای تولید مدل

پیام ها را دریافت کنید

برای دریافت پیام‌ها از سرور، به رویداد «پیام» WebSocket گوش دهید و سپس نتیجه را مطابق با تعریف پیام‌های سرور پشتیبانی‌شده تجزیه کنید.

موارد زیر را ببینید:

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

پیام های سرور دقیقاً یکی از فیلدهای دیگر پیام BidiGenerateMusicServerMessage را شامل می شود. (اتحادیه messageType در JSON بیان نمی شود، بنابراین فیلد در سطح بالای پیام ظاهر می شود.)

پیام ها و رویدادها

AudioChunk

نمایش یک قطعه صوتی.

فیلدها

content زمینه اتحادیه

content فقط می تواند یکی از موارد زیر باشد:

data

bytes

بایت های خام قطعه صوتی.

mimeType

string

نوع MIME محتوای قطعه صوتی، مانند "audio/wav".

sourceMetadata

SourceMetadata

فقط خروجی از دستورات و پیکربندی برای تولید این قطعه صوتی استفاده می شود.

SourceMetadata

فراداده در مورد منبع ورودی مورد استفاده برای تولید این قطعه صوتی.

فیلدها
clientContent

BidiGenerateMusicClientContent

درخواست های وزنی برای تولید این قطعه صوتی.

musicGenerationConfig

BidiGenerateMusicGenerationConfig

پیکربندی تولید موسیقی برای تولید این قطعه صوتی.

BidiGenerateMusicClientContent

ورودی کاربر برای شروع یا هدایت موسیقی.

فیلدها
weightedPrompts[]

WeightedPrompt

مورد نیاز. درخواست های وزنی به عنوان ورودی مدل.

BidiGenerateMusicClientMessage

پیام های ارسال شده توسط مشتری در تماس BidiGenerateMusic.

فیلدها

messageType فیلد اتحادیه

messageType می تواند تنها یکی از موارد زیر باشد:

setup

BidiGenerateMusicSetup

اختیاری. پیکربندی جلسه فقط در اولین پیام مشتری ارسال می شود.

clientContent

BidiGenerateMusicClientContent

اختیاری. دستورات وزنی و تنظیمات تولید موسیقی به عنوان ورودی تولید موسیقی.

musicGenerationConfig

BidiGenerateMusicGenerationConfig

اختیاری. پیکربندی برای تولید موسیقی

playbackControl

BidiGenerateMusicPlaybackControl

اختیاری. سیگنال کنترل پخش برای تولید موسیقی.

BidiGenerateMusicFilteredPrompt

درخواست با دلیل فیلتر شده است.

فیلدها
filteredReason

string

فقط خروجی دلیل فیلتر شدن درخواست

prompt میدان اتحادیه درخواستی که فیلتر شد. prompt فقط می تواند یکی از موارد زیر باشد:
text

string

اختیاری. پیام متنی

BidiGenerateMusicGenerationConfig

پیکربندی برای تولید موسیقی

فیلدها
temperature

float

اختیاری. واریانس در تولید صدا را کنترل می کند.

مقادیر بالاتر واریانس بالاتری ایجاد می کند. محدوده [0.0، 3.0] است. پیش فرض 1.1 است.

topK

int32

اختیاری. نحوه انتخاب مدل نشانه ها برای خروجی را کنترل می کند.

توکن های topK را با بیشترین احتمال نمونه برداری می کند. محدوده [1, 1000] است. پیش فرض 40 است.

seed

int32

اختیاری. تولید صوتی دانه ها. اگر تنظیم نشود، درخواست از یک دانه تولید شده به طور تصادفی استفاده می کند.

guidance

float

اختیاری. کنترل می کند که مدل چقدر از دستورات پیروی می کند. راهنمایی بالاتر با دقت بیشتری دنبال می شود، اما انتقال را ناگهانی تر می کند. محدوده [0.0، 6.0] است. پیش فرض 4.0 است.

bpm

int32

اختیاری. ضربان در دقیقه محدوده [60، 200] است.

density

float

اختیاری. تراکم صداها محدوده [0.0، 1.0] است.

brightness

float

اختیاری. ارزش بالاتر صدای روشن تری تولید می کند. محدوده [0.0، 1.0] است.

scale

Scale

اختیاری. مقیاس موسیقی تولید شده

muteBass

bool

اختیاری. خروجی صدا نباید حاوی باس باشد.

muteDrums

bool

اختیاری. خروجی صدا نباید حاوی درام باشد.

onlyBassAndDrums

bool

اختیاری. خروجی صدا فقط باید شامل باس و درام باشد.

musicGenerationMode

MusicGenerationMode

اختیاری. شیوه تولید موسیقی پیش فرض QUALITY است.

MusicGenerationMode

Enums
MUSIC_GENERATION_MODE_UNSPECIFIED این مقدار استفاده نشده است.
QUALITY این حالت پیام های متنی را به مناطقی از فضای پنهان با موسیقی با کیفیت بالاتر هدایت می کند.
DIVERSITY این حالت پیام‌های متنی را به مناطقی از فضای پنهان با تنوع بیشتری از موسیقی هدایت می‌کند.
VOCALIZATION این حالت پیام های متنی را به مناطقی از فضای پنهان هدایت می کند که احتمال بیشتری برای تولید موسیقی آوازی دارد.

مقیاس

مقیاس موسیقی تولید شده

Enums
SCALE_UNSPECIFIED مقدار پیش فرض این مقدار استفاده نشده است.
C_MAJOR_A_MINOR سی ماژور یا مینور
D_FLAT_MAJOR_B_FLAT_MINOR د فلت ماژور یا ب فلت مینور
D_MAJOR_B_MINOR د ماژور یا ب مینور
E_FLAT_MAJOR_C_MINOR ای فلت ماژور یا سی مینور
E_MAJOR_D_FLAT_MINOR ای ماژور یا د فلت مینور
F_MAJOR_D_MINOR فا ماژور یا د مینور
G_FLAT_MAJOR_E_FLAT_MINOR جی فلت ماژور یا ای فلت مینور
G_MAJOR_E_MINOR جی ماژور یا ای مینور
A_FLAT_MAJOR_F_MINOR فلت ماژور یا فا مینور
A_MAJOR_G_FLAT_MINOR ماژور یا جی مسطح مینور
B_FLAT_MAJOR_G_MINOR ب فلت ماژور یا جی مینور
B_MAJOR_A_FLAT_MINOR ب ماژور یا A مسطح مینور

BidiGenerateMusicPlaybackControl

کنترل پخش برای نسل موسیقی.

Enums
PLAYBACK_CONTROL_UNSPECIFIED این مقدار استفاده نشده است.
PLAY شروع به تولید موسیقی کنید.
PAUSE نسل موسیقی را نگه دارید. از PLAY برای از سرگیری از موقعیت فعلی استفاده کنید.
STOP تولید موسیقی را متوقف کنید و زمینه را بازنشانی کنید (اعلام‌ها حفظ می‌شوند). از PLAY برای راه اندازی مجدد تولید موسیقی استفاده کنید.
RESET_CONTEXT بدون توقف تولید موسیقی، زمینه را بازنشانی کنید (اعلام‌ها حفظ می‌شوند).

BidiGenerateMusicServerContent

به روز رسانی افزایشی سرور که توسط مدل در پاسخ به پیام های مشتری ایجاد می شود.

محتوا در سریع ترین زمان ممکن و نه در زمان واقعی تولید می شود. مشتریان ممکن است انتخاب کنند که بافر کنند و آن را در زمان واقعی پخش کنند.

فیلدها
audioChunks[]

AudioChunk

فقط خروجی تکه های صوتی که مدل تولید کرده است.

BidiGenerateMusicServerMessage

پیام پاسخ برای تماس BidiGenerateMusic.

فیلدها
messageType فیلد اتحادیه نوع پیام. messageType می تواند تنها یکی از موارد زیر باشد:
setupComplete

BidiGenerateMusicSetupComplete

فقط خروجی در پاسخ به یک پیام BidiGenerateMusicSetup از مشتری پس از تکمیل راه‌اندازی ارسال می‌شود.

serverContent

BidiGenerateMusicServerContent

فقط خروجی محتوای تولید شده توسط مدل در پاسخ به پیام های مشتری.

filteredPrompt

BidiGenerateMusicFilteredPrompt

فقط خروجی درخواست با دلیل فیلتر شده است.

warning

string

فقط خروجی پیام هشدار از طرف سرور اخطارها جریان را خاتمه نمی دهند.

BidiGenerateMusicSetup

پیامی که باید در اولین (و فقط در اولین) ارسال شود BidiGenerateMusicClientMessage .

مشتریان باید قبل از ارسال هرگونه پیام اضافی منتظر یک پیام BidiGenerateMusicSetupComplete باشند.

فیلدها
model

string

مورد نیاز. نام منبع مدل این به عنوان شناسه ای برای استفاده از مدل عمل می کند.

قالب: models/{model}

BidiGenerateMusicSetupComplete

این نوع هیچ فیلدی ندارد.

در پاسخ به یک پیام BidiGenerateMusicSetup از مشتری ارسال شد.

WeightedPrompt

اعلان وزن شده به عنوان ورودی مدل.

فیلدها
weight

float

مورد نیاز. وزن اعلان.

وزن برای کنترل اهمیت نسبی اعلان استفاده می شود. وزن های بالاتر مهم تر از وزن های پایین تر است.

وزن همه وزن‌های وزنی در این BidiGenerateMusicClientClientContent نباید همه 0 باشد. وزن‌های همه وزن‌دهی‌ها در این پیام BidiGenerateMusicClientClientContent عادی می‌شود.

prompt میدان اتحادیه

prompt فقط می تواند یکی از موارد زیر باشد:

text

string

پیام متنی

اطلاعات بیشتر در مورد انواع

برای اطلاعات بیشتر در مورد انواع استفاده شده توسط API، Python SDK را ببینید.