The guide behind the reel

Build your own offline Siri with Whistle + Claude

By the end, you will have an offline speech-to-text setup using Whistle, and you will use Claude to wire it into a Siri-like voice assistant flow (transcribe first, then take actions). This is worth doing because it runs on your machine, with no internet requirement for the transcription model itself. You will also see exactly what to paste into Claude and what to run to sanity-check it.

What you need

5 things

The steps

6 steps
  1. Get Whistle from Hugging Face

    Whistle is a speech-to-text model from Cactus Compute. The whole model is one 16.9 MB file, it runs on the CPU with no internet, and Cactus says it mostly beats Whisper base at 9x less file size and 6x the speed. It understands English, German, French, Spanish, Italian, Dutch and Polish. Licence is Apache 2.0.

    Links
    - Whistle model (the repo URL to copy): huggingface.co/Cactus-Compute/whistle
    - Needle, the tool-calling model that runs on the same engine: huggingface.co/Cactus-Compute/needle3
    - Engine and Python package source: github.com/cactus-compute/needle
    - Cactus blog post: cactuscompute.com/blog/whistle

    First, copy the Whistle repo URL.

  2. Start a fresh Claude session in an empty folder

    Open Claude (the Claude desktop app, Code tab, or Claude Code), start a new session in an empty folder.

    This keeps the build output clean and makes it easier to see what Claude creates.

    • Claude (the Claude desktop app, Code tab, or Claude Code)
    • Start a new session in an empty folder
  3. Paste the build prompt into Claude

    Paste this prompt:

    ```

    • Here's a tiny offline speech-to-text model: https://huggingface.co/Cactus-Compute/whistle
      
      Turn it into a Siri-like voice assistant for my PC and phone. I talk, Whistle transcribes it on-device, then it takes actions: open apps, set reminders, search my files. All offline. Build it and give me the install steps.
      ``
  4. Let Claude build and test it

    Let Claude build and test it. It will install the Python package (pip install cactus-needle), download the model once, and wire Whistle (speech to text) to Needle (text to tool calls).

    What you should expect to see on screen is the install of the Python package. It should run pip install cactus-needle, download the model once, and connect Whistle (speech to text) to Needle (text to tool calls).

    • pip install cactus-needle
  5. Do a quick voice test

    Try it: hold the hotkey and say something like “turn off the kitchen lights” or “remind me at 6”.

    If it’s wired correctly, you should see transcription and then the assistant attempting the requested action.

    • turn off the kitchen lights
    • remind me at 6
  6. Quick test without Claude

    Quick test without Claude

    pip install cactus-needle
    python -c "import needle; print(needle.transcribe('clip.wav')['text'])"
    needle whistle playground (transcribes from your microphone)

    • pip install cactus-needle
    • python -c "import needle; print(needle.transcribe('clip.wav')['text'])"
      needle whistle playground   (transcribes from your microphone)

Tips

Try next

That is the whole thing

If a step did not work the way I said, tell me in the comments on the reel: I fix these.