<?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: James D. Bartlett III</title>
    <description>The latest articles on DEV Community by James D. Bartlett III (@jamesdbartlett3).</description>
    <link>https://dev.to/jamesdbartlett3</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%2F120436%2Fe3fd3177-3f6b-4fbf-90ed-54576d7c4a9d.jpeg</url>
      <title>DEV Community: James D. Bartlett III</title>
      <link>https://dev.to/jamesdbartlett3</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jamesdbartlett3"/>
    <language>en</language>
    <item>
      <title>My Coworkers Pay Monthly to Stream Their Voice to a Datacenter. So I Built Them Loquacio: a Free Dictation App That Never Phones Home</title>
      <dc:creator>James D. Bartlett III</dc:creator>
      <pubDate>Mon, 05 Oct 2026 04:46:58 +0000</pubDate>
      <link>https://dev.to/jamesdbartlett3/my-coworkers-pay-monthly-to-stream-their-voice-to-a-datacenter-so-i-built-them-loquacio-a-free-4kmd</link>
      <guid>https://dev.to/jamesdbartlett3/my-coworkers-pay-monthly-to-stream-their-voice-to-a-datacenter-so-i-built-them-loquacio-a-free-4kmd</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;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbfrdzhnemoyzi8oejsss.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbfrdzhnemoyzi8oejsss.png" alt=" " width="799" height="347"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;This one's for my coworkers at P3 Adaptive. Many of them dictate every day, and many of them pay a monthly subscription for commercial apps that don't even process the audio locally — so there's always a "who's potentially reading this?" question looming over everything. Their voice, recorded at their own desk, streamed to somebody else's datacenter. Some of them live with it; the rest just kept typing.&lt;/p&gt;

&lt;p&gt;So I built them &lt;strong&gt;Loquacio&lt;/strong&gt;: a desktop dictation app where every millisecond of audio stays on the machine it was spoken into, and which costs exactly nothing. That last part matters: since it's built entirely from open-source components — Whisper, local LLM servers, .NET itself — the subscription apps they've been paying for really ought to be free. Loquacio is me making that true. Speech recognition runs on a local Whisper model through &lt;a href="https://github.com/sandrohanea/whisper.net" rel="noopener noreferrer"&gt;Whisper.net&lt;/a&gt;. If they want punctuation and filler-word cleanup, that goes through their &lt;em&gt;own&lt;/em&gt; local LLM — LM Studio or Ollama on localhost. The only network connection the app ever needs is to download the Whisper model files the first time. After that, it works just as well on a desert island with no Wi-Fi as it does at the office.&lt;/p&gt;

&lt;p&gt;It's not a toy voice-note recorder — it's a real dictation workflow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Continuous mode&lt;/strong&gt; listens and transcribes as you speak, chunking on silence&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Push-to-talk&lt;/strong&gt; holds a hotkey for precise, on-demand capture&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keyword activation&lt;/strong&gt; toggles listening with a spoken wake word&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Custom vocabulary&lt;/strong&gt; teaches it the names and jargon Whisper would otherwise mangle&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local LLM post-processing&lt;/strong&gt; fixes capitalization, punctuation, "um"s, and misheard words — offline&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The architecture is what makes it pleasant to live with: a small headless &lt;strong&gt;daemon&lt;/strong&gt; owns the microphone and the model, and any controller — a full Avalonia GUI, a keyboard-only TUI, or the Windows WPF app — attaches to it over a private socket. Start the daemon once; dictate from whichever surface you're in.&lt;/p&gt;

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

&lt;p&gt;The app itself ships as self-contained desktop builds (no runtime installation needed):&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Platform&lt;/th&gt;
&lt;th&gt;Build&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Linux&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;.AppImage&lt;/code&gt;, &lt;code&gt;.deb&lt;/code&gt; (with a systemd user service), portable &lt;code&gt;.tar.gz&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Windows 10/11&lt;/td&gt;
&lt;td&gt;portable &lt;code&gt;.zip&lt;/code&gt; with daemon auto-start script; MSIX buildable on a Windows host&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

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

&lt;p&gt;The full source is on GitHub: &lt;a href="https://github.com/JamesDBartlett3/Loquacio" rel="noopener noreferrer"&gt;JamesDBartlett3/Loquacio&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/JamesDBartlett3/Loquacio.git
dotnet build &lt;span class="nt"&gt;-c&lt;/span&gt; Release
dotnet &lt;span class="nb"&gt;test &lt;/span&gt;Loquacio.Tests &lt;span class="nt"&gt;-c&lt;/span&gt; Release   &lt;span class="c"&gt;# 373 tests, all platforms&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;.NET 10, C#, MIT licensed. The test suite runs on Linux and Windows alike — including the daemon, IPC, and transcription pipeline.&lt;/p&gt;

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

&lt;p&gt;The core AI is &lt;strong&gt;Whisper&lt;/strong&gt;, OpenAI's open-source speech recognition model, running &lt;em&gt;inference locally&lt;/em&gt; via Whisper.net — no API, no account, no per-minute billing. The app downloads whichever open-weight model size fits the user's hardware (tiny through large-v3) and validates checksums, so a corrupted model can't silently produce garbage.&lt;/p&gt;

&lt;p&gt;The post-processing layer leans on the open &lt;strong&gt;OpenAI-compatible API shape&lt;/strong&gt; that LM Studio and Ollama expose locally: the same protocol the cloud services use, pointed at &lt;code&gt;localhost&lt;/code&gt;. That means the "smart cleanup" pass is swappable — any model they run locally works, and nothing is locked to one vendor.&lt;/p&gt;

&lt;p&gt;On the engineering side, the interesting decisions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Daemon-first architecture.&lt;/strong&gt; Audio capture and inference live in one long-running process; GUIs are thin clients. The dictation state machine (sessions, stage timeouts) means a controller crash never interrupts a transcription.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cross-platform by construction.&lt;/strong&gt; The core library is plain .NET; platform code (WASAPI on Windows, D-Bus desktop integration on Linux) is isolated at the edges. The whole test suite runs on Linux even though one controller is WPF.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Honest packaging.&lt;/strong&gt; Linux builds are cross-published on Linux (AppImage validated without FUSE, deb, tarball); the Windows zip is cross-built with &lt;code&gt;EnableWindowsTargeting&lt;/code&gt; and every &lt;code&gt;.exe&lt;/code&gt; verified as a real PE32+ binary before shipping.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Because voice is the most sensitive data type most people ever produce, and the default options all route it through someone's cloud. Open-source AI at the core changes that equation completely:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Privacy isn't a policy, it's a property.&lt;/strong&gt; There is no server to trust, no retention policy to read, no training opt-out to hunt for. The audio physically cannot leave the machine.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It works offline, forever.&lt;/strong&gt; No subscription, no rate limit, no deprecation. The app my coworkers run today will work identically in ten years.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The model is a setting, not a lock-in.&lt;/strong&gt; Whisper model sizes are a dropdown. The LLM cleanup layer speaks a standard local API. When a better open model ships next year, it's a swap, not a migration.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero marginal cost.&lt;/strong&gt; My coworkers can dictate all day without anyone's meter running.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  My Agent Session
&lt;/h2&gt;

&lt;p&gt;This project was built pair-programming style with local AI agents. The agents planned phases, wrote and reviewed code through a real PR process (every change merged via review, including a dependency CVE adjudication), ran the 373-test suite, and built the release artifacts — while the human steered. Fitting, for an app about talking to your computer instead of typing at it.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Overall&lt;/li&gt;
&lt;li&gt;Featured: Best use of open-source AI / local inference&lt;/li&gt;
&lt;/ul&gt;

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