TajweedFormer V4

A model that hears Quran recitation, inside your app.

It runs on the learner's device and returns what it heard: every sound with its timing and confidence, and outputs for lengthening, gemination, ghunna and qalqalah. Your app builds its own feedback on that. Free, for Android, iOS, macOS, the web, Windows and Linux.

Sign in with Hugging Face. Access takes about a minute.

One real take

The first ayah of Al-Fatiha, 5.12 seconds, a sample clip that ships with the model. Each mark is a sound the model heard, where it heard it.

  1. ب 160 ms 0.998
  2. i 200 ms 0.999
  3. س 320 ms 1.000
  4. م 440 ms 1.000
  5. i 520 ms 0.999
  6. ل 800 ms 0.999
  7. aa 880 ms 0.997
  8. ه 1160 ms 0.999
  9. i 1240 ms 0.999
  10. ر 1560 ms 1.000
  11. a 1640 ms 1.000
  12. ح 1760 ms 1.000
  13. م 2000 ms 1.000
  14. aa 2080 ms 1.000
  15. ن 2360 ms 1.000
  16. i 2400 ms 1.000
  17. ر 2680 ms 1.000
  18. a 2760 ms 1.000
  19. ح 2960 ms 1.000
  20. ii 3040 ms 1.000
  21. م 4520 ms 0.999

Sound, start, confidence · TajweedFormer V4 4.0.0, c16_l64

What the model returns

While the learner recites, a chunk arrives every 320 ms with everything heard so far. The SDK hands it to your code as it is. It does not judge the recitation.

Sounds, with time and confidence
Each token has its name, the time it starts, peaks and ends, and a confidence.
What can still change
A count of the tokens that are settled, so a live screen redraws only the end.
The tajweed outputs
Twelve outputs in all, every 20 or 40 ms. Among them: how long a sound is held, gemination, ghunna and qalqalah.
Thresholds, as data
The thresholds Quran Lab measured ship with the model as a read-only file. Quran Lab ships no scorer: the feedback is yours to build.
// chunk.decoded, on the last chunk
{
  "tokens": [
    { "id": 3, "name": "ب",
      "firstMs": 160, "peakMs": 160,
      "lastMs": 160,
      "confidence": 0.998 },
    { "id": 32, "name": "i",
      "firstMs": 200, "peakMs": 200,
      "lastMs": 240,
      "confidence": 0.999 },
    // 19 more
  ],
  "settled": 21,
  "isFinal": true
}
How to build feedback on it

Four SDKs, one shape

The same four calls on every platform: client, model, listen, read.

  • AndroidKotlin, Maven Central Quick start
    implementation("ai.quranlab:tajweedformer:3.1.5")
  • iOS and macOSSwift Package Manager Quick start
    .package(url: "https://github.com/Quran-Lab/tajweedformer-apple", from: "3.1.4")
  • Webnpm, WebAssembly Quick start
    npm install @quran-lab/tajweedformer@3.1.3
  • Windows and LinuxC, built from source Quick start
    git clone --recurse-submodules --branch 3.1.3 https://github.com/Quran-Lab/tajweedformer-c

How it works

  1. 1 Get access in a minute Sign in with Hugging Face, accept the licence and say what you are building. Most requests are accepted on the spot.
  2. 2 Copy one prompt Paste it into your coding assistant, in your project. It installs the SDK and wires your key.
  3. 3 Your app shows up on your Home On its first launch the app registers itself. From then on you see how it is used, as totals per day.

Free, forever

Quran Lab is a non-profit lab run as a waqf. The model and the SDKs cost nothing, and there is nothing to buy here. The licence (NPL-1.2) asks one thing in return: never sell the model, access to it, or a feature it powers. What you earn from your own teaching and work stays yours.

Read the licence

What the portal never shows

No audio, no recognised text, no device or user identifiers. Figures for any group under 10 installs stay hidden.

Read how analytics work

From the model card

Parameters
65M
A streaming model, with no language model anywhere
Error rate on unseen reciters
1.23%
PER on correct recitation by 16 reciters the model never saw, 1,780 clips
Response time
320 ms
The default chunk; 160 and 480 ms are there too
First download
57 MB
About, once per device