הפקת מוזיקה בזמן אמת באמצעות Lyria מתבססת על חיבור סטרימינג מתמשך ודו-כיווני עם השהיה נמוכה באמצעות WebSockets. בקטע הזה מופיעים פרטים נוספים על WebSockets API.
ביקורים
חיבור WebSocket יוצר סשן כדי לשמור על תקשורת בזמן אמת עם המודל. אחרי שהלקוח יוזם חיבור חדש, הסשן יכול להחליף הודעות עם השרת כדי:
- לשלוח הנחיות ופקדים כדי לכוון את יצירת המוזיקה.
- שליחת פקדים להפעלת מוזיקה.
- קבלת נתחי אודיו.
חיבור 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
|
אותות של רכיבי UI להפעלה ליצירת מודלים |
קבלת הודעות
כדי לקבל הודעות מהשרת, צריך להאזין לאירוע 'message' של 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 |
אופציונלי. יוצר אודיו. אם לא מגדירים את הפרמטר הזה, הבקשה משתמשת בערך 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
טיפוסים בני מנייה (enum) | |
---|---|
MUSIC_GENERATION_MODE_UNSPECIFIED |
הערך הזה לא בשימוש. |
QUALITY |
במצב הזה, הנחיות טקסט מופנות לאזורים במרחב הסמוי שבהם המוזיקה באיכות גבוהה יותר. |
DIVERSITY |
במצב הזה, הנחיות טקסט מופנות לאזורים של מרחב חבוי עם מגוון רחב יותר של מוזיקה. |
VOCALIZATION |
במצב הזה, הנחיות טקסט מופנות לאזורים במרחב הסמוי שסביר יותר שיניבו מוזיקה עם שירה. |
קנה מידה
הסולם של המוזיקה שנוצרה.
טיפוסים בני מנייה (enum) | |
---|---|
SCALE_UNSPECIFIED |
ערך ברירת המחדל. הערך הזה לא בשימוש. |
C_MAJOR_A_MINOR |
דו מז'ור או לה מינור |
D_FLAT_MAJOR_B_FLAT_MINOR |
D flat major או 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 |
פה מז'ור או רה מינור |
G_FLAT_MAJOR_E_FLAT_MINOR |
סול במול מז'ור או מי במול מינור |
G_MAJOR_E_MINOR |
סול מז'ור או מינור |
A_FLAT_MAJOR_F_MINOR |
להיות ב-F מז'ור או ב-F מינור |
A_MAJOR_G_FLAT_MINOR |
A major או G flat minor |
B_FLAT_MAJOR_G_MINOR |
B flat major או G minor |
B_MAJOR_A_FLAT_MINOR |
B major או A flat minor |
BidiGenerateMusicPlaybackControl
פקדי הפעלה ליצירת מוזיקה.
טיפוסים בני מנייה (enum) | |
---|---|
PLAYBACK_CONTROL_UNSPECIFIED |
הערך הזה לא בשימוש. |
PLAY |
מתחילים ליצור את המוזיקה. |
PAUSE |
תשהה את יצירת המוזיקה. משתמשים בלחצן ההפעלה כדי להמשיך מהמיקום הנוכחי. |
STOP |
הפסקת יצירת המוזיקה ואיפוס ההקשר (ההנחיות נשמרות). משתמשים בלחצן ההפעלה כדי להפעיל מחדש את יצירת המוזיקה. |
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 |
הנחיית טקסט. |
מידע נוסף על סוגים
מידע נוסף על הסוגים שבהם נעשה שימוש ב-API מופיע בPython SDK.