Голосовые системы

Chat Agent 2.1.2 — упрощение аудиотранспорта

Проверено 29 октября 2026 года. Исходники: b19930bd, remote main подтверждён. Изолированный checkout: `локальный источник Пользовательская основная копия не изменялась.

Установлена версия 2.1.2 по прежнему пути локальный источник; пользователь подтвердил перезагрузку. IDdbcdiabfkimnhbkkhkikgfapnabifmjf`, permissions и CSP сохранены. В manifest изменена только версия. Все 25 файлов установленного пакета совпадают с локально собранным ZIP. Серверные сервисы и инфраструктура в этой итерации не обновлялись.

Что упрощено

  • Убраны отдельные PING/PONG после подписок UI/tools: следующий browser_context на том же NATS-соединении подтверждает порядок.
  • Убран PING/PONG после аудиоподписки: следующим сообщением идёт START на том же соединении.
  • Убран дополнительный flushAudio перед END. END содержит last_seq; ingress уже ждёт соответствующие пакеты. Проверка реально задержанных пакетов сохранена и покрыта тестом.
  • Удалены flushAudio, его обёртка, состояние и неиспользуемый таймер. Ограничение сетевого буфера и drainAudioBuffer, необходимый для быстрой загрузки готовой записи Compare, сохранены.
  • Обычный PCM-кадр передаётся без промежуточного slice(). Копии для VAD/архива и разделение больших кадров сохранены.

В плагине уже не было задержки отрисовки Compare и PING для каждого PCM-пакета. Поэтому эти изменения ускоряют подготовку и остановку канала, а не чистое распознавание каждой фразы. VAD, границы, параметры моделей и очередь ASR не менялись.

Изменено 12 файлов: +71 / −38. Production/build-код и ссылки на исходники: +9 / −22, то есть на 13 строк меньше. Остальное — тесты (+50 / −15) и документация (+12 / −1). Новых зависимостей и сервисов нет.

Измерения до и после

Три чередующиеся пары на реальном NATS/ingress. В каждом запуске — два пакета тишины, 4096 байт PCM, без модели и команд чата. Подключение исключено. Все шесть END подтверждены, диагностические слоты освобождены. Это измерение аудиоконтроля, а не полного запуска панели с физическим микрофоном.

Медиана Было Стало Разница Изменение
Подписка + START после подключения 181,4 мс 98,0 мс −83,4 мс −46,0%
Барьер + END после последнего PCM 181,8 мс 106,7 мс −75,1 мс −41,3%
Лишние PING в этом сценарии 2 0 −2 −100%

Два дополнительных ожидания UI/tools также удалены по коду; отдельно их длительность не измерялась. Для обычного PCM-кадра промежуточная копия уменьшилась с одной до нуля. Снижение удерживаемой памяти и ускорение ASR этим опытом не измерялись.

Данные: исходные шесть запусков, расчёт медиан.

Проверки исходников и CI

Локально: TypeScript PASS; 91 адресный frontend-тест PASS; 9 интеграционных тестов с настоящим NATS PASS; сборка расширения и ZIP PASS; git diff --check PASS.

Pipeline 5508, точный SHA b19930bdfcb9f62e3284719404ded157e5d70e94:

Проверка Результат
Frontend 26708 PASS, 468 тестов / 64 файла, 43,04 с
Browser NATS 26707 PASS, 12,93 с
Dialog integration 26710 PASS, 88 тестов с PostgreSQL/NATS, 108,86 с
Python 26706 Job success; suite явно пропущен: неизменённые входы
Ruby 26709 Job success; suite явно пропущен: неизменённые входы
Extension build 26712 Сборка/ZIP завершены; job FAILED на загрузке artifacts: runner не разрешает внутреннее имя gitlab

Pipeline не объявляется полностью зелёным. Переустановлен локально собранный и проверенный пакет, а не недоступный CI artifact. Инфраструктурный DNS не менялся, повторная бессмысленная сборка не запускалась.

Живая проверка

Контрольная фраза «Ответь одним словом – проверка.»: request dc33a4f2-5139-538f-bc76-d2cda38565ba, stream 3216db78-c721-4b7a-83b0-5bb8a7ece36e. В Monitor подтверждены ASR final, совпадение показанного текста и состояние команды «Выполнено» до остановки микрофона. Отображённые 0,54 с до ответа виджета относятся к обработке команды чата, а не к времени ASR.

В Monitor выполнен повтор «Фраза», Whisper Turbo, исходные координаты 1,112–3,392 с, PCM16 mono 48 кГц. Получен тот же текст; чистое распознавание 150,60 мс. Результат пришёл примерно через 1,04 с; соединение закрыто и слот освобождён на 1,13 с. Эти времена относятся к одному полному диагностическому запуску и не являются сравнением скорости модели до/после.

Микрофон остановлен. Панель показывает «Голос выключен»; поток в Monitor неактивен, запись 168,448 с — «Полная». Состояние панели, результат Monitor, текст результата, статус архива.

Во время предыдущего неконтролируемого речевого прогона были ошибки очереди/тайм-аута последующей обработки команд чата. Это не ошибка доставки ASR; данная итерация их не исправляла. Повторный 30-минутный прогон и измерение удерживаемой памяти в этой узкой правке не выполнялись.

Автоматическая проверка браузера отклонила открытие chrome-extension://…/audio-diagnostics.html: этот протокол запрещён инструменту. Диагностика Monitor проверена, отдельная страница диагностики расширения через браузер не проверена. Обход ограничения не применялся.

Пакет: chat-agent-chrome-2.1.2-b19930bd.zip. SHA-256 5516d8f4d5ace762d49e2003ad505423ce2e32b70ecd92a0d5d851bbdc62f815. Проверка установленных файлов.

Исходник

Скачать Markdown · К материалам исследования