تستخدم ميزة "إنشاء الموسيقى في الوقت الفعلي" من Lyria اتصالاً دائمًا وثنائي الاتجاه وبمعدّل تأخير منخفض للبث المباشر باستخدام WebSockets. في هذا القسم، ستجد تفاصيل إضافية حول WebSockets API.
الجلسات
يُنشئ اتصال WebSocket جلسة للحفاظ على التواصل في الوقت الفعلي مع النموذج. بعد أن يبدأ العميل عملية ربط جديدة، يمكن للجلسة تبادل الرسائل مع الخادم لتنفيذ ما يلي:
- إرسال طلبات وعناصر تحكّم لتوجيه عملية إنشاء الموسيقى
- إرسال عناصر التحكّم في تشغيل الموسيقى
- تلقّي أجزاء من الصوت
اتصال WebSocket
لبدء جلسة، اتّصِل بنقطة نهاية websocket هذه:
wss://generativelanguage.googleapis.com/ws/google.ai.generativelanguage.v1alpha.GenerativeService.BidiGenerateMusic
إعدادات الجلسة
تحدّد الرسالة الأولية بعد الاتصال النموذج الذي سيتم استخدامه خلال الجلسة.
اطّلِع على مثال الإعداد التالي. يُرجى العِلم أنّ طريقة كتابة الاسم قد تختلف في حِزم SDK. يمكنك البحث عن خيارات إعداد حزمة تطوير البرامج (SDK) في Python هنا.
{
"model": string
}
إرسال الرسائل
لتبادل الرسائل عبر اتصال WebSocket، يجب أن يرسل العميل عنصر JSON عبر اتصال WebSocket مفتوح. يجب أن يحتوي عنصر JSON على حقل واحد فقط من مجموعة العناصر التالية:
{
"setup": BidiGenerateMusicSetup,
"client_content": BidiGenerateMusicClientContent,
"music_generation_config": BidiGenerateMusicGenerationConfig,
"playback_control": BidiGenerateMusicPlaybackControl
}
رسائل العميل المتوافقة
اطّلِع على رسائل العميل المتوافقة في الجدول التالي:
الرسالة | الوصف |
---|---|
BidiGenerateMusicSetup
|
إعدادات الجلسة التي سيتم إرسالها فقط في الرسالة الأولى |
BidiGenerateMusicClientContent |
طلبات مرجّحة كمدخلات للنموذج |
BidiGenerateMusicGenerationConfig |
إعدادات إنشاء الموسيقى |
BidiGenerateMusicPlaybackControl
|
إشارات التحكّم في التشغيل لإنشاء النماذج |
تلقي الرسائل
لتلقّي رسائل من الخادم، استمع إلى حدث WebSocket "message"، ثم حلِّل النتيجة وفقًا لتعريف رسائل الخادم المتوافقة.
يُرجى الاطّلاع على ما يلي:
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 |
اختيارية: تتحكّم هذه السمة في كيفية اختيار النموذج للرموز المميزة في الإخراج. يأخذ عيّنات من أعلى K من الرموز المميزة ذات الاحتمالات الأعلى. النطاق هو [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
عمليات التعداد | |
---|---|
MUSIC_GENERATION_MODE_UNSPECIFIED |
هذه القيمة غير مستخدَمة. |
QUALITY |
يوجّه هذا الوضع طلبات النص إلى مناطق في المساحة الكامنة تتضمّن موسيقى بجودة أعلى. |
DIVERSITY |
يوجّه هذا الوضع طلبات النص إلى مناطق في المساحة الكامنة تتضمّن تنوّعًا أكبر في الموسيقى. |
VOCALIZATION |
يوجه هذا الوضع طلبات النص إلى مناطق في المساحة الكامنة من المرجّح أن تنشئ موسيقى صوتية. |
التطور
مقياس الموسيقى التي تم إنشاؤها
عمليات التعداد | |
---|---|
SCALE_UNSPECIFIED |
القيمة التلقائية هذه القيمة غير مستخدَمة. |
C_MAJOR_A_MINOR |
C major or A minor |
D_FLAT_MAJOR_B_FLAT_MINOR |
D flat major or B flat minor |
D_MAJOR_B_MINOR |
D major or B minor |
E_FLAT_MAJOR_C_MINOR |
مي بيمول كبير أو دو صغير |
E_MAJOR_D_FLAT_MINOR |
مقام "مي" الكبير أو مقام "ري بيمول" الصغير |
F_MAJOR_D_MINOR |
مفتاح F الكبير أو مفتاح D الصغير |
G_FLAT_MAJOR_E_FLAT_MINOR |
G flat major or E flat minor |
G_MAJOR_E_MINOR |
السلم الموسيقي G الكبير أو السلم الموسيقي E الصغير |
A_FLAT_MAJOR_F_MINOR |
مفتاح مسطّح رئيسي أو مفتاح F ثانوي |
A_MAJOR_G_FLAT_MINOR |
مقام كبير أو مقام صغير ذو علامة خفض |
B_FLAT_MAJOR_G_MINOR |
B flat major or G minor |
B_MAJOR_A_FLAT_MINOR |
B major or A flat minor |
BidiGenerateMusicPlaybackControl
عناصر التحكّم في تشغيل الموسيقى التي تم إنشاؤها
عمليات التعداد | |
---|---|
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 |
مطلوب. وزن الطلب يتم استخدام عامل الترجيح للتحكّم في الأهمية النسبية للطلب. تكون الأوزان الأعلى أكثر أهمية من الأوزان الأقل. يجب ألا تكون أوزان جميع weighted_prompts في BidiGenerateMusicClientContent كلها 0. سيتم تعديل أوزان جميع طلبات weighted_prompts في رسالة BidiGenerateMusicClientContent هذه. |
حقل الدمج يمكن أن تكون |
|
text |
طلب نصي |
مزيد من المعلومات حول الأنواع
للحصول على مزيد من المعلومات حول الأنواع التي تستخدمها واجهة برمجة التطبيقات، راجِع حزمة تطوير البرامج (SDK) للغة Python.