Access SAWT V6 Pro
SAWT V6 Pro is free for non-commercial use under the SAWT License 2.1. It is not available to for-profit organisations, and it may not be used to prepare training data for a commercial product. Two quick fields and one confirmation.
Log in or Sign Up to review the conditions and access this model content.
SAWT V6 Pro
Recitation restoration at 48 kHz: studio quality, silent pauses, the melody kept
Tape hiss, echoing halls, 11 kHz uploads and 32 kbps MP3s in. Full-band 48 kHz recitation in the same voice, with the same words and the same melody, out.
Listening page Β· Live demo Β· Restored recitations Β· Quick start Β· Evaluation Β· SAWT V6 Flash
A century of Quran recitation survives on tape, in reverberant mosques and as low-bitrate uploads. SAWT exists to bring it back without changing a syllable. SAWT V6 Pro is the first SAWT built around that job: it restores real archive recitation to studio-quality 48 kHz audio, leaves the pauses silent instead of full of the old room, and keeps the voice and melody where the recording put them.
Highlights
- Studio quality from archive uploads. On 500 real archive recitations, the DistillMOS quality predictor rises from 2.74 (the recordings) to 3.89, against 3.48 for SAWT V5 Pro.
- Silent pauses. The median background in the pauses falls from -36 dBFS in the recordings to -74 dBFS (V5 Pro: -56). A pause gate hides the damaged recording from the generator wherever the reciter is silent, so tape hiss, room tone and hall reverb do not come through.
- The melody is kept. Only 11 % of voiced frames move more than half a semitone from the recording's pitch. Sidon, the strongest open restorer we tested, moves 20 %: it resynthesises from speech-model features and invents the melody.
- Ahead of every open restorer we tested on recitation. Highest quality and cleanest pauses next to Sidon, SGMSE+, VoiceFixer, LLaSE-G1 and Resemble Enhance on the same 120 archive clips (table).
- Fast. 16x real time on long recordings on one RTX 4090 (a 3.5-minute recitation in 13 s).
Hear it
Loudness-matched, headphones recommended. Ten archive clips with SAWT V6 Pro, V6 Flash, V5 Pro and Sidon side by side are on the listening page, and 47 hours of restored recitation, including a complete mushaf restored from an 11 kHz copy, are in the restored-recitations dataset. To try your own recording, use the live demo.
Quick start
pip install huggingface_hub
python - <<'EOF'
from huggingface_hub import snapshot_download
snapshot_download("Quran-Lab/sawt-v6-pro", local_dir="sawt-v6-pro", allow_patterns=[
"config.json", "sawt2/*", "requirements.txt", # the restorer
"generator.pt", "omniasr-ctc-1b/*", "vae48_dacvae_d2.pt", "dacvae_stats.pt", # the weights, 4.6 GB
])
EOF
cd sawt-v6-pro
pip install -r requirements.txt
python sawt2/restore.py --in recordings/ --out restored/
That is the evaluated recipe, and every setting is the default: 16 Euler steps on a uniform time grid, anchor guidance 2.0, the pause gate (opens 3 dB above the file's own floor, never within 20 dB of its speech level), 56.32 s windows with 1 s of overlap, one seeded noise field per file, loudness dynamics matched to the input. Inputs can be WAV or FLAC at any sample rate; outputs are 48 kHz mono WAV, each with a JSON sidecar of the settings. A CUDA GPU is required.
Useful flags: --steps 8 (faster, a little less detail), --pause-gate 0 (keep the input's room in the pauses),
--guidance 1.0 (no anchor guidance; one pass fewer per step), --lanes 4 (more files at once on a 40 GB+ GPU),
--compile 1 (fuses the generator's elementwise work with torch.compile; about 12 % faster on long batch runs after a
one-off compile, output not bit-identical).
Speed on one RTX 4090, model loading not included: 16x real time on long recordings; about 8x on short clips, because every file is processed in a full 56 s window (the window the model was trained on; shorter windows were tested and lose quality). The defaults are bit-identical to the evaluated renders.
Changes
V6.2 (2026-10-29), new weights. generator.pt is now the V6.2 Pro generator: the V6 weights fine-tuned with
preference optimisation (Diffusion-DPO) on restorations of real recitation and of general speech, ranked by automatic
measures of intelligibility, quality and speaker identity. Its defaults are anchor guidance 2.0 on a uniform time grid;
the restorer reads them from the checkpoint. Against V6.1 with the same restorer:
| V6.1 | V6.2 | |
|---|---|---|
| phoneme error rate, 15 real archive and live-mosque recordings | 0.230 | 0.210 |
| phoneme error rate, very reverberant recordings (C50 below 0 dB, 126 files) | 0.269 | 0.202 |
| phoneme error rate, 120 archive clips | 0.082 | 0.077 |
| phoneme error rate, a second reciter 3 dB below the first | 0.067 | 0.065 |
| DistillMOS, 120 archive clips | 3.89 | 3.89 |
| NISQA, 120 archive clips | 3.57 | 3.54 |
On general speech (the URGENT 2025 non-blind test, 1,000 clips in five languages) V6.2 is better than V6.1 on 12 of
13 measures, among them character accuracy 81.9 to 84.3 %, speaker similarity 0.684 to 0.690 and UTMOS 2.84 to 2.99;
SDR is lower (2.09 to 1.73 dB). The original V6 / V6.1 weights stay in this repository as
variants/sawt_v6_generator.pt; pass it as --ckpt and the restorer uses their own defaults (sway -1, guidance 1.5),
so their output is unchanged. The evaluation tables further down were measured with the V6 weights.
V6.1 (2026-10-21), restorer update; the model weights are unchanged. The pause gate decided what is a pause by
loudness against the file's own floor. On crushed, limited or noisy uploads speech and pauses are almost equally loud,
so the gate also fired during speech, and the generator rebuilt those stretches from the anchor alone: a flatter,
less faithful voice. On two loudness-maxed 2004 uploads it gated 80-88 % of the file. Frames within 20 dB of the file's
speech level are now never treated as pauses (--speech-gap-db, default 20; 0 restores the V6.0 rule). On 15 real
archive and live-mosque recordings, pitch frames more than 50 cents off the input fell from 11.9 % to 9.2 % (23 % to 7 %
on the most crushed file), with PER slightly lower. Clean studio input is unaffected; pauses on noisy live recordings
keep 1-3.5 dB more background.
Stretches of digital silence in the input (0.3 s or longer: an uploader's noise gate, edits, dead air) now stay silent
in the output (--keep-silence, default 1). Given nothing there, the generator invented loud sound: one radio-era
upload is 105 s of digital silence out of 273 s, and V6.0 filled those gaps at -15 to -20 dB.
How it works
- Representation. Meta's DAC-VAE, frozen, 48 kHz, 128 channels at 25 Hz, with SAWT's fine-tuned decoder head. Restoration happens in this latent.
- Anchor. Meta's omniASR CTC 1B (a wav2vec2 encoder trained for speech recognition in more than 1,600 languages), frozen, reads the damaged recording at 16 kHz. Four of its layers (12, 24, 30 and 36) are mixed and refined by a small ConvNeXt into the conditioning stream. A recognition encoder knows what was said, which is exactly what a restorer must not change.
- Generator. A 351M flow-matching diffusion transformer (24 layers, width 1024, 16 heads, adaLN, RoPE, qk-norm, U-Net-style long skips) sees the noised latent, the damaged recording's latent and the anchor stream at every block. It works on 56.32 s windows, long enough to hold a whole verse and its pauses.
- Sampling. 16 Euler steps from noise. Each step blends three predictions: the full one, one without the anchor (anchor guidance pushes away from it with weight 2.0 in V6.2, 1.5 in V6) and one that cannot see the damaged recording, which takes over in the input's pauses (the pause gate). Windows overlap by 1 s and the latent is decoded once per file.
Evaluation
All numbers in this section come from the release code with the V6 weights (variants/sawt_v6_generator.pt) and their default settings; the V6.2 comparison is under Changes. DistillMOS is a learned quality predictor; the pause floor is
the median level of the restored audio in the input's pauses.
Real archive recitation, 500 clips (10 s excerpts of archive uploads, three input-quality tiers)
| input | SAWT V5 Pro | SAWT V6 Pro | |
|---|---|---|---|
| DistillMOS | 2.74 | 3.48 | 3.89 |
| Audiobox PQ | 6.76 | 7.55 | 7.60 |
| pause floor (median) | -36 dBFS | -56 dBFS | -74 dBFS |
| speech to background | 29.4 dB | 43.6 dB | |
| speaker consistency | 0.957 | 0.947 |
The 120-clip archive set (input / V5 Pro / V6 Pro / V6 Flash): DistillMOS 2.78 / 3.47 / 3.89 / 3.68; pause floor -36 / -53 / -79 / -70 dBFS.
Open restorers on real archive recitation
The same 120 archive clips, each system run with its published inference recipe, all levelled to the input:
| system | DistillMOS | pause floor |
|---|---|---|
| SAWT V6 Pro | 3.89 | -78.6 dBFS |
| Sidon | 3.81 | -66.4 dBFS |
| SGMSE+ (EARS-WHAM) | 3.43 | -55.9 dBFS |
| VoiceFixer | 3.25 | -60.8 dBFS |
| LLaSE-G1 | 3.34 | -62.1 dBFS |
| Resemble Enhance | 3.72 | -82.6 dBFS |
Pitch fidelity (share of voiced frames more than 50 cents from the recording's pitch): SAWT V6 Pro 0.109, SGMSE+ 0.098, Sidon 0.202.
What the numbers say, and what they do not. On archive recitation V6 Pro is clearly the best SAWT and the best open system we measured: much higher quality, near-silent pauses and the melody intact. Quality predictors miss things a listener hears at once, in both directions; the listening page is the real test.
Which SAWT to use
| material | use |
|---|---|
| recitation archives, lectures, interviews, any speech where quality matters | SAWT V6 Pro |
| large archives at speed | SAWT V6 Flash |
SAWT V6 Pro is the recommended SAWT. The earlier SAWT V5 Pro stays available.
Files
| file | what | size |
|---|---|---|
generator.pt |
SAWT V6.2 Pro: the 351M flow-matching DiT, preference-tuned from the V6 weights (the release) | 1.40 GB |
variants/sawt_v6_generator.pt |
the original SAWT V6 / V6.1 Pro weights, EMA at step 30k | 1.40 GB |
omniasr-ctc-1b/ |
the omniASR CTC 1B encoder up to layer 36 (the layers SAWT reads; the CTC head and the deeper layers never touch the output) | 2.91 GB |
vae48_dacvae_d2.pt |
SAWT's DAC-VAE decoder head (the base downloads with the dacvae package) |
283 MB |
dacvae_stats.pt |
latent statistics the generator was trained with | 3 kB |
sawt2/ |
the restorer (sawt2/restore.py), generator and anchor code |
|
samples/ |
the ten listening-page clips, lossless, with their measurements | |
eval/ |
the per-clip metric files behind the tables | |
variants/ema_step40000.pt |
the end of the same run, step 40k: more background in the pauses (-62 vs -68 dBFS) and slightly lower quality (DistillMOS 3.86 vs 3.89 on the 500 clips) | 1.40 GB |
training/live_step40000.pt |
the live (non-EMA) weights at the end of the run, for fine-tuning | 1.40 GB |
Training from here
generator.pt, variants/sawt_v6_generator.pt and training/live_step40000.pt are plain PyTorch state that load into sawt2.v6.model.SawtV6Generator
(SawtV6Generator(k_layers=4).load_state_dict(ck["dit"])). Fine-tune from the EMA weights with a fresh AdamW; the
optimizer moments of the original run were not kept. The trainer itself is not part of this release.
License
SAWT License 2.1, non-commercial, the same terms as SAWT V4 and V5. Run it, study it, build on it, host it, with
attribution to Quran-Lab, for non-commercial purposes. No commercial use of any kind and no use by for-profit
organisations; restoring or cleaning audio with SAWT to build a training set is use, and anything trained on such a set
is a derivative. Open to individuals acting privately, charities and non-profits, educational and research
institutions, religious institutions, public archives, libraries, museums and heritage bodies. It may not be used to
make a recording say what was not said, to pass off altered audio as an original, or to deceive, impersonate, surveil or
harm. Audio restored with SAWT must be credited wherever it is published or used: "Restored with SAWT by Quran-Lab" with a link to https://quranlab.ai, in the description, caption, credits or metadata. Datasets made with SAWT, and models trained on them, must say so in their card. Full text in LICENSE.
Upstream components, each under its own terms for its original portions: omniASR CTC 1B (Meta, Apache 2.0), DAC-VAE (Meta, Apache 2.0).
Acknowledgements
Meta for Omnilingual ASR and DAC-VAE, and the creators of the studio speech and singing corpora SAWT learned from.
Citation
@misc{sawt_v6_2026,
title = {SAWT V6 Pro: recitation restoration at 48 kHz},
author = {Quran-Lab},
year = {2026},
url = {https://huggingface.co/Quran-Lab/sawt-v6-pro}
}
Built by Quran-Lab. SAWT means voice.
- Downloads last month
- 34


