Hallo Christoph,
du hattest eingeladen, Blitztext zu forken, anzupassen und das Ergebnis als Feedback zurückzugeben. Das mache ich hiermit. Wir sind ein Baufinanzierungsvermittlungsunternehmen und (vorerst) ein kleiner Teil meines Teams und ich nutzen Blitztext seit Veröffentlichung täglich. Wir haben die App jetzt Stück für Stück zu dem ausgebaut, was wir im Alltag wirklich brauchen. Der komplette Stand inklusive Quellcode liegt hier: https://github.com/mschnitzler-creator/blitztext-app-v2
Damit du nicht erst Code lesen musst, hier in normaler Sprache, was die App jetzt in der angepassten Version jetzt kann:
1. Die App hat ein Gedächtnis bekommen: das Verlaufsfenster.
Im Original ist ein Diktat nach dem Einfügen weg. Jetzt speichert die App jeden diktierten Text und jedes Meeting-Transkript lokal auf dem Mac (bis 1.000 Einträge, nichts davon verlässt das Gerät). Im Verlaufsfenster gibt es zwei Tabs, „Diktate" und „Meetings", eine Volltextsuche und pro Eintrag einen Kopieren-Knopf. Wer abends wissen will, was er mittags diktiert hat, findet es in Sekunden.
2. Meetings aufnehmen und als Text mit Sprechern zurückbekommen.
Das ist der größte Ausbau. Ein Beispiel: Du sitzt mit Kopfhörern in einem Zoom-Call. Die App nimmt gleichzeitig dein Mikrofon und den Systemton auf (über ScreenCaptureKit, darum funktioniert es auch mit Kopfhörern). Nach dem Meeting klickst du auf Stopp, ein paar Minuten später steht im Verlauf: das komplette Transkript mit Sprecherzuordnung („Sprecher 1: …", „Sprecher 2: …", umbenennbar in echte Namen), darüber ein automatisch erzeugter Titel und eine Stichpunkt-Zusammenfassung mit Entscheidungen, Aufgaben und offenen Punkten. Die Transkription läuft wahlweise in der Cloud (ElevenLabs Scribe v2, liefert die Sprecherzuordnung) oder komplett lokal über WhisperKit (dann ohne Sprecher, Audio bleibt auf dem Mac). Das wählt man pro Aufnahme. Wenn die Sprechererkennung mal zwei Personen zusammenlegt (Telefon auf laut neben dem Mikro), kann man Teilnehmer von Hand nachtragen.
3. Die App merkt selbst, wenn ein Meeting losgeht.
Startet Zoom, Teams oder Webex, oder greift eine Meeting-App aufs Mikrofon zu, erscheint oben am Bildschirm eine kleine schwebende Karte: „Zoom-Meeting erkannt – aufzeichnen?" Ein Klick, die Aufnahme läuft. Google Meet im Browser wird über den Fenstertitel erkannt. Bewusst als eigenes Banner gebaut statt als macOS-Mitteilung, dadurch braucht es keine Mitteilungs-Erlaubnis und kann nicht im Fokus-Modus untergehen. Eigene Diktate lösen das Banner nicht aus.
4. Eine einzige Taste zum Diktieren: F13.
Für Tastaturen mit freier Funktionstaste: F13 drücken startet die Aufnahme, nochmal drücken stoppt sie, der Text wird wie gewohnt eingefügt. Der Tastendruck wird systemweit abgefangen und geschluckt, tippt also nirgends ein Zeichen. Für Vieldiktierer ist das der halbe Charme der App: keine Tastenkombination mehr halten.
5. Teamfähig, ohne OpenAI-Keys zu verteilen.
Im Original trägt jeder Nutzer seinen eigenen OpenAI-Key in die App ein. Bei mehreren Mitarbeitern wollten wir den echten Key niemandem geben. Lösung: ein Mini-Server (eine einzige Node.js-Datei ohne Abhängigkeiten, liegt im Fork unter server/, systemd-Unit dabei). Der Key liegt nur auf dem Server. Jeder Nutzer bekommt ein eigenes App-Passwort, trägt es statt des Keys in die App ein und kann einzeln wieder abgeklemmt werden. Das Server-Log zeigt, wer wie viel nutzt, aber nie Inhalte. In den Einstellungen der App gibt es dafür ein neues Feld „Server (optional)". Leer gelassen verhält sich die App exakt wie dein Original und spricht direkt mit OpenAI. Der Server stellt außerdem die Meeting-Route für Scribe v2 bereit.
6. Meetings wandern auf Wunsch ins Second Brain.
Optionaler Export: jedes Meeting als Markdown-Datei mit Titel, Datum, Teilnehmern, Zusammenfassung und Transkript in einen frei wählbaren Ordner, bei uns der Obsidian-Vault. Benennt man das Meeting später um, wird die Datei beim erneuten Export sauber ersetzt.
7. Alltags-Härtung, weil wir die App wirklich jeden Tag benutzen:
- Das manchmal verschluckte erste Wort ist gefixt (
prepareToRecord() vor record()).
- Lange Diktate brachen nach 60 Sekunden ab und der Text war weg. Jetzt: großzügige Timeouts, und wenn eine Transkription trotzdem scheitert, liegt die Audio-Aufnahme in einem Rettungsordner statt im Nichts.
- Aufnahme-Overlay unten am Bildschirm mit Pegelanzeige und Timer, dazu ein optionaler kurzer Hinweiston bei Aufnahmestart.
- Vierter Modus im Textverbesserer: „E-Mail" macht aus einem gesprochenen Gedanken eine versandfertige Mail, übernimmt Du oder Sie genau wie diktiert und erfindet keine Inhalte dazu.
Zahlen aus unserem Betrieb: Diktate kosten uns etwa 0,6 Cent pro Minute (Whisper), Meetings etwa 0,22 Dollar pro Stunde (Scribe v2 über fal.ai). Die 61 Unit-Tests des Forks laufen grün. Dein Name, deine MIT-Lizenz und dein Trademark-Hinweis sind unverändert im Repo, die README erklärt alles oben Beschriebene noch einmal ausführlich auf Englisch.
Danke für die Basis und für die Einladung zum Mitbauen. Ohne dein Repo gäbe es das alles nicht. Richtig klasse!
Viele Grüße
Marc
Hallo Christoph,
du hattest eingeladen, Blitztext zu forken, anzupassen und das Ergebnis als Feedback zurückzugeben. Das mache ich hiermit. Wir sind ein Baufinanzierungsvermittlungsunternehmen und (vorerst) ein kleiner Teil meines Teams und ich nutzen Blitztext seit Veröffentlichung täglich. Wir haben die App jetzt Stück für Stück zu dem ausgebaut, was wir im Alltag wirklich brauchen. Der komplette Stand inklusive Quellcode liegt hier: https://github.com/mschnitzler-creator/blitztext-app-v2
Damit du nicht erst Code lesen musst, hier in normaler Sprache, was die App jetzt in der angepassten Version jetzt kann:
1. Die App hat ein Gedächtnis bekommen: das Verlaufsfenster.
Im Original ist ein Diktat nach dem Einfügen weg. Jetzt speichert die App jeden diktierten Text und jedes Meeting-Transkript lokal auf dem Mac (bis 1.000 Einträge, nichts davon verlässt das Gerät). Im Verlaufsfenster gibt es zwei Tabs, „Diktate" und „Meetings", eine Volltextsuche und pro Eintrag einen Kopieren-Knopf. Wer abends wissen will, was er mittags diktiert hat, findet es in Sekunden.
2. Meetings aufnehmen und als Text mit Sprechern zurückbekommen.
Das ist der größte Ausbau. Ein Beispiel: Du sitzt mit Kopfhörern in einem Zoom-Call. Die App nimmt gleichzeitig dein Mikrofon und den Systemton auf (über ScreenCaptureKit, darum funktioniert es auch mit Kopfhörern). Nach dem Meeting klickst du auf Stopp, ein paar Minuten später steht im Verlauf: das komplette Transkript mit Sprecherzuordnung („Sprecher 1: …", „Sprecher 2: …", umbenennbar in echte Namen), darüber ein automatisch erzeugter Titel und eine Stichpunkt-Zusammenfassung mit Entscheidungen, Aufgaben und offenen Punkten. Die Transkription läuft wahlweise in der Cloud (ElevenLabs Scribe v2, liefert die Sprecherzuordnung) oder komplett lokal über WhisperKit (dann ohne Sprecher, Audio bleibt auf dem Mac). Das wählt man pro Aufnahme. Wenn die Sprechererkennung mal zwei Personen zusammenlegt (Telefon auf laut neben dem Mikro), kann man Teilnehmer von Hand nachtragen.
3. Die App merkt selbst, wenn ein Meeting losgeht.
Startet Zoom, Teams oder Webex, oder greift eine Meeting-App aufs Mikrofon zu, erscheint oben am Bildschirm eine kleine schwebende Karte: „Zoom-Meeting erkannt – aufzeichnen?" Ein Klick, die Aufnahme läuft. Google Meet im Browser wird über den Fenstertitel erkannt. Bewusst als eigenes Banner gebaut statt als macOS-Mitteilung, dadurch braucht es keine Mitteilungs-Erlaubnis und kann nicht im Fokus-Modus untergehen. Eigene Diktate lösen das Banner nicht aus.
4. Eine einzige Taste zum Diktieren: F13.
Für Tastaturen mit freier Funktionstaste: F13 drücken startet die Aufnahme, nochmal drücken stoppt sie, der Text wird wie gewohnt eingefügt. Der Tastendruck wird systemweit abgefangen und geschluckt, tippt also nirgends ein Zeichen. Für Vieldiktierer ist das der halbe Charme der App: keine Tastenkombination mehr halten.
5. Teamfähig, ohne OpenAI-Keys zu verteilen.
Im Original trägt jeder Nutzer seinen eigenen OpenAI-Key in die App ein. Bei mehreren Mitarbeitern wollten wir den echten Key niemandem geben. Lösung: ein Mini-Server (eine einzige Node.js-Datei ohne Abhängigkeiten, liegt im Fork unter
server/, systemd-Unit dabei). Der Key liegt nur auf dem Server. Jeder Nutzer bekommt ein eigenes App-Passwort, trägt es statt des Keys in die App ein und kann einzeln wieder abgeklemmt werden. Das Server-Log zeigt, wer wie viel nutzt, aber nie Inhalte. In den Einstellungen der App gibt es dafür ein neues Feld „Server (optional)". Leer gelassen verhält sich die App exakt wie dein Original und spricht direkt mit OpenAI. Der Server stellt außerdem die Meeting-Route für Scribe v2 bereit.6. Meetings wandern auf Wunsch ins Second Brain.
Optionaler Export: jedes Meeting als Markdown-Datei mit Titel, Datum, Teilnehmern, Zusammenfassung und Transkript in einen frei wählbaren Ordner, bei uns der Obsidian-Vault. Benennt man das Meeting später um, wird die Datei beim erneuten Export sauber ersetzt.
7. Alltags-Härtung, weil wir die App wirklich jeden Tag benutzen:
prepareToRecord()vorrecord()).Zahlen aus unserem Betrieb: Diktate kosten uns etwa 0,6 Cent pro Minute (Whisper), Meetings etwa 0,22 Dollar pro Stunde (Scribe v2 über fal.ai). Die 61 Unit-Tests des Forks laufen grün. Dein Name, deine MIT-Lizenz und dein Trademark-Hinweis sind unverändert im Repo, die README erklärt alles oben Beschriebene noch einmal ausführlich auf Englisch.
Danke für die Basis und für die Einladung zum Mitbauen. Ohne dein Repo gäbe es das alles nicht. Richtig klasse!
Viele Grüße
Marc