В API распознавания речи GenAI от ML Kit вы можете преобразовывать аудиоконтент в текст. Этот API поддерживает следующие режимы:
- Основные характеристики : API распознавания речи использует традиционную модель распознавания речи на устройстве, аналогичную API SpeechRecognizer.
- В целом, доступно на большинстве устройств Android с уровнем API 31 и выше.
- Расширенные возможности : API распознавания речи использует модель GenAI, которая обеспечивает более широкий языковой охват и лучшее общее качество.
- Доступно на устройствах Pixel 10, разработка ведется для других устройств.
Ключевые возможности
- Захватывает потоковый входной сигнал с микрофона или аудиофайла.
- Расшифрованный текст предоставляется в виде непрерывного потока, который первоначально может быть неполным (и подвержен изменениям), прежде чем стать окончательным содержанием.
Пример результатов
| Аудио | Режим | Местоположение | Транскрипция |
|---|---|---|---|
| аудио_1 | Базовый | en-US | «Это короткое сообщение» |
| аудио_2 | Передовой | es-ES | "Este es un mensaje corto." |
Сравнение с API распознавания речи платформы
В базовом режиме API распознавания речи ML Kit предлагает аналогичные основные функции, что и API распознавания речи платформы. Ключевым преимуществом ML Kit является поддержка более широкого спектра версий платформы Android, требующих уровня API 31 или выше, что шире, чем у некоторых API платформы.
Кроме того, API распознавания речи ML Kit использует встроенную модель Gemini в расширенном режиме, обеспечивая более широкий охват языков.
Начать
Добавьте API распознавания речи ML Kit в качестве зависимости в файл конфигурации build.gradle
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()
}
Поддерживаемые языки и устройства
| Режим | Локалы |
| Базовый | 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) |
| Передовой | Локали, которые обычно обладают высокой точностью: 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) |
Поддерживаемые устройства
| Режим | Поддерживаемые устройства |
| Базовый | Устройства Android, использующие API уровня 31 и выше. |
| Передовой | Пиксель 10 |
Распространенные проблемы настройки
API ML Kit GenAI используют приложение Android AICore для доступа к Gemini Nano. При настройке устройства (включая сброс настроек) или сбросе настроек приложения AICore (например, очистка данных, удаление и повторная установка) у приложения AICore может не хватить времени для завершения инициализации (включая загрузку последних конфигураций с сервера). В результате API ML Kit GenAI могут работать некорректно. Ниже приведены распространенные сообщения об ошибках настройки и способы их устранения:
| Пример сообщения об ошибке | Как поступить |
| AICore завершился с ошибкой типа 4-CONNECTION_ERROR и кодом ошибки 601-BINDING_FAILURE: служба AICore не смогла выполнить привязку. | Это может произойти, если вы устанавливаете приложение с использованием API ML Kit GenAI сразу после настройки устройства или если AICore удаляется после установки вашего приложения. Обновление приложения AICore, а затем его повторная установка должны решить проблему. |
| AICore завершился с ошибкой типа 3-PREPARATION_ERROR и кодом ошибки 606-FEATURE_NOT_FOUND: Функция ... недоступна. | Это может произойти, если AICore еще не завершил загрузку последних конфигураций. При подключении устройства к интернету обновление обычно занимает от нескольких минут до нескольких часов. Перезагрузка устройства может ускорить процесс обновления. Обратите внимание, что если загрузчик устройства разблокирован, вы также увидите эту ошибку — данный API не поддерживает устройства с разблокированными загрузчиками. |
| AICore завершился с ошибкой типа 1-DOWNLOAD_ERROR и кодом ошибки 0-UNKNOWN: Функция ... завершилась с ошибкой со статусом 0 и ошибкой esz: UNAVAILABLE: Не удалось разрешить хост ... | Поддерживайте стабильное сетевое соединение, подождите несколько минут и повторите попытку. |
Пример кода
- Изучите пример кода API распознавания речи ML Kit на GitHub.