How papatistos/swhisper works
swhisper is a Swedish speech transcription and speaker-diarization application. Its principal workflow takes audio through chunking and Whisper transcription, then aligns words with diarization, optionally backfills uncovered speaker turns, and writes transcript formats and statistics. A separate diarization-first mode is documented, alongside VAD, caching, analysis tools, and optional SenseVoice emotion/event recognition. The graph combines sampled call evidence with README-documented capabilities; unsampled subsystem links are omitted where their wiring could not be verified.
Main entry points: transcribe.py Transcription runner · pipeline.py Speaker detection · transcription.py Whisper transcription · diarize.py Diarization runner
Components 21
Transcription
- Transcription runner
transcribe.py - Audio processing
transcribe/audio_utils.py - Voice activity detection
transcribe/ina_vad.py - Whisper transcription
transcribe/transcription.py - Diarization-first mode
transcribe/diarization_first.py
Diarization
- Diarization runner
diarize.py - Speaker detection
diarize/pipeline.py - Word-speaker alignment
diarize/pipeline.py - Speaker processing
diarize/utils.py - Empty-turn backfill
diarize.py - Diarization cache
diarize/diarization_cache.py
Outputs and analysis
- Transcript formatting
diarize/output.py - Speaker statistics
diarize/output.py - Results analysis
diarize/analysis.py - Transcript files
Configuration and integrations
- SenseVoice enrichment
diarize/sensevoice_provider.py - Transcription settings
transcribe/config.py - Diarization settings
diarize/config.py - Path settings
path_settings.py
Other components
- Researcher
- Audio files
Connections 21
- Researcher → Audio files: provides audio
README.md - Audio files → Transcription runner: submits audio
README.md - Transcription runner → Whisper transcription: runs transcription
transcribe.py - Whisper transcription → Audio processing: uses audio tools
transcribe/transcription.py - Transcription runner → Voice activity detection: detects speech
- Transcription runner → Diarization runner: starts diarization
transcribe.py - Diarization runner → Speaker detection: runs pipeline
- Speaker detection → Word-speaker alignment: aligns speakers
diarize/pipeline.py - Word-speaker alignment → Speaker processing: uses processors
diarize/pipeline.py - Word-speaker alignment → Empty-turn backfill: identifies empty turns
diarize.py - Empty-turn backfill → Whisper transcription: retranscribes turns
README.md - Speaker detection → Diarization cache: caches results
- Empty-turn backfill → SenseVoice enrichment: enriches segments
README.md - Diarization runner → Transcript formatting: formats transcripts
README.md - Transcript formatting → Transcript files: writes formats
README.md - Transcript formatting → Speaker statistics: computes statistics
diarize/output.py - Researcher → Results analysis: compares results
README.md - Diarization-first mode → Whisper transcription: transcribes segments
transcribe/diarization_first.py - Diarization-first mode → Speaker detection: runs diarization
transcribe/diarization_first.py - Transcription settings → Path settings: gets paths
transcribe/config.py - Diarization settings → Path settings: gets paths
diarize/config.py