Remote voice assist Pipeline - Whisper

In this post, I’d like to show you how to run Whisper on a different computer, outside your Home Assistant server.

Many users run Home Assistant on a Raspberry Pi or a small PC. While Whisper (especially with fast and small models) can work on those setups, its performance is often suboptimal. Since Wyoming allows for a remote Whisper installation, I decided to test running Whisper on my MBP M1. In theory, it should run much faster, won’t consume resources from my limited Home Assistant host, and will still operate locally within my network.

In this post, I’ve included some screenshots with Spanish localization. I hope it’s easy enough to follow in other languages. Let’s get started!


Local baseline

First, I started with the Local pipeline as described in Getting started - Local - Home Assistant. I’m running Home Assistant on a computer with an Intel N100 (4 cores) and 16GB of RAM. Despite being more powerful than a Raspberry Pi, the results are not great:

slow local piper

The recording is about 3.2 seconds long, and it took 5.4 seconds to process.

Remote setup

I wanted to run Whisper on my MBP, which is quite powerful (M1 Max CPU, 65GB RAM). This guide assumes you already have git and Python 3.12 installed. I tried different Python versions, but at the time of writing, only Python 3.12 worked.

First, you have to clone GitHub - rhasspy/wyoming-faster-whisper: Wyoming protocol server for faster whisper speech to text system, which is a Wyoming server for Whisper:

git clone https://github.com/rhasspy/wyoming-faster-whisper
cd wyoming-faster-whisper

Next, set up the Python environment:

python3.12 -m venv .venv
source .venv/bin/activate

Then, install the dependencies:

python -m ensurepip --upgrade
pip install -r requirements.txt

Finally, start the server:

script/run --model tiny-int8 --language es --uri 'tcp://0.0.0.0:10300' --data-dir ./local --download-dir ./local

Note: This setup uses the tiny-int8 model. While this model is not great (at least for Spanish), I’ll use it for consistency to compare results later.

Keep the server running.

Home Assistant configuration

Go to the Wyoming Protocol integration in Home Assistant and add a new service:

Enter your IP address and use 10300 as the port:

Screenshot 2025-02-05 at 12.36.59

And that’s it! One last thing: I recommend renaming the integration. By default, it’s named faster-whisper, which is the same name as the local Whisper. Having both with the same name can be confusing.

Voice configuration

The next step is to create a Voice Assistant using the remote Whisper instance. Follow the tutorial in Getting started - Local - Home Assistant, specifically the section “Setup your assistant.” The only difference is that you should select the remote Whisper instance.

image

Testing it

Using the same sentence, I now get sub-second processing times:

image

Accuracy

With Whisper running on more powerful hardware, you can now use better models to improve accuracy. To change the model, modify the command used to start the server. For example:

script/run --model turbo --language es --uri 'tcp://0.0.0.0:10300' --data-dir ./local --download-dir ./local 

Of course, processing times will increase, but at least you can try different models to find the best balance between accuracy and speed for your needs.


And that’s it! I hope you find this guide helpful.

Other posts in this collection:

1 Like

In this post, I’d like to show you how to run Piper…
while Piper (especially with fast and small models)
remote Piper installation, I decided to test running Piper on my MBP M1

It looks like you got sidetracked and made type in the component name in the first few paragraphs.

1 Like