Определение конца фразы

EOU (End-of-Utterance, конец высказывания) — признак конца фразы в потоковом распознавании. В процессе потокового распознавания сервер SpeechKit возвращает не всю фразу целиком, а результаты распознавания частей фразы:

  • Промежуточные — ответы с флагом partial, часть фразы может измениться.
  • Окончательные — ответы с флагом final, часть фразы зафиксирована.

SpeechKit возвращает законченную фразу только после определения EOU. Точное определение EOU позволяет, не перебивая, дослушать и распознать речь говорящего, а также сделать реакцию голосового помощника (ответ или уточнение) более естественной.

EOU наступает в следующих случаях:

  • Завершилась gRPC-сессия.

  • Была распознана тишина в последнем фрагменте речи. Тишину можно передать с помощью одного из двух параметров:

    • chunk — звук, который распознается как тишина.
    • silence_chunk — длительность тишины в миллисекундах. Параметр позволяет уменьшить размер пакета с аудио и не передавать в нем тишину, которую не нужно распознавать.

Чтобы повлиять на определение EOU, настройте использование API v3:

  • Задайте параметр max_pause_between_words_hint_ms, который управляет ожидаемой длительностью пауз между словами в рамках одной фразы (в миллисекундах). С помощью этого параметра можно избежать ложного определения EOU при медленной диктовке цифр или настроить быстроту реакции голосового помощника на остановку речи.
  • Задайте параметр type в классификаторе eou_classifier_options=default_classifier, который задает чувствительность метода обнаружения EOU:
    • DEFAULT — метод по умолчанию.
    • HIGH — по сравнению с DEFAULT, быстрее обнаруживает EOU (время ответа от сервера меньше), но возможны ложные срабатывания (точность определения ниже).

Вы также можете определять EOU самостоятельно по данным от SpeechKit (части фразы, статистика распознавания и т. д.):

  1. В запросе API, инициирующем сессию распознавания, укажите параметр eou_classifier_options=external_classifier.
  2. При обнаружении EOU в рамках сессии добавьте в запрос к серверу SpeechKit параметр eou (не заполняется).

SpeechKit использует это как указатель на EOU и вернет законченную фразу в ответе.