تولید موسیقی همزمان Lyria از اتصال جاریسازی پایدار، دوطرفه، و با تأخیر کم بااستفاده از WebSockets استفاده میکند. در این بخش، جزئیات بیشتری درباره WebSockets API پیدا خواهید کرد.
جلسات
اتصال WebSocket جلسهای را برای حفظ ارتباط همزمان با مدل ایجاد میکند. پساز اینکه کارخواهی اتصال جدیدی را آغاز کرد، جلسه میتواند با سرور پیام ردوبدل کند تا:
- پیاموارهها و کنترلهایی برای هدایت تولید موسیقی ارسال کنید.
- کنترلهای بازپخش موسیقی را ارسال کنید.
- تکههای صوتی را دریافت کنید.
اتصال WebSocket
برای شروع جلسه، به این نقطه پایانی وبسوکت متصل شوید:
wss://generativelanguage.googleapis.com/ws/google.ai.generativelanguage.v1alpha.GenerativeService.BidiGenerateMusic
پیکربندی جلسه
پیام اولیه پساز اتصال، مدل را برای استفاده درطول جلسه تنظیم میکند.
پیکربندی نمونه زیر را ببینید. توجه داشته باشید که حروف نام در کیتهای توسعه نرمافزار ممکن است متفاوت باشد. میتوانید گزینههای پیکربندی کیت توسعه نرمافزار Python را در اینجا جستجو کنید.
{
"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
نمایش یک بخش صوتی.
| فیلدها | |
|---|---|
فیلد اتحادیه |
|
data |
بایتهای خام بخش صدا. |
mimeType |
نوع MIME محتوای بخش صوتی، مانند «audio/wav». |
sourceMetadata |
فقط برونداد. پیاموارهها و پیکربندی استفادهشده برای تولید این بخش صوتی. |
SourceMetadata
فراداده درباره منبع ورودی استفادهشده برای تولید این بخش صوتی.
| فیلدها | |
|---|---|
clientContent |
پیاموارههای وزندار برای تولید این بخش صوتی. |
musicGenerationConfig |
پیکربندی تولید موسیقی برای تولید این بخش صوتی. |
BidiGenerateMusicClientContent
ورودی کاربر برای شروع یا هدایت موسیقی.
| فیلدها | |
|---|---|
weightedPrompts[] |
الزامی. پیاموارههای وزندار بهعنوان ورودی مدل. |
BidiGenerateMusicClientMessage
پیامهای ارسالشده توسط کارخواه در تماس BidiGenerateMusic.
| فیلدها | |
|---|---|
فیلد اتحادیه |
|
setup |
اختیاری. پیکربندی جلسه در اولین و تنها اولین پیام مشتری ارسال شد. |
clientContent |
اختیاری. پیاموارههای وزندار و پیکربندیهای تولید موسیقی بهعنوان ورودی تولید موسیقی. |
musicGenerationConfig |
اختیاری. پیکربندی برای تولید موسیقی. |
playbackControl |
اختیاری. سیگنال کنترل بازپخش برای تولید موسیقی. |
BidiGenerateMusicFilteredPrompt
پیامواره فیلترشده با دلیل.
| فیلدها | |
|---|---|
filteredReason |
فقط برونداد. دلیل فیلتر شدن پیامواره. |
فیلد اتحادیه prompt. پیاموارهای که فیلتر شده است. prompt فقط میتواند یکی از موارد زیر باشد: |
|
text |
اختیاری. پیامواره نوشتاری. |
BidiGenerateMusicGenerationConfig
پیکربندی برای تولید موسیقی.
| فیلدها | |
|---|---|
temperature |
اختیاری. تغییرات در تولید صدا را کنترل میکند. مقادیر بالاتر باعث ایجاد واریانس بالاتر میشود. محدوده [0.0, 3.0] است. پیشفرض ۱٫۱ است. |
topK |
اختیاری. نحوه انتخاب دادهواحدها برای برونداد توسط مدل را کنترل میکند. topK رمزینه با بالاترین احتمال را نمونهبرداری میکند. محدوده [۱، ۱۰۰۰] است. پیشفرض ۴۰ است. |
seed |
اختیاری. تولید صوت بذر. اگر تنظیم نشده باشد، درخواست از یک مقدار اولیه تولیدشده تصادفی استفاده میکند. |
guidance |
اختیاری. کنترل میکند که مدل تا چه اندازه از پیاموارهها پیروی کند. راهنمای بالاتر دقیقتر دنبال میکند، اما انتقالها را ناگهانیتر میکند. محدوده [۰٫۰، ۶٫۰] است. پیشفرض ۴٫۰ است. |
bpm |
اختیاری. ضربان در دقیقه. محدوده [۶۰، ۲۰۰] است. |
density |
اختیاری. تراکم صداها. محدوده [۰٫۰، ۱٫۰] است. |
brightness |
اختیاری. مقدار بالاتر صدای روشنتری تولید میکند. محدوده [۰٫۰، ۱٫۰] است. |
scale |
اختیاری. مقیاس موسیقی تولیدشده. |
muteBass |
اختیاری. برونداد صدا نباید شامل صدای بم باشد. |
muteDrums |
اختیاری. برونداد صوتی نباید شامل درام باشد. |
onlyBassAndDrums |
اختیاری. خروجی صوتی باید فقط شامل باس و درام باشد. |
musicGenerationMode |
اختیاری. حالت تولید موسیقی. پیشفرض «کیفیت» است. |
MusicGenerationMode
| شمارشیها | |
|---|---|
MUSIC_GENERATION_MODE_UNSPECIFIED |
از این مقدار استفاده نمیشود. |
QUALITY |
این حالت پیاموارههای نوشتاری را به مناطق فضای نهان با موسیقی با کیفیت بالاتر هدایت میکند. |
DIVERSITY |
این حالت پیاموارههای نوشتاری را به مناطقی از فضای نهان هدایت میکند که تنوع موسیقی بیشتری دارند. |
VOCALIZATION |
این حالت پیاموارههای نوشتاری را به مناطقی از فضای نهان هدایت میکند که احتمال بیشتری برای تولید موسیقی آوازی دارند. |
مقیاس
مقیاس موسیقی تولیدشده.
| شمارشیها | |
|---|---|
SCALE_UNSPECIFIED |
مقدار پیشفرض. از این مقدار استفاده نمیشود. |
C_MAJOR_A_MINOR |
دو ماژور یا لا مینور |
D_FLAT_MAJOR_B_FLAT_MINOR |
ماژور ر بمل یا مینور سی بمل |
D_MAJOR_B_MINOR |
ماژور D یا مینور B |
E_FLAT_MAJOR_C_MINOR |
می بمل ماژور یا دو مینور |
E_MAJOR_D_FLAT_MINOR |
میماژور یا رِ بِمُل مینور |
F_MAJOR_D_MINOR |
فا ماژور یا ر مینور |
G_FLAT_MAJOR_E_FLAT_MINOR |
سُل ماژور یا می مینور |
G_MAJOR_E_MINOR |
ماژور G یا مینور E |
A_FLAT_MAJOR_F_MINOR |
ماژور مسطح یا مینور اف |
A_MAJOR_G_FLAT_MINOR |
ماژور یا مینور سل بمل |
B_FLAT_MAJOR_G_MINOR |
ماژور سی بمل یا مینور سل |
B_MAJOR_A_FLAT_MINOR |
ماژور B یا مینور A فلت |
BidiGenerateMusicPlaybackControl
کنترل بازپخش برای تولید موسیقی.
| شمارشیها | |
|---|---|
PLAYBACK_CONTROL_UNSPECIFIED |
از این مقدار استفاده نمیشود. |
PLAY |
تولید موسیقی را شروع کنید. |
PAUSE |
تولید موسیقی را نگه دارید. از «پخش» برای ازسرگیری از موقعیت فعلی استفاده کنید. |
STOP |
تولید موسیقی را متوقف میکند و زمینه را بازنشانی میکند (پیاموارهها حفظ میشود). برای بازراهاندازی تولید موسیقی، از PLAY (پخش) استفاده کنید. |
RESET_CONTEXT |
بدون توقف تولید موسیقی، زمینه را بازنشانی کنید (پیاموارهها حفظ میشود). |
BidiGenerateMusicServerContent
بهروزرسانی افزایشی سرور که مدل در پاسخ به پیامهای کارخواه تولید کرده است.
محتوا در سریعترین زمان ممکن تولید میشود، نه در زمان واقعی. کاربران میتوانند انتخاب کنند که آن را بافر کنند و در زمان واقعی پخش کنند.
| فیلدها | |
|---|---|
audioChunks[] |
فقط برونداد. بخشهای صوتی که مدل تولید کرده است. |
BidiGenerateMusicServerMessage
پیام پاسخ برای تماس BidiGenerateMusic.
| فیلدها | |
|---|---|
فیلد اتحادیه messageType. نوع پیام. messageType فقط میتواند یکی از موارد زیر باشد: |
|
setupComplete |
فقط برونداد. وقتی راهاندازی کامل شد، در پاسخ به پیام |
serverContent |
فقط برونداد. محتوای تولیدشده توسط مدل در پاسخ به پیامهای کارخواه. |
filteredPrompt |
فقط برونداد. پیامواره فیلترشده با دلیل. |
warning |
فقط برونداد. پیام هشدار از سرور. هشدارها باعث خاتمه جاریسازی نمیشوند. |
BidiGenerateMusicSetup
پیام در BidiGenerateMusicClientMessage اول (و فقط در اول) ارسال میشود.
کاربران باید قبلاز ارسال هرگونه پیام اضافی، منتظر پیام BidiGenerateMusicSetupComplete بمانند.
| فیلدها | |
|---|---|
model |
الزامی. نام منبع مدل. این بهعنوان شناسه برای استفاده مدل عمل میکند. قالب: |
BidiGenerateMusicSetupComplete
این نوع فیلدی ندارد.
در پاسخ به پیام BidiGenerateMusicSetup از مشتری ارسال شده است.
WeightedPrompt
پیامواره وزندار بهعنوان ورودی مدل.
| فیلدها | |
|---|---|
weight |
الزامی. وزن پیامواره. از وزن برای کنترل اهمیت نسبی پیامواره استفاده میشود. وزنهای بالاتر مهمتر از وزنهای پایینتر هستند. وزن همه پیاموارههای وزندار در این BidiGenerateMusicClientContent نباید همه ۰ باشد. وزن همه weighted_prompts در این پیام BidiGenerateMusicClientContent عادیسازی خواهد شد. |
فیلد اتحادیه |
|
text |
پیامواره نوشتاری. |
اطلاعات بیشتر درباره انواع
برای اطلاعات بیشتر درباره انواع استفادهشده توسط API، به Python SDK مراجعه کنید.