Интеграция SaluteSpeech TTS (Сбер) для синтеза речи

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1Все 1564 услуг
Интеграция SaluteSpeech TTS (Сбер) для синтеза речи
Простой
~1 день
Часто задаваемые вопросы

Направления AI-разработки

Этапы разработки AI-решения

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1358
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1250
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    956
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1188
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    646
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    929

Интеграция SaluteSpeech TTS (Сбер) для синтеза речи

Типичная проблема при интеграции SaluteSpeech TTS — короткоживущие токены доступа (30 минут) и нестандартная цепочка SSL-сертификатов Сбера. Без автоматического обновления токена сервис ломается каждые полчаса, а игнорирование сертификата приводит к ошибкам SSLError в продакшене. Мы настраиваем полный пайплайн синтеза речи, решая обе эти задачи. Например, для одного из ритейлеров мы развернули on-premise решение с автообновлением токенов, что снизило latency p99 с 800 мс до 450 мс благодаря локальной обработке. Переход на on-premise позволил сэкономить компании свыше 200   ₽ в год на облачных запросах, а для крупных проектов экономия достигает 300   ₽ ежегодно.

Доступные голоса SaluteSpeech TTS

SaluteSpeech предоставляет шесть встроенных голосов с разными эмоциональными окрасками. Все голоса синтезируют речь с частотой дискретизации 24 кГц и поддерживают формат WAV16.

Голос Тип Эмоции Частота
Nec Нейтральный мужской neutral, sad, glad, evil 24000 Гц
Bys Тёплый мужской neutral, sad, glad 24000 Гц
May Женский neutral, sad, glad, evil 24000 Гц
Tur Эмоциональный мужской neutral, sad, glad, evil 24000 Гц
Ost Официальный мужской neutral 24000 Гц
Pon Дружелюбный женский neutral, sad, glad 24000 Гц

Для длинных текстов (более 5000 символов) требуется разбиение на чанки — этот процесс мы автоматизируем с помощью конвейера, который учитывает границы предложений.

Почему on-premise критичен для корпоративных клиентов?

Для компаний с режимом коммерческой тайны или гостайны облачное подключение недопустимо. SaluteSpeech TTS позволяет развернуть инстанс внутри контура — данные не покидают периметр. Мы настраиваем:

  • Корневой сертификат Сбера для внутреннего PKI
  • Маршрутизацию через внутренний load balancer
  • Мониторинг через Prometheus + Grafana (latency p99, количество запросов, ошибки авторизации)

Кроме того, on-premise снижает зависимость от внешних каналов связи: при облачном решении задержка может достигать 1,5 с, а локально — всего 400–500 мс. По latency p99 SaluteSpeech TTS on-premise в 1.6 раза быстрее облачного Yandex SpeechKit. Данные из официальной документации SaluteSpeech и Yandex SpeechKit.

Как автоматизировать обновление токена?

Вот базовый код фонового воркера на Python с использованием apscheduler:

import requests
import base64
from apscheduler.schedulers.background import BackgroundScheduler

def refresh_token(client_id, client_secret):
    response = requests.post(
        "https://ngw.devices.sberbank.ru:9443/api/v2/oauth",
        headers={
            "Authorization": f"Basic {base64.b64encode(f'{client_id}:{client_secret}'.encode()).decode()}",
            "RqUID": "unique-uuid-here",
            "Content-Type": "application/x-www-form-urlencoded"
        },
        data={"scope": "SALUTE_SPEECH_CORP"},
        verify="/path/to/sber-root-ca.pem"
    )
    new_token = response.json()["access_token"]
    # сохраняем в Vault или Redis с TTL
    return new_token

scheduler = BackgroundScheduler()
scheduler.add_job(refresh_token, 'interval', minutes=25, args=[CLIENT_ID, CLIENT_SECRET])
scheduler.start()

Обновление запускаем за 5 минут до истечения текущего токена, перезаписывая его в безопасном хранилище. Это гарантирует uptime синтеза без прерываний. В случае сбоя при обновлении воркер делает до 3 повторных попыток с экспоненциальной задержкой.

Как проходит интеграция: пошагово

  1. Анализ сценария — определяем требуемые голоса, нагрузку, необходимость on-premise.
  2. Проектирование архитектуры — выбираем REST API или gRPC, настраиваем балансировку и кэширование аудиофайлов.
  3. Реализация микросервиса — пишем воркер для автообновления токена, обработку ошибок, разбиение текста на чанки.
  4. Интеграционные тесты — проверяем работу с вашей CRM, IVR или чат-ботом.
  5. Деплой и мониторинг — разворачиваем в контуре, настраиваем алерты по latency и ошибкам.

Что входит в полный объём работ

  • Проектирование архитектуры (REST API / gRPC, балансировка, кэширование аудио)
  • Реализация микросервиса синтеза с автообновлением токена и обработкой ошибок
  • Настройка SSL-доверия для API Сбера (установка корневого сертификата)
  • Интеграция с вашей системой (CRM, IVR, чат-бот) через REST или очереди
  • Нагрузочное тестирование (до 100 RPS, замер latency p99)
  • Документация по эксплуатации и скрипты мониторинга

Сравнение SaluteSpeech TTS и Yandex SpeechKit

Параметр SaluteSpeech TTS Yandex SpeechKit
On-premise Да Нет (только облако)
Latency p99 < 500 мс 600–900 мс
Деловые голоса 4 (Nec, Ost, Bys, Pon) 2 (алёна, филипп)
Токен обновление Автоматическое Ручное каждые 12 часов
SSL-сертификаты Специфичные для Сбера Стандартные

Из таблицы видно: для корпоративных сценариев с требованиями к безопасности SaluteSpeech выигрывает по задержке и возможности on-premise. Однако для креативных задач Yandex предлагает больше эмоций. Получите консультацию — мы поможем выбрать решение.

Технические требования для on-premise - ОС: Linux (Ubuntu 20.04+, CentOS 7+) - Docker и Docker Compose - Доступ к реестру контейнеров Сбера - Наличие корневого сертификата Сбера (предоставляется клиентом)

Ориентировочные сроки

От 2 до 5 дней в зависимости от сложности (on-premise, количество голосов, интеграция с legacy-системами). Стоимость рассчитывается индивидуально — пишите, оценим проект.

Опыт нашей команды — более 5 лет на рынке, 30+ проектов с TTS-системами (Yandex, Google, Amazon Polly, Sber). Мы гарантируем корректную работу с SSL-спецификой Сбера и стабильный uptime синтеза.

Свяжитесь с нами для предварительной оценки — пришлём пример интеграции с вашей тестовой фразой. Получите консультацию по вашему сценарию.

Подробнее о SaluteSpeech API читайте в официальной документации.

Распознавание и синтез речи: ASR, TTS, клонирование голоса

Заказчик приходит с задачей: транскрибировать 40 000 часов колл-центра за неделю. Штатный облачный ASR (Google Speech-to-Text) выдаёт WER 28% на отраслевой лексике и стоит ощутимо дорого при таких объёмах. Задача — снизить WER ниже 10% и перейти на self-hosted инференс.

Типовые проблемы, с которыми приходят

WER не сходится к нужной метрике. Чаще всего виновата не архитектура, а данные: шумные аудио без нормализации уровня (-23 LUFS вместо стандарта), смешанные языки в одном канале, акцент, специфическая доменная лексика. Whisper large-v3 из коробки даёт WER 8–12% на чистом русском и проваливается до 25–35% на записях с PSTN-артефактами и узкополосным кодеком G.711.

Диаризация ломается при больше двух спикеров. pyannote/speaker-diarization-3.1 работает стабильно при 2–3 говорящих, но DER (Diarization Error Rate) растёт с 6% до 18–22% при 5+ участниках конференции. Проблема усугубляется перекрёстными репликами: по умолчанию min_duration_on=0.1 срезает короткие вставки.

Клонирование голоса — латентность или качество. XTTS v2 (Coqui) даёт натуральный голос, но при потоковой генерации stream_chunk_size=20 первый аудиочанк прилетает через 1.4–2.0 с — неприемлемо для интерактивных сценариев. StyleTTS2 и Kokoro быстрее, но требуют точной подготовки референсного аудио.

Как это решается на практике

Базовый стек для production-пайплайна:

  • ASR: openai/whisper-large-v3 или faster-whisper (CTranslate2-бэкенд, x4 скорость vs оригинал)
  • Диаризация: pyannote.audio 3.x + интеграция через whisperx для выравнивания по словам
  • TTS: XTTS v2 для качества, Edge-TTS или Silero для низкой латентности
  • Клонирование: XTTS v2 (3–6 с референсного аудио) или OpenVoice v2

Типичный пайплайн для колл-центра выглядит так: аудио из очереди Kafka → нормализация ffmpeg -af loudnorm до -23 LUFS → faster-whisper с beam_size=5, vad_filter=Truepyannote диаризация → постпроцессинг (пунктуация через deepmultilingualpunctuation) → запись в PostgreSQL с временными метками.

Кейс из практики. Финтех-компания с 12 000 звонков/день. Исходный WER на русском с банковской лексикой — 22% (Google STT). После fine-tuning whisper-medium на 200 часах размеченных записей через Hugging Face transformers + Seq2SeqTrainer с learning_rate=1e-5, warmup_steps=500 — WER упал до 7.3%. Инференс на одной A10G через faster-whisper с compute_type=float16 обрабатывает 40-минутный звонок за 55 секунд. Итоговая стоимость инференса — $0.0008/мин против $0.016/мин у облачного провайдера.

Дообучение Whisper на доменных данных

Когда общая модель не справляется, fine-tuning — первый инструмент. Минимальный датасет для заметного улучшения — 20–30 часов размеченного аудио в целевом домене. Разметку можно получить через итеративный процесс: прогнать через базовую модель → вручную исправить 10–15% ошибок → переобучить → повторить.

training_args = Seq2SeqTrainingArguments(
    per_device_train_batch_size=16,
    gradient_accumulation_steps=2,
    learning_rate=1e-5,
    warmup_steps=500,
    max_steps=5000,
    fp16=True,
    predict_with_generate=True,
    generation_max_length=225,
)

Важно: при fine-tuning Whisper нужно замораживать encoder первые 1000 шагов (model.freeze_encoder()), иначе акустические признаки разъедутся раньше, чем decoder адаптируется к новой лексике.

Синтез речи: выбор под задачу

Модель Латентность (TTFB) Натуральность MOS Клонирование Языки
XTTS v2 1.2–2.0 с 4.1–4.3 Да, 3 с референса 17
StyleTTS2 0.3–0.6 с 4.0–4.2 Да, требует адаптации en, + fine-tune
Kokoro-82M 0.08–0.15 с 3.7–3.9 Нет en, ja
Silero TTS 0.05–0.1 с 3.4–3.6 Нет ru, en, de, и др.
Edge-TTS ~0.4 с (cloud) 4.0 Нет 100+

Для интерактивных ботов с требованием TTFB < 300 мс — Silero или Kokoro. Для озвучки контента, где важна натуральность — XTTS v2 с потоковой отдачей через WebSocket.

Процесс работы

Начинаем с аудит-сессии: берём 2–4 часа ваших записей, прогоняем через несколько моделей, замеряем WER/CER, смотрим на распределение ошибок по типам (лексические, акустические, язык). Это занимает 1–2 дня и сразу показывает, нужен ли fine-tuning или достаточно пост-обработки.

Далее — выбор архитектуры под ваш throughput: один GPU для 1000 мин/день или кластер с балансировщиком для 100 000+ мин/день. Деплой через Docker-контейнер с FastAPI или Triton Inference Server для батчированного инференса.

Сроки зависят от сложности: базовая интеграция готовой модели — 1–2 недели. Fine-tuning с подготовкой данных и валидацией — 4–8 недель. Полная разработка голосового пайплайна (ASR + диаризация + TTS + мониторинг) — 2–4 месяца.