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.
- ب 160 ms 0.998
- i 200 ms 0.999
- س 320 ms 1.000
- م 440 ms 1.000
- i 520 ms 0.999
- ل 800 ms 0.999
- aa 880 ms 0.997
- ه 1160 ms 0.999
- i 1240 ms 0.999
- ر 1560 ms 1.000
- a 1640 ms 1.000
- ح 1760 ms 1.000
- م 2000 ms 1.000
- aa 2080 ms 1.000
- ن 2360 ms 1.000
- i 2400 ms 1.000
- ر 2680 ms 1.000
- a 2760 ms 1.000
- ح 2960 ms 1.000
- ii 3040 ms 1.000
- م 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
} 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 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 Copy one prompt Paste it into your coding assistant, in your project. It installs the SDK and wires your key.
- 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 licenceWhat 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 workFrom 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