Speech Core
音声エージェント向けのオープンソース C++17 音声エンジン — 音声区間検出、バッチおよびリアルタイムストリーミング音声認識、話者ダイアライゼーション、音声合成のすべてが Linux・Windows・Android 上でオンデバイスで動作します。Apache 2.0。
Speech Core とは
Speech Core は小さなオーケストレーションコア — ステートマシン、ターン検出、割り込み処理、音声ユーティリティを ML 依存ゼロで提供 — に、音声モデル向けの抽象インターフェース群を加えたものです。推論はローカルの CPU 上で実行され、音声がマシンの外に出ることはなく、推論時に Python は不要です。モデル推論は、個別に有効化できる 2 つの交換可能なバックエンドを通じたオプトイン方式です。インターフェースの独自実装を持ち込むこともできます。
- 音声エージェントのオーケストレーション —
VoicePipelineが VAD、ストリーミング STT、LLM、TTS を組み合わせ、バージイン(割り込み発話)、ターン検出、ツールコールループを備えたフルデュプレックスのエージェントループを構成します。docs/pipeline.md と音声エージェントの概要をご覧ください。 - 純粋な C++ による話者ダイアライゼーション —
DiarizationPipelineがセグメンターとエンベッダーを組み合わせて話者ラベル付きセグメントを生成します。それ自体は ML ランタイムに依存しません。 - スタック全体の基盤 — speech-android は Speech Core を JNI ブリッジ越しに包んだ Kotlin SDK で、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、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 に参加してください。