Paste an English lecture. Get it back in Arabic: a synced voice-over, subtitles, a study pack, and a tutor that knows the lecture.
An Arabic-speaking student has two options: read subtitles while trying to follow the content, or wait for a human dubbing studio that will never get to that video.
Dubljly answers one question for that student: can I learn from this lecture in my own language, without waiting? It started as my graduation project and I rebuilt it from scratch for the Amman AI Hackathon.
A YouTube link or an upload goes into a seven-step pipeline. Here is what the student sees.
yt-dlp fetches the video, Whisper transcribes it, and the transcript is cut into timed segments. Long work never runs inside a request: one worker thread pulls jobs from a queue table, and the student watches a six-stage progress bar.
The learning pack (summary, key terms and their Arabic meanings) is built before the dub, so it appears in about 30 to 40 seconds. The full dub follows in about 2 to 3 minutes. Both are spec targets, not measured figures.
Each segment is translated and voiced on its own, then placed at its original start time, never joined end to end. A fit ladder shortens or speeds up any clip that overruns its slot. The voice-over is mixed with the original audio and exported as MP4, with Arabic and English subtitles.
The student can ask about what they just watched, in Arabic. The whole app is Arabic and right-to-left by default, with an English toggle, real RTL layout rules and fonts chosen for Arabic.
One FastAPI service serves both the API and the React app. No Redis, no Celery, no Docker. Code simplified from the real pipeline.
So the whole product stays one deployable service. A single background worker pulls jobs from a queue table in Postgres, and no long job ever runs inside a request handler, so the API stays responsive while lectures process.
Arabic often runs longer than English. Joined end to end, every sentence pushes the voice further from the speaker. Placing each clip at its segment’s original start, and fitting any overrun, keeps the voice with the face.
Structured calls ask for JSON and validate it with Pydantic. Invalid output gets one retry with the validation error attached, then the router falls back to the next provider. The stack mixes Groq, Gemini and Cerebras for language and Azure or edge-tts for voice, all swappable without touching the pipeline.
The mockups are the spec. The React screens are rebuilt from them and checked against the design files with a hash check, and the frontend types mirror the documented API contract, enforced by guardrail scripts in CI.
The 30 to 40 second study pack and the 2 to 3 minute dub for a 10-minute lecture are spec targets, not measured figures. There are no user or revenue numbers yet, so none are claimed here.
Need something like this? I build these end to end, as a full-time engineer, on contract, or with SKAI Group.
Book a 30-min callNeed your content in Arabic, or an AI product built this carefully? One email is enough to start.