API распознавания речи GenAI

В 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.