Skip to content

tim-gromeyer/VoiceAssistant

Repository files navigation

NOTE: I will continue developing this when I have some time. I use MarkdownEdit for school and need to improve it

VoiceAssistant 🎙️

Build Status Translated using Weblate

VoiceAssistant is a resource-efficient and customizable voice assistant that is still in the early stages of development but already functional. 🚀

Privacy is our top priority, and VoiceAssistant ensures that all operations are performed offline on your local device, keeping your data secure and protected. 🔒

Goal 🎯

The main goal of VoiceAssistant is to provide a fully customizable and extendable voice assistant that can be controlled entirely using voice commands. 🌟

Features ✨

  • Fully customizable and extendable (I'm still working on this) ✏️
  • Offline functionality for enhanced privacy and security 🔐
  • Voice recognition for executing predefined commands 🗣️
  • Privacy-first approach with everything offline and local on the device 🏡

Supported Platforms 🖥️

The project has been tested on x86_64 Linux, but it should theoretically work on the following platforms:

  • Aarch64/Arm64 Linux/Android/Raspberry Pi
  • Armv7l Linux/Android
  • Riscv64 Linux
  • x86 Linux/Android
  • x86_64 Linux/Android
  • 32-bit Windows (not suggested and untested)
  • 64-bit Windows
  • macOS (Intel)
  • macOS (M1)
  • iOS
  • WebAssembly

Note: The Android build works and starts, but I can't load the speech-to-text plugin.

To-Do's 📝

  • Full customizability
  • Implement Whisper.cpp backend (this will add WebAssembly, iOS, and M1 macOS support)

Customization 🎛️

In the near future, I'll add settings to the app!

To customize the commands, edit the commands/<your_language>/default.json file.

There are some default commands. See Add Commands.

Add Commands ➕

To add your command, edit the commands/<your_language>/default.json file. The supported values are:

Name Type Description Notes
commands Array of strings All commands that the voice assistant should react to Required
funcName String The name of the function to call (MainWindow::<funcName>)
responses Array of strings It selects a random response from the array Use [wait <number of ms>] to wait between words
program String A program to execute
args Array of strings Arguments passed to program ${TEXT} will be replaced with the voice input
sound String Path to local or remote file that gets played Volume can be controlled via voice/GUI

Build 🛠️

See the build section in INSTALL.md (direct link).

Translation Status 🌍

You can check the translation status of VoiceAssistant on Weblate (click the image below):

Translation Status

Creating a plugin 🧩

See plugins/README.md

Credits 💙

VoiceAssistant uses the following open-source projects:

  • Vosk for voice recognition
  • 11Zip for unzipping voice models
  • JokeAPI for telling jokes

Thank you to these amazing projects and their contributors for making VoiceAssistant possible! 🙏

About

Empower Your Voice, Secure Your Privacy - Experience VoiceAssistant, Your Customizable Offline Voice Assistant!

Topics

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages