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에서 임시 토큰을 사용할 때:

  1. v1beta 엔드포인트를 사용해야 해요.
  2. 구성 잠금: 기본적으로 서버에서 토큰 생성 제약 조건에 translationConfig를 지정해야 해요. 이렇게 하면 번역 구성이 잠겨 클라이언트가 조작할 수 없어요.
  3. 구성 잠금 해제: 클라이언트 측에서 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)

더 알아보기 (Learn more)