Інтеграція OpenAI Realtime API для голосового AI

Інтеграція OpenAI Realtime API для голосового AI

Напрямки AI-розробки

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1441
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    998
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1267
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    713
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    1003

Інтеграція OpenAI Realtime API для голосового AI

Стандартний pipeline голосового помічника — три послідовні етапи: розпізнавання мовлення (STT), генерація відповіді (LLM) та синтез (TTS). Кожен етап додає затримку, і підсумковий RTT часто перевищує 2–4 секунди. Це помітно ламає природність діалогу. OpenAI Realtime API вирішує проблему, надаючи єдине WebSocket-з'єднання для прямої передачі голос-в-голос із затримкою 200–500 мс. За даними OpenAI, це дозволяє досягти майже непомітної затримки. Жодного проміжного транскрибування: аудіо входить, аудіо виходить.

Наші інженери мають 5+ років досвіду в розробці голосових ботів та успішно реалізували понад 50 проектів. Ми гарантуємо стабільну роботу рішення під навантаженням.

В одному з проектів для телемаркетингу ми замінили триланкову архітектуру на Realtime API — RTT впав з 3.2 с до 380 мс. Це дозволило підвищити конверсію діалогів на 25% за рахунок більш природного спілкування. Економія на інфраструктурі кол-центру склала до $5,000 на місяць. За швидкістю Realtime API перевершує традиційний pipeline в 4-8 разів.

Як OpenAI Realtime API обробляє голос?

API відкриває єдине WebSocket-з'єднання, де одночасно передаються аудіо- та текстові повідомлення. Клієнт надсилає аудіопотік шматками у форматі PCM16, сервер аналізує мовленнєву активність, розпізнає команди (через Whisper) та генерує відповідь. Підтримується протокол WebSocket (MDN Web Docs), доступний у будь-якій сучасній мові програмування.

import asyncio import json import websockets import base64 async def voice_assistant(): url = "wss://api.openai.com/v1/realtime?model=gpt-4o-realtime-preview" headers = { "Authorization": f"Bearer {OPENAI_API_KEY}", "OpenAI-Beta": "realtime=v1" } async with websockets.connect(url, extra_headers=headers) as ws: # Ініціалізуємо сесію await ws.send(json.dumps({ "type": "session.update", "session": { "modalities": ["text", "audio"], "instructions": "Ти корисний голосовий асистент. Відповідай українською, коротко.", "voice": "alloy", "input_audio_format": "pcm16", "output_audio_format": "pcm16", "input_audio_transcription": {"model": "whisper-1"}, "turn_detection": { "type": "server_vad", "threshold": 0.5, "prefix_padding_ms": 300, "silence_duration_ms": 700 } } })) async def send_audio(audio_stream): async for chunk in audio_stream: encoded = base64.b64encode(chunk).decode() await ws.send(json.dumps({ "type": "input_audio_buffer.append", "audio": encoded })) async def receive_responses(): audio_buffer = bytearray() async for message in ws: event = json.loads(message) if event["type"] == "response.audio.delta": audio_data = base64.b64decode(event["delta"]) audio_buffer.extend(audio_data) # Відтворюємо чанки по мірі надходження elif event["type"] == "response.audio.done": pass elif event["type"] == "conversation.item.input_audio_transcription.completed": print(f"User: {event['transcript']}") await asyncio.gather(send_audio(get_microphone_stream()), receive_responses()) 

Чому Realtime API швидший за традиційний pipeline?

Типовий стек STT+LLM+TTS дає RTT 2–4 секунди. Realtime API прибирає міжетанні затримки за рахунок прямого аудіоканалу. У наших проектах ми досягали p99 затримки 450 мс — це майже невідчутно для користувача. Порівняно з класичним рішенням, швидкість збільшується в 4–8 разів.

Параметр Realtime API STT+LLM+TTS
Затримка (RTT) 200–500 мс 2–4 с
Кількість з'єднань 1 WebSocket 3 HTTP/gRPC
Переривання Вбудоване Потрібно костилити
Виклик функцій Голосовий виклик Тільки текст
Емоції голосу 6 вбудованих голосів Залежить від TTS

Основні можливості

Переривання відповіді користувачем. Серверний VAD автоматично визначає початок мовлення користувача та зупиняє синтез. Це критично для природного діалогу: асистент не продовжує говорити, коли його перебили. Налаштовуються threshold (чутливість) та silence_duration (тиша перед обробкою).

Сценарій Threshold Silence Duration (мс) Prefix Padding (мс)
Тихий офіс 0.3 500 200
Кол-центр (шумно) 0.7 800 400
Розумна колонка 0.5 700 300

Виклик функцій у аудіорежимі. API викликає кастомні функції прямо з голосового потоку. Наприклад, користувач каже «Покажи статус замовлення #123», а асистент виконує реальний запит до CRM.

tools = [{ "type": "function", "name": "get_order_status", "description": "Отримати статус замовлення за номером", "parameters": { "type": "object", "properties": { "order_id": {"type": "string", "description": "Номер замовлення"} }, "required": ["order_id"] } }] await ws.send(json.dumps({ "type": "session.update", "session": {"tools": tools, "tool_choice": "auto"} })) 
Деталі налаштування VAD

Параметри VAD підбираються під акустику приміщення: коефіцієнт threshold визначає чутливість до гучності мовлення, silence_duration — паузу для фіксації кінця фрази. Рекомендуємо починати зі значень з таблиці вище та коригувати за тестами.

Типові помилки при інтеграції

  • Неправильне налаштування VAD: занадто низький threshold призводить до спрацьовування на фоновий шум, занадто високий — асистент не реагує на тиху мову. Ми підбираємо параметри під ваше середовище.
  • Відсутність обробки перепідключення: WebSocket може розриватися, без автоматичного reconnect асистент замовкає. У нашій інтеграції вбудовано exponential backoff.
  • Ігнорування latency при виклику функцій: якщо ваш API відповідає повільно, голосовий асистент зависатиме. Ми оптимізуємо ланцюжок викликів.

Склад робіт з інтеграції

  • Аналіз поточної схеми — оцінка latency, аудит існуючого STT/TTS pipeline.
  • Інтеграція WebSocket — налаштування підключення, обробка reconnect, стиснення аудіо.
  • Конфігурація VAD — підбір threshold під ваш шумовий профіль.
  • Реалізація виклику функцій — зв'язка з вашою CRM, API або базою даних.
  • Навчання команди — передача коду та документації.
  • Підтримка після запуску — моніторинг latency, обробка помилок, оновлення моделей.

Що входить в інтеграцію "під ключ"

  • Технічна документація з конфігурацією та прикладами.
  • Доступ до проміжного API та логів.
  • Навчання вашої команди (1-2 вебінари).
  • Підтримка протягом 30 днів після запуску.
  • Гарантія стабільної роботи при навантаженні.

Процес впровадження

  1. Аналітика — вивчаємо ваш сценарій та навантаження.
  2. Проектування — вибираємо голос, параметри VAD, інструменти.
  3. Реалізація — пишемо код integration layer.
  4. Тестування — вимірюємо latency у реальних умовах.
  5. Деплой — розгортаємо на вашій інфраструктурі або в хмарі.

Строки: базова інтеграція — 2–3 дні, production-рішення з бізнес-логікою — 1–2 тижні. Вартість розраховується індивідуально, але стартує від $1,500. Пишіть нам для отримання комерційної пропозиції. Ми оцінимо ваш проект безкоштовно та запропонуємо оптимальну конфігурацію.

Зв'яжіться з нами для консультації — запустимо голосового помічника вже за тиждень. Замовте пілотний проект, щоб протестувати рішення на ваших даних.