Deutsch | English | Änderungsprotokoll | TODO
Ein Sprachnotizbuch für Debian- und Arch-basierte Systeme: Gedanken sprechen, sie mit Tags einsortieren (privat, beruflich, DialOS …) und ihnen gleich eine Wiedervorlage mitgeben, die im Kalender landet.
Die Spracherkennung läuft vollständig auf dem eigenen Rechner. Es geht kein Ton ins Netz - weder zum Erkennen noch zum Speichern.
Dieses Projekt ist in Zusammenarbeit mit Claude entstanden und gehört zur DialOS-Familie - daher auch das verwandte Symbol: dieselbe Dame, aber statt Schallwellen schreibt ein Stift mit.
Tastenkürzel drücken. Sprechen:
„Angebot für Meier nachrechnen, Tag beruflich, Wiedervorlage nächsten Montag um zehn Uhr.“
Leertaste. Denkzettel zeigt:
| Notiz | Angebot für Meier nachrechnen. |
| Tag | beruflich ✓ |
| Wiedervorlage | Montag, 24.08.2026, 10:00 |
Prüfen, Strg+S. Der Termin steht im Kalender, die Notiz im Register
„beruflich“.
Die Angaben zu Tag und Wiedervorlage werden aus dem Gesprochenen herausgelöst und aus dem Notiztext entfernt - sie sind Anweisung, nicht Inhalt. Was nicht sicher erkannt wird, bleibt im Text stehen, statt zu verschwinden.
Tags nach Tag, Tags, Schlagwort, Kategorie, Stichwort -
mehrere mit „und“ oder Komma. Ein bekannter Tag wird auch dann
vorgeschlagen, wenn er einfach so im Satz vorkommt. #DialOS geht auch.
Wiedervorlage nach Wiedervorlage, erinnere mich, Erinnerung,
nachfassen, Termin:
| Gesprochen | Ergebnis |
|---|---|
| heute · morgen · übermorgen | der jeweilige Tag |
| in drei Tagen · in 14 Tagen · in zwei Wochen · in einem Monat | gerechnet ab heute |
| nächsten Montag · am Freitag · diesen Mittwoch | der nächste passende Tag |
| nächste Woche · nächsten Monat · nächstes Jahr | + 1 Woche / Monat / Jahr |
| am Wochenende | der kommende Samstag |
| am 15. September · am dritten Oktober · 01.09.2026 | festes Datum |
| um zehn Uhr · um 14:30 · um halb neun · viertel nach acht | Uhrzeit |
| morgens · mittags · nachmittags · abends · früh | 8 / 12 / 15 / 18 / 8 Uhr |
Ohne Uhrzeitangabe gilt die eingestellte Standardzeit (ab Werk 9:00). Reihenfolge egal: „um zehn am Montag“ versteht es genauso.
Ein Fenster mit Registern wie in einem echten Notizbuch: „Alle“, „Wiedervorlagen“ und je ein Register pro Tag.
Alles geht mit der Tastatur - Register anlegen, umbenennen, löschen
und wechseln, Notizen anlegen, bearbeiten, abhaken, löschen. Jeder
Befehl steht zusätzlich im Menü, damit man ihn wiederfindet, ohne ihn
auswendig zu können. Übersicht im Programm mit F1.
| Taste | Wirkung |
|---|---|
Strg+N |
Neue Notiz diktieren |
Strg+Umschalt+N |
Notiz tippen |
Eingabe / F2 |
Notiz bearbeiten |
Strg+D |
erledigt / wieder offen |
Entf |
Notiz löschen |
Strg+F |
suchen |
Strg+T |
neues Register (Tag) |
Umschalt+F2 |
Register umbenennen |
Strg+Umschalt+W |
Register löschen |
Strg+Bild auf/ab, Alt+1…9 |
Register wechseln |
Wird ein Register gelöscht, bleiben die Notizen darin erhalten - nur der Tag verschwindet. Beim Umbenennen wird der Tag überall mitgeführt; gibt es den neuen Namen schon, werden beide zusammengelegt.
Zwei Wege, umschaltbar in den Einstellungen:
- CalDAV - der Termin geht direkt in den Nextcloud-Kalender und ist damit auch auf dem Handy da. Bei Nextcloud ein App-Passwort benutzen, nicht das Anmelde-Passwort.
- Sammel-Termindatei (.ics) - alle offenen Wiedervorlagen stehen
gesammelt in einer Datei (
denkzettel.ics), die man einmal in Thunderbird als Kalender einbindet. Ohne Server, ohne Zugangsdaten.
Ab Werk steht es auf automatisch: erst der Server, und wenn der nicht
erreichbar ist, ersatzweise die Sammel-Datei. Die Notiz merkt sich dann,
dass der Termin noch nicht auf dem Server steht; Strg+R (oder
denkzettel nachtragen) reicht ihn nach, sobald wieder Netz da ist - und
verschwindet dabei automatisch aus der Sammel-Datei. Ein Termin darf
nicht verloren gehen, nur weil gerade kein Netz war.
Die Adresse des eigenen Kalenders muss man nicht suchen - „Kalender suchen …“ holt die Liste vom Server, schon in der Einführung beim ersten Start und jederzeit wieder unter Extras → Einstellungen → Kalender.
Einmalig, danach aktualisiert sich alles von selbst:
- Thunderbird: Datei → Neu → Kalender…
- Im Netzwerk wählen, als Format iCalendar (ICS)
- Als Adresse den vollen Pfad mit
file://davor eintragen, zum Beispielfile:///home/NUTZERNAME/.local/share/denkzettel/kalender/denkzettel.ics(der genaue Pfad steht unter Extras → Einstellungen → Kalender im Feld „Ordner für Termindateien“,denkzettel.icsdahängen) - Name und Farbe frei wählen, „Erinnerungen anzeigen“ anlassen
- Bei „Aktualisieren alle“ eine Minutenzahl eintragen (z. B. 15) - Thunderbird fragt die Datei sonst nur beim Programmstart ab
Thunderbird liest die Datei danach von selbst neu ein; ein Klick auf „Kalender synchronisieren“ (Symbol oben rechts im Kalender) holt sofort den aktuellen Stand, ohne auf das nächste automatische Update zu warten.
Beim allerersten Start läuft ein kurzer Assistent - sechs Seiten, ein paar Minuten: was das Programm tut, wie man spricht (mit Beispielsatz und dem, was daraus wird), welches Mikrofon genommen wird, welcher Kalender benutzt werden soll, welche Tasten es gibt, und zum Schluss der erste Testsatz.
Er ist nicht nur Erklärung, sondern auch der Weg, das Mikrofon zu wechseln oder den Kalender einzurichten - deshalb lässt er sich jederzeit wieder aufrufen:
- im Notizbuch über Hilfe → Einführung
- im Terminal mit
denkzettel einfuehrung
Viele Rechner haben ein eingebautes Mikrofon und das einer Webcam. Welches gemeint ist, kann kein Programm raten, deshalb fragt die Einführung danach und zeigt alle gefundenen Geräte an - mit einer Probe, bei der man ein paar Worte spricht und am Pegelbalken sieht, ob das Gerät wirklich etwas hört. Später ändern: Einführung erneut aufrufen, Extras → Einstellungen oder
denkzettel mikrofone --waehlen
Zwei Dinge sind dabei bewusst gelöst, weil sie sonst still schiefgehen:
- Beim Aufnehmen zeigt ein Pegelbalken die Aussteuerung. Schlägt er nicht aus, steht das sofort als Warnung im Fenster - ein stummes Mikrofon fällt sonst erst auf, wenn der Gedanke schon weg ist.
- Ist das eingestellte Gerät nicht angeschlossen (Webcam abgezogen), nimmt Denkzettel über die Standardquelle auf und sagt das, statt eine leere Datei zu erzeugen.
Namen, Marken und Fachbegriffe kennt whisper.cpp naturgemäß nicht - „RabKarcher aufladen" wurde in einem Test zu „Rabkascha, Auflagen". Unter Extras → Einstellungen → Spracherkennung lässt sich eine Liste eigener Wörter eintragen; sie wird zusammen mit den bekannten Tags als Prompt an whisper.cpp mitgegeben und macht solche Wörter deutlich treffsicherer. Kostet nichts an Zeit, nur ein paar eingetragene Wörter.
git clone https://github.com/Stephan-Lefty/Denkzettel.git
cd Denkzettel
./install.sh
Das Skript erkennt Debian- und Arch-basierte Systeme selbst, installiert
die Pakete, übersetzt whisper.cpp, lädt das Spracherkennungs-Modell
(ab Werk large-v3-turbo, etwa 574 MB), legt die Menüeinträge an, fragt
nach dem Mikrofon und richtet das Tastenkürzel Meta+N ein.
Kleineres Modell für schwächere Rechner:
./install.sh --modell medium # 539 MB
./install.sh --modell small # 190 MB
Prüfen, ob alles bereit ist:
denkzettel pruefen
| Befehl | Wirkung |
|---|---|
denkzettel |
Notizbuch öffnen |
denkzettel erfassen |
sofort aufnehmen (das Tastenkürzel) |
denkzettel einfuehrung |
Einführung erneut zeigen |
denkzettel mikrofone --waehlen |
Mikrofon festlegen |
denkzettel kalender |
Kalender auf dem Server auflisten |
denkzettel nachtragen |
offene Termine nachreichen |
denkzettel pruefen |
Einrichtung prüfen |
denkzettel einstellungen |
Einstellungen öffnen |
| Was | Wo |
|---|---|
| Einstellungen | ~/.config/denkzettel/config.ini |
| Notizen (SQLite) | ~/.local/share/denkzettel/notizen.db |
| Tonaufnahmen | ~/.local/share/denkzettel/aufnahmen/ |
| Sammel-Termindatei | ~/.local/share/denkzettel/kalender/denkzettel.ics |
| Spracherkennung | ~/.local/share/denkzettel/whisper.cpp/, …/modelle/ |
Die Notizen liegen in einer Datei - kopieren genügt als Sicherung.
DialOS erkennt Sprache mit Vosk, und das aus gutem Grund: Dort geht es um eine feste Liste von Befehlssätzen, und mit eingeschränkter Grammatik ist Vosk dabei sehr zuverlässig.
Hier ist es umgekehrt - frei gesprochene Gedanken, kein festes Vokabular. Genau dabei ist Vosk deutlich schwächer, und Nachkorrigieren kostet mehr Zeit, als das größere Modell an Rechenzeit braucht. Beides läuft offline, insofern ändert sich am Grundsatz nichts.
MIT, siehe LICENSE.
Nicht unter diese Lizenz fallen die Bestandteile, die Denkzettel nur
benutzt und nicht mitliefert: whisper.cpp
(ebenfalls MIT) und die Spracherkennungs-Modelle, die install.sh
herunterlädt.
Ebenfalls ausgenommen sind Name und Erscheinungsbild: „Denkzettel" und die Symbole in assets/. Sie sind aus dem App-Symbol von DialOS abgeleitet – dieselbe Dame, derselbe Kreis, nur schreibt statt der Schallwellen ein Stift mit. Für DialOS gilt derselbe Vorbehalt, und er wird hier fortgeschrieben: Den Code darf jeder nehmen, umbauen und weitergeben; das Ergebnis weiterhin „Denkzettel" zu nennen oder mit diesem Gesicht auszuliefern, ist nicht gedeckt. Sonst trägt fremde Arbeit ein Kennzeichen, für das jemand anderes einsteht. Näheres in DialOS/docs/lizenzen.md.
Erste Fassung.
- Eine Sammel-Termindatei statt einer Datei pro Notiz (2026-08-24,
Stephans Wunsch nach direktem Thunderbird-Zugriff ohne Nextcloud).
Thunderbird bindet immer nur eine feste Datei ein, keinen ganzen
Ordner - eine Datei je Notiz hätte bedeutet, jede einzeln von Hand zu
importieren. Jetzt steht alles Offene in
denkzettel.ics, komplett aus der Datenbank neu geschrieben bei jeder Änderung (angelegt, bearbeitet, gelöscht, erledigt, nachgetragen) - kein Suchen und Ersetzen in einer bestehenden Datei, das ist einfacher und garantiert richtig. Ein Termin, der auf den CalDAV-Server nachgetragen wird, verschwindet dabei automatisch aus der Datei. Geprüft: Anlegen, Löschen und Übergang zu CalDAV verändern die Datei genau wie erwartet. - Startmenü zeigt jetzt die gefüllte Kreisscheibe statt der
durchsichtigen Strichzeichnung (2026-08-24, Stephans Wunsch). Die
Farbwahl ist dieselbe wie in den READMEs: dunkle Scheibe auf hellem
Panel.
assets/icon-bauen.pyerzeugt dafürmenue-*.pngin jeder Icon-Theme-Größe aus derselben Farbe wieapp-icon-light.png, undinstall.shinstalliert die statt der transparentenicon-*.pngins Startmenü. Ein Menü zeigt immer nur eine feste Fassung, kein automatisches Umschalten nach Systemthema. - Erstes echtes Diktat über die Webcam gelungen (2026-08-24), nach zwei Korrekturen. Die Aufnahme selbst war nie das Problem - der Pegelverlauf zeigte von Anfang an ein sauberes Sprachmuster. Erstens stand die Eingangslautstärke der Webcam ab Werk auf 76 % statt 100 %. Zweitens wurde ein Gerätename außerhalb des Wortschatzes („RabKarcher“) zu Kauderwelsch, während Datum und Uhrzeit im selben Satz exakt richtig waren - ein Vokabular-Problem, kein Tonqualitätsproblem. Daraus eigene Wörter für whisper.cpp (Extras → Einstellungen → Spracherkennung): Namen, Marken und Fachbegriffe, die zusammen mit den bekannten Tags als Prompt mitgegeben werden. Geprüft an genau diesem Fall: „Rabkascha“ wurde zu „Rabkarcher“.
- Kalender-Einrichtung in die Einführung verlegt (2026-08-24), aus demselben Grund wie beim Mikrofon: Eine neue Seite „Wohin mit der Wiedervorlage?“ bindet dieselbe Kalender-Ansicht wie die Einstellungen ein, samt „Kalender suchen …“. Mikrofon- und Kalenderauswahl werden jetzt sofort gespeichert statt erst am Ende - wer die Einführung danach überspringt, behält die getroffene Wahl.
- Einführung beim ersten Start statt einer Frage im
Installationsskript (Stephans Vorgabe). Fünf Seiten: was das Programm
tut, wie man spricht, Mikrofon-Auswahl mit Probe, Tastenbefehle,
Ausblick. Jederzeit wieder aufrufbar über Hilfe → Einführung oder
denkzettel einfuehrung- sie ist auch der Weg, das Mikrofon zu wechseln. Begründung: Eine Frage, die einmal im Terminal durchläuft, sieht man nie wieder, und man beantwortet sie, bevor man das Programm kennt. - Ein Menüeintrag, unter Dienstprogrammen. Anfangs standen zwei
Einträge in zwei Kategorien:
Categories=Office;TextEditor;bringt KDE dazu, das Programm sowohl unter Büroprogramme als auch unter Dienstprogramme einzusortieren, und die zweite .desktop-Datei war nur als Träger des Tastenkürzels gedacht. Sie steht jetzt aufNoDisplay=true; „Gedanken aufnehmen“ hängt als Aktion am einen Eintrag. - Erkennung gegen bekannten Text geprüft (2026-08-23): vier DialOS-Sprachbeispiele mit hinterlegtem Wortlaut durch whisper.cpp geschickt. Inhaltlich alle vier richtig; Abweichungen nur bei Zeichensetzung und Groß-/Kleinschreibung, ein einziger Wortfehler („Sage“ → „Zeige“). Etwa 27 Sekunden je Diktat - das ist im Wesentlichen die Ladezeit des Modells, nicht die Länge der Aufnahme.
- Aufnahme über PulseAudio/PipeWire (
parecord, ersatzweisearecord) mit Pegelanzeige, Höchstdauer und Warnung bei stummem Mikrofon. - Mikrofon-Auswahl bei der Installation und jederzeit über
denkzettel mikrofone --waehlen. Geräte, die sich nutzlos beschreiben, werden über den Produktnamen aus der Gerätekennung kenntlich gemacht - aus „EEM Gadget Mono“ wird „UGREEN AI Camera CM930 4K“. - Spracherkennung über whisper.cpp, vollständig offline. Die Suche nach
dem Programm ist bewusst streng: Auf vielen Systemen liegt unter
/usr/bin/whisperdas ganz andere openai-whisper mit anderen Aufrufparametern. Mehrdeutige Namen werden vor der Verwendung geprüft, sonst schlüge erst das erste Diktat fehl. - Deutsche Auswertung des Diktats: Tags und Wiedervorlage werden herausgelöst, der Notiztext bleibt sauber. Relative Angaben („in drei Tagen“, „nächsten Montag“), feste Daten, Uhrzeiten in Wort und Ziffer, Tageszeiten - Datum und Uhrzeit in beliebiger Reihenfolge.
- Notizbuch mit Registern je Tag, vollständig mit der Tastatur bedienbar; Register anlegen, umbenennen (mit Zusammenlegen), löschen.
- Kalender über CalDAV mit Rückfall auf Termindateien und Nachreichen, sobald der Server wieder erreichbar ist. Kalendersuche per PROPFIND.
- Eigenes Symbol, aus dem DialOS-App-Icon abgeleitet: Die Vorlage wird in eine Strichzeichnung mit Transparenz zurückgerechnet, die Schallwellen werden entfernt, Schreiblinie und Stift kommen dazu. Das Bauskript rechnet nach, dass der Stift den Ring nicht berührt, und bricht sonst ab.







