OpenTranscribe — Transcription Pipeline

OpenTranscribe — Transcription Pipeline A workflow diagram generated by Archify. 01 / API / Web 02 / Celery pipeline (queue chosen by the plan) 03 / Speakers (this server or cloud) Intake + plan Transcription Speakers + delivery User · uploads media · API / Web › Intake + plan User uploads media FastAPI · stores to MinIO · API / Web › Intake + plan FastAPI stores to MinIO Notify · WebSocket to browser · API / Web › Speakers + delivery Notify WebSocket to browser Plan + dispatch · pipeline_plan · Celery pipeline (queue chosen by the plan) › Intake + plan · refuses invalid Plan + dispatch pipeline_plan refuses invalid Preprocess · cpu: extract audio · Celery pipeline (queue chosen by the plan) › Transcription Preprocess cpu: extract audio Transcribe · local or cloud ASR · Celery pipeline (queue chosen by the plan) › Transcription · inline speakers Transcribe local or cloud ASR inline speakers Postprocess · hand off, enrich · Celery pipeline (queue chosen by the plan) › Speakers + delivery Postprocess hand off, enrich Index · OpenSearch · Celery pipeline (queue chosen by the plan) › Speakers + delivery Index OpenSearch Speaker post stage · rediarize_task · Speakers (this server or cloud) › Speakers + delivery · assign_speakers Speaker post stage rediarize_task assign_speakers Voiceprints · always this server · Speakers (this server or cloud) › Speakers + delivery Voiceprints always this server plan once index for search transcript ready post_stage_* embedding stage transcript saved plan's queue upload Legend Agent logic Tool action Context / trace External system

One plan per run

  • • services/pipeline_plan.py decides engine, queue, merge and voiceprint step for every transcription x speaker-detection combination
  • • tasks/transcription/dispatch.py _plan_for_dispatch refuses a blocking issue (fixed sentence) before any task is published

Where speakers come from

  • • Inline: local engine in the gpu task, the cloud vendor's own labels, or a cloud diarizer alongside cloud ASR
  • • Post stage (rediarize_task): this server on gpu, or pyannote.ai / another vendor on cloud-asr; finalize_segments re-splits
  • • One merge: assign_speakers, word or segment granularity; models with no timestamps are refused, no forced alignment

Voiceprints never leave

  • • inline_native: vectors from the local engine, matched in postprocess
  • • embedding_stage: services/voiceprint_extractor.py on the cpu queue after any other detector
  • • Each stage records what ran in media_file.processing_provenance (file_provenance.record_stage)