<?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: Talha Hussain</title>
    <description>The latest articles on DEV Community by Talha Hussain (@talha_hussain).</description>
    <link>https://dev.to/talha_hussain</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%2F4084683%2F3fde880a-dd10-4ad5-897b-47776208e725.png</url>
      <title>DEV Community: Talha Hussain</title>
      <link>https://dev.to/talha_hussain</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/talha_hussain"/>
    <language>en</language>
    <item>
      <title>Why WhatsApp voice notes break general-purpose transcription</title>
      <dc:creator>Talha Hussain</dc:creator>
      <pubDate>Wed, 19 Aug 2026 09:08:27 +0000</pubDate>
      <link>https://dev.to/talha_hussain/why-whatsapp-voice-notes-break-general-purpose-transcription-4nfp</link>
      <guid>https://dev.to/talha_hussain/why-whatsapp-voice-notes-break-general-purpose-transcription-4nfp</guid>
      <description>&lt;p&gt;Most speech-to-text is benchmarked on audio that looks nothing like a WhatsApp voice note.&lt;/p&gt;

&lt;p&gt;The standard evaluation sets are read speech, broadcast news, or recorded interviews: single speaker, decent microphone, one language, quiet room, speaker aware they are being recorded. A WhatsApp voice note is close to the opposite on every axis. I have spent a while building around this, and the gap turned out to be wider than I expected.&lt;/p&gt;

&lt;h2&gt;
  
  
  Acoustics
&lt;/h2&gt;

&lt;p&gt;Phone held at arm's length while walking, in a car, in a kitchen, on a street. Distance-to-mic varies wildly &lt;em&gt;within a single recording&lt;/em&gt;, which breaks a lot of assumptions about consistent gain.&lt;/p&gt;

&lt;p&gt;Then there is the codec. Voice notes are Opus at low bitrate — efficient, but it discards exactly the high-frequency detail that helps disambiguate fricatives. &lt;code&gt;/s/&lt;/code&gt; versus &lt;code&gt;/f/&lt;/code&gt; versus &lt;code&gt;/th/&lt;/code&gt; get genuinely harder, and those distinctions carry real meaning.&lt;/p&gt;

&lt;h2&gt;
  
  
  Register
&lt;/h2&gt;

&lt;p&gt;Conversational, not read. False starts, self-corrections, filler, trailing off mid-sentence, and long pauses that are &lt;em&gt;not&lt;/em&gt; sentence boundaries — someone thinking, or getting distracted.&lt;/p&gt;

&lt;p&gt;Punctuation inference is much harder here than on read speech. And punctuation is most of what makes a transcript skimmable rather than a wall of text. A perfectly accurate word sequence with no paragraph breaks is close to useless if the point was to let someone read it faster than listening.&lt;/p&gt;

&lt;h2&gt;
  
  
  Language
&lt;/h2&gt;

&lt;p&gt;This is the one that surprised me most.&lt;/p&gt;

&lt;p&gt;Voice notes are heavily code-switched. People drop English technical terms into Urdu, Hindi, Arabic, Spanish sentences constantly — not as an edge case, as the default register for a huge number of speakers. If you force a single language selection up front, you mangle every mixed utterance.&lt;/p&gt;

&lt;p&gt;Auto-detection is not a convenience feature in this domain. It is a correctness requirement.&lt;/p&gt;

&lt;h2&gt;
  
  
  Length distribution
&lt;/h2&gt;

&lt;p&gt;Most notes are 5–45 seconds. Very little context to work with, and per-request overhead dominates if you architected for long files. Batching strategies that make sense for a 45-minute meeting recording are actively wrong here.&lt;/p&gt;

&lt;h2&gt;
  
  
  The UX constraint that outranks all of the above
&lt;/h2&gt;

&lt;p&gt;Even a perfect transcript is useless if getting it costs more effort than just listening.&lt;/p&gt;

&lt;p&gt;If the flow is &lt;em&gt;export → open another app → upload → wait → copy back&lt;/em&gt;, nobody does it twice. I watched this kill the idea in its first version. The transcript has to resolve inside the conversation: share the note, read the text over the chat, keep going.&lt;/p&gt;

&lt;p&gt;That single constraint drove more architectural decisions than the model choice did. It rules out anything with a meaningful cold start, anything requiring an account before first use, and anything that needs the user to pick settings before they get a result.&lt;/p&gt;




&lt;p&gt;I build &lt;a href="https://hearless.netlify.app" rel="noopener noreferrer"&gt;HearLess&lt;/a&gt; around this — Android, 50+ languages with auto-detect, transcript opens over the WhatsApp chat. It is on &lt;a href="https://play.google.com/store/apps/details?id=com.hearless.app" rel="noopener noreferrer"&gt;Google Play&lt;/a&gt; if you want to throw a genuinely awful voice note at it. I would honestly like to know what breaks it.&lt;/p&gt;

&lt;p&gt;Curious whether others working on conversational ASR have found approaches to code-switching that hold up in production. It is still the weakest part of what I have, and the literature is thinner than I hoped.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>android</category>
      <category>machinelearning</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
