Кастомный голос: дообучение TTS-модели с гарантией MOS 4.3+

Каждый третий ответ вашего голосового ассистента звучит неестественно — дрожание тембра, пропуски фонем. Мы решаем эту проблему дообучением TTS-модели на голос заказчика. После fine-tuning на 30–60 минутах записи модель стабильно читает любой текст: MOS поднимается до 4.3+ против 3.8 у zero-shot, а

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

Каждый третий ответ вашего голосового ассистента звучит неестественно — дрожание тембра, пропуски фонем. Мы решаем эту проблему дообучением 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. Все эти меры позволяют получить стабильный результат без переобучения.

Если у вас остались вопросы по датасету, архитектуре или бюджету — свяжитесь с нами для консультации. Закажите расчёт стоимости вашего проекта — мы подберём оптимальное решение под ваши задачи.