Learning local LLMs for an offline voice assistant

With the recent developments in local LLMs, building an offline voice assistant that actually works started to feel like a plausible idea. I was also looking for a project that would teach me how to build LLM-based applications that can run on the edge.

This is a short summary of that journey: from knowing very little about running inference to having a quantized, optimized voice assistant running on my machine.

There will be two parts:

The first thing I did was pick the paper that started all of this: “Attention Is All You Need.” I used NotebookLM to go deep on it. Highly recommended. Reading that paper opened up a lot of questions, and from there I knew what to look for.

PyTorch was next. I had heard a lot about it, but never actually looked into it. The docs are great. Previous experience with numpy made the ideas easy to pick up, but the best part was the pointer to 3Blue1Brown’s neural networks playlist. That one is essential. It gave me the foundation I needed to read further and actually understand the material.

A lot of reading followed. Most of my focus was on running models on the edge. These were the most useful resources I found:


With that base, I shifted toward voice models, specifically Whisper. The plan was to run this on a small SoC like a Raspberry Pi, so I focused on whisper.cpp from the start. It’s easy to build and run, and the bundled tools make it straightforward to try quantization.

These were the most useful materials on that side:

These resources did the most to get the theory off the ground. In the next post, I’ll cover the process of building an optimized voice assistant.

Tagged: #Llm #Local-Llm #Inference #Quantization #Whisper #Whisper.cpp #Edge #Raspberry-Pi #Pytorch #Voice-Assistant