1. Почему не использовать Google Actions? Или штук вроде dialogflow.com?
2. Снижение задержек возможно рядом трюков вроде начала отправки голосовых данных непосредственно в сервис с момента начала их произношения. Далее слой кэширования результатов вычленения намерений.
3. Размещение всего стека распознавания речи и интентов у себя.
4. Распараллеливание цепочки там, где это возможно.
Например
- Купи билеты в кино на хороший фильм Тарантино
1. Распознавание
2. Параллельно:
= Поиск хороших фильмов Тарантино
= Поиск кинотеатров поблизости
= Получение данных вашего календаря
3. = Запрос расписаний из ближайших кинотеатров (можно делать параллельно, если нет общего API)
4. Поиск оптимального сеанса
5. Заказ билетов
5. Асинхронное выполнение через очередь, где возможно.
Например:
- Отправь билеты маме.
- Хорошо. (ставится задание в очередь, выполняется асинхронно не блокируя пользователя)