Skip to content

fix: preserve speaker labels across short ASR gaps - #863

Open
Optic00 wants to merge 3 commits into
altic-dev:mainfrom
Optic00:codex/fix-partial-speaker-labels
Open

fix: preserve speaker labels across short ASR gaps#863
Optic00 wants to merge 3 commits into
altic-dev:mainfrom
Optic00:codex/fix-partial-speaker-labels

Conversation

@Optic00

@Optic00 Optic00 commented Aug 15, 2026

Copy link
Copy Markdown

Description

Speaker labeling previously fell back to an unlabeled transcript whenever an individual diarized turn produced no ASR text. A short silent or unrecognized turn could therefore discard the speaker attribution for the entire recording.

This change tracks those gaps instead of failing immediately. Speaker labels are retained only when every remaining gap is at most 5 seconds and the total omitted audio is at most min(30 seconds, 1% of diarized duration).

When labels are retained despite gaps, FluidVoice stores and displays an explicit limitation notice. The fallback path also logs the actual reason when labels cannot be retained.

Type of Change

  • 🐞 Bug fix
  • ✨ New feature
  • 💥 Breaking change
  • 🧹 Chore
  • 📝 Documentation update

Related Issue or Discussion

Closes #18

Testing

  • Tested on Intel Mac
  • Tested on Apple Silicon Mac
  • Tested on macOS version: 26.5.2
  • Ran linter locally: swiftlint --strict --config .swiftlint.yml Sources
  • Ran formatter locally: swiftformat --config .swiftformat Sources
  • Ran tests locally: full macOS test suite, 278/278 passing after rebasing onto current origin/main

swiftlint and swiftformat are not installed on the test machine, so these checks are intentionally left unchecked.

Screenshots / Video

Synthetic FluidVoice history entry showing retained speaker labels and the short-gap notice

Notes

The thresholds are deliberately conservative. Labels are retained only when the omitted material is small enough that the speaker-attributed transcript remains trustworthy.

@greptile-apps

greptile-apps Bot commented Aug 15, 2026

Copy link
Copy Markdown

Greptile Summary

The PR allows speaker labels to survive bounded ASR gaps and records the omitted intervals for persistence, display, and export.

  • Adds gap coverage and materiality policy models to the diarized transcription pipeline.
  • Persists speaker-labeling notices and gap ranges in current results and file-transcription history.
  • Displays limitation notices in current and historical transcription views.
  • Adds policy, compatibility, persistence, export, and fallback tests.

Confidence Score: 5/5

The PR appears safe to merge because no blocking failure remains in the eligible follow-up review scope.

No blocking failure remains.

Reviews (2): Last reviewed commit: "fix speaker diagnostic lint" | Re-trigger Greptile

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add speaker diarization (speaker attribution) for multi-speaker conversations

2 participants