Reproducing FINALLY Speech Enhancement – Clarifications Needed
Dear Authors,
We greatly enjoyed your paper, *"FINALLY: Fast and Universal Speech Enhancement with Studio-like Quality"*. Our team at Inverse AI has been developing an open-source implementation of your model, now publicly available on GitHub: [https://github.com/inverse-ai/FINALLY-Speech-Enhancement](https://github.com/inverse-ai/FINALLY-Speech-Enhancement). This follows our previous efforts in open-sourcing models, such as converting PyTorch implementations of Hybrid Transformer Demucs to TensorFlow: [https://github.com/inverseai/Demucs-and-HTDemucs-based-denoiser-with-Tensorflow](https://github.com/inverseai/Demucs-and-HTDemucs-based-denoiser-with-Tensorflow).
While implementing FINALLY, we encountered some discrepancies and ambiguities, and we hope you can provide clarifications to help align our implementation with your reported results:
1. **Parameter Mismatch:**
The paper reports 454M parameters, including 358M from WavLM. Using WavLM-Large from the provided Hugging Face link, our implementation totals 363M (315M WavLM + 48M model). Model components: SpectralUNet (4.4M), ResBlock (7.1M), Conv (0.8M), HiFi (15.5M), WaveUNet (10.8M), SpectralMaskNet (5.5M), WaveUNet Upsampler (3.9M). Could you clarify this discrepancy?
2. **Training Data Details:**
The paper mentions Stages 1 and 2 use LibriTTS-R clean dataset, but it’s unclear whether these stages use identical or different subsets.
3. **Audio File Length:**
The typical duration or range of audio samples used for training is not specified.
4. **Batch Size:**
The paper mentions a batch size of 32, but it is unclear if this applies to all stages or varies.
5. **Positional Embedding:**
The type of positional embedding (sinusoidal or learned) is not specified.
6. **Training Iterations:**
The paper mentions 100k, 30k, and 40k iterations for Stages 1, 2, and 3. Our model continues converging beyond these. Did you observe similar behavior, or is there a recommended stopping criterion?
7. **LMOS Loss:**
Using mel spectrograms in LMOS loss avoids artifacts in Stages 1 and 2 but causes issues in Stage 3, while STFT introduces artifacts in Stages 1 and 2. Did you encounter similar trade-offs, and could you share insights?
**Our setup (for reference):**
- Segments: 2s audio files
- Batch: 18, 12, 4 for Stages 1, 2, 3
- Dataset: LibriTTS-R clean in Stages 1 & 2, DAPS with DNS noise in Stage 3 (~200 hours)
- GPU: 2× NVIDIA 5090
- Positional Embedding: PyTorch 2D learnable
- Loss: LMOS (tested with mel-spectrogram and STFT)
- Optimizer: AdamW, warmup: 10k steps
- Overall MOS: 2.95 on 10% of training data
We would greatly appreciate your guidance on these points. Clarifications will help improve our open-source implementation and benefit the broader research community.