Gemini API, Lyria RealTime ব্যবহার করে, একটি অত্যাধুনিক, রিয়েল-টাইম, স্ট্রিমিং মিউজিক জেনারেশন মডেলে অ্যাক্সেস প্রদান করে। এটি বিকাশকারীদের এমন অ্যাপ্লিকেশন তৈরি করতে দেয় যেখানে ব্যবহারকারীরা ইন্টারেক্টিভভাবে তৈরি করতে, ক্রমাগত পরিচালনা করতে এবং যন্ত্রসংগীত সম্পাদন করতে পারে।
লিরিয়া রিয়েলটাইম ব্যবহার করে কী তৈরি করা যেতে পারে তা অনুভব করতে, প্রম্পট ডিজে বা MIDI ডিজে অ্যাপ ব্যবহার করে এআই স্টুডিওতে চেষ্টা করুন!
কিভাবে সঙ্গীত প্রজন্ম কাজ করে
লিরিয়া রিয়েলটাইম মিউজিক জেনারেশন ওয়েবসকেট ব্যবহার করে একটি স্থায়ী, দ্বিমুখী, কম-বিলম্বিত স্ট্রিমিং সংযোগ ব্যবহার করে।
সঙ্গীত তৈরি এবং নিয়ন্ত্রণ
Lyria RealTime কিছুটা লাইভ API-এর মতো কাজ করে এই অর্থে যে এটি মডেলের সাথে রিয়েল-টাইম যোগাযোগ রাখতে ওয়েবসকেট ব্যবহার করছে। এটি এখনও ঠিক একই নয় কারণ আপনি মডেলের সাথে কথা বলতে পারবেন না এবং এটিকে অনুরোধ করার জন্য আপনাকে একটি নির্দিষ্ট বিন্যাস ব্যবহার করতে হবে৷
নিম্নলিখিত কোড প্রদর্শন করে কিভাবে সঙ্গীত তৈরি করতে হয়:
পাইথন
এই উদাহরণটি client.aio.live.music.connect()
ব্যবহার করে Lyria RealTime সেশন শুরু করে, তারপর session.set_weighted_prompts()
সহ একটি প্রাথমিক কনফিগারেশন সহ session.set_music_generation_config
ব্যবহার করে একটি প্রাথমিক প্রম্পট পাঠায়, session.play()
ব্যবহার করে মিউজিক জেনারেশন শুরু করে এবং অডিও receive_audio()
করার জন্য এটি সেট আপ করে।
import asyncio
from google import genai
from google.genai import types
client = genai.Client(api_key=API_KEY, http_options={'api_version': 'v1alpha'})
async def main():
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()
if __name__ == "__main__":
asyncio.run(main())
জাভাস্ক্রিপ্ট
এই উদাহরণটি client.live.music.connect()
ব্যবহার করে লিরিয়া রিয়েলটাইম সেশন শুরু করে, তারপর session.setMusicGenerationConfig ব্যবহার করে একটি প্রাথমিক কনফিগারেশন সহ session.setMusicGenerationConfig
session.setWeightedPrompts()
সাথে একটি প্রাথমিক প্রম্পট পাঠায়, session.play()
ব্যবহার করে মিউজিক জেনারেশন শুরু করে এবং একটি onMessage
কলব্যাক প্রক্রিয়া করার জন্য এটি সেট আপ করে।
import { GoogleGenAI } from '@google/genai';
const ai = new GoogleGenAI({
apiKey: API_KEY, // Do not store your API client-side!
apiVersion: 'v1alpha',
});
// Create session object to control music generation.
const session: MusicSession = client.live.music.connect({
model: 'models/lyria-realtime-exp',
callbacks: {
onMessage: (message) => {
// Application logic: buffer and play using Web Audio API etc.
},
onError: (error) => {
console.error('music session error:', error);
},
onClose: () => {
console.log('Lyria RealTime stream closed.');
}
}
});
// Send initial prompts and config
await session.setWeightedPrompts({
weightedPrompts: [{ text: 'minimal techno', weight: 1.0 }],
});
await session.setMusicGenerationConfig({
musicGenerationConfig: { bpm: 90, temperature: 1.0 },
});
// Start generation
await session.play();
তারপর আপনি সেশন শুরু, বিরতি, থামাতে বা পুনরায় সেট করতে session.play()
, session.pause()
, session.stop()
এবং session.reset_context()
ব্যবহার করতে পারেন।
রিয়েল-টাইমে সঙ্গীত পরিচালনা করুন
প্রম্পট লিরিয়া রিয়েলটাইম
স্ট্রীমটি সক্রিয় থাকাকালীন, আপনি জেনারেট করা মিউজিক পরিবর্তন করতে যে কোনো সময় নতুন WeightedPrompt
বার্তা পাঠাতে পারেন। নতুন ইনপুটের উপর ভিত্তি করে মডেলটি মসৃণভাবে রূপান্তরিত হবে।
প্রম্পটগুলিকে একটি text
(প্রকৃত প্রম্পট) এবং একটি weight
সহ সঠিক বিন্যাস অনুসরণ করতে হবে। weight
0
ছাড়া যেকোনো মান নিতে পারে। 1.0
সাধারণত একটি ভাল সূচনা পয়েন্ট।
পাইথন
await session.set_weighted_prompts(
prompts=[
{"text": "Piano", "weight": 2.0},
types.WeightedPrompt(text="Meditation", weight=0.5),
types.WeightedPrompt(text="Live Performance", weight=1.0),
]
)
জাভাস্ক্রিপ্ট
await session.setMusicGenerationConfig({
weightedPrompts: [
{ text: 'Harmonica', weight: 0.3 },
{ text: 'Afrobeat', weight: 0.7 }
],
});
নোট করুন যে প্রম্পটগুলিকে তীব্রভাবে পরিবর্তন করার সময় মডেল ট্রানজিশনগুলি কিছুটা আকস্মিক হতে পারে তাই মডেলটিতে মধ্যবর্তী ওজনের মান পাঠিয়ে কিছু ধরণের ক্রস-ফেডিং প্রয়োগ করার পরামর্শ দেওয়া হয়।
কনফিগারেশন আপডেট করুন
আপনি রিয়েল টাইমে সঙ্গীত প্রজন্মের পরামিতি আপডেট করতে পারেন। আপনি শুধুমাত্র একটি প্যারামিটার আপডেট করতে পারবেন না, আপনাকে পুরো কনফিগারেশন সেট করতে হবে অন্যথায় অন্যান্য ক্ষেত্রগুলি তাদের ডিফল্ট মানগুলিতে পুনরায় সেট করা হবে।
যেহেতু bpm বা স্কেল আপডেট করা মডেলটির জন্য একটি কঠোর পরিবর্তন, আপনাকে এটিকে নতুন কনফিগারেশনটি বিবেচনায় নিতে reset_context()
ব্যবহার করে এর প্রসঙ্গ পুনরায় সেট করতে বলতে হবে। এটি স্ট্রিম বন্ধ করবে না, তবে এটি একটি কঠিন রূপান্তর হবে। অন্যান্য পরামিতিগুলির জন্য আপনাকে এটি করতে হবে না।
পাইথন
await session.set_music_generation_config(
config=types.LiveMusicGenerationConfig(
bpm=128,
scale=types.Scale.D_MAJOR_B_MINOR,
)
)
await session.reset_context();
জাভাস্ক্রিপ্ট
await session.setMusicGenerationConfig({
musicGenerationConfig: { bpm: 120, density: 0.75 },
});
await session.reset_context();
লিরিয়া রিয়েলটাইমের জন্য প্রম্পট গাইড
লিরিয়া রিয়েলটাইমকে প্রম্পট করতে আপনি ব্যবহার করতে পারেন এমন প্রম্পটের একটি অ-সম্পূর্ণ তালিকা এখানে রয়েছে:
- যন্ত্র:
303 Acid Bass, 808 Hip Hop Beat, Accordion, Alto Saxophone, Bagpipes, Balalaika Ensemble, Banjo, Bass Clarinet, Bongos, Boomy Bass, Bouzouki, Buchla Synths, Cello, Charango, Clavichord, Conga Drums, Didgeridoo, Dirty Synths, Djembe, Drumline, Dulcimer, Fiddle, Flamenco Guitar, Funk Drums, Glockenspiel, Guitar, Hang Drum, Harmonica, Harp, Harpsichord, Hurdy-gurdy, Kalimba, Koto, Lyre, Mandolin, Maracas, Marimba, Mbira, Mellotron, Metallic Twang, Moog Oscillations, Ocarina, Persian Tar, Pipa, Precision Bass, Ragtime Piano, Rhodes Piano, Shamisen, Shredding Guitar, Sitar, Slide Guitar, Smooth Pianos, Spacey Synths, Steel Drum, Synth Pads, Tabla, TR-909 Drum Machine, Trumpet, Tuba, Vibraphone, Viola Ensemble, Warm Acoustic Guitar, Woodwinds, ...
- সঙ্গীতের ধরণ:
Acid Jazz, Afrobeat, Alternative Country, Baroque, Bengal Baul, Bhangra, Bluegrass, Blues Rock, Bossa Nova, Breakbeat, Celtic Folk, Chillout, Chiptune, Classic Rock, Contemporary R&B, Cumbia, Deep House, Disco Funk, Drum & Bass, Dubstep, EDM, Electro Swing, Funk Metal, G-funk, Garage Rock, Glitch Hop, Grime, Hyperpop, Indian Classical, Indie Electronic, Indie Folk, Indie Pop, Irish Folk, Jam Band, Jamaican Dub, Jazz Fusion, Latin Jazz, Lo-Fi Hip Hop, Marching Band, Merengue, New Jack Swing, Minimal Techno, Moombahton, Neo-Soul, Orchestral Score, Piano Ballad, Polka, Post-Punk, 60s Psychedelic Rock, Psytrance, R&B, Reggae, Reggaeton, Renaissance Music, Salsa, Shoegaze, Ska, Surf Rock, Synthpop, Techno, Trance, Trap Beat, Trip Hop, Vaporwave, Witch house, ...
- মেজাজ/বিবরণ:
Acoustic Instruments, Ambient, Bright Tones, Chill, Crunchy Distortion, Danceable, Dreamy, Echo, Emotional, Ethereal Ambience, Experimental, Fat Beats, Funky, Glitchy Effects, Huge Drop, Live Performance, Lo-fi, Ominous Drone, Psychedelic, Rich Orchestration, Saturated Tones, Subdued Melody, Sustained Chords, Swirling Phasers, Tight Groove, Unsettling, Upbeat, Virtuoso, Weird Noises, ...
এই মাত্র কিছু উদাহরণ, Lyria RealTime আরো অনেক কিছু করতে পারে। আপনার নিজস্ব প্রম্পট সঙ্গে পরীক্ষা!
সর্বোত্তম অনুশীলন
- মসৃণ প্লেব্যাক নিশ্চিত করতে ক্লায়েন্ট অ্যাপ্লিকেশনগুলিকে অবশ্যই শক্তিশালী অডিও বাফারিং প্রয়োগ করতে হবে। এটি নেটওয়ার্ক জটলা এবং প্রজন্মের লেটেন্সিতে সামান্য তারতম্যের জন্য অ্যাকাউন্টে সহায়তা করে।
- কার্যকর প্রম্পটিং:
- বর্ণনামূলক হন। মেজাজ, জেনার এবং উপকরণ বর্ণনাকারী বিশেষণ ব্যবহার করুন।
- পুনরাবৃত্তি করুন এবং ধীরে ধীরে বাহা. প্রম্পটটি সম্পূর্ণরূপে পরিবর্তন করার পরিবর্তে, সঙ্গীতকে আরও মসৃণভাবে রূপ দেওয়ার জন্য উপাদানগুলি যোগ বা সংশোধন করার চেষ্ট�� করুন।
- একটি নতুন প্রম্পট চলমান প্রজন্মকে কতটা দৃঢ়ভাবে প্রভাবিত করে তা প্রভাবিত করতে
WeightedPrompt
এ ওজন নিয়ে পরীক্ষা করুন।
প্রযুক্তিগত বিবরণ
এই বিভাগে লিরিয়া রিয়েলটাইম মিউজিক জেনারেশন কীভাবে ব্যবহার করতে হয় তার সুনির্দিষ্ট বিবরণ বর্ণনা করে।
স্পেসিফিকেশন
- আউটপুট বিন্যাস: কাঁচ�� 16-বি�� ��িসিএম অডিও
- নমুনা হার: 48kHz
- চ্যানেল: 2 (স্টিরিও)
নিয়ন্ত্রণ করে
সঙ্গীত প্রজন্মকে রিয়েল টাইমে বার্তা পাঠানোর মাধ্যমে প্রভাবিত করা যেতে পারে:
-
WeightedPrompt
: একটি টেক্সট স্ট্রিং যা একটি সঙ্গীতের ধারণা, জেনার, যন্ত্র, মেজাজ বা বৈশিষ্ট্য বর্ণনা করে। প্রভাব মিশ্রিত করার জন্য একাধিক প্রম্পট সম্ভাব্যভাবে সরবরাহ করা যেতে পারে। লিরিয়া রিয়েলটাইমকে কীভাবে সর্বোত্তম প্রম্পট করা যায় সে সম্পর্কে আরও বিশদ বিবরণের জন্য উপরে দেখুন। -
MusicGenerationConfig
: সঙ্গীত তৈরির প্রক্রিয়ার জন্য কনফিগারেশন, আউটপুট অডিওর বৈশিষ্ট্যগুলিকে প্রভাবিত করে।) পরামিতি অন্তর্ভুক্ত:-
guidance
: (ফ্লোট) পরিসর:[0.0, 6.0]
। ডিফল্ট:4.0
মডেল কতটা কঠোরভাবে প্রম্পট অনুসরণ করে তা নিয়ন্ত্রণ করে। উচ্চতর নির্দেশিকা প্রম্পটের আনুগত্য উন্নত করে, কিন্তু পরিবর্তনগুলিকে আরও আকস্মিক করে তোলে। -
bpm
: (int) রেঞ্জ:[60, 200]
। উত্পন্ন সঙ্গীতের জন্য আপনি চান প্রতি মিনিটে বিট সেট করে। নতুন bpm বিবেচনায় নেওয়া মডেলের জন্য আপনাকে থামাতে/প্লে করতে বা প্রসঙ্গ রিসেট করতে হবে। -
density
: (ফ্লোট) পরিসর:[0.0, 1.0]
। মিউজিক্যাল নোট/শব্দের ঘনত্ব নিয়ন্ত্রণ করে। নিম্ন মান স্পার্সার সঙ্গীত উত্পাদন করে; উচ্চ মান "ব্যস্ত" সঙ্গীত উত্পাদন. -
brightness
: (ফ্লোট) পরিসর:[0.0, 1.0]
। টোনাল গুণমান সামঞ্জস্য করে। উচ্চতর মানগুলি "উজ্জ্বল" শব্দযুক্ত অডিও তৈরি করে, সাধারণত উচ্চতর ফ্রিকোয়েন্সির উপর জোর দেয়। -
scale
: (এনাম) প্রজন্মের জন্য বাদ্যযন্ত্র স্কেল (কী এবং মোড) ��েট করে। SDK দ্বারা প্রদত্তScale
enum মানগুলি ব্যবহার করুন৷ নতুন স্কেল বিবেচনায় নেওয়া মডেলটির জন্য আপনাকে থামাতে/প্লে বা প্রসঙ্গটি পুনরায় সেট করতে হবে। -
mute_bass
: (bool) ডিফল্ট:False
. মডেল আউটপুট 'খাদ কমায় কিনা নিয়ন্ত্রণ করে। -
mute_drums
: (bool) ডিফল্ট:False
. মডেলের আউটপুটগুলি আউটপুটগুলির ড্রামগুলিকে হ্রাস করে কিনা তা নিয়ন্ত্রণ করে৷ -
only_bass_and_drums
: (bool) ডিফল্ট:False
. শুধুমাত্র খাদ এবং ড্রাম আউটপুট করার চেষ্টা করার জন্য মডেলটি চালান।
-
-
PlaybackControl
: প্লেব্যাক দিকগুলি নিয়ন্ত্রণ করার জন্য কমান্ড, যেমন খেলা, বিরতি, থামানো বা প্রসঙ্গ পুনরায় সেট করা।
bpm
, density
, brightness
এবং scale
এর জন্য, যদি কোন মান প্রদান করা না হয়, মডেলটি আপনার প্রাথমিক প্রম্পট অনুযায়ী কোনটি সেরা তা নির্ধারণ করবে।
temperature
(0.0 থেকে 3.0, ডিফল্ট 1.1), top_k
(1 থেকে 1000, ডিফল্ট 40), এবং seed
(0 থেকে 2 147 483 647, ডিফল্টভাবে এলোমেলোভাবে নির্বাচিত) এর মতো আরও ক্লাসিক্যাল প্যারামিটারগুলিও MusicGenerationConfig
এ কাস্টমাইজযোগ্য।
স্কেল Enum মান
মডেলটি গ্রহণ করতে পারে এমন সমস্ত স্কেল মান এখানে রয়েছে:
এনাম মান | স্কেল / কী |
---|---|
C_MAJOR_A_MINOR | সি মেজর/এ মাইনর |
D_FLAT_MAJOR_B_FLAT_MINOR | D♭ প্রধান / B♭ ছোট |
D_MAJOR_B_MINOR | ডি মেজর/বি মাইনর |
E_FLAT_MAJOR_C_MINOR | E♭ মেজর / সি মাইনর |
E_MAJOR_D_FLAT_MINOR | E প্রধান / C♯/D♭ ছোট |
F_MAJOR_D_MINOR | F মেজর/ডি মাইনর |
G_FLAT_MAJOR_E_FLAT_MINOR | G♭ প্রধান / E♭ ছোট |
G_MAJOR_E_MINOR | জি মেজর/ই মাইনর |
A_FLAT_MAJOR_F_MINOR | A♭ প্রধান / F মাইনর |
A_MAJOR_G_FLAT_MINOR | একটি প্রধান / F♯/G♭ ছোট |
B_FLAT_MAJOR_G_MINOR | B♭ মেজর/জি মাইনর |
B_MAJOR_A_FLAT_MINOR | বি প্রধান / G♯/A♭ ছোট |
SCALE_UNSPECIFIED | ডিফল্ট / মডেল সিদ্ধান্ত নেয় |
মডেলটি বাজানো নোটগুলিকে গাইড করতে সক্ষম, কিন্তু আপেক্ষিক কীগুলির মধ্যে পার্থক্য করে না। এইভাবে প্র��িটি enum আপেক্ষিক বড় এবং গৌণ উভয়ের সাথে মিলে যায়। উদাহরণস্বরূপ, C_MAJOR_A_MINOR
একটি পিয়ানোর সমস্ত সাদা কীগুলির সাথে মিলিত হবে এবং F_MAJOR_D_MINOR
হবে B ফ্ল্যাট বাদে সমস্ত সাদা কী৷
সীমাবদ্ধতা
- শুধুমাত্র ইন্সট্রুমেন্টাল: মডেলটি শুধুমাত্র ইন্সট্রুমেন্টাল মিউজিক তৈরি করে।
- নিরাপত্তা: প্রম্পট নিরাপত্তা ফিল্টার দ্বারা চেক করা হয়. ফিল্টারগুলিকে ট্রিগার করার প্রম্পটগুলি উপেক্ষা করা হবে যে ক্ষেত্রে আউটপুটের
filtered_prompt
ক্ষেত্রে একটি ব্যাখ্যা লেখা হবে। - ওয়াটারমার্কিং: আউটপুট অডিও সবসময় আমাদের দায়ী এআই নীতি অনুসরণ করে সনাক্তকরণের জন্য ওয়াটারমার্ক করা হয়।
এরপর কি
- সঙ্গীতের পরিবর্তে, TTS মডেলগুলি ব্যবহার করে মাল্টি-স্পিকার কথোপকথন তৈরি করতে শিখুন,
- আবিষ্কার করুন কিভাবে ছবি বা ভিডিও তৈরি করতে হয়,
- জেনারেশন মিউজিক বা অডিওর পরিবর্তে জেনে নিন কিভাবে মিথুন অডিও ফাইল বুঝতে পারে,
- লাইভ API ব্যবহার করে Gemini-এর সাথে একটি রিয়েল-টাইম কথোপকথন করুন।
আরও কোডের উদাহরণ এবং টিউটোরিয়ালের জন্য কুকবুকটি অন্বেষণ করুন।