YAML Metadata Warning:empty or missing yaml metadata in repo card

Check out the documentation for more information.

Fine-tuning ParakeetRo 110M pentru Recunoaștere Vorbită Robustă

Proiect de fine-tuning al modelului NVIDIA ParakeetRo 110M (FastConformer Hybrid TDT-CTC) pe corpus românesc, cu evaluarea a trei tehnici de augmentare și robustețe la zgomot.

Rezultate cheie

Scenariu Clean WER Noisy WER Observație
1 Baseline 22.24% 25.18% Cel mai bun pe curat
2 SpecAugment 22.34% 25.03% Neutru
3 WhiteNoise 22.38% 24.75% Cel mai robust la zgomot
4 Denoising (MetricGAN+) 22.24% 31.74% Înrăutățește ASR

31.74% = WER pe audio denoised cu MetricGAN+ (nu raw noisy; WER pe noisy direct = 25.18%).

Takeaway: Antrenarea cu zgomot alb îmbunătățește robustețea la zgomot cu 0.43% WER absolut fără penalizare pe date curate. Pre-procesarea generică de denoising (MetricGAN+) este contraproductivă pentru ASR.

Setup

Hardware

  • NVIDIA A100-SXM4-80GB
  • CUDA 12.6, PyTorch 2.12+cu126
  • NeMo 2.7.3, lightning.pytorch 2.4.0

Dataset

Set Samples Durată
Train 319,071 ~143h
Validation 7,791 ~21h
Format 16kHz mono WAV

Instalare

conda env create -f environment.yml  # sau pip install -r requirements.txt
conda activate pvmd

Structura proiectului

.
├── src/
│   ├── train_all_scenarios.py      # Orchestrator antrenament (Scenariile 1-3)
│   ├── evaluate_all_scenarios.py   # Evaluare pe clean + noisy
│   ├── scenario4_denoising_test.py # Test MetricGAN+ (Scenariul 4)
│   └── ...                         # Pre-procesare și utilitare
├── results/
│   ├── scenario_1/                 # Checkpoints + model final .nemo
│   ├── scenario_2/
│   ├── scenario_3/
│   ├── scenario_4/                 # Manifeste + rezultate denoising
│   └── evaluation/                 # JSON cu WER-uri finale
├── scripts/                        # Script-uri pipeline
├── run_all_scenarios.sh            # Runner complet (seq)
└── requirements.txt

Rulare

Antrenament (Scenariile 1-3)

bash run_all_scenarios.sh [EPOCHS]

Parametri impliciți: batch=64, lr=1e-4, warmup=2000, precision=bf16-mixed, CTC-only mode.

Evaluare independentă

python src/evaluate_all_scenarios.py \
    --clean_manifest /path/to/val_manifest.json \
    --noisy_manifest /path/to/noisy_manifest.json \
    --batch_size 16

Scenariul 4 — Denoising

python src/scenario4_denoising_test.py \
    --model_path results/scenario_1/scenario1_final.nemo \
    --val_manifest /path/to/val_manifest.json \
    --output_dir results/scenario_4 \
    --use_metricgan

Detalii tehnice

Mod CTC-only

Datorită instabilităților CUDA în loss-ul TDT/RNNT (illegal instruction/memory access), antrenamentul rulează în mod CTC-only:

  • Se sare peste computația RNNT/TDT
  • Throughput crescut de la ~1.2 it/s la ~3.6 it/s
  • Validare forțată pe CTC WER (val_wer_ctc) în loc de TDT WER

SpecAugment (Scenariul 2)

Policy LD:

  • freq_masks = 2, freq_width = 27
  • time_masks = 2, time_width = 100

WhiteNoise (Scenariul 3)

Zgomot alb Gaussian on-the-fly:

  • Probabilitate: 100%
  • Nivel: -90 dB … -46 dB

MetricGAN+ (Scenariul 4)

Enhancer pre-antrenat pe VoiceBank-DEMAND. Aplicat pe setul de validare zgomotos (Gaussian noise_amp=0.017).

Probleme și soluții

Problemă Cauză Soluție
Crash CUDA (RNNT) Operații CUDA instabile în TDT CTC-only mode
WER explodat (~70%) val_wer monitoriza TDT decoder (netrenat) Override validation_stepval_wer = val_wer_ctc
time_width_upper error Config salvat incompatibil cu NeMo instalat Patch .nemo (eliminare cheie)
transcribe() WER greșit Code path diferit față de training Folosire trainer.validate() + val_wer_ctc

Output-uri

Fișier Descriere
results/scenario_*/scenario*_final.nemo Model fine-tuned
results/evaluation/all_scenarios_evaluation.json WER clean/noisy per scenariu
results/scenario_4/scenario4_results_final.json Rezultate denoising corecte
results/scenario_4/*_manifest.json Manifeste noisy/denoised
results/*/logs/ Log-uri TensorBoard + training

Licență

Modelul base: NVIDIA NeMo Parakeet (CC-BY-NC-SA 4.0).

Downloads last month
67
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support