تولید موسیقی 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
نمایش یک قطعه صوتی.
فیلدها | |
---|---|
| |
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] است. پیش فرض 1.1 است. |
topK | اختیاری. نحوه انتخاب مدل نشانه ها برای خروجی را کنترل می کند. توکن های topK را با بیشترین احتمال نمونه برداری می کند. محدوده [1, 1000] است. پیش فرض 40 است. |
seed | اختیاری. تولید صوتی دانه ها. اگر تنظیم نشود، درخواست از یک دانه تولید شده به طور تصادفی استفاده می کند. |
guidance | اختیاری. کنترل می کند که مدل چقدر از دستورات پیروی می کند. راهنمایی بالاتر با دقت بیشتری دنبال می شود، اما انتقال را ناگهانی تر می کند. محدوده [0.0، 6.0] است. پیش فرض 4.0 است. |
bpm | اختیاری. ضربان در دقیقه محدوده [60، 200] است. |
density | اختیاری. تراکم صداها محدوده [0.0، 1.0] است. |
brightness | اختیاری. ارزش بالاتر صدای روشن تری تولید می کند. محدوده [0.0، 1.0] است. |
scale | اختیاری. مقیاس موسیقی تولید شده |
muteBass | اختیاری. خروجی صدا نباید حاوی باس باشد. |
muteDrums | اختیاری. خروجی صدا نباید حاوی درام باشد. |
onlyBassAndDrums | اختیاری. خروجی صدا فقط باید شامل باس و درام باشد. |
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[] | فقط خروجی تکه های صوتی که مدل تولید کرده است. |
BidiGenerateMusicServerMessage
پیام پاسخ برای تماس BidiGenerateMusic.
فیلدها | |
---|---|
messageType فیلد اتحادیه نوع پیام. messageType می تواند تنها یکی از موارد زیر باشد: | |
setupComplete | فقط خروجی در پاسخ به یک پیام |
serverContent | فقط خروجی محتوای تولید شده توسط مدل در پاسخ به پیام های مشتری. |
filteredPrompt | فقط خروجی درخواست با دلیل فیلتر شده است. |
warning | فقط خروجی پیام هشدار از طرف سرور اخطارها جریان را خاتمه نمی دهند. |
BidiGenerateMusicSetup
پیامی که باید در اولین (و فقط در اولین) ارسال شود BidiGenerateMusicClientMessage
.
مشتریان باید قبل از ارسال هرگونه پیام اضافی منتظر یک پیام BidiGenerateMusicSetupComplete
باشند.
فیلدها | |
---|---|
model | مورد نیاز. نام منبع مدل این به عنوان شناسه ای برای استفاده از مدل عمل می کند. قالب: |
BidiGenerateMusicSetupComplete
این نوع هیچ فیلدی ندارد.
در پاسخ به یک پیام BidiGenerateMusicSetup
از مشتری ارسال شد.
WeightedPrompt
اعلان وزن شده به عنوان ورودی مدل.
فیلدها | |
---|---|
weight | مورد نیاز. وزن اعلان. وزن برای کنترل اهمیت نسبی اعلان استفاده می شود. وزن های بالاتر مهم تر از وزن های پایین تر است. وزن همه وزنهای وزنی در این BidiGenerateMusicClientClientContent نباید همه 0 باشد. وزنهای همه وزندهیها در این پیام BidiGenerateMusicClientClientContent عادی میشود. |
| |
text | پیام متنی |
اطلاعات بیشتر در مورد انواع
برای اطلاعات بیشتر در مورد انواع استفاده شده توسط API، Python SDK را ببینید.