From bb07bc8169e0a0ad253d19c30deedb7f59d194af Mon Sep 17 00:00:00 2001 From: Ethanfel Date: Wed, 8 Apr 2026 23:10:19 +0200 Subject: [PATCH] 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 --- nodes/selva_textual_inversion_trainer.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/nodes/selva_textual_inversion_trainer.py b/nodes/selva_textual_inversion_trainer.py index 59767f4..be7dc02 100644 --- a/nodes/selva_textual_inversion_trainer.py +++ b/nodes/selva_textual_inversion_trainer.py @@ -17,7 +17,6 @@ Usage: """ import copy -import math import random import traceback from pathlib import Path @@ -33,7 +32,6 @@ from .selva_lora_trainer import ( _prepare_dataset, _spectral_metrics, _save_spectrogram, - _pil_to_tensor, ) @@ -344,13 +342,15 @@ class SelvaTextualInversionTrainer: import soundfile as sf sf.write(str(wav_path), wav.squeeze(0).numpy(), sr) - metrics = _spectral_metrics(wav, sr) - if metrics: - img = _save_spectrogram(wav, sr, ckpt_dir / f"step_{step:05d}.png") + try: + metrics = _spectral_metrics(wav, sr) + _save_spectrogram(wav, sr, ckpt_dir / f"step_{step:05d}.png") print(f"[TI Trainer] step {step} " f"centroid={metrics['spectral_centroid_hz']:.0f}Hz " f"flatness={metrics['spectral_flatness']:.4f} " 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)