Один звонок — несколько точек измерения
В Exsada Voice телефонный звук проходит через сервер в диалоговую модель, а ответ возвращается в телефонный канал. Для диагностики нужно различать события на сервере и то, что слышит абонент. Отправленный аудиофрагмент ещё не означает, что его уже воспроизвёл телефон.
Начать можно с общего идентификатора звонка и номера реплики. Для каждого события записывать время по монотонным часам процесса. Если участки измеряются на разных машинах, нельзя просто вычитать их локальные отметки без согласования часов.
Какие события связать
| Отметка | Что фиксируем | Что она позволяет увидеть |
|---|---|---|
| T | Конец речи в тестовой аудиозаписи | Опорную точку для паузы после реплики |
| V | Сигнал системы об окончании реплики | Сколько времени заняло определение конца речи |
| M | Первый полученный фрагмент ответа модели | Ожидание первого аудио после определения конца реплики |
| P | Первый фрагмент передан в телефонию | Время обработки и подготовки звука на сервере |
| D | Начало слышимого ответа на тестовом устройстве | Полную паузу, которую воспринимает собеседник |
Общая пауза — D − T, если обе отметки получены из одной записи на тестовом устройстве. Разности M − V и P − M помогают разобрать серверный участок, если события приведены к одним часам. Одних серверных логов недостаточно для измерения всей паузы у абонента.
Схема записи для теста
Вместо одного поля «длительность ответа» полезен журнал событий. Ниже условная структура — без результатов реального звонка:
call_id: test-call-01
turn_id: 3
event: first_audio_received
monotonic_ms: значение часов процесса
clock_id: voice-server-01
scenario: short_request
variant: baselineВ журнал не обязательно включать запись разговора или персональные данные. Для сопоставления нужны идентификатор, этап и условия теста. Правила хранения аудио следует определить отдельно, если для исследования потребуется запись.
С чем сравнивать
Подготовьте одинаковые короткие и длинные реплики, паузы внутри фразы и случаи, когда человек перебивает агента. Сравнивайте варианты на тех же сценариях и при одинаковой нагрузке. Зафиксируйте модель, настройки определения конца речи, формат аудио и сетевые условия.
Смотрите не только на медиану: p95 покажет задержку, которую не превышает примерно 95% наблюдений в выборке. Рядом сохраняйте размер выборки, число ошибок и случаи преждевременного ответа. Меньшая пауза не является улучшением, если агент регулярно обрывает человека.
Как результат меняет решение
Если основная пауза возникает до события V, сначала исследуйте определение конца речи. Если после V долго нет первого аудио, сравнивайте работу диалогового сервиса и сетевой путь. Если задержка появляется между M и P, проверьте обработку и очереди на своём сервере.
Текущая задача Exsada Voice — развивать естественность разговора и готовить такие проверки. Измерения помогут выбирать изменения по их влиянию на диалог; численные результаты ещё не опубликованы.
Как устроена платформа Exsada Voice · Python: монотонные часы