Skip to content

fatihaltiok/voice-ai-desktop-

Repository files navigation

🎙️ Voice AI Desktop

Verwandeln Sie Ihre Stimme in intelligente, strukturierte Inhalte mit KI-gestützter Transkription und Anreicherung.

Eine moderne Desktop-Anwendung, die Spracheingaben aufnimmt, sie mit OpenAI Whisper transkribiert und mit Anthropic Claude anreichert - alles zugänglich über einen globalen Hotkey für nahtlose Workflow-Integration.

Voice AI Desktop Tauri TypeScript


📋 Problemstellung

In der heutigen schnelllebigen digitalen Arbeitswelt ist das manuelle Tippen von Notizen, E-Mails oder strukturierten Inhalten zeitaufwändig und unterbricht den kreativen Fluss. Voice AI Desktop löst dies durch:

  • Sofortige Sprachaufnahme: Nehmen Sie Ihre Gedanken mit einem einzigen Tastendruck auf
  • Präzise Transkription: Wandeln Sie Sprache mit OpenAI's Whisper-Modell in Text um
  • Intelligente Anreicherung: Verwandeln Sie rohe Transkriptionen in ausgefeilte, strukturierte Inhalte
  • Kontextbezogene Verarbeitung: Wählen Sie aus 5 Anreicherungsmodi (Zusammenfassung, Meetingnotizen, Todos, E-Mails, Code)
  • Nahtlose Integration: Globale Hotkey-Aktivierung + Zwischenablage-Integration

🏗️ Architektur-Übersicht

┌─────────────────────────────────────────────────────────────┐
│                     Voice AI Desktop                        │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ┌─────────────────────────────────────────────────────┐   │
│  │          Frontend (Next.js + React)                 │   │
│  │  ┌───────────┐  ┌────────────┐  ┌──────────────┐   │   │
│  │  │ Aufnahme- │  │  Modus-    │  │  Ergebnis-   │   │   │
│  │  │ Interface │  │  Auswahl   │  │  Anzeige     │   │   │
│  │  └───────────┘  └────────────┘  └──────────────┘   │   │
│  │                                                     │   │
│  │  ┌─────────────────────────────────────────────┐   │   │
│  │  │   Audio Recorder Hook                       │   │   │
│  │  │   - Tauri Commands (Rust)                   │   │   │
│  │  │   - Python/PipeWire Backend                 │   │   │
│  │  └─────────────────────────────────────────────┘   │   │
│  └─────────────────────────────────────────────────────┘   │
│                          │                                  │
│                          ▼                                  │
│  ┌─────────────────────────────────────────────────────┐   │
│  │          API-Integrationsschicht                    │   │
│  │  ┌──────────────┐         ┌──────────────────┐     │   │
│  │  │ OpenAI       │         │ Anthropic        │     │   │
│  │  │ Whisper API  │──────▶  │ Claude API       │     │   │
│  │  │              │         │                  │     │   │
│  │  │ Transkription│         │ Text-Anreicherung│     │   │
│  │  └──────────────┘         └──────────────────┘     │   │
│  └─────────────────────────────────────────────────────┘   │
│                          │                                  │
│                          ▼                                  │
│  ┌─────────────────────────────────────────────────────┐   │
│  │          Desktop-Runtime (Tauri/Rust)               │   │
│  │  ┌──────────────────────────────────────────────┐   │   │
│  │  │  Globaler Hotkey (Strg+Shift+V)             │   │   │
│  │  │  - Fenster-Aktivierung                      │   │   │
│  │  │  - Fokus-Verwaltung                         │   │   │
│  │  └──────────────────────────────────────────────┘   │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
└─────────────────────────────────────────────────────────────┘

                    Datenfluss
                    ──────────

 Spracheingabe → Aufnahme → Audio-Blob → Whisper API → Transkription
                                                            │
                                                            ▼
                                          Claude API ← Gewählter Modus
                                                            │
                                                            ▼
                                          Angereicherter Text → Anzeige + Zwischenablage

Tech-Stack

Frontend

  • Next.js 16: React-Framework mit App Router und statischem Export
  • React 19: UI-Komponenten und State-Management
  • TypeScript: Typsichere Entwicklung
  • Tailwind CSS 4: Modernes, utility-first Styling
  • Lucide React: Schöne Icon-Bibliothek

Desktop-Runtime

  • Tauri 2.9: Leichtgewichtiges Rust-basiertes Desktop-Framework
  • Rust: Backend für globale Shortcuts und System-Integration

KI & APIs

  • OpenAI Whisper API: Modernste Sprach-zu-Text-Technologie
  • Anthropic Claude Sonnet 4.5: Fortschrittliche Textverarbeitung und Anreicherung

Hauptfunktionen

  • Segment-basierte Audio-Aufnahme mit PipeWire (Linux-nativ)
  • Globale Hotkey-Registrierung (Strg+Shift+V)
  • Keyboard Shortcuts (Space, Ctrl) für nahtlose Steuerung
  • Zwischenablage-API-Integration
  • Multi-Modus KI-Anreicherungssystem

✨ Features

🎯 Kernfunktionalität

  • Ein-Klick-Aufnahme: Großer, intuitiver Aufnahme-Button mit visuellem Feedback
  • Echtzeit-Status: Klare Indikatoren für Aufnahme-, Verarbeitungs- und Abschlusszustände
  • Fehlerbehandlung: Elegante Fehlermeldungen und Wiederherstellung

🤖 KI-gestützte Anreicherungsmodi

  1. 📝 Zusammenfassung: Prägnante, gut strukturierte Zusammenfassungen mit Kernpunkten
  2. 📋 Meetingnotizen: Strukturiertes Format mit Themen, Entscheidungen und Aktionspunkten
  3. ✅ Todo-Liste: Extrahierte Aktionspunkte mit Checkboxen und Prioritäten
  4. ✉️ E-Mail-Entwurf: Professionelle E-Mail-Formatierung mit Betreff und Begrüßung
  5. 💻 Code-Snippet: Code-Generierung aus verbalen Beschreibungen

⌨️ Produktivitäts-Features

  • Globaler Hotkey: Drücken Sie Strg+Shift+V überall, um die App zu aktivieren
  • In Zwischenablage kopieren: Ein-Klick-Kopieren von Transkription oder angereichertem Text
  • Visuelles Feedback: "Kopiert!"-Bestätigung mit Icons
  • Moderne UI: Dunkles Theme mit Farbverläufen und Glasmorphismus-Karten

🚀 Setup-Anleitung

Voraussetzungen

Entwicklungs-Tools:

  • Node.js 20+ und npm
  • Rust 1.77.2+ (für Tauri)
  • Git

System-Dependencies (Linux):

  • Python 3.8+
  • PipeWire (modernes Linux Audio-System)
  • ffmpeg (für Audio-Segment-Merge)

Ubuntu/Debian Installation:

sudo apt update
sudo apt install python3 pipewire ffmpeg

Fedora/RHEL Installation:

sudo dnf install python3 pipewire ffmpeg

Arch Linux Installation:

sudo pacman -S python pipewire ffmpeg

Installation

Option 1: Automatisches Setup (empfohlen)

# Repository klonen
git clone https://github.com/fatihaltiok/voice-ai-desktop-.git
cd voice-ai-desktop-

# Setup-Script ausführen (installiert System-Dependencies + npm packages)
./setup.sh

Option 2: Manuelle Installation

  1. Repository klonen
git clone https://github.com/fatihaltiok/voice-ai-desktop-.git
cd voice-ai-desktop-
  1. System-Dependencies installieren (siehe oben je nach OS)

  2. npm Dependencies installieren

npm install
  1. API-Keys konfigurieren

Erstellen Sie eine .env.local Datei im Hauptverzeichnis:

cp .env.example .env.local

Bearbeiten Sie .env.local und fügen Sie Ihre API-Keys hinzu:

# OpenAI API Key (für Whisper Sprach-zu-Text)
NEXT_PUBLIC_OPENAI_API_KEY=sk-proj-ihr-key-hier

# Anthropic API Key (für Claude KI)
NEXT_PUBLIC_ANTHROPIC_API_KEY=sk-ant-api03-ihr-key-hier

API-Keys erhalten:

  1. Im Entwicklungsmodus ausführen
npm run tauri:dev
  1. Für Produktion bauen
npm run tauri:build

Die gebaute Anwendung befindet sich in src-tauri/target/release/bundle/


🎨 Design-Entscheidungen

1. Tauri statt Electron

  • Warum: 10x kleinere Bundle-Größe, bessere Performance, erhöhte Sicherheit
  • Abwägung: Etwas komplexeres Setup, aber lohnenswert für Desktop-Apps

2. Client-seitige API-Integration

  • Warum: Vereinfacht die Architektur für Desktop-Apps (kein Server benötigt)
  • Sicherheit: Sicher im Desktop-Kontext, da Code gebündelt und lokal ausgeführt wird
  • Alternative erwogen: Tauri-Commands (würde Rust-Komplexität hinzufügen)

3. Statischer Export mit Next.js

  • Warum: Vollständige statische Site-Generierung für optimale Tauri-Kompatibilität
  • Vorteil: Schnelles Laden, keine Laufzeit-Server erforderlich

4. Multi-Modus-Anreicherung

  • Warum: Verschiedene Anwendungsfälle erfordern unterschiedliche Formatierung
  • Implementierung: Template-basierte Prompts für konsistente Ausgabe
  • Erweiterbarkeit: Einfach neue Modi durch Erweitern von MODE_PROMPTS hinzufügen

5. Audio-Format: WAV (16-bit, 44.1kHz, Mono)

  • Warum: Direkter Hardware-Zugriff über PipeWire, keine Browser-Konvertierung
  • Qualität: Verlustfrei, optimiert für Sprache
  • Kompatibilität: Whisper API verarbeitet WAV nativ

6. Globaler Hotkey: Strg+Shift+V

  • Warum: Nicht häufig verwendet, leicht zu merken (V für Voice)
  • Plattformübergreifend: Verwendet CommandOrControl für Mac/Windows-Kompatibilität

7. Python für Audio-Aufnahme

  • Technologie: pw-record (PipeWire native tool) über Python-Subprocess
  • Grund: PipeWire ist das moderne Linux-Audio-System und pw-record bietet direkten, zuverlässigen Zugriff auf Hardware-Devices
  • Architektur: Tauri/Rust managed den Python-Prozess (Start/Stop/Pause via Signals)
  • Segment-Merge: ffmpeg fügt Audio-Segmente bei Pause/Resume zusammen

8. Kein lokaler Speicher/Verlauf (v1)

  • Begründung: MVP fokussiert auf sofortige Nutzung + Zwischenablage-Integration
  • Zukunft: Könnte SQLite-basierten Verlauf im Tauri-Backend hinzufügen

📂 Projektstruktur

voice-ai-desktop/
├── app/                          # Next.js App-Verzeichnis
│   ├── hooks/                    # React Hooks
│   │   └── useAudioRecorder.ts   # Audio-Aufnahme-Logik
│   ├── lib/                      # Utility-Funktionen
│   │   └── api.ts                # OpenAI & Anthropic Integration
│   ├── globals.css               # Globale Styles
│   ├── layout.tsx                # Root-Layout
│   └── page.tsx                  # Haupt-Anwendungsseite
├── src-tauri/                    # Tauri Rust Backend
│   ├── src/
│   │   ├── audio_recorder.rs     # Audio-Aufnahme Manager (Rust)
│   │   ├── lib.rs                # Haupt-Tauri-Logik + globaler Hotkey
│   │   └── main.rs               # Einstiegspunkt
│   ├── capabilities/             # Tauri-Berechtigungen
│   │   └── default.json          # App-Capabilities-Konfiguration
│   ├── icons/                    # App-Icons
│   ├── record_audio_pwrecord.py  # Python Audio Backend (PipeWire)
│   ├── Cargo.toml                # Rust-Dependencies
│   └── tauri.conf.json           # Tauri-Konfiguration
├── public/                       # Statische Assets
├── .env.local                    # API-Keys (nicht committed)
├── .env.example                  # Template für API-Keys
├── .gitignore                    # Git-Ignore-Regeln
├── requirements.txt              # Python-Dependencies (nur stdlib)
├── setup.sh                      # Automatisches Setup-Script
├── next.config.ts                # Next.js-Konfiguration
├── package.json                  # Node-Dependencies & Scripts
├── tailwind.config.ts            # Tailwind CSS Konfiguration
├── tsconfig.json                 # TypeScript-Konfiguration
└── README.md                     # Diese Datei

🔧 Verwendung

  1. App starten (Entwicklungs- oder Produktions-Build)
  2. Aufnahme-Button drücken oder globalen Hotkey Strg+Shift+V verwenden
  3. Anreicherungsmodus wählen (Zusammenfassung, Meetingnotizen, Todo, E-Mail oder Code)
  4. Aufnahme starten - sprechen Sie klar in Ihr Mikrofon
  5. Aufnahme stoppen - die App transkribiert und reichert automatisch an
  6. Ergebnisse kopieren - verwenden Sie die Kopier-Buttons, um in jede Anwendung einzufügen

🧪 Testing

Manuelle Test-Checkliste

  • Audio-Aufnahme startet und stoppt korrekt
  • Mikrofon-Berechtigungsabfrage erscheint
  • Transkription liefert präzisen Text
  • Alle 5 Anreicherungsmodi funktionieren wie erwartet
  • In Zwischenablage kopieren funktioniert einwandfrei
  • Globaler Hotkey aktiviert das Fenster
  • Fehlermeldungen werden bei API-Ausfällen angezeigt
  • UI ist responsiv und visuell ausgereift

Getestet auf

  • Ubuntu 22.04 LTS (Entwicklung)
  • Linux mit GNOME Desktop-Umgebung

🎥 Demo-Video-Script

[0:00-0:10] Einführung

  • "Hallo, ich bin [Ihr Name], und das ist Voice AI Desktop"
  • "Ein Tool, das Ihre Stimme in strukturierte, KI-verbesserte Inhalte verwandelt"

[0:10-0:30] Problem & Lösung

  • "Das Tippen von Notizen, E-Mails und Todos unterbricht den Arbeitsfluss"
  • "Voice AI Desktop lässt Sie natürlich sprechen und liefert formatierte, professionelle Ergebnisse"

[0:30-1:30] Feature-Demo

  • Zeigen Sie die UI
  • Demonstrieren Sie die Aufnahme
  • Zeigen Sie erscheinende Transkription
  • Heben Sie Anreicherungsmodi hervor
  • Demo: In Zwischenablage kopieren
  • Globale Hotkey-Aktivierung

[1:30-2:00] Technische Highlights

  • "Gebaut mit Next.js und Tauri für ein leichtgewichtiges Desktop-Erlebnis"
  • "Angetrieben von OpenAI Whisper für Transkription"
  • "Verbessert durch Claude KI für intelligente Textverarbeitung"

[2:00-2:30] Anwendungsfälle

  • "Perfekt für Meetingnotizen, schnelle Todos, E-Mail-Entwürfe und mehr"
  • "Greifen Sie sofort mit Strg+Shift+V von überall darauf zu"

[2:30-2:45] Abschluss

  • "Schauen Sie sich das Repository für Setup-Anweisungen an"
  • "Vielen Dank fürs Zuschauen!"

🚧 Zukünftige Erweiterungen

  • Verlauf/Archiv: Lokale SQLite-Datenbank für vergangene Aufnahmen
  • Export-Formate: Als Markdown, PDF oder Plain-Text-Dateien speichern
  • Benutzerdefinierte Modi: Benutzerdefinierte Anreicherungs-Templates
  • Sprachaktivitätserkennung: Auto-Stop bei erkannter Stille
  • Mehrsprachige Unterstützung: UI-Übersetzungen + Auto-Spracherkennung
  • Dark/Light Theme Toggle: Benutzerpräferenz-Unterstützung
  • Einstellungs-Panel: Hotkey, Standardmodus, Audioqualität anpassen
  • System-Tray-Integration: In Tray minimieren, Schnellzugriffs-Menü
  • Offline-Modus: Lokales Whisper-Modell für Transkription ohne API

📜 Lizenz

Dieses Projekt wurde für den KI Beratung Developer Contest erstellt.


📧 Kontakt

Erstellt von Fatih Altiok

GitHub: @fatihaltiok

About

Desktop-App die Sprache aufnimmt → transkribiert → KI-bearbeitet → nutzbares Ergebnis liefert

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors