تستخدم ميزة "إنشاء الموسيقى في الوقت الفعلي" من 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 |
السلم الموسيقي دو الكبير أو لا الصغير |
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 |
مفتاح E كبير أو D صغير مسطّح |
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 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.