Za pomocą interfejsu GenAI Speech Recognition API w ML Kit możesz transkrybować treści audio na tekst. Ten interfejs API obsługuje te tryby:
- Podstawowy: interfejs Speech Recognition API używa tradycyjnego modelu rozpoznawania mowy na urządzeniu, podobnie jak interfejs SpeechRecognizer API
- Dostępny na większości urządzeń z Androidem z poziomem interfejsu API 31 lub nowszym.
- Zaawansowany: interfejs Speech Recognition API używa modelu GenAI, który zapewnia
szerszy zakres języków i lepszą ogólną jakość
- Dostępny na urządzeniach Pixel 10 i Pixel 11. Trwają prace nad udostępnieniem go na większej liczbie urządzeń.
Najważniejsze funkcje
- Rejestruje strumieniowe dane wejściowe z mikrofonu lub pliku audio.
- Transkrybowany tekst jest dostarczany jako ciągły strumień, który początkowo może być niepełny (i może ulec zmianie), zanim stanie się treścią ostateczną.
Przykładowe wyniki
| Audio | Tryb | Język | Transkrypcja |
|---|---|---|---|
| audio_1 | Podstawowe | en-US | „This is a short message” |
| audio_2 | Zaawansowane | es-ES | „Este es un mensaje corto.” |
Porównanie z interfejsem Speech Recognition API platformy
W trybie podstawowym interfejs Speech Recognition API w ML Kit oferuje podobne podstawowe funkcje jak interfejs Speech Recognition API platformy. Główną zaletą ML Kit jest obsługa szerszego zakresu wersji platformy Android, wymagających poziomu interfejsu API 31 lub nowszego, co jest szersze niż w przypadku niektórych interfejsów API platformy.
Ponadto w trybie zaawansowanym interfejs Speech Recognition API w ML Kit używa modelu Gemini na urządzeniu, co zapewnia szerszy zakres języków.
Rozpocznij
Dodaj interfejs Speech Recognition API w ML Kit jako zależność w konfiguracji build.gradle.
implementation("com.google.mlkit:genai-speech-recognition:1.0.0-alpha1")
Aby zintegrować interfejs Speech Recognition API z aplikacją, utwórz klienta SpeechRecognizer. Sprawdź stan niezbędnych funkcji modelu na urządzeniu i pobierz model, jeśli nie jest jeszcze na nim zainstalowany. Po
przygotowaniu danych wejściowych audio w SpeechRecognizerRequest, uruchom wnioskowanie za pomocą
klienta, aby otrzymywać strumieniowe dane wyjściowe z przepływu Kotlin. Na koniec pamiętaj, aby zamknąć klienta i zwolnić zasoby.
// 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()
}
Wymagania dotyczące danych wejściowych audio
Interfejs GenAI Speech Recognition API obsługuje dane wejściowe z mikrofonu lub niestandardowego źródła za pomocą deskryptora pliku.
Jeśli używasz AudioSource.fromPfd(parcelFileDescriptor), wejściowe dane audio muszą spełniać te rygorystyczne wymagania:
- Format: surowy, bez nagłówka, 16-bitowy PCM.
- Liczba kanałów: mono (1 kanał).
- Częstotliwość próbkowania: 16 kHz.
W większości przypadków zalecamy używanie AudioSource.fromMic(), ponieważ automatycznie obsługuje te ograniczenia.
Obsługiwane języki i urządzenia
| Tryb | Język |
| Podstawowe | en-US, fr-FR (beta), it-IT (beta), de-DE (beta), es-ES (beta), hi-IN (beta), ja-JP (beta), pt-BR (beta), tr-TR (beta), pl-PL (beta), cmn-Hans-CN (beta), ko-KR (beta), cmn-Hant-TW (beta), ru-RU (beta), vi-VN (beta) |
| Zaawansowane | Języki, które zwykle mają wysoką dokładność: 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 (beta), da-DK (beta), sv-SE (beta), pl-PL (beta), hi-IN (beta), vi-VN (beta), id-ID (beta), ar-SA (beta), tr-TR (beta) |
Obsługiwane urządzenia
| Tryb | Obsługiwane urządzenia |
| Podstawowe | Urządzenia z Androidem z poziomem interfejsu API 31 lub nowszym. |
| Zaawansowane | Pixel 10, Pixel 11 |
Typowe problemy z konfiguracją
Interfejsy GenAI API w ML Kit korzystają z aplikacji Android AICore, aby uzyskać dostęp do Gemini Nano. Gdy urządzenie jest dopiero skonfigurowane (w tym zresetowane) lub aplikacja AICore jest dopiero zresetowana (np. wyczyszczone dane, odinstalowana i ponownie zainstalowana), aplikacja AICore może nie mieć wystarczająco dużo czasu na zakończenie inicjowania (w tym pobranie najnowszych konfiguracji z serwera). W rezultacie interfejsy GenAI API w ML Kit mogą nie działać zgodnie z oczekiwaniami. Oto typowe komunikaty o błędach konfiguracji, które mogą się pojawić, oraz sposoby ich obsługi:
| Przykładowy komunikat o błędzie | Jak odpowiedzieć |
| AICore failed with error type 4-CONNECTION_ERROR and error code 601-BINDING_FAILURE: AICore service failed to bind. | Może się to zdarzyć, gdy zainstalujesz aplikację za pomocą interfejsów GenAI API w ML Kit natychmiast po skonfigurowaniu urządzenia lub gdy aplikacja AICore zostanie odinstalowana po zainstalowaniu aplikacji. Problem powinien rozwiązać się po zaktualizowaniu aplikacji AICore i ponownym zainstalowaniu aplikacji. |
| AICore failed with error type 3-PREPARATION_ERROR and error code 606-FEATURE_NOT_FOUND: Feature ... is not available. |
Może się to zdarzyć, gdy aplikacja AICore nie zakończyła pobierania najnowszych konfiguracji. Gdy urządzenie jest połączone z internetem, aktualizacja trwa zwykle od kilku minut do kilku godzin. Ponowne uruchomienie urządzenia może przyspieszyć aktualizację.
Pamiętaj, że jeśli bootloader urządzenia jest odblokowany, też zobaczysz ten błąd – ten interfejs API nie obsługuje urządzeń z odblokowanym bootloaderem. |
| AICore failed with error type 1-DOWNLOAD_ERROR and error code 0-UNKNOWN: Feature ... failed with failure status 0 and error esz: UNAVAILABLE: Unable to resolve host ... | Utrzymuj połączenie z siecią, poczekaj kilka minut i spróbuj ponownie. |
Przykładowy kod
- Zapoznaj się z przykładowym kodem interfejsu Speech Recognition API w ML Kit na GitHub