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将分割器(segmenter)与说话人 embedding 模型(embedder)组合成带说话人标签的片段,自身不依赖任何 ML 运行时。 - 支撑技术栈的其余部分 — speech-android 是基于 Speech Core 的 Kotlin SDK + JNI 桥接层,Speech Studio 在 Windows 和 Linux 上使用它的 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 | 说话人 embedding | — | ✓ |
| VoxCPM2 (2B) | 文本转语音(48 kHz,声音克隆) | — | ✓ |
| Kokoro 82M | 文本转语音 | ✓ | — |
| DeepFilterNet3 | 语音增强 | ✓ | — |
| PersonaPlex 7B | 全双工语音到语音(CUDA) | ✓ | — |
快速开始
构建核心加 LiteRT 后端(运行时库从 ai-edge-litert wheel 中提取 — 无需构建 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,以及转写/合成/音素化工具 — 位于 examples/linux。它面向嵌入式 ARM64(Yocto、Qualcomm SA8295P / SA8255P)以及任何 Linux 开发机。设置步骤见 Linux 快速开始指南。
在 Android 上,请使用 speech-android — 一个通过 JNI 桥接层封装 Speech Core 的 Kotlin SDK(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)
反馈
在 github.com/soniqo/speech-core/issues 提交 issue,或加入 Discord。