Can Speaker-Aware Transcription Remain Entirely Offline?¶
Completed
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.