AI-инжиниринг
Text-to-Speech: OpenAI TTS, ElevenLabs, voice cloning - генерация речи
Цели урока
- Понять ландшафт TTS-провайдеров и критерии выбора (latency, качество, стоимость)
- Научиться генерировать речь через OpenAI TTS API с выбором голоса и формата
- Разобраться в SSML и текстовых альтернативах для управления просодией
- Реализовать streaming pipeline: LLM stream -> sentence buffer -> TTS -> client audio
- Оптимизировать стоимость TTS через кеширование, opt-in и tiered providers
ElevenLabs за 18 месяцев достиг 1 миллиарда долларов valuation на одной идее: TTS который звучит как человек. OpenAI tts-1 стоит 15 долларов за миллион символов. ElevenLabs - от 22 долларов. Разрыв - качество и voice cloning. Cartesia Sonic - новый игрок с latency менее 100ms. И Kokoro - open-source модель, которая работает на CPU без API. Latency streaming менее 300ms - это граница между 'говорит' и 'тормозит'. Всё это работает в production прямо сейчас.
- ElevenLabs озвучивает аудиокниги и подкасты - голос, неотличимый от реального диктора, за долю стоимости студийной записи
- ChatGPT Voice Mode обслуживает миллионы голосовых диалогов - end-to-end voice pipeline с latency менее 1 секунды
- Google Maps и навигаторы используют TTS для голосовых подсказок - миллиарды запросов в день через Amazon Polly и Google Neural TTS
- Duolingo генерирует произношение для 40+ языков через TTS - каждый пример и диалог озвучен без студийной записи
26 лет от робота до человека
**1996**: Алан Блэк выпускает Festival - первый open-source TTS. Звучит как робот. Используется в автоответчиках и screen readers. **2016**: DeepMind публикует WaveNet - нейронная сеть, которая генерирует звук семпл за семплом. Качество революционное. Скорость - катастрофическая: одна секунда аудио генерируется 90 секунд. **2019**: Tacotron 2 + HiFi-GAN. Mel-спектрограмма + нейронный вокодер. Первый раз TTS стал пригодным для real-time использования. **2022**: ElevenLabs. Команда из Лондона берёт transformer-архитектуру, обучает на тысячах часов речи, добавляет voice cloning. 1 миллиард долларов valuation за 18 месяцев. **2024**: OpenAI GPT-4o voice mode - LLM генерирует аудио-токены напрямую, без отдельного TTS. Kokoro - open-source модель уровня ElevenLabs, работает на CPU. Граница между синтезом и записью стёрта.
Предварительные знания
TTS-ландшафт: от робота до человека
1996 год. Университет Эдинбурга. Алан Блэк выпускает Festival - первый open-source TTS. Звучит как робот с насморком. 2016 год. DeepMind публикует WaveNet - нейронная сеть, которая генерирует звук семпл за семплом. Качество взрывное, но слишком медленно для реального времени. 2022 год. ElevenLabs. Стартап, который за 18 месяцев достигает оценки 1 миллиард долларов на одной идее: TTS, неотличимый от живого человека. Расстояние от Festival до ElevenLabs - 26 лет и несколько порядков качества.
Выбор TTS-провайдера определяется тремя осями: натуральность голоса, latency (время до первого байта аудио) и стоимость. OpenAI tts-1 стоит 15 долларов за миллион символов. ElevenLabs - от 22 долларов. Разрыв - качество и voice cloning. Cartesia Sonic - новый игрок с latency менее 100ms, который переосмысляет что значит 'real-time'. Latency streaming менее 300ms - это граница между 'говорит' и 'тормозит'. На 400ms пользователь уже чувствует паузу.
| Провайдер | Качество | Latency (TTFB) | Цена за 1M символов | Streaming | Voice cloning |
|---|---|---|---|---|---|
| OpenAI TTS | Высокое | ~500ms | USD 15 (tts-1) / USD 30 (tts-1-hd) | Да | Нет |
| ElevenLabs | Очень высокое | ~300ms | 22-99 (по плану) | Да | Да |
| Cartesia Sonic | Высокое | <100ms | 0.065/1K chars | Да | Нет |
| Google Cloud TTS | Хорошее | ~400ms | USD 4 (standard) / USD 16 (neural) | Да | Нет |
| Amazon Polly | Хорошее | ~300ms | USD 4 (standard) / USD 16 (neural) | Да | Нет |
| Kokoro (open-source) | Высокое | Зависит от GPU | Self-hosted, бесплатно | Да | Нет |
**TTS != voice mode.** Классический TTS - это отдельный pipeline: текст -> аудио. Voice mode в GPT-4o - end-to-end система, где LLM генерирует аудио-токены напрямую, минуя текстовый этап. Для backend-интеграции в 2026 году используется классический TTS - предсказуемый, кешируемый, управляемый.
Для голосового ассистента с минимальной задержкой и высоким качеством, какой параметр TTS-провайдера наиболее критичен?
OpenAI TTS API: генерация речи за один вызов
OpenAI TTS API - минимальный по сложности интеграции TTS-провайдер. Один POST-запрос, три обязательных параметра (model, input, voice), и в ответе - аудиофайл. Никаких streaming сессий, никакого WebSocket, никакого SDK-инициализации на 200 строк. Две модели: `tts-1` (USD 15 за 1M chars, быстрая, для real-time) и `tts-1-hd` (USD 30 за 1M chars, высокое качество, для pre-rendered контента). tts-1-hd иногда звучит менее естественно при быстрой речи - парадокс, но это так.
| Модель | Качество | Latency | Цена / 1M символов | Когда использовать |
|---|---|---|---|---|
| tts-1 | Хорошее (иногда артефакты) | ~300ms TTFB | 15 | Real-time ответы, чаты, ассистенты |
| tts-1-hd | Высокое | ~800ms TTFB | 30 | Подкасты, аудиокниги, pre-rendered контент |
**Лимит 4096 символов.** OpenAI TTS принимает до 4096 символов за запрос. Для длинных текстов нужно разбивать на части по предложениям, генерировать каждый фрагмент отдельно и склеивать аудио. При streaming-подходе фрагменты можно отправлять клиенту последовательно.
Какой response_format оптимален для streaming TTS в web-приложении?
Выбор голоса, SSML и управление произношением
TTS - это не просто озвучка текста. Это управление просодией. Prosody - скорость, ударение, паузы, тон, эмоциональная окраска. Одна и та же фраза 'всё в порядке' звучит как успокоение, ирония или тревога в зависимости от того, как расставлены паузы и где интонация идёт вверх. SSML (Speech Synthesis Markup Language) - это XML-диалект, который даёт точный контроль над каждым параметром. Поддерживается Google Cloud TTS, Amazon Polly, Azure. OpenAI TTS - нет. ElevenLabs - нет. Зато у них есть другое.
ElevenLabs даёт то, чего нет у OpenAI: voice cloning (30 секунд аудио - и голос скопирован), stability/similarity параметры, emotional tone через text prompting. Модель `eleven_multilingual_v2` работает на 29 языках с одинаковым акцентом. Это не про цену - это про другое качество продукта.
**A/B-тестирование голосов.** Предпочтения пользователей в голосе субъективны. Рекомендация - сгенерировать одинаковый текст всеми доступными голосами, дать послушать 5-10 людям из целевой аудитории и выбрать по голосованию. Не полагаться на мнение разработчика.
TTS = просто озвучка текста. Отправил строку - получил аудио.
TTS - это управление просодией: tempo, emphasis, speaking rate, emotional tone, паузы между фразами. Одна и та же фраза может быть сгенерирована 10 способами с разным смыслом.
Профессиональные дикторы тратят часы на разметку скрипта перед записью. SSML делает то же самое для синтеза. OpenAI TTS 'угадывает' просодию из пунктуации - но если пунктуации нет, результат непредсказуем. Правильная подготовка текста перед TTS - это отдельная инженерная задача, которая влияет на восприятие не меньше, чем выбор провайдера.
Как добавить паузу между предложениями в OpenAI TTS, который не поддерживает SSML?
Streaming TTS: от текста до воспроизведения в браузере
Полный pipeline голосового ассистента: LLM генерирует текст по чанкам - каждый чанк буферизируется в предложение - предложение отправляется в TTS - аудио стримится клиенту - браузер воспроизводит по мере получения. Ключевая задача - минимизировать суммарную latency. ElevenLabs streaming даёт первый аудио-чанк через 150-200ms после отправки текста. Это быстрее, чем пользователь замечает паузу.
**Не отправлять каждый токен LLM в TTS отдельно.** TTS нужен контекст предложения для правильной интонации. Слово 'нет' в конце вопроса и в начале утверждения звучит по-разному. Собирать минимум одно полное предложение перед отправкой в TTS.
Почему в pipeline LLM->TTS нельзя отправлять каждый токен LLM в TTS отдельно?
Стоимость TTS: кеширование, batching, выбор провайдера
TTS - одна из самых дорогих операций в AI-стеке. LLM-запрос с ответом в 500 токенов (около 400 символов) стоит ~0.001 доллара на gpt-4o-mini. Озвучивание того же ответа через OpenAI TTS - 0.006 доллара. В 6 раз дороже, чем сам ответ. На 5000 запросов в день: LLM - USD 150 в месяц, TTS - USD 900 в месяц. TTS становится основной статьёй расходов быстрее, чем ожидается.
| Стратегия | Экономия | Сложность |
|---|---|---|
| Кеширование повторяющихся фраз | 20-40% (зависит от hit rate) | Низкая |
| Убрать markdown/URL перед TTS | 10-30% (меньше символов) | Низкая |
| Opt-in TTS (кнопка "Прослушать") | 70-90% (большинство не нажмёт) | Низкая |
| Tiered providers (дешёвый для длинных) | 30-50% | Средняя |
| Self-hosted Kokoro на GPU | 80-95% (только GPU cost) | Высокая |
| Pre-render static content | 100% для статики | Средняя |
**Самая эффективная оптимизация - opt-in TTS.** Вместо автоматического озвучивания каждого ответа - кнопка 'Прослушать'. По статистике, только 10-20% пользователей нажмут. Экономия 80-90% при нулевой потере UX для остальных.
Приложение тратит USD 1000 в месяц на TTS. Средний ответ - 500 символов, 5000 запросов/день. Какая оптимизация даст максимальный эффект?
TTS = просто озвучка текста. API принимает строку - возвращает аудио. Инженерная задача минимальна.
TTS - это управление просодией: tempo, emphasis, speaking rate, emotional tone, паузы. Подготовка текста перед TTS, выбор голоса, управление latency через streaming - это отдельная инженерная область.
Плохо подготовленный текст на входе TTS звучит механически даже с лучшей моделью. Аббревиатуры читаются побуквенно (А-П-И), markdown теги озвучиваются, URL превращаются в абракадабру. Форматирование текста для TTS - это первый шаг, который большинство пропускает.
Итоги
- TTS-провайдеры: OpenAI (USD 15 за 1M chars, простой API), ElevenLabs (лучшее качество, voice cloning), Cartesia (<100ms latency), Kokoro (open-source, self-hosted)
- OpenAI TTS: model + voice + input, streaming через Readable.fromWeb(), лимит 4096 символов
- SSML поддерживается Google/Amazon/Azure, но не OpenAI. Альтернатива - пунктуация как интонационные подсказки
- Streaming pipeline: LLM tokens -> sentence buffer -> TTS per sentence -> chunked audio -> browser playback
- TTS стоит в 3-6 раз дороже самого LLM-ответа при одинаковом объёме - главная статья расходов в voice apps
- Главная оптимизация - opt-in TTS (кнопка 'Прослушать'): 80-90% экономии при нулевой потере UX
Вопросы для размышления
- Cartesia Sonic даёт latency менее 100ms, но стоит 0.065 за 1K символов - дороже OpenAI. При каком сценарии это оправдано?
- Kokoro - open-source TTS на уровне ElevenLabs, работает без API. Какие проблемы возникают при self-hosting TTS в production?
- В pipeline LLM -> TTS: если LLM генерирует ответ за 2 секунды, а TTS добавляет 300ms на предложение - где узкое место и как его сместить?
Что дальше
TTS завершает voice pipeline: STT -> LLM -> TTS. Следующий шаг - multimodal AI, где голос становится одним из нескольких входных каналов наряду с изображениями, видео и документами.
- Multimodal AI — TTS - audio output. Multimodal расширяет входы: vision, audio input, документы
- Real-time AI — STT + LLM + TTS streaming = real-time voice assistant с задержкой менее 1 сек
- Cost Management — TTS - значимая статья расходов. Детальные стратегии оптимизации в уроке о cost management
Связанные уроки
- aie-23-speech-to-text — TTS - выходная половина голосового pipeline
- aie-43-realtime-ai — Streaming TTS делает голосовых ассистентов быстрее секунды
- aie-29-cost-management — TTS - доминирующая статья расходов для оптимизации
- aie-08-streaming — Переиспользует chunked streaming для доставки аудио
- net-36-websocket — Низколатентный дуплекс для живого аудио
- dsp-01