ML Kit의 생성형 AI 음성 인식 API 내에서 오디오 콘텐츠를 텍스트로 트랜스크립트할 수 있습니다. 이 API는 다음 모드를 지원합니다.
- 기본: 음성 인식 API는 SpeechRecognizer API와 유사한 기존의 기기 내 음성
인식 모델을 사용합니다.
- API 수준 31 이상을 사용하는 대부분의 Android 기기에서 일반적으로 사용 가능
- 고급: 음성 인식 API는
더 넓은 언어 지원 범위와 전반적으로 더 나은 품질
을 제공하는 생성형 AI 모델을 사용합니다.
- Pixel 10 기기에서 사용할 수 있으며 더 많은 기기가 개발 중입니다.
주요 기능
- 마이크 또는 오디오 파일에서 스트리밍 입력을 캡처합니다.
- 트랜스크립트된 텍스트는 연속 스트림으로 제공되며, 처음에는 최종 콘텐츠가 되기 전에 부분적일 수 있고 변경될 수 있습니다.
결과 예시
| 오디오 | 모드 | 언어 | 스크립트 작성 |
|---|---|---|---|
| audio_1 | 기본 | en-US | "This is a short message" |
| audio_2 | 고급 | es-ES | "Este es un mensaje corto." |
플랫폼 음성 인식 API와 비교
기본 모드를 사용하는 경우 ML Kit 음성 인식 API는 플랫폼 음성 인식 API와 유사한 핵심 기능을 제공합니다. ML Kit의 주요 이점은 더 넓은 범위의 Android 플랫폼 버전을 지원한다는 점입니다. API 수준 31 이상이 필요하며 이는 일부 플랫폼 API보다 더 넓은 범위입니다.
또한 ML Kit 음성 인식 API는 고급 모드에서 기기 내 Gemini 모델을 사용하여 더 넓은 언어 지원 범위를 제공합니다.
시작하기
build.gradle 구성에 ML Kit 음성 인식 API를 종속 항목으로 추가합니다.
implementation("com.google.mlkit:genai-speech-recognition:1.0.0-alpha1")
음성 인식 API를 앱에 통합하려면 SpeechRecognizer 클라이언트를 만듭니다. 필요한 기기 내 모델 기능의 상태를 확인하고 모델이 아직 기기에 없는 경우 다운로드합니다.
에서 오디오 입력을 준비한 후 클라이언트를 사용하여 추론을 실행하여 SpeechRecognizerRequest Kotlin Flow에서 스트리밍 출력을 수신합니다. 마지막으로 리소스를 해제하려면 클라이언트를 닫아야 합니다.
// 1. Create a SpeechRecognizer with desired options.
val options: SpeechRecognizerOptions =
speechRecognizerOptions {
locale = Locale.US
preferredMode = SpeechRecognizerOptions.Mode.MODE_ADVANCED
}
val speechRecognizer: SpeechRecognizer = SpeechRecognition.getClient(options)
// 2. Check if the recognition model is available or needs downloading.
launch {
val status: Int = speechRecognizer.checkStatus()
if (status == FeatureStatus.DOWNLOADABLE) {
// 3. If needed, download the model and monitor progress.
speechRecognizer.download.collect { downloadStatus ->
when (downloadStatus) {
is DownloadStatus.DownloadCompleted -> {
// Model is ready, start recognition.
startMyRecognition(speechRecognizer)
}
is DownloadStatus.DownloadFailed -> {
// Handle download failure (e.g., inform the user).
}
is DownloadStatus.DownloadProgress -> {
// Handle download progress (e.g., update a progress bar).
}
}
}
} else if (status == FeatureStatus.AVAILABLE) {
// Model is already ready, start recognition immediately.
startMyRecognition(speechRecognizer)
} else {
// Handle other statuses (e.g., DOWNLOADING, UNAVAILABLE).
}
}
// 4. Define your recognition logic using a suspend function.
suspend fun startMyRecognition(recognizer: SpeechRecognizer) {
// Create a request (e.g., specifying audio source).
val request: SpeechRecognizerRequest
= speechRecognizerRequest { audioSource = AudioSource.fromMic() }
// Start recognition and process the continuous stream of responses.
recognizer.startRecognition(request).collect {
// Process the SpeechRecognitionResponse data here.
}
}
// 5. Stop recognition and clean up resources when the session is complete.
launch {
recognizer.stopRecognition()
recognizer.close()
}
오디오 입력 요구사항
생성형 AI 음성 인식 API는 파일 설명자를 통해 마이크 또는 맞춤 소스의 입력을 지원합니다.
AudioSource.fromPfd(parcelFileDescriptor)를 사용하는 경우 입력 오디오는 다음 엄격한 요구사항을 충족해야 합니다.
- 형식: 헤더가 없는 원시 16비트 PCM.
- 채널: 모노 (단일 채널).
- 샘플링 레이트: 16kHz.
대부분의 사용 사례에서는 이러한 제약 조건을 자동으로 처리하므로 AudioSource.fromMic()를 사용하는 것이 좋습니다.
지원되는 언어 및 기기
| 모드 | 언어 |
| 기본 | en-US, fr-FR (베타), it-IT (베타), de-DE (베타), es-ES (베타), hi-IN (베타), ja-JP (베타), pt-BR (베타), tr-TR (베타), pl-PL (베타), cmn-Hans-CN (베타), ko-KR (베타), cmn-Hant-TW (베타), ru-RU (베타), vi-VN (베타) |
| 고급 | 일반적으로 정확도가 높은 언어: en-US, ko-KR, es-ES, fr-FR, de-DE, it-IT, pt-PT, cmn-Hans-CN, cmn-Hant-TW, ja-JP, th-TH, ru-RU, nl-NL (베타), da-DK (베타), sv-SE (베타), pl-PL (베타), hi-IN (베타), vi-VN (베타), id-ID (베타), ar-SA (베타), tr-TR (베타) |
지원되는 기기
| 모드 | 지원되는 기기 |
| 기본 | API 수준 31 이상을 사용하는 Android 기기 |
| 고급 | Pixel 10 |
일반적인 설정 문제
ML Kit 생성형 AI API는 Android AICore 앱을 사용하여 Gemini Nano에 액세스합니다. 기기가 설정된 직후 (초기화 포함) 또는 AICore 앱이 초기화된 직후 (예: 데이터 삭제, 제거 후 재설치)에는 AICore 앱이 초기화를 완료할 시간이 충분하지 않을 수 있습니다 (서버에서 최신 구성 다운로드 포함). 따라서 ML Kit 생성형 AI API가 예상대로 작동하지 않을 수 있습니다. 표시될 수 있는 일반적인 설정 오류 메시지와 처리 방법은 다음과 같습니다.
| 오류 메시지 예 | 처리 방법 |
| 오류 유형 4-CONNECTION_ERROR 및 오류 코드 601-BINDING_FAILURE로 AICore가 실패했습니다. AICore 서비스를 바인딩하지 못했습니다. | 기기 설정 직후 ML Kit 생성형 AI API를 사용하여 앱을 설치하거나 앱이 설치된 후 AICore가 제거될 때 발생할 수 있습니다. AICore 앱을 업데이트한 후 앱을 다시 설치하면 문제가 해결됩니다. |
| 오류 유형 3-PREPARATION_ERROR 및 오류 코드 606-FEATURE_NOT_FOUND로 AICore가 실패했습니다. 기능을 사용할 수 없습니다. |
AICore가 최신 구성 다운로드를 완료하지 않은 경우 발생할 수 있습니다. 기기가 인터넷에 연결되어 있으면 업데이트하는 데 일반적으로 몇 분에서 몇 시간이 걸립니다. 기기를 다시 시작하면 업데이트 속도를 높일 수 있습니다.
기기의 부트로더가 잠금 해제된 경우에도 이 오류가 표시됩니다. 이 API는 부트로더가 잠금 해제된 기기를 지원하지 않습니다. |
| 오류 유형 1-DOWNLOAD_ERROR 및 오류 코드 0-UNKNOWN으로 AICore가 실패했습니다. 기능이 실패 상태 0 및 오류 esz: UNAVAILABLE: 호스트를 확인할 수 없음으로 실패했습니다. | 네트워크 연결을 유지하고 몇 분 기다린 후 다시 시도하세요. |
샘플 코드
- GitHub에서 ML Kit 음성 인식 API 코드 샘플 살펴보기 GitHub