Repository navigation
v0.30.4: Preserve distinct statements and improve speaker attribution
Minutes 0.30.4 preserves distinct statements during transcript cleanup and improves the optional Community-1 speaker pipeline. It also avoids arbitrary CLI speaker labels, fixes accumulating diarization timing error and adds safer diagnostics for MCP corpus reads that stop early.
What changed
-
Keep distinct statements, numbers and corrections. Repetition cleanup now compares ordered content and preserves differences in numbers, names, negation and word order. Repeated filler no longer causes an entire passage containing a different statement to disappear. The standalone whisper-guard fix is also published as 0.3.2. #1151
-
Keep speaker boundaries aligned with the audio. Diarization frames are anchored to each actual ten-second input window. They no longer accumulate timing drift over long recordings or extend into padded audio after the recording ends. #1152
-
Preserve local voices in Community-1. Minutes retains the model's individual speaker activity and overlaps, extracts identity evidence from unmixed speech, and compares observations across the complete recording. Different local voices cannot collapse into one cluster through a later merge. Short or ambiguous observations can remain unattributed; simultaneous voices are not arbitrarily assigned to one person in the transcript. #1153
-
Diagnose early MCP worker exits without exposing meeting content. Operator logs include the worker's exit code and signal while discarding its stderr. The public refusal remains unchanged. This helps distinguish process termination from an authorization deadline. #941
-
Abstain when a CLI transcript segment spans voices.
minutes transcribe --diarizereturns UNKNOWN in text and JSON when a segment intersects different speakers, including consecutive turns. It preserves words and no longer chooses the first raw label. Renderer contracts now execute on all three CI platforms. #1156 -
Keep uncertain speaker labels uncertain. Saved-meeting cleanup preserves explicit UNKNOWN observations instead of replacing them with a nearby or dominant voice. CLI enrollment stops before changing a profile when the sample does not yield one consistent speaker and embedding. #1156
Who should care
People whose repeated statements contain changing numbers or names, people processing longer recordings with speaker labels, Community-1 users, and people investigating an MCP corpus-read failure.
CLI / MCP / desktop impact
- Desktop and CLI share the transcript cleanup and timing fixes. The speaker-aware path applies to the optional Community-1 model set. The legacy CAM++ model keeps its compatible pipeline with the timing correction.
- MCP and SDK receive the early-exit diagnostic change. There are no new public MCP tools or CLI commands.
- Windows desktop remains experimental and unsigned.
Breaking changes or migration notes
No configuration or stored-meeting migration is required. The default diarization model and recognition thresholds remain unchanged. Community-1 remains opt-in; selecting it does not automatically rewrite existing meetings.
Existing Community-1 voice profiles keep their embedding model. Switching from legacy CAM++ to Community-1 still requires new enrollment for named recognition, because those embedding models are incompatible. Existing profiles are retained. Anonymous speaker numbers are local to a processing result and can change when a recording is reprocessed.
Install the desktop update manually using the DMG or Homebrew, then reopen Recall to use the matching bundled CLI.
Quality and known issues
On two complete, openly licensed English AMI meetings, the new Community-1 path reduced weighted speaker error from 59.42% to 40.94% against the clock-fixed integration. Scoring used one speaker mapping per recording, zero collar, overlap included, and no identity credit for UNKNOWN. This is a small offline evaluation with the same speakers across the two meetings, not independent population coverage, named-recognition accuracy, capture acceptance, or the upstream Community-1 benchmark.
Source-bound offline model checks passed on Linux, Windows, Apple Silicon and Intel macOS with the same weighted speaker error. This measures speaker-time attribution, not transcription word error or installed-app capture behavior.
The downloaded Linux CLI and notarized macOS app's bundled CLI also passed fictional file-transcription and MCP list/search checks with the updated desktop extension. The Mac artifact passed signature, stapled-ticket and Gatekeeper validation. These are package checks; live microphone/call capture and installed-app GUI acceptance were not exercised.
Speaker counting remains imperfect: those four-speaker recordings produced 17 and 14 anonymous clusters. Short speech and overlap remain difficult. These results do not justify a default-model change or a claim of state-of-the-art accuracy.
The MCP failure reported in #1150 still needs the affected client's exit diagnostic. This release adds that evidence; it does not claim to resolve every early worker exit.
Thanks to @horseback75-arch for the detailed Dutch transcription and MCP reproduction reports.
Install or update
- macOS desktop: download the DMG below, or run
brew updatefollowed bybrew upgrade --cask silverstein/tap/minutes. - Command line:
cargo install minutes-cli --version 0.30.4. - MCP server:
npx minutes-mcp@0.30.4with the updated local Minutes engine, or install the updated desktop extension below. - Manual macOS sherpa archive: after extracting
minutes-macos-arm64-sherpa.tar.gz, runchmod +x minutes-macos-arm64-sherpa/minutesbefore executing it. The archive's CLI file mode needs this installation step; the desktop DMG and Homebrew build use their own executable installation paths.
Minutes remains free and open source. These changes process audio locally. Content retrieved by a connected cloud assistant becomes context for that assistant under its settings.