speech-core icon

speech-core

speech-core ist eine C++17 On-Device-Voice-Agent-Pipeline-Engine für VAD, Streaming- und Batch-Spracherkennung, Diarisierung und Text-to-Speech ohne Cloud-Inferenz.

speech-core

Was ist speech-core?

speech-core ist eine C++17-Voice-Agent-Pipeline-Engine zum Erstellen von Sprachanwendungen auf dem Gerät für Linux, Windows, Android und über ein Swift-Schwestersystem für Apple-Plattformen. Sie kombiniert einen schlanken Orchestrierungs-Kern mit optionalen Modell-Backends für Voice Activity Detection, Streaming- und Batch-Spracherkennung, Sprecherdiarisierung, Text-to-Speech und verwandte Audioverarbeitungsaufgaben.

Das Projekt ist darauf ausgelegt, lokal auf der CPU zu laufen, ohne Daten in die Cloud zu senden und ohne Python zur Inferenzzeit zu benötigen. Seine Architektur trennt die Orchestrierungsschicht von der Modellausführung, sodass Entwickler die mitgelieferten ONNX-Runtime- oder LiteRT-Backends verwenden oder sie durch eigene Implementierungen hinter den bereitgestellten Schnittstellen ersetzen können.

Hauptfunktionen

  • C++17-Orchestrierungskern für Zustandsverwaltung, Turn-Erkennung, Unterbrechungsbehandlung und Audio-Dienstprogramme, selbst ohne Abhängigkeit von einer ML-Runtime.
  • Optionales ONNX-Runtime-Backend für Modelle wie Silero VAD, Parakeet STT, Nemotron Streaming STT, Kokoro TTS, DeepFilterNet3 und PersonaPlex 7B Speech-to-Speech.
  • Optionales LiteRT-Backend auf Basis von Googles ai-edge-litert, mit Silero VAD, Parakeet STT, Nemotron Streaming STT, Omnilingual STT, Pyannote-Diarisierung, WeSpeaker-Embeddings und VoxCPM2 TTS.
  • Unterstützung für Batch-Transkription und Echtzeit-Streaming-Transkription mit Teilergebnissen, einschließlich prompt-bedingter multilingualer Streaming-ASR im LiteRT-Pfad.
  • In reinem C++ implementierte Sprecherdiarisierungs-Pipeline, die Segmentierer und Embedder zu sprecherbeschrifteten Segmenten kombiniert.
  • Plattform- und Beschleunigungsunterstützung für Linux-, Windows-, Android- und macOS-Ziele, mit backend-spezifischen Hardwarebeschleunigungsoptionen wie Android NNAPI und ONNX-GPU-bezogenen Providern.

So verwenden Sie speech-core

Typischerweise beginnen Sie, indem Sie das Repository klonen, bei Bedarf die LiteRT-Runtime abrufen und das Projekt mit CMake sowie dem gewünschten Backend konfigurieren. Danach binden Sie entweder das reine Orchestrierungsziel oder eines der Modellziele in Ihre Anwendung ein.

Zur Laufzeit instanziieren Sie die benötigte Modellklasse, verweisen sie auf die relevanten Modelldateien und rufen die passenden Transkriptions- oder Streaming-Methoden für Audio-Puffer oder Mikrofon-Chunks auf. Dasselbe Grundmuster gilt, egal ob Sie VAD, STT, Diarisierung oder TTS verwenden.

Anwendungsfälle

  • Aufbau eines lokalen Sprachassistenten, der Turn-Erkennung, Unterbrechungsbehandlung und Streaming-Transkription ohne Senden von Audio an einen Cloud-Dienst benötigt.
  • Ergänzen einer Desktop- oder Mobil-App um Spracherkennung, wenn die Anwendung vollständig auf dem Gerät laufen und die Inferenz in C++ halten soll.
  • Implementierung von Live-Untertiteln oder partiellen Transkript-Updates aus Mikrofoneingaben mit den Streaming-STT-Schnittstellen.
  • Erstellen eines sprecherbewussten Transkriptions-Workflows, der Audio segmentiert und Sprecher für Meetings, Interviews oder Aufnahmen kennzeichnet.
  • Zusammenstellen eines Voice-Agent-Stacks, der VAD, STT, TTS und Verbesserungs- oder Cloning-Modelle über dieselbe Orchestrierungsschicht kombiniert.

FAQ

Benötigt speech-core zur Inferenzzeit Python? Nein. Das Projekt ist so beschrieben, dass es lokal auf der CPU läuft und zur Inferenzzeit kein Python benötigt.

Welche Plattformen werden unterstützt? Das Repository nennt ausdrücklich Linux, Windows und Android und verweist für Apple-Unterstützung auf ein separates Swift-Schwestersystem. Die Plattformtabelle nennt außerdem macOS-Ziele für die Backends.

Kann ich nur die Orchestrierungsschicht ohne die eingebauten Modelle verwenden? Ja. Der Kern ist von den Modell-Backends getrennt, und Anwender können ONNX, LiteRT, beides oder keines von beiden aktivieren oder eigene Implementierungen hinter den Schnittstellen bereitstellen.

Unterstützt es sowohl Batch- als auch Streaming-Transkription? Ja. Die Quelle zeigt sowohl Batch-Transkription als auch Echtzeit-Streaming-Transkription mit Teilergebnissen.

Läuft es vollständig auf dem Gerät? Das ist das vorgesehene Design, das im Repository beschrieben wird. Die Dokumentation sagt, dass das System lokal auf der CPU läuft und keine Daten das Gerät verlassen.

Alternativen

  • Eine benutzerdefinierte C++-Audio-Pipeline auf Basis getrennter VAD-, ASR-, Diarisierungs- und TTS-Bibliotheken. Das kann für Teams passen, die jede Komponente unabhängig austauschen wollen, erfordert aber mehr Integrationsaufwand als die gebündelte Orchestrierung von speech-core.
  • Ein Speech-Stack mit Python-Fokus und gängigen ML-Inferenzbibliotheken. Dieser Ansatz kann für Experimente einfacher sein, erreicht aber nicht den C++17- und On-Device-Laufzeitfokus von speech-core.
  • Eine Cloud-Speech-API oder ein gehosteter Voice-Assistant-Dienst. Diese reduzieren den Aufwand für die lokale Bereitstellung, verändern aber den Workflow, da Audio an einen externen Dienst gesendet wird, statt die Inferenz auf dem Gerät auszuführen.
  • Ein plattformspezifisches natives Speech-Framework für Android, Windows oder Apple-Plattformen. Diese lassen sich gut in ein einzelnes Ökosystem integrieren, während speech-core als plattformübergreifender C++-Kern mit austauschbaren Backends positioniert ist.