aman/README.md

84 lines
1.6 KiB
Markdown

# lel
X11 transcription daemon that records audio and runs Whisper, logging the transcript.
## Requirements
- X11 (not Wayland)
- `ffmpeg`
- `whisper` (OpenAI Whisper CLI)
- `xclip`
- Tray icon deps: `libappindicator3` and `gtk3` (required by `systray`)
## Build
```bash
go build -o leld ./cmd/leld
go build -o lelctl ./cmd/lelctl
```
## Config
Create `~/.config/lel/config.toml`:
```toml
hotkey = "Cmd+m"
ffmpeg_input = "pulse:default"
whisper_model = "base"
whisper_lang = "en"
whisper_device = "cpu"
whisper_extra_args = ""
record_timeout_sec = 120
whisper_timeout_sec = 300
segment_sec = 5
streaming = false
injection_backend = "clipboard"
```
Env overrides:
- `WHISPER_MODEL`, `WHISPER_LANG`, `WHISPER_DEVICE`, `WHISPER_EXTRA_ARGS`
- `WHISPER_FFMPEG_IN`
- `WHISPER_STREAM`, `WHISPER_SEGMENT_SEC`, `WHISPER_TIMEOUT_SEC`
- `LEL_RECORD_TIMEOUT_SEC`, `LEL_HOTKEY`, `LEL_INJECTION_BACKEND`
## Run manually
```bash
./leld --config ~/.config/lel/config.toml
```
Disable the tray icon:
```bash
./leld --no-tray
```
## systemd user service
```bash
mkdir -p ~/.local/bin
cp leld lelctl ~/.local/bin/
cp systemd/lel.service ~/.config/systemd/user/lel.service
systemctl --user daemon-reload
systemctl --user enable --now lel
```
## Usage
- Press the hotkey once to start recording.
- Press it again to stop and transcribe.
- The transcript is logged to stderr.
Injection backends:
- `clipboard`: copy to clipboard and inject via Ctrl+V (requires `xclip` + `xdotool`)
- `injection`: type the text with simulated keypresses (requires `xdotool`)
Control:
```bash
lelctl status
lelctl reload
lelctl stop
```