Phase 3: Speaker diarization and full transcription pipeline

- Implement DiarizeService with pyannote.audio speaker detection
- Build PipelineService combining transcribe → diarize → merge with
  overlap-based speaker assignment per segment
- Add pipeline.start and diarize.start IPC handlers
- Add run_pipeline Tauri command for full pipeline execution
- Wire frontend to use pipeline: speakers auto-created with colors,
  segments assigned to detected speakers
- Build SpeakerManager with rename support (double-click or edit button)
- Add speaker color coding throughout transcript display
- Add pyannote.audio dependency
- Tests: 24 Python (including merge logic), 6 Rust, 0 Svelte errors

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-26 16:09:48 -08:00
parent 842f8d5f90
commit 44480906a4
12 changed files with 806 additions and 24 deletions

View File

@@ -8,6 +8,8 @@ import sys
from voice_to_notes.ipc.handlers import (
HandlerRegistry,
hardware_detect_handler,
make_diarize_handler,
make_pipeline_handler,
make_transcribe_handler,
ping_handler,
)
@@ -21,7 +23,8 @@ def create_registry() -> HandlerRegistry:
registry.register("ping", ping_handler)
registry.register("transcribe.start", make_transcribe_handler())
registry.register("hardware.detect", hardware_detect_handler)
# TODO: Register diarize, pipeline, ai, export handlers
registry.register("diarize.start", make_diarize_handler())
registry.register("pipeline.start", make_pipeline_handler())
return registry