AGENT SKILL

diarize-media

Run local speaker diarization for acquired audio/video with WhisperX and pyannote, preserving anonymous speaker clusters in canonical transcript sidecars

License 许可
MIT
所属仓库
jmagly/aiwg
最近更新
2026-11-14
Stars
★ 229
Forks
36

01 前言 Front Matter

name
diarize-media
script
{ "cwd": "project-root", "runtime": "node", "argsHint": "run --media <file> --output <sidecar.json> --credential-provider env:HF_TOKEN [--min-speakers N] [--max-speakers N]", "entrypoint": "scripts/diarize_media.mjs" }
category
media-curator
triggers
[ "speaker diarization audio", "diarize media", "diarize audio speakers", "diarize video speakers", "transcribe and diarize media speakers", "speaker clustering media" ]
namespace
aiwg
platforms
[ "all" ]
description
Run local speaker diarization for acquired audio/video with WhisperX and pyannote, preserving anonymous speaker clusters in canonical transcript sidecars

02 资源文件 1

03 SKILL.md 正文

Diarize Media

Run local speaker diarization for acquired audio/video and write a canonical aiwg.media.transcript.v1 sidecar. This is a dedicated routing skill for the diarization part of the media-curator transcript workflow.

What Diarization Means

Speaker diarization is anonymous clustering: it answers "which portions sound like the same speaker?" with labels such as SPEAKER_00 and SPEAKER_01.

Speaker identification is different: it maps an anonymous cluster to a verified person. Do not replace anonymous labels with names unless acquisition metadata, a human transcript, or explicit review evidence supports that mapping.

Executable Adapter

The bundled adapter uses WhisperX plus pyannote Community-1:

HF_TOKEN="$TOKEN_FROM_OPERATOR_OR_VAULT" \
aiwg run skill diarize-media -- run \
  --media /path/to/interview.wav \
  --output .aiwg/media/transcripts/interview.transcript.json \
  --credential-provider env:HF_TOKEN \
  --min-speakers 2 \
  --max-speakers 2

The credential provider is a reference, not a token value. The adapter checks the referenced environment variable before transcription starts, injects it into the local WhisperX process environment, and never writes token values to argv, disk, logs, state, provenance, or manifests.

Preflight

aiwg run skill diarize-media -- preflight \
  --media /path/to/interview.wav \
  --output .aiwg/media/transcripts/interview.transcript.json \
  --credential-provider env:HF_TOKEN \
  --min-speakers 2 \
  --max-speakers 2 \
  --format json

Preflight checks:

  • media readability and source SHA-256
  • output directory writability
  • whisperx availability
  • ffmpeg availability warning
  • CPU/GPU capability reporting
  • gated-model authorization through the named credential provider

Missing authorization emits aiwg.media.transcript-plan.v1 with status: blocked-credential-missing before the expensive STT stage.

Output And Degraded Mode

Successful runs produce the same canonical sidecar as transcribe-media, with stable segment IDs, source and transcript hashes, tool provenance, anonymous speaker labels, and quality limitations.

If WhisperX writes transcription/alignment JSON and then exits non-zero during diarization, the adapter preserves the completed output as a valid sidecar with transcript.quality.status: degraded-diarization-failed. If no native JSON is available, it writes an actionable transcript plan instead of fabricating text.

References

  • @$AIWG_ROOT/agentic/code/frameworks/media-curator/skills/transcribe-media/SKILL.md — Shared transcript sidecar schema and WhisperX adapter
  • @$AIWG_ROOT/agentic/code/frameworks/media-curator/skills/provenance-tracking/SKILL.md — Provenance model for derived media artifacts

04 同仓库更多 Skills