ML Kit의 생성형 AI 음성 인식 API 내에서 오디오 콘텐츠를 텍스트로 변환할 수 있습니다. 이 API는 다음 모드를 지원합니다.
- 기본: Speech Recognition API는 SpeechRecognizer API와 유사한 기존 온디바이스 음성 인식 모델을 사용합니다.
- API 수준 31 이상인 대부분의 Android 기기에서 일반적으로 사용 가능
- 고급: Speech Recognition API는 더 넓은 언어 지원 범위와 더 나은 전반적인 품질을 제공하는 생성형 AI 모델을 사용합니다.
- Pixel 10 기기에서 사용할 수 있으며, 더 많은 기기에서 개발 중입니다.
주요 기능
- 마이크 또는 오디오 파일에서 스트리밍 입력을 캡처합니다.
- 전사된 텍스트는 연속 스트림으로 제공되며, 처음에는 부분적일 수 있고 변경될 수 있으며 최종 콘텐츠가 됩니다.
결과 예시
| 오디오 | 모드 | 언어 | 스크립트 작성 |
|---|---|---|---|
| audio_1 | 기본 | en-US | '짧은 메시지입니다.' |
| audio_2 | 고급 | es-ES | 'Este es un mensaje corto.' |
플랫폼 음성 인식 API와의 비교
기본 모드를 사용하는 경우 ML Kit 음성 인식 API는 플랫폼 음성 인식 API와 유사한 핵심 기능을 제공합니다. ML Kit의 주요 장점은 더 광범위한 Android 플랫폼 버전을 지원한다는 점입니다. ML Kit에는 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 흐름에서 스트리밍 출력을 수신합니다. 마지막으로 리소스를 해제하려면 클라이언트를 닫아야 합니다.
// 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()
}
지원되는 언어 및 기기
| Mode(최빈값) | 언어 |
| 기본 | 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 (베타) |
지원되는 기기
| Mode(최빈값) | 지원되는 기기 |
| 기본 | API 수준 31 이상을 사용하는 Android 기기 |
| 고급 | Pixel 10 |
일반적인 설정 문제
ML Kit 생성형 AI API는 Android AICore 앱을 사용하여 Gemini Nano에 액세스합니다. 기기가 설정된 직후 (초기화 포함) 또는 AICore 앱이 초기화된 직후 (예: 데이터 삭제, 제거 후 재설치)에는 AICore 앱이 초기화 (서버에서 최신 구성 다운로드 포함)를 완료할 시간이 충분하지 않을 수 있습니다. 따라서 ML Kit 생성형 AI API가 예상대로 작동하지 않을 수 있습니다. 표시될 수 있는 일반적인 설정 오류 메시지와 처리 방법은 다음과 같습니다.
| 오류 메시지 예 | 처리 방법 |
| AICore가 오류 유형 4-CONNECTION_ERROR 및 오류 코드 601-BINDING_FAILURE로 실패했습니다. AICore 서비스가 바인딩되지 않았습니다. | 이는 기기 설정 직후 ML Kit 생성형 AI API를 사용하여 앱을 설치하거나 앱이 설치된 후 AICore가 제거된 경우 발생할 수 있습니다. AICore 앱을 업데이트한 후 앱을 다시 설치하면 문제가 해결됩니다. |
| AICore가 오류 유형 3-PREPARATION_ERROR 및 오류 코드 606-FEATURE_NOT_FOUND로 실패했습니다. 기능 ...을 사용할 수 없습니다. |
이는 AICore가 최신 구성 다운로드를 완료하지 않은 경우 발생할 수 있습니다. 기기가 인터넷에 연결되어 있으면 업데이트하는 데 일반적으로 몇 분에서 몇 시간이 걸립니다. 기기를 다시 시작하면 업데이트 속도를 높일 수 있습니다.
기기의 부트로더가 잠금 해제된 경우에도 이 오류가 표시됩니다. 이 API는 부트로더가 잠금 해제된 기기를 지원하지 않습니다. |
| AICore가 오류 유형 1-DOWNLOAD_ERROR 및 오류 코드 0-UNKNOWN으로 실패했습니다. 기능 ...이 실패 상태 0 및 오류 esz: UNAVAILABLE로 실패했습니다. 호스트 ...를 확인할 수 없습니다. | 네트워크 연결을 유지하고 몇 분 정도 기다린 후 다시 시도합니다. |
샘플 코드
- GitHub에서 ML Kit 음성 인식 API 코드 샘플 살펴보기