<?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: Tejas</title>
    <description>The latest articles on DEV Community by Tejas (@teij04).</description>
    <link>https://dev.to/teij04</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%2F120988%2Fb608131b-40ad-4e40-a3a5-5c5dc8f4299a.png</url>
      <title>DEV Community: Tejas</title>
      <link>https://dev.to/teij04</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/teij04"/>
    <language>en</language>
    <item>
      <title>Simple Easy Voice Assistant using Raspberry Pi 1</title>
      <dc:creator>Tejas</dc:creator>
      <pubDate>Tue, 18 Aug 2026 00:01:24 +0000</pubDate>
      <link>https://dev.to/teij04/simple-easy-voice-assistant-using-raspberry-pi-1-3ech</link>
      <guid>https://dev.to/teij04/simple-easy-voice-assistant-using-raspberry-pi-1-3ech</guid>
      <description>&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%2F3qw6ybmw6vc1mp6h8ecp.jpg" 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%2F3qw6ybmw6vc1mp6h8ecp.jpg" alt="Photograph of a Raspberry Pi 1 board connected to a USB webcam, desktop speaker, and laptop on a clean white desk setup" width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction &amp;amp; Hardware Overview
&lt;/h2&gt;

&lt;p&gt;This is a super easy setup, though your overall speed and performance will depend on your hardware—the better the hardware, the faster the results!&lt;/p&gt;

&lt;p&gt;For this project, I used a &lt;strong&gt;Raspberry Pi 1 from 2013&lt;/strong&gt;. It's really old and slow, but it definitely gets the job done! You just need to be a little patient during the initial package installation. &lt;/p&gt;

&lt;p&gt;To keep the Pi as fast and lightweight as possible, I installed &lt;strong&gt;DietPi&lt;/strong&gt; as the operating system.&lt;/p&gt;




&lt;h2&gt;
  
  
  🛠️ What You Need
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. The Client (Raspberry Pi 1)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Raspberry Pi 1&lt;/strong&gt; (or any newer Pi model)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DietPi OS&lt;/strong&gt; (keeps memory usage super low)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;USB Microphone&lt;/strong&gt;: I used an old USB webcam microphone. &lt;em&gt;(Pro Tip: Put a piece of tape over the camera lens if you have privacy concerns!)&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;3.5mm Speakers / Headphones&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. The Server (Mini PC / Local Host)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Mini PC&lt;/strong&gt; (or any Linux host on your local network)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ollama&lt;/strong&gt;: Running lightweight models like &lt;code&gt;qwen2.5:1.5b&lt;/code&gt; or &lt;code&gt;llama3.2:1b&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Faster-Whisper&lt;/strong&gt;: For fast local Speech-to-Text&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🌐 Network &amp;amp; Quick Overview
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Local Network&lt;/strong&gt;: Ensure both your Pi and Server are on the same local network. Verify connectivity by running a &lt;code&gt;ping&lt;/code&gt; from the server to the Pi and vice versa.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Install &amp;amp; Test&lt;/strong&gt;: Run the requirement setup and shell scripts on the Pi, and run the server script on the Mini PC.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Verify Logs&lt;/strong&gt;: Test both scripts running together and check the logs using the provided code commands.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enable on Boot&lt;/strong&gt;: Once everything works, convert the scripts into systemd background services and enable them on boot so your AI assistant starts automatically whenever your Pi powers on!&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  📊 Viewing Logs Live
&lt;/h2&gt;

&lt;p&gt;Checking the logs live is the best way to see your voice queries, transcripts, and AI answers in real-time.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. View Client Logs (Raspberry Pi 1 / DietPi)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;journalctl &lt;span class="nt"&gt;-u&lt;/span&gt; jarvis-client &lt;span class="nt"&gt;-f&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. View Server Logs (Mini PC)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;journalctl &lt;span class="nt"&gt;-u&lt;/span&gt; jarvis-server &lt;span class="nt"&gt;-f&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔧 Troubleshooting Guide &amp;amp; Pro Tips
&lt;/h2&gt;

&lt;p&gt;Here are the most common issues you might encounter when building this project and how to fix them:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Error: &lt;code&gt;Device or resource busy&lt;/code&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cause&lt;/strong&gt;: You have multiple scripts or background services trying to access the microphone at the same time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fix&lt;/strong&gt;: Kill extra background processes and make sure only &lt;strong&gt;one&lt;/strong&gt; instance of &lt;code&gt;jarvis-client&lt;/code&gt; is running:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  &lt;span class="nb"&gt;sudo &lt;/span&gt;pkill &lt;span class="nt"&gt;-9&lt;/span&gt; sox
  &lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl restart jarvis-client
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Sound Device Card Numbers Shift After Rebooting
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cause&lt;/strong&gt;: Linux ALSA card numbers (&lt;code&gt;card 0&lt;/code&gt;, &lt;code&gt;card 1&lt;/code&gt;) can change randomly every time you restart your Pi.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fix&lt;/strong&gt;: Use permanent device names instead of numbers:

&lt;ul&gt;
&lt;li&gt;Mic: &lt;code&gt;plughw:Camera,0&lt;/code&gt; (or your webcam name)&lt;/li&gt;
&lt;li&gt;Speakers: &lt;code&gt;plughw:Headphones,0&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Audio Crashes with &lt;code&gt;Floating point exception&lt;/code&gt; on Pi 1
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cause&lt;/strong&gt;: SoX &lt;code&gt;play&lt;/code&gt; or &lt;code&gt;ffplay&lt;/code&gt; uses floating-point audio resampling math that crashes on old ARMv6 (Pi 1) processors.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fix&lt;/strong&gt;: Use native ALSA &lt;code&gt;aplay -D plughw:Headphones,0&lt;/code&gt; for playback, and have the server convert all output audio into standard 16kHz mono WAV format.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Audio Cuts Off Before You Finish Speaking
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cause&lt;/strong&gt;: The SoX Voice Activity Detection (VAD) silence pause time is set too short.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fix&lt;/strong&gt;: Increase the silence pause parameter in &lt;code&gt;jarvis_listener.sh&lt;/code&gt; from &lt;code&gt;0.8s&lt;/code&gt; to &lt;code&gt;1.8s&lt;/code&gt;:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  sox &lt;span class="nt"&gt;-t&lt;/span&gt; alsa &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$MIC_DEVICE&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="nt"&gt;-c&lt;/span&gt; 1 &lt;span class="nt"&gt;-r&lt;/span&gt; 16000 &lt;span class="nt"&gt;-b&lt;/span&gt; 16 &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$TEMP_IN&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; silence 1 0.1 5% 1 1.8 5%
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://github.com/teejaz/jarvis-edge-ai" rel="noopener noreferrer"&gt;https://github.com/teejaz/jarvis-edge-ai&lt;/a&gt; &lt;br&gt;
Feel free to reach out for any question or additional ideas.&lt;/p&gt;

</description>
      <category>raspberrypi</category>
      <category>ai</category>
      <category>python</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
