- LibrosaSTFT transposes output from [batch, freq, time] to [batch, time, freq]
- LibrosaISTFT transposes input back from [batch, time, freq] to [batch, freq, time]
- Ensures compatibility with VoiceFixer's downstream STFT operations
- Resolves matrix multiplication shape errors after removing torchlibrosa dependency
- Add unsqueeze(1) to maintain 4D shape [batch, channels, freq, time]
- Previously was incorrectly concatenating on dim=1, flattening to 3D
- Fixes permute dimension mismatch error when using librosa-based STFT
- Now properly maintains channel dimension for multi-channel processing
- Replace torchlibrosa with custom LibrosaSTFT and LibrosaISTFT wrappers
- Maintain full API compatibility with existing FDomainHelper code
- No quality loss - mathematically equivalent FFT implementations
- Handles batch processing and device/dtype preservation
- Removes dependency since we already require librosa
- ~0.1-0.2s slower per audio (CPU instead of GPU STFT) but acceptable trade-off
- Bundle VoiceFixer locally to avoid cache downloads
- Create voice_fixer_downloader for TTS/voicefixer/ model management
- Implement Voice Fixer node with 3 restoration modes (original, high-freq removal, train mode)
- Register node in nodes.py with proper error handling
- Patch bundled VoiceFixer hardcoded paths to use TTS/voicefixer/ directory
- Disable auto-download in restorer/__init__.py, handled by node instead
- Support lazy loading and CUDA acceleration
- All models download to organized TTS/ folder, never to cache