fix(ti-trainer): guard spectral metrics, drop unused imports

- Wrap _spectral_metrics + _save_spectrogram in try-except so a matplotlib
  or STFT error doesn't abort the checkpoint save (matches LoRA trainer)
- Remove unused `import math` and `_pil_to_tensor` import
- Drop dead `img` variable (_save_spectrogram returns None)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-08 23:10:19 +02:00
parent e36cdd7947
commit bb07bc8169
+4 -4
View File
@@ -17,7 +17,6 @@ Usage:
""" """
import copy import copy
import math
import random import random
import traceback import traceback
from pathlib import Path from pathlib import Path
@@ -33,7 +32,6 @@ from .selva_lora_trainer import (
_prepare_dataset, _prepare_dataset,
_spectral_metrics, _spectral_metrics,
_save_spectrogram, _save_spectrogram,
_pil_to_tensor,
) )
@@ -344,13 +342,15 @@ class SelvaTextualInversionTrainer:
import soundfile as sf import soundfile as sf
sf.write(str(wav_path), wav.squeeze(0).numpy(), sr) sf.write(str(wav_path), wav.squeeze(0).numpy(), sr)
try:
metrics = _spectral_metrics(wav, sr) metrics = _spectral_metrics(wav, sr)
if metrics: _save_spectrogram(wav, sr, ckpt_dir / f"step_{step:05d}.png")
img = _save_spectrogram(wav, sr, ckpt_dir / f"step_{step:05d}.png")
print(f"[TI Trainer] step {step} " print(f"[TI Trainer] step {step} "
f"centroid={metrics['spectral_centroid_hz']:.0f}Hz " f"centroid={metrics['spectral_centroid_hz']:.0f}Hz "
f"flatness={metrics['spectral_flatness']:.4f} " f"flatness={metrics['spectral_flatness']:.4f} "
f"hf={metrics['hf_energy_ratio']:.3f}", flush=True) f"hf={metrics['hf_energy_ratio']:.3f}", flush=True)
except Exception as e:
print(f"[TI Trainer] Spectral/spectrogram failed: {e}", flush=True)
print(f"[TI Trainer] Checkpoint: {ckpt_path}", flush=True) print(f"[TI Trainer] Checkpoint: {ckpt_path}", flush=True)