Traduzione automatica · Originale inglese
Speech Core
Open-source C++17 motore vocale per gli agenti vocali — rilevamento delle attività vocali, batch e in tempo reale streaming vocale-to-text, diarizzazione dei diffusori e text-to-speech, tutto in esecuzione on-device su Linux, Windows e Android. Apache 2.0.
Che cosa è
Speech Core è un piccolo nucleo di orchestrazione — macchina statale, rilevamento di turno, gestione di interruzioni, utilità audio, con zero dipendenze ML — più un insieme di interfacce asatte per i modelli di discorso. L'inferenza funziona localmente su CPU; l'audio non lascia mai la macchina, e non c'è Python al tempo di inferenza.
- Orchestrazione vocale —
VoicePipelinecompone VAD, STT in streaming, LLM e TTS in un loop di agente full-duplex con il rilevamento del barge-in, e un loop di chiamata degli strumenti. docs/pipeline.md e il agenti di voce panoramica. - Diarizzazione del diffusore in puro C++ —
DiarizationPipelinecompone un segmentatore e un embedder in segmenti a labello del diffusore, senza dipendenze ML-runtime del proprio. - Potenzia il resto della pila — speech-android è un ponte Kotlin SDK + JNI sopra Speech Core, e Speech Studio utilizza il suo motore LiteRT VoxCPM2 su Windows e Linux. Su piattaforme Apple, la libreria sibling è speech-swift.
Piattaforme e backend
| Indietro | Piattaforme | Accelerazione hardware |
|---|---|---|
ONNX Runtime (SPEECH_CORE_WITH_ONNX) | Linux, macOS, Windows, Android | NNAPI su Android, QNN su Qualcomm Linux opzionale NVIDIA CUDA / TensorRT (-DSPEECH_CORE_WITH_CUDA=ON) |
LiteRT (SPEECH_CORE_WITH_LITERT) | Linux x86_64, Windows x86_64, Android, macOS arm64 | CPU oggi |
Abilitare sia backend, sia, o nemmeno — il nucleo di orchestrazione si costruisce senza runtime ML affatto.
Modelli supportati
| Modello | Compiti | ONNX | LiteRT |
|---|---|---|---|
| Silero VAD v5 | Rilevamento delle attività vocali | ✓ | ✓ |
| Smart Turn v3.2 | Rilevamento di fine turno (23 lingue) | ✓ | — |
| Parakeet TDT v3 (0.6B) | Discorso-testo (114 lingue) | ✓ | ✓ |
| Nemotron Streaming vocale (0.6B) | Streaming vocale-to-text (inglese) | ✓ | ✓ |
| Nemotron-3.5 ASR Streaming multilingue (0.6B) | Streaming vocale-to-text (multilingue, prontamente condizionata) | ✓ | ✓ |
| Whisper Piccola v3 | Discussione-testo (multilingue Whisper v3 | ✓ | — |
| Whisper Media v3 | Discussione-testo (multilingue Whisper v3 | ✓ | — |
| Whisper grande v3 | Discussione-testo (multilingue Whisper v3 | ✓ | — |
| Whisper Large-v3 Turbo | Discussione-testo (multilingue Whisper v3 | ✓ | — |
| Omnilingual ASR CTC (300M) | Discorso-testo (multilingue) | — | ✓ |
| FunctionGemma 270M | On-device LLM — funzione strutturata / chiamate degli strumenti (LiteRT-LM; CoreML | — | ✓ |
| Pyannote Segmentazione 3.0 | Diarizzazione (segmentazione) | — | ✓ |
| WeSpeaker ResNet34-LM | Embedded del diffusore | — | ✓ |
| VoxCPM2 (2B) | Text-to-speech (48 kHz, clonazione vocale) | — | ✓ |
| Kokoro 82 | Testo a segno | ✓ | — |
| Pocket TTS 100 | Streaming di testo-to-speech (Inglese, voce fissa Alba) | ✓ | — |
| DeepFilterNet3 | Miglioramento del discorso | ✓ | — |
| PersonaPlex 7 | Discorso-speech (CUDA) | ✓ | — |
Avvio rapido
Costruisci il nucleo più il backend LiteRT (la libreria runtime viene estratta dalla ruota ai-edge-litert — no 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
Quindi collegare gli obiettivi di cui hai bisogno:
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
Transcribing un buffer audio è un paio di linee:
#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
Una costruzione di riferimento Linux — libspeech.so con un piccolo C ABI, un ALSA demo CLI, e strumenti di trascrizione/synthesize/phonemize — vive a esempi/linux. Si rivolge a ARM64 incorporato (Yocto, Qualcomm SA8295P / SA8255P) e qualsiasi Linux scatola di dev. Linux guida per l'avviamento.
Su Android, utilizzare speech-android — un Kotlin SDK che imballa Speech Core dietro un ponte JNI (implementation("audio.soniqo:speech:0.0.9")). Su macOS e iOS, utilizzare speech-swift, che gestisce i modelli su CoreML, MLX e Apple Neural Engine.
Documentazione
- docs/ — Documentazione completa in risposta
- docs/pipeline.md — la macchina statale
VoicePipeline - docs/models.md — inventario completo del modello
- Collezione Soniqo ONNX — Whisper, Kokoro, DeepFilterNet3, PersonaPlex, e altri ONNX fasci
- huggingface.co/soniqo — pesi modello convertiti (ONNX, LiteRT)
Feedback
Aprire un problema github.com / soniqo/speech-core /problemi, o unisciti al Discordia.