Live Music API - WebSockets API reference

Lyria RealTime में संगीत जनरेट करने के लिए, लगातार काम करने वाले, दोनों दिशाओं में डेटा ट्रांसफ़र करने वाले, और कम समय में डेटा ट्रांसफ़र करने वाले स्ट्रीमिंग कनेक्शन का इस्तेमाल किया जाता है. इसके लिए, WebSockets का इस्तेमाल किया जाता है. इस सेक्शन में, आपको WebSockets API के बारे में ज़्यादा जानकारी मिलेगी.

सेशन

WebSocket कनेक्शन, मॉडल के साथ रीयल-टाइम में बातचीत करने के लिए एक सेशन बनाता है. क्लाइंट के नया कनेक्शन शुरू करने के बाद, सेशन सर्वर के साथ मैसेज शेयर कर सकता है. ऐसा इन कामों के लिए किया जा सकता है:

  • संगीत जनरेट करने के लिए, प्रॉम्प्ट और कंट्रोल भेजना.
  • संगीत प्लेबैक कंट्रोल भेजें.
  • ऑडियो के छोटे-छोटे हिस्से पाएं.

WebSocket कनेक्शन

सेशन शुरू करने के लिए, इस वेबसॉकेट एंडपॉइंट से कनेक्ट करें:

wss://generativelanguage.googleapis.com/ws/google.ai.generativelanguage.v1alpha.GenerativeService.BidiGenerateMusic

सेशन कॉन्फ़िगरेशन

कनेक्ट होने के बाद भेजे गए शुरुआती मैसेज से, सेशन के दौरान इस्तेमाल किए जाने वाले मॉडल को सेट किया जाता है.

कॉन्फ़िगरेशन का यह उदाहरण देखें. ध्यान दें कि एसडीके में नाम के केसिंग में अंतर हो सकता है. Python SDK टूल के कॉन्फ़िगरेशन के विकल्पों के बारे में यहां जानें.


{
  "model": string
}

मैसेज भेजें

WebSocket कनेक्शन पर मैसेज भेजने के लिए, क्लाइंट को खुले हुए WebSocket कनेक्शन पर JSON ऑब्जेक्ट भेजना होगा. JSON ऑब्जेक्ट में, यहां दिए गए ऑब्जेक्ट सेट में से सिर्फ़ एक फ़ील्ड होना चाहिए:


{
  "setup": BidiGenerateMusicSetup,
  "client_content": BidiGenerateMusicClientContent,
  "music_generation_config": BidiGenerateMusicGenerationConfig,
  "playback_control": BidiGenerateMusicPlaybackControl
}

इस्तेमाल किए जा सकने वाले क्लाइंट मैसेज

नीचे दी गई टेबल में, क्लाइंट के मैसेज देखने की सुविधा के बारे में बताया गया है:

मैसेज ब्यौरा
BidiGenerateMusicSetup सेशन कॉन्फ़िगरेशन, सिर्फ़ पहले मैसेज में भेजा जाना चाहिए
BidiGenerateMusicClientContent मॉडल के इनपुट के तौर पर, वज़न के हिसाब से प्रॉम्प्ट
BidiGenerateMusicGenerationConfig संगीत जनरेट करने के लिए कॉन्फ़िगरेशन
BidiGenerateMusicPlaybackControl मॉडल जनरेशन के लिए प्लेबैक कंट्रोल सिग्नल

मैसेज पाना

सर्वर से मैसेज पाने के लिए, WebSocket 'message' इवेंट को सुनें. इसके बाद, सर्वर से मिले मैसेज की परिभाषा के मुताबिक नतीजे को पार्स करें.

यहां दिया गया उदाहरण देखें:

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

ऑडियो के हिस्से के कॉन्टेंट का एमआईएमई टाइप, जैसे कि "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

ज़रूरी नहीं. सीड के तौर पर दिए गए ऑडियो से मिलता-जुलता ऑडियो जनरेट करना. अगर इसे सेट नहीं किया जाता है, तो अनुरोध में रैंडम तरीके से जनरेट किए गए सीड का इस्तेमाल किया जाता है.

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

ज़रूरी नहीं. संगीत जनरेट करने का मोड. डिफ़ॉल्ट रूप से, QUALITY पर सेट होता है.

MusicGenerationMode

Enums
MUSIC_GENERATION_MODE_UNSPECIFIED इस वैल्यू का इस्तेमाल नहीं किया गया है.
QUALITY यह मोड, टेक्स्ट प्रॉम्प्ट को लेटेंट स्पेस के उन हिस्सों पर ले जाता है जहां अच्छी क्वालिटी का संगीत मौजूद होता है.
DIVERSITY इस मोड में, टेक्स्ट प्रॉम्प्ट को लेटेंट स्पेस के उन हिस्सों में ले जाया जाता है जहां अलग-अलग तरह का संगीत मौजूद होता है.
VOCALIZATION यह मोड, टेक्स्ट प्रॉम्प्ट को लेटेंट स्पेस के उन हिस्सों में ले जाता है जहां वोकल संगीत जनरेट होने की संभावना ज़्यादा होती है.

स्केल

जनरेट किए गए संगीत का स्केल.

Enums
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 फ़्लैट मेजर या F माइनर
A_MAJOR_G_FLAT_MINOR ए मेजर या जी फ़्लैट माइनर
B_FLAT_MAJOR_G_MINOR बी फ़्लैट मेजर या जी माइनर
B_MAJOR_A_FLAT_MINOR बी मेजर या ए फ़्लैट माइनर

BidiGenerateMusicPlaybackControl

संगीत जनरेट करने के लिए प्लेबैक कंट्रोल.

Enums
PLAYBACK_CONTROL_UNSPECIFIED इस वैल्यू का इस्तेमाल नहीं किया गया है.
PLAY संगीत जनरेट करना शुरू करें.
PAUSE संगीत जनरेट करने की प्रोसेस को रोकें. मौजूदा जगह से फिर से शुरू करने के लिए, PLAY का इस्तेमाल करें.
STOP संगीत जनरेट करने की सुविधा बंद करें और कॉन्टेक्स्ट रीसेट करें (प्रॉम्प्ट सेव रहेंगे). संगीत जनरेट करने की प्रोसेस को फिर से शुरू करने के लिए, PLAY का इस्तेमाल करें.
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

ज़रूरी है. प्रॉम्प्ट का वेटेज.

वज़न का इस्तेमाल, प्रॉम्प्ट की अहमियत को कंट्रोल करने के लिए किया जाता है. ज़्यादा वेटेज, कम वेटेज से ज़्यादा अहम होते हैं.

इस BidiGenerateMusicClientContent में मौजूद सभी weighted_prompts की वैल्यू 0 नहीं होनी चाहिए. इस BidiGenerateMusicClientContent मैसेज में मौजूद सभी weighted_prompts की वैल्यू को सामान्य किया जाएगा.

यूनियन फ़ील्ड prompt.

prompt इनमें से सिर्फ़ एक हो सकता है:

text

string

टेक्स्ट प्रॉम्प्ट.

टाइप के बारे में ज़्यादा जानकारी

एपीआई के इस्तेमाल किए गए टाइप के बारे में ज़्यादा जानने के लिए, Python SDK देखें.