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:
@@ -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)
|
||||||
|
|
||||||
metrics = _spectral_metrics(wav, sr)
|
try:
|
||||||
if metrics:
|
metrics = _spectral_metrics(wav, sr)
|
||||||
img = _save_spectrogram(wav, sr, ckpt_dir / f"step_{step:05d}.png")
|
_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)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user