Live Music API - WebSockets API reference

יצירת מוזיקה בזמן אמת באמצעות 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

ייצוג של קטע אודיו.

שדות

שדה של איחוד content.

הערך content יכול להיות רק אחד מהבאים:

data

bytes

הבייטים הגולמיים של קטע האודיו.

mimeType

string

סוג ה-MIME של התוכן של קטע האודיו, למשל "audio/wav".

sourceMetadata

SourceMetadata

פלט בלבד. ההנחיות וההגדרות ששימשו ליצירת קטע האודיו הזה.

SourceMetadata

מטא-נתונים על מקור הקלט ששימש ליצירת קטע האודיו הזה.

שדות
clientContent

BidiGenerateMusicClientContent

הנחיות משוקללות ליצירת קטע האודיו הזה.

musicGenerationConfig

BidiGenerateMusicGenerationConfig

הגדרות ליצירת קטע האודיו הזה.

BidiGenerateMusicClientContent

קלט מהמשתמש כדי להתחיל או לכוון את המוזיקה.

שדות
weightedPrompts[]

WeightedPrompt

חובה. הנחיות משוקללות כקלט של המודל.

BidiGenerateMusicClientMessage

הודעות שנשלחות על ידי הלקוח בקריאה ל-BidiGenerateMusic.

שדות

שדה של איחוד messageType.

הערך messageType יכול להיות רק אחד מהבאים:

setup

BidiGenerateMusicSetup

אופציונלי. הגדרת הסשן נשלחת בהודעת הלקוח הראשונה, ורק בה.

clientContent

BidiGenerateMusicClientContent

אופציונלי. הנחיות משוקללות והגדרות ליצירת מוזיקה כקלט ליצירת מוזיקה.

musicGenerationConfig

BidiGenerateMusicGenerationConfig

אופציונלי. הגדרות ליצירת מוזיקה.

playbackControl

BidiGenerateMusicPlaybackControl

אופציונלי. אות בקרה להפעלה של יצירת מוזיקה.

BidiGenerateMusicFilteredPrompt

הנחיה מסוננת עם סיבה.

שדות
filteredReason

string

פלט בלבד. הסיבה שההנחיה סוננה.

שדה של איחוד prompt. ההנחיה שסוננה. הערך prompt יכול להיות רק אחד מהבאים:
text

string

אופציונלי. פרומפט טקסטואלי.

BidiGenerateMusicGenerationConfig

הגדרות ליצירת מוזיקה.

שדות
temperature

float

אופציונלי. שולט בשונות ביצירת האודיו.

ערכים גבוהים יותר יוצרים שונות גבוהה יותר. הטווח הוא [0.0, 3.0]. ברירת המחדל היא 1.1.

topK

int32

אופציונלי. קובעת איך המודל בוחר טוקנים לפלט.

דוגם את אסימוני topK עם ההסתברויות הגבוהות ביותר. הטווח הוא [1, 1000]. ברירת המחדל היא 40.

seed

int32

אופציונלי. יצירת אודיו ב-Seeds. אם לא מגדירים את הפרמטר, הבקשה משתמשת בערך ראשוני שנוצר באופן אקראי.

guidance

float

אופציונלי. ההגדרה הזו קובעת עד כמה המודל יפעל לפי ההנחיות. הדרכה מפורטת יותר תגרום ל-AI לעקוב אחרי ההנחיה בצורה מדויקת יותר, אבל המעברים יהיו פתאומיים יותר. הטווח הוא [0.0, 6.0]. ברירת המחדל היא 4.0.

bpm

int32

אופציונלי. פעימות לדקה. הטווח הוא [60, 200].

density

float

אופציונלי. צפיפות הצלילים. הטווח הוא [0.0, 1.0].

brightness

float

אופציונלי. ערך גבוה יותר יוצר אודיו בהיר יותר. הטווח הוא [0.0, 1.0].

scale

Scale

אופציונלי. הסולם של המוזיקה שנוצרה.

muteBass

bool

אופציונלי. פלט האודיו לא צריך לכלול בס.

muteDrums

bool

אופציונלי. פלט האודיו לא צריך לכלול תופים.

onlyBassAndDrums

bool

אופציונלי. פלט האודיו צריך להכיל רק בס ותופים.

musicGenerationMode

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[]

AudioChunk

פלט בלבד. קטעי אודיו שהמודל יצר.

BidiGenerateMusicServerMessage

הודעת תגובה לקריאה ל-BidiGenerateMusic.

שדות
שדה של איחוד messageType. סוג ההודעה. הערך messageType יכול להיות רק אחד מהבאים:
setupComplete

BidiGenerateMusicSetupComplete

פלט בלבד. נשלחת בתגובה להודעת BidiGenerateMusicSetup מהלקוח כשההגדרה הושלמה.

serverContent

BidiGenerateMusicServerContent

פלט בלבד. תוכן שנוצר על ידי המודל בתגובה להודעות של הלקוח.

filteredPrompt

BidiGenerateMusicFilteredPrompt

פלט בלבד. הנחיה מסוננת עם סיבה.

warning

string

פלט בלבד. הודעת האזהרה מהשרת. אזהרות לא יגרמו לסיום השידור.

BidiGenerateMusicSetup

ההודעה תישלח ב-BidiGenerateMusicClientMessage הראשון (ורק בו).

הלקוחות צריכים להמתין להודעת BidiGenerateMusicSetupComplete לפני שהם שולחים הודעות נוספות.

שדות
model

string

חובה. שם המשאב של המודל. השם הזה משמש כמזהה של המודל.

פורמט: models/{model}

BidiGenerateMusicSetupComplete

בסוג הזה אין שדות.

נשלחת בתגובה להודעת BidiGenerateMusicSetup מהלקוח.

WeightedPrompt

הנחיה משוקללת כקלט של המודל.

שדות
weight

float

חובה. משקל ההנחיה.

המשקל משמש לשליטה בחשיבות היחסית של ההנחיה. משקלים גבוהים חשובים יותר ממשקלים נמוכים.

המשקלים של כל ה-weighted_prompts ב-BidiGenerateMusicClientContent הזה לא יכולים להיות כולם 0. המשקלים של כל ה-weighted_prompts בהודעה הזו של BidiGenerateMusicClientContent יעברו נרמול.

שדה של איחוד prompt.

הערך prompt יכול להיות רק אחד מהבאים:

text

string

פרומפט טקסטואלי.

מידע נוסף על סוגים

מידע נוסף על הסוגים שבהם ה-API משתמש זמין ב-Python SDK.