Gemini 3.5 Transcribe הוא מודל של Google להמרת דיבור לטקסט בכמה שפות, שזמין דרך Agent Platform. הוא מבוסס על יכולות הבנת האודיו של Gemini, ומספק תמלול מדויק עם זמן אחזור קצר, זיהוי שפה על סמך ביטויים, חלוקה לפי דוברים, חותמות זמן ברמת המילה, תמלול חכם והטיית דיבור של אוצר מילים בהתאמה אישית.
Gemini 3.5 Transcribe הוא המודל העיקרי לתמלול אודיו, והוא מגשר על הפער בין מודלים מולטי-מודאליים עם יכולות הסקת מסקנות מעמיקות לבין תהליכי עבודה יעילים במיוחד של המרת דיבור לטקסט.
כדי להתחיל, עיינו במדריך למתחילים של Gemini 3.5 Transcribe.
הוא תומך בשתי שיטות פעולה עיקריות:
- תמלול בסטרימינג (בזמן אמת): הזרמת אודיו וקבלת תוצאות תמלול באופן מצטבר, בזמן אמת, באמצעות המודל
gemini-3.5-transcribe-live. - תמלול סינכרוני: תמלול של קובצי אודיו שלמים שהוקלטו מראש בבקשה אחת, באמצעות המודל
gemini-3.5-transcribe.
תמיכה בתכונות ומגבלות
Gemini 3.5 Transcribe תומך בתכונות הבאות בשתי נקודות הקצה שלו:
| תכונה | סטרימינג בשידור חי (gemini-3.5-transcribe-live) |
עיבוד קובץ אודיו (gemini-3.5-transcribe) |
שלב ההשקה | הערות או מגבלות |
|---|---|---|---|---|
| זיהוי שפה אוטומטי | נתמך (יותר מ-85 שפות) | נתמך (יותר מ-85 שפות) | נתמך | כולל ערבוב קוד באמצע הסשן. |
| חותמות זמן ברמת הביטוי | נתמך | לא נתמך | נתמך | |
| חותמות זמן ברמת המילה | לא נתמך | נתמך | ניסיוני | פוגע בדיוק של התמלול. |
| הטיה של אוצר מילים בהתאמה אישית | נתמך (עד 1,000 מונחים) | נתמך (עד 1,000 מונחים) | נתמך | בדרך כלל, הלקוחות רואים את התוצאות הטובות ביותר עם עד 100 מונחים. |
| הכתבה חכמה ועיצוב חכם | נתמך (עם נקודות קצה ידניות) | נתמך | ניסיוני | התכונה כוללת הסרת מילים מיותרות ועיצוב אלפאנומרי שמבוסס על כוונת המשתמש. בסטרימינג בשידור חי, צריך להשתמש בזיהוי ידני של סוף הדיבור. |
| זיהוי דוברים | לא נתמך | נתמך (עד 8 רמקולים) | ניסיוני | השיוך של 3 דוברים או יותר הוא ניסיוני. |
| משך האודיו המקסימלי | עד 10 דקות | עד 15 דקות | נתמך | עיבוד הקובץ מוגבל ל-15 דקות כשמופעלות תכונות כמו חלוקה לדוברים או חותמות זמן. |
תמלול של סטרימינג בשידור חי
ה-BidiGenerateContent (Live) API נשאר פתוח בזמן שאתם מעבירים בסטרימינג קטעי אודיו קטנים למודל ומקבלים תוצאות תמלול באופן מצטבר, כשהן הופכות לזמינות. התכונה הזו משמשת להוספת כתוביות או לתמלול של קלט המיקרופון כמעט בזמן אמת.
כדי לנסות תמלול בסטרימינג בלי לכתוב קוד, פותחים את gemini-3.5-transcribe-live בדף Gemini Live API ב-Agent Studio, ואז מקליטים או מעלים אודיו וצופים בתמלול בסטרימינג.
התנסות ב-Gemini 3.5 Transcribe ב-Agent Studio
כדי לתמלל אודיו בסטרימינג, צריך ליצור LiveConnectConfig ולהגדיר את response_modalities ל-["TEXT"] לצד ההגדרה של 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}")
תמלול סינכרוני
אתם יכולים להשתמש בשיטה הרגילה של generate_content כדי לתמלל קובצי אודיו שלמים שכבר הוקלטו. מגדירים את הפרמטרים על ידי יצירת AudioTranscriptionConfig בתוך GenerateContentConfig.
חותמות זמן ברמת המילה
ההגדרה word_timestamp=True מחזירה תזמון ברמת המילה. הרשימה audio_transcription.words של התגובה מכילה כל מילה שזוהתה יחד עם start_offset ו-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}**")
חלוקת קובץ האודיו לפי דוברים ואוצר מילים בהתאמה אישית
ההגדרה diarization=True מבקשת מהמודל לזהות דוברים בודדים ולהוסיף להם תוויות. אפשר גם להוסיף את השדה custom_vocabulary עם רשימה של ביטויים שיעזרו ל-Gemini 3.5 Transcribe לזהות מונחים ספציפיים. בדרך כלל, המודל פועל לפי ההוראות של אוצר המילים המותאם אישית בצורה מהימנה יותר כשמציינים גם שפה באמצעות 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}")
מצבי תמלול
Gemini 3.5 Transcribe תומך בשני מצבי תמלול באמצעות הפרמטר mode ב-AudioTranscriptionConfig:
-
VERBATIM(ברירת המחדל): מחזיר תמליל מדויק מילה במילה של כל מה שנאמר, כולל מילים מיותרות ("אממ", "אה", "כאילו", "אתם יודעים"), חזרות, הפסקות והתחלות שגויות. -
SMART(תמלול חכם): עיבוד חכם של התמליל כדי שיהיה קל יותר לקרוא אותו:- הסרת גמגום: הסרת מילים ריקות, גמגום והתחלות שגויות.
- תיקונים עצמיים תוך כדי דיבור: תיקון ישיר של טעויות בדיבור (לדוגמה, "בואו ניפגש ביום שלישי, בעצם לא, ביום רביעי בשתיים" הופך ל-"בואו ניפגש ביום רביעי בשעה 14:00").
- עיצוב מובנה אוטומטי: עיצוב אוטומטי של מחשבות מדוברות לפסקאות, רשימות ממוספרות, תבליטים, תאריכים, מטבעות ומספרים.
- ניקוי דקדוקי: הוספת סימני פיסוק, אותיות רישיות וזרימה טבעית.
| אודיו של דיבור | VERBATIM פלט |
פלט של SMART (תמלול חכם) |
|---|---|---|
| "אממ, אז לפגישה, אני חושב שכדאי, אה, להזמין את אליס, לא, רגע, את בוב וקרול". | "אז לפגישה אני חושב שכדאי להזמין את אליס, לא, רגע, את בוב וקרול". | "לדעתי כדאי להזמין לפגישה את דני ודנה". |
| "הפריט הראשון: בדיקת התקציב, הפריט השני: סיום לוח הזמנים, הפריט השלישי: שליחת סיכום" | "הפריט הראשון: בדיקת התקציב, הפריט השני: סיום לוח הזמנים, הפריט השלישי: שליחת סיכום" | "1. בודקים את התקציב 2. סיום ציר הזמן 3. שליחת סיכום" |
תמלול סינכרוני במצב 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",
),
),
)
תמלול בזמן אמת במצב SMART וזיהוי ידני של סוף הדיבור
כשמשתמשים במצב SMART עם תמלול סטרימינג בשידור חי (gemini-3.5-transcribe-live), צריך להשתמש בזיהוי נקודות קצה ידני (זיהוי דיבור ידני) במקום בזיהוי דיבור אוטומטי. במצב SMART מתבצע עיבוד ברמת הביטוי, כמו תיקון עצמי של טעויות ועיצוב רשימות או פסקאות. לכן, זיהוי דיבור אוטומטי עלול לפצל את המחשבה של המשתמש במהלך הפסקות טבעיות בדיבור.
כדי להגדיר זיהוי ידני של סוף הדיבור, משביתים את automatic_activity_detection ב-RealtimeInputConfig ומסמנים באופן מפורש את ההתחלה והסוף של תור הדיבור של המשתמש באמצעות activity_start ו-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())
שפות
אלה השפות וקודי השפה בתקן BCP-47 שנתמכים ב-Gemini 3.5 Transcribe:
| שפה | קוד BCP-47 | מוכנות | שפה | קוד BCP-47 | מוכנות |
|---|---|---|---|---|---|
| אפריקאנס | af-ZA |
ניסיוני | יפנית | ja-JP |
נתמך |
| אמהרית | am-ET |
ניסיוני | ג'אווה | jv-ID |
ניסיוני |
| ערבית (מצרים) | ar-EG |
ניסיוני | קבוורדיאנית | kea-CV |
ניסיוני |
| ארמנית | hy-AM |
ניסיוני | קנאדה | kn-IN |
ניסיוני |
| אסאמית | as-IN |
ניסיוני | קזחית | kk-KZ |
ניסיוני |
| אזרית | az-AZ |
ניסיוני | קוריאנית | ko-KR |
נתמך |
| בלארוסית | be-BY |
ניסיוני | קירגיזית | ky-KG |
ניסיוני |
| בנגלית (בנגלדש) | bn-BD |
ניסיוני | לטבית | lv-LV |
ניסיוני |
| בנגלית (הודו) | bn-IN |
ניסיוני | לינגלה | ln-CD |
ניסיוני |
| בוסנית | bs-BA |
ניסיוני | ליטאית | lt-LT |
ניסיוני |
| בולגרית | bg-BG |
ניסיוני | מקדונית | mk-MK |
ניסיוני |
| בולגרית (ארומנית) | rup-BG |
ניסיוני | מלאית | ms-MY |
ניסיוני |
| בורמזית | my-MM |
ניסיוני | מלאיאלאם | ml-IN |
ניסיוני |
| קנטונזית (מסורתית) | yue-Hant-HK |
ניסיוני | מלטית | mt-MT |
ניסיוני |
| קטלאנית | ca-ES |
נתמך | מנדרינית (פשוטה) | cmn-Hans-CN |
נתמך |
| סבואנו | ceb |
ניסיוני | מראטהית | mr-IN |
ניסיוני |
| חמרית מרכזית | km-KH |
ניסיוני | מונגולית | mn-MN |
ניסיוני |
| קרואטית | hr-HR |
נתמך | נפאלית | ne-NP |
ניסיוני |
| צ'כית | cs-CZ |
ניסיוני | נורווגית | nb-NO |
ניסיוני |
| דנית | da-DK |
נתמך | אורייה | or-IN |
ניסיוני |
| הולנדית | nl-NL |
נתמך | פולנית | pl-PL |
נתמך |
| אנגלית (אוסטרליה) | en-AU |
נתמך | פורטוגזית (ברזיל) | pt-BR |
נתמך |
| אנגלית (בריטניה) | en-GB |
נתמך | פורטוגזית (פורטוגל) | pt-PT |
נתמך |
| אנגלית (הודו) | en-IN |
נתמך | פנג'אבית | pa-IN |
ניסיוני |
| אנגלית (ארצות הברית) | en-US |
נתמך | פנג'אבי (כתב גורמוקי) | pa-Guru-IN |
ניסיוני |
| אסטונית | et-EE |
ניסיוני | רומנית | ro-RO |
נתמך |
| פרסית | fa-IR |
ניסיוני | רוסית | ru-RU |
נתמך |
| פיליפינית | fil-PH |
ניסיוני | סרבית | sr-RS |
ניסיוני |
| פינית | fi-FI |
נתמך | סינדהית (כתב ערבי) | sd-Arab-IN |
ניסיוני |
| צרפתית | fr-FR |
נתמך | סלובקית | sk-SK |
ניסיוני |
| צרפתית (קנדה) | fr-CA |
נתמך | סלובנית | sl-SI |
ניסיוני |
| גליציאנית | gl-ES |
ניסיוני | ספרדית (אמריקה הלטינית) | es-419 |
ניסיוני |
| גרוזינית | ka-GE |
ניסיוני | ספרדית (ספרד) | es-ES |
נתמך |
| גרמנית | de-DE |
נתמך | ספרדית (ארצות הברית) | es-US |
נתמך |
| יוונית | el-GR |
נתמך | סווהילי (קניה) | sw-KE |
ניסיוני |
| גוג'ארטי | gu-IN |
ניסיוני | שוודית | sv-SE |
נתמך |
| האוסה | ha-NG |
ניסיוני | טג'יקית | tg-TJ |
ניסיוני |
| עברית | he-IL |
ניסיוני | טלוגו | te-IN |
ניסיוני |
| הינדית | hi-IN |
נתמך | תאית | th-TH |
ניסיוני |
| הונגרית | hu-HU |
ניסיוני | טורקית | tr-TR |
נתמך |
| איסלנדית | is-IS |
ניסיוני | אוקראינית | uk-UA |
נתמך |
| אינדונזית | id-ID |
ניסיוני | אוזבקית | uz-UZ |
ניסיוני |
| איטלקית | it-IT |
נתמך | וייטנאמית | vi-VN |
נתמך |
זמינות אזורית
Gemini 3.5 Transcribe זמין במיקומים הבאים ב- Cloud de Confiance by S3NS :
| נקודת קצה (endpoint) | Cloud de Confiance by S3NS מיקום | מוכנות להשקה |
|---|---|---|
gemini-3.5-transcribe |
global |
נתמך |
gemini-3.5-transcribe |
us |
נתמך |
gemini-3.5-transcribe |
eu |
נתמך |
gemini-3.5-transcribe-live |
global |
נתמך |
gemini-3.5-transcribe-live |
us |
נתמך |
gemini-3.5-transcribe-live |
eu |
נתמך |
שיטות מומלצות
- אודיו נקי: ודאו שהקולות בהקלטות האודיו מופרדים בצורה ברורה, והימנעו מקטיעות חמורות.
- לספק רמזים לגבי השפה כשהיא ידועה: אם אתם יודעים מראש מהי שפת האודיו, ציינו את
language_codesכדי לשפר את הדיוק. - אוצר מילים מותאם אישית: כדאי לכלול ב-
custom_vocabularyרק מונחים ייחודיים לתחום, שמות של מותגים או שמות עצם פרטיים, ולא מילים נפוצות שמשתמשים בהן ביום-יום. - שימוש בציון ידני של סוף דיבור במצב
SMARTבתמלול בזמן אמת: משביתים את ה-VAD האוטומטי (automatic_activity_detection) ושולחים באופן מפורש אותותactivity_startו-activity_endכדי שהמודל יוכל להחיל הסרת גמגום, תיקונים עצמיים ועיצוב על פני ביטויים שלמים.
| מזהה המודל | ['gemini-3.5-transcribe', 'gemini-3.5-transcribe-live'] |
|
|---|---|---|
| מודליות |
|
|
| יכולות |
|
|
| כלים |
|
|
| ממשקי API |
|
|
| אפשרויות צריכה |
|
|
| אזורים נתמכים |
|
|
|
||
| גרסאות |
|
|