Для создания пользовательских команд - голосовых команд - мы анализируем результаты транзакций, которые возвращаются из голосового API, а затем предпринимаем соответствующие действия, если это применимо.
Ex. Пользователь скажет "Новый абзац", и это вызовет действие createNewParagraph
С этим "решением" мы столкнулись с несколькими проблемами, которые я пытаюсь обсудить. Во-первых, мы должны убедиться, что сравниваем строки без учета регистра, поэтому "новый абзац", "новый абзац" и "новый абзац" равны; сравнение и анализ более чем одной строки таким образом - и принятие соответствующих действий - будет равносильно времени обработки и потенциальным конфликтам, замедлению ответа и плохому восприятию пользователя.
Во-вторых, когда определенная "командная фраза" является частью пользовательской диктовки, она запускает действие (если, возможно, ни одно не было предназначено) ex.
let command = "Call Bob";
// user transcription is "Yesterday I arrived to work and no one was
// there so I had to CALL BOB to open the front door"
^^ Это вызовет call(Bob)
действия call(Bob)
(или как там определено)
(Глупый пример, чтобы попытаться продемонстрировать проблему, которую мы делаем)
Как вы победили эти проблемы? Какие ресурсы вы рекомендуете?
Это называется намеренным извлечением. Вы можете попробовать Расу для этого. Для JavaScript есть что-то вроде компромисса