Под капотом SpeechNotRecognized


Рассказывает лингвист-разработчик Лена Шукшина

Событие speechNotRecognized на самом деле скрывает за собой два разных явления.

  • Первое — нераспознанная реплика. Человек что-то сказал, но ASR не смог распознать, что именно. Событие speechNotRecognized прилетает после того, как человек замолчал.
  • Второй — тишина, speechNotRecognized прилетает после таймаута слушания (5 сек по умолчанию или значение, заданное с помощью $dialer.NoInputTimeout).

Иногда нам хочется реагировать на эти два события по-разному. Например, если человек молчит, говорить “алло, алооо, не молчите”, а если не смогли распознать — попросить повторить.

Отличить эти два вида speechNotRecognized можно по наличию $request.rawRequest.utterances. У нераспознанной реплики это поле будет, у тишины — нет.

Пример стейта:

state: SpeechNotRecognized
  if: $request && $request.rawRequest && $request.rawRequest.utterances
    a: Извините, не расслышала. Не могли бы вы повторить?
  else:
    a: Алло, алло, вас не слышно!

Документация JAICP
Статья про нераспознанную речь и событие speechNotRecognized

Читать!


Отдельно про метод $dialer.noInputTimeout

Читать!