Gemini 3.5 Transcribe è il modello di Google per la conversione della voce in testo in più lingue, disponibile tramite Agent Platform. Basata sulle funzionalità di comprensione dell'audio di Gemini, fornisce una trascrizione accurata a bassa latenza con rilevamento della lingua basato sull'enunciato, diarizzazione degli interlocutori, timestamp a livello di parola, trascrizione intelligente e differenziazione del parlato con vocabolario personalizzato.
Gemini 3.5 Transcribe funge da motore principale per la trascrizione audio, colmando il divario tra i modelli multimodali di deep reasoning e i workflow di conversione della voce in testo altamente ottimizzati.
Per iniziare, visualizza il blocco note introduttivo per Gemini 3.5 Transcribe.
Supporta due metodi di funzionamento principali:
- Trascrizione Istantanea (live):trasmette l'audio in streaming e riceve i risultati della trascrizione in modo incrementale, in tempo reale, utilizzando il modello
gemini-3.5-transcribe-live. - Trascrizione sincrona:trascrive file audio completi e preregistrati in un'unica richiesta utilizzando il modello
gemini-3.5-transcribe.
Supporto e limitazioni delle funzionalità
Gemini 3.5 Transcribe supporta le seguenti funzionalità nei suoi due endpoint:
| Funzionalità | Live streaming (gemini-3.5-transcribe-live) |
Elaborazione dei file audio (gemini-3.5-transcribe) |
Fase di avvio | Note / limitazioni |
|---|---|---|---|---|
| Rilevamento automatico della lingua | Supportata (oltre 85 lingue) | Supportata (oltre 85 lingue) | Supportato | Include la combinazione di codici durante la sessione. |
| Timestamp a livello di enunciato | Supportato | Non supportato | Supportato | |
| Timestamp a livello di parola | Non supportato | Supportato | Sperimentale | Riduce l'accuratezza della trascrizione. |
| Bias del vocabolario personalizzato | Supportato (fino a 1000 termini) | Supportato (fino a 1000 termini) | Supportato | In genere, i clienti ottengono i risultati migliori con un massimo di 100 termini. |
| Dettatura e formattazione intelligenti | Supportato (con endpointing manuale) | Supportato | Sperimentale | Include la rimozione degli intercalari e la formattazione alfanumerica basata sull'intent. Per il live streaming, utilizza con endpointing manuale. |
| Diarizzazione degli speaker | Non supportato | Supportato (fino a 8 altoparlanti) | Sperimentale | L'attribuzione per più di 3 speaker è sperimentale. |
| Durata massima dell'audio | Fino a 10 minuti | Fino a 15 minuti | Supportato | L'elaborazione dei file è limitata a 15 minuti quando sono attivate funzionalità come la diarizzazione o i timestamp. |
Trascrizione del live streaming
La BidiGenerateContent (Live) API rimane aperta mentre trasmetti piccoli blocchi di audio al modello e ricevi i risultati della trascrizione in modo incrementale, man mano che diventano disponibili. Viene utilizzato per i sottotitoli codificati o la trascrizione dell'input del microfono quasi in tempo reale.
Per provare la trascrizione in streaming senza scrivere codice, apri
gemini-3.5-transcribe-live nella pagina dell'API Gemini Live di
Agent Studio, quindi registra o carica l'audio e
guarda lo stream della trascrizione.
Prova Gemini 3.5 Transcribe in Agent Studio
Per trascrivere l'audio in streaming, crea un LiveConnectConfig e imposta response_modalities su ["TEXT"] insieme alla configurazione 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}")
Trascrizione sincrona
Puoi utilizzare il metodo generate_content standard per trascrivere file audio completi già registrati. Configura i parametri creando un AudioTranscriptionConfig all'interno di GenerateContentConfig.
Timestamp a livello di parola
L'impostazione word_timestamp=True restituisce la sincronizzazione a livello di parola. L'elenco audio_transcription.words della risposta contiene ogni parola riconosciuta insieme ai relativi start_offset e 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}**")
Diarizzazione degli speaker e vocabolario personalizzato
L'impostazione diarization=True chiede al modello di identificare ed etichettare i singoli interlocutori. Puoi anche fornire un campo custom_vocabulary con un elenco di frasi che indirizzano Gemini 3.5 Transcribe verso il riconoscimento di termini specifici. In genere, il modello segue le istruzioni del vocabolario personalizzato in modo più affidabile quando viene specificata anche una lingua utilizzando 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}")
Modalità di trascrizione
Gemini 3.5 Transcribe supporta due modalità di trascrizione tramite il parametro mode in AudioTranscriptionConfig:
VERBATIM(predefinito): restituisce una trascrizione letterale esatta di tutto ciò che viene detto, conservando gli intercalari ("um", "uh", "tipo", "sai"), le ripetizioni, le pause e i falsi inizi.SMART(Trascrizione intelligente): ottimizza la trascrizione per la lettura applicando una post-elaborazione intelligente:- Rimozione di disfluenze:rimuove intercalari, balbettii e false partenze.
- Autocorrezioni in linea:risolve direttamente le correzioni vocali (ad esempio, "Incontriamoci martedì, anzi no, mercoledì alle due" diventa "Incontriamoci mercoledì alle 14:00").
- Formattazione strutturata automatica:struttura automaticamente i pensieri espressi a voce in paragrafi, elenchi numerati, elenchi puntati, date, valute e numeri formattati.
- Pulizia grammaticale: applica punteggiatura, maiuscole e minuscole e flusso naturali.
| Audio parlato | VERBATIM output |
Output SMART (Trascrizione intelligente) |
|---|---|---|
| "Ehm, per la riunione, penso che dovremmo, ehm, invitare Alice e, aspetta, no, Bob e Carol." | "Ehm, per la riunione penso che dovremmo invitare Alice e, aspetta, no, Bob e Carol." | "Per la riunione, penso che dovremmo invitare Bob e Carol." |
| "Primo elemento: revisione del budget; secondo elemento: finalizzazione della sequenza temporale; terzo elemento: invio del riepilogo" | "primo elemento rivedere il budget secondo elemento finalizzare la sequenza temporale terzo elemento inviare il riepilogo" | "1. Esamina il budget 2. Finalizza la sequenza temporale 3. Invia riepilogo" |
Trascrizione sincrona con la modalità 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",
),
),
)
Trascrizione Istantanea con modalità SMART e rilevamento manuale dei punti finali
Quando utilizzi la modalità SMART con la trascrizione in live streaming (gemini-3.5-transcribe-live), devi utilizzare l'endpointing manuale (rilevamento di attività vocale manuale) anziché il VAD automatico. Poiché la modalità SMART applica la post-elaborazione a livello di enunciato, ad esempio la risoluzione delle autocorrezioni in linea e la strutturazione di elenchi o paragrafi, il VAD automatico potrebbe dividere prematuramente il pensiero di un utente durante le pause naturali.
Per configurare l'endpointing manuale, disattiva automatic_activity_detection in RealtimeInputConfig e contrassegna esplicitamente l'inizio e la fine del turno di conversazione dell'utente utilizzando activity_start e 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())
Supporto dei linguaggi
Per Gemini 3.5 Transcribe sono supportate le seguenti lingue e i seguenti codici lingua BCP-47:
| Lingua | Codice BCP-47 | Prontezza | Lingua | Codice BCP-47 | Prontezza |
|---|---|---|---|---|---|
| Afrikaans | af-ZA |
Sperimentale | Giapponese | ja-JP |
Supportato |
| Amarico | am-ET |
Sperimentale | Giavanese | jv-ID |
Sperimentale |
| Arabo (Egitto) | ar-EG |
Sperimentale | Kabuverdianu | kea-CV |
Sperimentale |
| Armeno | hy-AM |
Sperimentale | Kannada | kn-IN |
Sperimentale |
| Assamese | as-IN |
Sperimentale | Kazako | kk-KZ |
Sperimentale |
| Azero | az-AZ |
Sperimentale | Coreano | ko-KR |
Supportato |
| Bielorusso | be-BY |
Sperimentale | Kirgizo | ky-KG |
Sperimentale |
| Bengalese (Bangladesh) | bn-BD |
Sperimentale | Lettone | lv-LV |
Sperimentale |
| Bengalese (India) | bn-IN |
Sperimentale | Lingala | ln-CD |
Sperimentale |
| Bosniaco | bs-BA |
Sperimentale | Lituano | lt-LT |
Sperimentale |
| Bulgaro | bg-BG |
Sperimentale | Macedone | mk-MK |
Sperimentale |
| Bulgaro (aromaniano) | rup-BG |
Sperimentale | Malese | ms-MY |
Sperimentale |
| Birmano | my-MM |
Sperimentale | Malayalam | ml-IN |
Sperimentale |
| Cantonese (tradizionale) | yue-Hant-HK |
Sperimentale | Maltese | mt-MT |
Sperimentale |
| Catalano | ca-ES |
Supportato | Cinese mandarino (semplificato) | cmn-Hans-CN |
Supportato |
| Cebuano | ceb |
Sperimentale | Marathi | mr-IN |
Sperimentale |
| Khmer centrale | km-KH |
Sperimentale | Mongolo | mn-MN |
Sperimentale |
| Croato | hr-HR |
Supportato | Nepalese | ne-NP |
Sperimentale |
| Ceco | cs-CZ |
Sperimentale | Norvegese | nb-NO |
Sperimentale |
| Danese | da-DK |
Supportato | Oriya | or-IN |
Sperimentale |
| Olandese | nl-NL |
Supportato | Polacco | pl-PL |
Supportato |
| Inglese (Australia) | en-AU |
Supportato | Portoghese (Brasile) | pt-BR |
Supportato |
| Inglese (Gran Bretagna) | en-GB |
Supportato | Portoghese (Portogallo) | pt-PT |
Supportato |
| Inglese (India) | en-IN |
Supportato | Punjabi | pa-IN |
Sperimentale |
| Inglese (Stati Uniti) | en-US |
Supportato | Punjabi (scrittura gurmukhi) | pa-Guru-IN |
Sperimentale |
| Estone | et-EE |
Sperimentale | Romeno | ro-RO |
Supportato |
| Farsi | fa-IR |
Sperimentale | Russo | ru-RU |
Supportato |
| Filippino | fil-PH |
Sperimentale | Serbo | sr-RS |
Sperimentale |
| Finlandese | fi-FI |
Supportato | Sindhi (alfabeto arabo) | sd-Arab-IN |
Sperimentale |
| Francese | fr-FR |
Supportato | Slovacco | sk-SK |
Sperimentale |
| Francese (Canada) | fr-CA |
Supportato | Sloveno | sl-SI |
Sperimentale |
| Galiziano | gl-ES |
Sperimentale | Spagnolo (America Latina) | es-419 |
Sperimentale |
| Georgiano | ka-GE |
Sperimentale | Spagnolo (Spagna) | es-ES |
Supportato |
| Tedesco | de-DE |
Supportato | Spagnolo (Stati Uniti) | es-US |
Supportato |
| Greco | el-GR |
Supportato | Swahili (Kenya) | sw-KE |
Sperimentale |
| Gujarati | gu-IN |
Sperimentale | Svedese | sv-SE |
Supportato |
| Hausa | ha-NG |
Sperimentale | Tagico | tg-TJ |
Sperimentale |
| Ebraico | he-IL |
Sperimentale | Telugu | te-IN |
Sperimentale |
| Hindi | hi-IN |
Supportato | Tailandese | th-TH |
Sperimentale |
| Ungherese | hu-HU |
Sperimentale | Turco | tr-TR |
Supportato |
| Islandese | is-IS |
Sperimentale | Ucraino | uk-UA |
Supportato |
| Indonesiano | id-ID |
Sperimentale | Uzbeko | uz-UZ |
Sperimentale |
| Italiano | it-IT |
Supportato | Vietnamita | vi-VN |
Supportato |
Disponibilità a livello di regione
Gemini 3.5 Transcribe è disponibile nelle seguenti Cloud de Confiance by S3NS località:
| Endpoint | Cloud de Confiance by S3NS Posizione | Stato del lancio |
|---|---|---|
gemini-3.5-transcribe |
global |
Supportato |
gemini-3.5-transcribe |
us |
Supportato |
gemini-3.5-transcribe |
eu |
Supportato |
gemini-3.5-transcribe-live |
global |
Supportato |
gemini-3.5-transcribe-live |
us |
Supportato |
gemini-3.5-transcribe-live |
eu |
Supportato |
Best practice
- Fornisci un audio pulito:assicurati che le registrazioni audio abbiano una separazione vocale chiara ed evita un clipping eccessivo.
- Fornisci suggerimenti sulla lingua, se noti:se conosci in anticipo la lingua dell'audio, specifica
language_codesper massimizzare l'accuratezza. - Target custom vocabulary: Include only distinct domain terms, brand names, or proper nouns in
custom_vocabularyrather than common everyday words. - Utilizza l'endpointing manuale con la modalità
SMARTnella Trascrizione Istantanea: disattiva il VAD automatico (automatic_activity_detection) e invia esplicitamente i segnaliactivity_starteactivity_endin modo che il modello possa applicare la rimozione di disfluenze, le autocorrezioni e la formattazione a espressioni complete.
| ID modello | ['gemini-3.5-transcribe', 'gemini-3.5-transcribe-live'] |
|
|---|---|---|
| Modalità |
|
|
| Funzionalità |
|
|
| Strumenti |
|
|
| API |
|
|
| Opzioni di consumo |
|
|
| Aree geografiche supportate |
|
|
|
||
| Versioni |
|
|