Giter Site home page Giter Site logo

lavafroth / tempest Goto Github PK

View Code? Open in Web Editor NEW
36.0 5.0 0.0 291 KB

Fully local, privacy respecting, programmable Linux voice assistant

License: MIT License

Nix 3.52% Rust 96.46% Shell 0.02%
automation privacy rust selfhost selfhosted voice voice-assistant ai

tempest's Introduction

Tempest

Poor man's linux voice automation.

Goals

  • Wake phrase "Tempest rise" and sleep phrase "Tempest rest"
  • Shortcut customization using config files
  • Recording built into the binary
  • Sending fuzzy questions to an LLM through Ollama's API
  • Built-in understanding of fuzzy terms (similar sentences are treated as equal)
  • Static builds

Getting started

Prerequisites

  • Rust toolchain, either via your package manager or rustup
  • C++ standard library
  • clang
  • cmake
  • pkg-config
  • libvosk in LD_LIBRARY_PATH
  • Audio library for your OS (linux distros have package names like alsa-dev, alsa-lib or alsa)

If you use Nix flakes, run nix develop in the project directory to get a dev shell with the dependencies installed.

Building

git clone https://github.com/lavafroth/tempest
cd tempest

Change the bindings in the config file to suit your needs.

Run the following to build the daemon and the client:

cargo build --workspace --release
Daemon

The daemon is optional and is only needed if you want phrases in your bindings to perform keyboard shortcuts. Since performing keystrokes is a privileged action, you must run the daemon as root.

sudo ./target/release/tempest-daemon

This will give a token to authenticate with the daemon.

Client

If you have the daemon running in the background, in a different terminal tab, run

./target/release/tempest-client \
the_token_from_the_daemon

where the_token_from_the_daemon is the token provided by the daemon.

You can alternatively run the client as standalone. However, config bindings with keyboard shortcuts will not work.

./target/release/tempest-client

On first run, the client will prompt you to download models.

tempest's People

Contributors

lavafroth avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

tempest's Issues

Client fails to run due to missing april library

Hi,
I'm currently trying to get the NixOS dev shell running on NixOS unstable.

I get the following error "./target/release/tempest-client: error while loading shared libraries: libaprilasr.so.2023: cannot open shared object file: No such file or directory".

I could not find a mention of aprl-asr in the flake.nix, is it missing?

(Will try to add a fetchGit locally. Very new to using flakes.)

Separate keystroke input mechanism into its own daemon

Any keystrokes performed by Tempest needs to be done with the current user in the input or uinput group. Having our current user as a part of this group poses a security concern: any user-privilege script can now control inputs like the mouse or the keyboard.

We want to separate this input part of the code into its own daemon that will run as superuser. Thus, we can avoid adding ourselves to privileged groups.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.