Gemini 3.5 Live Translate supports low-latency, real-time speech-to-speech translation between 70+ languages using the gemini-3.5-live-translate-preview model, available through Agent Platform. By configuring the Live API with translation settings, you can stream audio in one language and receive translated audio output in another language, enabling seamless real-time voice-to-voice translation.
To get started, view the introductory notebook for Gemini 3.5 Live Translate
Live streaming translation
The BidiGenerateContent (Live) API maintains a persistent, bidirectional WebSocket connection. You stream raw audio chunks to the session and receive translated audio chunks and optional transcripts in real time.
import asyncio
from google import genai
from google.genai import types
# Initialize the client for Vertex AI / Agent Platform
client = genai.Client(enterprise=True, project=PROJECT_ID, location=LOCATION)
model = "gemini-3.5-live-translate-preview"
config = types.LiveConnectConfig(
response_modalities=["AUDIO"],
input_audio_transcription=types.AudioTranscriptionConfig(),
output_audio_transcription=types.AudioTranscriptionConfig(),
translation_config=types.TranslationConfig(
target_language_code="pl",
echo_target_language=True,
),
)
async def streaming_translation(audio_stream_generator):
async with client.aio.live.connect(model=model, config=config) as session:
# In a complete implementation, stream audio chunks concurrently:
# async for chunk in audio_stream_generator:
# await session.send_realtime_input(
# audio=types.Blob(data=chunk, mime_type="audio/pcm;rate=16000")
# )
async for response in session.receive():
if response.server_content:
server_content = response.server_content
if server_content.input_transcription:
print(f"Input transcript: {server_content.input_transcription.text}")
if server_content.output_transcription:
print(f"Output transcript: {server_content.output_transcription.text}")
if server_content.model_turn:
for part in server_content.model_turn.parts:
if part.inline_data:
translated_audio_chunk = part.inline_data.data
# Process or stream translated audio (24kHz PCM)
print(f"Received translated audio: {len(translated_audio_chunk)} bytes")
Audio specifications
Stream audio as raw, little-endian, 16-bit linear PCM:
Input format: 16-bit linear PCM at 16kHz (mono, little-endian).
Output format: 16-bit linear PCM at 24kHz (mono, little-endian).
Streaming chunk size: Chunks of 100ms duration are recommended for optimal balance between throughput and latency.
# Streaming an audio chunk to an active session
await session.send_realtime_input(
audio=types.Blob(
data=pcm_bytes,
mime_type="audio/pcm;rate=16000",
)
)
Configuration
Live Translation is configured by attaching a TranslationConfig to your LiveConnectConfig.
Configuration parameters
target_language_code(string): The BCP-47 language code for the desired output language (e.g.,"pl","es","ja"). Defaults to"en".echo_target_language(boolean): Controls behavior when spoken input is already in the target language:True: The model reproduces and echoes the input speech in the output stream.False: The model remains silent when input matches the target language. Defaults toFalse.
input_audio_transcription(AudioTranscriptionConfig): Optional. Enables synchronized text transcription for the incoming source audio.output_audio_transcription(AudioTranscriptionConfig): Optional. Enables synchronized text transcription for the outgoing translated audio.
Language support
The following languages and BCP-47 language codes are supported for Gemini 3.5 Live Translate:
| Language | BCP-47 Code | Language | BCP-47 Code |
|---|---|---|---|
| Afrikaans | af |
Kazakh | kk |
| Akan | ak |
Khmer | km |
| Albanian | sq |
Kinyarwanda | rw |
| Amharic | am |
Korean | ko |
| Arabic | ar |
Lao | lo |
| Armenian | hy |
Latvian | lv |
| Azerbaijani | az |
Lithuanian | lt |
| Basque | eu |
Macedonian | mk |
| Belarusian | be |
Malay | ms |
| Bengali | bn |
Malayalam | ml |
| Bulgarian | bg |
Marathi | mr |
| Burmese (Myanmar) | my |
Mongolian | mn |
| Catalan | ca |
Nepali | ne |
| Chinese (Simplified) | zh-Hans |
Norwegian | no, nb |
| Chinese (Traditional) | zh-Hant |
Persian | fa |
| Croatian | hr |
Polish | pl |
| Czech | cs |
Portuguese (Brazil) | pt-BR |
| Danish | da |
Portuguese (Portugal) | pt-PT |
| Dutch | nl |
Punjabi | pa |
| English | en |
Romanian | ro |
| Estonian | et |
Russian | ru |
| Filipino | fil |
Serbian | sr |
| Finnish | fi |
Sindhi | sd |
| French | fr |
Sinhala | si |
| Galician | gl |
Slovak | sk |
| Georgian | ka |
Slovenian | sl |
| German | de |
Spanish | es |
| Greek | el |
Sundanese | su |
| Gujarati | gu |
Swahili | sw |
| Hausa | ha |
Swedish | sv |
| Hebrew | he |
Tamil | ta |
| Hindi | hi |
Telugu | te |
| Hungarian | hu |
Thai | th |
| Icelandic | is |
Turkish | tr |
| Indonesian | id |
Ukrainian | uk |
| Italian | it |
Urdu | ur |
| Japanese | ja |
Uzbek | uz |
| Javanese | jv |
Vietnamese | vi |
| Kannada | kn |
Zulu | zu |
Best practices
Maintain consistent sampling: Ensure audio input strictly adheres to 16kHz mono PCM to prevent pitch shifts and audio artifacts.
Handle acoustic environments: While the model filters moderate ambient noise, strong background chatter or overlapping speakers can introduce translation ambiguity.
Evaluate echo mode per use case: Set echo_target_language=False for one-way interpreter setups to suppress unnecessary rebroadcasting when speakers already use the target language.
| Model ID | ['gemini-3.5-live-translate-preview'] |
|
|---|---|---|
| Modalities |
|
|
| Capabilities |
|
|
| Tools |
|
|
| Consumption options |
|
|
| Supported regions |
|
|
| Versions |
|
|