Speech Core
음성 에이전트를 위한 오픈소스 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는 Speech Core 위에 얹은 Kotlin SDK + JNI 브리지이고, Speech Studio는 Windows와 Linux에서 Speech Core의 LiteRT VoxCPM2 엔진을 사용합니다. Apple 플랫폼에서는 자매 라이브러리인 speech-swift를 사용합니다.
플랫폼 및 백엔드
| 백엔드 | 플랫폼 | 하드웨어 가속 |
|---|---|---|
ONNX Runtime (SPEECH_CORE_WITH_ONNX) | Linux, macOS, Windows, Android | Android에서 NNAPI, Qualcomm Linux에서 QNN, 선택적 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 kHz, 음성 복제) | — | ✓ |
| Kokoro 82M | 텍스트-음성 변환 | ✓ | — |
| DeepFilterNet3 | 음성 향상 | ✓ | — |
| PersonaPlex 7B | 풀듀플렉스 음성-음성 변환 (CUDA) | ✓ | — |
빠른 시작
코어와 LiteRT 백엔드를 함께 빌드합니다 (런타임 라이브러리는 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 빌드 — 작은 C ABI를 갖춘 libspeech.so, ALSA 데모 CLI, transcribe/synthesize/phonemize 도구 — 는 examples/linux에 있습니다. 임베디드 ARM64 (Yocto, Qualcomm SA8295P / SA8255P)와 모든 Linux 개발 머신을 대상으로 합니다. 설정 단계는 Linux 시작하기 가이드를 참조하세요.
Android에서는 speech-android를 사용하세요 — Speech Core를 JNI 브리지 뒤에 패키징한 Kotlin SDK입니다 (implementation("audio.soniqo:speech:0.0.9")). macOS와 iOS에서는 CoreML, MLX, Apple Neural Engine에서 모델을 실행하는 speech-swift를 사용하세요.
문서
- docs/ — 저장소 내 전체 문서
- docs/pipeline.md —
VoicePipeline상태 머신, AEC 통합, 도구 호출 루프 - docs/models.md — 전체 모델 목록
- huggingface.co/soniqo — 변환된 모델 가중치 (ONNX, LiteRT)
피드백
github.com/soniqo/speech-core/issues에 issue를 열거나 Discord에 참여하세요.