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
ऑडियो के किसी हिस्से का उदाहरण.
फ़ील्ड | |
---|---|
यूनियन फ़ील्ड
|
|
data |
ऑडियो के हिस्से के रॉ बाइट. |
mimeType |
ऑडियो के हिस्से के कॉन्टेंट का एमआईएमई टाइप, जैसे कि "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 |
ज़रूरी नहीं. सीड के तौर पर दिए गए ऑडियो से मिलता-जुलता ऑडियो जनरेट करना. अगर इसे सेट नहीं किया जाता है, तो अनुरोध में रैंडम तरीके से जनरेट किए गए सीड का इस्तेमाल किया जाता है. |
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
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[] |
सिर्फ़ आउटपुट के लिए. ऑडियो के ऐसे हिस्से जिन्हें मॉडल ने जनरेट किया है. |
BidiGenerateMusicServerMessage
BidiGenerateMusic कॉल के लिए जवाब का मैसेज.
फ़ील्ड | |
---|---|
यूनियन फ़ील्ड messageType . मैसेज किस तरह का है.
messageType इनमें से सिर्फ़ एक हो सकता है:
|
|
setupComplete |
सिर्फ़ आउटपुट के लिए. यह मैसेज, सेटअप पूरा होने पर क्लाइंट से मिले |
serverContent |
सिर्फ़ आउटपुट के लिए. क्लाइंट के मैसेज के जवाब में मॉडल से जनरेट किया गया कॉन्टेंट. |
filteredPrompt |
सिर्फ़ आउटपुट के लिए. वजह के साथ फ़िल्टर किया गया प्रॉम्प्ट. |
warning |
सिर्फ़ आउटपुट के लिए. सर्वर से मिला चेतावनी मैसेज. चेतावनी मिलने पर स्ट्रीम बंद नहीं होगी. |
BidiGenerateMusicSetup
पहला मैसेज, सिर्फ़ पहले BidiGenerateMusicClientMessage
में भेजा जाएगा.
क्लाइंट को कोई भी अन्य मैसेज भेजने से पहले, BidiGenerateMusicSetupComplete
मैसेज का इंतज़ार करना चाहिए.
फ़ील्ड | |
---|---|
model |
ज़रूरी है. मॉडल के संसाधन का नाम. यह मॉडल के इस्तेमाल के लिए आईडी के तौर पर काम करता है. फ़ॉर्मैट: |
BidiGenerateMusicSetupComplete
इस टाइप में कोई फ़ील्ड नहीं है.
यह क्लाइंट से मिले BidiGenerateMusicSetup
मैसेज के जवाब में भेजा जाता है.
WeightedPrompt
मॉडल के इनपुट के तौर पर, वेटेज वाला प्रॉम्प्ट.
फ़ील्ड | |
---|---|
weight |
ज़रूरी है. प्रॉम्प्ट का वेटेज. वज़न का इस्तेमाल, प्रॉम्प्ट की अहमियत को कंट्रोल करने के लिए किया जाता है. ज़्यादा वेटेज, कम वेटेज से ज़्यादा अहम होते हैं. इस BidiGenerateMusicClientContent में मौजूद सभी weighted_prompts की वैल्यू 0 नहीं होनी चाहिए. इस BidiGenerateMusicClientContent मैसेज में मौजूद सभी weighted_prompts की वैल्यू को सामान्य किया जाएगा. |
यूनियन फ़ील्ड
|
|
text |
टेक्स्ट प्रॉम्प्ट. |
टाइप के बारे में ज़्यादा जानकारी
एपीआई के इस्तेमाल किए गए टाइप के बारे में ज़्यादा जानने के लिए, Python SDK देखें.