Gemini Live API로 실시간 번역하기
Gemini Live API로 실시간 번역하기 (Live translation with Gemini Live API)
Gemini Live API는 gemini-3.5-live-translate-preview 모델을 사용해 70개 이상의 언어 간 저지연 실시간 음성 대 음성 번역을 지원해요. Live API를 번역 설정으로 구성하면 한 언어로 오디오를 스트리밍하고 다른 언어로 번역된 오디오 출력을 받을 수 있어, 끊김 없는 실시간 음성 대 음성 번역이 가능해요.
출처: 원문
본문
Live Agent와 Live Translation 비교
둘 다 Live API를 사용하지만, Live Translation의 사고 모델(mental model)은 대화형 실시간 에이전트 상호작용과 달라요.
| Live Agent | Live Translation |
|---|---|
| 모델이 어시스턴트 역할을 해요. 듣고, 추론하고, 여러분을 대신해 행동해요. | 모델이 통역사 역할을 해요. 실시간 번역 파이프라인처럼 동작해요. |
| 턴 기반 상호작용을 사용해요. 일시 중지, 의도 감지에 의존하고 방해를 처리해요. | 연속 스트림 처리를 사용해요. 화자가 말하는 대로 턴을 기다리지 않고 번역해요. |
| 도구와 에이전트를 지원해요. 함수 호출, Google 검색, 지침을 기본 지원해요. | 번역만 지원해요. 순수 저지연 번역; 도구나 지침은 지원하지 않아요. |
| 완전한 멀티모달. 텍스트, 오디오, 비디오, 이미지 입력을 지원해요. | 오디오 제한. 엄격한 실시간 지연 임계값을 보장하기 위해 입력이 오디오로 제한돼요. |
| 세밀한 구성. 생성, 음성, 도구, 시스템 지침을 사용해요. | 간소화된 구성. target_language_code와 echo_target_language 같은 토글을 설정해요. |
시작하기 (Get started)
다음 예시는 클라이언트를 초기화하고 번역 구성으로 Live API에 연결하는 방법을 보여줘요.
오디오 보내기 (Sending audio)
번역을 위한 음성 입력을 스트리밍하려면 raw little-endian 16비트 PCM 오디오를 보내요.
- 입력 오디오 형식: 16kHz raw 16비트 PCM(모노, little-endian).
- 출력 오디오 형식: 24kHz raw 16비트 PCM(모노, little-endian).
- 청크 크기 및 지연 시간: 100ms 청크로 오디오를 보내요.
참고: 번역에서는 오디오 입력만 지원해요. 텍스트 입력은 지원되지 않아요.
다음 예시는 세션에 오디오 청크를 보내는 방법을 보여줘요.
구성 (Configuration)
번역을 활성화하려면 세션 설정 중 generationConfig 안에 translationConfig를 지정해야 해요.
설정 메시지 구성
generationConfig는 트랜스크립트를 활성화하는 다음 필드를 지원해요.
inputAudioTranscription: 존재하면 모델이 입력 오디오의 텍스트 트랜스크립트를 보낼 수 있게 하는 객체예요.outputAudioTranscription: 존재하면 모델이 출력(번역된) 오디오의 텍스트 트랜스크립트를 보낼 수 있게 하는 객체예요.
translationConfig는 다음 필드를 지원해요.
targetLanguageCode: 모델이 번역할 언어의 BCP-47 언어 코드예요 (예: 폴란드어는"pl", 스페인어는"es"). 기본값은"en"이에요.echoTargetLanguage: 이미 대상 언어로 된 입력 오디오를 어떻게 처리할지 나타내는 불리언이에요.true로 설정하면 모델이 이미 대상 언어로 된 입력 오디오를 에코(따라 말함)해요.false로 설정하면 입력 음성이 이미 대상 언어일 때 모델이 조용히 있어요. 기본값은false예요.
설정 메시지 구조의 예시는 다음과 같아요.
"setup": {
"model": "models/gemini-3.5-live-translate-preview",
"generationConfig": {
"responseModalities": [
"AUDIO"
],
"inputAudioTranscription": {},
"outputAudioTranscription": {},
"translationConfig": {
"targetLanguageCode": "pl",
"echoTargetLanguage": true
}
}
}
클라이언트 측 애플리케이션에서 임시 토큰 사용하기
클라이언트-서버 애플리케이션에서는 임시 토큰(현재 v1beta)을 사용해 API 키 노출을 피할 수 있어요.
Live Translation에서 임시 토큰을 사용할 때:
v1beta엔드포인트를 사용해야 해요.- 구성 잠금: 기본적으로 서버에서 토큰 생성 제약 조건에
translationConfig를 지정해야 해요. 이렇게 하면 번역 구성이 잠겨 클라이언트가 조작할 수 없어요. - 구성 잠금 해제: 클라이언트 측에서
translationConfig를 설정하려면(예: 사용자가 자신의 대상 언어를 선택하도록 허용), 토큰 생성 요청에서 이를 생략하고 대신"lock_additional_fields": []를 설정해야 해요. 그러면translationConfig를 클라이언트 측에서 설정할 수 있게 잠금이 해제돼요.
제한된 임시 토큰 생성하기
다음 예시는 번역 제약 조건으로 임시 토큰을 만드는 방법을 보여줘요.
제한 사항 (Limitations)
- 입력 모달리티: 번역에서는 오디오 입력만 지원해요. 텍스트 입력은 지원되지 않아요.
- 음성 복제: 음성 복제가 일관되지 않을 수 있어요. 긴 일시 중지 후 음성이 바뀌거나, 말이 시작되는 방식에 따라 잘못된 성별로 지정되거나, 빠른 다중 화자 대화 중에 한 음성에 갇혀 버릴 수 있어요.
- 언어 감지: 언어 감지는 심한 억양, 유사한 언어(예: 스페인어 대 포르투갈어), 또는 빠른 언어 전환에서 어려움을 겪어요. 참고: 이는 입력 트랜스크립트에만 영향을 주어야 해요. 언어 코드와 최종 번역은 여전히 정확해야 해요.
- 배경 오디오: 모델은 깨끗한 음성을 생성하기 위해 노이즈와 음악을 걸러내도록 설계되었지만, 모든 배경 오디오가 무시되지는 않을 수 있어요.
- Echo 대상 언어:
echoTargetLanguage: true일 때 입력 오디오가 이미 대상 언어라면 배경 노이즈나 음악이 번역된 오디오에 아티팩트를 만들 수 있어요.
지원 언어 (Supported languages)
Live Translation에서 지원되는 언어는 다음과 같아요.
| 언어 | BCP-47 코드 | 언어 | BCP-47 코드 |
|---|---|---|---|
| 아프리칸스어 | af | 카자흐어 | kk |
| 아칸어 | ak | 크메르어 | km |
| 알바니아어 | sq | 키냐르완다어 | rw |
| 암하라어 | am | 한국어 | ko |
| 아랍어 | ar | 라오어 | lo |
| 아르메니아어 | hy | 라트비아어 | lv |
| 아제르바이잔어 | az | 리투아니아어 | lt |
| 바스크어 | eu | 마케도니아어 | mk |
| 벨라루스어 | be | 말레이어 | ms |
| 벵골어 | bn | 말라얄람어 | ml |
| 불가리아어 | bg | 마라티어 | mr |
| 버마어(미얀마) | my | 몽골어 | mn |
| 카탈루냐어 | ca | 네팔어 | ne |
| 중국어(간체) | zh-Hans | 노르웨이어 | no, nb |
| 중국어(번체) | zh-Hant | 페르시아어 | fa |
| 크로아티아어 | hr | 폴란드어 | pl |
| 체코어 | cs | 포르투갈어(브라질) | pt-BR |
| 덴마크어 | da | 포르투갈어(포르투갈) | pt-PT |
| 네덜란드어 | nl | 펀자브어 | pa |
| 영어 | en | 루마니아어 | ro |
| 에스토니아어 | et | 러시아어 | ru |
| 필리핀어 | fil | 세르비아어 | sr |
| 핀란드어 | fi | 신디어 | sd |
| 프랑스어 | fr | 신할라어 | si |
| 갈리시아어 | gl | 슬로바키아어 | sk |
| 조지아어 | ka | 슬로베니아어 | sl |
| 독일어 | de | 스페인어 | es |
| 그리스어 | el | 순다어 | su |
| 구자라트어 | gu | 스와힐리어 | sw |
| 하우사어 | ha | 스웨덴어 | sv |
| 히브리어 | he | 타밀어 | ta |
| 힌디어 | hi | 텔루구어 | te |
| 헝가리어 | hu | 태국어 | th |
| 아이슬란드어 | is | 터키어 | tr |
| 인도네시아어 | id | 우크라이나어 | uk |
| 이탈리아어 | it | 우르두어 | ur |
| 일본어 | ja | 우즈베크어 | uz |
| 자와어 | jv | 베트남어 | vi |
| 칸나다어 | kn | 줄루어 | zu |
다음 단계 (What's next)
- 전체 Live API Capabilities 가이드를 읽어보세요.
- SDK 시작하기 가이드를 읽어보세요.
- WebSockets 시작하기 가이드를 읽어보세요.
- 클라이언트-서버 애플리케이션의 안전한 인증을 위해 임시 토큰 가이드를 읽어보세요.
- GitHub에서 Live API 예시를 클론하세요.