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

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

Напрямки 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. Всі ці заходи дозволяють отримати стабільний результат без перенавчання.

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