Diktiere in jedes Fenster mit Textcursor — auch ins Terminal.
Strg+Leertaste halten, sprechen, loslassen. Der Text erscheint an der
Cursorposition.
Veröffentlicht über Proving Lab — Werkzeuge erscheinen dort zusammen mit den Messungen dahinter. Siehe unten.
Die Windows-Spracherkennung und die meisten Diktierwerkzeuge schreiben über die Text-Services-Schicht von Windows. Die steht in Konsolenfenstern nicht zur Verfügung, in vielen Electron-Apps ebenso wenig, und in allem, was in WSL läuft, erst recht nicht. Genau dann, wenn du eine Commit-Nachricht, einen Prompt an einen Coding-Agenten oder einen Shell-Befehl diktieren willst, gibt die eingebaute Spracherkennung auf.
PushDictate geht einen anderen Weg: aufnehmen → transkribieren → Zwischenablage → einfügen. Ein Einfügen aus der Zwischenablage nimmt jedes Fenster an, das Text akzeptiert. Diese eine Entwurfsentscheidung ist der gesamte Sinn des Werkzeugs.
| Ziel | Windows-Diktat | PushDictate |
|---|---|---|
| Windows Terminal, PowerShell, cmd | ✗ | ✓ |
| WSL / Ubuntu-Shell | ✗ | ✓ |
| Coding-Agenten im Terminal | ✗ | ✓ |
| Integriertes Terminal in VS Code | ✗ | ✓ |
| SSH-Sitzungen | ✗ | ✓ |
| Word, Outlook, Browser | ✓ | ✓ |
Im Alltag auf Windows 11 verifiziert, nicht in einer systematischen Messreihe über mehrere Windows-Versionen. Stimmt eine Zeile auf deinem System nicht, bitte ein Issue öffnen — dann wird sie hier korrigiert.
Terminal und Coding-Agenten. Lange Prompts zu tippen ist mühsam, sie zu sprechen trivial — eine mehrsätzige Anweisung ist gesprochen deutlich schneller als getippt. (Nicht gemessen, also Erfahrung, keine Messung.)
Dokumente und E-Mail. Laut entwerfen, schriftlich korrigieren. Die Vokabeldatei hält Eigennamen sauber.
Commit-Nachrichten und Issues. Wer das Warum spricht, schreibt erfahrungsgemäß längere und brauchbarere Nachrichten als beim Tippen.
Notizen, wenn die Hände beschäftigt sind. Beim Lesen, beim Kabelhalten, beim Kochen — der Hotkey ist einen Griff entfernt.
Voraussetzungen: Windows 10 oder 11, Python 3.10+ (64-Bit), git und ein eigener OpenAI-API-Schlüssel. Kein git? Dann auf GitHub Code → Download ZIP statt der ersten Zeile.
git clone https://github.com/Bubu89/pushdictate.git
cd pushdictate
py -m pip install -r requirements.txtpy -m pip statt bloßem pip mit Absicht: Auf Rechnern mit mehreren
Python-Installationen gehört pip oft zu einer anderen als py. Die Pakete
landen dann dort, wo niemand sie sucht.
Vor dem ersten Start prüfen:
py pushdictate.py --checkMeldet Pakete, Schlüssel und Schreibrechte und endet mit einem Fehlerwert, wenn das Programm nicht starten würde.
Der erste Start öffnet ein kleines Einrichtungsfenster. Am Schreibtisch ist das richtig, in einem Skript, über eine Fernsitzung oder wenn ein Agent die Installation übernimmt, ist es unbrauchbar — das Fenster wartet, und nichts wird gemeldet. Deshalb hat jeder Schritt einen Weg ohne Fenster:
py pushdictate.py --set-key sk-… # Schlüssel in .env schreiben
echo sk-… | py pushdictate.py --set-key - # oder von der Standardeingabe
py pushdictate.py --check --json # Status maschinenlesbar
py pushdictate.py --no-setup # abbrechen statt Fenster öffnenRückgabewerte: 0 in Ordnung, 1 Prüfung fehlgeschlagen, 2 Aufruffehler,
3 Schlüssel fehlt und kein Fenster erlaubt. PUSHDICTATE_NO_SETUP=1 wirkt
wie --no-setup.
Eine vollständige Installation ohne Zutun sind vier Zeilen:
git clone https://github.com/Bubu89/pushdictate.git && cd pushdictate
py -m pip install -r requirements.txt
py pushdictate.py --set-key "$OPENAI_API_KEY"
py pushdictate.py --check || exit 1PushDictate wird ohne Schlüssel ausgeliefert und wird das auch bleiben. Die Transkription wird dem Schlüssel-Inhaber verrechnet, also muss es deiner sein.
Beim ersten Start öffnet sich ein Fenster, das dich durchführt:
- Eine Schaltfläche öffnet https://platform.openai.com/api-keys im Browser
- Du fügst den Schlüssel ins Feld ein
- Speichern und starten — fertig
Der Assistent legt die .env selbst an. Kein Kopieren, kein Umbenennen, kein
Hantieren mit Konfigurationsdateien. Der Schlüssel bleibt auf diesem Rechner,
.env steht in .gitignore.
Vor dem Speichern wird der Schlüssel auf Plausibilität geprüft: Ein leeres Feld oder etwas, das kein OpenAI-Schlüssel ist, bekommt eine klare Meldung — statt drei Schritte später zu scheitern.
Kosten: Abrechnung pro Audiominute. Zehn Minuten am Tag sind 300 Minuten im Monat — mal dem Minutenpreis auf OpenAIs Preisseite ergibt deine Zahl. Hier steht bewusst keine: Ein in eine README eingefrorener Preis veraltet still. Aktuelle Preise: https://openai.com/api/pricing/ — verlass dich nicht auf eine Zahl, die in einer README einbetoniert wurde.
wscript start_silent.vbs REM ohne Fenster — der Normalfall
python pushdictate.py REM mit Konsole — zum Debuggen
Am Bildschirmrand erscheint ein farbiger Punkt, im Infobereich ein Symbol. Beim allerersten Start öffnet sich eine Kurzanleitung mit den Tasten und der Bedeutung der Punktfarben. Rechtsklick auf den Punkt holt sie jederzeit zurück.
| Aktion | Taste |
|---|---|
| Aufnahme starten | Strg + Leertaste |
| Beenden und einfügen | Leertaste |
Der Punkt zeigt den Zustand:
| Farbe | Bedeutung |
|---|---|
| Rot | bereit |
| Gelb | Mikrofon öffnet — noch nicht sprechen |
| Grün | Aufnahme läuft (Startton erklang) |
| Orange | wird transkribiert |
Warte auf Grün. Wer bei Gelb anfängt, verliert das erste Wort.
Zwei tiefe Töne bedeuten: nichts eingefügt — Mikrofon stumm, leeres Ergebnis oder ein zurückgestelltes Diktat.
- Push-to-Talk statt Dauerlauschen. Das Mikrofon öffnet, wenn du es verlangst. Dazwischen wird nichts aufgenommen.
- Funktioniert im Terminal. Der Grund, warum es das Werkzeug gibt.
- Eigenes Vokabular.
vocab.txt(max. ~700 Zeichen) geht als Hinweis an Whisper, damit Eigennamen richtig ankommen. Wirkt sofort, ohne Neustart. - Medien pausieren automatisch. Musik oder Video hält während des Diktats an und läuft danach weiter — auch in allen Fehlerpfaden, damit nichts hängen bleibt.
- Warteschlange bei Netzfehlern. Scheitert die Transkription am Netz,
landet die Aufnahme in
pending/und wird automatisch nachgereicht; der Text kommt in die Zwischenablage. - Absturz- und Standby-Erholung. Ein geplanter Task startet die App neu, falls sie stirbt; der Audio-Stream wird nach Standby neu aufgebaut, statt still taub zu werden.
- Nur eine Instanz. Ein benannter Mutex verhindert, dass eine zweite Kopie den Hotkey stiehlt.
- Verlauf. Die letzten 20 Transkriptionen im Tray-Menü.
- Kurzanleitung auf Abruf. Rechtsklick auf den Punkt zeigt Tasten, Farben und Hinweise — ohne auf diese Seite zurückzukehren.
Die Aufnahme verlässt deinen Rechner. Sie geht zur Transkription an die OpenAI-API — unter deinem Schlüssel und OpenAIs Bedingungen. Sonst ist kein Server beteiligt: keine Telemetrie, keine Auswertung, kein Konto beim Autor.
Alles andere bleibt lokal und steht in .gitignore:
| Datei | Inhalt |
|---|---|
.env |
dein API-Schlüssel |
settings.json |
Geräte- und Sprachwahl |
*.log, *.jsonl |
Zeiten, Fehler und Ausschnitte deiner Diktate |
pending/ |
Audio, das auf einen zweiten Versuch wartet |
mute_state.json |
welche Anwendung beim Diktat gerade Ton ausgab |
heartbeat.json |
Zeitstempel des letzten Lebenszeichens |
Wenn deine Audiodaten das Gerät nicht verlassen dürfen, ist ein lokales Whisper-Modell die richtige Wahl — für diese Anforderung ist dieses Werkzeug das falsche.
Schlägt sie mit Connection error auf /audio/transcriptions fehl, während
Cloudflare WARP läuft, blockiert WARPs Gateway das DNS für api.openai.com —
die Adresse ist dort als Tracker eingestuft.
nslookup api.openai.com
REM blockiert, wenn 0.0.0.0 oder :: zurückkommtapi.openai.com und *.openai.com in beiden Systemen freigeben:
- Split-Tunnel-Ausnahmen (Routing)
- Cloudflare-Gateway-Regel (DNS)
Eines allein reicht nicht.
In der aktuellen Fassung behoben — das Overlay meldet sich alle drei Sekunden zurück nach oben. Falls es doch auftritt: Issue mit deiner Windows-Build-Nummer.
Du hast bei Gelb angefangen. Warte auf Grün und den Startton.
Issues und Pull Requests sind willkommen. Hilfreiche Meldungen nennen deine Windows- und Python-Version und die passenden Zeilen aus dem Log. Bitte transkribierten Text vorher entfernen — das sind deine Worte, keine Diagnosedaten.
PushDictate erscheint über provinglab.dev, wo Werkzeuge zusammen mit den Messungen dahinter veröffentlicht werden statt mit Werbeaussagen.
Die Regel dort: keine Zahl ohne Messung, keine Behauptung ohne Test. Wo nichts gemessen wurde, steht das da, statt geschätzt zu werden — deshalb verweist der Kostenabschnitt oben auf OpenAIs Preisseite, statt eine Zahl einzufrieren, die still veralten würde.
Ebenfalls von Proving Lab: Full Page PDF Snap — jede Webseite als ein hochauflösendes PDF sichern, vollständig auf dem eigenen Gerät.
Code: MIT — siehe LICENSE. Nutzen, ändern, weitergeben. Ohne Gewähr. Dokumentation (README, CHANGELOG): CC BY 4.0. Eine Softwarelizenz sagt über Text nichts aus, deshalb steht es hier ausdrücklich da.