Speech Core
Engine giọng nói C++17 mã nguồn mở cho tác nhân giọng nói — phát hiện hoạt động giọng nói, chuyển giọng nói thành văn bản theo lô và streaming thời gian thực, phân tách người nói và chuyển văn bản thành giọng nói, tất cả chạy trên thiết bị trên Linux, Windows và Android. Apache 2.0.
Speech Core là gì
Speech Core là một lõi điều phối nhỏ gọn — máy trạng thái, phát hiện lượt nói, xử lý ngắt lời, các tiện ích âm thanh, hoàn toàn không phụ thuộc ML — cùng một bộ interface trừu tượng cho các mô hình giọng nói. Suy luận chạy cục bộ trên CPU; âm thanh không bao giờ rời khỏi máy, và không có Python khi suy luận. Suy luận mô hình là tùy chọn (opt-in) thông qua hai backend hoán đổi được mà bạn có thể bật độc lập, hoặc bạn tự mang theo hiện thực của các interface này.
- Điều phối tác nhân giọng nói —
VoicePipelineghép VAD, STT streaming, một LLM và TTS thành vòng lặp tác nhân song công với ngắt lời (barge-in), phát hiện lượt nói và vòng lặp gọi công cụ. Xem docs/pipeline.md và tổng quan tác nhân giọng nói. - Phân tách người nói bằng C++ thuần —
DiarizationPipelinekết hợp một bộ phân đoạn và một bộ embedding thành các phân đoạn gắn nhãn người nói, bản thân nó không phụ thuộc bất kỳ ML runtime nào. - Nền tảng cho phần còn lại của stack — speech-android là SDK Kotlin + cầu nối JNI trên Speech Core, còn Speech Studio dùng engine LiteRT VoxCPM2 của nó trên Windows và Linux. Trên các nền tảng Apple, thư viện song hành là speech-swift.
Nền tảng và backend
| Backend | Nền tảng | Tăng tốc phần cứng |
|---|---|---|
ONNX Runtime (SPEECH_CORE_WITH_ONNX) | Linux, macOS, Windows, Android | NNAPI trên Android, QNN trên Linux Qualcomm, tùy chọn NVIDIA CUDA / TensorRT (-DSPEECH_CORE_WITH_CUDA=ON) |
LiteRT (SPEECH_CORE_WITH_LITERT) | Linux x86_64, Windows x86_64, Android, macOS arm64 | Hiện tại: CPU |
Bật một backend, cả hai, hoặc không backend nào — lõi điều phối biên dịch được mà không cần bất kỳ ML runtime nào.
Các mô hình được hỗ trợ
| Mô hình | Tác vụ | ONNX | LiteRT |
|---|---|---|---|
| Silero VAD v5 | Phát hiện hoạt động giọng nói | ✓ | ✓ |
| Parakeet TDT v3 (0.6B) | Chuyển giọng nói thành văn bản (114 ngôn ngữ) | ✓ | ✓ |
| Nemotron Speech Streaming (0.6B) | Chuyển giọng nói thành văn bản streaming (tiếng Anh) | ✓ | ✓ |
| Nemotron-3.5 ASR Streaming Multilingual (0.6B) | Chuyển giọng nói thành văn bản streaming (đa ngôn ngữ, điều kiện hoá theo prompt) | ✓ | ✓ |
| Omnilingual ASR CTC (300M) | Chuyển giọng nói thành văn bản (đa ngôn ngữ) | — | ✓ |
| Pyannote Segmentation 3.0 | Phân tách người nói (phân đoạn) | — | ✓ |
| WeSpeaker ResNet34-LM | Embedding người nói | — | ✓ |
| VoxCPM2 (2B) | Chuyển văn bản thành giọng nói (48 kHz, nhân bản giọng nói) | — | ✓ |
| Kokoro 82M | Chuyển văn bản thành giọng nói | ✓ | — |
| DeepFilterNet3 | Nâng cao chất lượng giọng nói | ✓ | — |
| PersonaPlex 7B | Giọng nói tới giọng nói song công (CUDA) | ✓ | — |
Bắt đầu nhanh
Biên dịch lõi cùng backend LiteRT (thư viện runtime được trích xuất từ wheel ai-edge-litert — không phải build 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
Sau đó liên kết các target bạn cần:
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
Chuyển một buffer âm thanh thành văn bản chỉ tốn vài dòng:
#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
Một bản build Linux tham chiếu — libspeech.so với C ABI nhỏ gọn, một CLI demo ALSA, và các công cụ transcribe/synthesize/phonemize — nằm tại examples/linux. Nó nhắm tới ARM64 nhúng (Yocto, Qualcomm SA8295P / SA8255P) và bất kỳ máy dev Linux nào. Các bước thiết lập có trong hướng dẫn bắt đầu với Linux.
Trên Android, dùng speech-android — một SDK Kotlin đóng gói Speech Core sau cầu nối JNI (implementation("audio.soniqo:speech:0.0.9")). Trên macOS và iOS, dùng speech-swift, chạy các mô hình trên CoreML, MLX và Apple Neural Engine.
Tài liệu
- docs/ — tài liệu đầy đủ trong repo
- docs/pipeline.md — máy trạng thái
VoicePipeline, tích hợp AEC và vòng lặp gọi công cụ - docs/models.md — danh mục mô hình đầy đủ
- huggingface.co/soniqo — trọng số mô hình đã chuyển đổi (ONNX, LiteRT)
Phản hồi
Mở issue tại github.com/soniqo/speech-core/issues, hoặc tham gia Discord.