antonov-ai.ru
проверяется…

Голосовой диалог по цепочке микрофон → распознавание (STT) → ответ модели (LLM) → синтез речи (TTS). Серверный STT — Whisper.cpp small на VPS, TTS — edge-tts с русскими голосами. Альтернативный STT — Web Speech API прямо в браузере: мгновенный, но требует Chrome/Edge.

Удерживай кнопку или жми Space, говори чётко в микрофон.
STT
LLM
TTS
Итого

Как это работает

Простая идея. Чтобы поговорить с ИИ голосом, нужно три ремесла подряд: услышать слова (распознавание), подумать (модель), и сказать в ответ (синтез голоса). Здесь все три работают бесплатно: распознавание идёт либо в самом браузере, либо на VPS через Whisper.cpp; ответ генерирует free-модель из OpenRouter; озвучивает ответ edge-tts — обычный CLI с русскими голосами Microsoft, без авторизации.

По шагам

  1. Браузер просит доступ к микрофону. Если выбран маршрут в браузере, Web Speech API сразу распознаёт речь по мере произнесения — текст появляется почти без задержки. Если на сервере — звук пишется в формат WebM/Opus и отправляется multipart-загрузкой на /api/agents/voice/transcribe.
  2. На VPS ffmpeg переводит запись в 16 kHz mono PCM WAV (единственный формат, который Whisper.cpp понимает), затем whisper-cli с моделью ggml-small.bin (~488 MB) расшифровывает и возвращает текст. Real-time factor на 4-ядерном CPU — около ×1.5 от длительности записи: 10 секунд речи → ~15 секунд ожидания.
  3. Распознанный текст уходит в POST /api/agents/voice/turn вместе с короткой историей. Free-модель отвечает 1–3 предложениями без markdown — потому что текст пойдёт в синтез речи.
  4. Ответ модели уходит в POST /api/agents/voice/tts с выбранным голосом. На VPS запускается edge-tts в Python venv: он обращается к публичному синтезатору Microsoft, получает MP3 и стримит его обратно. Браузер сразу проигрывает аудио.
  5. Под кнопкой видны три таймера: STT, LLM, TTS — и общий итог. Любая ошибка цепочки пишется в общий audit.jsonl с длительностью аудио, длиной текста и моделью; содержание реплик не сохраняется, только хэши и метрики.

Стек и ограничения

Стек. Whisper.cpp small (488 MB, 4 потока, beam=1) на VPS; edge-tts v7 в Python-venv; ffmpeg 6.1 для перекодирования; free-LLM из OpenRouter с primary→fallback. На фронте — MediaRecorder + Web Speech API. Все компоненты — open-source или бесплатные публичные API без авторизации.

Что важно знать