fix: reconcile speakers automatically by default

The plain transcribe command still used chunk overlap speaker matching,
so users had to discover a model flag or supply a known speaker count to
get the improved voice comparison behavior.

Enable OpenRouter voice comparison with automatic speaker counting for
normal text and SRT invocations. Keep --speakers and --speaker-model as
optional overrides, and let --no-diarization disable both provider labels
and voice comparison. Make the basic command the documentation entry point
and clarify the defaults in CLI help and repository guidance.

Cover bare invocations across one and multiple uploads, default SRT,
optional count constraints, opt-out ordering, and atomic output when the
default comparison fails.

Test Plan:
- python3 -B -m unittest -v: all 85 tests passed.
- bash -n transcribe: passed.
- git diff --cached --check: passed.
- Tests use real audio encoding with fake provider responses. Live voice
  accuracy remains unverified; no live API request was made for this change.
This commit is contained in:
ddidderr committed 2026-09-12 10:28:42 +02:00
1 parent 138c796399
commit d7827d39f5
5 files changed
+107 -48

No files matched your search

+4 -1
View File
@@ -24,7 +24,7 @@
- `chunks.py`: upload boundaries and ordered overlap stitching.
- `subtitles.py`: timestamp validation and SRT cue formatting.
- `transcript.py`: readable text paragraphs and speaker markers.
- `diarization.py`: optional OpenRouter audio sample comparison and speaker ID reconciliation.
- `diarization.py`: automatic OpenRouter audio sample comparison and speaker ID reconciliation.
- `test_*.py` and `tests/fake_provider.py`: local regression tests without real
credentials or provider requests.
@@ -36,3 +36,6 @@ must preserve transcription text and timestamps, validate complete sample
assignments, and leave uncertain or conflicting identities separate. Keep chunk
details out of the final transcript.
Progress, processing details, and errors belong on stderr.
The normal command detects the speaker count and reconciles voices automatically;
`--speakers` and `--speaker-model` are optional overrides. `--no-diarization`
disables both provider diarization and the voice comparison request.