# What installing it actually costs

Most projects tell you how to install and never what it costs. These are measured
numbers, not estimates, so you can decide before you start.

## Disk

| What | Size | Notes |
|---|---|---|
| YazSes, headless (no desktop extra) | **~450 MB** | `pip install yazses` — enough for `transcribe` |
| YazSes + the `desktop` extra | **1.1 GB** | what `install.sh`, the `.deb` and the Snap install |
| ↳ of which **PySide6 (Qt)** | **648 MB** | the overlay and the tray — now optional, see below |
| Speech model — `tiny.en` | 75 MB | fastest, least accurate |
| Speech model — `base.en` | **141 MB** | **the default** |
| Speech model — `small.en` | 464 MB | most accurate of the three |
| Speaker diarization models | ~15 MB | only if you use `--diarize` |
| Docker image (transcription only) | 833 MB | no Qt |

**A normal desktop install is therefore about 1.25 GB**: 1.1 GB of program plus the
141 MB default model. A **headless** install is roughly **590 MB** all-in. Only one
model is downloaded — the one you configure.

!!! success "Qt is now optional — headless installs are ~650 MB lighter"
    `PySide6` is **no longer a base dependency**. It is 648 MB of Qt and it exists for
    exactly two desktop features: the voice-activity overlay and the system-tray icon.
    Installs that can never show either — servers, containers, CI, anything headless,
    and anyone who only runs `yazses transcribe` — were paying for all of it.

    It now lives in the **`desktop` extra**:

    ```sh
    pip install yazses              # headless: transcribe, meetings, the CLI
    pip install 'yazses[desktop]'   # adds the overlay and the tray
    ```

    **Nothing changes for a normal desktop install.** `install.sh`, the `.deb` and the
    Snap all pull the desktop extra, so the tray and overlay work out of the box exactly
    as before. If you installed headless and later want them,
    `yazses features enable tray` (or `overlay`) fetches Qt on demand.

    Every import of it is lazy, so a headless copy simply reports the feature as
    unavailable rather than failing. Tracked as
    [#259](https://github.com/MSKazemi/yazses/issues/259).

## Downloads

Nothing is downloaded that you did not ask for, and **the speech model is the only large
download**. It happens once, on first use, from Hugging Face — after that YazSes never
needs the network again.

You can prove that rather than trust it:

```sh
docker run --rm --network none -v yazses-models:/models -v "$PWD:/data" yazses jfk.wav
```

That transcribes with networking switched off entirely. It works.

## Time

| Step | Time | Measured how |
|---|---|---|
| First transcription (incl. 141 MB model download) | **43 s** | 4-core CPU, `base.en` |
| Every transcription after | **2.3 s** for 11 s of audio | model cached |
| System provisioning (`yazses setup`) | under a minute | apt packages |
| The one-time log-out and back in | **you pick when** | required on Linux; see below |

Install time itself depends almost entirely on your network and on whether `evdev` has to
be compiled (it has no wheels, so it usually does — this needs a C compiler, which
`install.sh` installs for you if it is missing).

## What it changes on your system

On Linux, a full dictation install touches these and nothing else:

| Change | Why | Reversible |
|---|---|---|
| Installs `libportaudio2`, `xdotool`/`ydotool`/`wtype`, clipboard tools | capture audio, type text | yes — normal apt packages |
| Adds you to the **`input` group** | read the hold-to-talk key from the kernel | yes — `sudo gpasswd -d $USER input` |
| Enables **`ydotoold`** (Wayland only) | the only way to inject keystrokes on GNOME/KDE Wayland | yes — `systemctl --user disable --now ydotoold` |
| Writes config to `~/.config/yazses/` | your settings | yes — delete it |
| Writes data to `~/.local/share/yazses/` | logs, PID, learning corpus if enabled | yes — delete it |
| Optional systemd **user** unit | start at login, if you ask for it | yes — `yazses autostart disable` |

!!! note "The `input` group is the one real security consideration, and it is worth understanding"
    Membership lets any program you run read raw input events — which is how the
    hold-to-talk hotkey works at all, and it is the same mechanism every Linux hotkey
    daemon uses. It is a genuine privilege grant, so it is stated plainly here rather
    than buried. If you are not comfortable with it, `yazses transcribe` needs none of
    it, and neither does Docker.

## What it does *not* do

- **No account, no API key, no licence server, no sign-up.**
- **No telemetry.** Nothing is counted, phoned home, or reported — there is no analytics
  code in the project at all. Downloads on PyPI are the only number the project can see,
  and that is PyPI's counter, not ours.
- **No background network access** after the model is downloaded.
- **No autostart unless you run `yazses autostart enable`.**

## Getting it back off

[Uninstalling is one page](uninstall.md), and it removes everything listed above.

---

**Ready?** [Install on Linux](install-linux.md) · [macOS](macos-install.md) ·
[Windows](windows-install.md) — or
[try it without installing anything](try-without-installing.md) first.
