Dataset
Qur'anic Universal Audio (QUA) is a project that unifies recitations on the internet and generates timing data using forced alignment — community-verified results and constantly expanding dataset.
This dataset pairs ayah by ayah audio with word-level timestamps, DigitalKhatt letter-animation timestamps, and waqf-aware segment data. Repeated words are preserved in text_uthmani and word_timestamps, so the row reflects what the reciter actually recited rather than a plain copy of canonical ayah text.
Tip: Click the three dots (···) at the top right and toggle Notifications to get updates whenever recitations are added or refreshed.
Mushaf configs contain one row per ayah. Each row includes embedded ayah audio, recited Uthmani text, word timestamps, letter timestamps, waqf-aware segments, and source-audio mappings.
The mushafs subset is the dataset catalog index. It has one row per published mushaf, joined with reciter names, riwayah/style/channel labels, audio metadata, and coverage.
Each remaining subset is one published mushaf — a config named after the mushaf slug, with a single train split. Riwayah, style, and channel for each mushaf live in the mushafs catalog.
| Column | Type | Notes |
|---|---|---|
audio | Audio | Ayah MP3 clip. |
surah | int32 | Surah number, 1-114. |
ayah | int32 | Ayah number within the surah. |
duration_ms | int32 | Clip duration. |
text_uthmani | string | Exact recited DigitalKhatt V2 text. |
segments | [[int,int,int,int]] | Waqf/pause-aware regions: [word_from, word_to, start_ms, end_ms]. |
word_timestamps | [[int,int,int]] | [word_idx, start_ms, end_ms]; word indices are 1-based. |
source_url | string | Original chapter or ayah audio URL. |
source_offset_ms | int32 | Clip start inside source_url. |
All row timestamps are relative to the ayah clip. Use source_offset_ms + timestamp_ms when mapping a row back to its source audio.
One row per published mushaf.
| Column | Type | Notes |
|---|---|---|
slug | string | Stable mushaf identifier (also the subset/config name). |
reciter_id | string | Stable reciter identifier (shared across that reciter's mushafs). |
name_en, name_ar | string | Reciter display name (English / Arabic). |
country | string | Reciter country, ISO 3166-1 alpha-2 (e.g. SA). |
riwayah | string | Riwayah name (e.g. Hafs). |
style | string | Recitation style (e.g. Murattal, Mujawwad). |
recording_context | string | Recitation context (e.g. Studio, Taraweeh). |
recording_year | int32 | Year recorded, when known. |
channel | string | Distribution channel name. |
audio_category | string | How source audio is segmented: by_surah | by_ayah. |
chapter_count | int32 | Number of chapters in the mushaf. |
codec | string | Audio codec. |
container | string | File container. |
sample_rate_hz | int32 | Sample rate. |
channels | int32 | 1 = mono, 2 = stereo. |
bitrate_mode | string | cbr | vbr | mixed | . = chapters differ. |
from datasets import load_dataset
ds = load_dataset(
"QUD-Technologies/quranic-universal-ayahs",
"khalifa_al_tunaiji_tarteel",
split="train",
)
row = ds[0]
print(row["surah"], row["ayah"])
print(row["word_timestamps"])
print(row["segments"])
catalog = load_dataset(
"QUD-Technologies/quranic-universal-ayahs",
"mushafs",
split="all",
)
print(catalog[0]["name_en"], catalog[0]["riwayah"])
CC BY 4.0.
unknownmixedbitrate_kbps_nominal | int32 | Nominal bitrate; null when bitrate_mode is mixed. |
total_duration_hours | float32 | Total mushaf audio duration, in hours (1 dp). |
published_at | string | When the mushaf first entered the dataset, ISO-8601. |
updated_at | string | When the mushaf was last published/refreshed, ISO-8601. |