# YazSes v2.11.0-dev.1 — Wave O opens: Diarized Recording Import (developer preview)

**Pre-release · not published** (publish workflows are pinned to `v0.x`/`v1.x`; v2 dev tags do
not ship). **v1.4.1 remains the stable release.** Every feature is **OFF by default**.

**Opens Wave O** (`design/vision/v2-research/17-diarized-recording-import.md`) — offline transcription
of pre-recorded audio files, with speaker attribution. YazSes could only transcribe the live mic; now
you can point it at a recording.

## New

- **Diarized Recording Import** (ADR-v2-125, `[recimport]`) — `yazses transcribe <file>`:
  - Decodes any common audio format (wav/mp3/m4a/ogg/flac/opus/mp4) offline on CPU and writes a
    **sidecar file next to the input** (`talk.mp3 → talk.txt`).
  - `--diarize` tags who said what (`Speaker 1: …`); `--names "Alice,Bob"` / `--rename speaker_0=Alice`
    or an enrolled voiceprint (auto-labels you as **"You"**) put real names in. Unknown speakers stay
    `Speaker N`.
  - `--format txt|md|srt|vtt|json` — `txt` (speaker-tagged) by default; `json` is the lossless
    canonical (per-word timestamps + speaker); `srt`/`vtt` are subtitles.
  - `--speakers N` / `--min-speakers` / `--max-speakers` constrain the clustering; `--language translate`
    turns any language into English.

## How it's built (and why it stays lean)

- **Diarizer = sherpa-onnx** — the only CPU-fit engine that needs no PyTorch, no GPU, and no
  Hugging-Face token (~15 MB int8 ONNX models), lazy behind the new optional `diarization` extra.
  First diarized run downloads the models once (`yazses transcribe --download-models`).
- **Audio decode adds no dependency** — reuses `faster_whisper.decode_audio` (PyAV), already shipped
  with the STT stack, so every format is covered for free.
- **STT reuses your configured faster-whisper model** — same accuracy as live dictation.
- **Word↔speaker alignment is pure numpy** (max-overlap, mirrors WhisperX) — no torch.

## Privacy

Fully offline (ADR-011). Diarization labels are transient; **speaker naming is opt-in, consent-gated,
on-device, and never auto-enrolls** anyone — speaker embeddings are biometric data and stay in the
encrypted corpus. A future cloud-escalation path is **designed but deliberately not implemented**
(ADR-v2-126); offline is the only path.

## Quality

**1489 tests green.** The new pure cores (word↔turn alignment, speaker-name resolution, rendering) are
unit-tested with no model download; the diarizer degrades to a plain transcript when the extra is
absent. Verified end-to-end: real PyAV decode + real faster-whisper + sidecar output. Base install and
the v1 dictation path are unchanged.
