CoolFace
Datasetpublic

Quran-Lab/QuranTTS

QuranTTS v4 An ear-verified Quranic recitation corpus for TTS and speech restoration. Built in-house for the lab's own training runs. We have since moved on to a larger corpus and a newer pipeline, so this one is published rather than shelved. What you get is the corpus exactly as it stood when we stopped using it: complete, documented, and unmaintained. Non-commercial, strictly. Neither this corpus nor any model trained on it may be used for any commercial purpose, and… See the full description on the dataset page: https://huggingface.co/datasets/Quran-Lab/QuranTTS.

sourceHugging Faceotherupdated 4h agoView on Hugging Face
3likes4.7kdownloads
Dataset Card

<p align="center"> <img src="banner.png" alt="QuranTTS" width="100%"> </p>

QuranTTS v4

An ear-verified Quranic recitation corpus for TTS and speech restoration.

Built in-house for the lab's own training runs. We have since moved on to a larger corpus and a newer pipeline, so this one is published rather than shelved. What you get is the corpus exactly as it stood when we stopped using it: complete, documented, and unmaintained.

Non-commercial, strictly. Neither this corpus nor any model trained on it may be used for any commercial purpose, and it is not licensed to for-profit organisations at all. That restriction follows the data: a model trained here, the audio it generates, and any later model trained on that audio are all covered. See License.

v4 supersedes the earlier v1_chunks / v2_clean / v2_raw configurations. It is a full re-cut of the corpus at 24-bit / 48 kHz, with ayah boundaries taken from forced alignment rather than fixed padding, which fixes the truncated ghunnah endings present in earlier releases.

Clips64,721
Duration301.4 h
Reciters16
Riwaya / styleHafs, murattal
Coverage112 surahs, 6,120 unique ayat
Masters48 kHz, 24-bit FLAC (data/)
Training copies24 kHz mono FLAC (v3_24k/)
Mean clip16.8 s

Layout

metadata.jsonl        one row per clip (see fields below)
data/<reciter>/*.flac 48 kHz 24-bit masters
v3_24k/<reciter>/*.flac  24 kHz mono training copies (same filenames)
python
from huggingface_hub import snapshot_download

# metadata only
from datasets import load_dataset
meta = load_dataset("Quran-Lab/QuranTTS", split="train")

# full corpus (masters + 24 kHz copies), ~150 GB
snapshot_download("Quran-Lab/QuranTTS", repo_type="dataset", local_dir="QuranTTS")

# just the 24 kHz training copies, ~56 GB
snapshot_download("Quran-Lab/QuranTTS", repo_type="dataset",
                  allow_patterns=["v3_24k/**", "metadata.jsonl"], local_dir="QuranTTS")

Fields

fieldmeaning
file_namepath to the 48 kHz master, repo-relative
source_id, reciter, riwaya, styleprovenance of the recitation
surah, ayahcanonical ayah reference
text_uthmani, text_imlaeiayah text in both orthographies
phoneme_tokenstajweed phoneme sequence (see below)
n_tokenslength of phoneme_tokens
duration_s, sample_rate, bit_depthaudio properties
src_part, src_start_s, src_end_sexact span in the source recitation
boundaryhow the clip end was determined (see below)
align_score, recut_matchalignment confidence, re-cut correlation

Tajweed phonemes

phoneme_tokens uses a tajweed-aware inventory in which elongation length is part of the token: a two-harakat madd is ا:2 and a six-harakat madd is ا:6, qalqalah is marked (بڇ), and shadda/tanwin are carried on the token. A model trained on these tokens learns tajweed duration categorically from the text, without a separate duration model.

Boundaries

Clip ends come from the aligner, not fixed padding:

kindnmeaning
next_onset60,928ends at the onset of the following ayah
pulled_back1,244next onset preceded the nominal end; pulled back
pause2,280span-final; ends in a verified (quiet and unvoiced) pause
cap269hit the maximum extension

This is what preserves ghunnah and madd that run to the very end of an ayah.

Cleaning, and what the audio actually is

This is not raw audio. Every clip has been through an internal pipeline in which several machine-learning models predict and remove what does not belong: hum, background noise, room reverberation and non-speech material. The models are predictive, not generative. They estimate what to take out, they do not synthesise speech. The words, the voice and the timing are the reciter's.

What changed is everything around the voice. Noise floor, room character, microphone signature and the spectral balance at the edges of the band are products of the cleaning rather than of the recording session. In practice:

  • Do not use it as an acoustic reference. Anything measuring noise floor, reverberation, channel or bandwidth measures our pipeline, not the original tape.
  • Do not chain it into another restoration system and report the result as restoration of the source.
  • Do not use it for forensic or authenticity work, or cite it as evidence of the original recording conditions.
  • For TTS and ASR training, which is what it was built for, this is the point. The cleaning is why the corpus is consistent across 16 reciters and usable at 48 kHz.

The chain: sources were ear-verified, then hum removal, dialogue isolation, dereverberation, denoise, 80 Hz high-pass, 48 kHz, and a peak at -1 dBFS. Every source was gated on a listening check, and reciters that failed were dropped rather than repaired.

Known issues (qc_flags.jsonl)

Each clip's tajweed tokens imply an expected length, so duration / expected gives a per-clip speaking rate. Clips whose rate is >=2x (or <=0.5x) their own reciter's median disagree with their text, they contain extra audio (an isti'adha before the basmala, a trailing ayah, a long silence) or are clipped.

244 clips (0.38%) are flagged this way and listed in qc_flags.jsonl (file_name, rate_ratio, issue). First ayat are affected ~7x more often (2.2% of ayah==1 vs 0.3% of the rest), which is the isti'adha signature. Total excess audio is ~0.7 h. To train on the clean 99.6%:

python
import json
flag = {json.loads(l)["file_name"] for l in open("qc_flags.jsonl", encoding="utf-8")}
rows = [json.loads(l) for l in open("metadata.jsonl", encoding="utf-8")
        if json.loads(l)["file_name"] not in flag]

Caveats

  • Clip durations run long (mean 16.8 s, max 229.8 s). Models with a fixed input ceiling, F5/MAGIC-style TTS caps at 15 s, will need to filter or sub-segment; roughly 43 % of clips exceed 15 s.
  • phoneme_tokens are canonical prescriptions derived from the text, not measurements of the audio. Free-choice madd (munfasil, ʿāriḍ) has no single correct value, so token length and realized duration can legitimately differ.
  • Hafs murattal only.

License

Quran-Lab No-Profit License 2.0, non-commercial (see LICENSE).

  • No commercial use of any kind, including internal use that supports a commercial product or service.
  • No use by for-profit organisations at all.
  • Training is use, and it follows the data. Any model trained, fine-tuned, distilled, evaluated or benchmarked on this corpus is a derivative under the same terms. So is any audio that model generates, any corpus built from that audio, and any further model trained on that corpus. It does not matter that the corpus is not redistributed, that the weights are never published, that the model is given away, or that the commercial system is a later model trained on synthetic audio produced by the first.
  • Never sold, never behind a payment. Derivatives carry this same licence and may not be relicensed to weaker terms.

Open to individuals acting privately, charities and non-profits, educational and research institutions, religious institutions, public archives, libraries, museums and heritage bodies. Quran-Lab can grant written exceptions; nothing else counts as permission.

Earlier copies were distributed under NPL 1.1 and 1.2, which prohibited charging for the corpus but did not prohibit commercial use. Copies obtained under those versions stay under them; every copy from now on is under 2.0. Note that even the earlier versions made any model trained on this corpus a derivative bound by the same terms.

The metadata identifier is quranlab-noncommercial-2.0, which names the condition that matters.

The recitations are of the Qur'an. Please handle the audio and text with the respect the source warrants.

Quran-Lab/QuranTTS · CoolFace