Skip to content

feat(mobile): on-device speaker-turn segmentation#6

Merged
m5d215 merged 1 commit into
mainfrom
feat/mobile-diarization
Jul 5, 2026
Merged

feat(mobile): on-device speaker-turn segmentation#6
m5d215 merged 1 commit into
mainfrom
feat/mobile-diarization

Conversation

@m5d215

@m5d215 m5d215 commented Jul 5, 2026

Copy link
Copy Markdown
Owner

Wire the shared SpeakerSegmenter (Sortformer/FluidAudio, from Core/) into the iOS app.

What

  • The mic buffer fans out to both the Transcriber and the SpeakerSegmenter.
  • On a detected speaker-turn boundary, the Transcriber is finalized (finalizeThroughLatest()), splitting the utterance at the speaker change.
  • Same wiring as the macOS app's AppController, now available on iOS because the engine lives in StenoCore.

Why

Without it, iOS has no source split (everything is mic), so a multi-person in-person conversation with no pauses merges into one long line. Segmentation breaks it at speaker changes.

Turn segmentation only — no speaker labels (no "who"). Toggle in Settings (default on); the Sortformer model downloads once on first enable, and load failure degrades to plain transcription.

Verification

Mobile simulator build succeeds. Runtime (mic → segmentation → split lines) is a device step.

🤖 Generated with Claude Code

Wire the shared SpeakerSegmenter (Sortformer/FluidAudio) into the iOS app.
The mic buffer now fans out to both the Transcriber and the Segmenter; on a
detected speaker-turn boundary the Transcriber is finalized so the utterance
is split. This breaks apart multi-person ambient conversation that SpeechAnalyzer
would otherwise merge into one line when speakers don't pause. Turn segmentation
only — no speaker labels. Toggle in Settings (default on); models download once
on first enable, and load failure degrades to plain transcription.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@m5d215
m5d215 merged commit e30e499 into main Jul 5, 2026
3 checks passed
@m5d215
m5d215 deleted the feat/mobile-diarization branch July 5, 2026 21:14
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.

1 participant