Live Music API - WebSockets API reference

การสร้างเพลงแบบเรียลไทม์ของ Lyria ใช้การเชื่อมต่อสตรีมมิงแบบ 2 ทิศทางที่มีเวลาในการตอบสนองต่ำอย่างต่อเนื่องโดยใช้ 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 สัญญาณควบคุมการเล่นสำหรับการสร้างโมเดล

รับข้อความ

หากต้องการรับข้อความจากเซิร์ฟเวอร์ ให้รอรับเหตุการณ์ "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 เพียง 1 รายการ (messageType สหภาพไม่ได้แสดงใน JSON ดังนั้นฟิลด์จะปรากฏที่ ระดับบนสุดของข้อความ)

ข้อความและกิจกรรม

AudioChunk

การแสดงข้อมูลของเสียง

ช่อง

ฟิลด์ Union content

content ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้เท่านั้น

data

bytes

ไบต์ดิบของเสียง

mimeType

string

ประเภท MIME ของเนื้อหาในกลุ่มเสียง เช่น "audio/wav"

sourceMetadata

SourceMetadata

เอาต์พุตเท่านั้น พรอมต์และการกำหนดค่าที่ใช้ในการสร้างเสียงส่วนนี้

SourceMetadata

ข้อมูลเมตาเกี่ยวกับแหล่งที่มาของอินพุตที่ใช้ในการสร้างเสียงส่วนนี้

ช่อง
clientContent

BidiGenerateMusicClientContent

พรอมต์ที่มีการถ่วงน้ำหนักสำหรับการสร้างเสียงส่วนนี้

musicGenerationConfig

BidiGenerateMusicGenerationConfig

การกำหนดค่าการสร้างเพลงสำหรับการสร้างเสียงส่วนนี้

BidiGenerateMusicClientContent

ผู้ใช้ต้องป้อนข้อมูลเพื่อเริ่มหรือควบคุมเพลง

ช่อง
weightedPrompts[]

WeightedPrompt

ต้องระบุ พรอมต์ที่มีการให้น้ำหนักเป็นอินพุตของโมเดล

BidiGenerateMusicClientMessage

ข้อความที่ไคลเอ็นต์ส่งในการเรียก BidiGenerateMusic

ช่อง

ฟิลด์ Union messageType

messageType ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้เท่านั้น

setup

BidiGenerateMusicSetup

ไม่บังคับ การกำหนดค่าเซสชันจะส่งในข้อความไคลเอ็นต์แรกเท่านั้น

clientContent

BidiGenerateMusicClientContent

ไม่บังคับ พรอมต์ที่มีการถ่วงน้ำหนักและการกำหนดค่าการสร้างเพลงเป็นอินพุตของการสร้างเพลง

musicGenerationConfig

BidiGenerateMusicGenerationConfig

ไม่บังคับ การกำหนดค่าสำหรับการสร้างเพลง

playbackControl

BidiGenerateMusicPlaybackControl

ไม่บังคับ สัญญาณควบคุมการเล่นสำหรับการสร้างเพลง

BidiGenerateMusicFilteredPrompt

พรอมต์ที่กรองแล้วพร้อมเหตุผล

ช่อง
filteredReason

string

เอาต์พุตเท่านั้น เหตุผลที่ระบบกรองพรอมต์

ฟิลด์ Union prompt พรอมต์ที่ถูกกรอง prompt อาจเป็นค่าใดค่าหนึ่งต่อไปนี้เท่านั้น
text

string

ไม่บังคับ พรอมต์ข้อความ

BidiGenerateMusicGenerationConfig

การกำหนดค่าสำหรับการสร้างเพลง

ช่อง
temperature

float

ไม่บังคับ ควบคุมความแปรปรวนในการสร้างเสียง

ค่าที่สูงขึ้นจะทำให้เกิดความแปรปรวนที่สูงขึ้น ช่วงคือ [0.0, 3.0] ค่าเริ่มต้นคือ 1.1

topK

int32

ไม่บังคับ ควบคุมวิธีที่โมเดลเลือกโทเค็นสำหรับเอาต์พุต

สุ่มตัวอย่างโทเค็นยอดนิยม K ที่มีความน่าจะเป็นสูงสุด ช่วงคือ [1, 1000] ค่าเริ่มต้นคือ 40

seed

int32

ไม่บังคับ สร้างเสียงจาก Seed หากไม่ได้ตั้งค่า คำขอจะใช้ Seed ที่สร้างขึ้นแบบสุ่ม

guidance

float

ไม่บังคับ ควบคุมว่าโมเดลจะทำตามพรอมต์อย่างใกล้ชิดเพียงใด การแนะนำอย่างละเอียดจะช่วยให้การทำงานดียิ่งขึ้น แต่จะทำให้การเปลี่ยนผ่านดูไม่ราบรื่น ช่วงคือ [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

ไม่บังคับ โหมดการสร้างเพลง ค่าเริ่มต้นคือคุณภาพ

MusicGenerationMode

Enum
MUSIC_GENERATION_MODE_UNSPECIFIED ค่านี้ไม่ได้ใช้
QUALITY โหมดนี้จะนำพรอมต์ข้อความไปยังภูมิภาคของพื้นที่แฝงที่มีเพลงคุณภาพสูงกว่า
DIVERSITY โหมดนี้จะนำพรอมต์ข้อความไปยังภูมิภาคของพื้นที่แฝงที่มีความหลากหลายของ เพลงมากขึ้น
VOCALIZATION โหมดนี้จะนำพรอมต์ข้อความไปยังภูมิภาคของพื้นที่แฝงที่มีแนวโน้มที่จะสร้างเพลงที่มีเสียงร้องมากกว่า

ปรับขนาด

สเกลของเพลงที่สร้างขึ้น

Enum
SCALE_UNSPECIFIED ค่าเริ่มต้น ค่านี้ไม่ได้ใช้
C_MAJOR_A_MINOR คีย์ C เมเจอร์หรือ A ไมเนอร์
D_FLAT_MAJOR_B_FLAT_MINOR คีย์ D แฟลตเมเจอร์หรือ B แฟลตไมเนอร์
D_MAJOR_B_MINOR คีย์ D เมเจอร์หรือ B ไมเนอร์
E_FLAT_MAJOR_C_MINOR E แฟลตเมเจอร์หรือ C ไมเนอร์
E_MAJOR_D_FLAT_MINOR E major หรือ D flat minor
F_MAJOR_D_MINOR คีย์ F เมเจอร์หรือ D ไมเนอร์
G_FLAT_MAJOR_E_FLAT_MINOR คีย์จีแฟลตเมเจอร์หรืออีแฟลตไมเนอร์
G_MAJOR_E_MINOR คีย์ G เมเจอร์หรือ E ไมเนอร์
A_FLAT_MAJOR_F_MINOR คีย์แฟลตหรือคีย์เอฟไมเนอร์
A_MAJOR_G_FLAT_MINOR คีย์ A เมเจอร์หรือ G แฟลตไมเนอร์
B_FLAT_MAJOR_G_MINOR บีแฟลตเมเจอร์หรือจีไมเนอร์
B_MAJOR_A_FLAT_MINOR บีเมเจอร์หรือเอแฟลตไมเนอร์

BidiGenerateMusicPlaybackControl

การควบคุมการเล่นสำหรับการสร้างเพลง

Enum
PLAYBACK_CONTROL_UNSPECIFIED ค่านี้ไม่ได้ใช้
PLAY เริ่มสร้างเพลง
PAUSE พักการสร้างเพลง ใช้ PLAY เพื่อเล่นต่อจากตำแหน่งปัจจุบัน
STOP หยุดการสร้างเพลงและรีเซ็ตบริบท (เก็บพรอมต์ไว้) ใช้ PLAY เพื่อเริ่ม การสร้างเพลงใหม่
RESET_CONTEXT รีเซ็ตบริบท (เก็บพรอมต์ไว้) โดยไม่หยุดการสร้างเพลง

BidiGenerateMusicServerContent

การอัปเดตเซิร์ฟเวอร์ที่เพิ่มขึ้นซึ่งโมเดลสร้างขึ้นเพื่อตอบกลับข้อความของไคลเอ็นต์

ระบบจะสร้างเนื้อหาให้เร็วที่สุดเท่าที่จะทำได้ แต่จะไม่สร้างแบบเรียลไทม์ ลูกค้าอาจเลือก บัฟเฟอร์และเล่นแบบเรียลไทม์

ช่อง
audioChunks[]

AudioChunk

เอาต์พุตเท่านั้น กลุ่มเสียงที่โมเดลสร้างขึ้น

BidiGenerateMusicServerMessage

ข้อความตอบกลับสำหรับการเรียก BidiGenerateMusic

ช่อง
ฟิลด์ Union messageType ประเภทของข้อความ messageType ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้เท่านั้น
setupComplete

BidiGenerateMusicSetupComplete

เอาต์พุตเท่านั้น ส่งเพื่อตอบกลับข้อความ BidiGenerateMusicSetup จาก ไคลเอ็นต์เมื่อการตั้งค่าเสร็จสมบูรณ์

serverContent

BidiGenerateMusicServerContent

เอาต์พุตเท่านั้น เนื้อหาที่โมเดลสร้างขึ้นเพื่อตอบกลับข้อความของไคลเอ็นต์

filteredPrompt

BidiGenerateMusicFilteredPrompt

เอาต์พุตเท่านั้น พรอมต์ที่กรองแล้วพร้อมเหตุผล

warning

string

เอาต์พุตเท่านั้น ข้อความเตือนจากเซิร์ฟเวอร์ คำเตือนจะไม่สิ้นสุดสตรีม

BidiGenerateMusicSetup

ข้อความที่จะส่งในBidiGenerateMusicClientMessageแรก (และในBidiGenerateMusicClientMessageแรกเท่านั้น)

ไคลเอ็นต์ควรรอข้อความ BidiGenerateMusicSetupComplete ก่อนส่ง ข้อความเพิ่มเติม

ช่อง
model

string

ต้องระบุ ชื่อทรัพยากรของโมเดล ซึ่งจะใช้เป็นรหัสเพื่อให้โมเดลใช้

รูปแบบ: models/{model}

BidiGenerateMusicSetupComplete

ประเภทนี้ไม่มีฟิลด์

ส่งเพื่อตอบกลับข้อความ BidiGenerateMusicSetup จากไคลเอ็นต์

WeightedPrompt

พรอมต์ที่มีการให้น้ำหนักเป็นอินพุตของโมเดล

ช่อง
weight

float

ต้องระบุ น้ำหนักของพรอมต์

โดยจะใช้น้ำหนักเพื่อควบคุมความสำคัญของพรอมต์ น้ำหนักที่สูงกว่า มีความสำคัญมากกว่าน้ำหนักที่ต่ำกว่า

น้ำหนักของ weighted_prompts ทั้งหมดใน BidiGenerateMusicClientContent นี้ต้องไม่เป็น 0 ทั้งหมด ระบบจะปรับค่าถ่วงน้ำหนักของ weighted_prompts ทั้งหมดในข้อความ BidiGenerateMusicClientContent นี้ให้เป็นค่าปกติ

ฟิลด์ Union prompt

prompt ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้เท่านั้น

text

string

พรอมต์ข้อความ

ข้อมูลเพิ่มเติมเกี่ยวกับประเภท

ดูข้อมูลเพิ่มเติมเกี่ยวกับประเภทที่ API ใช้ได้ที่ Python SDK