Steht „Alexander Dobrindt“ im Glossar, machte das Modell aus „Dobrind“
den vollen Namen. Der Glossar-Teil des Prompts (de/en) verlangt jetzt,
nur die Schreibweise des Gesagten zu korrigieren. Läufe mit Glossar
werden dadurch einmal neu berechnet.
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>
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>
- „Bahrs“ → „Bahr’s“ ist jetzt eine Änderung; ’ ' ` gelten als gleich,
Anführungszeichen am Wortrand zählen weiterhin nicht
- Prüfmarken auch englisch: [check: …]
- output/ (eigene Ergebnisse und Testläufe) in .gitignore
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>
yt-dlp ruft zur Prüfung „ffmpeg -bsfs“ auf; das System-ffmpeg 6.1.1
(Ubuntu) legt dabei eine leere Datei „3“ im Arbeitsverzeichnis an.
yt-dlp läuft jetzt in einem temporären Verzeichnis mit absolutem
Zielpfad, die Datei verschwindet mit dem Verzeichnis.
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>
- yt_untertitel.no_track_message() für yt_untertitel.py und extract_text.py
- tests/conftest.py: Fixtures fake_yt_dlp und yt_dlp_installed
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>