Speech Core
Open-Source-C++17-Sprach-Engine für Sprachagenten — Sprachaktivitätserkennung, Sprache-zu-Text im Batch- und Echtzeit-Streaming-Betrieb, Sprecherdiarisierung und Text-zu-Sprache, alles lokal auf Linux, Windows und Android. Apache 2.0.
Was es ist
Speech Core ist ein kleiner Orchestrierungskern — State Machine, Turn-Erkennung, Unterbrechungsbehandlung, Audio-Utilities, ganz ohne ML-Abhängigkeiten — plus ein Satz abstrakter Interfaces für Sprachmodelle. Die Inferenz läuft lokal auf der CPU; Audio verlässt nie den Rechner, und zur Inferenzzeit gibt es kein Python. Modell-Inferenz ist optional zuschaltbar über zwei austauschbare Backends, die sich unabhängig voneinander aktivieren lassen — oder du bringst eigene Implementierungen der Interfaces mit.
- Sprachagenten-Orchestrierung —
VoicePipelineverbindet VAD, Streaming-STT, ein LLM und TTS zu einer Vollduplex-Agentenschleife mit Barge-in, Turn-Erkennung und Tool-Call-Schleife. Siehe docs/pipeline.md und die Übersicht zu Sprachagenten. - Sprecherdiarisierung in reinem C++ —
DiarizationPipelinekombiniert einen Segmentierer und einen Embedder zu sprechermarkierten Segmenten, ohne eigene ML-Runtime-Abhängigkeit. - Treibt den Rest des Stacks an — speech-android ist ein Kotlin-SDK + JNI-Brücke über Speech Core, und Speech Studio nutzt dessen LiteRT-VoxCPM2-Engine unter Windows und Linux. Auf Apple-Plattformen ist speech-swift die Schwesterbibliothek.
Plattformen & Backends
| Backend | Plattformen | Hardware-Beschleunigung |
|---|---|---|
ONNX Runtime (SPEECH_CORE_WITH_ONNX) | Linux, macOS, Windows, Android | NNAPI unter Android, QNN auf Qualcomm-Linux, optional NVIDIA CUDA / TensorRT (-DSPEECH_CORE_WITH_CUDA=ON) |
LiteRT (SPEECH_CORE_WITH_LITERT) | Linux x86_64, Windows x86_64, Android, macOS arm64 | Derzeit CPU |
Aktiviere eines der Backends, beide oder keines — der Orchestrierungskern baut auch ganz ohne ML-Runtime.
Unterstützte Modelle
| Modell | Aufgabe | ONNX | LiteRT |
|---|---|---|---|
| Silero VAD v5 | Sprachaktivitätserkennung | ✓ | ✓ |
| Parakeet TDT v3 (0.6B) | Sprache-zu-Text (114 Sprachen) | ✓ | ✓ |
| Nemotron Speech Streaming (0.6B) | Streaming-Sprache-zu-Text (Englisch) | ✓ | ✓ |
| Nemotron-3.5 ASR Streaming Multilingual (0.6B) | Streaming-Sprache-zu-Text (mehrsprachig, prompt-konditioniert) | ✓ | ✓ |
| Omnilingual ASR CTC (300M) | Sprache-zu-Text (mehrsprachig) | — | ✓ |
| Pyannote Segmentation 3.0 | Diarisierung (Segmentierung) | — | ✓ |
| WeSpeaker ResNet34-LM | Sprechereinbettung | — | ✓ |
| VoxCPM2 (2B) | Text-zu-Sprache (48 kHz, Stimmklonen) | — | ✓ |
| Kokoro 82M | Text-zu-Sprache | ✓ | — |
| DeepFilterNet3 | Sprachverbesserung | ✓ | — |
| PersonaPlex 7B | Vollduplex-Sprache-zu-Sprache (CUDA) | ✓ | — |
Schnellstart
Baue den Kern plus das LiteRT-Backend (die Runtime-Bibliothek wird aus dem ai-edge-litert-Wheel extrahiert — kein TensorFlow-Build):
git clone https://github.com/soniqo/speech-core && cd speech-core
scripts/fetch_litert.sh build/litert
cmake -B build -DCMAKE_BUILD_TYPE=Release \
-DSPEECH_CORE_WITH_LITERT=ON -DLITERT_DIR=$PWD/build/litert
cmake --build build
Dann verlinke die Targets, die du brauchst:
target_link_libraries(my_app PRIVATE speech_core) # orchestration only
target_link_libraries(my_app PRIVATE speech_core speech_core_models) # + ONNX models
target_link_libraries(my_app PRIVATE speech_core speech_core_models_litert) # + LiteRT models
Einen Audio-Puffer zu transkribieren ist eine Sache weniger Zeilen:
#include <speech_core/models/litert_parakeet_stt.h>
speech_core::LiteRTParakeetStt stt(
"parakeet-encoder.tflite", "parakeet-decoder-joint.tflite", "vocab.json");
auto r = stt.transcribe(audio, n_samples, 16000); // r.text / r.language / r.confidence
Ein Referenz-Linux-Build — libspeech.so mit kleiner C-ABI, eine ALSA-Demo-CLI und Werkzeuge zum Transkribieren/Synthetisieren/Phonemisieren — liegt unter examples/linux. Er zielt auf embedded ARM64 (Yocto, Qualcomm SA8295P / SA8255P) und jede Linux-Entwicklungsmaschine. Die Einrichtungsschritte stehen in der Anleitung Erste Schritte — Linux.
Unter Android nutzt du speech-android — ein Kotlin-SDK, das Speech Core hinter einer JNI-Brücke verpackt (implementation("audio.soniqo:speech:0.0.9")). Unter macOS und iOS nutzt du speech-swift, das die Modelle auf CoreML, MLX und der Apple Neural Engine ausführt.
Dokumentation
- docs/ — vollständige Dokumentation im Repo
- docs/pipeline.md — die
VoicePipeline-State-Machine, AEC-Integration und Tool-Call-Schleife - docs/models.md — vollständiges Modellinventar
- huggingface.co/soniqo — konvertierte Modellgewichte (ONNX, LiteRT)
Feedback
Issue eröffnen unter github.com/soniqo/speech-core/issues — oder tritt dem Discord bei.