Gemini 3.5 Transcribe es el modelo de Google para convertir voz a texto en varios idiomas, disponible a través de Agent Platform. Según las capacidades de comprensión de audio de Gemini, proporciona transcripciones precisas y de baja latencia con detección de idioma basada en enunciados, identificación de interlocutores, marcas de tiempo a nivel de palabra, transcripción inteligente y ponderación del habla con vocabulario personalizado.
Gemini 3.5 Transcribe es el principal motor de transcripción de audio, ya que cierra la brecha entre los modelos multimodales de razonamiento profundo y los flujos de trabajo de voz a texto altamente optimizados.
Para comenzar, consulta el notebook introductorio de Gemini 3.5 Transcribe.
Admite dos métodos principales de operación:
- Transcripción instantánea (en vivo): Transmite audio y recibe resultados de transcripción de forma incremental, en tiempo real, con el modelo
gemini-3.5-transcribe-live. - Transcripción síncrona: Transcribe archivos de audio pregrabados completos en una sola solicitud con el modelo
gemini-3.5-transcribe.
Compatibilidad y limitaciones de las funciones
Gemini 3.5 Transcribe admite las siguientes funciones en sus dos extremos:
| Función | Transmisiones en vivo (gemini-3.5-transcribe-live) |
Procesamiento de archivos de audio (gemini-3.5-transcribe) |
Etapa de lanzamiento | Notas y limitaciones |
|---|---|---|---|---|
| Detección automática de idioma | Compatible (más de 85 idiomas) | Compatible (más de 85 idiomas) | Admitido | Incluye la mezcla de códigos a mitad de la sesión. |
| Marcas de tiempo a nivel de la expresión | Admitido | No es compatible | Admitido | |
| Marcas de tiempo a nivel de la palabra | No es compatible | Admitido | Experimental | Disminuye la precisión de la transcripción. |
| Sesgo de vocabulario personalizado | Se admite (hasta 1,000 términos) | Se admite (hasta 1,000 términos) | Admitido | Por lo general, los clientes obtienen mejores resultados con hasta 100 términos. |
| Dictado y formato inteligentes | Compatible (con extremos manuales) | Admitido | Experimental | Incluye la eliminación de muletillas y el formato alfanumérico que reconoce la intención. Para la transmisión en vivo, usa la detección manual de extremos. |
| Identificación de interlocutores | No es compatible | Compatible (hasta 8 bocinas) | Experimental | La atribución para 3 o más interlocutores es experimental. |
| Duración máxima del audio | Hasta 10 minutos | Hasta 15 minutos | Admitido | El procesamiento de archivos se limita a 15 minutos cuando se habilitan funciones como la identificación de interlocutores o las marcas de tiempo. |
Transcripción de transmisiones en vivo
La BidiGenerateContent (Live) API permanece abierta mientras transmites pequeños fragmentos de audio al modelo y recibes resultados de transcripción de forma incremental, a medida que están disponibles. Se usa para subtitular o transcribir la entrada del micrófono casi en tiempo real.
Para probar la transcripción de transmisión sin escribir código, abre
gemini-3.5-transcribe-live en la página de la API de Gemini Live de
Agent Studio, graba o sube audio y
mira cómo se transmite la transcripción.
Prueba Gemini 3.5 Transcribe en Agent Studio
Para transcribir audio de transmisión, compila un LiveConnectConfig y establece response_modalities en ["TEXT"] junto con tu configuración de input_audio_transcription.
import asyncio
from google import genai
from google.genai import types
client = genai.Client(enterprise=True, project=PROJECT_ID, location=LOCATION)
config = types.LiveConnectConfig(
response_modalities=["TEXT"],
input_audio_transcription=types.AudioTranscriptionConfig(
language_codes=["it-IT", "en-US"],
),
)
async def streaming_main(audio_file, config):
# Connect to the Live API session
async with client.aio.live.connect(model="gemini-3.5-transcribe-live", config=config) as session:
# In a complete implementation, you would chunk the audio and send via:
# await session.send_realtime_input(audio=types.Blob(data=data, mime_type="audio/pcm;rate=16000"))
# await session.send_realtime_input(audio_stream_end=True)
async for message in session.receive():
if message.server_content:
server_content = message.server_content
# Track the active interim segment
interim = server_content.interim_input_transcription
if interim and interim.text:
print(f"Interim: {interim.text}")
# Save final transcript and clear the interim
final = server_content.input_transcription
if final and final.text:
print(f"Final: {final.text}")
Transcripción síncrona
Puedes usar el método generate_content estándar para transcribir archivos de audio completos que ya se hayan grabado. Configura los parámetros compilando un AudioTranscriptionConfig dentro de GenerateContentConfig.
Marcas de tiempo a nivel de la palabra
Si configuras word_timestamp=True, se devuelven los tiempos a nivel de palabra. La lista audio_transcription.words de la respuesta contiene cada palabra reconocida junto con su start_offset y end_offset.
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)
with open("input.wav", "rb") as f:
audio_bytes = f.read()
response = client.models.generate_content(
model="gemini-3.5-transcribe",
contents=[
types.Part.from_bytes(
data=audio_bytes,
mime_type="audio/wav",
),
],
config=types.GenerateContentConfig(
audio_transcription_config=types.AudioTranscriptionConfig(
word_timestamp=True,
),
),
)
parts = getattr(response, "parts", []) or []
if parts and (audio_tx := getattr(parts[0], "audio_transcription", None)):
for w in getattr(audio_tx, "words", []) or []:
print(f"[{w.start_offset} - {w.end_offset}] {w.word}")
if text := "".join(p.text for p in parts if getattr(p, "text", None)):
print(f"**{text}**")
Identificación de interlocutores y vocabulario personalizado
Si configuras diarization=True, le pides al modelo que identifique y etiquete a los interlocutores individuales. También puedes proporcionar un campo custom_vocabulary con una lista de frases que sesguen a Gemini 3.5 Transcribe para que reconozca términos específicos. Por lo general, el modelo sigue las instrucciones de vocabulario personalizado de manera más confiable cuando también se especifica un idioma con language_codes.
response = client.models.generate_content(
model="gemini-3.5-transcribe",
contents=[
types.Part.from_uri(
file_uri="gs://cloud-samples-data/generative-ai/audio/coffee_order.wav",
mime_type="audio/wav",
),
],
config=types.GenerateContentConfig(
audio_transcription_config=types.AudioTranscriptionConfig(
diarization=True,
language_codes=["en-US"],
custom_vocabulary=["oatmilk", "oz"],
),
),
)
parts = getattr(response, "parts", []) or []
for p in parts:
audio_tx = getattr(p, "audio_transcription", None)
speaker = getattr(audio_tx, "speaker_label", "UNKNOWN") if audio_tx else "UNKNOWN"
text = getattr(p, "text", "") or (getattr(audio_tx, "text", "") if audio_tx else "")
if text:
print(f"**{speaker}**: {text}")
Modos de transcripción
Gemini 3.5 Transcribe admite dos modos de transcripción a través del parámetro mode en AudioTranscriptionConfig:
VERBATIM(predeterminado): Devuelve una transcripción exacta palabra por palabra de todo lo que se dice, conservando las muletillas sin procesar ("um", "eh", "como", "ya sabes"), las repeticiones, las pausas y los inicios en falso.SMART(Transcripción inteligente): Optimiza la transcripción para la lectura aplicando un procesamiento posterior inteligente:- Eliminación de disfluencias: Quita las muletillas, los tartamudeos y los inicios falsos de las conversaciones.
- Autocorrecciones intercaladas: Resuelve las correcciones habladas directamente (por ejemplo, "Reunámonos el martes, no, mejor el miércoles a las dos" se convierte en "Reunámonos el miércoles a las 2:00 p.m.").
- Formato estructurado automático: Estructura automáticamente los pensamientos hablados en párrafos, listas numeradas, viñetas, fechas, monedas y números con formato.
- Limpieza gramatical: Aplica puntuación, uso de mayúsculas y flujo naturales.
| Audio hablado | Resultado de VERBATIM |
Resultado de SMART (Transcripción inteligente) |
|---|---|---|
| "Bueno, para la reunión, creo que deberíamos, eh, invitar a Alicia y, no, espera, a Roberto y a Carolina". | "Bueno, para la reunión, creo que deberíamos invitar a Alicia y, no, espera, a Roberto y a Carolina". | "Para la reunión, creo que deberíamos invitar a Bob y Carol". |
| "Primer elemento: revisar el presupuesto; segundo elemento: finalizar el cronograma; tercer elemento: enviar el resumen" | "primer elemento revisar presupuesto segundo elemento finalizar cronograma tercer elemento enviar resumen" | "1. Revisa el presupuesto 2. Finaliza el cronograma. 3. Enviar resumen" |
Transcripción síncrona con el modo SMART
response = client.models.generate_content(
model="gemini-3.5-transcribe",
contents=[
types.Part.from_bytes(
data=audio_bytes,
mime_type="audio/wav",
),
],
config=types.GenerateContentConfig(
audio_transcription_config=types.AudioTranscriptionConfig(
mode="SMART",
),
),
)
Transcripción instantánea con el modo SMART y detección manual de puntos de conexión
Cuando uses el modo SMART con la transcripción de transmisión en vivo (gemini-3.5-transcribe-live), debes usar la detección manual de extremos (detección manual de actividad de voz) en lugar de la VAD automática. Debido a que el modo SMART aplica un procesamiento posterior a nivel de la expresión, como resolver autocorrecciones intercaladas y estructurar listas o párrafos, la VAD automática puede dividir de forma prematura el pensamiento de un usuario durante las pausas naturales.
Para configurar la detección manual de extremos, inhabilita automatic_activity_detection en RealtimeInputConfig y marca de forma explícita el comienzo y el final del turno de voz del usuario con activity_start y 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(
mode="SMART",
),
)
async with client.aio.live.connect(
model="gemini-3.5-transcribe-live", config=config
) as session:
# Signal start of speech turn
await session.send_realtime_input(activity_start=types.ActivityStart())
# Stream audio chunks...
await session.send_realtime_input(
audio=types.Blob(data=audio_bytes, mime_type="audio/pcm;rate=16000")
)
# Signal end of speech turn so SMART mode can process the complete utterance
await session.send_realtime_input(activity_end=types.ActivityEnd())
Idiomas admitidos
Los siguientes idiomas y códigos de idioma BCP-47 son compatibles con Gemini 3.5 Transcribe:
| Idioma | Código BCP-47 | Preparación | Idioma | Código BCP-47 | Preparación |
|---|---|---|---|---|---|
| Afrikaans | af-ZA |
Experimental | Japonés | ja-JP |
Admitido |
| Amárico | am-ET |
Experimental | Javanés | jv-ID |
Experimental |
| Árabe (Egipto) | ar-EG |
Experimental | Criollo caboverdiano | kea-CV |
Experimental |
| Armenio | hy-AM |
Experimental | Canarés | kn-IN |
Experimental |
| Asamés | as-IN |
Experimental | Kazajo | kk-KZ |
Experimental |
| Azerbaiyano | az-AZ |
Experimental | Coreano | ko-KR |
Admitido |
| Bielorruso | be-BY |
Experimental | Kirguizo | ky-KG |
Experimental |
| Bengalí (Bangladés) | bn-BD |
Experimental | Letón | lv-LV |
Experimental |
| Bengalí (India) | bn-IN |
Experimental | Lingala | ln-CD |
Experimental |
| Bosnio | bs-BA |
Experimental | Lituano | lt-LT |
Experimental |
| Búlgaro | bg-BG |
Experimental | Macedonio | mk-MK |
Experimental |
| Búlgaro (arrumano) | rup-BG |
Experimental | Malayo | ms-MY |
Experimental |
| Birmano | my-MM |
Experimental | Malayalam | ml-IN |
Experimental |
| Cantonés (tradicional) | yue-Hant-HK |
Experimental | Maltés | mt-MT |
Experimental |
| Catalán | ca-ES |
Admitido | Chino mandarín (simplificado) | cmn-Hans-CN |
Admitido |
| Cebuano | ceb |
Experimental | Maratí | mr-IN |
Experimental |
| Camboyano | km-KH |
Experimental | Mongol | mn-MN |
Experimental |
| Croata | hr-HR |
Admitido | Nepalí | ne-NP |
Experimental |
| Checo | cs-CZ |
Experimental | Noruego | nb-NO |
Experimental |
| Danés | da-DK |
Admitido | Oriya | or-IN |
Experimental |
| Holandés | nl-NL |
Admitido | Polaco | pl-PL |
Admitido |
| Inglés (Australia) | en-AU |
Admitido | Portugués (Brasil) | pt-BR |
Admitido |
| Inglés (Gran Bretaña) | en-GB |
Admitido | Portugués (Portugal) | pt-PT |
Admitido |
| Inglés (India) | en-IN |
Admitido | Punyabí | pa-IN |
Experimental |
| Inglés (Estados Unidos) | en-US |
Admitido | Panyabí (alfabeto gurmují) | pa-Guru-IN |
Experimental |
| Estonio | et-EE |
Experimental | Rumano | ro-RO |
Admitido |
| Persa | fa-IR |
Experimental | Ruso | ru-RU |
Admitido |
| Filipino | fil-PH |
Experimental | Serbio | sr-RS |
Experimental |
| Finlandés | fi-FI |
Admitido | Sindhi (escritura árabe) | sd-Arab-IN |
Experimental |
| Francés | fr-FR |
Admitido | Eslovaco | sk-SK |
Experimental |
| Francés (Canadá) | fr-CA |
Admitido | Esloveno | sl-SI |
Experimental |
| Gallego | gl-ES |
Experimental | Español (América Latina) | es-419 |
Experimental |
| Georgiano | ka-GE |
Experimental | Español (España) | es-ES |
Admitido |
| Alemán | de-DE |
Admitido | Español (Estados Unidos) | es-US |
Admitido |
| Griego | el-GR |
Admitido | Suajili (Kenia) | sw-KE |
Experimental |
| Gujarati | gu-IN |
Experimental | Sueco | sv-SE |
Admitido |
| Hausa | ha-NG |
Experimental | Tayiko | tg-TJ |
Experimental |
| Hebreo | he-IL |
Experimental | Telugu | te-IN |
Experimental |
| Hindi | hi-IN |
Admitido | Tailandés | th-TH |
Experimental |
| Húngaro | hu-HU |
Experimental | Turco | tr-TR |
Admitido |
| Islandés | is-IS |
Experimental | Ucraniano | uk-UA |
Admitido |
| Indonesio | id-ID |
Experimental | Uzbeko | uz-UZ |
Experimental |
| Italiano | it-IT |
Admitido | Vietnamita | vi-VN |
Admitido |
Disponibilidad regional
Gemini 3.5 Transcribe está disponible en las siguientes ubicaciones de Cloud de Confiance by S3NS :
| Extremo | Cloud de Confiance by S3NS Ubicación | Preparación para el lanzamiento |
|---|---|---|
gemini-3.5-transcribe |
global |
Admitido |
gemini-3.5-transcribe |
us |
Compatible |
gemini-3.5-transcribe |
eu |
Compatible |
gemini-3.5-transcribe-live |
global |
Compatible |
gemini-3.5-transcribe-live |
us |
Compatible |
gemini-3.5-transcribe-live |
eu |
Admitido |
Prácticas recomendadas
- Proporciona audio limpio: Asegúrate de que las grabaciones de audio tengan una separación de voz nítida y evita los recortes graves.
- Proporciona sugerencias de idioma cuando se conozcan: Si conoces el idioma del audio de antemano, especifica
language_codespara maximizar la precisión. - Vocabulario personalizado objetivo: Incluye solo términos de dominio, nombres de marcas o nombres propios distintos en
custom_vocabularyen lugar de palabras comunes de uso diario. - Usa la detección manual de extremos con el modo
SMARTen la Transcripción instantánea: Inhabilita la VAD automática (automatic_activity_detection) y envía de forma explícita las señalesactivity_startyactivity_endpara que el modelo pueda aplicar la eliminación de disfluencias, las autocorrecciones y el formato en las expresiones completas.
Probar en Agent Studio Precios
| ID de modelo | ['gemini-3.5-transcribe', 'gemini-3.5-transcribe-live'] |
|
|---|---|---|
| Modalidades |
|
|
| Funciones |
|
|
| Herramientas |
|
|
| API |
|
|
| Opciones de consumo |
|
|
| Regiones admitidas |
|
|
|
||
| Versiones |
|
|