Skip to content

Transcription

Pipeline

  1. Decode recording.m4a; delay the mic track by micDelayMs; AEC3 on the mic against the system track.
  2. Resample to 16 kHz; Silero VAD (FluidAudio) finds speech segments per track.
  3. ASR per segment with the configured model. A voiced segment that decodes empty is retried with the model's second pass when beamRetry = true (Parakeet only; Whisper has its own fallback).
  4. Diarization of the system track (pyannote community-1 via FluidAudio): far-end speakers become S1..SN in the order they first speak, capped by maxSpeakers. The mic track is always you.
  5. Merge, sort by time, write transcript.json + transcript.md; pipeline.log records every stage's timing, model ids and warnings.

Re-run with different knobs from the meeting toolbar (Re-transcribe) or rex transcribe <folder>.

Models

id Engine Notes
parakeet-tdt-0.6b-v2 (default) FluidAudio CoreML English, fast, word timings + confidence
parakeet-tdt-0.6b-v3 FluidAudio CoreML Multilingual
whisper-tiny / whisper-base / whisper-small WhisperKit CoreML Small, multilingual, lower accuracy
whisper-large-v3-turbo WhisperKit CoreML Good accuracy, ≈1.6 GB
whisper-large-v3 WhisperKit CoreML Best accuracy, ≈3 GB, slow
whisper-distil-large-v3 WhisperKit CoreML English, between turbo and large

Settings › Transcription lists every model with its size (approximate until downloaded), download / remove buttons and the cache folder. Downloads never start while recording. Models unload after [models] idleMinutes by default (unloadPolicy = keep | idle | immediate).

Speakers

  • [speakers] you is the label for the mic track; unknownLabel = "Speaker {n}" formats the others. Rename a speaker by clicking its chip in the transcript: the label is rewritten in transcript.json, transcript.md and meeting.json.speakers.map - segment text never changes.
  • maxSpeakers drops the least talkative speakers beyond the cap.
  • speakerThreshold (40–90, default 70) is the cosine-distance cutoff in percent for "same voice": lower splits voices more readily, higher merges similar voices. Tune it per meeting from the Re-transcribe sheet before changing the default.

Confidence

Segments carry the engine's confidence; words carry theirs when the engine provides them. In the transcript view a segment under the threshold ([ui] lowConfidencePercent, default 60 %, in Settings › Transcription) shows a Low confidence (n%) caption, and words a tenth below the threshold get a dotted underline, so you know where to check against the audio. Exports do not include confidence except json.

Player

The meeting detail view plays the recording with per-track mute/volume, speed, a level-bar scrubber, click-to-seek on any segment, space / ← / → keys, and highlights the current segment.