summaryrefslogtreecommitdiff
path: root/README.md
blob: 4fb952ed4de134f874cd4465dc789ab2b23f4b84 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# Parley

Local, push-to-dictate text input for GNOME on Wayland.

Parley records your microphone, transcribes speech locally with Parakeet, and inserts the result at the active caret through IBus. Every successful transcript is saved and copied to the clipboard before insertion is attempted.

> Parley targets up-to-date Arch Linux systems running GNOME on Wayland. Other platforms are currently unsupported.

## Features

- local recording and transcription
- semantic text insertion through IBus
- clipboard fallback when insertion is unavailable
- GNOME top-bar status and controls
- global shortcut and command-line control
- transcript persistence under `~/.local/share/parley/transcripts/`

## Usage

1. Put the caret in an editable field.
2. Press the Parley shortcut to start recording.
3. Speak.
4. Press the shortcut again.
5. Wait for transcription and insertion.

GNOME shows its microphone privacy indicator while recording. Parley's top-bar indicator shows recording, transcription, and error states. Desktop notifications are disabled by default.

Useful fallback commands:

```bash
parleyctl status
parleyctl toggle
parleyctl cancel
parleyctl copy
parleyctl insert
```

If an application rejects IBus insertion, the transcript remains saved and ready to paste with `Ctrl+V`.

## Runtime

Parley requires the Parakeet `transcribe-cli` runtime and Unified English model. By default it looks for the runtime on `PATH` and the model under:

```text
~/.local/share/parley/models/
```

The model is not stored in this repository. The current runtime build also depends on host CUDA and MKL libraries.

## Status

The development build provides the daemon, CLI, systemd user service, GNOME Shell extension, clipboard fallback, and persistent passthrough IBus engine. End-to-end insertion is confirmed in Firefox and Ghostty; broader application and input-method testing is ongoing.

See the [IBus test matrix](docs/IBUS_BAKEOFF.md) and [project specification](SPEC.md) for details.

## Development

Parley runs directly with Arch's system Python and PyGObject bindings. No virtual environment or PyPI dependencies are required.

```bash
./scripts/install-dev
PYTHONPATH=src /usr/bin/python -m unittest discover -s tests
```

Restart and inspect the daemon with:

```bash
systemctl --user restart parley.service
journalctl --user -u parley.service -f
```

Development helpers live in [`scripts/`](scripts/), and the Arch package recipe lives in [`packaging/arch/`](packaging/arch/).

## Design principles

- audio and transcription stay local
- recording is always visible
- transcripts are saved before insertion
- model and audio work never runs inside GNOME Shell
- clipboard fallback survives insertion failures

## License

Parley is licensed under GPL-3.0-or-later.