Releases: NachoTek/meetandread
Releases · NachoTek/meetandread
Release list
v0.19.1
[0.19.1] -- 2026-06-04
Fixed
- Benchmark test data missing in release builds (Issue #13) -- PyInstaller now collects
src/meetandread/performance/test_data/*including benchmark.wav and ground truth files, fixing "Test clip not found" errors in release builds - Speaker diarization fails in release builds (Issue #14) -- Removed soundfile dependency (which could not be bundled via PyInstaller after 8 attempts) and switched to Python's built-in
wavemodule for WAV file I/O. This eliminates scipy.io.wavfile bundling issues and completely fixes ModuleNotFoundError in release builds. Supports standard 16-bit PCM WAV files (most microphones)
Added
- Speaker Diarization settings in Settings panel -- Three tunable controls added for speaker detection behavior:
- Clustering Threshold (0.0-1.0, step 0.05) -- Controls speaker segmentation; higher values produce more speakers
- Min Speech Segment (0.1-5.0s, step 0.1s) -- Minimum duration for speech segments before discarding
- Min Silence Gap (0.1-5.0s, step 0.1s) -- Minimum silence duration before splitting speakers
- All settings persist immediately to config and restore on panel open
Changed
- Speaker diarization defaults -- Updated based on testing to reduce over-segmentation in noisy environments:
- clustering_threshold: 0.6 → 0.5 (fewer false speaker splits)
- min_duration_off: 0.5 → 0.8s (better for noisy rooms)
v0.19.0
[0.19.0] -- 2026-06-02
Fixed
- Live transcription text duplication (Issue #2) — Two-buffer model in TranscriptStore (
_words+_live_phrase_words) replaces wholesale on each re-transcription pass instead of appending, eliminating duplicate text from sliding window overlap.set_live_phrase_words/commit_live_phraseprovide a unified replace path for bothis_finaland re-transcription segments - Post-processing and scrub broken (Issue #11) — M019 changed
transcribe_chunk()to returnTranscriptionSuccess | TranscriptionErrorbut post_processor, scrub, and benchmark still iterated the raw return. All callers now unwrap the typed result - Speaker identity matching not resolving (Issue #12) — Post-processing diarization runs via subprocess; JSON round-trip produces int speaker labels in segments but string keys in matches dict.
speaker_label_for()now tries both exact match andstr()coercion before falling back toSPK_Ndefault - Post-processor speaker_matches metadata — Now built from the diarization result's VoiceSignatureStore identity matches instead of carrying forward stale realtime transcript data
- Transcript save missing live buffer —
_get_segments_internal()and finalizer now include live phrase buffer so saved transcripts contain full text - run.bat Windows Store python stub — Switched
python→pylauncher to bypass Windows Store AppInstaller redirector
Changed
- Code Review Audit Remediation (Issue #8) — 46 verified findings from GPT-5.5 code review triaged and fixed:
atomic_write()utility for crash-safe file operations,TranscriptionResulttyped return fromtranscribe_chunk(), thread safety fixes in TranscriptStore, resource lifecycle cleanup, exception handling hardening, and lint cleanup across 8 modules