Speech Core
Open-source речевой движок на C++17 для голосовых агентов — детекция голосовой активности, пакетное и потоковое распознавание речи в реальном времени, диаризация спикеров и синтез речи, и всё это работает на устройстве на Linux, Windows и Android. Apache 2.0.
Что это
Speech Core — это компактное оркестрационное ядро: конечный автомат, определение очерёдности реплик, обработка перебиваний, аудиоутилиты — без единой ML-зависимости — плюс набор абстрактных интерфейсов для речевых моделей. Инференс выполняется локально на CPU; аудио никогда не покидает машину, а на этапе инференса нет Python. Инференс моделей подключается опционально через два взаимозаменяемых бэкенда, которые можно включать независимо, либо вы можете предоставить собственные реализации интерфейсов.
- Оркестрация голосовых агентов —
VoicePipelineобъединяет VAD, потоковый STT, LLM и TTS в полнодуплексный агентный цикл с перебиванием (barge-in), определением очерёдности реплик и циклом вызова инструментов. См. docs/pipeline.md и обзор голосовых агентов. - Диаризация спикеров на чистом C++ —
DiarizationPipelineобъединяет сегментатор и модель эмбеддингов в сегменты с метками спикеров, не имея собственной зависимости от ML-рантайма. - Основа остального стека — speech-android — это Kotlin SDK + JNI-мост поверх Speech Core, а Speech Studio использует его движок LiteRT VoxCPM2 на Windows и Linux. На платформах Apple родственная библиотека — speech-swift.
Платформы и бэкенды
| Бэкенд | Платформы | Аппаратное ускорение |
|---|---|---|
ONNX Runtime (SPEECH_CORE_WITH_ONNX) | Linux, macOS, Windows, Android | NNAPI на Android, QNN на Qualcomm Linux, опционально NVIDIA CUDA / TensorRT (-DSPEECH_CORE_WITH_CUDA=ON) |
LiteRT (SPEECH_CORE_WITH_LITERT) | Linux x86_64, Windows x86_64, Android, macOS arm64 | Пока CPU |
Включайте любой из бэкендов, оба или ни одного — оркестрационное ядро собирается вообще без ML-рантайма.
Поддерживаемые модели
| Модель | Задача | ONNX | LiteRT |
|---|---|---|---|
| Silero VAD v5 | Детекция голосовой активности | ✓ | ✓ |
| Parakeet TDT v3 (0.6B) | Распознавание речи (114 языков) | ✓ | ✓ |
| Nemotron Speech Streaming (0.6B) | Потоковое распознавание речи (английский) | ✓ | ✓ |
| Nemotron-3.5 ASR Streaming Multilingual (0.6B) | Потоковое распознавание речи (многоязычное, управляется промптом) | ✓ | ✓ |
| Omnilingual ASR CTC (300M) | Распознавание речи (многоязычное) | — | ✓ |
| Pyannote Segmentation 3.0 | Диаризация (сегментация) | — | ✓ |
| WeSpeaker ResNet34-LM | Эмбеддинги спикеров | — | ✓ |
| VoxCPM2 (2B) | Синтез речи (48 кГц, клонирование голоса) | — | ✓ |
| Kokoro 82M | Синтез речи | ✓ | — |
| DeepFilterNet3 | Улучшение речи | ✓ | — |
| PersonaPlex 7B | Полнодуплексная речь в речь (CUDA) | ✓ | — |
Быстрый старт
Соберите ядро вместе с бэкендом LiteRT (библиотека рантайма извлекается из wheel-пакета ai-edge-litert — сборка 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
Затем слинкуйте нужные вам таргеты:
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
Транскрипция аудиобуфера — это несколько строк:
#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
Референсная сборка для Linux — libspeech.so с компактным C ABI, демо-CLI на ALSA и инструментами transcribe/synthesize/phonemize — находится в examples/linux. Она ориентирована на встраиваемый ARM64 (Yocto, Qualcomm SA8295P / SA8255P) и любую Linux-машину разработчика. Шаги настройки — в руководстве по началу работы на Linux.
На Android используйте speech-android — Kotlin SDK, который упаковывает Speech Core за JNI-мостом (implementation("audio.soniqo:speech:0.0.9")). На macOS и iOS используйте speech-swift, который запускает модели на CoreML, MLX и Apple Neural Engine.
Документация
- docs/ — полная документация в репозитории
- docs/pipeline.md — конечный автомат
VoicePipeline, интеграция AEC и цикл вызова инструментов - docs/models.md — полный перечень моделей
- huggingface.co/soniqo — сконвертированные веса моделей (ONNX, LiteRT)
Обратная связь
Открывайте issue на github.com/soniqo/speech-core/issues или присоединяйтесь к Discord.