יצירת מוזיקה בזמן אמת באמצעות Lyria מתבצעת באמצעות חיבור סטרימינג קבוע, דו-כיווני ועם זמן אחזור קצר באמצעות WebSockets. בקטע הזה מפורטים פרטים נוספים על WebSockets API.
סשנים
חיבור WebSocket יוצר סשן כדי לשמור על תקשורת בזמן אמת עם המודל. אחרי שהלקוח יוזם חיבור חדש, הסשן יכול להחליף הודעות עם השרת כדי:
- לשלוח הנחיות ולשלוט ביצירת המוזיקה.
- לשלוח רכיבי UI להפעלת מוזיקה.
- מקבלים קטעי אודיו.
חיבור WebSocket
כדי להתחיל סשן, מתחברים לנקודת הקצה הזו של WebSocket:
wss://generativelanguage.googleapis.com/ws/google.ai.generativelanguage.v1beta.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 |
אופציונלי. יצירת אודיו ב-Seeds. אם לא מגדירים את הפרמטר, הבקשה משתמשת בערך ראשוני שנוצר באופן אקראי. |
guidance |
אופציונלי. ההגדרה הזו קובעת עד כמה המודל יפעל לפי ההנחיות. הדרכה מפורטת יותר תגרום ל-AI לעקוב אחרי ההנחיה בצורה מדויקת יותר, אבל המעברים יהיו פתאומיים יותר. הטווח הוא [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_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 |
סי מז'ור או לה במול מינור |
BidiGenerateMusicPlaybackControl
רכיבי UI להפעלת המוזיקה שנוצרה.
| טיפוסים בני מנייה (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.