<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Tamajit-005</title>
    <description>The latest articles on DEV Community by Tamajit-005 (@tamajit005).</description>
    <link>https://dev.to/tamajit005</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4156677%2F9b0b6046-04d3-466b-beb2-626dccd46083.png</url>
      <title>DEV Community: Tamajit-005</title>
      <link>https://dev.to/tamajit005</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tamajit005"/>
    <language>en</language>
    <item>
      <title>Amar Voice — Giving My Friend Their Voice Back (EN / हिंदी / বাংলা)</title>
      <dc:creator>Tamajit-005</dc:creator>
      <pubDate>Sun, 04 Oct 2026 16:19:55 +0000</pubDate>
      <link>https://dev.to/tamajit005/amar-voice-giving-my-friend-their-voice-back-en-hindii-baanlaa-21f7</link>
      <guid>https://dev.to/tamajit005/amar-voice-giving-my-friend-their-voice-back-en-hindii-baanlaa-21f7</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01"&gt;Hacktoberfest Weekend Challenge: Build for a Friend&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Amar Voice — A Voice That Stays Theirs.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Built for a friend who has lost their voice, but still has old voice recordings.&lt;/p&gt;

&lt;p&gt;Amar Voice turns those recordings back into a voice they can use every day. Upload a few of their old voice notes → the app clones their voice → they tap a big button and the phone speaks &lt;strong&gt;as them&lt;/strong&gt; again, in English, हिंदी, or বাংলা. Anything beyond the daily phrases can be typed into the custom-message box (up to 1000 chars).&lt;/p&gt;

&lt;p&gt;Built for tired eyes and shaky hands: giant high-contrast cards, three language pills, one speaker menu, zero settings pages. It installs like an app (PWA), quick cards play instantly from cache, and family can add / rename / delete voice profiles right from the phone — no login, each device gets its own private space.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 6 quick cards (every tap speaks in their voice)
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tap the feeling&lt;/th&gt;
&lt;th&gt;English&lt;/th&gt;
&lt;th&gt;हिंदी&lt;/th&gt;
&lt;th&gt;বাংলা&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;💧 Water — pleading, thirsty&lt;/td&gt;
&lt;td&gt;I need some water, please...&lt;/td&gt;
&lt;td&gt;मुझे थोड़ा पानी चाहिए...&lt;/td&gt;
&lt;td&gt;আমার একটু জল দরকার, দয়া করে...&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;💊 Medicine — routine, calm&lt;/td&gt;
&lt;td&gt;Time for my medicine...&lt;/td&gt;
&lt;td&gt;मेरी दवाई का समय हो गया है...&lt;/td&gt;
&lt;td&gt;আমার ওষুধ খাওয়ার সময় হয়েছে...&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;📞 Call — insistent, needs someone&lt;/td&gt;
&lt;td&gt;Please call Aniket right now!&lt;/td&gt;
&lt;td&gt;कृपया अनिकेत को बुलाओ!&lt;/td&gt;
&lt;td&gt;দয়া করে এখনই অনিকেতকে ডাকো!&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;☕ Tea — comfort, warmth&lt;/td&gt;
&lt;td&gt;I would like some warm tea.&lt;/td&gt;
&lt;td&gt;मुझे थोड़ी गर्म चाय चाहिए।&lt;/td&gt;
&lt;td&gt;আমাকে একটু গরম চা দাও।&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;😊 I'm fine — happy, reassuring&lt;/td&gt;
&lt;td&gt;I am doing fine, do not worry.&lt;/td&gt;
&lt;td&gt;मैं बिल्कुल ठीक हूँ, चिंता मत करो।&lt;/td&gt;
&lt;td&gt;আমি ভালো আছি, চিন্তা কোরো না।&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🚨 Help — urgent, distressed&lt;/td&gt;
&lt;td&gt;I need help, please come here!&lt;/td&gt;
&lt;td&gt;मुझे मदद चाहिए, कृपया यहाँ आओ!&lt;/td&gt;
&lt;td&gt;আমার সাহায্য দরকার, দয়া করে এখানে এসো!&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The emojis aren't decoration — they &lt;em&gt;are&lt;/em&gt; the interface. 😊 means happy, 🚨 means urgent, 💧 means pleading. No reading needed: tap the feeling and the phone says the matching phrase in their own voice, with the feeling carried in the words themselves (&lt;code&gt;...&lt;/code&gt; vs &lt;code&gt;!&lt;/code&gt;) as rendered by the clone.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;Live app: &lt;a href="https://amar-voice.onrender.com" rel="noopener noreferrer"&gt;https://amar-voice.onrender.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Video demo: &lt;a href="https://youtu.be/DQC13FPReB4?si=tfCekrNp80R67fji" rel="noopener noreferrer"&gt;https://youtu.be/DQC13FPReB4?si=tfCekrNp80R67fji&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tip for judges: open the link on your phone → Add to Homescreen → tap 💧 water → switch हिंदी / বাংলা pills → try custom text → open Upload to clone a voice from old recordings (max 8 clips, 800 KB each).&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/Tamajit-005/Amar-voice" rel="noopener noreferrer"&gt;https://github.com/Tamajit-005/Amar-voice&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;backend/main.py&lt;/code&gt; — routes, upload caps, rate limits&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;backend/engine.py&lt;/code&gt; — voice-ID map, clone / rename / delete&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;backend/eleven.py&lt;/code&gt; — ElevenLabs client&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;frontend/index.html&lt;/code&gt; — PWA UI&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;frontend/sw.js&lt;/code&gt; — offline cache&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;render.yaml&lt;/code&gt; + &lt;code&gt;Dockerfile&lt;/code&gt; — deploy&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;FastAPI backend + single-file PWA frontend, deployed on Render free tier via Docker.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Voice: ElevenLabs v4 Instant Voice Cloning. Upload a few 10–25s clips from their old recordings → backend clones once, reuses that voice ID for all 3 languages. 18 presets pre-generated per speaker, cached on server + service worker for instant taps. Custom text synthesizes in a few seconds when warm (longer on a cold free-tier start), MP3 download capped at 350 KB.&lt;/li&gt;
&lt;li&gt;Privacy without login: random &lt;code&gt;amar_uid&lt;/code&gt; in &lt;code&gt;localStorage&lt;/code&gt;, clips + voice-ID map + presets namespaced per device. &lt;code&gt;default&lt;/code&gt; is shared, everything else is device-private.&lt;/li&gt;
&lt;li&gt;Guardrails: 8 clips / 800 KB per clip / 2-min caps, per-IP rate limits on paid endpoints, atomic cache writes, honest 404s (never serves another voice on failure).&lt;/li&gt;
&lt;li&gt;Open pieces: FastAPI, Pydantic, Uvicorn, pydub + ffmpeg, vanilla JS PWA with service worker, Docker — all open-source, and the repo is open for anyone to self-host with their own API key.&lt;/li&gt;
&lt;li&gt;Problems faced: local models sounded distant from the real voice → moved to cloud, kept offline cache for presets; built for one friend but shipped per-device spaces so other families can reuse it; Render free idle wipes server voices (phone keeps ID, sees only &lt;code&gt;default&lt;/code&gt;) — needs paid disk or external store.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;The parts that make this shippable and forkable are open: anyone can clone the repo, &lt;code&gt;cp .env.example .env&lt;/code&gt;, deploy the same Dockerfile to Render, and have it running for their own family in minutes — no app-store review, no proprietary client, no accounts to manage.&lt;/p&gt;

&lt;p&gt;That mattered practically: I swapped the entire voice backend (local → ElevenLabs) without touching the PWA, added per-device spaces with no auth service, and kept it runnable on a 512 MB free tier because ffmpeg/pydub/FastAPI are hackable. What I'd open next: a local-model fallback so custom speech works fully offline.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Best Use of Render&lt;/li&gt;
&lt;li&gt;Best Use of ElevenLabs&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
    </item>
  </channel>
</rss>
