Speech Core
เอ็นจินเสียงพูด C++17 โอเพนซอร์สสำหรับเอเจนต์เสียง — การตรวจจับกิจกรรมเสียงพูด การถอดเสียงเป็นข้อความทั้งแบบแบตช์และสตรีมมิ่งเรียลไทม์ การแยกผู้พูด และการสังเคราะห์เสียงพูด ทั้งหมดทำงานบนอุปกรณ์บน Linux, Windows และ Android Apache 2.0
Speech Core คืออะไร
Speech Core เป็นแกนออร์เคสเตรชันขนาดเล็ก — สเตตแมชชีน การตรวจจับเทิร์น การจัดการการขัดจังหวะ ยูทิลิตีด้านเสียง โดยไม่มี dependency ด้าน ML เลย — พร้อมชุดอินเตอร์เฟซนามธรรมสำหรับโมเดลเสียงพูด การอนุมานทำงานในเครื่องบน CPU เสียงไม่ออกจากเครื่อง และไม่มี Python ในขั้นตอนการอนุมาน การอนุมานโมเดลเป็นแบบเลือกเปิดใช้ผ่านสองแบ็กเอนด์ที่สลับแทนกันได้และเปิดใช้แยกกันได้ หรือคุณจะนำอิมพลีเมนเตชันของอินเตอร์เฟซเหล่านี้มาเองก็ได้
- ออร์เคสเตรชันเอเจนต์เสียง —
VoicePipelineประกอบ VAD, STT แบบสตรีมมิ่ง, LLM และ TTS เป็นลูปเอเจนต์แบบ full-duplex พร้อม barge-in การตรวจจับเทิร์น และลูปเรียกใช้เครื่องมือ ดู docs/pipeline.md และภาพรวมเอเจนต์เสียง - การแยกผู้พูดใน C++ ล้วน —
DiarizationPipelineประกอบตัวแบ่งส่วน (segmenter) และตัวฝัง (embedder) ให้เป็นเซกเมนต์ที่ติดป้ายผู้พูด โดยตัวมันเองไม่มี dependency ด้าน ML runtime - ขับเคลื่อนส่วนที่เหลือของสแต็ก — 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 runtime เลย
โมเดลที่รองรับ
| โมเดล | งาน | 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 | เสียงพูดสู่เสียงพูดแบบ full-duplex (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 ที่คุณต้องการ:
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