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를 앱에 통합하려면 다음 단계를 완료하세요.
SpeechTranslatorOptions구성 객체를 빌드하여SpeechTranslator클라이언트를 초기화합니다.- Kotlin Flow API를 사용하여 기능 사용 가능 여부를 확인하고 모델 다운로드를 관리합니다.
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+ |
|
Android 14 |
| Qualcomm Snapdragon | SM8650, SM8750, SM8850, SM8845, SM8975, SM8950, SM8735 |
|
Android 15 |
| MediaTek | Dimensity 9300, 9400+ |
|
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: 호스트 …을(를) 확인할 수 없음으로 실패했습니다. | 네트워크 연결을 유지하고 몇 분 정도 기다린 후 다시 시도하세요. |