This appendix describes the diarization stage of an anonymised language education workflow. It is based on the recorded project design; no customer audio, speaker identity, or new SDK run is included.

Keep speaker IDs separate from roles

A transcript without speaker attribution is difficult to review. In the case workflow, a recording could contain an examiner, a candidate, and sometimes a narrator. A speech recogniser could return words and timestamps, but it did not by itself say which person produced each turn. The next stage needed anonymous speaker turns before it could compare a candidate answer with a reference script or map a turn to a role.

The useful output was therefore small: a time interval and an anonymous label. It did not need to know that SPEAKER_00 was the examiner. Role mapping came later, where the system could use the script and the surrounding transcript, and where a person could correct the result.

Build turns before assigning roles

The legacy implementation notes describe a pretrained PyAnnote pipeline. Its conceptual stages were voice activity detection, speaker embedding extraction, clustering, and boundary refinement. Those stages matter because each solves a different uncertainty:

  1. Find regions that contain speech.
  2. Represent short regions in a form that can be compared.
  3. Group similar regions into anonymous speakers.
  4. Adjust turn boundaries before handing them to transcription and review.

The following is an illustrative data shape, not a library response or a tested SDK contract:

{
  "start": 12.48,
  "end": 18.91,
  "speakerId": "SPEAKER_00"
}

The pipeline could accept a known speaker count when the recording supplied that context, or work within a bounded range when it did not. That choice is operationally important: a wrong count can force distinct voices together or split one voice into multiple labels. The label remains anonymous until a later role-mapping step.

Where diarization stops

Diarization is useful because it narrows a long recording into turns that another stage can inspect. It does not make speaker identity certain. Overlapping speech, similar voices, background noise, and very short utterances all make boundaries harder to place. Filtering short turns may reduce noise, but it can also remove a real answer. Keeping the raw timestamps available lets the reviewer inspect those decisions instead of receiving only a rewritten transcript.

The language model in this workflow had a bounded job. It could help map anonymous labels to roles and flag a mismatch against the script. It did not become the authority for timestamps or speaker identity. The browser review kept the segment, transcript, and source audio visible together so a human could amend the proposed mapping before export.

Evidence boundary

The public case study records the architecture and a documented sample for the overall workflow. It does not provide a reproducible diarization test set, model version, or evaluation protocol, so no general quality or processing-speed result can be derived here. The supported claim is narrower: anonymous speaker turns made later transcript and role checks reviewable, with the final assignment still subject to human correction.