Gemini 3.5 Transcribe adalah model Google untuk mengonversi ucapan menjadi teks dalam berbagai bahasa, yang tersedia melalui Agent Platform. Berdasarkan kemampuan pemahaman audio Gemini, API ini menyediakan transkripsi akurat dengan latensi rendah yang dilengkapi deteksi bahasa berbasis ucapan, diarisasi pembicara, stempel waktu tingkat kata, Transkripsi cerdas, dan pembiasan ucapan kosakata kustom.
Gemini 3.5 Transcribe berfungsi sebagai mesin utama transkripsi audio, yang menjembatani kesenjangan antara model multimodal penalaran mendalam dan alur kerja speech-to-text yang sangat dioptimalkan.
Untuk memulai, lihat notebook pengantar untuk Gemini 3.5 Transcribe.
Alat ini mendukung dua metode operasi utama:
- Transkripsi streaming (Live): Melakukan streaming audio dan menerima hasil transkripsi secara inkremental, secara real time, menggunakan model
gemini-3.5-transcribe-live. - Transkripsi sinkron: Mentranskripsikan file audio lengkap yang telah direkam sebelumnya dalam satu permintaan menggunakan model
gemini-3.5-transcribe.
Dukungan dan batasan fitur
Gemini 3.5 Transcribe mendukung fitur berikut di dua endpoint-nya:
| Fitur | Live Streaming (gemini-3.5-transcribe-live) |
Pemrosesan File Audio (gemini-3.5-transcribe) |
Tahap Peluncuran | Catatan / Batasan |
|---|---|---|---|---|
| Deteksi Otomatis Bahasa | Didukung (85+ bahasa) | Didukung (85+ bahasa) | Didukung | Mencakup pencampuran kode di tengah sesi. |
| Stempel Waktu Tingkat Ucapan | Didukung | Tidak Didukung | Didukung | |
| Stempel Waktu Tingkat Kata | Tidak Didukung | Didukung | Eksperimental | Menurunkan akurasi transkripsi. |
| Pembiasan Kosakata Kustom | Didukung (hingga 1.000 istilah) | Didukung (hingga 1.000 istilah) | Didukung | Pelanggan biasanya melihat hasil terbaik dengan maksimal 100 istilah. |
| Dikte & Pemformatan Cerdas | Didukung (dengan endpointing manual) | Didukung | Eksperimental | Mencakup penghapusan kata pengisi dan pemformatan alfanumerik yang sesuai dengan maksud. Untuk live streaming, gunakan dengan endpointing manual. |
| Diarisasi Pembicara | Tidak Didukung | Didukung (hingga 8 pembicara) | Eksperimental | Atribusi untuk 3+ pembicara bersifat Eksperimental. |
| Durasi Audio Maksimal | Maksimal 10 menit | Hingga 15 menit | Didukung | Pemrosesan file dibatasi hingga 15 menit jika fitur seperti diarisasi atau stempel waktu diaktifkan. |
Transkripsi live streaming
BidiGenerateContent (Live) API tetap terbuka saat Anda melakukan streaming potongan kecil audio ke model dan menerima hasil transkripsi secara inkremental, saat tersedia. Fitur ini digunakan untuk membuat teks atau mentranskripsikan input mikrofon hampir secara real-time.
Untuk mencoba transkripsi streaming tanpa menulis kode apa pun, buka
gemini-3.5-transcribe-live di halaman Gemini Live API di
Agent Studio, lalu rekam atau upload audio dan
tonton streaming transkripnya.
Coba Gemini 3.5 Transcribe di Agent Studio
Untuk mentranskripsikan audio streaming, buat LiveConnectConfig dan tetapkan response_modalities ke ["TEXT"] bersama dengan konfigurasi input_audio_transcription Anda.
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}")
Transkripsi sinkron
Anda dapat menggunakan metode generate_content standar untuk mentranskripsikan file audio lengkap yang telah direkam. Konfigurasikan parameter dengan membuat AudioTranscriptionConfig di dalam GenerateContentConfig.
Stempel waktu tingkat kata
Menetapkan word_timestamp=True akan menampilkan pengaturan waktu tingkat kata. Daftar audio_transcription.words respons berisi setiap kata yang dikenali beserta start_offset dan end_offset-nya.
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}**")
Diarisasi pembicara dan kosakata kustom
Menetapkan diarization=True akan meminta model untuk mengidentifikasi dan memberi label pada setiap pembicara. Anda juga dapat menyediakan kolom custom_vocabulary dengan daftar frasa yang membiaskan Gemini 3.5 Transcribe untuk mengenali istilah tertentu. Model ini umumnya mengikuti petunjuk kosakata kustom dengan lebih andal jika bahasa juga ditentukan menggunakan 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}")
Mode transkripsi
Gemini 3.5 Transcribe mendukung dua mode transkripsi melalui parameter mode di AudioTranscriptionConfig:
VERBATIM(default): Menampilkan transkrip kata demi kata yang tepat dari semua yang diucapkan, mempertahankan kata pengisi mentah ("um", "uh", "seperti", "Anda tahu"), pengulangan, jeda, dan awal yang salah.SMART(Transkripsi cerdas): Mengoptimalkan transkrip agar mudah dibaca dengan menerapkan pascapemrosesan cerdas:- Pembersihan transkrip ucapan: Menghapus kata pengisi percakapan, kegagapan, dan kesalahan pengucapan.
- Koreksi mandiri inline: Menyelesaikan koreksi lisan secara langsung (misalnya, "Mari bertemu pada hari Selasa, sebenarnya tidak, Rabu pukul dua" menjadi "Mari bertemu pada hari Rabu pukul 14.00").
- Pemformatan terstruktur otomatis: Otomatis menyusun pemikiran lisan menjadi paragraf, daftar bernomor, poin-poin, tanggal, mata uang, dan angka yang diformat.
- Pembersihan tata bahasa: Menerapkan tanda baca, kapitalisasi kalimat, dan alur yang alami.
| Audio lisan | VERBATIM output |
Output SMART (Transkripsi cerdas) |
|---|---|---|
| "Hmm, jadi untuk rapatnya, menurut saya kita harus, eh, mengundang Alice dan, tunggu, tidak, Bob dan Carol." | "Um jadi untuk rapatnya, menurut saya kita harus mengundang Alice dan tunggu, bukan, Bob dan Carol." | "Untuk rapat, sebaiknya kita mengundang Bob dan Carol." |
| "Item pertama tinjau anggaran item kedua selesaikan linimasa item ketiga kirim ringkasan" | "item pertama tinjau anggaran item kedua selesaikan linimasa item ketiga kirim ringkasan" | "1. Tinjau anggaran 2. Menyelesaikan linimasa 3. Kirim ringkasan" |
Transkripsi sinkron dengan mode 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",
),
),
)
Transkripsi Instan dengan mode SMART dan endpointing manual
Saat menggunakan mode SMART dengan transkripsi live streaming (gemini-3.5-transcribe-live), Anda harus menggunakan endpointing manual (Deteksi Aktivitas Suara manual), bukan VAD otomatis. Karena mode SMART menerapkan pascapemrosesan tingkat ucapan—seperti menyelesaikan koreksi mandiri inline dan menyusun daftar atau paragraf—VAD otomatis dapat memisahkan pemikiran pengguna secara prematur selama jeda alami.
Untuk mengonfigurasi endpointing manual, nonaktifkan automatic_activity_detection di RealtimeInputConfig dan tandai awal dan akhir giliran bicara pengguna secara eksplisit menggunakan activity_start dan 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())
Dukungan bahasa
Bahasa dan kode bahasa BCP-47 berikut didukung untuk Gemini 3.5 Transcribe:
| Bahasa | Kode BCP-47 | Kesiapan | Bahasa | Kode BCP-47 | Kesiapan |
|---|---|---|---|---|---|
| Afrika | af-ZA |
Eksperimental | Japanese | ja-JP |
Didukung |
| Amhara | am-ET |
Eksperimental | Jawa | jv-ID |
Eksperimental |
| Arab (Mesir) | ar-EG |
Eksperimental | Kabuverdianu | kea-CV |
Eksperimental |
| Armenia | hy-AM |
Eksperimental | Kannada | kn-IN |
Eksperimental |
| Assam | as-IN |
Eksperimental | Kazak | kk-KZ |
Eksperimental |
| Azerbaijan | az-AZ |
Eksperimental | Korea | ko-KR |
Didukung |
| Belarus | be-BY |
Eksperimental | Kirgiz | ky-KG |
Eksperimental |
| Bengali (Bangladesh) | bn-BD |
Eksperimental | Latvia | lv-LV |
Eksperimental |
| Bengali (India) | bn-IN |
Eksperimental | Lingala | ln-CD |
Eksperimental |
| Bosnia | bs-BA |
Eksperimental | Lituania | lt-LT |
Eksperimental |
| Bulgaria | bg-BG |
Eksperimental | Makedonia | mk-MK |
Eksperimental |
| Bulgaria (Aromania) | rup-BG |
Eksperimental | Melayu | ms-MY |
Eksperimental |
| Burma | my-MM |
Eksperimental | Malayalam | ml-IN |
Eksperimental |
| Kanton (Aksara Tradisional) | yue-Hant-HK |
Eksperimental | Malta | mt-MT |
Eksperimental |
| Catalan | ca-ES |
Didukung | China Mandarin (Aksara Sederhana) | cmn-Hans-CN |
Didukung |
| Cebuano | ceb |
Eksperimental | Marathi | mr-IN |
Eksperimental |
| Khmer Tengah | km-KH |
Eksperimental | Mongol | mn-MN |
Eksperimental |
| Kroasia | hr-HR |
Didukung | Nepal | ne-NP |
Eksperimental |
| Ceko | cs-CZ |
Eksperimental | Norwegia | nb-NO |
Eksperimental |
| Denmark | da-DK |
Didukung | Oriya | or-IN |
Eksperimental |
| Belanda | nl-NL |
Didukung | Polandia | pl-PL |
Didukung |
| Inggris (Australia) | en-AU |
Didukung | Portugis (Brasil) | pt-BR |
Didukung |
| Inggris (Britania Raya) | en-GB |
Didukung | Portugis (Portugal) | pt-PT |
Didukung |
| Inggris (India) | en-IN |
Didukung | Punjab | pa-IN |
Eksperimental |
| Inggris (Amerika Serikat) | en-US |
Didukung | Punjabi (Skrip Gurmukhi) | pa-Guru-IN |
Eksperimental |
| Estonia | et-EE |
Eksperimental | Rumania | ro-RO |
Didukung |
| Farsi | fa-IR |
Eksperimental | Rusia | ru-RU |
Didukung |
| Filipino | fil-PH |
Eksperimental | Serb | sr-RS |
Eksperimental |
| Finlandia | fi-FI |
Didukung | Sindhi (aksara Arab) | sd-Arab-IN |
Eksperimental |
| Prancis | fr-FR |
Didukung | Slovakia | sk-SK |
Eksperimental |
| Prancis (Kanada) | fr-CA |
Didukung | Slovenia | sl-SI |
Eksperimental |
| Galisia | gl-ES |
Eksperimental | Spanyol (Amerika Latin) | es-419 |
Eksperimental |
| Georgia | ka-GE |
Eksperimental | Spanyol (Spanyol) | es-ES |
Didukung |
| Jerman | de-DE |
Didukung | Spanyol (Amerika Serikat) | es-US |
Didukung |
| Yunani | el-GR |
Didukung | Swahili (Kenya) | sw-KE |
Eksperimental |
| Gujarat | gu-IN |
Eksperimental | Swedia | sv-SE |
Didukung |
| Hausa | ha-NG |
Eksperimental | Tajik | tg-TJ |
Eksperimental |
| Ibrani | he-IL |
Eksperimental | Telugu | te-IN |
Eksperimental |
| Hindi | hi-IN |
Didukung | Thai | th-TH |
Eksperimental |
| Hungaria | hu-HU |
Eksperimental | Turki | tr-TR |
Didukung |
| Islandia | is-IS |
Eksperimental | Ukraina | uk-UA |
Didukung |
| Indonesia | id-ID |
Eksperimental | Uzbek | uz-UZ |
Eksperimental |
| Italia | it-IT |
Didukung | Vietnam | vi-VN |
Didukung |
Ketersediaan regional
Gemini 3.5 Transcribe tersedia di lokasi Cloud de Confiance by S3NS berikut:
| Endpoint | Cloud de Confiance by S3NS Lokasi | Kesiapan Peluncuran |
|---|---|---|
gemini-3.5-transcribe |
global |
Didukung |
gemini-3.5-transcribe |
us |
Didukung |
gemini-3.5-transcribe |
eu |
Didukung |
gemini-3.5-transcribe-live |
global |
Didukung |
gemini-3.5-transcribe-live |
us |
Didukung |
gemini-3.5-transcribe-live |
eu |
Didukung |
Praktik terbaik
- Berikan audio yang bersih: Pastikan rekaman audio memiliki pemisahan suara jernih yang jelas dan hindari pemangkasan yang parah.
- Berikan petunjuk bahasa jika diketahui: Jika Anda mengetahui bahasa audio sebelumnya, tentukan
language_codesuntuk memaksimalkan akurasi. - Target custom vocabulary: Hanya sertakan istilah domain, nama merek, atau kata benda yang berbeda dalam
custom_vocabulary, bukan kata-kata umum sehari-hari. - Gunakan endpointing manual dengan mode
SMARTdalam transkripsi instan: Nonaktifkan VAD otomatis (automatic_activity_detection) dan kirim sinyalactivity_startdanactivity_endsecara eksplisit sehingga model dapat menerapkan pembersihan transkrip ucapan, koreksi mandiri, dan pemformatan di seluruh ucapan lengkap.
| ID Model | ['gemini-3.5-transcribe', 'gemini-3.5-transcribe-live'] |
|
|---|---|---|
| Modalitas |
|
|
| Kemampuan |
|
|
| Alat |
|
|
| API |
|
|
| Opsi pemakaian |
|
|
| Region yang didukung |
|
|
|
||
| Versi |
|
|