این یک راهنمای جامع است که قابلیتها و پیکربندیهای موجود با Live API را پوشش میدهد. برای مرور کلی و نمونه کد برای موارد استفاده رایج، به صفحه شروع به کار با Live API مراجعه کنید.
- با مفاهیم اصلی آشنا شوید: اگر هنوز این کار را نکردهاید، ابتدا صفحه شروع به کار با Live API را مطالعه کنید. این صفحه شما را با اصول اساسی Live API، نحوه عملکرد آن و رویکردهای مختلف پیادهسازی آشنا میکند.
- API زنده را در AI Studio امتحان کنید: ممکن است قبل از شروع ساخت، امتحان کردن API زنده در Google AI Studio مفید باشد. برای استفاده از API زنده در Google AI Studio، گزینه Stream را انتخاب کنید.
مثال زیر نحوه ایجاد اتصال با کلید API را نشان میدهد:
import asyncio
from google import genai
client = genai.Client()
model = "gemini-2.5-flash-native-audio-preview-12-2025"
config = {"response_modalities": ["AUDIO"]}
async def main():
async with client.aio.live.connect(model=model, config=config) as session:
print("Session started")
# Send content...
if __name__ == "__main__":
asyncio.run(main())
import { GoogleGenAI, Modality } from '@google/genai';
const ai = new GoogleGenAI({});
const model = 'gemini-2.5-flash-native-audio-preview-12-2025';
const config = { responseModalities: [Modality.AUDIO] };
async function main() {
const session = await ai.live.connect({
model: model,
callbacks: {
onopen: function () {
console.debug('Opened');
},
onmessage: function (message) {
console.debug(message);
},
onerror: function (e) {
console.debug('Error:', e.message);
},
onclose: function (e) {
console.debug('Close:', e.reason);
},
},
config: config,
});
console.debug("Session started");
// Send content...
session.close();
}
main();
بخشهای زیر مثالها و زمینههای پشتیبانی برای روشهای مختلف ورودی و خروجی موجود در Live API را ارائه میدهند.
رایجترین مثال صوتی، تبدیل صدا به صدا ، در راهنمای شروع به کار پوشش داده شده است.
دادههای صوتی در Live API همیشه خام، little-endian و PCM 16 بیتی هستند. خروجی صدا همیشه از نرخ نمونهبرداری 24 کیلوهرتز استفاده میکند. صدای ورودی به طور طبیعی 16 کیلوهرتز است، اما Live API در صورت نیاز نمونهبرداری مجدد میکند تا هر نرخ نمونهبرداری بتواند ارسال شود. برای انتقال نرخ نمونهبرداری صدای ورودی، نوع MIME هر Blob حاوی صدا را روی مقداری مانند audio/pcm;rate=16000 تنظیم کنید.
نحوه ارسال متن به این صورت است:
message = "Hello, how are you?"
await session.send_client_content(turns=message, turn_complete=True)
const message = 'Hello, how are you?';
session.sendClientContent({ turns: message, turnComplete: true });
از بهروزرسانیهای افزایشی برای ارسال ورودی متن، ایجاد زمینه جلسه یا بازیابی زمینه جلسه استفاده کنید. برای زمینههای کوتاه، میتوانید تعاملات نوبت به نوبت را برای نمایش توالی دقیق رویدادها ارسال کنید:
turns = [
{"role": "user", "parts": [{"text": "What is the capital of France?"}]},
{"role": "model", "parts": [{"text": "Paris"}]},
]
await session.send_client_content(turns=turns, turn_complete=False)
turns = [{"role": "user", "parts": [{"text": "What is the capital of Germany?"}]}]
await session.send_client_content(turns=turns, turn_complete=True)
let inputTurns = [
{ "role": "user", "parts": [{ "text": "What is the capital of France?" }] },
{ "role": "model", "parts": [{ "text": "Paris" }] },
]
session.sendClientContent({ turns: inputTurns, turnComplete: false })
inputTurns = [{ "role": "user", "parts": [{ "text": "What is the capital of Germany?" }] }]
session.sendClientContent({ turns: inputTurns, turnComplete: true })
برای متنهای طولانیتر، توصیه میشود یک خلاصه پیام واحد ارائه دهید تا پنجره متن برای تعاملات بعدی آزاد شود. برای روش دیگری برای بارگیری متن جلسه، به «از سرگیری جلسه» مراجعه کنید.
علاوه بر پاسخ مدل، میتوانید رونوشتهایی از خروجی صدا و ورودی صدا نیز دریافت کنید.
برای فعال کردن رونویسی خروجی صدای مدل، output_audio_transcription را در پیکربندی تنظیمات ارسال کنید. زبان رونویسی از پاسخ مدل استنباط میشود.
import asyncio
from google import genai
from google.genai import types
client = genai.Client()
model = "gemini-2.5-flash-native-audio-preview-12-2025"
config = {
"response_modalities": ["AUDIO"],
"output_audio_transcription": {}
}
async def main():
async with client.aio.live.connect(model=model, config=config) as session:
message = "Hello? Gemini are you there?"
await session.send_client_content(
turns={"role": "user", "parts": [{"text": message}]}, turn_complete=True
)
async for response in session.receive():
if response.server_content.model_turn:
print("Model turn:", response.server_content.model_turn)
if response.server_content.output_transcription:
print("Transcript:", response.server_content.output_transcription.text)
if __name__ == "__main__":
asyncio.run(main())
import { GoogleGenAI, Modality } from '@google/genai';
const ai = new GoogleGenAI({});
const model = 'gemini-2.5-flash-native-audio-preview-12-2025';
const config = {
responseModalities: [Modality.AUDIO],
outputAudioTranscription: {}
};
async function live() {
const responseQueue = [];
async function waitMessage() {
let done = false;
let message = undefined;
while (!done) {
message = responseQueue.shift();
if (message) {
done = true;
} else {
await new Promise((resolve) => setTimeout(resolve, 100));
}
}
return message;
}
async function handleTurn() {
const turns = [];
let done = false;
while (!done) {
const message = await waitMessage();
turns.push(message);
if (message.serverContent && message.serverContent.turnComplete) {
done = true;
}
}
return turns;
}
const session = await ai.live.connect({
model: model,
callbacks: {
onopen: function () {
console.debug('Opened');
},
onmessage: function (message) {
responseQueue.push(message);
},
onerror: function (e) {
console.debug('Error:', e.message);
},
onclose: function (e) {
console.debug('Close:', e.reason);
},
},
config: config,
});
const inputTurns = 'Hello how are you?';
session.sendClientContent({ turns: inputTurns });
const turns = await handleTurn();
for (const turn of turns) {
if (turn.serverContent && turn.serverContent.outputTranscription) {
console.debug('Received output transcription: %s\n', turn.serverContent.outputTranscription.text);
}
}
session.close();
}
async function main() {
await live().catch((e) => console.error('got error', e));
}
main();
برای فعال کردن رونویسی ورودی صدای مدل، input_audio_transcription را در تنظیمات پیکربندی ارسال کنید.
import asyncio
from pathlib import Path
from google import genai
from google.genai import types
client = genai.Client()
model = "gemini-2.5-flash-native-audio-preview-12-2025"
config = {
"response_modalities": ["AUDIO"],
"input_audio_transcription": {},
}
async def main():
async with client.aio.live.connect(model=model, config=config) as session:
audio_data = Path("16000.pcm").read_bytes()
await session.send_realtime_input(
audio=types.Blob(data=audio_data, mime_type='audio/pcm;rate=16000')
)
async for msg in session.receive():
if msg.server_content.input_transcription:
print('Transcript:', msg.server_content.input_transcription.text)
if __name__ == "__main__":
asyncio.run(main())
import { GoogleGenAI, Modality } from '@google/genai';
import * as fs from "node:fs";
import pkg from 'wavefile';
const { WaveFile } = pkg;
const ai = new GoogleGenAI({});
const model = 'gemini-2.5-flash-native-audio-preview-12-2025';
const config = {
responseModalities: [Modality.AUDIO],
inputAudioTranscription: {}
};
async function live() {
const responseQueue = [];
async function waitMessage() {
let done = false;
let message = undefined;
while (!done) {
message = responseQueue.shift();
if (message) {
done = true;
} else {
await new Promise((resolve) => setTimeout(resolve, 100));
}
}
return message;
}
async function handleTurn() {
const turns = [];
let done = false;
while (!done) {
const message = await waitMessage();
turns.push(message);
if (message.serverContent && message.serverContent.turnComplete) {
done = true;
}
}
return turns;
}
const session = await ai.live.connect({
model: model,
callbacks: {
onopen: function () {
console.debug('Opened');
},
onmessage: function (message) {
responseQueue.push(message);
},
onerror: function (e) {
console.debug('Error:', e.message);
},
onclose: function (e) {
console.debug('Close:', e.reason);
},
},
config: config,
});
// Send Audio Chunk
const fileBuffer = fs.readFileSync("16000.wav");
// Ensure audio conforms to API requirements (16-bit PCM, 16kHz, mono)
const wav = new WaveFile();
wav.fromBuffer(fileBuffer);
wav.toSampleRate(16000);
wav.toBitDepth("16");
const base64Audio = wav.toBase64();
// If already in correct format, you can use this:
// const fileBuffer = fs.readFileSync("sample.pcm");
// const base64Audio = Buffer.from(fileBuffer).toString('base64');
session.sendRealtimeInput(
{
audio: {
data: base64Audio,
mimeType: "audio/pcm;rate=16000"
}
}
);
const turns = await handleTurn();
for (const turn of turns) {
if (turn.text) {
console.debug('Received text: %s\n', turn.text);
}
else if (turn.data) {
console.debug('Received inline data: %s\n', turn.data);
}
else if (turn.serverContent && turn.serverContent.inputTranscription) {
console.debug('Received input transcription: %s\n', turn.serverContent.inputTranscription.text);
}
}
session.close();
}
async function main() {
await live().catch((e) => console.error('got error', e));
}
main();
مدلهای خروجی صدای بومی از هر یک از صداهای موجود برای مدلهای تبدیل متن به گفتار (TTS) ما پشتیبانی میکنند. میتوانید به همه صداها در AI Studio گوش دهید.
برای مشخص کردن یک صدا، نام صدا را در شیء speechConfig به عنوان بخشی از پیکربندی جلسه تنظیم کنید:
config = {
"response_modalities": ["AUDIO"],
"speech_config": {
"voice_config": {"prebuilt_voice_config": {"voice_name": "Kore"}}
},
}
const config = {
responseModalities: [Modality.AUDIO],
speechConfig: { voiceConfig: { prebuiltVoiceConfig: { voiceName: "Kore" } } }
};
رابط برنامهنویسی زنده (Live API) از چندین زبان پشتیبانی میکند. مدلهای خروجی صدای بومی بهطور خودکار زبان مناسب را انتخاب میکنند و از تنظیم صریح کد زبان پشتیبانی نمیکنند.
جدیدترین مدلهای ما دارای خروجی صدای بومی هستند که گفتار طبیعی و واقعگرایانه و عملکرد چندزبانه بهبود یافته را فراهم میکند. صدای بومی همچنین ویژگیهای پیشرفتهای مانند گفتگوی عاطفی (آگاه از احساسات) ، صدای پیشگیرانه (که در آن مدل هوشمندانه تصمیم میگیرد چه زمانی به ورودی پاسخ دهد) و «تفکر» را امکانپذیر میکند.
این ویژگی به Gemini اجازه میدهد تا سبک پاسخ خود را با بیان و لحن ورودی تطبیق دهد.
برای استفاده از affective dialog، نسخه api را روی v1alpha تنظیم کنید و enable_affective_dialog در پیام تنظیمات روی true تنظیم کنید:
client = genai.Client(http_options={"api_version": "v1alpha"})
config = types.LiveConnectConfig(
response_modalities=["AUDIO"],
enable_affective_dialog=True
)
const ai = new GoogleGenAI({ httpOptions: {"apiVersion": "v1alpha"} });
const config = {
responseModalities: [Modality.AUDIO],
enableAffectiveDialog: true
};
وقتی این ویژگی فعال باشد، Gemini میتواند به صورت پیشگیرانه تصمیم بگیرد که در صورت نامرتبط بودن محتوا، پاسخی ندهد.
برای استفاده از آن، نسخه api را روی v1alpha تنظیم کنید و فیلد proactivity را در پیام راهاندازی پیکربندی کنید و proactive_audio روی true تنظیم کنید:
client = genai.Client(http_options={"api_version": "v1alpha"})
config = types.LiveConnectConfig(
response_modalities=["AUDIO"],
proactivity={'proactive_audio': True}
)
const ai = new GoogleGenAI({ httpOptions: {"apiVersion": "v1alpha"} });
const config = {
responseModalities: [Modality.AUDIO],
proactivity: { proactiveAudio: true }
}
جدیدترین مدل خروجی صدای بومی gemini-2.5-flash-native-audio-preview-12-2025 از قابلیتهای تفکر پشتیبانی میکند و تفکر پویا به طور پیشفرض فعال است.
پارامتر thinkingBudget مدل را در مورد تعداد توکنهای تفکر که هنگام تولید پاسخ استفاده میشوند، راهنمایی میکند. میتوانید با تنظیم thinkingBudget روی 0 ، thinking را غیرفعال کنید. برای اطلاعات بیشتر در مورد جزئیات پیکربندی thinkingBudget مدل، به مستندات thinking Budgets مراجعه کنید.
model = "gemini-2.5-flash-native-audio-preview-12-2025"
config = types.LiveConnectConfig(
response_modalities=["AUDIO"]
thinking_config=types.ThinkingConfig(
thinking_budget=1024,
)
)
async with client.aio.live.connect(model=model, config=config) as session:
# Send audio input and receive audio
const model = 'gemini-2.5-flash-native-audio-preview-12-2025';
const config = {
responseModalities: [Modality.AUDIO],
thinkingConfig: {
thinkingBudget: 1024,
},
};
async function main() {
const session = await ai.live.connect({
model: model,
config: config,
callbacks: ...,
});
// Send audio input and receive audio
session.close();
}
main();
علاوه بر این، میتوانید با تنظیم includeThoughts روی true در پیکربندی خود، خلاصههای فکر را فعال کنید. برای اطلاعات بیشتر به خلاصههای فکر مراجعه کنید:
model = "gemini-2.5-flash-native-audio-preview-12-2025"
config = types.LiveConnectConfig(
response_modalities=["AUDIO"]
thinking_config=types.ThinkingConfig(
thinking_budget=1024,
include_thoughts=True
)
)
const model = 'gemini-2.5-flash-native-audio-preview-12-2025';
const config = {
responseModalities: [Modality.AUDIO],
thinkingConfig: {
thinkingBudget: 1024,
includeThoughts: true,
},
};
تشخیص فعالیت صوتی (VAD) به مدل اجازه میدهد تا تشخیص دهد چه زمانی یک فرد صحبت میکند. این امر برای ایجاد مکالمات طبیعی ضروری است، زیرا به کاربر اجازه میدهد تا در هر زمانی مدل را قطع کند.
وقتی VAD یک وقفه را تشخیص میدهد، تولید مداوم لغو و کنار گذاشته میشود. فقط اطلاعاتی که قبلاً به کلاینت ارسال شده است در تاریخچه جلسه نگه داشته میشود. سپس سرور یک پیام BidiGenerateContentServerContent برای گزارش وقفه ارسال میکند.
سپس سرور Gemini هرگونه فراخوانی تابع در حال انتظار را حذف میکند و یک پیام BidiGenerateContentServerContent با شناسههای فراخوانیهای لغو شده ارسال میکند.
async for response in session.receive():
if response.server_content.interrupted is True:
# The generation was interrupted
# If realtime playback is implemented in your application,
# you should stop playing audio and clear queued playback here.
const turns = await handleTurn();
for (const turn of turns) {
if (turn.serverContent && turn.serverContent.interrupted) {
// The generation was interrupted
// If realtime playback is implemented in your application,
// you should stop playing audio and clear queued playback here.
}
}
به طور پیشفرض، مدل به طور خودکار VAD را روی یک جریان ورودی صوتی پیوسته انجام میدهد. VAD را میتوان با فیلد realtimeInputConfig.automaticActivityDetection از setup configuration پیکربندی کرد.
وقتی جریان صدا بیش از یک ثانیه متوقف میشود (مثلاً به دلیل خاموش کردن میکروفون توسط کاربر)، باید یک رویداد audioStreamEnd برای پاک کردن هرگونه صدای ذخیره شده ارسال شود. کلاینت میتواند ارسال دادههای صوتی را در هر زمانی از سر بگیرد.
# example audio file to try:
# URL = "https://storage.googleapis.com/generativeai-downloads/data/hello_are_you_there.pcm"
# !wget -q $URL -O sample.pcm
import asyncio
from pathlib import Path
from google import genai
from google.genai import types
client = genai.Client()
model = "gemini-live-2.5-flash-preview"
config = {"response_modalities": ["TEXT"]}
async def main():
async with client.aio.live.connect(model=model, config=config) as session:
audio_bytes = Path("sample.pcm").read_bytes()
await session.send_realtime_input(
audio=types.Blob(data=audio_bytes, mime_type="audio/pcm;rate=16000")
)
# if stream gets paused, send:
# await session.send_realtime_input(audio_stream_end=True)
async for response in session.receive():
if response.text is not None:
print(response.text)
if __name__ == "__main__":
asyncio.run(main())
// example audio file to try:
// URL = "https://storage.googleapis.com/generativeai-downloads/data/hello_are_you_there.pcm"
// !wget -q $URL -O sample.pcm
import { GoogleGenAI, Modality } from '@google/genai';
import * as fs from "node:fs";
const ai = new GoogleGenAI({});
const model = 'gemini-live-2.5-flash-preview';
const config = { responseModalities: [Modality.TEXT] };
async function live() {
const responseQueue = [];
async function waitMessage() {
let done = false;
let message = undefined;
while (!done) {
message = responseQueue.shift();
if (message) {
done = true;
} else {
await new Promise((resolve) => setTimeout(resolve, 100));
}
}
return message;
}
async function handleTurn() {
const turns = [];
let done = false;
while (!done) {
const message = await waitMessage();
turns.push(message);
if (message.serverContent && message.serverContent.turnComplete) {
done = true;
}
}
return turns;
}
const session = await ai.live.connect({
model: model,
callbacks: {
onopen: function () {
console.debug('Opened');
},
onmessage: function (message) {
responseQueue.push(message);
},
onerror: function (e) {
console.debug('Error:', e.message);
},
onclose: function (e) {
console.debug('Close:', e.reason);
},
},
config: config,
});
// Send Audio Chunk
const fileBuffer = fs.readFileSync("sample.pcm");
const base64Audio = Buffer.from(fileBuffer).toString('base64');
session.sendRealtimeInput(
{
audio: {
data: base64Audio,
mimeType: "audio/pcm;rate=16000"
}
}
);
// if stream gets paused, send:
// session.sendRealtimeInput({ audioStreamEnd: true })
const turns = await handleTurn();
for (const turn of turns) {
if (turn.text) {
console.debug('Received text: %s\n', turn.text);
}
else if (turn.data) {
console.debug('Received inline data: %s\n', turn.data);
}
}
session.close();
}
async function main() {
await live().catch((e) => console.error('got error', e));
}
main();
با send_realtime_input ، API به صورت خودکار بر اساس VAD به صدا پاسخ میدهد. در حالی که send_client_content پیامها را به ترتیب به متن مدل اضافه میکند، send_realtime_input برای پاسخگویی بهینه شده است، البته با وجود اینکه ترتیب قطعی را از دست میدهد.
برای کنترل بیشتر بر فعالیت VAD، میتوانید پارامترهای زیر را پیکربندی کنید. برای اطلاعات بیشتر به مرجع API مراجعه کنید.
from google.genai import types
config = {
"response_modalities": ["TEXT"],
"realtime_input_config": {
"automatic_activity_detection": {
"disabled": False, # default
"start_of_speech_sensitivity": types.StartSensitivity.START_SENSITIVITY_LOW,
"end_of_speech_sensitivity": types.EndSensitivity.END_SENSITIVITY_LOW,
"prefix_padding_ms": 20,
"silence_duration_ms": 100,
}
}
}
import { GoogleGenAI, Modality, StartSensitivity, EndSensitivity } from '@google/genai';
const config = {
responseModalities: [Modality.TEXT],
realtimeInputConfig: {
automaticActivityDetection: {
disabled: false, // default
startOfSpeechSensitivity: StartSensitivity.START_SENSITIVITY_LOW,
endOfSpeechSensitivity: EndSensitivity.END_SENSITIVITY_LOW,
prefixPaddingMs: 20,
silenceDurationMs: 100,
}
}
};
از طرف دیگر، میتوان VAD خودکار را با تنظیم realtimeInputConfig.automaticActivityDetection.disabled روی true در پیام راهاندازی غیرفعال کرد. در این پیکربندی، کلاینت مسئول تشخیص گفتار کاربر و ارسال پیامهای activityStart و activityEnd در زمانهای مناسب است. در این پیکربندی، audioStreamEnd ارسال نمیشود. در عوض، هرگونه وقفه در جریان با یک پیام activityEnd مشخص میشود.
config = {
"response_modalities": ["TEXT"],
"realtime_input_config": {"automatic_activity_detection": {"disabled": True}},
}
async with client.aio.live.connect(model=model, config=config) as session:
# ...
await session.send_realtime_input(activity_start=types.ActivityStart())
await session.send_realtime_input(
audio=types.Blob(data=audio_bytes, mime_type="audio/pcm;rate=16000")
)
await session.send_realtime_input(activity_end=types.ActivityEnd())
# ...
const config = {
responseModalities: [Modality.TEXT],
realtimeInputConfig: {
automaticActivityDetection: {
disabled: true,
}
}
};
session.sendRealtimeInput({ activityStart: {} })
session.sendRealtimeInput(
{
audio: {
data: base64Audio,
mimeType: "audio/pcm;rate=16000"
}
}
);
session.sendRealtimeInput({ activityEnd: {} })
میتوانید تعداد کل توکنهای مصرفشده را در فیلد usageMetadata پیام سرور برگشتی پیدا کنید.
async for message in session.receive():
# The server will periodically send messages that include UsageMetadata.
if message.usage_metadata:
usage = message.usage_metadata
print(
f"Used {usage.total_token_count} tokens in total. Response token breakdown:"
)
for detail in usage.response_tokens_details:
match detail:
case types.ModalityTokenCount(modality=modality, token_count=count):
print(f"{modality}: {count}")
const turns = await handleTurn();
for (const turn of turns) {
if (turn.usageMetadata) {
console.debug('Used %s tokens in total. Response token breakdown:\n', turn.usageMetadata.totalTokenCount);
for (const detail of turn.usageMetadata.responseTokensDetails) {
console.debug('%s\n', detail);
}
}
}
شما میتوانید با تنظیم فیلد mediaResolution به عنوان بخشی از پیکربندی جلسه، وضوح رسانه را برای رسانه ورودی مشخص کنید:
from google.genai import types
config = {
"response_modalities": ["AUDIO"],
"media_resolution": types.MediaResolution.MEDIA_RESOLUTION_LOW,
}
import { GoogleGenAI, Modality, MediaResolution } from '@google/genai';
const config = {
responseModalities: [Modality.TEXT],
mediaResolution: MediaResolution.MEDIA_RESOLUTION_LOW,
};
هنگام برنامهریزی پروژه خود، محدودیتهای زیر را در مورد Live API در نظر بگیرید.
شما فقط میتوانید یک روش پاسخ ( TEXT یا AUDIO ) را در هر جلسه در پیکربندی جلسه تنظیم کنید. تنظیم هر دو منجر به یک پیام خطای پیکربندی میشود. این بدان معناست که میتوانید مدل را طوری پیکربندی کنید که با متن یا صدا پاسخ دهد، اما نمیتواند هر دو را در یک جلسه داشته باشد.
API زنده (Live API) به طور پیشفرض فقط احراز هویت سرور به سرور را ارائه میدهد. اگر برنامه API زنده خود را با استفاده از رویکرد کلاینت به سرور پیادهسازی میکنید، برای کاهش خطرات امنیتی باید از توکنهای موقت (ephemeral tokens) استفاده کنید.
جلسات فقط صوتی به ۱۵ دقیقه و جلسات صوتی به همراه تصویری به ۲ دقیقه محدود میشوند. با این حال، میتوانید تکنیکهای مختلف مدیریت جلسه را برای افزایش نامحدود مدت زمان جلسه پیکربندی کنید.
یک جلسه محدودیت پنجره زمینهای به میزان زیر دارد:
- ۱۲۸ هزار توکن برای مدلهای خروجی صدای بومی
- ۳۲ هزار توکن برای سایر مدلهای Live API
API زنده از زبانهای زیر پشتیبانی میکند.
| زبان | کد BCP-47 | زبان | کد BCP-47 |
|---|---|---|---|
| آلمانی (آلمان) | de-DE | انگلیسی (استرالیا)* | en-AU |
| انگلیسی (بریتانیا)* | en-GB | انگلیسی (هند) | en-IN |
| انگلیسی (آمریکایی) | en-US | اسپانیایی (آمریکایی) | es-US |
| فرانسوی (فرانسه) | fr-FR | هندی (هند) | hi-IN |
| پرتغالی (برزیل) | pt-BR | عربی (عمومی) | ar-XA |
| اسپانیایی (اسپانیا)* | es-ES | فرانسوی (کانادا)* | fr-CA |
| اندونزیایی (اندونزیایی) | id-ID | ایتالیایی (ایتالیا) | it-IT |
| ژاپنی (ژاپن) | ja-JP | ترکی (ترکیه) | tr-TR |
| ویتنامی (ویتنام) | vi-VN | بنگالی (هند) | bn-IN |
| گجراتی (هند)* | gu-IN | زبان کانارا (هند)* | kn-IN |
| مراتی (هند) | mr-IN | مالایالامی (هند)* | ml-IN |
| تامیل (هند) | ta-IN | تلوگو (هند) | te-IN |
| هلندی (هلند) | nl-NL | کرهای (کره جنوبی) | ko-KR |
| چینی ماندارین (چین)* | cmn-CN | لهستانی (لهستان) | pl-PL |
| روسی (روسیه) | ru-RU | تایلندی (تایلند) | th-TH |
زبانهایی که با ستاره (*) مشخص شدهاند، برای صدای بومی در دسترس نیستند .
- برای اطلاعات ضروری در مورد استفاده مؤثر از Live API، راهنماهای «استفاده از ابزار» و «مدیریت جلسه» را مطالعه کنید.
- API زنده را در Google AI Studio امتحان کنید.
- برای اطلاعات بیشتر در مورد مدلهای Live API، به صفحه Gemini 2.5 Flash Native Audio در صفحه مدلها مراجعه کنید.
- مثالهای بیشتری را در کتاب آشپزی Live API ، کتاب آشپزی Live API Tools و اسکریپت Live API Get Started امتحان کنید.