Hindi-English code-switched TTS
Fine-tuned AI4Bharat's IndicF5 on OpenSLR-104 so it can speak sentences that switch between Hindi and English. Public weights and a demo Space.
AI developer
I like building cool stuff.
1% better every day.
Things I've built outside work. Click a project to see the full story.
One recording in, finished demo out.
Upload a raw screen recording. Framewise watches it, decides what to cut and where to zoom, writes the narration, casts a voice and renders a finished demo video in 11 languages.
Shipping a product demo takes a chain of people. Someone writes the script, an editor cuts the dead air and adds zooms, someone records the voiceover, and a localization vendor repeats it all for every language. That's days of work, per video, per language.
Each word highlights as it's spoken.
Eases in on the exact UI element in use.
MusicGen bed that ducks under the voice.
Eight agents orchestrated with LangGraph, sharing one state:
The render engine then applies cuts, speed ramps, zooms, click effects, narration, music and captions, and renders twice, once per voice engine (ElevenLabs and Sarvam), so you pick the better take.
A single Gemini request over a long video only described its first minute. It returns a fixed budget of about 20 to 25 events regardless of length, and still reports success. Overlapping 60s windows give each stretch its own budget: 64 events across 229 seconds, with the largest gap at 15s.
English, Tamil, Hindi, Telugu, Bengali, Kannada, Malayalam, Marathi, Gujarati, Punjabi and Odia. Indian languages use Sarvam's native TTS rather than a Western model approximating them.
Gemini, ElevenLabs, Sarvam Bulbul v3, MusicGen
FFmpeg, libass, libx264, MoviePy, pydub
LangGraph, FastAPI, Pydantic, SQLite, WebSockets
React 18, TypeScript, Vite
The script planner sometimes under-writes long videos, leaving a quiet tail, and Sarvam renders don't yet get word-level captions. Both are on the list, alongside the research paper.
Because nobody says कार्यालय when they mean office.
Text-to-speech for Indian languages that pronounces the English words people actually mix in. A fine-tune of AI4Bharat's IndicF5 on real Hindi-English speech.
मैं आज office जा रहा हूँ, morning में एक important meeting है और उसके बाद team के साथ new project discuss करना है।
Indians don't speak pure Hindi or pure English. We say office, meeting and project in the middle of Hindi sentences. IndicF5 reads those English words with Indic phonetics and turns them into gibberish: office came out as अफे, important meeting as टहौर का निये.
Record about 10 seconds of your voice, and the model speaks any Hinglish sentence in that voice. Here it is cloning mine.
Also ships with 10 built-in voices: Hinglish, Tamil-Hinglish, Bengali, Gujarati, Kannada, Malayalam, Marathi, Odia, Punjabi and Telugu.
Adapter-style QLoRA training on a frozen 0.3B IndicF5 backbone, using real Hindi-English speech from OpenSLR-104, sized to fit a single Kaggle session.
Trained on Hindi-English only, yet English pronunciation improves in 8 languages it never saw. Same sentence: "I'm going to office today, there's an important meeting in the morning."
நான் இன்னைக்கு நாப் ஹேவ் போறேன் மூனேல ஒரு எந்தாண்ட நேயை இருக்கு
நான் இன்னைக்கு அவ்வேச் செல்கிறேன் மார்ணிங்கல ஒரு இம்போர்ட்டன்ட் மீட்டி இருக்கிறது
నేను ఇరోజు నాఫె కి వెళ్లుతున్నాను ఉన్నే లో ఒక ఏహటోన ఈ ఉంది
నేను ఇరోజు ఓఫేస్ కి వేలుతున్నాను మోనింగ్ లో ఒక ఇంపోటంట్ మేటింగ్ ఉంది
ನಾನು ಇವತ್ತು ನಭಾಯಗೆ ಹೋಗುತ್ತಿದ್ದೇನೆ ಮೋಣೆನಲ್ಲಿ ಒಂದು ಹೋಣಿ ಇಯಿ ಇದೆ
ನಾನು ಇವತ್ ಓಫಿಸ್ಗೆ ಹೋಗುತ್ತಿದ್ದೇನೆ ಮೋರ್ಣಿಂಗ್ ನಲ್ಲಿ ಒಂದು ಇಂಪಾಟಂಟ್ ಮಿಟಿಂಗ್ ಇದೆ
मी आज ओफेल आजातोई ओणे मधे एक अहोन इई आहे
मी आज ओफिसला जातोई मौर्णिंग मधेक इंपोर्टेंट मीटिंग आहे
હું આજે અફે જઈ રહ્યો છું હોણે માં એક હોર્ચણ એહી છે
હું આજે ઓફેશ જાઈ રહેઓ છું મોર્નિંગમાં એક ઇંપોર્ટન્ટ મેટિંગ છે
আমি আজাফে জাছি অনি একটা রিফান্ধ হো নেই আছে
আমি আজ ওফিস জাছি মোনিঙে এ একটা ইম্পর
यान इन्न हफले की पोगुनु होरुनेल ओरु टेन्हान मेई उन्ड
ज्यान इन्नो ओफेस लेक् पोगुनु मौर्णिंग ओरु इंपोर्टेंट मीटिंग उन्डो
मੈ ਆਜ ਅਫਜਾਰੇ ਹਾਂ ਹੋਣੇ ਵੀਚ ਇਕ ਥੋਰਚਾ ਨੀਹੀ ਹੈ
मੈ ਆਜ ਆਫੇਸ ਜਾਰੇ ਆਹਾਂ ਮੋਰਣੀਂ ਵੀਚ ਇਕ ਇਮਪੋਟਨਟ ਮੀਟੀਂ ਹੈ
And nothing was forgotten: pure Tamil output is character-for-character identical to the base model, and Telugu and Bengali differ by a single character.
from transformers import AutoModel
import soundfile as sf
model = AutoModel.from_pretrained(
"Tharshan/indicf5_hindi-english_code_switch", trust_remote_code=True)
ref, ref_text = model.voice("ritu_hinglish")
audio, sr = model.generate(
"मैं आज office जा रहा हूँ, morning में एक important meeting है।",
ref_audio=ref, ref_text=ref_text)
sf.write("out.wav", audio, sr)
Self-contained: weights, vocabulary and 10 reference voices ship in the repo. Clone any voice from a short clip and its transcript.
Pure English is better than base but still drops words on long input, generation handles one or two sentences at a time, and timbre is slightly duller because the training audio came from an ASR corpus. Next up is Tamil-English, trained on natural code-switched speech.
From a topic or a DOI to a podcast you can listen to.
Finding, reading and summarising research papers by hand takes hours, and there's nothing to listen to on the go. I wanted research to be accessible to students and researchers short on time.
A multi-agent system that fetches papers, summarises them, groups them by topic, writes a synthesis and narrates it as podcast-style audio with citations. It accepts a topic, a DOI or a PDF.
Five agents run in sequence, each handing its output to the next:
Llama 3.3 70B · Sentence Transformers · pdfplumber · gTTS · FastAPI · Streamlit
A fine-tuned banking chatbot.
General-purpose LLMs give vague, generic answers to everyday banking questions. Customers need clear, specific replies, however they phrase the question.
A banking chatbot built by fine-tuning Llama 2-7B chat on banking queries, so it answers in a focused, structured way. The model and dataset are published on Hugging Face.
Llama 2 · QLoRA · PEFT · bitsandbytes · TRL · Hugging Face
Tharshananth N. AI developer.
I build cool things and chase interesting use cases. One year of shipping production-grade AI at BrainSight AI, and my recent studies and work have taken me deep into voice AI and agents.
ProblemClinicians in hospitals struggled to manage and follow up on patient data and billing. Whenever something failed, they had to chase our support team for answers.
SolutionA chat agent that tells clinicians the live status of their patient data. If a step fails, it explains why, and it helps our team manage all patient data from one place.
How it worksA ReAct-based agentic flow: reason, act, check, repeat until the answer is right. Four agents work together:
ProblemB0 field inhomogeneities distort dMRI scans used for tractography and ML diagnosis.
SolutionAn SDC pipeline with SDCFlows, Nipype and Synb0-DisCo v1 (FSL TOPUP + FreeSurfer) that corrects the distortion.
Built a RAG-based clinical support chatbot and automated the billing workflow.
ProblemBilling teams manually cross-checked every patient bill and MR form, emailed an acknowledgment for each, and built a consolidated invoice per tenant every month.
SolutionAutomated all three steps: TrOCR-based extraction to verify bills against processed data, per-bill acknowledgment emails, and month-end consolidated invoices with bill proofs.
Fine-tuned AI4Bharat's IndicF5 on OpenSLR-104 so it can speak sentences that switch between Hindi and English. Public weights and a demo Space.
An agentic multimodal pipeline that turns a raw screen recording into a narrated instructional video.
Testing how far a Hindi-English fine-tune transfers to Tamil-English, where almost no transcribed code-switched data exists.
Business entity resolution: deciding whether two noisy records describe the same company. Add your approach and rank here.