Zweck
Audio-/Video-Dateien in Text umwandeln — lokal, ohne Cloud-Pflicht. Der Skill
erkennt selbst, ob Whisper oder Vosk installiert ist, und wählt das beste
verfügbare Backend. Ohne Backend läuft er im Dry-Run-Modus und gibt einen
Platzhaltertext zurück, sodass der Workflow immer funktioniert.
Transkripte werden lokal in transkription/store.db gespeichert und können
abgefragt werden.
Trigger
| Phrase |
Aktion |
| „Transkribiere diese Audio" |
Audio-Datei transkribieren |
| „Transkribiere [Datei]" |
Benannte Datei transkribieren |
| „Zeig meine Transkripte" |
Letzte Transkripte auflisten |
| „Suche Transkript [Begriff]" |
Volltextsuche in Transkripten |
| „Exportiere Transkript [ID]" |
Transkript als TXT exportieren |
Workflow
- Backend-Check: Prüfen ob
whisper oder vosk importierbar ist.
- Datei-Prüfung: Eingabedatei muss existieren (Audio: wav, mp3, m4a, ogg, flac; Video: mp4, mkv, webm — Extraktion via ffmpeg).
- Transkription: Backend aufrufen und Rohtext erhalten.
- Speichern: Ergebnis mit Metadaten (Datei, Dauer, Sprache, Backend, Zeitstempel) in
store.db.
- Ausgabe: Text zurückgeben; optional als
.txt exportieren.
CLI-Einstieg
# Datei transkribieren
python transkription_core.py transcribe audio.wav
# Mit expliziter Sprache
python transkription_core.py transcribe audio.mp3 --lang de
# Dry-Run (kein Backend nötig)
python transkription_core.py transcribe audio.wav --dry-run
# Transkripte auflisten
python transkription_core.py list [--limit 20]
# Volltextsuche
python transkription_core.py search "Begriff"
# Exportieren
python transkription_core.py export <id> [--out datei.txt]
# Backend-Check
python transkription_core.py check
# Alternativer Store-Pfad (z.B. für Tests)
python transkription_core.py --store /tmp/test.db transcribe audio.wav --dry-run
Store
| Eigenschaft |
Wert |
| Typ |
SQLite |
| Pfad (Standard) |
skills/assist/transkription/store.db |
| Override |
--store <pfad> oder Env TRANSKRIPTION_STORE |
| Tabellen |
transcripts |
Schema transcripts
CREATE TABLE IF NOT EXISTS transcripts (
id TEXT PRIMARY KEY, -- UUID (kurz: 8 Hex)
file_path TEXT NOT NULL, -- Originalpfad der Audiodatei
file_name TEXT NOT NULL, -- Dateiname (ohne Pfad, für Anzeige)
text TEXT NOT NULL, -- Transkribierter Text
language TEXT, -- Sprache (z.B. "de", "en")
backend TEXT, -- "whisper" | "vosk" | "dry-run"
duration_s REAL, -- Dauer in Sekunden (wenn bekannt)
created_at TEXT NOT NULL, -- ISO-8601 Timestamp
tags TEXT -- Komma-getrennte Tags (optional)
);
Haltung
- Ohne installiertes Backend funktioniert der Skill im Dry-Run-Modus (Demo-Text).
- Whisper wird gegenüber Vosk bevorzugt (bessere Deutsch-Qualität).
- Die Wahl zwischen Whisper und Vosk kann per
assist/prefs.json (transkription_backend: "whisper"|"vosk"|"auto") festgelegt werden.
- ffmpeg für Video-Extraktion wird separat benötigt und ist nicht im Skill enthalten.
Datenschutz
- Alle Transkripte bleiben lokal — keine Cloud-Übertragung ohne Whisper-Online-Modus.
- Whisper kann lokal (tiny/base/medium-Modell) oder über OpenAI-API genutzt werden.
Standardmäßig wird das lokale Modell verwendet.
store.db enthält potenziell sensible Gesprächsinhalte — nicht in Git committen.
- Empfehlung:
.gitignore um store.db ergänzen.
Verwandte Ressourcen
- BACH
hub/_services/voice/voice_stt.py — Backend-Muster (Inspiration, read-only)
- Skill
utilities/yt-transcriber — YouTube-Transkription (separater Skill, kein Duplikat: YT-spezifisch)
tools/module-installer/module_installer.py — Registry enthält whisper + vosk
Changelog
| Version |
Datum |
Änderung |
| 0.1.0 |
2026-06-22 |
Erstanlage — eigener SQLite-Store, Whisper/Vosk-Presence-Check |
1---2name: transkription3description: <img src="banner.png" width="100%" alt="transkription banner">4---5<img src="banner.png" width="100%" alt="transkription banner">67## Zweck89Audio-/Video-Dateien in Text umwandeln — lokal, ohne Cloud-Pflicht. Der Skill10erkennt selbst, ob Whisper oder Vosk installiert ist, und wählt das beste11verfügbare Backend. Ohne Backend läuft er im Dry-Run-Modus und gibt einen12Platzhaltertext zurück, sodass der Workflow immer funktioniert.1314Transkripte werden lokal in `transkription/store.db` gespeichert und können15abgefragt werden.1617---1819## Trigger2021| Phrase | Aktion |22|---|---|23| „Transkribiere diese Audio" | Audio-Datei transkribieren |24| „Transkribiere [Datei]" | Benannte Datei transkribieren |25| „Zeig meine Transkripte" | Letzte Transkripte auflisten |26| „Suche Transkript [Begriff]" | Volltextsuche in Transkripten |27| „Exportiere Transkript [ID]" | Transkript als TXT exportieren |2829---3031## Workflow32331. **Backend-Check**: Prüfen ob `whisper` oder `vosk` importierbar ist.342. **Datei-Prüfung**: Eingabedatei muss existieren (Audio: wav, mp3, m4a, ogg, flac; Video: mp4, mkv, webm — Extraktion via ffmpeg).353. **Transkription**: Backend aufrufen und Rohtext erhalten.364. **Speichern**: Ergebnis mit Metadaten (Datei, Dauer, Sprache, Backend, Zeitstempel) in `store.db`.375. **Ausgabe**: Text zurückgeben; optional als `.txt` exportieren.3839---4041## CLI-Einstieg4243```bash44# Datei transkribieren45python transkription_core.py transcribe audio.wav4647# Mit expliziter Sprache48python transkription_core.py transcribe audio.mp3 --lang de4950# Dry-Run (kein Backend nötig)51python transkription_core.py transcribe audio.wav --dry-run5253# Transkripte auflisten54python transkription_core.py list [--limit 20]5556# Volltextsuche57python transkription_core.py search "Begriff"5859# Exportieren60python transkription_core.py export <id> [--out datei.txt]6162# Backend-Check63python transkription_core.py check6465# Alternativer Store-Pfad (z.B. für Tests)66python transkription_core.py --store /tmp/test.db transcribe audio.wav --dry-run67```6869---7071## Store7273| Eigenschaft | Wert |74|---|---|75| Typ | SQLite |76| Pfad (Standard) | `skills/assist/transkription/store.db` |77| Override | `--store <pfad>` oder Env `TRANSKRIPTION_STORE` |78| Tabellen | `transcripts` |7980### Schema `transcripts`8182```sql83CREATE TABLE IF NOT EXISTS transcripts (84 id TEXT PRIMARY KEY, -- UUID (kurz: 8 Hex)85 file_path TEXT NOT NULL, -- Originalpfad der Audiodatei86 file_name TEXT NOT NULL, -- Dateiname (ohne Pfad, für Anzeige)87 text TEXT NOT NULL, -- Transkribierter Text88 language TEXT, -- Sprache (z.B. "de", "en")89 backend TEXT, -- "whisper" | "vosk" | "dry-run"90 duration_s REAL, -- Dauer in Sekunden (wenn bekannt)91 created_at TEXT NOT NULL, -- ISO-8601 Timestamp92 tags TEXT -- Komma-getrennte Tags (optional)93);94```9596---9798## Haltung99100- Ohne installiertes Backend funktioniert der Skill im Dry-Run-Modus (Demo-Text).101- Whisper wird gegenüber Vosk bevorzugt (bessere Deutsch-Qualität).102- Die Wahl zwischen Whisper und Vosk kann per `assist/prefs.json` (`transkription_backend: "whisper"|"vosk"|"auto"`) festgelegt werden.103- ffmpeg für Video-Extraktion wird separat benötigt und ist nicht im Skill enthalten.104105---106107## Datenschutz108109- **Alle Transkripte bleiben lokal** — keine Cloud-Übertragung ohne Whisper-Online-Modus.110- Whisper kann lokal (tiny/base/medium-Modell) oder über OpenAI-API genutzt werden.111 Standardmäßig wird das lokale Modell verwendet.112- `store.db` enthält potenziell sensible Gesprächsinhalte — **nicht in Git committen**.113- Empfehlung: `.gitignore` um `store.db` ergänzen.114115---116117## Verwandte Ressourcen118119- BACH `hub/_services/voice/voice_stt.py` — Backend-Muster (Inspiration, read-only)120- Skill `utilities/yt-transcriber` — YouTube-Transkription (separater Skill, kein Duplikat: YT-spezifisch)121- `tools/module-installer/module_installer.py` — Registry enthält whisper + vosk122123---124125## Changelog126127| Version | Datum | Änderung |128|---|---|---|129| 0.1.0 | 2026-06-22 | Erstanlage — eigener SQLite-Store, Whisper/Vosk-Presence-Check |