GenAI Speech Translation API

ML Kit GenAI Speech Translation API를 사용하면 다양한 언어로 된 음성 오디오를 실시간으로 기기 내에서 번역할 수 있습니다. Speech Translation API는 Google의 생성형 AI 음성 모델을 사용하여 클라우드 기반 오디오 처리를 요구하지 않고 지연 시간이 짧고 품질이 우수하며 개인 정보 보호에 중점을 둔 음성 텍스트 변환 번역을 제공합니다.

주요 기능

  • 모델 준비 여부 확인, 다운로드 시작, 실제 번역 실행까지 전체 프로세스를 단일 API를 통해 관리합니다. 구현 세부정보는 Speech Translation API 통합을 참조하세요.
  • 마이크 또는 파일의 실시간 오디오를 처리하고 실시간 업데이트를 위해 Kotlin Flow를 사용하여 중간 및 최종 텍스트 결과를 모두 수신합니다.
  • 사용자 개인 정보 보호를 유지하고 전체 오프라인 기능을 지원하기 위해 온디바이스에서 모든 오디오 분석 및 번역 작업을 실행합니다.

결과 예시

입력 오디오 출발어 도착어 출력 텍스트
대답 읽어주기: "안녕하세요. 오늘 기분이 어떠세요?" 영어 (미국) - en-US 스페인어 (es-ES) "Hola, ¿cómo estás hoy?"
대답 읽어주기: 'こんにちは、はじめまして' 일본어 (ja-JP) 영어 (미국) - en-US "안녕하세요, 만나서 반갑습니다."

기본 요건

Speech Translation API를 사용하려면 다음 요구사항을 충족해야 합니다.

  • 지원되는 기기가 있어야 합니다.
  • 기기에 Google의 음성 인식 및 합성 앱(com.google.android.tts)의 최신 베타 버전(versionCode 210665810 이상)이 설치되어 있어야 합니다.
  • Gemini Nano V4를 다운로드하려면 기기에 최소 4.0GB의 여유 저장공간이 있어야 합니다.

시작하기

시작하려면 모듈 수준 build.gradle.kts (또는 build.gradle) 파일에 ML Kit 음성 번역 종속 항목을 추가합니다.

Kotlin

dependencies {
    // ML Kit Base Infrastructure
    implementation("com.google.mlkit:common:18.10.0")
    // ML Kit GenAI Speech Translation SDK
    implementation("com.google.mlkit:genai-speech-translation:1.0.0-alpha1")
}

Groovy

dependencies {
    // ML Kit Base Infrastructure
    implementation 'com.google.mlkit:common:18.10.0'
    // ML Kit GenAI Speech Translation SDK
    implementation 'com.google.mlkit:genai-speech-translation:1.0.0-alpha1'
}

Speech Translation API 통합

통역 SDK를 앱에 통합하려면 다음 단계를 완료하세요.

  1. SpeechTranslatorOptions 구성 객체를 빌드하여 SpeechTranslator 클라이언트를 초기화합니다.
  2. Kotlin Flow API를 사용하여 기능 사용 가능 여부를 확인하고 모델 다운로드를 관리합니다.
  3. SpeechTranslatorRequest 객체를 만들어 TranslationAudio 데이터 패킷을 스트리밍하고 실시간 번역 결과를 관찰합니다. 입력 오디오는 PCM 16비트, 16kHz, 모노 형식이어야 합니다.
// Initialize the client.
val options = SpeechTranslatorOptions.Builder(Locale.US, Locale.CHINESE).build()
val client = SpeechTranslation.getClient(options)

// Check and download the on-device model.
if (client.checkStatus() == FeatureStatus.DOWNLOADABLE) {
    client.download().collect { status ->
        println("Download progress: $status")
    }
}

// Construct a streaming request with raw audio (PCM 16-bit, 16kHz, mono).
val audioFlow = flow {
    emit(TranslationAudio(Locale.US, rawAudioBytes))
}
val request = SpeechTranslatorRequest.Builder(audioFlow).build()

// Start a session and collect translated responses.
client.startTranslation(request).collect { response ->
    when (response) {
        is SpeechTranslatorResponse.Text -> {
            println("Translation (${response.locale}): ${response.translatedText}")
        }
        is SpeechTranslatorResponse.ErrorResponse -> {
            println("Translation failed: ${response.e.message}")
        }
        is SpeechTranslatorResponse.CompletedResponse -> {
            println("Session closed.")
        }
    }
}

// Close the client when done.
client.close()

지원되는 기기

Speech Translation API를 사용하려면 기기의 칩셋에 고성능 신경 가속기 (TPU/NPU)가 통합되어 있어야 합니다. 다음 표에는 지원되는 주요 휴대전화 모델이 나와 있지만 지원 여부를 확인하려면 기기의 칩셋을 확인해야 합니다.

칩셋 제품군 칩셋 ID 기기 예 최소 OS 버전
Google Tensor Google Tensor G5, G6+
  • Google Pixel 10, 11
Android 14
Qualcomm Snapdragon SM8650, SM8750, SM8850, SM8845, SM8975, SM8950, SM8735
  • 삼성 갤럭시 S25, S25+, S25 울트라
  • 삼성 갤럭시 S26, S26+, S26 울트라
  • 삼성 갤럭시 Z 폴드7
  • Xiaomi 15
  • OnePlus 13
  • Motorola Razr 60 Ultra
Android 15
MediaTek Dimensity 9300, 9400+
  • OPPO Find X10, X10 Pro
  • 삼성 갤럭시 탭 S12
Android 15

일반적인 설정 문제

ML Kit GenAI API는 Android AICore 앱을 사용하여 Gemini Nano에 액세스합니다. 기기가 방금 설정되었거나 (재설정 포함) AICore 앱이 방금 재설정된 경우 (예: 데이터 삭제, 제거 후 재설치) AICore 앱이 초기화 (서버에서 최신 구성 다운로드 포함)를 완료할 시간이 충분하지 않을 수 있습니다. 따라서 ML Kit GenAI API가 예상대로 작동하지 않을 수 있습니다. 다음은 표시될 수 있는 일반적인 설정 오류 메시지와 해결 방법입니다.

오류 메시지 예 대응 방법
AICore가 오류 유형 4-CONNECTION_ERROR 및 오류 코드 601-BINDING_FAILURE로 인해 실패했습니다. AICore 서비스를 바인딩할 수 없습니다. 이러한 상황은 기기 설정 직후 ML Kit GenAI API를 사용하여 앱을 설치하거나 앱이 설치된 후 AICore가 제거될 때 발생할 수 있습니다. AICore 앱을 업데이트한 후 앱을 다시 설치하면 문제가 해결됩니다.
AICore가 오류 유형 3-PREPARATION_ERROR 및 오류 코드 606-FEATURE_NOT_FOUND로 실패했습니다. … 기능을 사용할 수 없습니다. AICore가 최신 구성 다운로드를 완료하지 않은 경우에 발생할 수 있습니다. 기기가 인터넷에 연결되어 있으면 업데이트하는 데 일반적으로 몇 분에서 몇 시간이 걸립니다. 기기를 다시 시작하면 업데이트 속도가 빨라질 수 있습니다.

기기의 부트로더가 잠금 해제된 경우에도 이 오류가 표시됩니다. 이 API는 부트로더가 잠금 해제된 기기를 지원하지 않습니다.
AICore가 오류 유형 1-DOWNLOAD_ERROR 및 오류 코드 0-UNKNOWN으로 실패했습니다. … 기능이 실패 상태 0 및 오류 esz: UNAVAILABLE: 호스트 …을(를) 확인할 수 없음으로 실패했습니다. 네트워크 연결을 유지하고 몇 분 정도 기다린 후 다시 시도하세요.