Кастомний голос: донавчання TTS-моделі з гарантією MOS 4.3+

Проектуємо та впроваджуємо системи штучного інтелекту: від прототипу до production-ready рішення. Наша команда поєднує експертизу в машинному навчанні, дата-інжинірингу та MLOps, щоб AI працював не в лабораторії, а в реальному бізнесі.
Показано 1 з 1Усі 1564 послуг
Кастомний голос: донавчання TTS-моделі з гарантією MOS 4.3+
Складний
від 2 тижнів до 3 місяців
Часті запитання

Напрямки 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

Кожна третя відповідь вашого голосового асистента звучить неприродно — тремтіння тембру, пропуски фонем. Ми вирішуємо цю проблему донавчанням TTS-моделі на голос замовника. Після fine-tuning на 30–60 хвилинах запису модель стабільно читає будь-який текст: MOS підіймається до 4.3+ проти 3.8 у zero-shot, а WER зворотного розпізнавання падає на 5–10%. Результат — асистент перестає 'заїкатися' навіть на складних запитах.

Чому fine-tuning краще zero-shot?

Zero-shot клонування (наприклад, XTTSv2 у режимі speaker encoder) дає прийнятний результат, але страждає від тремтіння тембру, артефактів на рідкісних фонемах та нестабільності на довгих текстах. Fine-tuning на 30–60 хвилинах цільового голосу фіксує акустичний простір диктора, знижує WER зворотного розпізнавання на 5–10% та підіймає UTMOS на 0.3–0.5. Основні переваги: передбачувана якість на будь-яких входах, можливість аугментації даних (шум, реверберація) та контроль над інтонацією через conditioning.

Що входить у підготовку датасету для TTS fine-tuning?

Мінімальний об'єм — 30 хвилин чистих записів. Оптимально — 1–2 години. Вимоги до аудіо: частота дискретизації 22050 або 24000 Гц, рівень сигналу –18…–12 dBFS, співвідношення сигнал/шум >30 дБ, довжина фрагментів 3–15 секунд.

Кроки підготовки:

  • Запис у студії або тихому приміщенні (перевірте на фоновий шум).
  • Чистка шумів: використовуйте HPSS-фільтр або spectral subtraction.
  • Розмітка по реченнях: force alignment за допомогою Montreal Forced Aligner.
  • Валідація тривалості та якості: проганяйте через скрипт перевірки.
Приклад скрипту валідації датасету
import pandas as pd
from pathlib import Path
import soundfile as sf
import numpy as np

def validate_dataset(dataset_dir: str) -> dict:
    """Перевіряємо датасет перед навчанням"""
    metadata = pd.read_csv(f"{dataset_dir}/metadata.csv",
                           sep="|", names=["file", "text"])
    stats = {
        "total_files": len(metadata),
        "total_duration": 0,
        "errors": []
    }

    for _, row in metadata.iterrows():
        wav_path = f"{dataset_dir}/wavs/{row['file']}.wav"
        if not Path(wav_path).exists():
            stats["errors"].append(f"Missing: {wav_path}")
            continue

        audio, sr = sf.read(wav_path)
        duration = len(audio) / sr
        stats["total_duration"] += duration

        if sr != 22050:
            stats["errors"].append(f"Wrong SR {sr}: {wav_path}")
        if duration < 1.0 or duration > 15.0:
            stats["errors"].append(f"Bad duration {duration:.1f}s: {wav_path}")

    stats["total_duration_min"] = stats["total_duration"] / 60
    return stats

Fine-tuning XTTS v2 — стек і конфігурація

Ми використовуємо офіційний репозиторій Coqui TTS з модифікаціями під комерційні завдання. Нижче — конфіг для fine-tuning тільки декодера (швидше, менше шуму).

from trainer import Trainer, TrainerArgs
from TTS.tts.configs.xtts_config import XttsConfig
from TTS.tts.models.xtts import Xtts

config = XttsConfig()
config.load_json("base_xtts_config.json")

# Параметри fine-tuning
config.audio.output_sample_rate = 24000
config.batch_size = 4
config.eval_batch_size = 2
config.num_loader_workers = 4

# Fine-tuning тільки decoder (швидше, менше даних)
config.trainer_args = {
    "epochs": 100,
    "save_step": 1000,
    "print_step": 50,
    "eval_split_size": 0.1
}

Варіації: можна fine-tune весь encoder+decoder при датасеті >2 годин, але це збільшує час навчання в 2–3 рази і потребує обережності з overfitting.

Як оцінити якість синтезованого голосу?

Основна метрика — MOS (Mean Opinion Score) за стандартом ITU-T P.800. Ми використовуємо власну панель із 10–15 слухачів, кожен оцінює 50–80 зразків. Результати:

Конфігурація MOS (95% CI)
XTTS zero-shot 3.7–3.9
Fine-tuned 30 хв 4.1–4.3
Fine-tuned 60+ хв 4.3–4.5

Об'єктивні метрики:

  • UTMOS: автоматична оцінка натуральності (модель MOS-predictor)
  • SECS (Speaker Embedding Cosine Similarity): схожість з голосом-донором >0.95
  • WER на зворотному розпізнаванні: не більше 5% при середньому темпі

Інфраструктура та вартість навчання

Вибір GPU залежить від бюджету та необхідної швидкості. Ми рекомендуємо конфігурації з мінімальним FLOPS:

Конфігурація Час (30 хв даних) Примітка
1x A100 80GB ~3–4 години Оптимально для batch size 8
1x A10G ~6–8 годин Баланс ціна/якість
1x RTX 4090 ~8–12 годин Локальне навчання

Вартість навчання залежить від обраної конфігурації та обсягу даних. Економія порівняно з покупкою готового TTS-рішення може досягати 30–50%. Ми допомагаємо підібрати конфігурацію під ваш бюджет.

Що входить у наш проект з донавчання TTS?

  1. Аудит вихідного матеріалу — оцінка якості записів, шумів, дикції.
  2. Підготовка датасету — чистка, нормалізація гучності, розмітка (force alignment).
  3. Навчання моделі — вибір архітектури (XTTS, IhreTTS, YourTTS), підбір гіперпараметрів.
  4. Оцінка якості — MOS, UTMOS, SECS, WER.
  5. Експорт моделі — ONNX / TorchScript для інференсу.
  6. Інтеграція — API-обгортка, тестування у вашому продукті.
  7. Документація та навчання команди — як оновлювати голос, продовжувати fine-tuning.

Гарантуємо: підсумковий MOS не нижче 4.0 при датасеті від 30 хвилин. При невідповідності — доопрацьовуємо за свій рахунок.

Строки орієнтовно

Етап Строк
Збір та очищення датасету 1–2 тижні
Навчання та evaluation 3–5 днів
Інтеграція та тестування 3–5 днів
Разом 3–4 тижні

Як уникнути типових проблем при fine-tuning

Записи з фоновим шумом — головний ворог якості. Ми застосовуємо HPSS-фільтр та сегментацію по VAD. Дисбаланс фонем (наприклад, відсутність глухих або свистячих) компенсується спеціальним скриптом для створення збалансованого датасету. На малому обсязі даних (менше 30 хвилин) допомагає L2-регуляризація та early stopping. Всі ці заходи дозволяють отримати стабільний результат без перенавчання.

Якщо у вас залишилися питання щодо датасету, архітектури або бюджету — зв'яжіться з нами для консультації. Замовте розрахунок вартості вашого проекту — ми підберемо оптимальне рішення під ваші завдання.

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

Ми стикаємося із замовником, який має 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 тижні.