Skip to content

[Product] Ship recording-wide speaker-attributed long-form transcription #374

Description

@seonghobae

Buyer-visible gap

Codec Carver can transcribe audio, but buyers need a complete, auditable answer to “who said what, when?” across long recordings. Chunk-local speaker labels, overlap-window duplicates, and subtitle-only attribution are insufficient for meetings, interviews, research, legal review, and naruon/BandScope integrations.

Product contract

  • preserve overlap-aware diarization as the canonical audit timeline;
  • expose exclusive diarization only as an explicit ASR/subtitle alignment view;
  • reconcile chunk-local labels into stable recording-wide opaque speaker identities using overlap evidence and optional speaker embeddings;
  • make assignment deterministic, confidence-bearing, provenance-rich, and capable of abstention when evidence is insufficient;
  • never infer or persist a person's real identity without an explicit authorized mapping supplied outside the model;
  • deduplicate only overlap-window replicas while preserving distinct backchannels, interruptions, simultaneous speech, repeated wording, and speaker re-entry;
  • support current pyannote.audio Community-1 regular/exclusive outputs, exact/min/max speaker bounds, local/offline model loading, and injected alternative backends;
  • keep heavy ML imports optional and lazy;
  • expose standalone library and strict CLI contracts plus provider-neutral ports for BandScope, naruon, and contextual-orchestrator;
  • export deterministic canonical JSON, Markdown, RTTM, SRT, WebVTT, SHA-256 manifest, and CRC-verified ZIP; canonical JSON/RTTM retain overlap;
  • reject non-finite or reversed timestamps, traversal, duplicate archive members, controls, schema drift, and ambiguous overwrite;
  • preserve raw audio/transcript PII through opaque identities, authorization, encryption, bounded retention, and audit rather than masking content required for the job.

Evaluation gate

Use a de-identified 47-minute meeting topology fixture and synthetic ground truth with speaker imbalance, short turns, long silence, eight speakers, code switching, overlap, boundary turns, re-entry, and uncertain links. Measure and gate:

  • diarization error rate and Jaccard error rate under explicit collar/overlap settings;
  • speaker-attributed/cpWER or cpCER;
  • speaker-count error and turn-boundary error;
  • overlap-window duplicate and deletion rates;
  • cross-window link precision/recall;
  • confidence/abstention calibration;
  • deterministic repeatability;
  • CPU, memory, and long-recording scaling, including a proof that attribution lookup is not quadratic.

Engineering and governance

Commit directly reviewable source—no external ZIP payload, materializer, local PR scheduler, installer, or branch-writing workflow. Require architecture/ADR/CHANGELOG, threat model, rollback, CSAP/SOC 2 evidence, and APA 7 references for DIHARD-style evaluation, pyannote Community-1/exclusive diarization, overlapping-speech research, and speaker-attributed ASR metrics. Require 100% production statement/branch coverage and public docstrings, property/fuzz tests, real fixture execution, package/wheel smoke, security/SAST, and exact-current-head review.

This replaces the incomplete automation-heavy Draft PR #366.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: apiAPI, protocol, event, or external contractarea: authAuthentication, authorization, identity, or tenant isolationarea: ci-cdCI, GitHub Actions, checks, release, or supply chainarea: securitySecurity boundary, hardening, or vulnerability preventionmaintenancepriority: mediumNormal-priority or P2 workscope: product-gapCustomer-visible product gapstatus: triagedOpen issue has an organization taxonomy assignmenttype: featureNew or expanded product capability

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions