การสร้างเพลงแบบเรียลไทม์ของ 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
|
|
data |
ไบต์ดิบของเสียง |
mimeType |
ประเภท MIME ของเนื้อหาในกลุ่มเสียง เช่น "audio/wav" |
sourceMetadata |
เอาต์พุตเท่านั้น พรอมต์และการกำหนดค่าที่ใช้ในการสร้างเสียงส่วนนี้ |
SourceMetadata
ข้อมูลเมตาเกี่ยวกับแหล่งที่มาของอินพุตที่ใช้ในการสร้างเสียงส่วนนี้
ช่อง | |
---|---|
clientContent |
พรอมต์ที่มีการถ่วงน้ำหนักสำหรับการสร้างเสียงส่วนนี้ |
musicGenerationConfig |
การกำหนดค่าการสร้างเพลงสำหรับการสร้างเสียงส่วนนี้ |
BidiGenerateMusicClientContent
ผู้ใช้ต้องป้อนข้อมูลเพื่อเริ่มหรือควบคุมเพลง
ช่อง | |
---|---|
weightedPrompts[] |
ต้องระบุ พรอมต์ที่มีการให้น้ำหนักเป็นอินพุตของโมเดล |
BidiGenerateMusicClientMessage
ข้อความที่ไคลเอ็นต์ส่งในการเรียก BidiGenerateMusic
ช่อง | |
---|---|
ฟิลด์ Union
|
|
setup |
ไม่บังคับ การกำหนดค่าเซสชันจะส่งในข้อความไคลเอ็นต์แรกเท่านั้น |
clientContent |
ไม่บังคับ พรอมต์ที่มีการถ่วงน้ำหนักและการกำหนดค่าการสร้างเพลงเป็นอินพุตของการสร้างเพลง |
musicGenerationConfig |
ไม่บังคับ การกำหนดค่าสำหรับการสร้างเพลง |
playbackControl |
ไม่บังคับ สัญญาณควบคุมการเล่นสำหรับการสร้างเพลง |
BidiGenerateMusicFilteredPrompt
พรอมต์ที่กรองแล้วพร้อมเหตุผล
ช่อง | |
---|---|
filteredReason |
เอาต์พุตเท่านั้น เหตุผลที่ระบบกรองพรอมต์ |
ฟิลด์ Union prompt พรอมต์ที่ถูกกรอง prompt อาจเป็นค่าใดค่าหนึ่งต่อไปนี้เท่านั้น
|
|
text |
ไม่บังคับ พรอมต์ข้อความ |
BidiGenerateMusicGenerationConfig
การกำหนดค่าสำหรับการสร้างเพลง
ช่อง | |
---|---|
temperature |
ไม่บังคับ ควบคุมความแปรปรวนในการสร้างเสียง ค่าที่สูงขึ้นจะทำให้เกิดความแปรปรวนที่สูงขึ้น ช่วงคือ [0.0, 3.0] ค่าเริ่มต้นคือ 1.1 |
topK |
ไม่บังคับ ควบคุมวิธีที่โมเดลเลือกโทเค็นสำหรับเอาต์พุต สุ่มตัวอย่างโทเค็นยอดนิยม K ที่มีความน่าจะเป็นสูงสุด ช่วงคือ [1, 1000] ค่าเริ่มต้นคือ 40 |
seed |
ไม่บังคับ สร้างเสียงจาก 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 |
ไม่บังคับ โหมดการสร้างเพลง ค่าเริ่มต้นคือคุณภาพ |
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[] |
เอาต์พุตเท่านั้น กลุ่มเสียงที่โมเดลสร้างขึ้น |
BidiGenerateMusicServerMessage
ข้อความตอบกลับสำหรับการเรียก BidiGenerateMusic
ช่อง | |
---|---|
ฟิลด์ Union messageType ประเภทของข้อความ
messageType ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้เท่านั้น
|
|
setupComplete |
เอาต์พุตเท่านั้น ส่งเพื่อตอบกลับข้อความ |
serverContent |
เอาต์พุตเท่านั้น เนื้อหาที่โมเดลสร้างขึ้นเพื่อตอบกลับข้อความของไคลเอ็นต์ |
filteredPrompt |
เอาต์พุตเท่านั้น พรอมต์ที่กรองแล้วพร้อมเหตุผล |
warning |
เอาต์พุตเท่านั้น ข้อความเตือนจากเซิร์ฟเวอร์ คำเตือนจะไม่สิ้นสุดสตรีม |
BidiGenerateMusicSetup
ข้อความที่จะส่งในBidiGenerateMusicClientMessage
แรก (และในBidiGenerateMusicClientMessage
แรกเท่านั้น)
ไคลเอ็นต์ควรรอข้อความ BidiGenerateMusicSetupComplete
ก่อนส่ง
ข้อความเพิ่มเติม
ช่อง | |
---|---|
model |
ต้องระบุ ชื่อทรัพยากรของโมเดล ซึ่งจะใช้เป็นรหัสเพื่อให้โมเดลใช้ รูปแบบ: |
BidiGenerateMusicSetupComplete
ประเภทนี้ไม่มีฟิลด์
ส่งเพื่อตอบกลับข้อความ BidiGenerateMusicSetup
จากไคลเอ็นต์
WeightedPrompt
พรอมต์ที่มีการให้น้ำหนักเป็นอินพุตของโมเดล
ช่อง | |
---|---|
weight |
ต้องระบุ น้ำหนักของพรอมต์ โดยจะใช้น้ำหนักเพื่อควบคุมความสำคัญของพรอมต์ น้ำหนักที่สูงกว่า มีความสำคัญมากกว่าน้ำหนักที่ต่ำกว่า น้ำหนักของ weighted_prompts ทั้งหมดใน BidiGenerateMusicClientContent นี้ต้องไม่เป็น 0 ทั้งหมด ระบบจะปรับค่าถ่วงน้ำหนักของ weighted_prompts ทั้งหมดในข้อความ BidiGenerateMusicClientContent นี้ให้เป็นค่าปกติ |
ฟิลด์ Union
|
|
text |
พรอมต์ข้อความ |
ข้อมูลเพิ่มเติมเกี่ยวกับประเภท
ดูข้อมูลเพิ่มเติมเกี่ยวกับประเภทที่ API ใช้ได้ที่ Python SDK