add README
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
# Hush
|
||||
|
||||
A Linux speech-to-text daemon that records audio, transcribes it via the Groq Whisper API, optionally cleans up the text with an LLM, and types the result into whatever window currently has focus.
|
||||
|
||||
The intended workflow: bind `hush toggle` to a global hotkey, press to start recording, press again to stop, and the transcribed text appears in your active application.
|
||||
|
||||
## Requirements
|
||||
|
||||
**Runtime dependencies:**
|
||||
|
||||
- [pw-record](https://pipewire.org/) (PipeWire) or `ffmpeg` (PulseAudio) — audio capture
|
||||
- [wtype](https://github.com/atx/wtype) (Wayland) or [xdotool](https://github.com/jordansissel/xdotool) (X11) — text injection
|
||||
- `notify-send` — desktop notifications
|
||||
- A [Groq API key](https://console.groq.com/)
|
||||
|
||||
**Build dependencies:**
|
||||
|
||||
- [.NET 10.0 SDK](https://dotnet.microsoft.com/download/dotnet/10.0)
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
sudo ./install.sh
|
||||
```
|
||||
|
||||
This builds the project, installs the `hush` binary to `/usr/bin/hush`, sets up zsh tab-completion, and registers `hush.service` as a systemd (or OpenRC) user service.
|
||||
|
||||
To uninstall:
|
||||
|
||||
```bash
|
||||
sudo ./uninstall.sh
|
||||
```
|
||||
|
||||
## Setup
|
||||
|
||||
After installing, run the interactive setup wizard to configure your API key and preferences:
|
||||
|
||||
```bash
|
||||
hush setup
|
||||
```
|
||||
|
||||
Config is stored at `~/.config/hush/config` in TOML format.
|
||||
|
||||
## Commands
|
||||
|
||||
| Command | Description |
|
||||
|---|---|
|
||||
| `hush toggle` | Start recording if idle, stop and transcribe if recording |
|
||||
| `hush start` | Start recording |
|
||||
| `hush stop` | Stop recording and transcribe |
|
||||
| `hush abort` | Discard the current recording |
|
||||
| `hush status` | Show daemon state and recording duration |
|
||||
| `hush show` | Show current configuration |
|
||||
| `hush latency-test` | Measure STT and LLM round-trip latency |
|
||||
| `hush daemon` | Run the daemon in the foreground |
|
||||
| `hush setup` | Interactive configuration wizard |
|
||||
|
||||
## Building Manually
|
||||
|
||||
```bash
|
||||
./build.sh
|
||||
```
|
||||
|
||||
Produces a native AOT binary at `Hush.Cli/bin/Release/net10.0/linux-x64/publish/Hush.Cli`.
|
||||
|
||||
## Configuration
|
||||
|
||||
Key settings in `~/.config/hush/config`:
|
||||
|
||||
| Key | Default | Description |
|
||||
|---|---|---|
|
||||
| `groq_api_key` | | Groq API key |
|
||||
| `whisper_model` | `whisper-large-v3-turbo` | Whisper model to use |
|
||||
| `llm_model` | `openai/gpt-oss-20b` | LLM model for text cleanup |
|
||||
| `audio_backend` | `pw-record` | `pw-record` or `ffmpeg` |
|
||||
| `typing_backend` | `wtype` | `wtype` or `xdotool` |
|
||||
| `whisper_language` | | Optional ISO 639-1 language code |
|
||||
| `min_recording_duration` | `500` | Minimum recording length in ms |
|
||||
Reference in New Issue
Block a user