The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Created: 12-05-2026 · Last updated: 10-10-2026
Live app → · v1.5.5 · changelog
If the app doesn't reflect the latest version after an update, do a hard refresh to clear the cache: Edge, Firefox, Opera —
Ctrl+F5· Chrome —Ctrl+Shift+R· Safari (Mac) —Cmd+Shift+RorCmd+Option+R
Sanskrit Karaoke turns a Sanskrit śloka into an interactive wave diagram that shows the metrical weight of each syllable (guru / laghu), lets you mark audio timing, and exports karaoke videos or high-resolution images.
node tools/export_captions.mjs <verse.json> [--timing timing.json] writes .srt/.vtt from syllable timing without rendering videoPaste s1 into the first field, s2 into the second. Encoding is auto-detected (Devanagari, IAST, SLP1, etc.).
Anuṣṭubh (8 syllables × 4 pādas) — Bhagavadgītā 2.47
| Field | Text |
|---|---|
| s1 | कर्मण्येवाधिकारस्ते मा फलेषु कदाचन |
| s2 | मा कर्मफलहेतुर्भूर्मा ते सङ्गोऽस्त्वकर्मणि |
Upajāti / Triṣṭubh (11 syllables × 4 pādas) — Kumārasambhava 1.1 (Kālidāsa)
| Field | Text |
|---|---|
| s1 | अस्त्युत्तरस्यां दिशि देवतात्मा हिमालयो नाम नगाधिराजः |
| s2 | पूर्वापरौ तोयनिधी वगाह्य स्थितः पृथिव्या इव मानदण्डः |
Mandākrāntā (17 syllables × 4 pādas) — Meghadūta 1.1 (Kālidāsa)
Each printed line of Meghadūta is one pāda. Concatenate lines 1+2 into s1 and lines 3+4 into s2.
| Field | Text |
|---|---|
| s1 | कश्चित्कान्ताविरहगुरुणा स्वाधिकारात्प्रमत्तः शापेनास्तङ्गमितमहिमा वर्षभोग्येण भर्तुः |
| s2 | यक्षश्चक्रे जनकतनयास्नानपुण्योदकेषु स्निग्धच्छायातरुषु वसतिं रामगिर्याश्रमेषु |
| Key | Action |
|---|---|
← / → | Select previous / next syllable |
Ctrl+← / Ctrl+→ | Shift syllable timing −0.01 s / +0.01 s |
Home | Align syllable to pada start |
Enter | Play current syllable |
Space | Play current syllable and advance |
Ctrl+Space | Play to end of śloka |
Ctrl+Enter | Play to end of pada |
cd SanskritKaraoke
python -m http.server 8000
# open http://localhost:8000
No build step or package manager required.
Student page generation:
python tools/make_student.py
python tools/make_student.py --check
tools/templates/student.html is the source of truth for the deployed student.html.
Syntax check:
node --check src/scripts/app.js
| File | Contents |
|---|---|
index.html | Entire UI — main view + all modals (settings, help, timing editor, Drive picker) |
src/scripts/app.js | Main application logic (~320 KB ES module) — imports the reusable rendering core |
src/core/*.js | Extracted rendering core (translit, layout, svg, compose, karaoke-frame, timing, feed) shared by the app and the headless renderer — see ADR-0001 |
docs/reference/apte_prosody.html | Apte prosody reference database |
ARCHITECTURE.md | Current + target architecture, phase by phase |
The project includes a server-side Teaching Pipeline built on LangGraph 1.0 and Pydantic, designed to automate verse curation and student analysis.
This is the beginning of the README. Read the rest at the original. Read the full README ↗