Потоковий синтез мовлення (Streaming TTS): реалізація з нуля

Зауважте: коли голосовий бот відповідає з паузою в 2 секунди — користувач іде. У продакшені ми стикалися з проєктами, де 300 мс затримки вирішували долю конверсії. Наприклад, в одному кол-центрі зниження TTFA з 1,2 с до 250 мс підвищило утримання на 35%. А в іншому проєкті оптимізація з 1,2 с до 200

Напрямки 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

Зауважте: коли голосовий бот відповідає з паузою в 2 секунди — користувач іде. У продакшені ми стикалися з проєктами, де 300 мс затримки вирішували долю конверсії. Наприклад, в одному кол-центрі зниження TTFA з 1,2 с до 250 мс підвищило утримання на 35%. А в іншому проєкті оптимізація з 1,2 с до 200 мс заощадила компанії $45,000 на рік на операційних витратах. Потоковий синтез мовлення (Streaming TTS) — це не оптимізація, а базова необхідність для real-time голосових інтерфейсів.

Ми реалізуємо Streaming TTS з time-to-first-audio (TTFA) від 100 мс. Нижче — технічна сторона питання: як працюють чанкінг, буферизація та паралельний синтез. Наш досвід — 5+ років у мовленнєвих технологіях та понад 30 проєктів із TTS.

Як працює потоковий синтез мовлення?

Текст ріжеться на логічні чанки — зазвичай по реченнях або фразах 10–20 слів. Перший чанк одразу йде в синтез, решта готуються паралельно. Клієнт отримує аудіопотік через WebSocket або HTTP chunked encoding і починає відтворення негайно.

Реалізація з OpenAI TTS Streaming:

from openai import AsyncOpenAI import asyncio client = AsyncOpenAI() async def stream_tts(text: str): async with client.audio.speech.with_streaming_response.create( model="tts-1", voice="alloy", input=text, response_format="pcm", ) as response: async for chunk in response.iter_bytes(chunk_size=4096): yield chunk 

WebSocket сервер для real-time TTS

Для self-hosted рішень (наприклад, Coqui XTTS) використовуємо WebSocket:

from fastapi import FastAPI, WebSocket from TTS.api import TTS import numpy as np import asyncio app = FastAPI() tts = TTS("tts_models/multilingual/multi-dataset/xtts_v2").to("cuda") def split_into_sentences(text: str) -> list[str]: import re sentences = re.split(r'(?<=[.!?])\s+', text) return [s.strip() for s in sentences if s.strip()] @app.websocket("/tts-stream") async def tts_websocket(websocket: WebSocket): await websocket.accept() try: while True: text = await websocket.receive_text() sentences = split_into_sentences(text) for sentence in sentences: wav = await asyncio.get_event_loop().run_in_executor( None, lambda s=sentence: tts.tts(text=s, language="ru", speaker_wav="default.wav") ) audio_bytes = (np.array(wav) * 32767).astype(np.int16).tobytes() await websocket.send_bytes(audio_bytes) await websocket.send_json({"type": "done"}) except Exception: await websocket.close() 

Чому важлива мінімальна затримка?

Дослідження Microsoft Research показують: затримка >1 сек знижує утримання користувачів на 20%. Для голосових асистентів критичний поріг 400 мс — після цього діалог відчувається як неприродний. У наших проєктах ми домагаємось p95 TTFA <300 мс навіть на self-hosted рішеннях.

Порівняння TTFA популярних двигунів

TTS TTFA
ElevenLabs Turbo ~100 мс
OpenAI TTS-1 streaming ~200 мс
Azure Neural TTS streaming ~150 мс
Coqui XTTS (self-hosted, GPU) ~300–500 мс
Yandex SpeechKit ~200–300 мс

ElevenLabs Turbo вдвічі швидший за TTFA, ніж Coqui XTTS на GPU.

Етапи оптимізації TTFA

Етап Дія Скорочення TTFA
1 Розбивка на чанки 10–20%
2 Кешування шаблонів 5–15%
3 Паралельний синтез чанків 20–30%
4 Потокове відтворення 10–20%

Як ми це робимо

Використовуємо оптимальний підхід під задачу:

  1. Хмарні API: OpenAI, ElevenLabs, Azure — для швидкої інтеграції (2–3 дні).
  2. Self-hosted: Coqui XTTS, Silero на GPU — для повного контролю та офлайн.
  3. Гібрид: кешуємо шаблонні фрази (привітання, очікування), а динаміку стрімимо.
  4. Моніторинг: логуємо TTFA, latency p99, FLOPS на інференсі — для проактивного alerting.
Детальніше про моніторингМи використовуємо Prometheus + Grafana для збору метрик TTFA та p99. При перевищенні порогу (наприклад, 300 мс) спрацьовує алерт, і ми автоматично перемикаємось на резервний TTS-двигун. Це гарантує стабільність під навантаженням до 1000 одночасних сесій.

Вибір TTS двигуна

Вибір залежить від вимог до затримки, якості та інфраструктури. Якщо потрібна мінімальна TTFA — ElevenLabs Turbo. Для кастомних голосів та офлайн — Coqui XTTS. Хмарні API (OpenAI, Azure) підходять для типових сценаріїв. Ми допомагаємо підібрати стек та оптимізувати його під ваш use case.

Вимірювання TTFA

TTFA (Time To First Audio) — час від відправки тексту до появи першого аудіопакета на клієнті. Вимірюється як різниця позначок часу. Ми використовуємо вбудовані метрики двигуна та інструменти моніторингу (Prometheus). Для одних проєктів важлива TTFA, для інших — загальна затримка діалогу.

Хочете впровадити streaming TTS? Зв'яжіться з нами для попередньої оцінки вашого проєкту.

Що входить у реалізацію

  • Архітектура сервер-клієнт (WebSocket або HTTP Streaming)
  • Інтеграція з обраним TTS (OpenAI, ElevenLabs, self-hosted)
  • Оптимізація чанків та буферизації
  • Тестування на вашому сценарії (N+ годин розмов)
  • Документація з інтеграції та моніторингу
  • Гарантія стабільності під навантаженням (до 1000 одночасних сесій)
  • Моніторинг та алертинг (TTFA, p99, GPU utilization)

Орієнтовні терміни

  • Інтеграція хмарного TTS: від 2 до 5 днів
  • Self-hosted сервер з GPU: від 1 до 2 тижнів
  • Повне впровадження з моніторингом та оптимізацією: від 3 тижнів

Вартість розраховується індивідуально — залежить від обсягу та обраного стеку.

Наша команда має 5+ років досвіду в мовленнєвих технологіях та реалізувала понад 30 проєктів із TTS. Замовте реалізацію streaming TTS — отримайте консультацію та оцінку проєкту. Зв'яжіться з нами — оцінимо ваш проєкт і запропонуємо оптимальне рішення.