Gemini Live API, çift yönlü bir Gemini modeliyle düşük gecikmeli, anlık sesli ve görüntülü etkileşimler sağlar.
Live API ve özel model ailesi, sürekli ses, video veya metin akışlarını işleyerek anında, insan benzeri sözlü yanıtlar verebilir ve kullanıcılarınız için doğal bir sohbet deneyimi oluşturabilir.
Bu sayfada, en yaygın özellik olan ses girişi ve çıkışını canlı olarak aktarma ile nasıl başlayacağınız açıklanmaktadır. Ancak Live API, birçok farklı özelliği ve yapılandırma seçeneğini destekler.
Live API, istemci ile Gemini sunucusu arasında oturum oluşturmak için WebSocket bağlantısı oluşturan durum bilgili bir API'dir. Ayrıntılar için Live API referans belgelerini inceleyin (Gemini Developer API | Agent Platform Gemini API (formerly Vertex AI)).
Faydalı kaynaklara göz atın
Swift - hızlı başlangıç uygulaması | Android - hızlı başlangıç uygulaması | Web - hızlı başlangıç uygulaması | Flutter - hızlı başlangıç uygulaması | Unity - yakında!
Gemini Live API deneyimini gerçek bir dağıtılmış uygulamada yaşayın. Firebase konsolu üzerinden erişilebilen Flutter AI Atölyesi uygulamasına göz atın.
Başlamadan önce
Henüz yapmadıysanız başlangıç kılavuzundaki adımları tamamlayın. Bu kılavuzda Firebase projenizi nasıl oluşturacağınız, uygulamanızı Firebase'e nasıl bağlayacağınız, SDK'yı nasıl ekleyeceğiniz, seçtiğiniz Gemini API sağlayıcı için arka uç hizmetini nasıl başlatacağınız ve bir LiveModel örneği nasıl oluşturacağınız açıklanmaktadır.
Google AI Studio veya Agent Studio'da istemler ve Live API ile prototip oluşturabilirsiniz.
Bu özelliği destekleyen modeller
3.x modelleri
Gemini Developer API
gemini-3.1-flash-live-preview
Bu bir önizleme modeli olsa da Gemini Developer API'nın "ücretsiz katmanında" kullanılabilir.
Agent Platform Gemini API (formerly Vertex AI)
Gemini Live 3.x modelleri için destek yok
2.5 modelleri
Modelin adı Gemini API sağlayıcısına göre farklılık gösterse de özellikleri aynıdır.
Gemini Developer API
gemini-2.5-flash-native-audio-preview-12-2025gemini-2.5-flash-native-audio-preview-09-2025
Bu modeller önizleme aşamasında olsa da Gemini Developer API'nin "ücretsiz katmanında" kullanılabilir.
Agent Platform Gemini API (formerly Vertex AI)
gemini-live-2.5-flash-native-audio(Aralık 2025'te yayınlandı)gemini-live-2.5-flash-preview-native-audio-09-2025
Agent Platform Gemini API (formerly Vertex AI) kullanılırken Live API 2.5 modelleri
globalkonumunda kullanılamaz.
Ses giriş ve çıkışını canlı yayınlama
|
Bu sayfada sağlayıcıya özel içerikleri ve kodları görüntülemek için Gemini API sağlayıcınızı tıklayın. |
Aşağıdaki örnekte, akışla aktarılan ses girişi göndermek ve akışla aktarılan ses çıkışı almak için temel uygulama gösterilmektedir.
Live API ile ilgili diğer seçenekler ve özellikler için bu sayfanın ilerleyen kısımlarında yer alan "Başka neler yapabilirsiniz?" bölümünü inceleyin.
Swift
Live API modelini kullanmak için bir LiveModel örneği oluşturun ve yanıt modalitesini audio olarak ayarlayın.
import FirebaseAILogic
// Initialize the Gemini Developer API backend service.
// Create a `liveModel` instance with a model that supports the Live API.
let liveModel = FirebaseAI.firebaseAI(backend: .googleAI()).liveModel(
modelName: "GEMINI_LIVE_API_MODEL_NAME",
// Configure the model to respond with audio.
generationConfig: LiveGenerationConfig(
responseModalities: [.audio]
)
)
do {
let session = try await liveModel.connect()
// Load the audio file, or tap a microphone.
guard let audioFile = NSDataAsset(name: "audio.pcm") else {
fatalError("Failed to load audio file")
}
// Provide the audio data.
await session.sendAudioRealtime(audioFile.data)
var outputText = ""
for try await message in session.responses {
if case let .content(content) = message.payload {
content.modelTurn?.parts.forEach { part in
if let part = part as? InlineDataPart, part.mimeType.starts(with: "audio/pcm") {
// Handle 16bit pcm audio data at 24khz
playAudio(part.data)
}
}
// Optional: if you don't need to send more requests.
if content.isTurnComplete {
await session.close()
}
}
}
} catch {
fatalError(error.localizedDescription)
}
Kotlin
Live API modelini kullanmak için bir LiveModel örneği oluşturun ve yanıt modalitesini AUDIO olarak ayarlayın.
// Initialize the Gemini Developer API backend service.
// Create a `liveModel` instance with a model that supports the Live API.
val liveModel = Firebase.ai(backend = GenerativeBackend.googleAI()).liveModel(
modelName = "GEMINI_LIVE_API_MODEL_NAME",
// Configure the model to respond with audio.
generationConfig = liveGenerationConfig {
responseModality = ResponseModality.AUDIO
}
)
val session = liveModel.connect()
// This is the recommended approach.
// However, you can create your own recorder and handle the stream.
session.startAudioConversation()
Java
Live API modelini kullanmak için bir LiveModel örneği oluşturun ve yanıt modalitesini AUDIO olarak ayarlayın.
ExecutorService executor = Executors.newFixedThreadPool(1);
// Initialize the Gemini Developer API backend service.
// Create a `liveModel` instance with a model that supports the Live API.
LiveGenerativeModel lm = FirebaseAI.getInstance(GenerativeBackend.googleAI()).liveModel(
"GEMINI_LIVE_API_MODEL_NAME",
// Configure the model to respond with audio.
new LiveGenerationConfig.Builder()
.setResponseModality(ResponseModality.AUDIO)
.build()
);
LiveModelFutures liveModel = LiveModelFutures.from(lm);
ListenableFuture<LiveSession> sessionFuture = liveModel.connect();
Futures.addCallback(sessionFuture, new FutureCallback<LiveSession>() {
@Override
public void onSuccess(LiveSession ses) {
LiveSessionFutures session = LiveSessionFutures.from(ses);
session.startAudioConversation();
}
@Override
public void onFailure(Throwable t) {
// Handle exceptions
}
}, executor);
Web
Live API modelini kullanmak için bir LiveGenerativeModel örneği oluşturun ve yanıt modalitesini AUDIO olarak ayarlayın.
import { initializeApp } from "firebase/app";
import { getAI, getLiveGenerativeModel, GoogleAIBackend, ResponseModality } from "firebase/ai";
// TODO(developer): Replace the following with your app's Firebase configuration
// See: https://firebase.google.com/docs/web/learn-more#config-object
const firebaseConfig = {
// ...
};
// Initialize FirebaseApp
const firebaseApp = initializeApp(firebaseConfig);
// Initialize the Gemini Developer API backend service.
const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });
// Create a `LiveGenerativeModel` instance with a model that supports the Live API.
const liveModel = getLiveGenerativeModel(ai, {
model: "GEMINI_LIVE_API_MODEL_NAME",
// Configure the model to respond with audio.
generationConfig: {
responseModalities: [ResponseModality.AUDIO],
},
});
const session = await liveModel.connect();
// Start the audio conversation.
const audioConversationController = await startAudioConversation(session);
// ... Later, to stop the audio conversation
// await audioConversationController.stop()
Dart
Live API modelini kullanmak için bir LiveGenerativeModel örneği oluşturun ve yanıt modalitesini audio olarak ayarlayın.
import 'package:firebase_ai/firebase_ai.dart';
import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';
import 'package:your_audio_recorder_package/your_audio_recorder_package.dart';
late LiveSession _session;
final _audioRecorder = YourAudioRecorder();
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
// Initialize the Gemini Developer API backend service.
// Create a `liveGenerativeModel` instance with a model that supports the Live API.
final liveModel = FirebaseAI.googleAI().liveGenerativeModel(
model: 'GEMINI_LIVE_API_MODEL_NAME',
// Configure the model to respond with audio.
liveGenerationConfig: LiveGenerationConfig(
responseModalities: [ResponseModalities.audio],
),
);
_session = await liveModel.connect();
final audioRecordStream = _audioRecorder.startRecordingStream();
// Map the Uint8List stream to InlineDataPart stream.
final mediaChunkStream = audioRecordStream.map((data) {
return InlineDataPart('audio/pcm', data);
});
await for (final chunk in mediaChunkStream) {
await _session.sendAudioRealtime(chunk);
}
// In a separate thread, receive the audio response from the model.
await for (final message in _session.receive()) {
// Process the received message.
}
Unity
Live API modelini kullanmak için bir LiveModel örneği oluşturun ve yanıt modalitesini Audio olarak ayarlayın.
using Firebase;
using Firebase.AI;
async Task SendTextReceiveAudio() {
// Initialize the Gemini Developer API backend service.
// Create a `LiveModel` instance with a model that supports the Live API.
var liveModel = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI()).GetLiveModel(
modelName: "GEMINI_LIVE_API_MODEL_NAME",
// Configure the model to respond with audio.
liveGenerationConfig: new LiveGenerationConfig(
responseModalities: new[] { ResponseModality.Audio })
);
LiveSession session = await liveModel.ConnectAsync();
// Start a coroutine to send audio from the Microphone.
var recordingCoroutine = StartCoroutine(SendAudio(session));
// Start receiving the response.
await ReceiveAudio(session);
}
IEnumerator SendAudio(LiveSession liveSession) {
string microphoneDeviceName = null;
int recordingFrequency = 16000;
int recordingBufferSeconds = 2;
var recordingClip = Microphone.Start(microphoneDeviceName, true,
recordingBufferSeconds, recordingFrequency);
int lastSamplePosition = 0;
while (true) {
if (!Microphone.IsRecording(microphoneDeviceName)) {
yield break;
}
int currentSamplePosition = Microphone.GetPosition(microphoneDeviceName);
if (currentSamplePosition != lastSamplePosition) {
// The Microphone uses a circular buffer, so we need to check if the
// current position wrapped around to the beginning, and handle it accordingly.
int sampleCount;
if (currentSamplePosition > lastSamplePosition) {
sampleCount = currentSamplePosition - lastSamplePosition;
} else {
sampleCount = recordingClip.samples - lastSamplePosition + currentSamplePosition;
}
if (sampleCount > 0) {
// Get the audio chunk.
float[] samples = new float[sampleCount];
recordingClip.GetData(samples, lastSamplePosition);
// Send the data, discarding the resulting Task to avoid the warning.
_ = liveSession.SendAudioAsync(samples);
lastSamplePosition = currentSamplePosition;
}
}
// Wait for a short delay before reading the next sample from the Microphone.
const float MicrophoneReadDelay = 0.5f;
yield return new WaitForSeconds(MicrophoneReadDelay);
}
}
Queue<float> audioBuffer = new();
async Task ReceiveAudio(LiveSession liveSession) {
int sampleRate = 24000;
int channelCount = 1;
// Create a looping AudioClip to fill with the received audio data.
int bufferSamples = (int)(sampleRate * channelCount);
AudioClip clip = AudioClip.Create("StreamingPCM", bufferSamples, channelCount,
sampleRate, true, OnAudioRead);
// Attach the clip to an AudioSource and start playing it.
AudioSource audioSource = GetComponent<AudioSource>();
audioSource.clip = clip;
audioSource.loop = true;
audioSource.Play();
// Start receiving the response.
await foreach (var message in liveSession.ReceiveAsync()) {
// Process the received message
foreach (float[] pcmData in message.AudioAsFloat) {
lock (audioBuffer) {
foreach (float sample in pcmData) {
audioBuffer.Enqueue(sample);
}
}
}
}
}
// This method is called by the AudioClip to load audio data.
private void OnAudioRead(float[] data) {
int samplesToProvide = data.Length;
int samplesProvided = 0;
lock(audioBuffer) {
while (samplesProvided < samplesToProvide && audioBuffer.Count > 0) {
data[samplesProvided] = audioBuffer.Dequeue();
samplesProvided++;
}
}
while (samplesProvided < samplesToProvide) {
data[samplesProvided] = 0.0f;
samplesProvided++;
}
}
Fiyatlandırma ve jeton sayma
Live API modellerinin fiyatlandırma bilgilerini, seçtiğiniz Gemini API sağlayıcısının belgelerinde bulabilirsiniz: Gemini Developer API | Agent Platform Gemini API (formerly Vertex AI).
Gemini API sağlayıcınızdan bağımsız olarak Live API, Count Tokens API'yi desteklemez.
Başka ne yapabilirsin?
Live API için çeşitli giriş modalitelerini (ses, metin veya video + ses) akış olarak aktarma gibi tüm özellikleri inceleyin.
Transkripsiyon ekleme, yanıt sesini ayarlama veya ses etkinliği algılamayı (VAD) yapılandırma (ör. kesintileri yönetmek için) gibi çeşitli yapılandırma seçeneklerini kullanarak uygulamanızı özelleştirin.
Oturumun ortasında içeriği güncelleme, kullanıcı etkinliğini manuel olarak bildirme, bağlam penceresini sıkıştırma, oturumun ne zaman sona ereceğini algılama ve oturumu devam ettirme gibi oturumları yönetme hakkında bilgi edinin.
Modele, işlev çağrısı ve
Google Search ile temellendirme gibi araçlara erişim vererek uygulamanızı güçlendirin. Live API ile araçların kullanımına ilişkin resmi belgeler yakında yayınlanacak.Live API kullanımıyla ilgili sınırlar ve teknik özellikler (ör. oturum süresi, sıklık sınırları, desteklenen diller) hakkında bilgi edinin.