Интеграция Yandex SpeechKit TTS для синтеза речи

Интеграция Yandex SpeechKit TTS для синтеза речи

Направления 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

Интеграция Yandex SpeechKit TTS для синтеза речи

Клиент приходит с задачей: озвучить тысячи запросов в IVR, но TTS-движки от Western-вендоров ломают русскую интонацию, ставят ударения на соседний слог. Эта проблема знакома многим. Yandex SpeechKit TTS решает это просто: модель на 100+ млн токенов русского текста, адаптивная нормализация и 8 голосов, от нейтрального до эмоционального. Мы внедряем SpeechKit в ваш продукт под ключ: от выбора голоса до конфигурации потокового синтеза для миллисекундных задержек. Ниже — реальные грабли и рецепты из продакшена.

За счёт кеширования и выбора формата мы помогаем клиентам снизить затраты на TTS на 30–50%. Например, для одного ритейлера с 20 000 звонков в день перешли с премиум-голосов на базовые в IVR и сэкономили 40%. При трафике 50 000 запросов в день годовая экономия достигает $1.4k–1.9k.

Как интегрировать Yandex SpeechKit TTS через REST API?

Базовый синтез — два HTTP-запроса. Стек: Python 3.10+, requests или aiohttp для асинхронного воркфлоу. Пример ниже — рабочий фрагмент из нашего продакшен-пайплайна.

import requests def synthesize(text: str, voice: str = "alena", speed: float = 1.0) -> bytes: """Синтез через Yandex SpeechKit""" response = requests.post( "https://tts.api.cloud.yandex.net/speech/v1/tts:synthesize", headers={"Authorization": f"Api-Key {YANDEX_API_KEY}"}, data={ "text": text, "lang": "ru-RU", "voice": voice, "speed": str(speed), "format": "oggopus", # oggopus | lpcm | mp3 "sampleRateHertz": "48000", "folderId": YANDEX_FOLDER_ID, } ) response.raise_for_status() return response.content # Доступные голоса VOICES = { "female": ["alena", "jane", "omazh", "oksana"], "male": ["filipp", "zahar", "ermil"], "premium": ["alena:premium", "filipp:premium"] # наилучшее качество } 

Параметры, которые реально меняют восприятие:

Параметр Описание Диапазон
speed Темп речи 0.1–3.0 (1.0 — норма)
emotion Окраска голоса good, evil, neutral (не для всех голосов)
format Аудиокодек oggopus, lpcm, mp3
sampleRateHertz Частота дискретизации 8000, 16000, 48000

Типичная ошибка: использование LPCM для телефонии с частотой 8000 Гц. Если не выставить частоту, SpeechKit по умолчанию генерирует 48 kHz — на телефонии это избыточно и тратит трафик. Наш опыт: для IVR достаточно 8 kHz, для голосовых помощников — 16 kHz, для подкастов — 48 kHz.

Потоковый синтез через gRPC даёт задержку в 2–3 раза ниже, чем последовательные REST-запросы.

Почему стоит использовать премиальные голоса?

Премиум-голоса (alena:premium, filipp:premium) дают на 30–40% меньше ошибок ударения по сравнению с базовыми (по нашим замерам на датасете из 10 000 фраз). Они обучались на записях профессиональных дикторов с дополнительной разметкой эмоций. Но цена выше. Выбор зависит от бюджета и требований к естественности. Для критичных к ошибкам сценариев (юридические уведомления, навигация) берите премиум. Мы используем премиум-голоса в проектах с госзаказчиками — проходим экспертизу по разборчивости и акцентам.

Характеристика Базовые голоса Премиум-голоса
Стоимость Низкая Средняя
Качество ударений 94-96% 97-99%
Эмоциональная окраска 3 оттенка 5 оттенков
Рекомендация Бюджетные проекты Критичные к качеству

Как использовать SSML для точного управления?

С v3 API появилась полноценная поддержка SSML. Это незаменимо, когда нужно:

  • Паузы (<break time="500ms"/>)
  • Управление ударениями (<phoneme alphabet="ipa" ph="mɐˈskva">Москва</phoneme>)
  • Смена голоса внутри фразы (<voice name="filipp">Передаю абоненту</voice>)

Пример:

# REST v3 для SSML и расширенного управления headers = { "Authorization": f"Bearer {IAM_TOKEN}", "x-folder-id": FOLDER_ID } body = { "utteranceSynthesisRequest": { "text": "<speak>Привет! <break time='500ms'/> Как дела?</speak>", "outputAudioSpec": {"containerAudio": {"containerAudioType": "OGG_OPUS"}}, "loudnessNormalizationType": "LUFS" } } 

Внимание: SSML-запрос требует IAM-токен (получается через IAM), а не API-ключ. Иначе 403. Этот грабли стоил нам полдня на первом проекте.

Полный список голосов и их оптимизация
  • Alena — женский, базовый, для IVR и уведомлений.
  • Filipp — мужской, базовый, для навигации и объявлений.
  • Alena Premium — высокая естественность, для голосовых ассистентов.
  • Filipp Premium — мужской премиум, для сложных диалогов.

Рекомендации: для телефонии используйте LPCM 8kHz, для приложений — OGG 48kHz.

Процесс работ под ключ

  1. Аналитика — разбираем ваш сценарий: IVR, голосовой ассистент, подкасты. Выбираем голос и формат.
  2. Прототип — поднимаем интеграцию в вашем окружении, тестируем латентность.
  3. Продакшен — настраиваем авторизацию, мониторинг, алерты по 429 и 401 ошибкам.
  4. Оптимизация — кешируем часто синтезируемые фразы, уменьшаем количество вызовов.
  5. Передача — передаём документацию, исходники, обучаем вашу команду.

Мы гарантируем стабильную работу: мониторинг метрик p99 latency и количества ошибок 429 (превышение RPS) с автоматическим увеличением квоты через алерт.

Что входит в результат

  • Аудиофайлы (OGG, WAV, MP3) или потоковая выдача.
  • Скрипты на Python с обработкой ошибок и повторными запросами.
  • Инструкция по заведению платежного аккаунта и ограничению бюджета.
  • Сертификат о прохождении нагрузочного тестирования (по запросу).

Сроки и стоимость

Сроки: от 1 до 3 дней на базовую интеграцию, от 5 дней на комплекс с SSML и оптимизацией. Стоимость рассчитывается индивидуально под ваш трафик. Получите консультацию — оценим сценарий бесплатно. Закажите интеграцию — прототип будет готов за 1 день.

Yandex SpeechKit documentation