Za pomocą interfejsu 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. Pracujemy nad udostępnieniem go na większej liczbie urządzeń.
Najważniejsze funkcje
- Umożliwia rejestrowanie strumieniowych danych wejściowych 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 urządzeniu. 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 Speech Recognition API w GenAI 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 |
Typowe problemy z konfiguracją
Interfejsy ML Kit GenAI API 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 ML Kit GenAI API 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 ML Kit GenAI API 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 program rozruchowy urządzenia jest odblokowany, zobaczysz też ten błąd – ten interfejs API nie obsługuje urządzeń z odblokowanym programem rozruchowym. |
| 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