تستخدم ميزة "إنشاء الموسيقى في الوقت الفعلي" من 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 |
اختياريّ. تتحكّم هذه السمة في كيفية اختيار النموذج للرموز المميزة في الناتج. يأخذ عيّنات من الرموز المميزة 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
| عمليات التعداد | |
|---|---|
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 flat major or 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 |
مفتاح فا الكبير أو فا الصغير |
A_MAJOR_G_FLAT_MINOR |
مقام كبير أو مقام صغير ذو خمس علامات خفض |
B_FLAT_MAJOR_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.