docs: ausführliche BEDIENUNGSANLEITUNG.md, README auf aktuellem Stand
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>
This commit is contained in:
parent
3da372a941
commit
1e3c813137
2 changed files with 862 additions and 14 deletions
811
BEDIENUNGSANLEITUNG.md
Normal file
811
BEDIENUNGSANLEITUNG.md
Normal file
|
|
@ -0,0 +1,811 @@
|
||||||
|
# Bedienungsanleitung
|
||||||
|
|
||||||
|
Diese Anleitung führt Schritt für Schritt von einem YouTube-Video (oder einer
|
||||||
|
Untertiteldatei) zu einer sauberen, lesbaren Abschrift. Sie erklärt, was die
|
||||||
|
Programme tun, wie man ihre Ergebnisse prüft und was bei Fehlermeldungen zu tun
|
||||||
|
ist. Eine knappe technische Übersicht steht in der [README](README.md).
|
||||||
|
|
||||||
|
## Inhalt
|
||||||
|
|
||||||
|
1. [Wozu die Programme dienen](#1-wozu-die-programme-dienen)
|
||||||
|
2. [Einrichtung (einmalig)](#2-einrichtung-einmalig)
|
||||||
|
3. [Schnellstart](#3-schnellstart)
|
||||||
|
4. [Der Arbeitsablauf im Überblick](#4-der-arbeitsablauf-im-überblick)
|
||||||
|
5. [Schritt 1: Rohtext holen](#5-schritt-1-rohtext-holen)
|
||||||
|
6. [Schritt 2: Glossar anlegen](#6-schritt-2-glossar-anlegen)
|
||||||
|
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)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Wozu die Programme dienen
|
||||||
|
|
||||||
|
YouTube erzeugt für viele Videos automatische Untertitel. Diese enthalten den
|
||||||
|
gesprochenen Text, aber:
|
||||||
|
|
||||||
|
- ohne oder mit falschen Satzzeichen und ohne Groß-/Kleinschreibung nach Regeln,
|
||||||
|
- mit Hörfehlern der Spracherkennung, besonders bei Namen („Willly Brand“ statt
|
||||||
|
„Willy Brandt“, „Kremmel“ statt „Kreml“),
|
||||||
|
- ohne Absätze, in kurzen Zeilen und mit vielen Wiederholungen (rollendes Fenster).
|
||||||
|
|
||||||
|
Die Programme machen daraus eine **möglichst wortgetreue, gut lesbare Abschrift**.
|
||||||
|
Die Arbeit übernimmt ein Sprachmodell, das **lokal auf dem eigenen Rechner** läuft
|
||||||
|
(über Ollama); es werden keine Texte an fremde Dienste geschickt. Ausnahme: Der
|
||||||
|
Download der Untertitel von YouTube.
|
||||||
|
|
||||||
|
Das Modell soll **nicht zusammenfassen und nicht umformulieren**. Es korrigiert nur
|
||||||
|
Rechtschreibung, Satzzeichen und erkennbare Hörfehler und gliedert in Absätze. Weil
|
||||||
|
Sprachmodelle trotzdem gelegentlich eigenmächtig Wörter ändern, schreibt jeder Lauf
|
||||||
|
einen **Änderungsbericht**, der solche Stellen gezielt zur Prüfung vorlegt.
|
||||||
|
|
||||||
|
Die Werkzeuge im Überblick:
|
||||||
|
|
||||||
|
| Programm | Wofür |
|
||||||
|
|---|---|
|
||||||
|
| `abschrift_korrigieren.py` | **Hauptprogramm:** Abschrift korrigieren, auf Wunsch direkt von der YouTube-URL |
|
||||||
|
| `extract_text.py` | YouTube-URL → Rohtext (Textdatei), ohne Korrektur |
|
||||||
|
| `yt_untertitel.py` | YouTube-URL → Untertiteldatei (`.vtt`) |
|
||||||
|
| `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 |
|
||||||
|
|
||||||
|
Für den Normalfall braucht man nur `abschrift_korrigieren.py`, für bessere
|
||||||
|
Ergebnisse zusätzlich ein Glossar.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. Einrichtung (einmalig)
|
||||||
|
|
||||||
|
### 2.1 Was benötigt wird
|
||||||
|
|
||||||
|
| Bestandteil | Wozu | Installation (Debian/Ubuntu) |
|
||||||
|
|---|---|---|
|
||||||
|
| Python 3.9 oder neuer | führt die Programme aus | meist vorhanden; `python3 --version` |
|
||||||
|
| yt-dlp | lädt Untertitel von YouTube | `pip install yt-dlp` (oder `pipx install yt-dlp`) |
|
||||||
|
| Ollama | führt das Sprachmodell aus | siehe <https://ollama.com/download> |
|
||||||
|
| Modell `qwen3:32b` | das Sprachmodell | `ollama pull qwen3:32b` |
|
||||||
|
| Wortliste `wngerman` | für den Änderungsbericht (erkennt ersetzte echte Wörter) | `sudo apt install wngerman` |
|
||||||
|
| Wortliste `wamerican` | dasselbe für englische Beiträge | `sudo apt install wamerican` |
|
||||||
|
|
||||||
|
Weitere Python-Pakete sind nicht nötig. Ohne yt-dlp lassen sich nur vorhandene
|
||||||
|
`.vtt`- oder `.txt`-Dateien bearbeiten. Ohne Wortliste läuft alles, nur der
|
||||||
|
Änderungsbericht erkennt dann ersetzte gültige Wörter nicht (es erscheint ein
|
||||||
|
Hinweis).
|
||||||
|
|
||||||
|
### 2.2 Grafikkarte
|
||||||
|
|
||||||
|
Für eine brauchbare Geschwindigkeit muss das Modell vollständig in den
|
||||||
|
Grafikspeicher passen. `qwen3:32b` braucht dafür rund **24 GB** (z. B. eine
|
||||||
|
RTX 3090), wenn Ollama nur eine Anfrage gleichzeitig bearbeitet:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# in der Ollama-Dienstkonfiguration (sudo systemctl edit ollama):
|
||||||
|
[Service]
|
||||||
|
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
|
||||||
|
der Qualität.
|
||||||
|
|
||||||
|
### 2.3 Prüfen, ob alles bereit ist
|
||||||
|
|
||||||
|
Im Programmordner:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd youtube_abschrift_korrigieren
|
||||||
|
ollama list | grep qwen3:32b # Modell vorhanden?
|
||||||
|
yt-dlp --version # yt-dlp vorhanden?
|
||||||
|
./abschrift_korrigieren.py --help # Programm startet?
|
||||||
|
```
|
||||||
|
|
||||||
|
`abschrift_korrigieren.py` und `glossar_vorschlag.py` prüfen beim Start selbst, ob
|
||||||
|
Ollama läuft und das Modell installiert ist, und brechen sonst mit einem Hinweis
|
||||||
|
ab, bevor irgendetwas heruntergeladen wird.
|
||||||
|
|
||||||
|
Lassen sich die Programme nicht mit `./…` starten („Keine Berechtigung“), einmalig
|
||||||
|
ausführbar machen: `chmod +x *.py`. Alternativ immer `python3 programm.py …`
|
||||||
|
aufrufen.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Schnellstart
|
||||||
|
|
||||||
|
Ein YouTube-Video in einem Befehl korrigieren:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./abschrift_korrigieren.py -u 'https://www.youtube.com/watch?v=rm6lADgf6GQ'
|
||||||
|
```
|
||||||
|
|
||||||
|
Die URL in **einfache Anführungszeichen** setzen, sonst stört das `&` in manchen
|
||||||
|
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`.
|
||||||
|
|
||||||
|
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)).
|
||||||
|
|
||||||
|
Mit eigenem Dateinamen:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./abschrift_korrigieren.py -u 'https://www.youtube.com/watch?v=rm6lADgf6GQ' -o lahnstein.korrigiert.txt
|
||||||
|
# → lahnstein.korrigiert.txt, lahnstein.txt (Rohtext), lahnstein.aenderungen.html
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. Der Arbeitsablauf im Überblick
|
||||||
|
|
||||||
|
Für einen einzelnen Beitrag genügt der Schnellstart. Für gute Ergebnisse,
|
||||||
|
besonders bei vielen Namen, lohnt dieser Ablauf:
|
||||||
|
|
||||||
|
```text
|
||||||
|
YouTube-URL
|
||||||
|
│ Schritt 1: extract_text.py → rede.txt (Rohtext)
|
||||||
|
▼
|
||||||
|
Rohtext ansehen
|
||||||
|
│ Schritt 2: glossar_vorschlag.py → rede.glossar.entwurf.txt
|
||||||
|
│ prüfen, übernehmen → rede.glossar.txt
|
||||||
|
▼
|
||||||
|
│ Schritt 3: abschrift_korrigieren.py → rede.korrigiert.txt
|
||||||
|
│ rede.aenderungen.html
|
||||||
|
▼
|
||||||
|
│ Schritt 4: Bericht prüfen („Zu prüfen“)
|
||||||
|
▼
|
||||||
|
│ Schritt 5: Glossar ergänzen, erneut laufen lassen
|
||||||
|
▼ (nur Geändertes wird neu berechnet)
|
||||||
|
fertige Abschrift
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. Schritt 1: Rohtext holen
|
||||||
|
|
||||||
|
### 5.1 Von YouTube: `extract_text.py`
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./extract_text.py -u 'https://www.youtube.com/watch?v=rm6lADgf6GQ' -o rede.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
Das Programm zeigt Titel, gewählte Untertitelspur und Ziel an:
|
||||||
|
|
||||||
|
```text
|
||||||
|
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)).
|
||||||
|
|
||||||
|
**Welche Untertitel werden genommen?**
|
||||||
|
|
||||||
|
1. Manuell erstellte Untertitel in der gewünschten Sprache, sonst
|
||||||
|
2. automatische Untertitel in der **Originalsprache** des Videos (`de-orig`).
|
||||||
|
|
||||||
|
Ohne `-l` gilt die Sprache des Original-Audios. Automatisch *übersetzte*
|
||||||
|
Untertitel werden nie genommen, ebenso wenig die Spuren KI-synchronisierter
|
||||||
|
Tonspuren. Gibt es keine passende Spur, nennt das Programm die vorhandenen
|
||||||
|
Sprachen.
|
||||||
|
|
||||||
|
**Lesbarer Fließtext:** Mit `-f` wird der Rohtext auf 80 Zeichen umbrochen statt
|
||||||
|
in kurzen Untertitelzeilen gespeichert. Das ist angenehmer zum Lesen; beides
|
||||||
|
versteht `abschrift_korrigieren.py`.
|
||||||
|
|
||||||
|
### 5.2 Mit Untertiteldatei: `yt_untertitel.py` und `vtt2txt.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 testdaten
|
||||||
|
# → testdaten/Lahnstein.de-orig.vtt
|
||||||
|
./vtt2txt.py -i testdaten/Lahnstein.de-orig.vtt
|
||||||
|
# → testdaten/Lahnstein.de-orig.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
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)
|
||||||
|
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.
|
||||||
|
|
||||||
|
`vtt2txt.py` entfernt Zeitstempel, Formatierungen und die Wiederholungen des
|
||||||
|
rollenden Fensters der YouTube-Auto-Untertitel. Manuell erstellte Untertitel ohne
|
||||||
|
rollendes Fenster erkennt es selbst und übernimmt sie vollständig.
|
||||||
|
|
||||||
|
### 5.3 Andere Quellen
|
||||||
|
|
||||||
|
Jede Textdatei (UTF-8) mit einer Abschrift kann direkt korrigiert werden, ebenso
|
||||||
|
jede WebVTT-Datei (`.vtt`), z. B. aus anderen Videoportalen oder
|
||||||
|
Transkriptionsprogrammen.
|
||||||
|
|
||||||
|
### 5.4 Den Rohtext ansehen
|
||||||
|
|
||||||
|
Ein kurzer Blick in den Rohtext lohnt sich: Welche Namen kommen vor, wie sind sie
|
||||||
|
falsch erkannt? Diese Funde kommen ins Glossar (nächster Schritt).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. Schritt 2: Glossar anlegen
|
||||||
|
|
||||||
|
Ein Glossar ist eine Textdatei mit bekannten Hörfehlern und korrekten
|
||||||
|
Schreibweisen. Es ist **der wirksamste Hebel für gute Ergebnisse**: Das Modell
|
||||||
|
erkennt viele Hörfehler, besonders bei Namen, nicht von allein.
|
||||||
|
|
||||||
|
### 6.1 Aufbau
|
||||||
|
|
||||||
|
```text
|
||||||
|
# Kommentare beginnen mit #, leere Zeilen werden ignoriert.
|
||||||
|
|
||||||
|
# --- Feste Ersetzungen: falsch => richtig ---
|
||||||
|
Willly Brand => Willy Brandt
|
||||||
|
Kremmel => Kreml
|
||||||
|
Egon Bar => Egon Bahr
|
||||||
|
|
||||||
|
# --- Begriffe: korrekte Schreibweisen als Hinweis fürs Modell ---
|
||||||
|
Multi-Domain Task Force
|
||||||
|
Michail Gorbatschow
|
||||||
|
```
|
||||||
|
|
||||||
|
Es gibt zwei Arten von Einträgen:
|
||||||
|
|
||||||
|
| Eintrag | Wirkung |
|
||||||
|
|---|---|
|
||||||
|
| `falsch => richtig` | **Feste Ersetzung.** Wird im Rohtext ersetzt, *bevor* das Modell ihn sieht. Nur ganze Wörter, Groß-/Kleinschreibung zählt, Reihenfolge wie in der Datei. Zuverlässig, aber nur für eindeutige Fälle. |
|
||||||
|
| `Begriff` | **Hinweis.** Wird dem Modell als korrekte Schreibweise mitgegeben; das Modell korrigiert ähnlich klingende Varianten selbst. Für Namen, die in vielen Varianten falsch erkannt werden. |
|
||||||
|
|
||||||
|
Regeln für feste Ersetzungen:
|
||||||
|
|
||||||
|
- **Nur eindeutige Fälle.** „das => dass“ wäre fatal, weil es jedes „das“ ersetzt.
|
||||||
|
Mehrdeutige Wörter mit einem Nachbarwort eindeutig machen:
|
||||||
|
`über einen Kampf zu scheren => über einen Kamm zu scheren`.
|
||||||
|
- **Längere Einträge vor kürzeren**, wenn sie sich überschneiden
|
||||||
|
(`Willly Brands => Willy Brandts` vor `Willly Brand => Willy Brandt`).
|
||||||
|
- Das Programm meldet, wie oft jede Ersetzung gegriffen hat, und listet am Ende
|
||||||
|
die Ersetzungen ohne Treffer. Bei einem Glossar für genau diesen Beitrag deutet
|
||||||
|
„ohne Treffer“ auf einen Tippfehler.
|
||||||
|
|
||||||
|
### 6.2 Mehrere Glossare kombinieren
|
||||||
|
|
||||||
|
Bewährt hat sich ein **gemeinsames Glossar** pro Redner oder Kanal (wiederkehrende
|
||||||
|
Namen und Hörfehler) plus eines **je Beitrag**:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./abschrift_korrigieren.py -i rede.txt -g krone-schmalz.glossar.txt -g rede.glossar.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
Das gemeinsame Glossar zuerst angeben, damit seine Ersetzungen zuerst greifen.
|
||||||
|
Im Programmordner liegen Beispiele: `krone-schmalz.glossar.txt` (gemeinsam),
|
||||||
|
`ramstein.glossar.txt`, `magdeburg.glossar.txt`, `lahnstein.glossar.txt`
|
||||||
|
(je eine Rede) und `iamfabian.glossar.txt` (Kanal über KI-Coding-Tools).
|
||||||
|
|
||||||
|
### 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 krone-schmalz.glossar.txt
|
||||||
|
# → rede.glossar.entwurf.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
Das Modell sucht abschnittsweise vermutete Hörfehler: Namen, Orte, Fremdwörter,
|
||||||
|
Fachbegriffe, falsch zusammen- oder getrennt geschriebene Wörter. Behalten werden
|
||||||
|
nur Funde, die wörtlich im Rohtext stehen. Einträge der mit `-g` angegebenen
|
||||||
|
Glossare werden nicht erneut vorgeschlagen.
|
||||||
|
|
||||||
|
Der Entwurf sieht so aus:
|
||||||
|
|
||||||
|
```text
|
||||||
|
# Glossar-ENTWURF für rede.txt (glossar_vorschlag.py, Modell qwen3:32b)
|
||||||
|
# Alle Einträge sind auskommentiert. …
|
||||||
|
|
||||||
|
# --- Vom Modell vermutete Hörfehler, laut Modell sicher ---
|
||||||
|
# ? Hostelchick => Horst Teltschik
|
||||||
|
# ? Kremmel => Kreml
|
||||||
|
|
||||||
|
# --- Vom Modell vermutete Hörfehler, laut Modell unsicher ---
|
||||||
|
# ? Deckmäntelchen => Deckmäntel
|
||||||
|
```
|
||||||
|
|
||||||
|
**Alle Einträge sind auskommentiert** (`# ? `), auch die „sicheren“: Das Modell
|
||||||
|
irrt sich oft (im Beispiel ist „Deckmäntelchen“ richtig). Eine falsche feste
|
||||||
|
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.
|
||||||
|
3. Unsichere Namen lieber als **Begriff** (ohne `=>`) aufnehmen.
|
||||||
|
|
||||||
|
Nach einem Korrekturlauf kann der Entwurf zusätzlich die Wörter auflisten, die das
|
||||||
|
Modell geändert hat. Das zeigt Hörfehler, die man als feste Ersetzung absichern
|
||||||
|
möchte, und Fehlgriffe des Modells:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./glossar_vorschlag.py -i rede.txt -k rede.korrigiert.txt -g krone-schmalz.glossar.txt -g rede.glossar.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
Diese Einträge stehen in einem eigenen Abschnitt mit ihrer Anzahl, z. B.
|
||||||
|
`# ? vorne herein => vornherein (2×)`; die Anzahl in Klammern beim Übernehmen
|
||||||
|
entfernen.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. Schritt 3: Korrigieren
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./abschrift_korrigieren.py -i rede.txt -g krone-schmalz.glossar.txt -g rede.glossar.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
Statt `-i rede.txt` geht auch `-i rede.de.vtt` (Untertiteldatei) oder
|
||||||
|
`-u URL` (direkt von YouTube).
|
||||||
|
|
||||||
|
### 7.1 Was das Programm tut
|
||||||
|
|
||||||
|
1. **Prüfen:** Läuft Ollama, ist das Modell installiert?
|
||||||
|
2. **Fließtext:** Die Zeilenumbrüche der Untertitel werden entfernt.
|
||||||
|
3. **Feste Ersetzungen** aus den Glossaren werden angewendet.
|
||||||
|
4. **Korrektur:** Der Text wird in Abschnitte von etwa 1200 Wörtern geteilt, immer
|
||||||
|
am Satzende, und Abschnitt für Abschnitt korrigiert. Abkürzungen wie „z. B.“,
|
||||||
|
„Dr.“, „bzw.“ und Ordnungszahlen wie „2. Weltkrieg“ gelten dabei nicht als
|
||||||
|
Satzende.
|
||||||
|
5. **Wortzahl-Prüfung:** Weicht die Wortzahl eines Abschnitts um mehr als 5 % ab,
|
||||||
|
warnt das Programm (das Modell könnte etwas ausgelassen oder ergänzt haben).
|
||||||
|
6. **Absätze:** Das Modell nennt die Sätze, mit denen ein neuer Absatz beginnt; der
|
||||||
|
Text selbst bleibt dabei unverändert. Absätze über 10 Sätze werden nochmals
|
||||||
|
geteilt. Absätze unter 3 Sätzen werden mit einem Nachbarn verbunden; passen
|
||||||
|
beide, entscheidet das Modell nach dem Inhalt, ob der kurze Absatz den
|
||||||
|
vorherigen Gedanken abschließt oder den folgenden einleitet.
|
||||||
|
7. **Änderungsbericht:** Rohtext und Ergebnis werden Wort für Wort verglichen.
|
||||||
|
|
||||||
|
### 7.2 Die Ausgabe im Terminal
|
||||||
|
|
||||||
|
Ein gekürztes Beispiel mit Erläuterungen:
|
||||||
|
|
||||||
|
```text
|
||||||
|
Modell: qwen3:32b
|
||||||
|
Sprache des Beitrags: de
|
||||||
|
Glossar krone-schmalz.glossar.txt: 7 Begriffe, 36 feste Ersetzungen
|
||||||
|
Glossar ramstein.glossar.txt: 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
|
||||||
|
Bearbeite Abschnitt 1/5 …
|
||||||
|
812/1203 Wörter, 61 s ← Fortschritt (läuft live mit)
|
||||||
|
fertig nach 88 s (25.2 Tokens/s)
|
||||||
|
…
|
||||||
|
Gliedere Absätze 1/3 …
|
||||||
|
Teile langen Absatz (Sätze 18–34) …
|
||||||
|
39 kurze Absätze verbunden (30 mit dem vorherigen, 9 mit dem folgenden)
|
||||||
|
310 Sätze in 56 Absätzen (kürzester: 3, längster: 10 Sätze)
|
||||||
|
Fertig: rede.korrigiert.txt
|
||||||
|
Änderungen gegenüber dem Rohtext: 82
|
||||||
|
5× „Rammstein“ → „Ramstein“
|
||||||
|
…
|
||||||
|
Zu prüfen: 19 Stellen ← diese Stellen ansehen!
|
||||||
|
gültiges Wort ersetzt: „in“ → „dass“
|
||||||
|
stark verändert: „OSola“ → „Ursula“
|
||||||
|
…
|
||||||
|
Bericht: rede.aenderungen.html
|
||||||
|
|
||||||
|
19 Stelle(n) zu prüfen, siehe rede.aenderungen.html
|
||||||
|
```
|
||||||
|
|
||||||
|
Eine Warnung zur Wortzahl sieht so aus und wird am Ende wiederholt:
|
||||||
|
|
||||||
|
```text
|
||||||
|
WARNUNG: Abschnitt 3: 1180 → 1090 Wörter (8% Abweichung), auf Auslassungen/Ergänzungen prüfen: rede.korrigiert.parts/part003-….txt
|
||||||
|
```
|
||||||
|
|
||||||
|
Dann diesen Abschnitt im Bericht genauer ansehen (Streichungen sind rot
|
||||||
|
durchgestrichen).
|
||||||
|
|
||||||
|
### 7.3 Das Ergebnis
|
||||||
|
|
||||||
|
`rede.korrigiert.txt` enthält den Fließtext mit einer Leerzeile zwischen den
|
||||||
|
Absätzen. Zweifelhafte Stellen markiert das Modell so:
|
||||||
|
|
||||||
|
```text
|
||||||
|
… die Lesart des Modells [prüfen: Originalwortlaut der Abschrift] …
|
||||||
|
```
|
||||||
|
|
||||||
|
Diese Marken vor der Weitergabe auflösen: nachsehen (z. B. im Video), richtige
|
||||||
|
Fassung stehen lassen, Marke löschen.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 8. Schritt 4: Ergebnis prüfen
|
||||||
|
|
||||||
|
Den Bericht `rede.aenderungen.html` im Browser öffnen:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
xdg-open rede.aenderungen.html
|
||||||
|
```
|
||||||
|
|
||||||
|
### 8.1 Aufbau des Berichts
|
||||||
|
|
||||||
|
1. **Kopfzeile:** Wortzahlen, Anzahl der Ersetzungen, Einfügungen, Streichungen,
|
||||||
|
Prüfmarken und Stellen „zu prüfen“.
|
||||||
|
2. **Zu prüfen:** Tabelle der verdächtigen Änderungen mit Grund, Text vorher,
|
||||||
|
korrigiertem Text und Zusammenhang. **Hier beginnen.**
|
||||||
|
3. **Alle Änderungen nach Häufigkeit:** jede Wortänderung mit Anzahl, z. B.
|
||||||
|
`5 Rammstein → Ramstein`. Gut, um wiederkehrende Hörfehler fürs Glossar zu
|
||||||
|
finden.
|
||||||
|
4. **Korrigierter Text** mit farbigen Markierungen:
|
||||||
|
|
||||||
|
| Darstellung | Bedeutung |
|
||||||
|
|---|---|
|
||||||
|
| gelb hinterlegt, dahinter grau „(Original)“ | ersetztes Wort; beim Darüberfahren mit der Maus erscheint das Original |
|
||||||
|
| grün | eingefügtes Wort |
|
||||||
|
| rot durchgestrichen | gestrichenes Wort |
|
||||||
|
| orange `[prüfen: …]` | Prüfmarke des Modells |
|
||||||
|
| rot umrahmt | Stelle „zu prüfen“; beim Darüberfahren erscheint der Grund |
|
||||||
|
| rot umrahmtes ⚠ | hier hat das Modell eigenmächtig etwas gestrichen |
|
||||||
|
|
||||||
|
Groß-/Kleinschreibung, Satzzeichen und Schreibweisen wie „z.B.“ → „z. B.“ werden
|
||||||
|
nicht markiert, damit die eigentlichen Wortänderungen sichtbar bleiben.
|
||||||
|
|
||||||
|
### 8.2 Die Liste „Zu prüfen“
|
||||||
|
|
||||||
|
Hier stehen Änderungen, die das Modell **von sich aus** gemacht hat und die den
|
||||||
|
Sinn verändern können. Was die Glossare ersetzt haben, erscheint hier nie.
|
||||||
|
|
||||||
|
| Grund | Bedeutung | Beispiel |
|
||||||
|
|---|---|---|
|
||||||
|
| gültiges Wort ersetzt | Das alte Wort ist ein echtes Wort (steht in der Wortliste), also vermutlich kein Hörfehler. | „Professor“ → „Professorin“, „unterschreiben“ → „unterscheiden“ |
|
||||||
|
| stark verändert | Das neue Wort ähnelt dem alten kaum (unter 60 %). | „CT1“ → „ZDF“ |
|
||||||
|
| eingefügt | Das Modell hat ein Wort ergänzt. | „∅“ → „ist“ |
|
||||||
|
| gestrichen | Das Modell hat ein Wort weggelassen (Füllwörter wie „äh“ zählen nicht). | „Sicherungskonzepte geht“ → „∅“ |
|
||||||
|
|
||||||
|
Nicht gemeldet werden ähnlich bleibende Hörfehler-Korrekturen („Gradwanderung“ →
|
||||||
|
„Gratwanderung“), reine Zusammen-, Getrennt- und Bindestrich-Schreibung („Clan
|
||||||
|
Kriminalität“ → „Clankriminalität“) und Wörter, die im Glossar stehen.
|
||||||
|
|
||||||
|
**So arbeitet man die Liste ab:**
|
||||||
|
|
||||||
|
1. Für jede Zeile den Zusammenhang lesen.
|
||||||
|
2. Ist die Änderung richtig (oft bei Grammatik: „das“ → „dass“, „sehe“ → „sähe“),
|
||||||
|
nichts tun.
|
||||||
|
3. Ist sie falsch, im korrigierten Text zurückändern. Tritt der Fehler öfter auf
|
||||||
|
oder geht es um einen Namen, besser das Glossar ergänzen (nächster Schritt).
|
||||||
|
4. Bei „gestrichen“ prüfen, ob wirklich etwas fehlt: Oft entfernt das Modell
|
||||||
|
versprochene Wortanfänge oder Dopplungen, manchmal aber einen ganzen Satzteil.
|
||||||
|
|
||||||
|
Die Liste findet die meisten eigenmächtigen Änderungen, aber nicht alle: Ersetzt
|
||||||
|
das Modell ein falsch erkanntes Wort durch ein *ähnliches, aber falsches*, fällt
|
||||||
|
das nicht auf. Stichproben im Text bleiben sinnvoll.
|
||||||
|
|
||||||
|
### 8.3 Bericht für vorhandene Dateien: `aenderungen.py`
|
||||||
|
|
||||||
|
Wurde der korrigierte Text von Hand nachbearbeitet oder mit `--kein-bericht`
|
||||||
|
erstellt, lässt sich der Bericht jederzeit neu erzeugen. Mit denselben Glossaren
|
||||||
|
wie bei der Korrektur, damit deren Ersetzungen nicht als verdächtig gelten:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./aenderungen.py -a rede.txt -b rede.korrigiert.txt -g krone-schmalz.glossar.txt -g rede.glossar.txt
|
||||||
|
# → rede.aenderungen.html
|
||||||
|
./aenderungen.py -a talk.txt -b talk.korrigiert.txt -l en # englischer Beitrag
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 9. Schritt 5: Nachbessern und erneut laufen lassen
|
||||||
|
|
||||||
|
Funde aus dem Bericht ins Glossar übernehmen und dieselbe Befehlszeile noch einmal
|
||||||
|
ausführen. Das Programm hat alle Zwischenergebnisse gespeichert und berechnet nur
|
||||||
|
neu, was sich geändert hat:
|
||||||
|
|
||||||
|
- **Neue feste Ersetzung:** Neu korrigiert wird der Abschnitt mit dem ersten
|
||||||
|
Treffer. Ändert die Ersetzung die Zahl der Wörter (z. B. „Horstelt“ → „Horst
|
||||||
|
Teltschik“), verschieben sich die folgenden Abschnittsgrenzen, und auch die
|
||||||
|
späteren Abschnitte werden neu korrigiert.
|
||||||
|
- **Neuer Begriff** (ohne `=>`): Begriffe stehen in der Anweisung an das Modell,
|
||||||
|
deshalb wird der ganze Text neu korrigiert.
|
||||||
|
- Die Absatzgliederung wird für geänderte Textstellen ebenfalls neu bestimmt; das
|
||||||
|
geht schnell.
|
||||||
|
|
||||||
|
Von Hand nachbearbeitete `*.korrigiert.txt` werden bei einem erneuten Lauf
|
||||||
|
**überschrieben**. Handarbeit deshalb erst ganz am Ende machen oder die Datei vorher
|
||||||
|
unter anderem Namen sichern.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 10. 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
|
||||||
|
|
||||||
|
| Angabe | Bedeutung |
|
||||||
|
|---|---|
|
||||||
|
| `00:05:10` | Stunden:Minuten:Sekunden (auch `0:5:10`) |
|
||||||
|
| `00:20` | **Stunden:Minuten**, also Minute 20 |
|
||||||
|
| `25` | Minute 25 |
|
||||||
|
|
||||||
|
> **Vorsicht:** `05:00` bedeutet 5 Stunden, nicht 5 Minuten. Für „5 Minuten“
|
||||||
|
> `00:05` oder `5` schreiben, für 5 Minuten 30 Sekunden `00:05:30`.
|
||||||
|
|
||||||
|
### 10.2 Bereiche
|
||||||
|
|
||||||
|
| Aufruf | Bearbeitet |
|
||||||
|
|---|---|
|
||||||
|
| `-z 00:05-00:06` | Minute 5 bis Minute 6 |
|
||||||
|
| `-z 0:03:17-0:05:25` | 3:17 bis 5:25 |
|
||||||
|
| `-z 00:05:10` | ab 5:10 bis zum Ende |
|
||||||
|
| `-z 0-00:20` oder `-z -00:20` | vom Anfang bis Minute 20 |
|
||||||
|
| `-z 00:05-00:06 00:10-00:12 00:25` | Minute 5–6, Minute 10–12 und alles ab Minute 25 |
|
||||||
|
|
||||||
|
Mehrere Bereiche durch Leerzeichen trennen. Sie dürfen sich nicht überschneiden
|
||||||
|
und werden nach der Zeit sortiert. Beispiel:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./abschrift_korrigieren.py -u 'https://www.youtube.com/watch?v=…' -z 00:05-00:06 00:25
|
||||||
|
```
|
||||||
|
|
||||||
|
### 10.3 Was dabei herauskommt
|
||||||
|
|
||||||
|
Alle Bereiche landen in **einer** Datei, jeder mit einer Überschrift, die seine
|
||||||
|
tatsächlichen Zeiten nennt:
|
||||||
|
|
||||||
|
```text
|
||||||
|
[00:04:57 - 00:06:04]
|
||||||
|
Ihr seht, es gibt keinen einzigen Dialog …
|
||||||
|
|
||||||
|
[00:09:58 - 00:12:03]
|
||||||
|
Also, wenn ihr Programme baut mit Claude Code, …
|
||||||
|
```
|
||||||
|
|
||||||
|
- Angeschnittene Sätze werden an beiden Enden vollständig aufgenommen, höchstens
|
||||||
|
30 Sekunden über den Bereich hinaus. Mit `--exakt` wird genau an den Zeiten
|
||||||
|
geschnitten, auch mitten im Satz.
|
||||||
|
- Jeder Bereich wird für sich korrigiert und gegliedert. Die Überschriften sieht
|
||||||
|
das Modell nicht; es wird angewiesen, an den Rändern nichts zu ergänzen.
|
||||||
|
- Der Dateiname enthält die Bereiche, z. B.
|
||||||
|
`…_2026-10-10_00-05-00_bis_00-06-00+ab_00-25-00.korrigiert.txt`.
|
||||||
|
- Bereiche ohne Untertitel werden mit einem Hinweis übersprungen.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 11. Englische Beiträge
|
||||||
|
|
||||||
|
Mit `-u` erkennt das Programm die Sprache des Videos selbst. Bei Dateien die
|
||||||
|
Sprache angeben:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./abschrift_korrigieren.py -i talk.txt -l en
|
||||||
|
./abschrift_korrigieren.py -u 'https://www.youtube.com/watch?v=0LmCveTM788' # Sprache automatisch
|
||||||
|
```
|
||||||
|
|
||||||
|
Für Englisch gibt es eigene Anweisungen an das Modell. Unterschiede:
|
||||||
|
|
||||||
|
- Prüfmarken heißen `[check: …]` statt `[prüfen: …]`.
|
||||||
|
- Die Sprecherwechsel-Marken `>>` der YouTube-Untertitel werden entfernt.
|
||||||
|
- Der Änderungsbericht nutzt die englische Wortliste (`wamerican`).
|
||||||
|
|
||||||
|
Unterstützt sind Deutsch (`de`) und Englisch (`en`), auch mit Region (`en-US`).
|
||||||
|
Andere Sprachen lehnt das Programm mit einer Meldung ab.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 12. Dateien, die entstehen
|
||||||
|
|
||||||
|
### 12.1 Übersicht
|
||||||
|
|
||||||
|
Beispiel für `-i rede.txt` bzw. `-o rede.korrigiert.txt`:
|
||||||
|
|
||||||
|
| 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, bei jedem Lauf |
|
||||||
|
| `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 |
|
||||||
|
|
||||||
|
Ohne `-o` liegt das Ergebnis neben der Eingabedatei. Bei `-u` ohne `-o` im
|
||||||
|
aktuellen Verzeichnis. Fehlende Verzeichnisse in `-o` werden angelegt.
|
||||||
|
|
||||||
|
### 12.2 Standard-Dateinamen
|
||||||
|
|
||||||
|
Ohne `-o` (bzw. `-n` bei `yt_untertitel.py`) entsteht der Name aus **Kanal, Titel
|
||||||
|
und Hochladedatum**:
|
||||||
|
|
||||||
|
| Video | Name |
|
||||||
|
|---|---|
|
||||||
|
| Kanal „John Mearsheimer“, „Episode 1: Origins of the War In Ukraine“ | `John_Mearsheimer_Offensive_Realism_Episode_1_Origins_of_the_War_In_Ukraine_2026-07-30` |
|
||||||
|
| Kanal „GGBLahnstein“, „Prof. Gabriele Krone-Schmalz – Respekt geht anders – …“ | `GGBLahnstein_Prof_Gabriele_Krone-Schmalz_Respekt_geht_anders_2026-07-30` |
|
||||||
|
|
||||||
|
Wörter werden mit `_` verbunden, Sonderzeichen entfallen, Bindestriche bleiben.
|
||||||
|
Kanal und Titel werden gekürzt (40 bzw. 60 Zeichen). Dasselbe Video ergibt immer
|
||||||
|
denselben Namen.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 13. 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.
|
||||||
|
|
||||||
|
- **Abbrechen** ist jederzeit mit `Strg+C` möglich.
|
||||||
|
- **Fortsetzen:** denselben Befehl erneut aufrufen. Fertige Abschnitte werden
|
||||||
|
übersprungen („Abschnitt 2/5 bereits vorhanden, übersprungen.“).
|
||||||
|
- Ä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.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 14. Ein anderes Sprachmodell verwenden
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ollama pull qwen3:14b
|
||||||
|
./abschrift_korrigieren.py -i rede.txt -m qwen3:14b
|
||||||
|
```
|
||||||
|
|
||||||
|
Jedes in Ollama installierte Modell lässt sich mit `-m` wählen (auch bei
|
||||||
|
`glossar_vorschlag.py`). Zwischenstände verschiedener Modelle vermischen sich
|
||||||
|
nicht. Kleinere Modelle sind schneller, ändern aber öfter eigenmächtig Wörter;
|
||||||
|
die Liste „Zu prüfen“ wird dann länger. Das Standardmodell steht als `MODEL` oben in
|
||||||
|
`abschrift_korrigieren.py`.
|
||||||
|
|
||||||
|
Weitere Einstellungen (Abschnittsgröße, Absatzlängen, Schwellen) sind in der
|
||||||
|
[README](README.md#einstellungen) beschrieben.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 15. Fehlermeldungen und Lösungen
|
||||||
|
|
||||||
|
| Meldung | Ursache und Lösung |
|
||||||
|
|---|---|
|
||||||
|
| `Ollama nicht erreichbar (…). Läuft der Dienst?` | Ollama läuft nicht: `sudo systemctl start ollama` oder in einem eigenen Terminal `ollama serve`. |
|
||||||
|
| `Modell „qwen3:32b“ ist in Ollama nicht installiert.` | `ollama pull qwen3:32b` oder mit `-m` ein installiertes Modell wählen (`ollama list`). |
|
||||||
|
| `yt-dlp nicht gefunden (Installation: pip install yt-dlp).` | yt-dlp installieren; danach prüfen, ob `yt-dlp --version` im Terminal funktioniert. |
|
||||||
|
| `yt-dlp konnte das Video nicht abrufen: …` | URL falsch, Video privat/gelöscht, kein Netz, oder yt-dlp veraltet: `pip install -U yt-dlp`. |
|
||||||
|
| `Download fehlgeschlagen: … HTTP Error 429` | YouTube drosselt; einige Minuten warten und erneut versuchen. |
|
||||||
|
| `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). |
|
||||||
|
| `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. |
|
||||||
|
| `Glossar nicht gefunden: …` | Pfad bei `-g` prüfen. |
|
||||||
|
| `WARNUNG: rede.txt existiert mit anderem Inhalt und bleibt unverändert.` | Bei `-u` wird ein vorhandener, z. B. von Hand bearbeiteter Rohtext nie überschrieben. Korrigiert wird trotzdem der frisch geladene Text. Wer den neuen Rohtext braucht, die alte Datei umbenennen. |
|
||||||
|
| `WARNUNG: Abschnitt 3: 1180 → 1090 Wörter (8% Abweichung) …` | Das Modell hat möglicherweise etwas ausgelassen oder ergänzt. Abschnitt im Bericht prüfen. Bei Bedarf die genannte Datei in `.parts/` löschen und erneut laufen lassen. |
|
||||||
|
| `Abschnitt 3 wurde abgeschnitten. CHUNK_SIZE verkleinern und erneut starten.` | Die Antwort des Modells war zu lang. `CHUNK_SIZE` oben in `abschrift_korrigieren.py` verkleinern (z. B. 900). |
|
||||||
|
| `Absatzgliederung: unbrauchbare Antwort: …` / `Absätze verbinden: unbrauchbare Antwort: …` | Das Modell hat kein gültiges JSON geliefert; selten. Erneut starten, die Korrektur selbst ist zwischengespeichert. Tritt es wiederholt auf, ein anderes Modell versuchen. |
|
||||||
|
| `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. |
|
||||||
|
| `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
|
||||||
|
|
||||||
|
**Wie bekomme ich die besten Ergebnisse?**
|
||||||
|
Mit einem guten Glossar. Das Modell kennt viele Namen nicht oder schreibt sie
|
||||||
|
falsch; feste Ersetzungen für die häufigsten Hörfehler und Begriffe für die
|
||||||
|
wichtigsten Namen bringen mehr als jede andere Einstellung.
|
||||||
|
|
||||||
|
**Ändert das Modell den Inhalt?**
|
||||||
|
Es soll nicht, tut es aber gelegentlich (z. B. „Professor“ → „Professorin“).
|
||||||
|
Deshalb gibt es die Liste „Zu prüfen“. Für eine Veröffentlichung sollte sie immer
|
||||||
|
durchgesehen werden.
|
||||||
|
|
||||||
|
**Warum setzt das Modell kaum `[prüfen: …]`-Marken?**
|
||||||
|
`qwen3:32b` läuft hier ohne „Denkmodus“, um schnell zu sein, und ist sich dabei oft
|
||||||
|
zu sicher. Verlässlicher sind Glossar und Änderungsbericht.
|
||||||
|
|
||||||
|
**Kann ich den Rohtext vor der Korrektur von Hand verbessern?**
|
||||||
|
Ja. Rohtext mit `extract_text.py` oder `vtt2txt.py` erzeugen, bearbeiten, dann mit
|
||||||
|
`-i` korrigieren. Für die Zeitauswahl braucht es aber die `.vtt`-Datei.
|
||||||
|
|
||||||
|
**Wie lange dauert ein Lauf?**
|
||||||
|
Mit `qwen3:32b` auf einer RTX 3090 etwa 6–8 Minuten pro Stunde Rede. Ein zweiter
|
||||||
|
Lauf ohne Änderungen dauert Sekunden; nach Glossar-Änderungen werden nur die
|
||||||
|
betroffenen Teile neu berechnet (siehe [Abschnitt 9](#9-schritt-5-nachbessern-und-erneut-laufen-lassen)).
|
||||||
|
|
||||||
|
**Kann ich mehrere Videos nacheinander bearbeiten?**
|
||||||
|
Ja, z. B. in einer Schleife:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
for url in 'https://www.youtube.com/watch?v=AAA' 'https://www.youtube.com/watch?v=BBB'; do
|
||||||
|
./abschrift_korrigieren.py -u "$url" -g krone-schmalz.glossar.txt
|
||||||
|
done
|
||||||
|
```
|
||||||
|
|
||||||
|
**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.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 17. Kurzreferenz aller Befehle
|
||||||
|
|
||||||
|
### `abschrift_korrigieren.py`
|
||||||
|
|
||||||
|
| Option | Bedeutung |
|
||||||
|
|---|---|
|
||||||
|
| `-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`) |
|
||||||
|
| `-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`) |
|
||||||
|
| `-z BEREICH …` | nur diese Zeitbereiche (mit `.vtt` oder `-u`) |
|
||||||
|
| `--exakt` | genau an den Zeiten schneiden |
|
||||||
|
| `--kein-bericht` | keinen Änderungsbericht schreiben |
|
||||||
|
|
||||||
|
### `extract_text.py`
|
||||||
|
|
||||||
|
| Option | Bedeutung |
|
||||||
|
|---|---|
|
||||||
|
| `-u URL` | YouTube-URL (Pflicht) |
|
||||||
|
| `-o DATEI` | Ausgabedatei (Standard: `<Kanal>_<Titel>_<Datum>.txt`) |
|
||||||
|
| `-l SPRACHE` | Sprache der Untertitel (Standard: Originalsprache) |
|
||||||
|
| `-f` | Fließtext mit 80 Zeichen pro Zeile |
|
||||||
|
| `-z BEREICH …`, `--exakt` | Zeitauswahl wie oben |
|
||||||
|
|
||||||
|
### `yt_untertitel.py`
|
||||||
|
|
||||||
|
| Option | Bedeutung |
|
||||||
|
|---|---|
|
||||||
|
| `-u URL` | YouTube-URL (Pflicht) |
|
||||||
|
| `-n NAME` | Dateiname ohne Endung (Standard: `<Kanal>_<Titel>_<Datum>`) |
|
||||||
|
| `-l SPRACHE` | Sprache (Standard: `de`) |
|
||||||
|
| `-d VERZEICHNIS` | Zielverzeichnis (Standard: aktuelles) |
|
||||||
|
|
||||||
|
### `vtt2txt.py`
|
||||||
|
|
||||||
|
| Option | Bedeutung |
|
||||||
|
|---|---|
|
||||||
|
| `-i DATEI …` | eine oder mehrere `.vtt`-Dateien oder Muster (`"*.vtt"`) |
|
||||||
|
| `-o ZIEL` | Ausgabedatei (bei einer Eingabe) oder Verzeichnis |
|
||||||
|
| `-z BEREICH …`, `--exakt` | Zeitauswahl wie oben |
|
||||||
|
|
||||||
|
### `glossar_vorschlag.py`
|
||||||
|
|
||||||
|
| Option | Bedeutung |
|
||||||
|
|---|---|
|
||||||
|
| `-i DATEI` | Rohtext (`.txt` oder `.vtt`, Pflicht) |
|
||||||
|
| `-k DATEI` | korrigierter Text eines Laufs (optional) |
|
||||||
|
| `-g DATEI` | vorhandene Glossare, mehrfach möglich |
|
||||||
|
| `-o DATEI` | Entwurf (Standard: `<Eingabe>.glossar.entwurf.txt`) |
|
||||||
|
| `-m MODELL` | Ollama-Modell |
|
||||||
|
|
||||||
|
### `aenderungen.py`
|
||||||
|
|
||||||
|
| Option | Bedeutung |
|
||||||
|
|---|---|
|
||||||
|
| `-a DATEI` | Rohtext (`.txt` oder `.vtt`, Pflicht) |
|
||||||
|
| `-b DATEI` | korrigierter Text (Pflicht) |
|
||||||
|
| `-o DATEI` | HTML-Bericht (Standard: `<Name>.aenderungen.html`) |
|
||||||
|
| `-g DATEI` | Glossare der Korrektur, mehrfach möglich |
|
||||||
|
| `-l SPRACHE` | Sprache für die Wortliste (Standard: `de`) |
|
||||||
|
|
||||||
|
Jedes Programm zeigt mit `--help` seine Optionen.
|
||||||
65
README.md
65
README.md
|
|
@ -6,6 +6,11 @@ mit einem lokalen Sprachmodell über Ollama: Rechtschreibung, Satzzeichen,
|
||||||
Hörfehler, Absätze – möglichst wortgetreu, ohne Zusammenfassung oder Glättung.
|
Hörfehler, Absätze – möglichst wortgetreu, ohne Zusammenfassung oder Glättung.
|
||||||
Das Hauptprogramm ist `abschrift_korrigieren.py`.
|
Das Hauptprogramm ist `abschrift_korrigieren.py`.
|
||||||
|
|
||||||
|
Eine ausführliche Anleitung für die Benutzung Schritt für Schritt, mit
|
||||||
|
Arbeitsablauf, Glossar-Pflege, Prüfung der Ergebnisse und Fehlerbehebung, steht in
|
||||||
|
der [BEDIENUNGSANLEITUNG.md](BEDIENUNGSANLEITUNG.md). Diese README ist die knappe
|
||||||
|
technische Übersicht.
|
||||||
|
|
||||||
Die Werkzeuge sind einzeln oder hintereinander nutzbar:
|
Die Werkzeuge sind einzeln oder hintereinander nutzbar:
|
||||||
|
|
||||||
| Skript | Aufgabe |
|
| Skript | Aufgabe |
|
||||||
|
|
@ -176,6 +181,9 @@ Gilt gleich für `vtt2txt.py`, `extract_text.py` und `abschrift_korrigieren.py`.
|
||||||
| `00:20` | Stunden:Minuten, also Minute 20 |
|
| `00:20` | Stunden:Minuten, also Minute 20 |
|
||||||
| `25` | Minute 25 |
|
| `25` | Minute 25 |
|
||||||
|
|
||||||
|
Achtung: Zwei Zahlen sind Stunden:Minuten, `05:00` ist also Stunde 5, nicht
|
||||||
|
Minute 5 (dafür `00:05` oder `5`).
|
||||||
|
|
||||||
| Aufruf | Text |
|
| Aufruf | Text |
|
||||||
|---|---|
|
|---|---|
|
||||||
| `-z 00:05:10` | ab 5:10 bis zum Ende des Videos |
|
| `-z 00:05:10` | ab 5:10 bis zum Ende des Videos |
|
||||||
|
|
@ -236,6 +244,9 @@ werden trotzdem umgewandelt; der Exit-Code ist dann 1.
|
||||||
| `-o`, `--output` | Ausgabedatei; Standard: `<Eingabe ohne Endung>.korrigiert.txt` neben der Eingabe, mit `-u` `<Kanal>_<Titel>_<Datum>.korrigiert.txt`; mit `-z` zusätzlich die Bereiche im Namen |
|
| `-o`, `--output` | Ausgabedatei; Standard: `<Eingabe ohne Endung>.korrigiert.txt` neben der Eingabe, mit `-u` `<Kanal>_<Titel>_<Datum>.korrigiert.txt`; mit `-z` zusätzlich die Bereiche im Namen |
|
||||||
| `-z`, `--zeitraeume` | nur diese Bereiche korrigieren, siehe [Zeitauswahl](#zeitauswahl--z); nur mit `.vtt`-Eingabe oder `-u`, da reiner Text keine Zeitstempel hat |
|
| `-z`, `--zeitraeume` | nur diese Bereiche korrigieren, siehe [Zeitauswahl](#zeitauswahl--z); nur mit `.vtt`-Eingabe oder `-u`, da reiner Text keine Zeitstempel hat |
|
||||||
| `--exakt` | genau an den Zeiten schneiden statt an Satzgrenzen |
|
| `--exakt` | genau an den Zeiten schneiden statt an Satzgrenzen |
|
||||||
|
| `-g`, `--glossar` | Glossar mit festen Ersetzungen und Schreibweisen; mehrfach angeben zum Kombinieren (Ersetzungen in Reihenfolge der Angabe) |
|
||||||
|
| `-m`, `--model` | Ollama-Modell; Standard: `qwen3:32b` (Konstante `MODEL`) |
|
||||||
|
| `--kein-bericht` | keinen Änderungsbericht schreiben |
|
||||||
|
|
||||||
Mit Zeitauswahl wird jeder Bereich als eigener Block korrigiert und gegliedert;
|
Mit Zeitauswahl wird jeder Bereich als eigener Block korrigiert und gegliedert;
|
||||||
die Überschriften `[00:04:57 - 00:06:04]` bekommt das Modell nicht zu sehen, sie
|
die Überschriften `[00:04:57 - 00:06:04]` bekommt das Modell nicht zu sehen, sie
|
||||||
|
|
@ -243,13 +254,13 @@ stehen unverändert als eigene Zeilen im Ergebnis. Zusätzlich weist der Prompt
|
||||||
Modell an, an den Rändern der Ausschnitte nichts zu ergänzen. Eine Rohabschrift
|
Modell an, an den Rändern der Ausschnitte nichts zu ergänzen. Eine Rohabschrift
|
||||||
(`.txt`) mit solchen Überschriften, etwa von `vtt2txt.py -z`, wird ebenso in
|
(`.txt`) mit solchen Überschriften, etwa von `vtt2txt.py -z`, wird ebenso in
|
||||||
Blöcken korrigiert.
|
Blöcken korrigiert.
|
||||||
| `-g`, `--glossar` | Glossar mit festen Ersetzungen und Schreibweisen; mehrfach angeben zum Kombinieren (Ersetzungen in Reihenfolge der Angabe) |
|
|
||||||
| `-m`, `--model` | Ollama-Modell; Standard: `qwen3:32b` (Konstante `MODEL`) |
|
|
||||||
| `--kein-bericht` | keinen Änderungsbericht schreiben |
|
|
||||||
|
|
||||||
## Ablauf
|
## Ablauf
|
||||||
|
|
||||||
1. **Fließtext:** Untertitel-Zeilenumbrüche werden entfernt.
|
0. **Vorprüfung:** Läuft Ollama, ist das Modell installiert? Sonst Abbruch mit
|
||||||
|
Hinweis, noch vor jedem Download.
|
||||||
|
1. **Fließtext:** Untertitel-Zeilenumbrüche werden entfernt. Zeit-Überschriften
|
||||||
|
(`-z`) teilen den Text in Blöcke, die einzeln bearbeitet werden.
|
||||||
2. **Feste Ersetzungen** aus dem Glossar (`falsch => richtig`) werden im Rohtext
|
2. **Feste Ersetzungen** aus dem Glossar (`falsch => richtig`) werden im Rohtext
|
||||||
angewendet, bevor das Modell ihn sieht.
|
angewendet, bevor das Modell ihn sieht.
|
||||||
3. **Korrektur:** Der Text wird in Abschnitte von ca. 1200 Wörtern geteilt (immer
|
3. **Korrektur:** Der Text wird in Abschnitte von ca. 1200 Wörtern geteilt (immer
|
||||||
|
|
@ -263,9 +274,9 @@ Blöcken korrigiert.
|
||||||
geteilt, Absätze unter 3 Sätzen mit einem Nachbarn verbunden. Passt der kurze
|
geteilt, Absätze unter 3 Sätzen mit einem Nachbarn verbunden. Passt der kurze
|
||||||
Absatz an beide Nachbarn, entscheidet das Modell nach dem Inhalt, ob er den
|
Absatz an beide Nachbarn, entscheidet das Modell nach dem Inhalt, ob er den
|
||||||
vorherigen Gedanken abschließt oder den folgenden einleitet.
|
vorherigen Gedanken abschließt oder den folgenden einleitet.
|
||||||
|
|
||||||
6. **Änderungsbericht:** Rohtext (vor dem Glossar) und Ergebnis werden Wort für Wort
|
6. **Änderungsbericht:** Rohtext (vor dem Glossar) und Ergebnis werden Wort für Wort
|
||||||
verglichen, siehe unten.
|
verglichen; eigenmächtige Änderungen des Modells kommen in die Liste
|
||||||
|
„Zu prüfen“, siehe unten.
|
||||||
|
|
||||||
Zweifelhafte Stellen markiert das Modell als `Lesart [prüfen: Originalwortlaut]`,
|
Zweifelhafte Stellen markiert das Modell als `Lesart [prüfen: Originalwortlaut]`,
|
||||||
in englischen Reden als `reading [check: original wording]`.
|
in englischen Reden als `reading [check: original wording]`.
|
||||||
|
|
@ -412,10 +423,14 @@ Ein Lauf dauert mit `qwen3:32b` vollständig auf einer RTX 3090 etwa 6 Minuten.
|
||||||
python3 -m pytest
|
python3 -m pytest
|
||||||
```
|
```
|
||||||
|
|
||||||
Die Tests brauchen kein Ollama: Modellaufrufe werden durch Fakes ersetzt. Geprüft
|
Die Tests (291) brauchen weder Ollama noch Netz: Modellaufrufe und `yt-dlp` werden
|
||||||
werden Abschnittsbildung, Glossar (inkl. „jede Ersetzung im Glossar einer Rede trifft
|
durch Fakes ersetzt. `tests/test_abschrift_korrigieren.py` prüft Abschnittsbildung,
|
||||||
diese Rede, jede im gemeinsamen Glossar trifft mindestens eine“), Streaming-Auswertung, Absatzgliederung (Text bleibt
|
Satzgrenzen (Abkürzungen und Ordnungszahlen sind kein Satzende), Glossar (inkl.
|
||||||
unverändert, 3–10 Sätze), Zwischenspeicher/Fortsetzen und die Kommandozeile.
|
„jede Ersetzung im Glossar einer Rede trifft diese Rede, jede im gemeinsamen Glossar
|
||||||
|
trifft mindestens eine“), Streaming-Auswertung, Absatzgliederung (Text bleibt
|
||||||
|
unverändert, 3–10 Sätze), Verbinden kurzer Absätze (Modell wird nur gefragt, wenn
|
||||||
|
beide Nachbarn passen), Zwischenspeicher/Fortsetzen, Zeitauswahl, Sprachen und die
|
||||||
|
Kommandozeile.
|
||||||
`tests/test_glossar_vorschlag.py` prüft Filter (nur Funde im Text, keine bekannten),
|
`tests/test_glossar_vorschlag.py` prüft Filter (nur Funde im Text, keine bekannten),
|
||||||
Ausgabeformat (gültiges Glossar, Unsicheres auskommentiert) und Zwischenspeicher.
|
Ausgabeformat (gültiges Glossar, Unsicheres auskommentiert) und Zwischenspeicher.
|
||||||
`tests/test_aenderungen.py` prüft den Wortvergleich (Satzzeichen, Groß-/Kleinschreibung
|
`tests/test_aenderungen.py` prüft den Wortvergleich (Satzzeichen, Groß-/Kleinschreibung
|
||||||
|
|
@ -427,16 +442,20 @@ Die Tests nutzen eine kleine eigene Wortliste statt der des Systems.
|
||||||
`tests/test_yt_untertitel.py` prüft Spurauswahl, Aufruf von `yt-dlp` und
|
`tests/test_yt_untertitel.py` prüft Spurauswahl, Aufruf von `yt-dlp` und
|
||||||
Fehlerfälle (ohne Netz, `yt-dlp` wird durch Fakes ersetzt).
|
Fehlerfälle (ohne Netz, `yt-dlp` wird durch Fakes ersetzt).
|
||||||
`tests/test_vtt2txt.py` prüft die VTT-Umwandlung: jede `.vtt` in `testdaten/`
|
`tests/test_vtt2txt.py` prüft die VTT-Umwandlung: jede `.vtt` in `testdaten/`
|
||||||
ergibt genau die zugehörige `.txt`, echte Wiederholungen bleiben erhalten,
|
ergibt genau die zugehörige `.txt`, echte Wiederholungen bleiben erhalten, auch bei
|
||||||
dazu Muster, Ausgabeverzeichnis und Fehlerfälle.
|
Untertiteln ohne rollendes Fenster, dazu Zeitauswahl, Muster, Ausgabeverzeichnis und
|
||||||
|
Fehlerfälle.
|
||||||
|
|
||||||
## Zwischenstände
|
## Zwischenstände
|
||||||
|
|
||||||
Jeder fertige Abschnitt, jede Absatzgliederung und jede Entscheidung beim
|
Jeder fertige Abschnitt, jede Absatzgliederung und jede Entscheidung beim
|
||||||
Verbinden kurzer Absätze wird in `<Ausgabe>.parts/` gespeichert. Ein erneuter
|
Verbinden kurzer Absätze wird in `<Ausgabe>.parts/` gespeichert. Ein erneuter
|
||||||
Lauf überspringt alles, was schon berechnet ist.
|
Lauf überspringt alles, was schon berechnet ist.
|
||||||
Ändern sich Modell (auch per `-m`), Prompt, Glossar oder Text eines Abschnitts, wird genau dieser
|
Ändern sich Modell (auch per `-m`), Prompt, Glossar oder Text eines Abschnitts, wird
|
||||||
Teil neu berechnet. Den Ordner kann man jederzeit löschen.
|
genau dieser Teil neu berechnet. Glossar-Begriffe stehen im Prompt; ein neuer Begriff
|
||||||
|
lässt deshalb alle Abschnitte neu korrigieren. Den Ordner kann man jederzeit löschen.
|
||||||
|
`glossar_vorschlag.py` speichert seine Modellantworten ebenso in
|
||||||
|
`<Entwurf>.parts/`.
|
||||||
|
|
||||||
## Einstellungen
|
## Einstellungen
|
||||||
|
|
||||||
|
|
@ -446,9 +465,27 @@ Oben in `abschrift_korrigieren.py`:
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| `MODEL` | `qwen3:32b` | Ollama-Modell (Standard für `-m`) |
|
| `MODEL` | `qwen3:32b` | Ollama-Modell (Standard für `-m`) |
|
||||||
| `CHUNK_SIZE` | 1200 | Wörter pro Korrekturabschnitt |
|
| `CHUNK_SIZE` | 1200 | Wörter pro Korrekturabschnitt |
|
||||||
|
| `MAX_EXTRA_WORDS` | 300 | so weit darf ein Abschnitt bis zum nächsten Satzende wachsen |
|
||||||
| `MAX_WORD_DEVIATION` | 0.05 | Warnschwelle Wortzahl |
|
| `MAX_WORD_DEVIATION` | 0.05 | Warnschwelle Wortzahl |
|
||||||
|
| `PARAGRAPH_WINDOW` | 150 | Sätze pro Anfrage bei der Absatzgliederung |
|
||||||
| `MAX_PARAGRAPH_SENTENCES` | 10 | längster erlaubter Absatz |
|
| `MAX_PARAGRAPH_SENTENCES` | 10 | längster erlaubter Absatz |
|
||||||
| `MIN_PARAGRAPH_SENTENCES` | 3 | kürzester gewünschter Absatz |
|
| `MIN_PARAGRAPH_SENTENCES` | 3 | kürzester gewünschter Absatz |
|
||||||
|
| `NO_SENTENCE_END` | Muster | Abkürzungen, die kein Satzende sind |
|
||||||
|
|
||||||
|
In `aenderungen.py`:
|
||||||
|
|
||||||
|
| Konstante | Standard | Bedeutung |
|
||||||
|
|---|---|---|
|
||||||
|
| `WORDLISTS` | `/usr/share/dict/ngerman`, `…/american-english` | Wortlisten je Sprache |
|
||||||
|
| `MIN_SIMILARITY` | 0.6 | darunter gilt eine Ersetzung als „stark verändert“ |
|
||||||
|
| `FILLERS` | äh, ähm, … | Füllwörter, deren Streichung nicht gemeldet wird |
|
||||||
|
|
||||||
|
In `vtt2txt.py`:
|
||||||
|
|
||||||
|
| Konstante | Standard | Bedeutung |
|
||||||
|
|---|---|---|
|
||||||
|
| `MAX_SNAP_SECONDS` | 30 | so weit darf ein Zeitbereich bis zur nächsten Satzgrenze wachsen |
|
||||||
|
| `ROLLING_SHARE` | 0.5 | ab diesem Anteil sich überlappender Blöcke gilt eine Datei als rollend |
|
||||||
|
|
||||||
## Bekannte Grenzen
|
## Bekannte Grenzen
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue