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

Отметим: когда голосовой бот отвечает с паузой в 2 секунды — пользователь уходит. В продакшене мы сталкивались с проектами, где 300 мс задержки решали судьбу конверсии. Например, в одном колл-центре снижение TTFA с 1,2 с до 250 мс повысило удержание на 35%. А в другом проекте оптимизация с 1.2 с до

Направления 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 — получите консультацию и оценку проекта. Свяжитесь с нами — оценим ваш проект и предложим оптимальное решение.