Home
Login
ggml-org/whisper.cpp

Eine hochperformante C/C++-Portierung des OpenAI Whisper-Spracherkennungsmodells, die reine CPU-Inferenz und Multiplattform-Bereitstellung unterstützt.

MITC++ 40.8kggml-org Last Updated: 2025-06-13
https://github.com/ggml-org/whisper.cpp

Whisper.cpp Projektübersicht

Projektübersicht

Whisper.cpp ist eine hochperformante C/C++-Portierung des OpenAI Whisper Automatic Speech Recognition (ASR)-Modells. Dieses Projekt implementiert das ursprünglich Python-basierte Whisper-Modell in reinem C/C++-Code neu und realisiert eine abhängigkeitsfreie und hocheffiziente Spracherkennung, die sich besonders für ressourcenbeschränkte Umgebungen und eingebettete Geräte eignet.

Kernfunktionen und -merkmale

🚀 Leistungsoptimierungsmerkmale

Effiziente Inferenz-Engine

  • Reine C/C++-Implementierung: Keine Python-Abhängigkeiten, schnelle Startgeschwindigkeit, geringe Speichernutzung
  • Keine Speicherallokation zur Laufzeit: Optimierte Speicherverwaltung, Vermeidung von Speicherfragmentierung zur Laufzeit
  • Unterstützung für gemischte Präzision: F16/F32-Berechnungen mit gemischter Präzision, Ausgewogenheit zwischen Genauigkeit und Leistung
  • Ganzzahlquantisierung: Unterstützt verschiedene Quantisierungsverfahren (Q5_0, Q8_0 usw.), reduziert die Modellgröße und den Speicherbedarf erheblich

Hardwarebeschleunigungsunterstützung

  • Apple Silicon Optimierung:
    • ARM NEON Befehlssatzoptimierung
    • Accelerate Framework Integration
    • Metal GPU Beschleunigung
    • Core ML ANE (Neural Engine) Unterstützung
  • x86-Architektur Optimierung: AVX/AVX2 Befehlssatzbeschleunigung
  • GPU-Beschleunigungsunterstützung:
    • NVIDIA CUDA Unterstützung
    • Vulkan plattformübergreifende GPU-Beschleunigung
    • OpenCL Unterstützung
  • Spezielle Hardwareunterstützung:
    • Intel OpenVINO Inferenzbeschleunigung
    • Huawei Ascend NPU Unterstützung
    • Moore Threads GPU Unterstützung

🌍 Plattformübergreifende Unterstützung

Unterstützte Betriebssysteme

  • Desktop-Plattformen: macOS (Intel/Apple Silicon), Linux, Windows, FreeBSD
  • Mobile Plattformen: iOS, Android
  • Eingebettet: Raspberry Pi und andere ARM-Geräte
  • Web-Plattform: WebAssembly-Unterstützung, kann im Browser ausgeführt werden

Mehrsprachige Bindungen

  • Native Unterstützung: C/C++, Objective-C
  • Offizielle Bindungen: JavaScript, Go, Java, Ruby
  • Community-Bindungen: Python, Rust, C#/.NET, R, Swift, Unity

🎯 Kernfunktionsmodule

Spracherkennungs-Engine

  • Echtzeit-Transkription: Unterstützt Echtzeit-Spracherkennung über Mikrofon
  • Stapelverarbeitung: Unterstützt die Stapeltranskription von Audiodateien
  • Mehrsprachige Unterstützung: Unterstützt Spracherkennung in 99 Sprachen
  • Sprechersegmentierung: Unterstützt einfache Sprecheridentifikationsfunktionen

Audioverarbeitungsfunktionen

  • Unterstützung mehrerer Formate: Unterstützt verschiedene Audioformate durch FFmpeg-Integration
  • Abtastratenanpassung: Automatische Verarbeitung von Audioeingängen mit unterschiedlichen Abtastraten
  • Audiovorverarbeitung: Integrierte Audio-Normalisierung und Vorverarbeitungsfunktionen

Ausgabeformatoptionen

  • Zeitstempel: Millisekundengenaue Zeitstempelinformationen
  • Konfidenzbewertung: Bietet eine Bewertung des Konfidenzniveaus auf Wortebene
  • Verschiedene Ausgabeformate: Unterstützt Text-, JSON-, SRT-Untertitelformate usw.
  • Karaoke-Modus: Unterstützt die Generierung synchronisierter, hervorgehobener Videoausgaben

🔧 Technische Architekturmerkmale

Modellstruktur

  • Encoder-Decoder-Architektur: Beibehaltung der ursprünglichen Transformer-Struktur des Whisper-Modells
  • Benutzerdefiniertes GGML-Format: Optimiertes binäres Modellformat, das alle notwendigen Komponenten enthält
  • Modellgrößenauswahl: Verschiedene Größen von Tiny (39 MB) bis Large (1,55 GB)

Speicherverwaltung

  • Statische Speicherallokation: Allokation des gesamten benötigten Speichers beim Start
  • Speicherabbildung: Effiziente Methode zum Laden von Modelldateien
  • Cache-Optimierung: Intelligenter Mechanismus zur Zwischenspeicherung von Berechnungsergebnissen

Hauptanwendungsbereiche

🎤 Echtzeit-Sprachanwendungen

  • Sprachassistenten: Erstellung von Offline-Sprachassistentenanwendungen
  • Echtzeit-Untertitel: Bereitstellung von Echtzeit-Untertiteln für Videokonferenzen und Live-Streams
  • Sprachnotizen: Echtzeit-Sprach-zu-Text-Notizenanwendung

📱 Mobile Anwendungen

  • Offline-Transkription: Ermöglicht die vollständig Offline-Spracherkennung auf mobilen Geräten
  • Spracheingabe: Bereitstellung von Spracheingabefunktionen für mobile Anwendungen
  • Mehrsprachige Übersetzung: Realisierung von Sprachübersetzung in Kombination mit Übersetzungsmodellen

🖥️ Desktop- und Serveranwendungen

  • Stapelverarbeitung von Audiodateien: Automatische Transkription großer Mengen von Audiodateien
  • Inhaltsproduktion: Automatische Generierung von Untertiteln für Podcasts und Videoinhalte
  • Kundendienstsysteme: Automatische Transkription und Analyse von Telefongesprächen im Kundendienst

Leistungs-Benchmark-Tests

Vergleich verschiedener Modellgrößen

Modell Speicherplatzbedarf Speicherbedarf Inferenzgeschwindigkeit Genauigkeit
tiny 75 MiB ~273 MB Am schnellsten Grundlegend
base 142 MiB ~388 MB Schnell Gut
small 466 MiB ~852 MB Mittel Sehr gut
medium 1.5 GiB ~2.1 GB Langsamer Ausgezeichnet
large 2.9 GiB ~3.9 GB Langsam Optimal

Hardwarebeschleunigungseffekte

  • Apple M1/M2: Metal GPU-Beschleunigung kann die Leistung um das 3- bis 5-fache steigern
  • NVIDIA GPU: CUDA-Beschleunigung kann die Leistung um das 5- bis 10-fache steigern
  • Intel CPU: AVX2-Befehlssatz kann die Leistung um das 2- bis 3-fache steigern

Schnellstartbeispiel

Grundlegende Kompilierung und Verwendung

# Projekt klonen
git clone https://github.com/ggml-org/whisper.cpp.git
cd whisper.cpp

# Projekt kompilieren
cmake -B build
cmake --build build --config Release

# Modell herunterladen
./models/download-ggml-model.sh base.en

# Audio transkribieren
./build/bin/whisper-cli -f samples/jfk.wav -m models/ggml-base.en.bin

Docker-Verwendung

# Modell herunterladen
docker run -it --rm -v $(pwd)/models:/models \
  ghcr.io/ggml-org/whisper.cpp:main \
  "./models/download-ggml-model.sh base /models"

# Audio transkribieren
docker run -it --rm \
  -v $(pwd)/models:/models \
  -v $(pwd)/audio:/audio \
  ghcr.io/ggml-org/whisper.cpp:main \
  "whisper-cli -m /models/ggml-base.bin -f /audio/sample.wav"

Projektvorteile

✅ Technische Vorteile

  1. Hohe Leistung: Native C/C++-Implementierung, hervorragende Leistung
  2. Geringer Ressourcenverbrauch: Hohe Effizienz bei Speicher- und CPU-Nutzung
  3. Keine Abhängigkeiten: Keine Python- oder andere Laufzeitumgebung erforderlich
  4. Plattformübergreifend: Unterstützt fast alle gängigen Plattformen
  5. Hardwarebeschleunigung: Nutzt die Hardwarebeschleunigungsfunktionen moderner Hardware voll aus

✅ Praktische Vorteile

  1. Einfache Integration: Bietet eine C-Style-API, die einfach in bestehende Projekte integriert werden kann
  2. Einfache Bereitstellung: Einzelne ausführbare Datei, einfache Bereitstellung
  3. Offline-Betrieb: Funktioniert vollständig offline, schützt die Privatsphäre
  4. Open Source und kostenlos: MIT-Lizenz, kommerziell freundlich
  5. Aktive Wartung: Aktive Community, häufige Updates

Einschränkungen und Hinweise

⚠️ Technische Einschränkungen

  1. Audioformate: Unterstützt hauptsächlich das 16-Bit-WAV-Format, andere Formate müssen konvertiert werden
  2. Sprachmodell: Basierend auf Trainingsdaten ist die Erkennung bestimmter Dialekte und Akzente möglicherweise nicht genau genug
  3. Echtzeitfähigkeit: Obwohl gut optimiert, kann die Echtzeitverarbeitung auf Low-End-Geräten möglicherweise nicht erreicht werden
  4. Speicherbedarf: Große Modelle benötigen weiterhin viel Speicherplatz

💡 Anwendungsempfehlungen

  1. Modellauswahl: Wählen Sie die geeignete Modellgröße basierend auf Genauigkeit und Leistungsanforderungen
  2. Hardwareoptimierung: Nutzen Sie die Hardwarebeschleunigungsfunktionen der Zielplattform voll aus
  3. Audiovorverarbeitung: Stellen Sie sicher, dass die Audioqualität des Eingangs für eine optimale Erkennungsleistung gewährleistet ist
  4. Quantisierungsverwendung: Erwägen Sie die Verwendung von Quantisierungsmodellen in ressourcenbeschränkten Umgebungen

Projektökosystem und Erweiterung

Verwandte Projekte

  • whisper.spm: Swift Package Manager Version
  • whisper.rn: React Native Bindung
  • whisper.unity: Unity-Spielengine-Integration
  • Verschiedene Sprachbindungen: Python, Rust, Go und mehrsprachige Unterstützung

Zusammenfassung

Whisper.cpp ist eine äußerst ausgezeichnete Spracherkennungslösung, die das Whisper-Modell von OpenAI erfolgreich auf die C/C++-Plattform portiert hat und so eine hohe Leistung, einen geringen Ressourcenverbrauch und eine breite Plattformkompatibilität erreicht. Ob für die Entwicklung mobiler Anwendungen, eingebettete Systeme oder groß angelegte Serverbereitstellungen, whisper.cpp bietet zuverlässige und effiziente Spracherkennungsfunktionen.

Dieses Projekt eignet sich besonders für folgende Szenarien:

  • Anwendungen, die eine Offline-Spracherkennung benötigen
  • Projekte mit strengen Anforderungen an Leistung und Ressourcenverbrauch
  • Plattformübergreifende Spracherkennungslösungen
  • Entwickler, die in bestehende C/C++-Projekte integrieren möchten