Communitygithub.com

MadAppGang/claude-code

Audio-/Videotranskription mit OpenAI Whisper. Behandelt Installation, Modellauswahl, Transkriptformate (SRT, VTT, JSON), Zeitsynchronisation und Sprecherdiarisierung. Verwenden Sie dies zum Transkribieren von Medien oder zum Generieren von Untertiteln.

Was ist claude-code?

Diese Fähigkeit bietet produktionsreife Muster für die Audio-/Videotranskription mit OpenAI Whisper. Sie behandelt die Installation von Whisper über mehrere Optionen: das Standard-Python-Paket (`openai-whisper`), die schnellere C++-Variante `whisper.cpp` und die GPU-beschleunigte `insanely-fast-whisper`. Eine detaillierte Modellauswahltabelle hilft bei der Entscheidung zwischen Modellen wie `tiny`, `base`, `small`, `medium` und `large-v3` basierend auf Größe, VRAM, Genauigkeit und Geschwindigkeit. Die Fähigkeit zeigt grundlegende Transkriptionsbefehle für Whisper und whisper.cpp, die Erstellung gängiger Ausgabeformate (SRT, VTT, JSON mit Wort-für-Wort-Zeitstempeln), Audioextraktion aus Video mit `ffmpeg`, Timing-Synchronisation für Videobearbeitungssoftware (z. B. Final Cut Pro), Sprecherdiarisierung mit `pyannote.audio`, Batch-Verarbeitung, Rauschunterdrückung und Leistungsoptimierung. Sie unterstützt Plattformen wie macOS, Linux und Windows und ist als Skill für Claude Code, Cursor und Codex konzipiert.

Funktioniert mit✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/MadAppGang/claude-code/tree/HEAD/plugins/video-editing/skills/transcription

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

plugin: video-editing updated: 2026-01-20

Transkription mit Whisper

Produktionsreife Muster für die Audio-/Videotranskription mit OpenAI Whisper.

Systemanforderungen

Installationsoptionen

Option 1: OpenAI Whisper (Python)

# macOS/Linux/Windows
pip install openai-whisper

# Überprüfen
whisper --help

Option 2: whisper.cpp (C++ - schneller)

# macOS
brew install whisper-cpp

# Linux - aus Quelle bauen
https://github.com/ggerganov/whisper.cpp
cd whisper.cpp && make

# Windows - vorgefertigte Binärdateien oder Build mit cmake

Option 3: Insanely Fast Whisper (GPU-beschleunigt)

pip install insanely-fast-whisper

Modellauswahl

ModellGrößeVRAMGenauigkeitGeschwindigkeitAnwendungsfall
tiny39M~1GBNiedrigAm schnellstenSchnelle Vorschauen
base74M~1GBMittelSchnellEntwurfstranskripte
small244M~2GBGutMittelAllgemeine Verwendung
medium769M~5GBBesserLangsamQualitätstranskripte
large-v31550M~10GBAm bestenAm langsamstenEndproduktion

Empfehlung: Beginnen Sie mit small für ein gutes Verhältnis von Geschwindigkeit zu Qualität. Verwenden Sie large-v3 für die endgültige Auslieferung.

Grundlegende Transkription

Mit OpenAI Whisper

# Grundlegende Transkription (automatische Spracherkennung)
whisper audio.mp3 --model small

# Sprache und Ausgabeformat angeben
whisper audio.mp3 --model medium --language en --output_format srt

# Mehrere Ausgabeformate
whisper audio.mp3 --model small --output_format all

# Mit Zeitstempeln und Wort-für-Wort-Timing
whisper audio.mp3 --model small --word_timestamps True

Mit whisper.cpp

# Zuerst Modell herunterladen
./models/download-ggml-model.sh base.en

# Transkribieren
./main -m models/ggml-base.en.bin -f audio.wav -osrt

# Mit Zeitstempeln
./main -m models/ggml-base.en.bin -f audio.wav -ocsv

Ausgabeformate

SRT (SubRip Subtitle)

1
00:00:01,000 --> 00:00:04,500
Hallo und willkommen zu diesem Video.

2
00:00:05,000 --> 00:00:08,200
Heute besprechen wir die Videobearbeitung.

VTT (WebVTT)

WEBVTT

00:00:01.000 --> 00:00:04.500
Hallo und willkommen zu diesem Video.

00:00:05.000 --> 00:00:08.200
Heute besprechen wir die Videobearbeitung.

JSON (mit Wort-für-Wort-Timing)

{
  "text": "Hallo und willkommen zu diesem Video.",
  "segments": [
    {
      "id": 0,
      "start": 1.0,
      "end": 4.5,
      "text": " Hallo und willkommen zu diesem Video.",
      "words": [
        {"word": "Hallo", "start": 1.0, "end": 1.3},
        {"word": "und", "start": 1.4, "end": 1.5},
        {"word": "willkommen", "start": 1.6, "end": 2.0},
        {"word": "zu", "start": 2.1, "end": 2.2},
        {"word": "diesem", "start": 2.3, "end": 2.5},
        {"word": "Video", "start": 2.6, "end": 3.0}
      ]
    }
  ]
}

Audioextraktion für die Transkription

Vor dem Transkribieren von Video extrahieren Sie Audio im optimalen Format:

# Audio als WAV extrahieren (16kHz, mono - optimal für Whisper)
ffmpeg -i video.mp4 -ar 16000 -ac 1 -c:a pcm_s16le audio.wav

# Als hochwertiges WAV für Archivierung extrahieren
ffmpeg -i video.mp4 -vn -c:a pcm_s16le audio.wav

# Als komprimiertes MP3 extrahieren (kleiner, funktioniert trotzdem)
ffmpeg -i video.mp4 -vn -c:a libmp3lame -q:a 2 audio.mp3

Zeitsynchronisation

Whisper JSON in FCP-Timing konvertieren

import json

def whisper_to_fcp_timing(whisper_json_path, fps=24):
    """Konvertiert die Whisper-JSON-Ausgabe in FCP-kompatibles Timing."""
    with open(whisper_json_path) as f:
        data = json.load(f)

    segments = []
    for seg in data.get("segments", []):
        segments.append({
            "start_time": seg["start"],
            "end_time": seg["end"],
            "start_frame": int(seg["start"] * fps),
            "end_frame": int(seg["end"] * fps),
            "text": seg["text"].strip(),
            "words": seg.get("words", [])
        })

    return segments

Frame-genaues Timing

# Exakte Frame-Anzahl und Dauer ermitteln
ffprobe -v error -count_frames -select_streams v:0 \
  -show_entries stream=nb_read_frames,duration,r_frame_rate \
  -of json video.mp4

Sprecherdiarisierung

Für Inhalte mit mehreren Sprechern pyannote.audio verwenden:

pip install pyannote.audio
from pyannote.audio import Pipeline

pipeline = Pipeline.from_pretrained("pyannote/[email protected]")
diarization = pipeline("audio.wav")

for turn, _, speaker in diarization.itertracks(yield_label=True):
    print(f"{turn.start:.1f}s - {turn.end:.1f}s: {speaker}")

Stapelverarbeitung

#!/bin/bash
# Alle Videos im Verzeichnis transkribieren

MODEL="small"
OUTPUT_DIR="transcripts"
mkdir -p "$OUTPUT_DIR"

for video in *.mp4 *.mov *.avi; do
  [[ -f "$video" ]] || continue

  base="${video%.*}"

  # Audio extrahieren
  ffmpeg -i "$video" -ar 16000 -ac 1 -c:a pcm_s16le "/tmp/${base}.wav" -y

  # Transkribieren
  whisper "/tmp/${base}.wav" --model "$MODEL" \
    --output_format all \
    --output_dir "$OUTPUT_DIR"

  # Temporäres Audio bereinigen
  rm "/tmp/${base}.wav"

  echo "Transkribiert: $video"
done

Qualitätsoptimierung

Genauigkeit verbessern

  1. Rauschunterdrückung vor der Transkription:
ffmpeg -i noisy_audio.wav -af "highpass=f=200,lowpass=f=3000,afftdn=nf=-25" clean_audio.wav
  1. Sprachhinweis verwenden:
whisper audio.mp3 --language en --model medium
  1. Anfänglichen Prompt für Kontext bereitstellen:
whisper audio.mp3 --initial_prompt "Technische Diskussion über Videobearbeitungssoftware."

Leistungstipps

  1. GPU-Beschleunigung (falls verfügbar):
whisper audio.mp3 --model large-v3 --device cuda
  1. In Abschnitten für lange Videos verarbeiten:
# Audio in 10-Minuten-Abschnitte aufteilen
# Jeden Abschnitt transkribieren
# Ergebnisse mit Zeitversatzanpassung zusammenführen

Fehlerbehandlung

# Audiodatei vor der Transkription validieren
validate_audio() {
  local file="$1"
  if ffprobe -v error -select_streams a:0 -show_entries stream=codec_type -of csv=p=0 "$file" 2>/dev/null | grep -q "audio"; then
    return 0
  else
    echo "Fehler: Kein Audiostream in $file gefunden"
    return 1
  fi
}

# Whisper-Installation prüfen
check_whisper() {
  if command -v whisper &> /dev/null; then
    echo "Whisper verfügbar"
    return 0
  else
    echo "Fehler: Whisper nicht installiert. Ausführen: pip install openai-whisper"
    return 1
  fi
}

Verwandte Fähigkeiten

  • ffmpeg-core - Audioextraktion und Vorverarbeitung
  • final-cut-pro - Transkripte als Titel/Marker importieren

Verwandte Skills