Skip to main content
Glama

dialogue-transcriber

Transkribieren Sie Gespräche und finden Sie heraus, wer was gesagt hat.

CI PyPI License: Apache-2.0 Python

Richten Sie es auf ein Interview, eine Podiumsdiskussion, eine Besprechungsaufnahme oder eine YouTube-URL, und Sie erhalten ein Transkript, bei dem jede Zeile einem Sprecher zugeordnet ist – plus eine Weboberfläche, um die Sprecher-Cluster zu inspizieren, Segmente anzuhören und Beschriftungen von Hand zu korrigieren.

Die Review-Oberflprüfung: Sprecher-Cluster, Wellenform, Zeitleiste und durchsuchbares Transkript

So funktioniert es

audio  ──►  transcribe  ──►  segment  ──►  extract_clips  ──►  embed  ──►  cluster
              (Whisper)        (sentence-       (ffmpeg)       (TitaNet)    (UMAP +
                               level)                                       KMeans +
                                                                            silhouette)

Whisper erzeugt Wort-Zeitstempel; Wörter werden zu Satzsegmenten gruppiert; die Segmente werden mit NVIDIA NeMo TitaNet eingebettet; die Embeddings werden auf einer UMAP-Projektion geclustert; und das Transkript kommt als Sprecher 1, Sprecher 2, … beschriftet heraus. Jede Stufe wird auf Basis des Inhalts-Hash zwischengespeichert, sodass Wiederholungen und Konfigurationsänderungen günstig sind.

Related MCP server: youtube-transcriber-mcp

Schnellstart

ffmpeg und ffprobe müssen sich im PATH befinden (brew install ffmpeg unter macOS).

# No install needed:
uvx --from "dialogue-transcriber[all]" transcriber transcribe interview.mp3

# Or install the tool:
uv tool install "dialogue-transcriber[all]"

transcriber transcribe interview.mp3 --participants 2
transcriber transcribe "https://www.youtube.com/watch?v=..." --backend openai
transcriber serve interview.mp3        # review UI on http://127.0.0.1:8000

Der Standard-Backend läuft mit faster-whisper lokal; --backend openai verwendet stattdessen die OpenAI-Whisper-API (erfordert OPENAI_API_KEY, deutlich schneller auf Maschinen ohne GPU). Der Schlüssel kann in der Umgebung exportiert oder in einer .env-Datei im Arbeitsverzeichnis gespeichert werden – die CLI lädt .env aus dem Arbeitsverzeichnis (oder dem nächsten übergeordneten Verzeichnis), und exportierte Variablen haben immer Vorrang vor der Datei.

Wohin gehen die Daten?

  • Pipeline-Cache: ./.transcriber-cache/ im Verzeichnis, aus dem Sie starten (überschreibbar mit --work-dir) – Chunks, Segmente-Clips, Embeddings, YouTube-Downloads und der Job-Status der Web-UI. Kann bedenkenlos gelöscht werden; es wird neu aufgebaut.

  • Transkripte: neben der Eingabedatei (interview.txt) oder dort, wo --output zeigt; --output - gibt auf stdout aus.

  • Modellgewichte (lokales Backend): einmalig in ~/.cache heruntergeladen (Hugging Face / NeMo). Der Whisper-large-v3-Download ist ~3 GB groß, daher dauert der erste lokale Lauf eine Weile.

Mit dem standardmäßigen lokalen Backend verlässt nichts Ihren Rechner; --backend openai sendet Audio an die OpenAI-API.

Auswahl der Extras

[all] ist der einfache Knopf. Für kleinere Installationen:

uv pip install dialogue-transcriber              # core only
uv pip install "dialogue-transcriber[local]"     # + faster-whisper backend
uv pip install "dialogue-transcriber[openai]"    # + OpenAI Whisper API backend
uv pip install "dialogue-transcriber[cluster]"   # + scikit-learn / UMAP
uv pip install "dialogue-transcriber[embed]"     # + NeMo TitaNet speaker embedder
uv pip install "dialogue-transcriber[api]"       # + FastAPI backend (powers the web UI)
uv pip install "dialogue-transcriber[youtube]"   # + yt-dlp downloader
uv pip install "dialogue-transcriber[oip]"       # + MCP server for OIP consumers

CLI

# Full pipeline; writes a speaker-labeled transcript next to the audio
transcriber transcribe path/to/audio.mp3

# Speakers, language, format
transcriber transcribe interview.mp3 --participants 3 --language sv --format vtt

# Machine-readable output on stdout (see "For AI agents" below)
transcriber transcribe interview.mp3 --format json --output -

# Pull audio from YouTube
transcriber download "https://www.youtube.com/watch?v=..."

# Pipeline + web UI
transcriber serve interview.mp3 --participants 3

Formate: txt (zusammengeführte Sprecherbeiträge), vtt, srt, json. Übergeben Sie --context "Namen, Jargon", um Whisper mit erwartetem Vokabular zu versorgen. --output - streamt das Transkript auf stdout und die Zusammenfassung auf stderr, sodass die Ausgabe sauber weitergeleitet werden kann.

Weboberfläche

transcriber serve startet ein FastAPI-Backend und stellt das gebündelte React-Frontend bereit. Sie erhalten:

  • ein UMAP-Streudiagramm, in dem jeder Punkt ein Segment ist, farbcodiert nach Cluster – per Lasso können Sie einen Cluster auswählen und umbenennen;

  • eine durchgehende Wellenform mit einer Region pro Segment – klicken oder ziehen, um etwas abzuspielen;

  • eine Gantt-ähnliche Sprecher-Zeitleiste;

  • ein virtualisiertes Transkript mit Volltextsuche;

  • inline umbenennbare Sprecher-Chips (Umbenennungen werden serverseitig gespeichert);

  • TXT / VTT / SRT Export;

  • Tastaturnavigation (↑/↓ Segmente, Leertaste Play/Pause, / Suche).

Mehrere Aufträge können parallel laufen; über die Seitenleiste lassen sich weitere hinzufügen.

serve wählt sein Backend automatisch: openai, wenn ein OPENAI_API_KEY verfügbar ist (Umgebung oder .env), sonst das lokale. Mit --backend kann man explizit wählen. (Eine ältere Dash-Oberfläche für Einzelaufträge ist weiterhin als transcriber ui verfügbar.)

Für KI-Agenten

Dieses Projekt ist darauf ausgelegt, von Agenten gesteuert zu werden.

Claude-Code-Skill – dieses Projekt ist ein Plugin-Marktplatz. Wenn Sie die Skill installieren, weiß Claude Code, wie es Audio auf Anfrage transkribiert und Sprecher zuordnet:

/plugin marketplace add Novia-RDI-Seafaring/transcriber
/plugin install dialogue-transcriber@dialogue-transcriber

Strukturierte Ausgabe – --format json --output - erzeugt eine stabile Struktur auf stdout:

{
  "speakers": ["Speaker 1", "Speaker 2"],
  "n_segments": 42,
  "duration": 512.3,
  "segments": [
    {"speaker": "Speaker 1", "start": 0.0, "end": 4.2, "text": "..."}
  ]
}

MCP / OIP – das Paket ist ein Open-Ingestion-Protocol-Produzent, sodass Transkripte von jedem OIP-fähigen Konsumenten (z. B. Anchor) verarbeitet werden können:

transcriber oip install --data-dir ~/transcripts     # register the producer
transcriber oip ingest audio.mp3 --data-dir ~/transcripts
transcriber oip serve                                # MCP server (also: transcriber-mcp)

Tool-Namespace: transcribe. Region-Typ: transcript_segment. source_ref.kind: transcript-segment.

Für KI-Agenten

Dieses Projekt ist dafür gebaut, sowohl von Agenten als auch von Menschen bedient zu werden.

Claude-Desktop-Fähigkeit – das Repository dient gleichzeitig als Plugin-Marketplace. Installieren Sie die Fähigkeit, und Claude Desktop weiß, wie man Audio transkribiert und Diarisierung durchführt:

/plugin marketplace add Novia-RDI-Seafaring/transcriber
/plugin install dialogue-transcriber@dialogue-transcriber

Strukturierte Ausgabe – --format json --output - erzeugt eine stabile Struktur auf stdout:

{
  "speakers": ["Speaker 1", "Speaker 2"],
  "n_segments": 42,
  "duration": 512.3,
  "segments": [
    {"speaker": "Speaker 1", "start": 0.0, "end": 4.2, "text": "..."}
  ]
}

MCP / OIP – das Paket ist ein Open-Ingestion-Protocol-Produzent, sodass Transkripte von jedem OIP-fähigen Konsumenten (z. B. Anchor) ohne Änderungen am Konsumenten aufgenommen werden können:

transcriber oip install --data-dir ~/transcripts     # register the producer
transcriber oip ingest audio.mp3 --data-dir ~/transcripts
transcriber oip serve                                # MCP server (also: transcriber-mcp)

Tool-Namensraum: transcribe. Region-Art: transcript_segment. source_ref.kind: audio-timestamp.

Bibliotheksnutzung

from transcriber.config import ClusterConfig, PipelineConfig, TranscribeConfig
from transcriber.pipeline import run_pipeline
from transcriber.render import render_txt

cfg = PipelineConfig(
    transcribe=TranscribeConfig(backend="local", language="en"),
    cluster=ClusterConfig(participants=2),
)
result = run_pipeline("interview.mp3", config=cfg)
print(render_txt(result.segments))

PipelineResult.segments ist eine Liste von SpeakerSegment-Datensätzen mit dem Satztext, dem Zeitbereich, dem Clip auf der Platte und dem zugewiesenen Sprecher. PipelineResult.cluster.projection ist die 2-D-UMAP.

CLI

# Full pipeline; writes a speaker-labeled transcript next to the audio
transcriber transcribe path/to/audio.mp3

# Speakers, language, format
transcriber transcribe interview.mp3 --participants 3 --language sv --format vtt

# Machine-readable output on stdout (see "For AI agents" below)
transcriber transcribe interview.mp3 --format json --output -

# Pull audio from YouTube
transcriber download "https://www.youtube.com/watch?v=..."

# Pipeline + web UI
transcriber serve interview.mp3 --participants 3

Formate: txt (zusammengeführte Sprecherwechsel), vtt, srt, json. Übergeben Sie --context "Namen, Jargon", um Whisper mit erwartetem Vokabular zu versorgen. --output - streamt das Transkript auf stdout und die Zusammenfassung auf stderr, sodass die Ausgabe sauber weitergeleitet werden kann.

Web-UI

transcriber serve startet ein FastAPI-Backend und liefert das gebündelte React-Frontend aus. Sie erhalten:

  • eine UMAP-Punktwolke, bei der jeder Punkt ein Segment ist, farblich nach Cluster – per Lasso einen Cluster auswählen und umbenennen;

  • eine durchgehende Wellenform mit einer Region pro Segment – klicken oder ziehen, um abzuspielen;

  • eine Gantt-ähnliche Sprecher-Zeitleiste;

  • ein virtualisiertes Transkript mit Volltextsuche;

  • inline umbenennbare Sprecher-Chips (Umbenennungen werden serverseitig gespeichert);

  • Export als TXT / VTT / SRT;

  • Tastaturnavigation (↑/↓ Segmente, Leertaste Play/Pause, / Suche).

Mehrere Aufträge können parallel laufen; über die Seitenleiste lassen sich weitere hinzufügen.

serve wählt das Backend automatisch aus: openai, wenn ein OPENAI_API_KEY verfügbar ist (Umgebung oder .env), sonst local. Mit --backend kann die Wahl explizit getroffen werden. (Eine ältere Single-Job-Dash-Oberfläche ist weiterhin als transcriber ui verfügbar.)

Für KI-Agenten

Dieses Projekt ist darauf ausgelegt, sowohl von Agenten als auch von Menschen genutzt zu werden.

Claude-Code-Fähigkeit – das Projekt dient gleichzeitig als Plugin-Marktplatz. Installieren Sie die Fähigkeit, und Claude Code weiß, wie es Audio auf Anfrage transkribiert und diarisiert:

/plugin marketplace add Novia-RDI-Seafaring/transcriber
/plugin install dialogue-transcriber@dialogue-transcriber

Strukturierte Ausgabe – --format json --output - erzeugt eine stabile Struktur auf stdout:

{
  "speakers": ["Speaker 1", "Speaker 2"],
  "n_segments": 42,
  "duration": 512.3,
  "segments": [
    {"speaker": "Speaker 1", "start": 0.0, "end": 4.2, "text": "..."}
  ]
}

MCP / OIP – das Paket ist ein Producer des Open Ingestion Protocol, sodass Transkripte von jedem OIP-fähigen Konsumenten (z. B. Anchor) ohne Änderungen am Konsumenten aufgenommen werden können.

transcriber oip install --data-dir ~/transcripts     # register the producer
transcriber oip ingest audio.mp3 --data-dir ~/transcripts
transcriber oip serve                                # MCP server (also: transcriber-mcp)

Tool-Namespace: transcribe. Region-Art: transcript_segment. source_ref.kind: audio-timestamp.

Bibliotheksnutzung

from transcriber.config import ClusterConfig, PipelineConfig, TranscribeConfig
from transcriber.pipeline import run_pipeline
from transcriber.render import render_txt

cfg = PipelineConfig(
    transcribe=TranscribeConfig(backend="local", language="en"),
    cluster=ClusterConfig(participants=2),
)
result = run_pipeline("interview.mp3", config=cfg)
print(render_txt(result.segments))

PipelineResult.segments ist eine Liste von SpeakerSegment-Datensätzen mit dem Satztext, dem Zeitbereich, dem Clip auf der Platte und dem zugewiesenen Sprecher. PipelineResult.cluster.projection ist die UMAP-Projektion für Plots.

Weitere Hinweise

git clone https://github.com/Novia-RDI-Seafaring/transcriber
cd transcriber
uv venv
uv pip install -e ".[dev,cluster,api,openai,embed,youtube]"
(cd web && pnpm install && pnpm build)   # so `transcriber serve` can serve the UI

pytest                  # core + clustering + api tests
pytest -m "not slow"    # skip heavy/network tests
ruff check src tests

Für Frontend-Arbeit: pnpm dev (http://127.0.0.1:5173, leitet /api an :8000 weiter). Ein GitHub-Release löst .github/workflows/ci.yml aus, das das Frontend baut, in das Wheel einbindet und per Trusted Publishing veröffentlicht.

Lizenz

Apache-2.0. Siehe LICENSE.

Related MCP Connectors

Related MCP Servers