Zurück zu Learnings

Learnings / Einen lokalen Sprachworkflow aufbauen

Ihre Stimme.
Ihr Mac.
Ihr KI-Stack.

Diktieren Sie, bereinigen Sie das Transkript und hören Sie den gesprochenen Text. Wie ich NautPin, ein lokales Sprachmodell, und Kokoro auf meinem Mac verbunden habe.

Der Grund

Ich wollte einen Sprachassistenten, dessen Nutzung ich mir leisten konnte.

Ich begann mit einer Stimme, die mir gefiel, und einer ElevenLabs-Integration. Nach weniger als fünfzehn Minuten Streaming-Sprachnutzung war mein Kontingent erschöpft und ich wurde per E-Mail aufgefordert, ein Upgrade durchzuführen. Das brachte mich dazu, zu überdenken, wie ich den Assistenten baute.

Die Komponenten für eine lokale Version waren bereits vorhanden. Ich wollte verstehen, was jeder einzelne tat, und sie auf meinem eigenen Mac verbinden. Daraus entstand der hier beschriebene Sprach-Workflow.

01 / Die Geschichte

Die Stimme, die ich wollte, war mit einem Preis verbunden, den ich nicht erwartet hatte

Der NautPin-Startbildschirm vereint Transkription, Aktivitätssummen und aktuelle Aufzeichnungen in einem Arbeitsbereich. Wählen Sie das Bild aus, um es zu vergrössern.

Ich wollte einen persönlichen Assistenten bauen und hatte eine bestimmte Stimme im Sinn. Es gefiel mir so gut, dass die richtige Stimme zu meiner Priorität wurde. Damals war ElevenLabs die beste Option, die ich für die von mir gewünschten gesprochenen Antworten gefunden hatte.

Ich habe es als Streaming-Sprachdienst verbunden. In weniger als fünfzehn Minuten hatte ich mein Kontingent aufgebraucht. Dann kam die E-Mail mit der Aufforderung zum Upgrade. Die Kosten für die Fortsetzung waren weitaus höher, als ich für einen persönlichen Sprachassistenten zu zahlen bereit war.

Dieses Erlebnis gab den Anstoss. Konnte ich die Sprachfunktionen selbst bauen? Was brauchte ich für den lokalen Betrieb? Spracherkennung, Sprachmodelle und Spracherzeugung gab es bereits als einzelne Komponenten. Ich musste sie verbinden.

Ich habe mit diesen Teilen experimentiert, bis ich einen Workflow hatte, der das Diktat in der von mir verwendeten Anwendung übernehmen, den Text bereinigen und meine eigenen Anwendungen eine Antwort sprechen lassen konnte. Das folgende lokale Setup ist das Ergebnis und stellt keinen Anspruch auf Reproduktion der Originalstimme von ElevenLabs dar.

Ich begann mit Pindrop, der quelloffenen Diktier-App für den Mac. Daraus entstand mein Fork NautPin. Ich verband die KI-Textkorrektur mit einem lokalen Sprachmodell und ergänzte das Logbuch zur Auswertung meines Diktatverlaufs. Kokoro übernahm die Sprachausgabe.

02 / Das Problem

Ich wollte den täglichen Gebrauch ohne laufende Rechnung für den Sprachdienst

Das erste Problem waren die Kosten. Ich wollte den Assistenten nutzen, ohne mich zu fragen, wie schnell ein Gespräch mein Kontingent erschöpfen würde. Durch den lokalen Aufbau kann ich ausserdem die Komponenten auswählen und in meinen eigenen Anwendungen wiederverwenden.

Durch die Beibehaltung der Verarbeitung vor Ort ändert sich auch der Datenpfad. Audio und Transkripte müssen nicht über eine Cloud-Speech- oder Bereinigungs-API geleitet werden. Das hängt von der Konfiguration ab: Wenn Sie ein Cloud-Modell wählen oder Text an einen gehosteten Codierungsassistenten übergeben, wird dieser Text immer noch ausserhalb des Mac gesendet.

Die lokale Verarbeitung hat ihre eigenen Kosten und Grenzen. Modelle beanspruchen Speicherplatz und Arbeitsspeicher, der Mac stellt die Rechenleistung bereit und ich verwalte die Dienste. Durch die Vermeidung von Cloud-Gebühren pro Anfrage wird weder die Hardware noch der Strom kostenlos.

03 / Wie es funktioniert

Diktat, Bereinigung und Sprachausgabe verbinden

NautPin erfasst die Spracheingabe

Die Ansicht "Modelle" zeigt das ausgewählte Transkriptionsmodell und trennt lokale, Cloud- und bevorstehende Optionen. Dieser Screenshot zeigt ein ausgewähltes lokales Modell. Wählen Sie das Bild aus, um es zu vergrössern.

Ein Hotkey startet und stoppt das Diktat. Eine Transkriptions-Engine auf dem Gerät wandelt die Audiodaten in Text um. NautPin kann dieses Transkript zur Bereinigung an ein konfiguriertes lokales Sprachmodell übergeben und das Ergebnis dann am Cursor in der fokussierten Anwendung einfügen.

Zu unseren Ergänzungen zu Pindrop gehören Hotkey-Verbesserungen und ein Befehl "Ausgewählten Text lesen". Markieren Sie Text in einer Anwendung, lösen Sie den Befehl aus und NautPin sendet ihn zum Vorlesen an den konfigurierten Kokoro-Dienst. Die Bereinigung lokaler Sprachmodelle ist ebenfalls Teil des Workflows.

Ein lokales Modell bereinigt das Transkript

LM Studio oder Ollama stellt den Modellendpunkt bereit. NautPin sendet die Transkript- und Bereinigungsanweisungen an diesen Dienst. Sie wählen ein Modell aus, das zum Mac passt, und prüfen, ob die Änderungen das Gesagte widerspiegeln. Durch die Bereinigung sollten Namen, Fachbegriffe oder Bedeutungen nicht stillschweigend geändert werden.

Das Setup auf einem einzelnen Mac nutzt Loopback-Adressen. In dieser Anleitung ist das http://127.0.0.1:1234/v1 für LM Studio und http://127.0.0.1:11434/v1 für Ollama. Verwenden Sie die Adresse, auf der Ihr Server tatsächlich läuft.

Kokoro verwandelt Text in Sprache

Kokoro-FastAPI stellt den lokalen Endpunkt /v1/audio/speech bereit. Die Anleitung verwendet den CPU-Container und bindet Port 8880 an 127.0.0.1. Eine Anwendung kann Text dorthin senden und die zurückgegebenen Audiodaten abspielen. Für reines Diktieren ist dieser Schritt optional.

Tastenkürzel und Mikrofon
  → NautPin transkribiert auf dem Mac
  → Ein lokales Modell korrigiert den Text
  → Der Text erscheint am Cursor

Optionale Sprachausgabe:
Text oder Antwort einer Anwendung
  → Kokoro auf dem Mac
  → Audiowiedergabe

Die Dienste kommunizieren über lokale HTTP-Endpunkte. Wenn Sie sie geladen halten, können wiederholte Startarbeiten reduziert werden, die Geschwindigkeit hängt jedoch vom ausgewählten Modell, der Hardware und der Eingabelänge ab. Der CPU-Container ist keine Apple GPU oder MLX-Backend.

Das Logbuch macht den Diktatverlauf nützlich

Ich wollte auch herausfinden, was mir meine Sprachmuster im Laufe der Zeit sagen könnten. Zu diesem Zweck haben wir das Logbuch um eine Analyse der Sprechgeschwindigkeit und des Sprachgebrauchs erweitert. Es gibt mir eine Aufzeichnung, die ich prüfen kann, anstatt mich auf meinen Eindruck davon zu verlassen, wie ich gesprochen habe.

Das Logbuch zeigt die Anzahl der Diktate, das Sprechtempo und Tageszeitmuster aus dem lokalen Transkriptverlauf. Wählen Sie das Bild aus, um es zu vergrössern.

Das Logbuch nutzt den lokalen Transkriptspeicher, um Wortzahlen, durchschnittliche und mittlere Sprechgeschwindigkeit, Wortschatzvielfalt, Aktivitätsstreifen und Tageszeitmuster anzuzeigen. Es verfolgt auch Zielanwendungen, wiederholte Phrasen und Satzeröffnungen.

Andere Ansichten untersuchen die Fragehäufigkeit und das Sprachregister. Ein konfiguriertes lokales Modell kann Themen aus dem Verlauf gruppieren. Textmuster-Wohlbefindensindikatoren sind explorative Signale, keine medizinische Beurteilung. Der Transkriptverlauf bleibt vertraulich, auch wenn er lokal gespeichert wird.

Wofür ich es verwende und was unvollendet bleibt

Ich verwende das Diktat für Entwürfe, Nachrichten und lautes Denken. Mit der Sprachausgabe kann eine Anwendung mir Text oder die Antwort eines Assistenten vorlesen. Dieselben Endpunkte können mit anderen Tools verbunden werden, ohne dass NautPin zum Mittelpunkt jedes Arbeitsablaufs wird.

Das hier beschriebene Setup ist Hotkey-gesteuert. Ständiges Zuhören und automatisches Abwechseln sind nicht Teil dieses Builds. Die Verwendung mit einem gehosteten Assistenten macht diesen Assistenten auch nicht lokal; Auf dem Mac laufen nur die Sprachverarbeitung und das konfigurierte Bereinigungsmodell.

04 / Installation

Lassen Sie es uns auf Ihrem Mac installieren

Beginnen Sie mit der Vorbereitungsanleitung. Es deckt die Mac-Anforderungen, Modellspeicherung, Homebrew, Xcode sowie die von NautPin benötigten Mikrofon- und Zugriffsberechtigungen ab.

Installieren Sie die Containerlaufzeit, überprüfen Sie Kokoro und starten Sie dann ein lokales Sprachmodell. Erstellen Sie NautPin und verbinden Sie es erst, nachdem jeder Dienst einzeln reagiert hat. Die abschliessenden Leitfäden testen den gesamten Arbeitsablauf und behandeln die Fehlerbehebung.

Modell- und Container-Downloads erfordern während der Einrichtung eine Netzwerkverbindung. Um die Verarbeitung anschliessend auf diesem Mac fortzusetzen, wählen Sie lokale Anbieter aus und binden Sie die Server an Loopback, anstatt sie dem Netzwerk auszusetzen.

Beginnen Sie mit den Installationsanforderungen, oder wählen Sie unten die passende Anleitung.

Erstellen Sie Ihren lokalen Voice-Stack.

Richten Sie jede Komponente ein, verbinden Sie sie und testen Sie den gesamten Arbeitsablauf.

Alle Anleitungen