← Назад ко всем проектам

Клиентский проект2 мин чтения

Голосовой ИИ-ассистент - умные вопросы и ответы с голосовым вводом-выводом

Голосовой ИИ-ассистент - умные вопросы и ответы с голосовым вводом-выводом

Технологии

PythonFastAPIOpenAIWhisperGPT-4ElevenLabsPineconeReactAI

Услуги

  • →Архитектура ИИ-конвейера (STT, LLM и затем TTS)
  • →Интеграция OpenAI Whisper для распознавания речи
  • →Интеграция GPT-4 с RAG по кастомной базе знаний
  • →Синтез голоса ElevenLabs с потоковым воспроизведением аудио
  • →Встраиваемый React-виджет - установка «из коробки»
  • →Управление историей диалога с учётом сессии

Результаты

  • ✓Полный цикл голосового ассистента: речь, транскрипция, рассуждение и затем голосовой ответ
  • ✓Задержка менее 2 секунд от конца речи до первого голосового ответа
  • ✓База знаний в рамках предметной области с векторным поиском (RAG)
  • ✓Самодостаточный встраиваемый виджет - интеграция одним тегом скрипта
  • ✓Потоковая передача на базе WebSocket для аудиоввода-вывода с низкой задержкой

Задача

Клиенту нужен был диалоговый ассистент, встроенный в продукт, способный отвечать на вопросы в своей предметной области, понимать голосовой ввод и отвечать естественным голосом. Готовые виджеты чат-ботов работали только с текстом. Голос требовал объединения трёх отдельных ИИ-сервисов: распознавания речи, языковой модели и синтеза речи - с задержкой достаточно низкой, чтобы диалог ощущался как настоящий разговор.

Рассмотренные варианты

  1. Только браузерный Web Speech API - бесплатно, нулевая задержка для STT, но качество распознавания было ненадёжным на неанглийских акцентах и в мобильных браузерах. TTS звучал роботизированно. Отклонено по причинам качества.
  2. Полностью управляемая платформа голосовых ассистентов (Voiceflow, VAPI) - быстрое прототипирование, но привязка клиента к вендору с ограниченной настройкой слоя рассуждений. Отклонено ради сохранения контроля над промптом и контекстом LLM.
  3. OpenAI Whisper + GPT-4 + ElevenLabs, собственная оркестрация - выбрано. Лучшая в классе точность на каждом этапе; потоковая передача снижает воспринимаемую задержку; слой рассуждений полностью настраиваемый.

Решение

Аудио, захваченное в браузере, потоково передаётся на бэкенд на Python. Whisper расшифровывает аудио в реальном времени. Транскрипт отправляется в GPT-4 с системным промптом, ограниченным базой знаний предметной области клиента. Ответ возвращается потоком токен за токеном; по мере завершения предложений они передаются в ElevenLabs для синтеза. Полученные аудиофрагменты воспроизводятся в браузере последовательно - пользователь слышит первое предложение ещё до того, как модель закончила генерировать полный ответ.

Голосовой ИИ-ассистент - встроенный виджет с живой транскрипцией и голосовым ответом

Реализация

Бэкенд на FastAPI предоставляет WebSocket-эндпоинт для потоковой передачи аудио. Слой VAD (определение голосовой активности) на фронтенде решает, когда пользователь закончил говорить, прежде чем сбросить буфер в Whisper. База знаний хранится в виде векторных эмбеддингов (OpenAI Embeddings + Pinecone); релевантные фрагменты извлекаются и внедряются в контекстное окно GPT-4 на каждом шаге. История диалога поддерживается для каждой сессии, чтобы обрабатывать уточняющие вопросы. Виджет фронтенда - самодостаточный React-компонент, встраиваемый через один тег скрипта.

Результат

Сквозная задержка от конца речи до первого звукового слога: в среднем менее 1,8 секунды. Точность распознавания специализированной терминологии превысила 95%. Виджет развёрнут без изменений в основном приложении - один тег скрипта, нулевая связанность с бэкендом.

Проекты

Traffic Connect - оркестрация ИИ-контента для сайтов на WordPress

Traffic Connect - оркестрация ИИ-контента для сайтов на WordPress

До: генерацию статей с помощью ИИ нужно было вести на множестве сайтов на WordPress, и управлять ею из одного места было нельзя. После: одна админ-панель ставит задачи в очередь для каждого сайта, а сайт сам забирает свои задачи через плагин. Систему я собрал с нуля примерно за месяц.

PREZA - сайты школьных презентаций с более чем 80 000 сгенерированных PDF

PREZA - сайты школьных презентаций с более чем 80 000 сгенерированных PDF

До: сайтам школьных презентаций нужны были десятки тысяч готовых файлов, сделать которые вручную было невозможно. После: грабберы, парсеры и автоматическая многопоточная генерация дали больше 80 000 PDF, которые хранятся в холодном S3 Selectel и опубликованы на preza.kz и preza.top.

AtomPk Grabber - выгрузка списка товаров в CSV по требованию

AtomPk Grabber - выгрузка списка товаров в CSV по требованию

До: партнёру нужно было раз за разом вручную собирать список товаров с сайта в CSV. После: исполняемый файл, который запускается двойным кликом, сам обходит каталог и пишет CSV - без установки Python и без настройки.

Открыт для работы по контракту

Я доступен для работы по контракту. Если у вас есть интересная идея проекта, запишитесь на звонок через Calendly.

Записаться на 30-минутный звонок