Голосовой агент вызвал поиск заказа по промежуточной расшифровке
Клиент говорит по телефону: «Проверьте заказ сто двадцать… нет, сто двадцать восемь». Потоковый STT сначала выдаёт «заказ 120», и голосовой агент сразу вызывает lookup_order(120). Через секунду финальная расшифровка содержит 128. Агент уже получил чужой заказ и может озвучить его статус. Причина не в LLM-галлюцинации: приложение приняло временную гипотезу распознавания за завершённый ввод для инструмента.
Разделите текст для интерфейса и текст для действия
Потоковый STT отдаёт interim-результаты, которые может уточнять, и final-результаты для завершённого участка аудио. Промежуточный текст полезен для субтитров и оценки того, что человек говорит, но не должен сам запускать поиск, бронь или изменение заказа. Храните две области состояния: текущую гипотезу для UI и подтверждённый текст для бизнес-действия. При каждом новом interim обновляйте только первую. Когда участок стал final и система определила конец реплики, извлеките номер заказа и намерение из финального текста.
Даже final STT не гарантирует, что номер правильный: сервис лишь больше не меняет этот участок, а не проверяет его по CRM. Повторите услышанный номер пользователю или спросите второй идентификатор, прежде чем раскрывать данные заказа. Для речевого сценария с изменением адреса подтверждение особенно важно: «Я нашёл заказ 128. Перенести доставку на пятницу?» Инструмент изменения вызывается после ответа пользователя, а не после первого распознанного слова «пятница».
Проверьте временную шкалу
Сделайте fixture из последовательности событий: interim: 120, interim: 128, final: 128, конец реплики. Ожидается ровно один вызов поиска по 128 и ни одного по 120. Затем подайте две финальные части одной длинной реплики, чтобы агент не запускал два одинаковых поиска. Полезно хранить utterance_id и отметку, какое действие уже запущено для этой реплики. На новой реплике состояние сбрасывается, иначе пользователь не сможет исправить номер.
Сервис STT может выдать final для нескольких участков одного аудиопотока; точную границу хода определяет ваша логика паузы/turn detection. В журнале храните времена interim, final, начала tool call и ответа CRM. По ним видно, запустилось ли действие до окончательной расшифровки. Для оценки распознавания отдельно измеряйте WER, но низкий WER по тестовым фразам не заменяет проверку маршрута действия.
В платном курсе Voice AI Agents PRO вы связываете STT, LLM и TTS, подключаете function calling для заказов и измеряете качество звонков. Сценарий с исправленным номером показывает, где именно распознавание становится действием и какие подтверждения нужны перед CRM. Откройте программу курса, чтобы собрать и испытать такой голосовой поток.
Продолжить на практике
- Voice AI Agents PRO ↗
Практический PRO-курс по созданию production-ready голосовых AI-агентов для бизнеса в РФ. Оба подхода 2026 года: классический cascade pipeline STT → LLM → TTS и realtime speech-to-speech на GPT-Realtime-2. VAD, end-of-turn detection, barge-in, tool calling в звонке, Voice RAG, evals, версионирование агента. Российский стек: Yandex SpeechKit, SaluteSpeech, YandexGPT, 152-ФЗ. Телефония: SIP, Voximplant, Mango Office.
