[{"data":1,"prerenderedAt":128},["ShallowReactive",2],{"project:ai-narration":3,"project-index":57},{"id":4,"title":5,"aTitle":6,"body":7,"categories":32,"description":34,"extension":35,"image":36,"images":37,"link":36,"meta":38,"navigation":39,"order":40,"path":41,"role":42,"seo":44,"slug":45,"stem":46,"summary":34,"tags":47,"team":55,"thumb":36,"__hash__":56},"projects\u002Fprojects\u002F1022_ai_narration.md","AI narration platform - Imraan","AI narration and text-to-speech platform",{"type":8,"value":9,"toc":28},"minimark",[10,19,22,25],[11,12,13,14,18],"p",{},"A narration platform that runs the model locally instead of calling a hosted speech API. The front end is Next.js and TypeScript; the backend is Python with SQLite, wrapping ",[15,16,17],"strong",{},"Qwen3-TTS 1.7B"," running on the GPU through PyTorch and CUDA.",[11,20,21],{},"The application side covers what you need for long-form narration rather than one-off clips: generating speech from text, keeping a history of what has been produced, custom and cloned voices, and stitching output into audiobook-length audio. Long text is the interesting constraint — a demo that reads one sentence tells you nothing about what happens on a chapter.",[11,23,24],{},"Most of the real work was inference rather than interface. Running a 1.7B model on a single RTX 3060 Ti means paying attention to how much of it fits in VRAM at once, batching sensibly, and experimenting with Flash Attention to see what it actually buys at this size. It is a good exercise in the difference between calling an AI API and being responsible for the thing generating the audio.",[11,26,27],{},"This project also fed back into work: the same interest in offline speech synthesis is what led to the token announcement work in the hospital queue system, where announcements need to be generated on-device, sound consistent, and never depend on an internet connection.",{"title":29,"searchDepth":30,"depth":30,"links":31},"",2,[],[33],"AI application","Local GPU text-to-speech and audiobook narration built on Qwen3-TTS","md",null,[],{},true,1022,"\u002Fprojects\u002F1022_ai_narration",[43],"Fullstack developer",{"title":5,"description":34},"ai-narration","projects\u002F1022_ai_narration",[48,49,50,51,52,53,54],"Next.js","TypeScript","Python","PyTorch","CUDA","Qwen3-TTS","SQLite",[],"H9Glglii5kLc_96s4d9BoFUwx-W72wJeHlbKjOBHE3c",[58,61,64,67,68,71,74,77,80,83,86,89,92,95,98,101,104,107,110,113,116,119,122,125],{"slug":59,"aTitle":60},"wc2026-predictions","ADK Synergy World Cup 2026 predictions",{"slug":62,"aTitle":63},"pabx-cdr-analysis","PABX call record analysis",{"slug":65,"aTitle":66},"postgres-ha","PostgreSQL high availability platform",{"slug":45,"aTitle":6},{"slug":69,"aTitle":70},"cloud-player","Cloud Player",{"slug":72,"aTitle":73},"brainspine-app","Maldives BrainSpine conference app",{"slug":75,"aTitle":76},"adk-token-display","ADK Hospital doctors room token display",{"slug":78,"aTitle":79},"adk-signage","ADK Hospital signage TV app",{"slug":81,"aTitle":82},"adk-qms","ADK Hospital queue management system",{"slug":84,"aTitle":85},"adk-hbot","ADK Hospital Hyperbaric Oxygen Therapy",{"slug":87,"aTitle":88},"clinical-incident-report-portal","ADK Hospital clinical incidents portal",{"slug":90,"aTitle":91},"porter-app","ADK Hospital porter app",{"slug":93,"aTitle":94},"majeedi-run","Majeedi Run portal",{"slug":96,"aTitle":97},"cmca-website","China Maldivian Cultural Association website",{"slug":99,"aTitle":100},"brainspine23","Brain & Spine conference 2023 website",{"slug":102,"aTitle":103},"sih-e-library","Shafi’a Institute of Health e-library",{"slug":105,"aTitle":106},"adk-lucky-draw","ADK Hospital lucky draw app",{"slug":108,"aTitle":109},"acc-cms","Anti-Corruption Commission Case Management System",{"slug":111,"aTitle":112},"brainspine22","Brain & Spine conference 2022 website",{"slug":114,"aTitle":115},"icom-tours","iCom Tours website and portal",{"slug":117,"aTitle":118},"dhuvaahithun-app","Dhuvaahithun app",{"slug":120,"aTitle":121},"jsc-cms","Judicial Service Commission Case Management System",{"slug":123,"aTitle":124},"motca","Ministry of Transport and Civil Aviation website",{"slug":126,"aTitle":127},"aonews","AO News",1786359403306]