Голосовий AI-асистент реального часу з Function Calling та двонаправленою аудіотрансляцією
Платформі для фітнесу та харчування потрібен був голосовий AI-асистент, який міг би відповідати користувачам у реальному часі природною розмовою, виконувати доменно-специфічні обчислення (коригування прийомів їжі, відстеження калорій) та озвучувати відповіді — все це з sub-second latency для справжнього розмовного досвіду.
Обговоріть Ваш Проєкт
Виклик
Створення голосового AI-асистента промислового рівня представляло унікальні інженерні виклики в реальному часі:
- Latency — Традиційні конвеєри speech-to-text → LLM → text-to-speech додавали 3-5 секунд затримки, порушуючи хід розмови
- Function Calling — Асистент мав виконувати доменну логіку (розрахунки харчування, коригування планів харчування) під час розмови, а не просто спілкуватися
- Audio Streaming — Двонаправлене аудіо повинно було безперервно передаватися без пропусків буферизації або проблем з ехо
- Контекстна обізнаність — Асистент мав підтримувати контекст розмови протягом всіх обмінів, обробляючи переривання
- Багатомовність — Користувачі розмовляли різними мовами та очікували відповідей тією ж мовою
- Ізоляція сесій — Кожна голосова сесія потребувала незалежного управління станом без cross-talk
Наше Рішення
Ми створили голосовий AI-асистент реального часу, що працює на базі Google Gemini Live API з нативними аудіо-можливостями, кастомним function calling для доменно-специфічних обчислень та фронтендом на React з аудіотрансляцією на базі WebSocket.
Архітектура
- AI Модель: Gemini з нативним аудіовходом/виходом та function calling
- Бекенд: Python/FastAPI з WebSocket endpoint для двонаправленого аудіо
- Аудіоконвеєр: PyAudio для введення/виведення з мікрофона/динаміків з потоковою передачею в реальному часі
- Фронтенд: React з Vite та Tailwind CSS для інтерфейсу управління сесіями
- Комунікація: WebSocket для low-latency JSON-повідомлень та передачі бінарного аудіо
- Мультимодальність: Опціональне захоплення камери та екрану для візуального контексту
Аудіоконвеєр реального часу
Двонаправлена потокова передача
Система підтримує безперервні аудіопотоки в обох напрямках:
- Вхід: Аудіо з мікрофона, захоплене з частотою 16kHz моно, розділене на малі фрейми та потоково передане до AI моделі в реальному часі
- Вихід: Згенероване AI мовлення, отримане з частотою 24kHz та негайно відтворене через динаміки
- Без пакетування: Аудіофрагменти відправляються одразу після захоплення — без затримок накопичення
- Обробка переривань: Користувач може природно перервати асистента в середині відповіді
Обробка аудіо
- 16-бітний PCM формат для входу та виходу
- Окремі частоти дискретизації, оптимізовані для мовлення (захоплення 16kHz, відтворення 24kHz)
- Малі розміри буфера для мінімальної latency
- Безперервна потокова передача без проміжків між ввімкненнями/вимкненнями
Інтеграція Function Calling
Як це працює
AI модель може викликати локальні Python функції в середині розмови, коли потрібні доменно-специфічні обчислення:
- Користувач озвучує запит (наприклад, "Я пропустив обід сьогодні")
- AI модель транскрибує та розуміє намір
- Модель визначає, що потрібен виклик функції, і надсилає структурований запит
- Бекенд видобуває ім'я функції, аргументи та call ID
- Локальна функція виконує доменне обчислення
- Результат надсилається назад моделі як структурована відповідь
- Модель генерує голосову відповідь природною мовою, що включає результат
Доменні функції
Система підтримує function calling, орієнтований на харчування, для таких сценаріїв як:
- Пропущені прийоми їжі — Перерозподіляє пропущені макроелементи між рештою прийомів їжі
- Незапланована їжа — Коригує майбутні прийоми їжі для компенсації неочікуваного споживання
- Заміна страв — Обмінює інгредієнти, зберігаючи макро-цілі
- Відстеження активності — Оцінює витрату калорій та коригує буфер харчування
Кожна функція використовує макро-базу даних з поживними профілями для кожного продукту та виконує динамічні обчислення з невеликою стохастичною варіацією для відповідей, що звучать природно.
Безпека виконання
- Вхід з мікрофона призупиняється під час виконання функції, щоб запобігти накладанню
- Відкладені аудіофрейми відкидаються, щоб уникнути застарілого контексту
- Повідомлення про помилки надсилаються назад коректно, якщо виконання функції не вдається
- Звичайна потокова передача відновлюється негайно після завершення функції
Архітектура бекенду
FastAPI WebSocket Server
- Єдина WebSocket endpoint для всієї клієнтської комунікації
- Управління життєвим циклом сесій (запуск, зупинка, ping/pong health checks)
- Одна активна сесія за раз з блокуванням сесії
- CORS middleware для середовищ розробки
- Health check endpoint для моніторингу
Управління сесіями
- Сесії створюються при підключенні клієнта з вибором режиму (тільки аудіо, камера або екран)
- Фонове async tasks обробляють захоплення, обробку та відтворення аудіо одночасно
- Коректне відключення з очищенням ресурсів
- Валідація API key та поширення помилок
Multimodal Input (Опціонально)
Окрім голосу, система підтримує опціональний візуальний контекст:
- Режим камери — Транслює кадри з веб-камери (1fps) для візуального контексту в розмовах
- Режим екрану — Захоплює вміст екрану для обговорення інформації на екрані
- Зображення змінюються в розмірі та стискаються перед передачею
- Візуальний контекст покращує здатність AI надавати відповідні відповіді
Фронтенд-інтерфейс
- Керування сесіями — Запуск/зупинка прослуховування з чіткими індикаторами статусу
- Відображення статусу — Стан підключення та сесії в реальному часі (idle, connecting, active, error)
- Підтримка тем — Light/dark mode зі збереженням налаштувань
- Покроковий посібник — Покрокова демонстрація для нових користувачів
- Управління WebSocket — Логіка автоматичного перепідключення
Конфігурація AI моделі
- Нативна аудіомодальність (без окремого STT/TTS конвеєра)
- Настроюваний вибір голосу з декількох попередньо встановлених голосів
- Системні інструкції, що визначають особистість асистента, стиль відповіді та обробку мови
- Визначення інструментів для всіх доступних функцій зі схемами параметрів
- Автоматичне визначення мови з відповіддю тією ж мовою
Ключові особливості
- Sub-Second Latency — Нативна аудіомодель усуває накладні витрати конвеєра STT/TTS
- Двонаправлене аудіо в реальному часі — Безперервна потокова передача з затримкою < 50ms на фрагмент
- Function Calling — Доменно-специфічні обчислення, що виконуються в середині розмови
- Природне переривання — Користувачі можуть природно перервати асистента без спеціальних команд
- Багатомовність — Автоматичне визначення мови з відповідями тією ж мовою
- Multimodal Input — Опціональний контекст камери та екрану для візуального розуміння
- Управління сесіями — Контроль життєвого циклу сесій з блокуванням та очищенням ресурсів
- Макро-обчислення — Динамічні коригування харчування з макро-профілями для кожного продукту
- Відновлення після помилок — Коректна обробка збоїв функцій та переривань мережі
- Розширюваність — Нові функції додаються шляхом визначення схеми та обробника — без змін в архітектурі
Результати
Технологічний Стек
caseStudyDetail.more Кейси
Ознайомтесь з іншими нашими технічними впровадженнями
Обробка рахунків-фактур за допомогою AI, OCR та інтеграції з QuickBooks
Середній бізнес, який щомісяця обробляє сотні рахунків-фактур від постачальників, потребував усунення ручного введення даних шляхом автоматичного вилучення даних рахунків-фактур за допомогою AI/OCR та їх прямої синхронізації з QuickBooks для ведення бухгалтерського обліку та відстеження платежів.
Вставка реклами на стороні клієнта (CSAI) з парсингом маркерів SCTE-35 та інтеграцією багатоплатформного плеєра
Платформа потокового відео потребувала впровадження вставки реклами на стороні клієнта (CSAI) для веб-, мобільних програм та програм для підключених телевізорів — що забезпечує персоналізований рекламний досвід на рівні пристрою з повною підтримкою взаємодії з рекламою (натискні оверлеї, супутні банери, кнопки пропуску), який не може забезпечити вставка на стороні сервера.
Готові Трансформувати Свій Бізнес?
Давайте обговоримо, як ми можемо застосувати подібні рішення для ваших завдань.