Freyja is an AI assistant that works locally and can perform actions (i.e., commands). Even though it is still highly experimental, Freyja should now work reasonably well on any Linux computer if it is configured properly.
As mentioned previously, the project is highly experimental, so the installation process WILL be tedious.
Here is a brief list of dependencies:
- SoX for recording
- speech-dispatcher (you won't get the voice exactly like mine if you don't use the Piper Amy voice) for TTS
- Rust (your distro's native package will probably work too) - I think this is a Rust project
- A Whispercpp recognition model (I recommend using this one from FUTO) for STT
- Larger model = slower speed and better quality (if you have a broken English accent like mine, then use the largest one - I think it's worth it)
- Ollama (also pull a model from Ollama) for LLM
- Optional (if you want to enable wake-on-call):
- Vosk model for wake-on-call detection
- Python
git clone --recurse-submodules -j8 https://github.com/Tahosol/Freyja.git
cd Freyja
Now, if you list the repository, you will see something like this:
actions Cargo.lock Cargo.toml models README.md src target wakeup-for-freyja
In the Freyja root directory:
cargo build --release
Optional (If you want to enable wake-on-call):
- Change into the
wake-up-for-freyjadirectory - Follow the tutorial in the
READMEfile ofwake-up-for-freyja, except for thegit cloneandcdcommands.
Navigate into the code. You will see two variables like this:
model_path = "" # Update this to your model path
freyja_path = "" # Update this to your freyja path
Change them to actual paths. For Freyja, the path will be in target/release/freyja_rs (this is a relative path from the Freyja folder).
- Change into the Freyja directory
- Change into the
modelsdirectory - Move the
config.tomlto the directory indicated inREADME.txt
You will also need to edit the config to indicate the path to the Whisper C++ model you downloaded. Generally, the Ollama host/port will be good, so if you don't know what you're doing, then probably do not touch it.
As for actions, you can take a look at the example.toml and all the default ones that I made.
Good luck!