abschrift_korrigieren.py merkt sich die Prüfsumme der geschriebenen
Ausgabe in <Ausgabe>.parts/ausgabe.sha256. Weicht die vorhandene Datei
davon und vom neuen Ergebnis ab, bleibt sie erhalten; das Ergebnis kommt
nach <Name>.neu.korrigiert.txt (mit eigenem Bericht) und es gibt eine
Warnung. --ueberschreiben ersetzt die Datei trotzdem.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Füllwörter je Sprache: „er“ und „um“ sind nur im Englischen Füllwörter;
im Deutschen wurde ihre Streichung bisher nie gemeldet.
- Eine Änderung gilt nur noch als vom Glossar erklärt, wenn die neuen
Wörter zusammenhängend in einem Eintrag stehen und dem alten Text
ähneln. Bisher machte jedes Wort eines Eintrags („Sie“ aus „finden Sie“)
Änderungen unsichtbar, auch eingefügte Vornamen.
- aenderungen.py -l en-US findet die englische Wortliste.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Die Bedienungsanleitung führt von der Einrichtung über Rohtext, Glossar,
Korrektur und Prüfung des Berichts („Zu prüfen“) bis zum Nachbessern;
dazu Zeitauswahl, englische Beiträge, Dateien, Fortsetzen, Fehlermeldungen
mit Lösungen und eine Kurzreferenz aller Programme.
README: Verweis auf die Anleitung, zerrissene Optionstabelle von
abschrift_korrigieren.py repariert, Ablauf mit Vorprüfung und Blöcken,
Hinweis „05:00 = 5 Stunden“, Tests und Einstellungen ergänzt.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
vtt2txt.py entfernt Überlappungen nur noch, wenn die Datei ein rollendes
Fenster zeigt: mindestens die Hälfte der Blöcke wiederholt das Ende des
vorigen (YouTube-Auto-Untertitel: 97–99 %). Manuell erstellte Untertitel
werden vollständig übernommen, zwei gleiche Blöcke hintereinander bleiben
zwei.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Passt ein Absatz unter MIN_PARAGRAPH_SENTENCES an beide Nachbarn,
entscheidet das Modell, ob er den vorherigen Gedanken abschließt oder den
folgenden einleitet (JSON {"anschluss": "vorher"|"nachher"}); passt nur
einer, wird ohne Modell verbunden. Antworten werden in .parts/
zwischengespeichert. Der Cache und der JSON-Aufruf sind dafür als
cached_json() und chat_json() herausgezogen, vorhandene Caches gelten weiter.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
„z. B.“, „d. h.“, „Dr.“, „bzw.“, „ca.“, „e.g.“ und Ordnungszahlen wie
„2. Weltkrieg“ oder „am 24.“ gelten bei Satz-, Abschnitts- und
Absatzgrenzen nicht mehr als Satzende; „usw.“, „etc.“ und Jahreszahlen
weiterhin.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Verglichen wird der Text nach den Glossar-Ersetzungen mit dem Ergebnis des
Modells. Gemeldet werden ersetzte gültige Wörter (Systemwortliste
/usr/share/dict/ngerman bzw. american-english), stark veränderte, eingefügte
und gestrichene Wörter; Hörfehler-Korrekturen, reine Zusammen-/Getrennt-
schreibung, Füllwörter und Glossarwörter nicht. Eigener Abschnitt im
HTML-Bericht, Rahmen im Text, Liste in der Konsole. aenderungen.py versteht
dafür -g und -l.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Das Programm verarbeitet beliebige gesprochene Beiträge (Reden, Vorträge,
Interviews, Videos). Prompts und Texte sprechen von „Beitrag“ statt „Rede“;
README-Titel passend zum Projektverzeichnis youtube_abschrift_korrigieren.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Wörter hinter -z, die mit - und einer Ziffer beginnen, werden vor argparse
zu 0-… umgeschrieben; parse_ranges nimmt -B auch in Anführungszeichen an.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
-z 00:05:10 (ab), -z 0-00:20 (vom Anfang bis), -z 00:05-00:06 und mehrere
Bereiche, mit oder ohne Anführungszeichen.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Zeitformat: 00:05:10 (hⓂ️s), 00:20 (h:m = Minute 20), 25 (Minute 25)
- -z "00:05-00:06 00:10-00:12 00:25": A-B, A (bis Ende), -B (ab Anfang)
- jeder Bereich unter einer Überschrift [HH:MM:SS - HH:MM:SS] mit den
tatsächlichen Zeiten; nach der Satz-Erweiterung überlappende Blöcke
werden verschmolzen
- rede_korrigieren.py korrigiert und gliedert jeden Block einzeln; das
Modell sieht die Überschriften nicht
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Bei -s/-e werden angeschnittene Sätze an beiden Enden vollständig
aufgenommen (höchstens 30 s über den Zeitraum hinaus). rede_korrigieren.py
weist das Modell bei Ausschnitten zusätzlich an, nichts zu ergänzen.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- yt_untertitel.default_name(): <Kanal>_<Titel>_<Datum>, z. B.
John_Mearsheimer_Offensive_Realism_Episode_1_Origins_of_the_War_In_Ukraine_2026-07-30
- Bindestriche/Punkte im Wort bleiben, Kanal max. 40, Titel max. 60 Zeichen
an Wortgrenze; ohne Kanal und Titel die Video-ID
- Gilt ohne -o/-n in extract_text.py (statt output.txt), yt_untertitel.py
und rede_korrigieren.py -u (statt Video-ID)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Prompts je Sprache (PROMPTS): Korrektur, Absatzgliederung, Teilen,
Glossar-Hinweis; Englisch mit Prüfmarke [check: …] und Entfernen der
Sprecherwechsel-Marken „>>“
- -l gilt jetzt auch mit -i (Sprache der Rede, Standard de); mit -u wird die
Sprache des Original-Audios erkannt; nicht unterstützte Sprachen werden
abgelehnt
- Live geprüft mit 0LmCveTM788 (Mearsheimer): 12 Änderungen, u. a. richtig
„Vermont“ → „Wehrmacht“, aber falsch „February 25th“ → „24th“ – der
Änderungsbericht zeigt es
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Gefunden mit einem englischen Video (0LmCveTM788): ohne -l wurde Arabisch
gewählt, denn jede der 20 Synchron-Tonspuren hat eine eigene „-orig“-Spur.
- original_language(): aus „language“, sonst Tonspur mit „original“, sonst
die einzige „-orig“-Spur
- Automatische Untertitel nur in der Originalsprache (keine Synchronisation)
- Sprachen auch mit Region: „en“ findet manuelle Untertitel „en-US“
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- lahnstein.glossar.txt: 62 feste Ersetzungen und 11 Hinweise, erstellt aus
dem Rohtext und dem Entwurf von glossar_vorschlag.py
- krone-schmalz.glossar.txt: weitere Teltschik-Varianten, „von vorne herein“
- Glossar-Tests decken Lahnstein mit ab
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Erkenntnisse aus dem ersten echten Lauf (Lahnstein):
- Auch „sichere“ Funde des Modells sind oft falsch (Deckmäntelchen →
Deckmäntel, Lemmaß → Lebens); daher alle Einträge auskommentiert,
sichere zuerst
- -k verglich den Text nach dem Glossar mit einer Korrektur ohne Glossar und
zeigte verdrehte Paare (Brandt → Brand). Jetzt Vergleich mit dem Rohtext;
was ein Glossar-Eintrag ganz oder teilweise erledigt, entfällt
- Satzzeichen am Rand werden entfernt, keine Doppelungen mehr
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- extract_text.fetch_text() aus main() herausgelöst und wiederverwendet
- -u/--url statt -i, -l/--lang für die Sprache (Standard: Original-Audio)
- Ohne -o: <Video-ID>.korrigiert.txt; der Rohtext wird daneben gespeichert,
eine vorhandene, abweichende Rohtext-Datei aber nie überschrieben
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Das Modell sucht abschnittsweise vermutete Hörfehler (Namen, Orte,
Fremdwörter, Komposita); nur Funde, die wörtlich im Rohtext stehen
- Sichere Funde als Einträge, unsichere auskommentiert („# ?“)
- -k: Änderungen eines Korrekturlaufs, immer auskommentiert, da oft
zusammenhangsabhängig
- -g: vorhandene Glossare werden vorher angewendet und nicht erneut vorgeschlagen
- Modellantworten im Zwischenspeicher <Entwurf>.parts/
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Wortvergleich ohne Groß-/Kleinschreibung, Satzzeichen und „z. B.“-Varianten,
damit nur echte Wortänderungen auffallen
- HTML-Bericht: Änderungen nach Häufigkeit, korrigierter Text mit markierten
Ersetzungen (Original dahinter), Einfügungen, Streichungen, Prüfmarken
- rede_korrigieren.py schreibt den Bericht bei jedem Lauf (--kein-bericht)
und zeigt die häufigsten Änderungen; Vergleich mit dem Rohtext vor Glossar
- aenderungen.py als eigenes Skript für vorhandene Dateien
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- rede_korrigieren.py: -g mehrfach, Ersetzungen in Reihenfolge der Angabe
- Ersetzungen ohne Treffer werden gesammelt in einer Zeile gemeldet
- krone-schmalz.glossar.txt: wiederkehrende Namen und Hörfehler; die
Rede-Glossare enthalten nur noch Spezielles
- Magdeburg ergibt exakt denselben Text wie vorher, Ramstein profitiert von
den gemeinsamen Einträgen (Russland-Versteher, Status quo, vornherein …)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Kombiniert yt_untertitel.py und vtt2txt.py; die VTT bleibt temporär
- Standardsprache ist die des Original-Audios (original_language())
- -o Ausgabedatei, Standard output.txt
- Tests ohne Netz, README
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- yt_untertitel.py lädt über yt-dlp die Untertitel eines Videos als VTT:
manuelle Untertitel in der Sprache, sonst automatische in Originalsprache
(<lang>-orig); Maschinenübersetzungen werden nie genommen
- Tests ohne Netz (yt-dlp durch Fakes ersetzt)
- Testdaten: Lahnstein-Rede (VTT und daraus erzeugter Rohtext)
- README: Ablauf URL → VTT → TXT → Korrektur
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- magdeburg.glossar.txt: 64 feste Ersetzungen (Namen, Orte, Hörfehler)
und 10 Hinweis-Begriffe; jede Ersetzung trifft den Rohtext
- Test prüft jetzt beide Beispiel-Glossare gegen ihre Testdaten
- README: Glossare zu beiden Testdaten erwähnt
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- testdaten/magdeburg.de-orig.vtt (YouTube-Auto-Untertitel) und der daraus
mit vtt2txt.py erzeugte Rohtext magdeburg.de-orig.txt
- Test: jede Beispiel-VTT ergibt genau ihre .txt
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- vtt2txt.py als Kommandozeilenprogramm: -i nimmt mehrere Dateien und
Muster (auch ohne Shell-Expansion), -o eine Datei oder ein Verzeichnis
- Rollende YouTube-Untertitel über die Überlappung aufeinanderfolgender
Blöcke entdoppeln; echte Wiederholungen des Redners bleiben erhalten
- Fix: Blöcke nur an wirklich leeren Zeilen trennen; Text nach einer
Leerzeichen-Zeile ging verloren (u. a. das letzte [applaus])
- Schutz gegen Überschreiben der Eingabe und doppelte Ausgabedateien,
klare Meldung bei Nicht-UTF-8, Stapel läuft bei Fehlern weiter
- rede_korrigieren.py nimmt .vtt direkt an
- testdaten/ramstein.de.txt neu erzeugt (+ abschließendes [applaus])
- pytest: global installiertes asyncio-Plugin abschalten (Warnung)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
33 Tests mit Fakes für die Modellaufrufe: Abschnittsbildung, Glossar
(jede Ersetzung trifft die Testdaten), Streaming-Auswertung und
Fehlerfälle, Satztrennung, Absatzgliederung inkl. Teilen/Verbinden,
Zwischenspeicher und Kommandozeile.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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>
CLI (-i/-o/-g) korrigiert automatische Abschriften abschnittsweise mit
qwen3:32b: Satzende-Trennung, feste Glossar-Ersetzungen vor dem Modell,
Wortzahl-Prüfung, Zwischenspeicher mit Fortsetzen, Streaming-Fortschritt
und Absatzgliederung über Satznummern (3–10 Sätze pro Absatz).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>