Skip to content

Repository files navigation

Denkzettel

Deutsch | English | Änderungsprotokoll | TODO

Denkzettel

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.

Wie es sich anfühlt

Tastenkürzel drücken. Sprechen:

Aufnahme läuft, mit Pegelanzeige und gewähltem Mikrofon

„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

Erkannter Text, Tag und Wiedervorlage zum Prüfen und Korrigieren

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.

Was verstanden wird

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.

Das Notizbuch

Ein Fenster mit Registern wie in einem echten Notizbuch: „Alle“, „Wiedervorlagen“ und je ein Register pro Tag.

Notizbuch mit Registern je 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.

Kalender

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.

Kalender-Einstellungen mit Verbindungsprüfung

Die Sammel-Termindatei in Thunderbird einbinden

Einmalig, danach aktualisiert sich alles von selbst:

  1. Thunderbird: Datei → Neu → Kalender…
  2. Im Netzwerk wählen, als Format iCalendar (ICS)
  3. Als Adresse den vollen Pfad mit file:// davor eintragen, zum Beispiel file:///home/NUTZERNAME/.local/share/denkzettel/kalender/denkzettel.ics (der genaue Pfad steht unter Extras → Einstellungen → Kalender im Feld „Ordner für Termindateien“, denkzettel.ics dahängen)
  4. Name und Farbe frei wählen, „Erinnerungen anzeigen“ anlassen
  5. 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 ersten Start: die Einführung

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.

Einführung: wie man spricht

Einführung: Mikrofon wählen und gleich ausprobieren

Einführung: Kalender einrichten oder als Termindatei belassen

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

Mikrofon

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.

Eigene Wörter

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.

Eigene Wörter in den Spracherkennungs-Einstellungen

Installation

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

Befehle

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

Wo liegt was

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.

Warum whisper.cpp und nicht Vosk

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.

Lizenz

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.

Änderungsprotokoll

0.1.0 (2026-08-23)

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.py erzeugt dafür menue-*.png in jeder Icon-Theme-Größe aus derselben Farbe wie app-icon-light.png, und install.sh installiert die statt der transparenten icon-*.png ins 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 auf NoDisplay=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, ersatzweise arecord) 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/whisper das 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.

About

Aus der DialOS-Familie: Sprachnotizbuch für Debian- und Arch-basierte Systeme. Gedanken sprechen, mit Tags einsortieren und mit einer Wiedervorlage versehen, die im Kalender landet – Spracherkennung läuft vollständig offline auf dem eigenen Rechner.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages