docs: Dateiablage mit Arbeitsordnern, Abschluss und Video-Glossaren

README: neue Abschnitte „Dateiablage“ und „Abschluss: abschliessen.py“,
Standardpfade abschriften/<Name>/ in allen Beispielen und Optionstabellen,
gemeinsame und Video-Glossare, testdaten/<rede>/, Tests und Einstellungen.

Bedienungsanleitung: neuer Abschnitt 10 „Schritt 6: Abschließen und
aufräumen“ (folgende Abschnitte umnummeriert), Ablaufdiagramm und
Schnellstart mit Arbeitsordner und Abschluss, Glossar-Arten, Dateien je
Arbeitsordner, Hinweis „im Programmordner arbeiten“, Sicherung von
glossare/ und fertig/, Fehlermeldungen und Kurzreferenz von abschliessen.py.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Dieter Schlüter 2026-10-11 23:33:09 +02:00
commit 6f3eb23547

View file

@ -16,14 +16,15 @@ ist. Eine knappe technische Übersicht steht in der [README](README.md).
7. [Schritt 3: Korrigieren](#7-schritt-3-korrigieren)
8. [Schritt 4: Ergebnis prüfen](#8-schritt-4-ergebnis-prüfen)
9. [Schritt 5: Nachbessern und erneut laufen lassen](#9-schritt-5-nachbessern-und-erneut-laufen-lassen)
10. [Nur Ausschnitte bearbeiten (Zeitauswahl)](#10-nur-ausschnitte-bearbeiten-zeitauswahl)
11. [Englische Beiträge](#11-englische-beiträge)
12. [Dateien, die entstehen](#12-dateien-die-entstehen)
13. [Zwischenstände, Abbruch und Fortsetzen](#13-zwischenstände-abbruch-und-fortsetzen)
14. [Ein anderes Sprachmodell verwenden](#14-ein-anderes-sprachmodell-verwenden)
15. [Fehlermeldungen und Lösungen](#15-fehlermeldungen-und-lösungen)
16. [Tipps und häufige Fragen](#16-tipps-und-häufige-fragen)
17. [Kurzreferenz aller Befehle](#17-kurzreferenz-aller-befehle)
10. [Schritt 6: Abschließen und aufräumen](#10-schritt-6-abschließen-und-aufräumen)
11. [Nur Ausschnitte bearbeiten (Zeitauswahl)](#11-nur-ausschnitte-bearbeiten-zeitauswahl)
12. [Englische Beiträge](#12-englische-beiträge)
13. [Dateien, die entstehen](#13-dateien-die-entstehen)
14. [Zwischenstände, Abbruch und Fortsetzen](#14-zwischenstände-abbruch-und-fortsetzen)
15. [Ein anderes Sprachmodell verwenden](#15-ein-anderes-sprachmodell-verwenden)
16. [Fehlermeldungen und Lösungen](#16-fehlermeldungen-und-lösungen)
17. [Tipps und häufige Fragen](#17-tipps-und-häufige-fragen)
18. [Kurzreferenz aller Befehle](#18-kurzreferenz-aller-befehle)
---
@ -57,9 +58,15 @@ Die Werkzeuge im Überblick:
| `vtt2txt.py` | Untertiteldatei (`.vtt`) → Rohtext |
| `glossar_vorschlag.py` | Entwurf für ein Glossar (vermutete Hörfehler bei Namen und Begriffen) |
| `aenderungen.py` | Änderungsbericht für vorhandene Dateien erstellen |
| `abschliessen.py` | fertige Abschrift mit Quellenangabe nach `fertig/`, Arbeitsordner aufräumen |
Für den Normalfall braucht man nur `abschrift_korrigieren.py`, für bessere
Ergebnisse zusätzlich ein Glossar.
Für den Normalfall braucht man nur `abschrift_korrigieren.py` und am Ende
`abschliessen.py`, für bessere Ergebnisse zusätzlich ein Glossar.
**Wo die Dateien liegen:** Jedes Video bekommt einen eigenen Arbeitsordner
`abschriften/<Name>/`, in dem alles zu diesem Video entsteht. Ist die Abschrift
fertig, bleibt nur die Ergebnisdatei in `fertig/`. Gemeinsame Glossare liegen in
`glossare/`. Details in [Abschnitt 13](#13-dateien-die-entstehen).
---
@ -95,7 +102,7 @@ Environment="OLLAMA_NUM_PARALLEL=1"
Mit `OLLAMA_NUM_PARALLEL=4` landet ein Drittel des Modells auf der CPU, und ein
Lauf dauert etwa zwölfmal so lange. Mit weniger Grafikspeicher hilft ein kleineres
Modell (siehe [Abschnitt 14](#14-ein-anderes-sprachmodell-verwenden)), auf Kosten
Modell (siehe [Abschnitt 15](#15-ein-anderes-sprachmodell-verwenden)), auf Kosten
der Qualität.
### 2.3 Prüfen, ob alles bereit ist
@ -117,6 +124,10 @@ Lassen sich die Programme nicht mit `./…` starten („Keine Berechtigung“),
ausführbar machen: `chmod +x *.py`. Alternativ immer `python3 programm.py …`
aufrufen.
**Immer im Programmordner arbeiten.** Die Ordner `abschriften/`, `fertig/` und
`glossare/` werden relativ zum aktuellen Verzeichnis angelegt bzw. gesucht. Wer die
Programme aus einem anderen Verzeichnis startet, bekommt dort eigene, leere Ordner.
---
## 3. Schnellstart
@ -133,16 +144,25 @@ URLs die Shell.
Das Programm
1. lädt die Untertitel in der Originalsprache des Videos,
2. speichert den Rohtext, z. B. `GGBLahnstein_Prof_Gabriele_Krone-Schmalz_Respekt_geht_anders_2026-07-30.txt`,
3. korrigiert ihn abschnittsweise und gliedert ihn in Absätze,
4. schreibt das Ergebnis nach `…_2026-07-30.korrigiert.txt`
5. und den Änderungsbericht nach `…_2026-07-30.aenderungen.html`.
2. legt den Arbeitsordner an, z. B.
`abschriften/GGBLahnstein_Prof_Gabriele_Krone-Schmalz_Respekt_geht_anders_2026-07-30/`
(kurz `abschriften/<Name>/`),
3. speichert dort den Rohtext `<Name>.txt` und die Quellenangabe `<Name>.quelle.json`
(Titel, Kanal, Datum, URL),
4. korrigiert den Text abschnittsweise und gliedert ihn in Absätze,
5. schreibt das Ergebnis nach `<Name>.korrigiert.txt`
6. und den Änderungsbericht nach `<Name>.aenderungen.html`.
Eine einstündige Rede braucht mit `qwen3:32b` auf einer RTX 3090 etwa 6–8
Minuten. Danach den Bericht im Browser öffnen und die Liste **„Zu prüfen“**
durchgehen (siehe [Abschnitt 8](#8-schritt-4-ergebnis-prüfen)).
durchgehen (siehe [Abschnitt 8](#8-schritt-4-ergebnis-prüfen)). Ist alles erledigt:
Mit eigenem Dateinamen:
```bash
./abschliessen.py abschriften/<Name>
# → fertig/<Name>.txt mit Quellenkopf; der Arbeitsordner wird nach Rückfrage gelöscht
```
Mit eigenem Dateinamen (ohne Arbeitsordner):
```bash
./abschrift_korrigieren.py -u 'https://www.youtube.com/watch?v=rm6lADgf6GQ' -o lahnstein.korrigiert.txt
@ -155,8 +175,10 @@ und einem passenden Glossar. Ein Lauf dauert etwa zwei bis drei Minuten und zeig
Ergebnisse, auch den Änderungsbericht:
```bash
./abschrift_korrigieren.py -i tests/daten/beispiel.de.txt -g tests/daten/beispiel.glossar.txt -o beispiel.korrigiert.txt
# → beispiel.korrigiert.txt, beispiel.aenderungen.html
./abschrift_korrigieren.py -i tests/daten/beispiel.de.txt -g tests/daten/beispiel.glossar.txt \
-o abschriften/beispiel/beispiel.korrigiert.txt
# → abschriften/beispiel/: beispiel.korrigiert.txt, beispiel.aenderungen.html
./abschliessen.py abschriften/beispiel # Abschluss ausprobieren
```
---
@ -168,22 +190,28 @@ besonders bei vielen Namen, lohnt dieser Ablauf:
```text
YouTube-URL
│ Schritt 1: extract_text.py → rede.txt (Rohtext)
│ Schritt 1: extract_text.py → abschriften/<Name>/<Name>.txt (Rohtext)
▼
Rohtext ansehen
│ Schritt 2: glossar_vorschlag.py → rede.glossar.entwurf.txt
│ prüfen, übernehmen → glossare/rede.glossar.txt
│ Schritt 2: glossar_vorschlag.py → <Name>.glossar.entwurf.txt
│ prüfen, übernehmen → <Name>.glossar.txt (Video-Glossar)
│ bzw. glossare/<sprecher>.glossar.txt
▼
│ Schritt 3: abschrift_korrigieren.py → rede.korrigiert.txt
│ rede.aenderungen.html
│ Schritt 3: abschrift_korrigieren.py → <Name>.korrigiert.txt
│ <Name>.aenderungen.html
▼
│ Schritt 4: Bericht prüfen („Zu prüfen“)
│ Schritt 4: Bericht prüfen („Zu prüfen“), Text von Hand nacharbeiten
▼
│ Schritt 5: Glossar ergänzen, erneut laufen lassen
▼ (nur Geändertes wird neu berechnet)
│ (nur Geändertes wird neu berechnet)
▼
│ Schritt 6: abschliessen.py → fertig/<Name>.txt, Arbeitsordner gelöscht
▼
fertige Abschrift
```
Alle Dateien eines Videos liegen bis zum Abschluss in `abschriften/<Name>/`.
---
## 5. Schritt 1: Rohtext holen
@ -191,7 +219,8 @@ fertige Abschrift
### 5.1 Von YouTube: `extract_text.py`
```bash
./extract_text.py -u 'https://www.youtube.com/watch?v=rm6lADgf6GQ' -o rede.txt
./extract_text.py -u 'https://www.youtube.com/watch?v=rm6lADgf6GQ'
# → abschriften/<Name>/<Name>.txt und <Name>.quelle.json
```
Das Programm zeigt Titel, gewählte Untertitelspur und Ziel an:
@ -201,8 +230,10 @@ Video: Prof. Gabriele Krone-Schmalz – Respekt geht anders – …
Lade automatische Untertitel „de-orig“ …
```
Ohne `-o` entsteht ein Name aus Kanal, Titel und Datum (siehe
[Abschnitt 12.2](#122-standard-dateinamen)).
Ohne `-o` entsteht ein Name aus Kanal, Titel und Datum, und die Datei kommt in den
Arbeitsordner `abschriften/<Name>/` (siehe [Abschnitt 13.2](#132-standard-dateinamen)).
Mit `-o rede.txt` landet sie dort, wo man will; die Quellenangabe `rede.quelle.json`
entsteht daneben.
**Welche Untertitel werden genommen?**
@ -223,16 +254,19 @@ versteht `abschrift_korrigieren.py`.
Soll die Original-Untertiteldatei (`.vtt`, mit Zeitstempeln) erhalten bleiben:
```bash
./yt_untertitel.py -u 'https://www.youtube.com/watch?v=rm6lADgf6GQ' -n Lahnstein -d untertitel
# → untertitel/Lahnstein.de-orig.vtt
./vtt2txt.py -i untertitel/Lahnstein.de-orig.vtt
# → untertitel/Lahnstein.de-orig.txt
./yt_untertitel.py -u 'https://www.youtube.com/watch?v=rm6lADgf6GQ' -n Lahnstein
# → abschriften/Lahnstein/Lahnstein.de-orig.vtt (+ Lahnstein.quelle.json)
./vtt2txt.py -i abschriften/Lahnstein/Lahnstein.de-orig.vtt
# → abschriften/Lahnstein/Lahnstein.de-orig.txt
```
`-n` bestimmt den Namen von Datei und Arbeitsordner; mit `-d` wählt man ein anderes
Zielverzeichnis.
Achtung: `yt_untertitel.py` nimmt ohne `-l` Deutsch (`de`), nicht die
Originalsprache. Für englische Videos `-l en` angeben.
Die `.vtt`-Datei braucht man für die [Zeitauswahl](#10-nur-ausschnitte-bearbeiten-zeitauswahl)
Die `.vtt`-Datei braucht man für die [Zeitauswahl](#11-nur-ausschnitte-bearbeiten-zeitauswahl)
mit vorhandenen Dateien. `abschrift_korrigieren.py` nimmt sie auch direkt, der
Zwischenschritt über `vtt2txt.py` ist dann nur nötig, um den Rohtext anzusehen
oder ein Glossar daraus zu erstellen.
@ -293,33 +327,43 @@ Regeln für feste Ersetzungen:
die Ersetzungen ohne Treffer. Bei einem Glossar für genau diesen Beitrag deutet
„ohne Treffer“ auf einen Tippfehler.
### 6.2 Mehrere Glossare kombinieren
### 6.2 Gemeinsame Glossare und Video-Glossare
Bewährt hat sich ein **gemeinsames Glossar** pro Redner oder Kanal (wiederkehrende
Namen und Hörfehler) plus eines **je Beitrag**:
Namen und Hörfehler) plus ein **Video-Glossar** je Beitrag:
| Art | Ablage | Verwendung |
|---|---|---|
| gemeinsames Glossar | `glossare/krone-schmalz.glossar.txt` | mit `-g` angeben |
| Video-Glossar | `abschriften/<Name>/<Name>.glossar.txt`, heißt wie sein Ordner | **automatisch** |
```bash
./abschrift_korrigieren.py -i rede.txt -g glossare/krone-schmalz.glossar.txt -g glossare/rede.glossar.txt
./abschrift_korrigieren.py -i abschriften/<Name>/<Name>.txt -g glossare/krone-schmalz.glossar.txt
# Glossar glossare/krone-schmalz.glossar.txt: 7 Begriffe, 36 feste Ersetzungen
# Glossar abschriften/<Name>/<Name>.glossar.txt (Video-Glossar, automatisch): …
```
Das gemeinsame Glossar zuerst angeben, damit seine Ersetzungen zuerst greifen.
Das Video-Glossar wird nach den mit `-g` angegebenen angewendet; so greifen die
gemeinsamen Ersetzungen zuerst. Dasselbe gilt für `glossar_vorschlag.py` und
`aenderungen.py`. Beim Abschluss nennt `abschliessen.py` die Einträge des
Video-Glossars, die noch in keinem gemeinsamen Glossar stehen. Was auch in anderen
Videos vorkommen wird (Namen, Orte), gehört dann ins gemeinsame Glossar; der Rest
verschwindet mit dem Arbeitsordner.
**Ablage:** Glossare gehören ins Verzeichnis `glossare/` im Programmordner, z. B.
`glossare/krone-schmalz.glossar.txt` und `glossare/ramstein.glossar.txt`. Sie
enthalten Namen realer Personen und Hörfehler realer Beiträge und werden deshalb
nicht ins Git-Repository übernommen: `glossare/` und jede Datei `*.glossar.txt` sind
über `.gitignore` ausgeschlossen und bleiben nur auf dem eigenen Rechner. Das ist
gewollt; Glossare deshalb gesondert sichern. Einzige Ausnahme ist das kleine,
leicht nachvollziehbare Glossar zur erfundenen Beispielrede in
`tests/daten/beispiel.glossar.txt`, das sich gut als Vorlage eignet.
**Glossare bleiben lokal.** Sie enthalten Namen realer Personen und Hörfehler realer
Beiträge und werden deshalb nicht ins Git-Repository übernommen (`glossare/`,
`abschriften/` und `*.glossar.txt` stehen in `.gitignore`). `glossare/` deshalb
gesondert sichern (siehe [Abschnitt 17](#17-tipps-und-häufige-fragen)). Als Vorlage
eignet sich das kleine Glossar zur erfundenen Beispielrede in
`tests/daten/beispiel.glossar.txt`.
### 6.3 Entwurf vom Modell: `glossar_vorschlag.py`
Statt den ganzen Rohtext zu lesen, kann das Modell einen ersten Entwurf liefern:
```bash
./glossar_vorschlag.py -i rede.txt -g glossare/krone-schmalz.glossar.txt
# → rede.glossar.entwurf.txt
./glossar_vorschlag.py -i abschriften/<Name>/<Name>.txt -g glossare/krone-schmalz.glossar.txt
# → abschriften/<Name>/<Name>.glossar.entwurf.txt
```
Das Modell sucht abschnittsweise vermutete Hörfehler: Namen, Orte, Fremdwörter,
@ -346,8 +390,8 @@ irrt sich oft (im Beispiel ist „Deckmäntelchen“ richtig). Eine falsche fest
Ersetzung verdirbt den Text unbemerkt. Deshalb:
1. Jeden Eintrag prüfen, im Zweifel im Rohtext oder Video nachsehen.
2. Brauchbare Zeilen ohne `# ? ` ins Glossar des Beitrags (oder ins gemeinsame)
kopieren.
2. Brauchbare Zeilen ohne `# ? ` ins Video-Glossar
`abschriften/<Name>/<Name>.glossar.txt` (oder ins gemeinsame) kopieren.
3. Unsichere Namen lieber als **Begriff** (ohne `=>`) aufnehmen.
Nach einem Korrekturlauf kann der Entwurf zusätzlich die Wörter auflisten, die das
@ -355,7 +399,8 @@ Modell geändert hat. Das zeigt Hörfehler, die man als feste Ersetzung absicher
möchte, und Fehlgriffe des Modells:
```bash
./glossar_vorschlag.py -i rede.txt -k rede.korrigiert.txt -g glossare/krone-schmalz.glossar.txt -g glossare/rede.glossar.txt
./glossar_vorschlag.py -i abschriften/<Name>/<Name>.txt -k abschriften/<Name>/<Name>.korrigiert.txt \
-g glossare/krone-schmalz.glossar.txt
```
Diese Einträge stehen in einem eigenen Abschnitt mit ihrer Anzahl, z. B.
@ -367,11 +412,12 @@ entfernen.
## 7. Schritt 3: Korrigieren
```bash
./abschrift_korrigieren.py -i rede.txt -g glossare/krone-schmalz.glossar.txt -g glossare/rede.glossar.txt
./abschrift_korrigieren.py -i abschriften/<Name>/<Name>.txt -g glossare/krone-schmalz.glossar.txt
```
Statt `-i rede.txt` geht auch `-i rede.de.vtt` (Untertiteldatei) oder
`-u URL` (direkt von YouTube).
Statt des Rohtexts geht auch die Untertiteldatei (`-i …/<Name>.de-orig.vtt`) oder
`-u URL` (direkt von YouTube). Das Ergebnis entsteht neben der Eingabe, also im
Arbeitsordner; das Video-Glossar dort wird automatisch verwendet.
### 7.1 Was das Programm tut
@ -401,7 +447,7 @@ Ein gekürztes Beispiel mit Erläuterungen:
Modell: qwen3:32b
Sprache des Beitrags: de
Glossar glossare/krone-schmalz.glossar.txt: 7 Begriffe, 36 feste Ersetzungen
Glossar glossare/ramstein.glossar.txt: 2 Begriffe, 15 feste Ersetzungen
Glossar abschriften/<Name>/<Name>.glossar.txt (Video-Glossar, automatisch): 2 Begriffe, 15 feste Ersetzungen
Ersetzt 2× „Willly Brand“ → „Willy Brandt“ ← feste Ersetzungen mit Treffern
Ersetzt 6× „Rammstein“ → „Ramstein“
13 Ersetzung(en) ohne Treffer: „Hostelchik“, … ← bei gemeinsamen Glossaren normal
@ -565,13 +611,60 @@ vorhandene Datei als von Hand geändert.
---
## 10. Nur Ausschnitte bearbeiten (Zeitauswahl)
## 10. Schritt 6: Abschließen und aufräumen
Ist der Text geprüft und nachgearbeitet, wird das Video abgeschlossen. Danach zählt
nur noch die Ergebnisdatei; Rohtext, Bericht, Zwischenstände und Video-Glossar
werden nicht mehr gebraucht.
```bash
./abschliessen.py abschriften/<Name>
```
Was dabei passiert:
1. **Prüfen:** Gibt es noch `[prüfen: …]`-Marken im Text oder eine ungeklärte
`<Name>.neu.korrigiert.txt` (siehe [Abschnitt 9](#9-schritt-5-nachbessern-und-erneut-laufen-lassen)),
bricht das Programm ab und nennt die Stellen. Erst klären, dann erneut aufrufen.
Mit `--trotzdem` wird auch mit offenen Marken abgeschlossen.
2. **Übernehmen:** Jedes Ergebnis kommt nach `fertig/`, bei Ausschnitten jedes
einzeln, mit einem Quellenkopf:
```text
Titel: Prof. Gabriele Krone-Schmalz – Respekt geht anders
Kanal: GGBLahnstein
Datum: 2026-07-30
Quelle: https://www.youtube.com/watch?v=rm6lADgf6GQ
Abgeschlossen: 2026-10-11
Vielen Dank. Liebe Gäste, …
```
Die Angaben stammen aus `<Name>.quelle.json`, die beim Download entsteht. Fehlt
sie (z. B. bei einer eigenen `.vtt`), nennt der Kopf nur die Datei. Eine Datei in
`fertig/` mit anderem Text wird nie überschrieben.
3. **Glossar sichten:** Einträge des Video-Glossars, die in keinem Glossar unter
`glossare/` stehen, werden aufgelistet. Brauchbares jetzt ins gemeinsame Glossar
übernehmen.
4. **Aufräumen:** Der Inhalt des Arbeitsordners wird angezeigt, dann kommt die Frage
`Arbeitsordner … löschen? [j/N]`. Nur `j` löscht. Wer „n“ antwortet, kann
`abschliessen.py` später erneut aufrufen; die Datei in `fertig/` wird dann als
bereits übernommen erkannt. Mit `--ja` wird ohne Frage gelöscht.
**Schutz vor Versehen:** Nie gelöscht werden Ordner, die andere Dateien enthalten als
die, die das Programm selbst anlegt (`.txt`, `.vtt`, `.html`, `.json`, `*.parts/`),
außerdem das Aufrufverzeichnis und alles in `testdaten/`, `glossare/`, `tests/` und
`fertig/`. Das Programm nennt dann den Grund, und der Ordner bleibt stehen.
---
## 11. Nur Ausschnitte bearbeiten (Zeitauswahl)
Mit `-z` wird nur ein Teil des Videos bearbeitet. Das geht mit `-u` (YouTube) und
mit `.vtt`-Dateien, nicht mit reinem Text (der hat keine Zeitstempel). Dieselbe
Option kennen `extract_text.py` und `vtt2txt.py`.
### 10.1 Zeitangaben
### 11.1 Zeitangaben
| Angabe | Bedeutung |
|---|---|
@ -584,7 +677,7 @@ Option kennen `extract_text.py` und `vtt2txt.py`.
> Reicht ein Bereich über das Ende des Videos hinaus, weist das Programm darauf hin
> und nennt die Länge der Untertitel.
### 10.2 Bereiche
### 11.2 Bereiche
| Aufruf | Bearbeitet |
|---|---|
@ -601,7 +694,7 @@ und werden nach der Zeit sortiert. Beispiel:
./abschrift_korrigieren.py -u 'https://www.youtube.com/watch?v=…' -z 00:05-00:06 00:25
```
### 10.3 Was dabei herauskommt
### 11.3 Was dabei herauskommt
Alle Bereiche landen in **einer** Datei, jeder mit einer Überschrift, die seine
tatsächlichen Zeiten nennt:
@ -625,7 +718,7 @@ Also, wenn ihr Programme baut mit Claude Code, …
---
## 11. Englische Beiträge
## 12. Englische Beiträge
Mit `-u` erkennt das Programm die Sprache des Videos selbst. Bei Dateien die
Sprache angeben:
@ -646,28 +739,44 @@ Andere Sprachen lehnt das Programm mit einer Meldung ab.
---
## 12. Dateien, die entstehen
## 13. Dateien, die entstehen
### 12.1 Übersicht
### 13.1 Übersicht
Beispiel für `-i rede.txt` bzw. `-o rede.korrigiert.txt`:
Im Programmordner entstehen diese Verzeichnisse. Alle bleiben nur auf dem eigenen
Rechner, keines geht ins Git-Repository:
```text
glossare/ gemeinsame Glossare je Sprecher oder Kanal
abschriften/<Name>/ Arbeitsordner, einer je Video
fertig/ abgeschlossene Abschriften, je eine Datei
testdaten/<rede>/ nur für Entwickler: echte Reden für Regressionstests
```
Im Arbeitsordner `abschriften/<Name>/`:
| Datei | Inhalt | Wird überschrieben? |
|---|---|---|
| `rede.txt` | Rohtext (bei `-u` automatisch gespeichert) | nie, wenn sie schon mit anderem Inhalt existiert (dann Warnung) |
| `rede.korrigiert.txt` | korrigierte Abschrift | ja, außer sie wurde von Hand geändert (dann `rede.neu.korrigiert.txt`, siehe [Abschnitt 9](#9-schritt-5-nachbessern-und-erneut-laufen-lassen)) |
| `rede.aenderungen.html` | Änderungsbericht | ja, bei jedem Lauf |
| `rede.korrigiert.parts/` | Zwischenstände | wird ergänzt; darf jederzeit gelöscht werden |
| `rede.glossar.entwurf.txt` | Glossar-Entwurf von `glossar_vorschlag.py` | ja |
| `rede.glossar.entwurf.parts/` | Zwischenstände des Entwurfs | wird ergänzt |
| `<Name>.txt` | Rohtext (bei `-u` automatisch gespeichert) | nie, wenn sie schon mit anderem Inhalt existiert (dann Warnung) |
| `<Name>.quelle.json` | Titel, Kanal, Datum, URL (beim Download) | ja, beim nächsten Download |
| `<Name>.glossar.txt` | Video-Glossar (legt man selbst an) | nie |
| `<Name>.korrigiert.txt` | korrigierte Abschrift | ja, außer sie wurde von Hand geändert (dann `<Name>.neu.korrigiert.txt`, siehe [Abschnitt 9](#9-schritt-5-nachbessern-und-erneut-laufen-lassen)) |
| `<Name>.aenderungen.html` | Änderungsbericht | ja, bei jedem Lauf |
| `<Name>.korrigiert.parts/` | Zwischenstände | wird ergänzt; darf jederzeit gelöscht werden |
| `<Name>.glossar.entwurf.txt` | Glossar-Entwurf von `glossar_vorschlag.py` | ja |
| `<Name>.glossar.entwurf.parts/` | Zwischenstände des Entwurfs | wird ergänzt |
Ohne `-o` liegt das Ergebnis neben der Eingabedatei. Bei `-u` ohne `-o` im
aktuellen Verzeichnis. Fehlende Verzeichnisse in `-o` werden angelegt.
Ausschnitte (`-z`) desselben Videos landen im selben Ordner, mit den Bereichen im
Namen. Mit `abschliessen.py` kommt jedes Ergebnis als `fertig/<Name>.txt` heraus, und
der Arbeitsordner wird gelöscht ([Abschnitt 10](#10-schritt-6-abschließen-und-aufräumen)).
### 12.2 Standard-Dateinamen
Mit `-i` liegt das Ergebnis neben der Eingabedatei; mit `-o` dort, wo man will
(fehlende Verzeichnisse werden angelegt).
Ohne `-o` (bzw. `-n` bei `yt_untertitel.py`) entsteht der Name aus **Kanal, Titel
und Hochladedatum**:
### 13.2 Standard-Dateinamen
Ohne `-o` (bzw. `-n` bei `yt_untertitel.py`) entsteht der Name des Arbeitsordners
und der Dateien aus **Kanal, Titel und Hochladedatum**:
| Video | Name |
|---|---|
@ -680,7 +789,7 @@ denselben Namen.
---
## 13. Zwischenstände, Abbruch und Fortsetzen
## 14. Zwischenstände, Abbruch und Fortsetzen
Jeder fertig korrigierte Abschnitt, jede Absatzgliederung und jede Entscheidung
beim Verbinden kurzer Absätze wird sofort in `<Ausgabe>.parts/` gespeichert.
@ -691,11 +800,12 @@ beim Verbinden kurzer Absätze wird sofort in `<Ausgabe>.parts/` gespeichert.
- Ändern sich Modell, Anweisung, Glossar oder der Text eines Abschnitts, wird genau
dieser Teil neu berechnet; alte Zwischenstände stören nicht.
- Der Ordner `*.parts/` darf jederzeit gelöscht werden; dann wird alles neu
berechnet.
berechnet. Er wächst mit jeder Modell- oder Glossaränderung, weil alte Fassungen
liegen bleiben. Beim Abschluss verschwindet er mit dem Arbeitsordner.
---
## 14. Ein anderes Sprachmodell verwenden
## 15. Ein anderes Sprachmodell verwenden
```bash
ollama pull qwen3:14b
@ -713,7 +823,7 @@ Weitere Einstellungen (Abschnittsgröße, Absatzlängen, Schwellen) sind in der
---
## 15. Fehlermeldungen und Lösungen
## 16. Fehlermeldungen und Lösungen
| Meldung | Ursache und Lösung |
|---|---|
@ -725,7 +835,7 @@ Weitere Einstellungen (Abschnittsgröße, Absatzlängen, Schwellen) sind in der
| `Keine Untertitel in „de“ (weder manuell noch automatisch in Originalsprache).` | Das Video hat keine passende Spur. Die Meldung listet die vorhandenen Sprachen; ggf. mit `-l` eine davon wählen. Ist das Video z. B. englisch, `-l en` angeben. |
| `Der Beitrag ist auf „fr“; unterstützt: de, en (-l).` | Nur Deutsch und Englisch werden korrigiert. |
| `-z braucht Zeitstempel: nur mit .vtt-Eingabe oder -u.` | Zeitauswahl geht nicht mit `.txt`. Die `.vtt`-Datei oder `-u URL` verwenden. |
| `-z/--zeitraeume: …` | Zeitangabe ungültig oder Bereiche überschneiden sich, siehe [Abschnitt 10](#10-nur-ausschnitte-bearbeiten-zeitauswahl). |
| `-z/--zeitraeume: …` | Zeitangabe ungültig oder Bereiche überschneiden sich, siehe [Abschnitt 11](#11-nur-ausschnitte-bearbeiten-zeitauswahl). |
| `Die Eingabedatei enthält im gewählten Zeitraum keinen Text.` | Im Bereich gibt es keine Untertitel. Zeiten prüfen (`05:00` = 5 Stunden!). |
| `Die Eingabedatei ist leer.` | Datei prüfen. |
| `Ausgabedatei darf nicht die Eingabedatei sein.` | Mit `-o` einen anderen Namen wählen. |
@ -738,12 +848,16 @@ Weitere Einstellungen (Abschnittsgröße, Absatzlängen, Schwellen) sind in der
| `Hinweis: keine Wortliste für „de“ (Paket wngerman); …` | `sudo apt install wngerman` (für Englisch `wamerican`). Ohne Wortliste fehlt im Bericht nur der Grund „gültiges Wort ersetzt“. |
| `Hinweis: keine Untertitel im Bereich …` | Einer von mehreren Bereichen ist leer und wird übersprungen. In Klammern steht, wo die Untertitel enden. |
| `Hinweis: Bereich Anfang – 05:00:00 reicht über das Ende der Untertitel hinaus (…)` | Der Bereich endet nach dem Video. Meist war Minute statt Stunde gemeint: `05:00` ist Stunde 5, Minute 5 ist `00:05`. Bearbeitet wird trotzdem, bis zum Ende des Videos. |
| `Noch offene Prüfmarken. Erst klären, oder mit --trotzdem abschließen.` | `abschliessen.py`: Im Text stehen noch `[prüfen: …]`-Marken (die Zeilen werden genannt). Auflösen und erneut aufrufen. |
| `Ungeklärter Konflikt: <Name>.neu.korrigiert.txt …` | `abschliessen.py`: Erst die eigenen Änderungen übertragen bzw. entscheiden, welche Fassung gilt, und die `.neu`-Datei löschen. |
| `Gibt es schon in fertig mit anderem Text: …` | In `fertig/` liegt schon eine Abschrift dieses Namens mit anderem Inhalt. Sie wird nie überschrieben: umbenennen oder entfernen, dann erneut aufrufen. |
| `Arbeitsordner … bleibt erhalten: Fremde Datei: …` | Im Arbeitsordner liegt eine Datei, die das Programm nicht selbst anlegt (z. B. Notizen). Die fertige Abschrift ist trotzdem in `fertig/`; den Ordner selbst aufräumen. |
| `Keine Berechtigung` beim Start mit `./…` | `chmod +x *.py` oder `python3 programm.py …` aufrufen. |
| Lauf ist extrem langsam | Das Modell passt nicht in den Grafikspeicher. `OLLAMA_NUM_PARALLEL=1` setzen (siehe [Abschnitt 2.2](#22-grafikkarte)), andere Programme mit Grafikspeicherbedarf schließen oder ein kleineres Modell wählen. Prüfen mit `ollama ps` (Spalte PROCESSOR sollte „100% GPU“ zeigen). |
---
## 16. Tipps und häufige Fragen
## 17. Tipps und häufige Fragen
**Wie bekomme ich die besten Ergebnisse?**
Mit einem guten Glossar. Das Modell kennt viele Namen nicht oder schreibt sie
@ -777,17 +891,28 @@ for url in 'https://www.youtube.com/watch?v=AAA' 'https://www.youtube.com/watch?
done
```
**Wie sichere ich meine Daten?**
Wertvoll sind auf Dauer nur `glossare/` (gewachsenes Wissen über Namen und Hörfehler)
und `fertig/` (die Ergebnisse). Beide sind bewusst nicht im öffentlichen
Git-Repository. Am einfachsten ist ein zweites, **privates** Git-Repository nur für
diese beiden Ordner, oder man nimmt sie ins normale Backup auf. `abschriften/` muss
nicht gesichert werden; was dort liegt, ist entweder in Arbeit oder lässt sich neu
erzeugen.
**Welche Videos sind noch in Arbeit?**
Alle, die einen Ordner in `abschriften/` haben: `ls abschriften/`.
**Wo sind die Absätze?**
In `*.korrigiert.txt` trennt eine Leerzeile die Absätze. Viele Textprogramme
übernehmen das beim Einfügen direkt.
**Kann ich das Ergebnis weiterverarbeiten (Word, LibreOffice)?**
Die `.korrigiert.txt` ist reiner UTF-8-Text und lässt sich überall öffnen oder
einfügen.
Die Dateien in `fertig/` (und die `.korrigiert.txt`) sind reiner UTF-8-Text und
lassen sich überall öffnen oder einfügen.
---
## 17. Kurzreferenz aller Befehle
## 18. Kurzreferenz aller Befehle
### `abschrift_korrigieren.py`
@ -795,7 +920,7 @@ einfügen.
|---|---|
| `-i DATEI` | Eingabe: Rohtext (`.txt`) oder Untertitel (`.vtt`) |
| `-u URL` | statt `-i`: YouTube-Video laden und korrigieren |
| `-o DATEI` | Ausgabedatei (Standard: `<Eingabe>.korrigiert.txt` bzw. `<Kanal>_<Titel>_<Datum>.korrigiert.txt`) |
| `-o DATEI` | Ausgabedatei (Standard: `<Eingabe>.korrigiert.txt`, mit `-u` `abschriften/<Name>/<Name>.korrigiert.txt`) |
| `-g DATEI` | Glossar, mehrfach möglich (Reihenfolge zählt) |
| `-l SPRACHE` | `de` oder `en` (Standard: `de`, mit `-u` die Originalsprache) |
| `-m MODELL` | Ollama-Modell (Standard: `qwen3:32b`) |
@ -809,7 +934,7 @@ einfügen.
| Option | Bedeutung |
|---|---|
| `-u URL` | YouTube-URL (Pflicht) |
| `-o DATEI` | Ausgabedatei (Standard: `<Kanal>_<Titel>_<Datum>.txt`) |
| `-o DATEI` | Ausgabedatei (Standard: `abschriften/<Name>/<Name>.txt`) |
| `-l SPRACHE` | Sprache der Untertitel (Standard: Originalsprache) |
| `-f` | Fließtext mit 80 Zeichen pro Zeile |
| `-z BEREICH …`, `--exakt` | Zeitauswahl wie oben |
@ -819,9 +944,9 @@ einfügen.
| Option | Bedeutung |
|---|---|
| `-u URL` | YouTube-URL (Pflicht) |
| `-n NAME` | Dateiname ohne Endung (Standard: `<Kanal>_<Titel>_<Datum>`) |
| `-n NAME` | Name von Datei und Arbeitsordner (Standard: `<Kanal>_<Titel>_<Datum>`) |
| `-l SPRACHE` | Sprache (Standard: `de`) |
| `-d VERZEICHNIS` | Zielverzeichnis (Standard: aktuelles) |
| `-d VERZEICHNIS` | Zielverzeichnis (Standard: `abschriften/<Name>/`) |
### `vtt2txt.py`
@ -851,4 +976,16 @@ einfügen.
| `-g DATEI` | Glossare der Korrektur, mehrfach möglich |
| `-l SPRACHE` | Sprache für die Wortliste (Standard: `de`) |
### `abschliessen.py`
| Option | Bedeutung |
|---|---|
| `ORDNER` | Arbeitsordner, z. B. `abschriften/<Name>` (Pflicht) |
| `--ziel VERZEICHNIS` | für fertige Abschriften (Standard: `fertig`) |
| `--glossare VERZEICHNIS` | gemeinsame Glossare für den Glossar-Hinweis (Standard: `glossare`) |
| `--ja` | Arbeitsordner ohne Rückfrage löschen |
| `--trotzdem` | auch mit offenen Prüfmarken abschließen |
Das Video-Glossar `abschriften/<Name>/<Name>.glossar.txt` verwenden
`abschrift_korrigieren.py`, `glossar_vorschlag.py` und `aenderungen.py` automatisch.
Jedes Programm zeigt mit `--help` seine Optionen.