abschrift_korrigieren.py.
- Python 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
Automatische YouTube-Untertitel (.vtt) und Rohtext (.txt) als Eingabe für ramstein.glossar.txt; README um Abschnitt Testdaten ergänzt. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> |
||
| .gitignore | ||
| README.md | ||
| rede_korrigieren.py | ||
youtube_rede_korrigieren
Korrigiert automatische Abschriften deutscher Reden (z. B. YouTube-Untertitel als Text) mit einem lokalen Sprachmodell über Ollama: Rechtschreibung, Satzzeichen, Hörfehler, Absätze – möglichst wortgetreu, ohne Zusammenfassung oder Glättung.
Voraussetzungen
- Python 3 (nur Standardbibliothek)
- Ollama auf
127.0.0.1:11434mit dem Modellqwen3:32b(ollama pull qwen3:32b)
Für gute Geschwindigkeit muss das Modell komplett in den Grafikspeicher passen.
Mit OLLAMA_NUM_PARALLEL=1 braucht qwen3:32b bei 16k Kontext rund 24 GB
(eine RTX 3090). Bei OLLAMA_NUM_PARALLEL=4 landet ein Drittel auf der CPU und
der Lauf wird etwa 12-mal langsamer.
Aufruf
./rede_korrigieren.py -i rede.txt # → rede.korrigiert.txt
./rede_korrigieren.py -i rede.txt -o out/rede.txt # eigene Ausgabedatei
./rede_korrigieren.py -i rede.txt -g rede.glossar.txt # mit Glossar
| Option | Bedeutung |
|---|---|
-i, --input |
Eingabedatei (Rohabschrift), Pflicht |
-o, --output |
Ausgabedatei; Standard: <Eingabe ohne Endung>.korrigiert.txt neben der Eingabe |
-g, --glossar |
Glossar mit festen Ersetzungen und Schreibweisen |
Ablauf
- Fließtext: Untertitel-Zeilenumbrüche werden entfernt.
- Feste Ersetzungen aus dem Glossar (
falsch => richtig) werden im Rohtext angewendet, bevor das Modell ihn sieht. - Korrektur: Der Text wird in Abschnitte von ca. 1200 Wörtern geteilt (immer am Satzende) und abschnittsweise vom Modell korrigiert. Fortschritt wird live angezeigt.
- Wortzahl-Prüfung: Weicht die Wortzahl eines Abschnitts um mehr als 5 % ab, gibt es eine Warnung (mögliche Auslassungen oder Ergänzungen).
- Absätze: Das Modell nennt nur Satznummern, an denen ein Absatz beginnt; der Text selbst wird dabei nicht verändert. Absätze über 10 Sätze werden nochmals geteilt, Absätze unter 3 Sätzen mit dem Nachbarn verbunden.
Zweifelhafte Stellen markiert das Modell als Lesart [prüfen: Originalwortlaut].
Glossar
Eine Zeile pro Eintrag, # leitet Kommentare ein:
# feste Ersetzung (ganze Wörter, Groß-/Kleinschreibung zählt, Reihenfolge = Datei)
Willly Brand => Willy Brandt
Kremmel => Kreml
# Hinweis fürs Modell (korrekte Schreibweise)
Multi-Domain Task Force
Ersetzungen ohne Treffer werden gemeldet (Tippfehler im Glossar).
ramstein.glossar.txt ist ein Beispiel für eine Rede über die US Air Base Ramstein.
Testdaten
testdaten/ enthält eine Rede über die US Air Base Ramstein:
ramstein.de.vtt: automatische YouTube-Untertitel (Original)ramstein.de.txt: daraus gewonnener Rohtext (Eingabe für das Programm)
./rede_korrigieren.py -i testdaten/ramstein.de.txt -g ramstein.glossar.txt
# → testdaten/ramstein.de.korrigiert.txt (nicht versioniert)
Ein Lauf dauert mit qwen3:32b vollständig auf einer RTX 3090 etwa 6 Minuten.
Zwischenstände
Jeder fertige Abschnitt und jede Absatzgliederung wird in <Ausgabe>.parts/
gespeichert. Ein erneuter Lauf überspringt alles, was schon berechnet ist.
Ändern sich Modell, Prompt, Glossar oder Text eines Abschnitts, wird genau dieser
Teil neu berechnet. Den Ordner kann man jederzeit löschen.
Einstellungen
Oben in rede_korrigieren.py:
| Konstante | Standard | Bedeutung |
|---|---|---|
MODEL |
qwen3:32b |
Ollama-Modell |
CHUNK_SIZE |
1200 | Wörter pro Korrekturabschnitt |
MAX_WORD_DEVIATION |
0.05 | Warnschwelle Wortzahl |
MAX_PARAGRAPH_SENTENCES |
10 | längster erlaubter Absatz |
MIN_PARAGRAPH_SENTENCES |
3 | kürzester gewünschter Absatz |
Bekannte Grenzen
qwen3:32bohne Denkmodus erkennt Hörfehler ohne Glossar nur teilweise und setzt kaum[prüfen: …]-Marken. Bekannte Fehler gehören deshalb ins Glossar.- Das Verbinden kurzer Absätze achtet nicht auf den Inhalt.
- Abkürzungen wie „z. B.“ oder „2. Weltkrieg“ können als Satzende gelten; das beeinflusst nur mögliche Absatzgrenzen, nicht den Text.