CallCleaner / README.md
malper's picture
Upload README.md with huggingface_hub
7b03a6b verified
|
Raw History Blame Contribute Delete
3.94 kB
---
license: other
license_name: sam-license
license_link: LICENSE
pipeline_tag: audio-to-audio
library_name: pytorch
tags:
- bioacoustics
- audio
- denoising
- animal-vocalizations
- knowledge-distillation
---
# CallCleaner
**Lightweight bioacoustic denoising from an audio foundation model.**
CallCleaner removes background noise (wind, rain, vehicles, other animals) from recordings of
animal vocalizations. It is a 19M-parameter waveform-to-waveform model that needs no detector,
text prompt or GPU, and runs about 90× faster than real time on a laptop CPU.
[Project page](https://callcleaner.github.io) · [Paper (arXiv)](https://arxiv.org/abs/2611.11491) · [Code (GitHub)](https://github.com/morrisalp/CallCleaner)
## How it was made
The source-separation foundation model **SAM-Audio** (`facebook/sam-audio-small`), prompted with
"animal sound" and with time spans from a simple animal voice-activity detector, removes more noise
from animal calls than dedicated bioacoustic denoisers, but it is slow and inherits detector errors.
CallCleaner distills it into a small model:
- **Architecture:** the Demucs denoiser from [Biodenoising](https://github.com/earthspecies/biodenoising)
(`biodenoising16k_dns48`, 16 kHz, mono), initialized from Biodenoising's weights.
- **Teacher:** SAM-Audio with VAD-span prompts. Its target stream is the pseudo-label; its residual
stream is a noise estimate. Half of each batch is remixed (another segment's residual added to a
pseudo-label), as in bootstrapped remixing.
- **Data:** 4 s segments (1.8 h) from the public corpora Biodenoising was trained on (DCASE few-shot
bioacoustics, Orchive and five bird corpora), none shared with its benchmark.
- **Training:** 2,000 steps.
On Biodenoising's benchmark (47 clips × 4 SNRs), CallCleaner leaves **11 dB less noise around the call**
than Biodenoising, the leading neural bioacoustic denoiser with public weights, and among fast,
CPU-capable systems it pushes the Pareto frontier of noise removal vs. call fidelity. See the paper
for full results.
## Usage
```bash
pip install biodenoising safetensors huggingface_hub librosa soundfile
```
```python
import librosa, soundfile as sf, torch
from biodenoising.denoiser.pretrained import biodenoising16k_dns48
from huggingface_hub import hf_hub_download
from safetensors.torch import load_file
model = biodenoising16k_dns48(pretrained=False)
model.load_state_dict(load_file(hf_hub_download("malper/CallCleaner", "model.safetensors")))
model.eval()
y, _ = librosa.load("noisy.wav", sr=16000, mono=True) # the model works at 16 kHz, mono
with torch.no_grad():
clean = model(torch.tensor(y)[None, None])[0, 0, : len(y)].numpy()
sf.write("clean.wav", clean, 16000)
```
For long recordings, process overlapping chunks (e.g. 60 s with a 1 s cross-fade); the command-line
script in the [code repository](https://github.com/morrisalp/CallCleaner) does this, and handles folders and other sample rates.
## Limitations
- Output is 16 kHz: content above 8 kHz (e.g. many bat and some bird and insect calls) is not restored.
- Trained to keep one caller's vocalizations; overlapping calls from other animals may be treated as noise.
- Distilled from a teacher that can miss quiet calls or keep loud non-target sounds; it inherits some
of these errors. Listen to outputs before using them for analysis.
## License
The weights are a derivative of SAM-Audio and are released under the **SAM License**
(see [LICENSE](LICENSE)); by using or redistributing them you agree to its terms. The Biodenoising
architecture and initialization are MIT-licensed.
## Citation
```bibtex
@article{xie2026callcleaner,
title = {CallCleaner: Lightweight Bioacoustic Denoising from an Audio Foundation Model},
author = {Michael Xie and Ga{\v{s}}per Begu{\v{s}} and Morris Alper},
year = {2026},
eprint = {2611.11491},
archivePrefix = {arXiv}
}
```