Speech Core
Motor de fala C++17 open source para agentes de voz — detecção de atividade de voz, fala para texto em lote e em streaming em tempo real, diarização de falantes e texto para fala, tudo rodando no dispositivo em Linux, Windows e Android. Apache 2.0.
O que é
O Speech Core é um núcleo de orquestração compacto — máquina de estados, detecção de turnos, tratamento de interrupções, utilitários de áudio, com zero dependências de ML — mais um conjunto de interfaces abstratas para modelos de fala. A inferência roda localmente na CPU; o áudio nunca sai da máquina, e não há Python em tempo de inferência. A inferência de modelos é opt-in por meio de dois backends intercambiáveis que você pode ativar de forma independente, ou você pode trazer suas próprias implementações das interfaces.
- Orquestração de agentes de voz — o
VoicePipelinecompõe VAD, STT em streaming, um LLM e TTS em um loop de agente full-duplex com barge-in, detecção de turnos e um loop de chamadas de ferramentas. Veja docs/pipeline.md e a visão geral de agentes de voz. - Diarização de falantes em C++ puro — o
DiarizationPipelinecompõe um segmentador e um embedder em segmentos rotulados por falante, sem nenhuma dependência própria de runtime de ML. - Alimenta o resto do stack — o speech-android é um SDK Kotlin + ponte JNI sobre o Speech Core, e o Speech Studio usa seu motor LiteRT VoxCPM2 no Windows e no Linux. Em plataformas Apple, a biblioteca irmã é o speech-swift.
Plataformas e backends
| Backend | Plataformas | Aceleração de hardware |
|---|---|---|
ONNX Runtime (SPEECH_CORE_WITH_ONNX) | Linux, macOS, Windows, Android | NNAPI no Android, QNN em Linux Qualcomm, NVIDIA CUDA / TensorRT opcional (-DSPEECH_CORE_WITH_CUDA=ON) |
LiteRT (SPEECH_CORE_WITH_LITERT) | Linux x86_64, Windows x86_64, Android, macOS arm64 | CPU por enquanto |
Ative um dos backends, ambos ou nenhum — o núcleo de orquestração compila sem nenhum runtime de ML.
Modelos suportados
| Modelo | Tarefa | ONNX | LiteRT |
|---|---|---|---|
| Silero VAD v5 | Detecção de atividade de voz | ✓ | ✓ |
| Parakeet TDT v3 (0.6B) | Fala para texto (114 idiomas) | ✓ | ✓ |
| Nemotron Speech Streaming (0.6B) | Fala para texto em streaming (inglês) | ✓ | ✓ |
| Nemotron-3.5 ASR Streaming Multilingual (0.6B) | Fala para texto em streaming (multilíngue, condicionado por prompt) | ✓ | ✓ |
| Omnilingual ASR CTC (300M) | Fala para texto (multilíngue) | — | ✓ |
| Pyannote Segmentation 3.0 | Diarização (segmentação) | — | ✓ |
| WeSpeaker ResNet34-LM | Embedding de falante | — | ✓ |
| VoxCPM2 (2B) | Texto para fala (48 kHz, clonagem de voz) | — | ✓ |
| Kokoro 82M | Texto para fala | ✓ | — |
| DeepFilterNet3 | Aprimoramento de fala | ✓ | — |
| PersonaPlex 7B | Fala para fala full-duplex (CUDA) | ✓ | — |
Início rápido
Compile o núcleo mais o backend LiteRT (a biblioteca de runtime é extraída do wheel ai-edge-litert — sem build do TensorFlow):
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
Depois, linke os targets de que você precisa:
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
Transcrever um buffer de áudio leva poucas linhas:
#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
Um build Linux de referência — libspeech.so com uma pequena ABI em C, uma CLI de demonstração ALSA e ferramentas de transcrição/síntese/fonemização — vive em examples/linux. Tem como alvo ARM64 embarcado (Yocto, Qualcomm SA8295P / SA8255P) e qualquer máquina de desenvolvimento Linux. Os passos de configuração estão no guia de primeiros passos para Linux.
No Android, use o speech-android — um SDK Kotlin que empacota o Speech Core atrás de uma ponte JNI (implementation("audio.soniqo:speech:0.0.9")). No macOS e no iOS, use o speech-swift, que roda os modelos em CoreML, MLX e no Apple Neural Engine.
Documentação
- docs/ — documentação completa no repositório
- docs/pipeline.md — a máquina de estados do
VoicePipeline, integração de AEC e o loop de chamadas de ferramentas - docs/models.md — inventário completo de modelos
- huggingface.co/soniqo — pesos de modelos convertidos (ONNX, LiteRT)
Feedback
Abra um issue em github.com/soniqo/speech-core/issues ou entre no Discord.