Gemini 3.5 Transcribe는 여러 언어로 음성을 텍스트로 변환하는 Google의 모델로, Agent Platform을 통해 사용할 수 있습니다. Gemini의 오디오 이해 기능을 기반으로 발화 기반 언어 감지, 화자 분할, 단어 수준 타임스탬프, 스마트 스크립트 작성, 커스텀 어휘 음성 편향을 통해 지연 시간이 짧고 정확한 스크립트를 제공합니다.
Gemini 3.5 Transcribe는 심층 추론 멀티모달 모델과 고도로 최적화된 Speech-to-Text 워크플로 간의 격차를 해소하는 기본 오디오 스크립트 작성 도구 역할을 합니다.
시작하려면 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가 열린 상태로 유지됩니다. 이 기능은 마이크 입력을 거의 실시간으로 자막으로 변환하거나 스크립트로 작성하는 데 사용됩니다.
코드를 작성하지 않고 스트리밍 스크립트 작성을 사용해 보려면 Agent Studio의 Gemini Live API 페이지에서 gemini-3.5-transcribe-live를 연 다음 오디오를 녹음하거나 업로드하고 스크립트 스트리밍을 확인하세요.
Agent Studio에서 Gemini 3.5 Transcribe 사용해 보기
스트리밍 오디오를 스크립트로 작성하려면 LiveConnectConfig를 빌드하고 input_audio_transcription 구성과 함께 response_modalities를 ["TEXT"] 로 설정합니다.
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 메서드를 사용하여 이미 녹음된 전체 오디오 파일을 스크립트로 작성할 수 있습니다. GenerateContentConfig 내부에 AudioTranscriptionConfig를 빌드하여 매개변수를 구성합니다.
단어 수준 타임스탬프
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로 설정하면 모델이 개별 화자를 식별하고 라벨을 지정합니다. Gemini 3.5 Transcribe가 특정 용어를 인식하도록 편향시키는 구문 목록이 포함된 custom_vocabulary 필드를 제공할 수도 있습니다. 일반적으로 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는 AudioTranscriptionConfig의 mode 파라미터를 통해 두 가지 스크립트 작성 모드를 지원합니다.
VERBATIM(기본값): 발화된 모든 내용을 단어 단위로 정확하게 스크립트로 작성하여 반환하며, 추임새 ('음', '어', '그', '있잖아'), 반복, 일시중지, 잘못된 시작을 그대로 유지합니다.SMART(스마트 스크립트): 지능형 후처리를 적용하여 읽기용 스크립트를 최적화합니다.- 군더더기 표현 삭제: 대화 중 추임새, 말더듬, 잘못된 시작을 삭제합니다.
- 인라인 자체 수정: 음성 수정을 직접 해결합니다 (예:"화요일에 만나자, 아니 수요일 2시에 만나자"가 "수요일 오후 2시에 만나자"로 수정됨).
- 자동 구조화 형식 지정: 음성으로 입력된 생각을 단락, 번호 매기기 목록, 글머리 기호, 날짜, 통화, 숫자 형식으로 자동 구조화합니다.
- 문법 정리: 자연스러운 구두점, 문장 대소문자, 흐름을 적용합니다.
| 음성 오디오 | 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 모드 및 수동 엔드포인트 지정을 사용한 실시간 스크립트 작성
실시간 스트리밍 스크립트 작성 (gemini-3.5-transcribe-live)과 함께 SMART 모드를 사용하는 경우 자동 VAD 대신 수동 엔드포인트 (수동 음성 활동 감지)를 사용해야 합니다. SMART 모드는 인라인 자체 수정 해결, 목록 또는 단락 구조화와 같은 발화 수준 후처리를 적용하므로 자동 VAD는 자연스러운 일시중지 중에 사용자의 생각을 조기에 분할할 수 있습니다.
수동 엔드포인트를 구성하려면 RealtimeInputConfig에서 automatic_activity_detection를 사용 중지하고 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())
언어 지원
Gemini 3.5 Transcribe에서는 다음 언어 및 BCP-47 언어 코드가 지원됩니다.
| 언어 | 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 위치에서 사용할 수 있습니다.
| 엔드포인트 | 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신호를 명시적으로 전송하여 모델이 전체 발화에서 군더더기 표현 삭제, 자체 수정, 서식 지정을 적용할 수 있도록 합니다.
| 모델 ID | ['gemini-3.5-transcribe', 'gemini-3.5-transcribe-live'] |
|
|---|---|---|
| 형식 |
|
|
| 기능 |
|
|
| 도구 | ||
| API |
|
|
| 소비 옵션 |
|
|
| 지원되는 리전 |
|
|
|
||
| 버전 |
|
|