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 | Degrada 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 endpointing manual) | 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 definición de extremos manual. |
| Identificación de interlocutores | No es compatible | Compatible (hasta 8 bocinas) | Experimental | La atribución para más de 3 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 de 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
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. En 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 con formato, monedas y números.
- Limpieza gramatical: Aplica puntuación, uso de mayúsculas y flujo naturales.
| Audio hablado | Resultado de VERBATIM |
Resultado de SMART (Transcripción inteligente) |
|---|---|---|
| "Eh, 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 la línea de tiempo 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 finalización manual
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 enunciado, 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 de extremos manual, 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 | Malay | 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 | Eslov | 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 Google Cloud :
| Extremo | Google Cloud 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 de destino: Incluye solo términos de dominio, nombres de marcas o nombres propios distintos en
custom_vocabulary, en 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 |
|
|
| Controles de seguridad | Predicción en línea |
|
| Consulta Controles de seguridad para obtener más información. | ||