Донавчання Whisper під доменну лексику замовника Базовий Whisper Large v3 показує WER 6–9% на стандартній російській мові, але на медичних термінах, юридичних формулюваннях чи технічних назвах продуктів помилки зростають до 25–40%. Донавчання під конкретний домен знижує WER до 3-8% на цільовій лексиці. ### Коли донавчання необхідне - Специфічна термінологія з нульовим або малим покриттям у навчальних даних - Сильний регіональний або професійний акцент - Низька якість запису (телефонія 8 kHz, шумні умови) - Кодове перемикання (суміш російської з англійським технічними термінами) - Власна назва: Названа назва для значного вдосконалення: 10–30 годин розміченого аудіо цільового домену. Для вузької спеціалізації (один диктор, чисті умови) достатньо 2-5 годин.
Формат для навчання (HuggingFace datasets):```python from datasets import Dataset, Audio import pandas as pd
Формат: audio path + transcript
data = pd.read_csv("transcripts.csv") # columns: audio_path, text
dataset = Dataset.from_pandas(data)
dataset = dataset.cast_column("audio_path", Audio(sampling_rate=16000))
Вимоги до даних: - Частота дискретизації: 16 kHz - Формат: WAV (переважно) або FLAC - Розмітка: повний текст без скорочень нестандартних слів - Довжина сегментів: 5-30 секунд ### Fine-tuning pipeline Використовуємо `transformers` + `Seq2SeqTrainer`:python
from transformers import (
WhisperForConditionalGeneration,
WhisperProcessor,
Seq2SeqTrainer,
Seq2SeqTrainingArguments
)
model = WhisperForConditionalGeneration.from_pretrained("openai/whisper-large-v3") processor = WhisperProcessor.from_pretrained("openai/whisper-large-v3", language="Russian")
training_args = Seq2SeqTrainingArguments(
output_dir="./whisper-medical-ru",
per_device_train_batch_size=4,
gradient_accumulation_steps=4,
learning_rate=1e-5,
warmup_steps=500,
max_steps=4000,
gradient_checkpointing=True,
fp16=True,
evaluation_strategy="steps",
eval_steps=500,
save_steps=500,
generation_max_length=225,
predict_with_generate=True,
load_best_model_at_end=True,
metric_for_best_model="wer",
greater_is_better=False,
)
### Стратегія навчання **Parameter-Efficient Fine-Tuning (PEFT)** через LoRA дозволяє донавчити лише 1–2% параметрів, зберігаючи якість:python
from peft import LoraConfig, get_peft_model
lora_config = LoraConfig( r=32, lora_alpha=64, target_modules=["q_proj", "v_proj"], lora_dropout=0.05, bias="none" ) model = get_peft_model(model, lora_config)
Мінімальна конфігурація: 1x A100 80 ГБ. Час навчання при 20 годинах даних: - 4 000 кроків, batch 16: ~8 годин на A100 - Вартість на AWS (p4d.24xlarge): ~$160 Для smaller бюджету - навчання на RTX 4090 з gradient checkpointing і fp16: ті ж 4-30. ### Терміни проекту - Підготовка та розмітка даних: 1-2 тижні (залежить від наявності транскрипцій) - Навчання та підбір гіперпараметрів: 3-5 днів - Тестування та валідація: 3-5 днів - Разом: 3-4 тижні







