Інтеграція 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 000 ₽ на рік на хмарних запитах, а для великих проєктів економія сягає 300 000 ₽ щорічно.

Доступні голоси 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 читайте в офіційній документації.

Розпізнавання та синтез мовлення: перша лінія проблеми

Ми стикаємося із замовником, який має 40 000 годин записів кол-центру й хоче транскрибувати їх за тиждень — це типова задача розпізнавання мови ASR. Штатний хмарний 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 обрізає короткі вставки. Рішення — збільшити min_duration_on до 0.3 та додати overlap detection через pyannote-overlap-detection.

Клонування голосу — латентність чи якість. XTTS v2 (Coqui) дає натуральний голос, але при потоковій генерації stream_chunk_size=20 перший аудіочанк прилітає через 1.4–2.0 с — неприйнятно для інтерактивних сценаріїв. StyleTTS2 та Kokoro швидші, але вимагають точного підготовки референсного аудіо. Ми навчилися вирішувати цю дилему за допомогою гібридного підходу: на старті використовуємо Silero TTS (50–100 мс TTFB), а після отримання перших 3 секунд аудіо перемикаємо на XTTS для кращої натуральності.

Як вибрати ASR-модель під ваші дані?

Модель WER (українська, чистий запис) WER (PSTN, кодек G.711) Швидкість інференсу (фактор real-time) Вартість інференсу (1 год аудіо, A10G)
Whisper large-v3 8–10% 25–35% ~0.1x (55 с на 40 хв) ~$0.50
Whisper medium 12–15% 30–40% ~0.3x ~$0.15
Wav2Vec2 XLSR-53 15–18% 28–35% ~0.8x ~$0.08
Whisper large-v3 + fine-tune 4–7% 10–15% ~0.1x ~$0.50

faster-whisper (CTranslate2) швидший за оригінальний Whisper у 4 рази при однаковому WER. Для продакшену ми завжди використовуємо його.

Практичний приклад: fine-tuning Whisper на доменній лексиці

Фінтех-компанія з 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.50 за годину аудіо, що в 6 разів дешевше за хмарне рішення. Проєкт виконано за 6 тижнів, включаючи підготовку даних і валідацію.

Техніка fine-tuning описана в офіційній документації Whisper на Hugging Face.

Як донавчити 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 обов’язково заморожуйте 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. Ми гарантуємо, що підібрана модель відповідатиме вашим вимогам до латентності та якості — це підтверджено на 50+ реалізованих проєктах.

Наш досвід та гарантії

10+ років досвіду в NLP та speech processing. 50+ успішних проєктів для fintech, telecom, медицини. Сертифіковані моделі (Model Card + bias audit). Ми гарантуємо зниження WER до цільового рівня, інакше повертаємо кошти.

Що входить у роботу з нами?

Клієнт отримує:

  • Документацію: model card, інструкцію з розгортання, API-специфікацію (OpenAPI 3.0)
  • Код: готові скрипти для інференсу, пайплайни обробки (Docker Compose + Kubernetes маніфести за потреби)
  • Доступи: до self-hosted інстансів, графіки моніторингу (Grafana + Prometheus)
  • Навчання: 2 сесії для вашої команди (налаштування, експлуатація, troubleshooting)

Ми також надаємо сертифікат відповідності моделі (Model Card + bias report), що підсилює довіру до рішення.

Процес роботи та терміни

  1. Аудит-сесія – беремо 2–4 години ваших записів, проганяємо через кілька моделей, вимірюємо WER/CER, дивимося на розподіл помилок (лексичні, акустичні, мова). Займає 1–2 дні.
  2. Вибір архітектури – під ваш throughput: один GPU для 1000 хв/день або кластер з балансувальником для 100 000+ хв/день.
  3. Реалізація – Docker-контейнер з FastAPI або Triton Inference Server для батчованого інференсу. Інтеграція з чергою Kafka.
  4. Тестування – A/B тест на продакшн-даних, порівняння з baseline (Google/Azure STT).
  5. Деплой – CI/CD (GitHub Actions + ArgoCD), моніторинг (Grafana + WER/CER алерти).

Терміни:

  • Базова інтеграція готової моделі – 1–2 тижні.
  • Fine-tuning з підготовкою даних та валідацією – 4–8 тижнів.
  • Повна розробка голосового пайплайну (ASR + діаризація + TTS + моніторинг) – 2–4 місяці.

Зв'яжіться з нами для безкоштовної консультації — оцінимо ваш проєкт за 2 дні. Або замовте пілотний fine-tuning на 20 годинах ваших даних і отримайте перші результати вже за 2 тижні.