יצירת מוזיקה בזמן אמת ב-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 |
להשתמש ב-A♭ major או ב-F minor |
A_MAJOR_G_FLAT_MINOR |
סול מז'ור או סול במול מינור |
B_FLAT_MAJOR_G_MINOR |
B flat major או G minor |
B_MAJOR_A_FLAT_MINOR |
סי מז'ור או לה במול מינור |
BidiGenerateMusicPlaybackControl
רכיבי UI להפעלת המוזיקה שנוצרה.
| טיפוסים בני מנייה (enum) | |
|---|---|
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 |
הנחיית טקסט. |
מידע נוסף על סוגים
מידע נוסף על הסוגים שבהם נעשה שימוש ב-API מופיע ב-Python SDK.