Skip to content

Can Speaker-Aware Transcription Remain Entirely Offline?

Completed

VoiceTrack · Whisper · PyAnnote · local inference

Motivation

Meeting transcription services commonly require an upload, while local transcription often loses speaker identity. VoiceTrack keeps both transcription and attribution on the user's machine.

Problem

Whisper returns timestamped text and PyAnnote returns speaker turns. These outputs have different boundaries and must be aligned without sending audio to a third party.

Architecture

The pipeline runs in two stages. Whisper Small transcribes audio and emits timestamps. PyAnnote speaker-diarization-3.1 identifies speaker intervals. A final alignment pass assigns transcript chunks to speaker turns by timestamp.

Implementation

The CLI accepts local audio, prints color-coded speaker labels, and can write the transcript to a file. The preferred input is a 16 kHz mono WAV. All model execution remains local.

Results

The output is a speaker-labeled transcript in the form [Speaker A] .... The source records functional completion, not a diarization-error or word-error benchmark.

Lessons Learned

Privacy can be an architectural property: the absence of an upload path is simpler to reason about than a policy layered over a remote service. Timestamp alignment also keeps two specialized models loosely coupled.

Future Work

No next version is recorded. A future evaluation would need named audio conditions and separate transcription and diarization metrics.