CoolFace
Datasetpublic

AhmedTamertechno1/Phone_Timings_Database

πŸ“– TajweedAI: Quranic Phoneme Timing Benchmark (Phases 1, 2 & 3) πŸ“Œ Project Overview TajweedAI evaluates Quranic recitation accuracy by analyzing both pronunciation (phoneme classification) and timing (rule duration evaluation). This benchmark provides empirical, tempo-normalized duration boundaries for all 70 Quranic phonemes derived from forced alignments (MFA trained on Quranic audio) across 7 master reference reciters: Sheikh Mahmoud Khalil Al-Husary (Gold… See the full description on the dataset page: https://huggingface.co/datasets/AhmedTamertechno1/Phone_Timings_Database.

sourceHugging Facecc-by-4.0updated 15d agoView on Hugging Face
0likes51downloads
Dataset Card

πŸ“– TajweedAI: Quranic Phoneme Timing Benchmark (Phases 1, 2 & 3)

πŸ“Œ Project Overview

TajweedAI evaluates Quranic recitation accuracy by analyzing both pronunciation (phoneme classification) and timing (rule duration evaluation).

This benchmark provides empirical, tempo-normalized duration boundaries for all 70 Quranic phonemes derived from forced alignments (MFA trained on Quranic audio) across 7 master reference reciters:

  1. 1.Sheikh Mahmoud Khalil Al-Husary (Gold Standard Reference)
  2. 2.Dr. Ayman Sowaid (Pedagogical Reference)
  3. 3.Sheikh Abdullah Basfar
  4. 4.Sheikh Abu Bakr Ash-Shaatree
  5. 5.Sheikh Mishary Rashid Alafasy
  6. 6.Sheikh Saad Al-Ghamadi
  7. 7.Sheikh Maher Al-Muaiqly

πŸ› οΈ Methodology & Phases

Phase 1: Log-IQR Outlier Filtering

  • β€”Quranic phoneme durations are right-skewed.
  • β€”Transformed durations into log space: $y = \ln(t)$.
  • β€”Applied Log-IQR filtering: $[Q1 - 1.5 \times \text{IQR}, Q3 + 1.5 \times \text{IQR}]$ to eliminate frame glitches while preserving natural linguistic variance.

Phase 2: Tempo Normalization Against Master Reference

  • β€”Standardized varying recitation speeds against Sheikh Al-Husary (and Dr. Ayman Sowaid for rare geminated tokens): $$S_{R,p} = \frac{\text{Median}(\text{Reference}, p)}{\text{Median}(R, p)}$$
  • β€”Scaled all tokens: $t{\text{norm}} = t{\text{filtered}} \times S_{R,p}$.

Phase 3: Unified Token Pooling & Boundary Extraction (Option A)

  • β€”Pooled 289,591 tempo-normalized tokens across all 7 Imams into unified distributions for all 70 phonemes.
  • β€”Lower Bound Cutoff ($Min_{\text{valid}}$): $P_1$ (1st percentile) to remove 10–20 ms alignment boundary noise.
  • β€”Target Center: $P_{50}$ (Median, aligned to reference).
  • β€”Core Ideal Tier: $[Q1, Q3]$ (25th to 75th percentiles).
  • β€”Custom Madd Vowel Rules (Option A):
  • β€”*`a:` (Alif Madd):* Full empirical maximum preserved ($Max = 2,944.8\text{ ms} = 2.945\text{ s}$).
  • β€”*`i:` (Yaa Madd):* Highest integer percentile $< 4.0\text{ s}$ ($P_{90} = 3,726.6\text{ ms} = 3.727\text{ s}$).
  • β€”*`u:` (Waaw Madd):* Highest integer percentile $< 4.0\text{ s}$ ($P_{97} = 3,828.0\text{ ms} = 3.828\text{ s}$).
  • β€”Other 67 Phonemes: Standard $P_{99}$ upper bound.

πŸ“Š Tajweed Grading Tier Definitions

TierRangeTajweed Meaning
🟒 Green Tier (Master / Ideal Core)$[Q1, Q3]$Ideal central target timing window
🟑 Yellow Tier (Permissible Tolerance)$[Min{\text{valid}}, Max{\text{valid}}]$Valid allowable recitation timing
πŸ”΄ Red Tier (Tajweed Violation)$< Min{\text{valid}}$ or $> Max{\text{valid}}$Under-elongated (dropped letter) or excessive elongation (TamαΉ­Δ«αΉ­)

πŸ“‚ Repository Contents

  • β€”phase3_unified_phoneme_timings_optionA.csv: Master final lookup table for all 70 phonemes.
  • β€”all_reciters_phase3_pooled_tokens.csv: Complete pooled token dataset ($N = 289,591$).
  • β€”phase2_scaling_factors.csv: Reciter scaling factor matrix.
  • β€”timing_lookuptable.md: Human-readable Markdown reference table.
  • β€”Phase3_Unified_Plots/: 70 unified distribution histograms with annotated threshold lines.
  • β€”Phase3_Boxplots_Vowels/: Per-Imam and pooled boxplots for Madds (a:, i:, u:).
  • β€”Phase2_Comparative_Plots/: 70 multi-reciter comparative before/after normalization plots.
  • β€”Scripts/: Reproducible Python scripts (run_phase1.py, run_phase2.py, run_phase3.py).