내장된 AI를 사용한 번역

게시일: 2024년 11월 12일

Chrome의 Translator API를 사용하여 로컬 AI 모델을 통해 브라우저에서 텍스트를 번역합니다.

전 세계 잠재고객이 이용할 수 있도록 웹사이트에서 이미 여러 언어로 웹사이트 콘텐츠를 제공하고 있을 수 있습니다. 사용자는 Translator API를 사용하여 모국어로 참여할 수 있습니다. 예를 들어 사용자는 모국어로 지원 채팅에 참여할 수 있으며, 사이트는 사용자가 기기에서 나가기 전에 지원 담당자가 사용하는 언어로 번역할 수 있습니다. 이렇게 하면 모든 사용자에게 원활하고 빠르며 포용적인 환경을 제공할 수 있습니다.

웹에서 콘텐츠를 번역하려면 일반적으로 클라우드 서비스를 사용해야 했습니다. 먼저 소스 콘텐츠가 서버에 업로드되고 서버에서 대상 언어로 번역을 실행한 후 결과 텍스트를 다운로드하여 사용자에게 반환합니다. 클라이언트에서 번역을 실행하면 서버 왕복에 필요한 시간과 번역 서비스 호스팅 비용을 절약할 수 있습니다.

가용성

선택한 대상 언어는 항상 알려져 있지만, 사용자 제작 콘텐츠와 같이 출발어를 알 수 없는 경우도 있습니다. 이 경우 Translator API 제안서에는 Translator API와 출처 체험판에서도 사용할 수 있는 Language Detector API가 모두 포함됩니다. 이 API를 함께 사용하려면 두 오리진 트라이얼에 모두 가입하세요.

특성 감지

Translator API가 지원되는지 확인하려면 다음 기능 감지 스니펫을 실행합니다.

if ('translation' in self && 'createTranslator' in self.translation) {
  // The Translator API is supported.
}

언어 쌍 지원 확인

번역은 주문형으로 다운로드되는 언어 팩으로 관리됩니다. 언어 패키지는 특정 언어의 사전과 같습니다. 이러한 팩은 언어 쌍이 지원되는지 확인할 수 있는 비동기 canTranslate() 함수와 페어링됩니다.

canTranslate() 함수에는 두 필드가 있는 options 매개변수가 필요합니다.

  • sourceLanguage: 텍스트의 현재 언어입니다.
  • targetLanguage: 텍스트를 번역해야 하는 최종 언어입니다.

BCP 47 언어 쇼트코드를 문자열로 사용합니다. 예를 들어 스페인어의 경우 'es', 프랑스어의 경우 'fr'입니다.

await translation.canTranslate({
  sourceLanguage: 'en',
  targetLanguage: 'fr',
});
// 'readily'

canTranslate() 함수는 다음 결과를 반환할 수 있습니다.

  • no: 이 브라우저에서는 요청한 대로 번역할 수 없습니다.
  • readily: 브라우저가 요청에 따라 번역할 수 있습니다.
  • after-download: 브라우저는 관련 모델 또는 언어 팩을 다운로드한 후에만 번역을 실행할 수 있습니다.

downloadprogress 이벤트를 사용하여 다운로드 진행 상황을 수신 대기할 수 있습니다.

translator.ondownloadprogress = progressEvent => {
  updateDownloadProgressBar(progressEvent.loaded, progressEvent.total);
};

다운로드에 실패하면 downloadprogress 이벤트가 더 이상 내보내지 않으며 ready 약속이 거부됩니다.

번역기 만들기 및 실행

변환기를 만들려면 비동기 translation.createTranslator() 함수를 호출합니다. canTranslate()와 마찬가지로 sourceLanguagetargetLanguage용으로 각각 하나씩 총 두 개의 필드가 있는 옵션 매개변수가 필요합니다.

// Create a translator that translates from English to French.
const translator = await self.translation.createTranslator({
  sourceLanguage: 'en',
  targetLanguage: 'fr',
});

번역기가 있으면 비동기 translate() 함수를 호출하여 텍스트를 번역합니다.

await translator.translate('Where is the next bus stop, please?');
// "Où est le prochain arrêt de bus, s'il vous plaît ?"

오리진 트라이얼의 제한사항

출처 무료 체험 기간에는 다음과 같은 제한사항이 적용됩니다.

지원되는 언어 쌍

현재 번역을 위해 최대 3개의 언어 팩을 다운로드할 수 있습니다. Google은 향후 출시에서 사용자 개인 정보 보호에 대한 높은 수준의 표준을 유지하면서 지원되는 언어의 범위를 확대하기 위해 노력하고 있습니다. 필요한 언어 쌍이 canTranslate() 함수로 지원되는지 확인할 수 있습니다.

덜 자주 사용되는 특정 언어 조합이 디지털 지문에 사용될 수 있습니다. 예를 들어 덜 흔한 언어(예: 게일어, 카탈루냐어) 간의 번역보다 영어와 스페인어 간의 번역이 더 일반적입니다. 덜 일반적인 언어 쌍은 사용자 식별을 위한 데이터 포인트로 간주될 수 있습니다.

원본 체험 기간에는 사용자 개인 정보를 보호하기 위해 번역할 수 있는 언어 쌍을 제한하고 있습니다. 언어 쌍은 다음 기준을 충족해야 합니다.

  • 소스 언어와 대상 언어 모두 Chrome에서 기본 언어로 설정됩니다.
  • 또는 언어 중 하나가 Chrome에서 기본 언어로 설정되어 있고 다른 언어가 다음 대중적인 언어 중 하나인 경우에도 이 문제가 발생할 수 있습니다.
    • 영어(en)
    • 중국어 (zh, 간체) 또는 타이완어(zh-Hant, 번체)
    • 일본어(ja)
    • 포르투갈어(pt)
    • 러시아어(ru)
    • 스페인어(es)
    • 터키어(tr)
    • 힌디어(hi)
    • 베트남어(vi)
    • 벵골어(bn)

로컬 테스트를 위해 언어 제한 우회

로컬 프로토타이핑의 경우 명령줄 옵션 --disable-features=TranslationAPIAcceptLanguagesCheck를 사용하여 Chrome을 실행하여 이러한 검사를 우회할 수 있습니다. 또는 chrome://flags/#translation-api언어 패키지 제한 없이 사용 설정으로 설정합니다.

chrome://on-device-translation-internals/를 방문하여 언어 팩을 수동으로 설치하고 제거하세요.

순차 번역

번역은 순차적으로 처리됩니다. 번역할 텍스트를 대량으로 전송하면 이전 번역이 완료될 때까지 후속 번역이 차단됩니다.

번역 요청의 응답성을 높이려면 요청을 함께 처리하고 스피너와 같은 로드 인터페이스를 표시하여 번역이 진행 중임을 알리세요.

웹 작업자 사용 가능 여부

출처 체험판 기간에는 Translator API가 기본 스레드에서만 지원됩니다. API가 널리 보급되면 웹 작업자에서도 사용할 수 있도록 지원할 계획입니다.

데모

Language Detector API와 함께 사용되는 Translator API는 Translator 및 Language Detector API 플레이그라운드에서 확인할 수 있습니다.

표준화 작업

Google에서는 교차 브라우저 호환성을 보장하기 위해 Translator API를 표준화하기 위해 노력하고 있습니다.

Google의 API 제안서는 커뮤니티의 지원을 받아 추가 논의를 위해 W3C 웹 인큐베이터 커뮤니티 그룹으로 이동했습니다. Chrome팀은 W3C 기술 아키텍처 그룹에 의견을 요청하고 MozillaWebKit에 표준 관련 입장을 요청했습니다.

참여 및 의견 공유

오리진 트라이얼에 참여하여 지금 바로 Translator API 테스트를 시작하고 의견을 공유해 주세요. 보내 주시는 의견은 향후 이 API 버전과 모든 내장 AI API를 빌드하고 구현하는 방식에 직접적인 영향을 미칠 수 있습니다.