জেমিনি লাইভ এপিআই, gemini-3.5-transcribe-live মডেল ব্যবহার করে স্বল্প-বিলম্বের (low-latency) রিয়েল-টাইম স্পিচ-টু-টেক্সট ট্রান্সক্রিপশন সমর্থন করে। ওয়েবসকেটস (WebSockets) এর মাধ্যমে লাইভ এপিআই-এর সাথে সংযোগ স্থাপন করে অথবা গুগল জেন এআই এসডিকে (Google Gen AI SDK) ব্যবহার করে, আপনি অবিচ্ছিন্ন অডিও ইনপুট স্ট্রিম করতে পারেন এবং কথা বলার সাথে সাথে ক্রমবর্ধমান, রিয়েল-টাইম টেক্সট ট্রান্সক্রিপশন পেতে পারেন।
জেমিনি লাইভ এপিআই (Gemini Live API) ব্যবহার করে, অ্যাগোরা (Agora), ফিশজ্যাম (Fishjam) , লাইভকিট (LiveKit) , পাইপক্যাট (Pipecat), ভার্সেল (Vercel) , এবং ভিশন এজেন্টস (Vision Agents)- এর মতো ডেভেলপার প্ল্যাটফর্মগুলো ডেভেলপারদের সহজে উচ্চ-পারফরম্যান্স সম্পন্ন ভয়েস-চালিত ইন্টারফেস তৈরি ও স্থাপন করতে সক্ষম করে। এই প্ল্যাটফর্মগুলো নেপথ্যে জটিল রিয়েল-টাইম মিডিয়া স্ট্রিমিং পরিকাঠামো পরিচালনা করে, যার ফলে ডেভেলপাররা ব্যবহারকারীর অভিজ্ঞতা তৈরিতে সম্পূর্ণরূপে মনোযোগ দিতে পারেন।
লাইভ এজেন্ট বনাম লাইভ ট্রান্সক্রিপশন
যদিও উভয়ই লাইভ এপিআই দ্বিমুখী স্ট্রিমিং সংযোগ ব্যবহার করে, লাইভ ট্রান্সক্রিপশন একটি কথোপকথনমূলক এজেন্টের পরিবর্তে একটি নিবেদিত, স্বল্প-বিলম্বের স্পিচ রিকগনিশন পাইপলাইন হিসেবে কাজ করে।
| বৈশিষ্ট্য | লাইভ এজেন্ট | সরাসরি প্রতিলিপি |
|---|---|---|
| প্রাথমিক ভূমিকা | কথোপকথন সহকারী যা শোনে, যুক্তি দেখায় এবং উত্তর দেয়। | রিয়েল-টাইম স্পিচ-টু-টেক্সট পাইপলাইন যা আগত অডিওকে প্রতিলিপি করে। |
| প্রতিক্রিয়া পদ্ধতি | কথ্য অডিও এবং টেক্সট ( response_modalities=["AUDIO"] )। | স্ট্রিমিং টেক্সট ট্রান্সক্রিপশন ( response_modalities=["TEXT"] )। |
| মিথস্ক্রিয়া শৈলী | বিরতি শনাক্তকরণ এবং বাধাসহ পালাভিত্তিক সংলাপ। | বক্তা কথা বলার সাথে সাথে অবিচ্ছিন্ন প্রবাহ প্রক্রিয়াকরণ চলতে থাকে। |
| সমর্থিত বৈশিষ্ট্য | ফাংশন কলিং, গুগল সার্চ, সিস্টেম নির্দেশনা। | স্পিচ বায়াসিং ( custom_vocabulary ), ভাষা শনাক্তকরণ, ম্যানুয়াল ও হাইব্রিড ভিএডি, স্মার্ট ট্রান্সক্রিপশন। |
| ইনপুট স্ট্রিম | মাল্টিমোডাল: অডিও, ভিডিও, ছবি, লেখা। | অডিও ইনপুট (র ১৬-বিট পিসিএম)। |
শুরু করুন
নিম্নলিখিত উদাহরণগুলিতে দেখানো হয়েছে কীভাবে gemini-3.5-transcribe-live ব্যবহার করে একটি দ্বিমুখী স্ট্রিমিং সেশন খোলা যায় এবং রিয়েল-টাইম ট্রান্সক্রিপশন গ্রহণ করা যায়।
পাইথন
import asyncio
from google import genai
from google.genai import types
client = genai.Client()
model = "gemini-3.5-transcribe-live"
config = types.LiveConnectConfig(
response_modalities=["TEXT"],
input_audio_transcription=types.AudioTranscriptionConfig(
language_codes=[], # Automatic language detection
),
)
async def main():
async with client.aio.live.connect(model=model, config=config) as session:
print("Session established with Live Transcription")
# Receive transcription events
async for response in session.receive():
server_content = response.server_content
if server_content and server_content.input_transcription:
print("Transcript:", server_content.input_transcription.text)
if __name__ == "__main__":
asyncio.run(main())
জাভাস্ক্রিপ্ট
import { GoogleGenAI, Modality } from '@google/genai';
const ai = new GoogleGenAI({});
const model = 'gemini-3.5-transcribe-live';
const config = {
responseModalities: [Modality.TEXT],
inputAudioTranscription: {
languageCodes: [], // Automatic language detection
},
};
async function main() {
const session = await ai.live.connect({
model: model,
config: config,
callbacks: {
onopen: () => console.log('Connected to Live Transcription'),
onmessage: (message) => {
const content = message.serverContent;
if (content?.inputTranscription) {
console.log('Transcript:', content.inputTranscription.text);
}
},
onerror: (e) => console.error('Error:', e.message),
onclose: (e) => console.log('Connection closed:', e.reason),
},
});
}
main();
ওয়েবসকেটস
const API_KEY = "YOUR_API_KEY";
const MODEL_NAME = "gemini-3.5-transcribe-live";
const WS_URL = `wss://generativelanguage.googleapis.com/ws/google.ai.generativelanguage.v1beta.GenerativeService.BidiGenerateContent?key=${API_KEY}`;
const websocket = new WebSocket(WS_URL);
websocket.onopen = () => {
console.log('WebSocket connected');
const setupMessage = {
setup: {
model: `models/${MODEL_NAME}`,
generationConfig: {
responseModalities: ['TEXT'],
},
inputAudioTranscription: {
languageCodes: []
}
}
};
websocket.send(JSON.stringify(setupMessage));
};
websocket.onmessage = (event) => {
const response = JSON.parse(event.data);
const content = response.serverContent;
if (content?.inputTranscription) {
console.log('Transcript:', content.inputTranscription.text);
}
};
অন্তর্বর্তী এবং চূড়ান্ত প্রতিলিপি
লাইভ এপিআই-তে অডিও স্ট্রিম হওয়ার সাথে সাথে, সার্ভারটি server_content মধ্যে দুটি পরিপূরক ট্রান্সক্রিপশন ফিল্ড নির্গত করে:
-
interim_input_transcription: স্বল্প-বিলম্বের, অনুমানমূলক আংশিক হাইপোথিসিস যা বক্তা সক্রিয়ভাবে কথা বলার সময় আপডেট করা হয়। এই আংশিক আপডেটগুলি ন্যূনতম বিলম্ব সহ দ্রুত ঘটে। রেসপন্সিভ লাইভ UI সাবটাইটেল রেন্ডার করতে বা ক্যাপশন প্রিভিউ করতেinterim_input_transcriptionব্যবহার করুন। -
input_transcription: বক্তা যখন থামেন, তাঁর পালা শেষ হয়, বা তাঁর বক্তব্য সমাপ্ত হয়, তখন এই চূড়ান্ত প্রতিলিপিটি নির্গত হয়। একবার নির্গত হলে, এই লেখাটি সেই নির্দিষ্ট বক্তব্যাংশের মডেলের প্রামাণ্য প্রতিলিপি হিসেবে গণ্য হয়। স্মার্ট ট্রান্সক্রিপশন মোডে, এতে পরিমার্জিত ও ফরম্যাট করা প্রতিক্রিয়া অন্তর্ভুক্ত থাকবে।
নিম্নলিখিত উদাহরণটি দেখায় কিভাবে স্ট্রিমিং অন্তর্বর্তী আংশিক এবং কমিট চূড়ান্ত ট্রান্সক্রিপ্ট প্রদর্শন করতে হয়:
পাইথন
async def receive_transcripts(session):
async for response in session.receive():
server_content = response.server_content
if not server_content:
continue
# Real-time interim hypothesis (updates dynamically as user speaks)
if server_content.interim_input_transcription:
interim_text = server_content.interim_input_transcription.text
print(f"\r[Interim] {interim_text}", end="", flush=True)
# Finalized transcript (emitted on speech completion)
if server_content.input_transcription:
final_text = server_content.input_transcription.text
print(f"\n[Final] {final_text}")
জাভাস্ক্রিপ্ট
onmessage: (message) => {
const content = message.serverContent;
if (!content) return;
if (content.interimInputTranscription) {
// Update live subtitle preview on screen
renderInterimPreview(content.interimInputTranscription.text);
}
if (content.inputTranscription) {
// Append final committed transcript to chat history
commitFinalTranscript(content.inputTranscription.text);
}
};
ওয়েবসকেটস
websocket.onmessage = (event) => {
const response = JSON.parse(event.data);
const content = response.serverContent;
if (content?.interimInputTranscription) {
console.log('[Interim]:', content.interimInputTranscription.text);
}
if (content?.inputTranscription) {
console.log('[Final]:', content.inputTranscription.text);
}
};
অডিও পাঠানো হচ্ছে
সক্রিয় সংযোগের মাধ্যমে অডিওর খণ্ডাংশগুলোকে র ১৬-বিট পিসিএম অডিও হিসেবে স্ট্রিম করুন।
- অডিও ফরম্যাট: র 16-বিট PCM, 16kHz-এ (মনো, লিটল-এন্ডিয়ান)।
- অডিওর খণ্ডের আকার: ১০০ মিলিসেকেন্ডের খণ্ডে (১,০২৪ থেকে ২,০৪৮ ফ্রেম) অডিও পাঠান।
MIME টাইপ:
audio/pcm;rate=16000(অথবা সংশ্লিষ্ট স্যাম্পল রেট)।
পাইথন
# Stream a raw PCM audio chunk
await session.send_realtime_input(
audio=types.Blob(
data=audio_chunk_bytes,
mime_type="audio/pcm;rate=16000"
)
)
# Signal the end of the audio stream when finished
await session.send_realtime_input(audio_stream_end=True)
জাভাস্ক্রিপ্ট
// Send base64-encoded PCM audio chunk
session.sendRealtimeInput({
audio: {
data: audioChunkBase64,
mimeType: 'audio/pcm;rate=16000'
}
});
// Signal stream end
session.sendRealtimeInput({
audioStreamEnd: true
});
ওয়েবসকেটস
// Send base64-encoded PCM audio chunk
websocket.send(JSON.stringify({
realtimeInput: {
audio: {
data: audioChunkBase64,
mimeType: 'audio/pcm;rate=16000'
}
}
}));
// Signal stream end
websocket.send(JSON.stringify({
realtimeInput: {
audioStreamEnd: true
}
}));
ট্রান্সক্রিপশন বৈশিষ্ট্য
স্বয়ংক্রিয় ভাষা সনাক্তকরণ
ডিফল্টরূপে, language_codes বাদ দিলে বা language_codes=[] সেট করলে স্বয়ংক্রিয় ভাষা শনাক্তকরণ সক্রিয় হয়। মডেলটি বহুভাষিক কথোপকথন এবং কোড-সুইচিং সহ বিভিন্ন উক্তির মধ্যে থেকে গতিশীলভাবে কথ্য ভাষা শনাক্ত করে।
পাইথন
config = types.LiveConnectConfig(
response_modalities=["TEXT"],
input_audio_transcription=types.AudioTranscriptionConfig(
language_codes=[],
),
)
জাভাস্ক্রিপ্ট
const config = {
responseModalities: [Modality.TEXT],
inputAudioTranscription: {
languageCodes: [],
},
};
ওয়েবসকেটস
const setupMessage = {
setup: {
model: 'models/gemini-3.5-transcribe-live',
generationConfig: {
responseModalities: ['TEXT'],
},
inputAudioTranscription: {
languageCodes: [],
},
},
};
websocket.send(JSON.stringify(setupMessage));
নির্দিষ্ট ভাষার ইঙ্গিত
নির্দিষ্ট ভাষার প্রতি শনাক্তকরণকে প্রভাবিত করতে সুস্পষ্ট BCP-47 ভাষা কোড প্রদান করুন (উদাহরণস্বরূপ, স্প্যানিশের জন্য ["es-ES"] বা ফরাসির জন্য ["fr-FR"] ) ( সমর্থিত ভাষাসমূহ দেখুন)।
পাইথন
config = types.LiveConnectConfig(
response_modalities=["TEXT"],
input_audio_transcription=types.AudioTranscriptionConfig(
language_codes=["es-ES"],
),
)
জাভাস্ক্রিপ্ট
const config = {
responseModalities: [Modality.TEXT],
inputAudioTranscription: {
languageCodes: ['es-ES'],
},
};
ওয়েবসকেটস
const setupMessage = {
setup: {
model: 'models/gemini-3.5-transcribe-live',
generationConfig: {
responseModalities: ['TEXT'],
},
inputAudioTranscription: {
languageCodes: ['es-ES'],
},
},
};
websocket.send(JSON.stringify(setupMessage));
কাস্টম শব্দভান্ডার পক্ষপাত
স্পিচ রিকগনিশনকে নির্দিষ্ট পরিভাষার দিকে চালিত করতে custom_vocabulary তে ১,০০০টি পর্যন্ত বাক্যাংশ, বিশেষ্য পদ, ব্র্যান্ডের নাম বা প্রযুক্তিগত শব্দের একটি তালিকা প্রদান করুন (সাধারণত ১০০টি পর্যন্ত শব্দ ব্যবহার করলে সেরা ফলাফল পাওয়া যায়)।
পাইথন
config = types.LiveConnectConfig(
response_modalities=["TEXT"],
input_audio_transcription=types.AudioTranscriptionConfig(
language_codes=[],
custom_vocabulary=["Gemini", "Kubernetes", "BigQuery"],
),
)
জাভাস্ক্রিপ্ট
const config = {
responseModalities: [Modality.TEXT],
inputAudioTranscription: {
languageCodes: [],
customVocabulary: ['Gemini', 'Kubernetes', 'BigQuery'],
},
};
ওয়েবসকেটস
const setupMessage = {
setup: {
model: 'models/gemini-3.5-transcribe-live',
generationConfig: {
responseModalities: ['TEXT'],
},
inputAudioTranscription: {
languageCodes: [],
customVocabulary: ['Gemini', 'Kubernetes', 'BigQuery'],
},
},
};
websocket.send(JSON.stringify(setupMessage));
স্মার্ট ট্রান্সক্রিপশন
input_audio_transcription এ mode প্যারামিটার ব্যবহার করে ট্রান্সক্রিপশন আউটপুট ফরম্যাটিং কনফিগার করুন:
-
VERBATIM(ডিফল্ট) : বলা প্রতিটি কথার একটি হুবহু আক্ষরিক প্রতিলিপি তৈরি করে, যেখানে অপ্রয়োজনীয় শব্দ ("উম", "আহ", "লাইক"), পুনরাবৃত্তি এবং ভুল শুরু অক্ষুণ্ণ থাকে। SMART(স্মার্ট ট্রান্সক্রিপশন) : পাঠযোগ্যতার জন্য ট্রান্সক্রিপ্টকে পরিচ্ছন্ন ও সুসংগঠিত করে:- সাবলীলতার অভাব দূরীকরণ : অপ্রয়োজনীয় শব্দ, তোতলানো এবং কথা শুরু করতে ভুল হওয়া দূর করে।
- ইনলাইন স্ব-সংশোধন : কথিত সংশোধনগুলো স্বাভাবিকভাবে সমাধান করে।
- কাঠামোগত বিন্যাস : তালিকা, বুলেট পয়েন্ট, সংখ্যা, তারিখ এবং অনুচ্ছেদ বিভাজন স্বয়ংক্রিয়ভাবে বিন্যাস করে।
- ব্যাকরণ ও কেসিং : স্বাভাবিক ক্যাপিটালাইজেশন এবং বিরামচিহ্নের পরিমার্জন প্রয়োগ করে।
পাইথন
config = types.LiveConnectConfig(
response_modalities=["TEXT"],
input_audio_transcription=types.AudioTranscriptionConfig(
mode="SMART",
),
)
জাভাস্ক্রিপ্ট
const config = {
responseModalities: [Modality.TEXT],
inputAudioTranscription: {
mode: 'SMART',
},
};
ওয়েবসকেটস
const setupMessage = {
setup: {
model: 'models/gemini-3.5-transcribe-live',
generationConfig: {
responseModalities: ['TEXT'],
},
inputAudioTranscription: {
mode: 'SMART',
},
},
};
websocket.send(JSON.stringify(setupMessage));
ভয়েস অ্যাক্টিভিটি ডিটেকশন (VAD) কৌশল
স্বয়ংক্রিয় ভিএডি (ডিফল্ট)
ডিফল্টরূপে, সার্ভার-সাইড স্বয়ংক্রিয় ভয়েস অ্যাক্টিভিটি ডিটেকশন একজন বক্তা কখন কথা বলা শুরু করেন এবং বন্ধ করেন তা শনাক্ত করে।
হাইব্রিড ভিএডি
হাইব্রিড ভিএডি শূন্য-বিলম্বের টার্ন চূড়ান্তকরণের জন্য সার্ভার-সাইড স্বয়ংক্রিয় স্পিচ স্টার্ট ডিটেকশন এবং ক্লায়েন্ট-সাইড স্পিচ এন্ড ডিটেকশনের সমন্বয় করে:
- প্রিফিক্স অডিও প্যাডিং ব্যবহার করে নির্ভুলভাবে কথার শুরু শনাক্ত করতে এবং শব্দের সামনের অংশ কেটে যাওয়া রোধ করতে সার্ভার-সাইডের স্বয়ংক্রিয় VAD সক্রিয় থাকে ।
- ক্লায়েন্ট-সাইড VAD নীরবতা শনাক্ত করে : যখন ডিভাইসের স্থানীয় VAD শনাক্ত করে যে বক্তা কথা বলা বন্ধ করে দিয়েছেন, তখন ক্লায়েন্ট অবিলম্বে একটি
audio_stream_endসিগন্যাল পাঠায়। - দ্রুত চূড়ান্তকরণ : সার্ভার ডিফল্ট সার্ভার-সাইড নীরবতার অপেক্ষার সময়কে বাইপাস করে
audio_stream_endএকটি তাৎক্ষণিক পালা চূড়ান্তকরণের প্রম্পট হিসেবে গণ্য করে এবং ন্যূনতম বিলম্বের সাথে চূড়ান্ত ট্রান্সক্রিপ্টটি ফেরত দেয়। - ফলব্যাক : যদি ক্লায়েন্ট VAD ট্রিগার হতে ব্যর্থ হয়, তাহলে সার্ভার-সাইড VAD স্বয়ংক্রিয়ভাবে ফলব্যাক হিসেবে কাজ করে।
পাইথন
config = types.LiveConnectConfig(
response_modalities=["TEXT"],
input_audio_transcription=types.AudioTranscriptionConfig(),
)
async with client.aio.live.connect(model=model, config=config) as session:
# Stream audio chunks...
await session.send_realtime_input(
audio=types.Blob(data=chunk, mime_type="audio/pcm;rate=16000")
)
# When client-side VAD detects end of speech, send audio_stream_end:
await session.send_realtime_input(audio_stream_end=True)
জাভাস্ক্রিপ্ট
const config = {
responseModalities: [Modality.TEXT],
inputAudioTranscription: {},
};
// Stream audio...
session.sendRealtimeInput({
audio: { data: chunkBase64, mimeType: 'audio/pcm;rate=16000' }
});
// When client VAD detects end of speech, send audioStreamEnd:
session.sendRealtimeInput({
audioStreamEnd: true
});
ওয়েবসকেটস
const setupMessage = {
setup: {
model: 'models/gemini-3.5-transcribe-live',
generationConfig: {
responseModalities: ['TEXT'],
},
inputAudioTranscription: {},
},
};
websocket.send(JSON.stringify(setupMessage));
// Stream audio...
websocket.send(JSON.stringify({
realtimeInput: {
audio: { data: chunkBase64, mimeType: 'audio/pcm;rate=16000' }
}
}));
// When client VAD detects end of speech, send audioStreamEnd:
websocket.send(JSON.stringify({
realtimeInput: {
audioStreamEnd: true
}
}));
ম্যানুয়াল ভিএডি (পুশ-টু-টক)
ওয়াকি-টকি ইন্টারফেস বা পুশ-টু-টক বাটনের ক্ষেত্রে, স্বয়ংক্রিয় VAD সম্পূর্ণরূপে নিষ্ক্রিয় করুন এবং activity_start ও activity_end ব্যবহার করে মোড় নেওয়ার সীমানা স্পষ্টভাবে নিয়ন্ত্রণ করুন:
পাইথন
config = types.LiveConnectConfig(
response_modalities=["TEXT"],
realtime_input_config=types.RealtimeInputConfig(
automatic_activity_detection=types.AutomaticActivityDetection(
disabled=True
)
),
input_audio_transcription=types.AudioTranscriptionConfig(),
)
async with client.aio.live.connect(model=model, config=config) as session:
# Button pressed: signal speech start
await session.send_realtime_input(activity_start=types.ActivityStart())
# Stream audio chunks...
await session.send_realtime_input(audio=types.Blob(data=chunk, mime_type="audio/pcm;rate=16000"))
# Button released: signal speech end
await session.send_realtime_input(activity_end=types.ActivityEnd())
জাভাস্ক্রিপ্ট
const config = {
responseModalities: [Modality.TEXT],
realtimeInputConfig: {
automaticActivityDetection: {
disabled: true,
},
},
inputAudioTranscription: {},
};
// Signal speech start
session.sendRealtimeInput({ activityStart: {} });
// Stream audio...
// Signal speech end
session.sendRealtimeInput({ activityEnd: {} });
ওয়েবসকেটস
const setupMessage = {
setup: {
model: 'models/gemini-3.5-transcribe-live',
generationConfig: {
responseModalities: ['TEXT'],
},
realtimeInputConfig: {
automaticActivityDetection: {
disabled: true,
},
},
inputAudioTranscription: {},
},
};
websocket.send(JSON.stringify(setupMessage));
// Button pressed: signal speech start
websocket.send(JSON.stringify({
realtimeInput: {
activityStart: {},
},
}));
// Stream audio...
websocket.send(JSON.stringify({
realtimeInput: {
audio: { data: chunkBase64, mimeType: 'audio/pcm;rate=16000' },
},
}));
// Button released: signal speech end
websocket.send(JSON.stringify({
realtimeInput: {
activityEnd: {},
},
}));
ক্লায়েন্ট অ্যাপ্লিকেশনগুলিতে ক্ষণস্থায়ী টোকেন
ক্লায়েন্ট-টু-সার্ভার অ্যাপ্লিকেশনগুলির (যেমন মাইক্রোফোন থেকে সরাসরি স্ট্রিমিং করা মোবাইল বা ওয়েব অ্যাপ) ক্ষেত্রে, ক্লায়েন্ট কোডে আপনার এপিআই কী প্রকাশ হওয়া এড়াতে ক্ষণস্থায়ী টোকেন ব্যবহার করুন।
ক্লায়েন্ট সংযোগ শুরু করার আগে আপনার সার্ভারে একটি সীমাবদ্ধ ক্ষণস্থায়ী টোকেন তৈরি করুন:
পাইথন
import datetime
from google import genai
client = genai.Client()
expire_time = datetime.datetime.now(tz=datetime.timezone.utc) + datetime.timedelta(minutes=30)
token = client.auth_tokens.create(
config={
"uses": 1,
"expire_time": expire_time,
"live_connect_constraints": {
"model": "gemini-3.5-transcribe-live",
"config": {
"response_modalities": ["TEXT"],
"input_audio_transcription": {
"language_codes": [],
},
},
},
}
)
জাভাস্ক্রিপ্ট
import { GoogleGenAI } from '@google/genai';
const client = new GoogleGenAI({});
const expireTime = new Date(Date.now() + 30 * 60 * 1000).toISOString();
const token = await client.authTokens.create({
config: {
uses: 1,
expireTime: expireTime,
liveConnectConstraints: {
model: 'gemini-3.5-transcribe-live',
config: {
responseModalities: ['TEXT'],
inputAudioTranscription: {
languageCodes: [],
},
},
},
},
});
বিশ্রাম
curl -X POST "https://generativelanguage.googleapis.com/v1beta/auth_tokens" \
-H "x-goog-api-key: ${GEMINI_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"uses": 1,
"expireTime": "YYYY-MM-DDTHH:MM:SSZ",
"liveConnectConstraints": {
"model": "models/gemini-3.5-transcribe-live",
"config": {
"responseModalities": ["TEXT"],
"inputAudioTranscription": {
"languageCodes": []
}
}
}
}'
সমর্থিত ভাষা
Gemini 3.5 Transcribe Live-এর জন্য নিম্নলিখিত ভাষা এবং BCP-47 ভাষা কোডগুলি সমর্থিত:
| ভাষা | বিসিপি-৪৭ কোড | ভাষা | বিসিপি-৪৭ কোড |
|---|---|---|---|
| আফ্রিকান | af-ZA | জাপানি | ja-JP |
| আমহারিক | am-ET | জাভানিজ | jv-ID |
| আরবি (মিশর) | ar-EG | কাবুভেরদিয়ানু | kea-CV |
| আর্মেনীয় | hy-AM | কন্নড় | kn-IN |
| অসমীয়া | as-IN | কাজাখ | kk-KZ |
| আজারবাইজানীয় | az-AZ | কোরিয়ান | ko-KR |
| বেলারুশীয় | be-BY | কিরগিজ | ky-KG |
| বাংলা (বাংলাদেশ) | bn-BD | লাতভিয়ান | lv-LV |
| বাংলা (ভারত) | bn-IN | লিঙ্গালা | ln-CD |
| বসনীয় | bs-BA | লিথুয়ানিয়ান | lt-LT |
| বুলগেরীয় | bg-BG | ম্যাসিডোনিয়ান | mk-MK |
| বুলগেরীয় (অ্যারোমানিয়ান) | rup-BG | মালয় | ms-MY |
| বর্মী | my-MM | মালয়ালম | ml-IN |
| ক্যান্টনিজ (ঐতিহ্যবাহী) | yue-Hant-HK | মাল্টিজ | mt-MT |
| কাতালান | ca-ES | ম্যান্ডারিন চীনা (সরলীকৃত) | cmn-Hans-CN |
| সেবুয়ানো | ceb | মারাঠি | mr-IN |
| মধ্য খেমার | km-KH | মঙ্গোলীয় | mn-MN |
| ক্রোয়েশীয় | hr-HR | নেপালি | ne-NP |
| চেক | cs-CZ | নরওয়েজিয়ান | nb-NO |
| ড্যানিশ | da-DK | ওড়িয়া | or-IN |
| ডাচ | nl-NL | পোলিশ | pl-PL |
| ইংরেজি (গ্রেট ব্রিটেন) | en-GB | পর্তুগিজ (ব্রাজিল) | pt-BR |
| ইংরেজি (ভারত) | en-IN | পর্তুগিজ (পর্তুগাল) | pt-PT |
| ইংরেজি (মার্কিন যুক্তরাষ্ট্র) | en-US | পাঞ্জাবি | pa-IN |
| এস্তোনিয়ান | et-EE | পাঞ্জাবি (গুরুমুখী লিপি) | pa-Guru-IN |
| ফারসি | fa-IR | রোমানিয়ান | ro-RO |
| ফিলিপিনো | fil-PH | রাশিয়ান | ru-RU |
| ফিনিশ | fi-FI | সার্বিয়ান | sr-RS |
| ফরাসি | fr-FR | সিন্ধি (আরবি লিপি) | sd-Arab-IN |
| গ্যালিসিয়ান | gl-ES | স্লোভাক | sk-SK |
| জর্জিয়ান | ka-GE | স্লোভেনীয় | sl-SI |
| জার্মান | de-DE | স্প্যানিশ (লাতিন আমেরিকা) | es-419 |
| গ্রীক | el-GR | স্প্যানিশ (মার্কিন যুক্তরাষ্ট্র) | es-US |
| গুজরাটি | gu-IN | সোয়াহিলি (কেনিয়া) | sw-KE |
| হাউসা | ha-NG | সুইডিশ | sv-SE |
| হিব্রু | he-IL | তাজিক | tg-TJ |
| হিন্দি | hi-IN | তেলুগু | te-IN |
| হাঙ্গেরীয় | hu-HU | থাই | th-TH |
| আইসল্যান্ডীয় | is-IS | তুর্কি | tr-TR |
| ভারতীয় ইংরেজি | en-IN | ইউক্রেনীয় | uk-UA |
| ইন্দোনেশিয়ান | id-ID | উজবেক | uz-UZ |
| ইতালীয় | it-IT | ভিয়েতনামী | vi-VN |
প্যারামিটার রেফারেন্স
input_audio_transcription এবং realtime_input_config এর ফিল্ডগুলি ব্যবহার করে লাইভ ট্রান্সক্রিপশন কনফিগার করুন:
| প্যারামিটার | প্রকার | বর্ণনা |
|---|---|---|
language_codes | স্ট্রিংগুলির অ্যারে | BCP-47 ভাষা কোড (যেমন, ["en-US"] )। যদি এটি বাদ দেওয়া হয় বা খালি ( [] ) থাকে, তাহলে মডেলটি স্বয়ংক্রিয়ভাবে ভাষা শনাক্ত করে এবং বহুভাষিক বক্তৃতা পরিচালনা করে। |
custom_vocabulary | স্ট্রিংগুলির অ্যারে | স্পিচ রিকগনিশনকে প্রভাবিত করার জন্য ১,০০০টি পর্যন্ত নিজস্ব পরিভাষা, সংক্ষিপ্ত রূপ, ব্র্যান্ডের নাম বা বিশেষ্য পদ ব্যবহার করা যাবে। |
mode | স্ট্রিং | ট্রান্সক্রিপশন মোড: "VERBATIM" (ডিফল্ট) অথবা "SMART" (স্মার্ট ট্রান্সক্রিপশন)। "SMART" -এ সেট করা হলে, মডেলটি অপ্রয়োজনীয় শব্দ বাদ দেয়, তালিকা বিন্যাস করে এবং সাবলীলতার অভাব সংশোধন করে। |
automatic_activity_detection.disabled | বুলিয়ান | স্বয়ংক্রিয় ভয়েস অ্যাক্টিভিটি সনাক্তকরণ নিষ্ক্রিয় করতে এবং ম্যানুয়ালি activityStart ও activityEnd সিগন্যাল পাঠাতে এটিকে true তে সেট করুন। |
সার্ভার প্রতিক্রিয়া ক্ষেত্রগুলি
| মাঠ | বর্ণনা |
|---|---|
server_content.interim_input_transcription | ব্যবহারকারী যখন সক্রিয়ভাবে কথা বলছেন, তখন স্বল্প-বিলম্বের একটি অন্তর্বর্তীকালীন আংশিক প্রতিলিপি অনুমান অবিচ্ছিন্নভাবে নির্গত হতে থাকে। |
server_content.input_transcription | বক্তৃতার পালা শেষ হলে চূড়ান্ত ও প্রামাণ্য ইনপুট প্রতিলিপি নির্গত হয়। |
সীমাবদ্ধতা
- সেশনের সময়কাল: লাইভ ট্রান্সক্রিপশন সেশনগুলো সর্বোচ্চ ১০ মিনিট পর্যন্ত একটানা স্ট্রিমিং সমর্থন করে।
- স্পিকার ডায়ারাইজেশন: লাইভ স্ট্রিমিং সেশনে স্পিকার ডায়ারাইজেশন সমর্থিত নয়। স্পিকার ডায়ারাইজেশনের জন্য, নন-স্ট্রিমিং অডিও ট্রান্সক্রিপশন এন্ডপয়েন্টটি ব্যবহার করুন।
- শব্দ-স্তরের টাইমস্ট্যাম্প: লাইভ এপিআই-এর মাধ্যমে শব্দ-স্তরের টাইমস্ট্যাম্প সমর্থিত নয়। লাইভ এপিআই উচ্চারণ-স্তরের টাইমস্ট্যাম্প (
interim_input_transcriptionএবংinput_transcription) প্রদান করে। - নিজস্ব শব্দভান্ডার: আপনি
custom_vocabularyতে সর্বোচ্চ ১,০০০টি শব্দ প্রদান করতে পারেন, তবে সাধারণত ১০০টি পর্যন্ত শব্দ ব্যবহার করলে সবচেয়ে ভালো ফলাফল পাওয়া যায়। - মোড সামঞ্জস্যতা: স্মার্ট ট্রান্সক্রিপশন (
"mode": "SMART") অপ্রয়োজনীয় শব্দ বাদ দেয় এবং উদ্দেশ্য-সচেতন টেক্সট ফরম্যাট করে, কিন্তু এটি ওয়ার্ড অ্যানোটেশনের সাথে একত্রিত করা যায় না।
এরপর কী?
- নন-স্ট্রিমিং অডিও ফাইলের জন্য জেমিনি ট্রান্সক্রাইব ডকুমেন্টেশন পড়ুন।
- কথোপকথনমূলক ভয়েস এজেন্টদের জন্য লাইভ এপিআই ওভারভিউটি পড়ুন।
- রিয়েল-টাইম স্পিচ-টু-স্পিচ অনুবাদের জন্য লাইভ অনুবাদ নির্দেশিকাটি পড়ুন।
- লাইভ এপিআই স্ট্রিমিং-এর মূল্য জানতে প্রাইসিং পেজটি দেখুন।
- লাইভ এপিআই সক্ষমতা নির্দেশিকাটি অন্বেষণ করুন।