オープンソースプロジェクト
k2-fsa/sherpa-onnx avatar
k2-fsa/sherpa-onnx

sherpa-onnxは音声認識から話者分離までをオフライン推論する

インターネット接続なしで onnxruntime を備えた次世代 Kaldi を使用した音声テキスト変換、テキスト読み上げ、話者ダイアライゼーション、音声強調、ソース分離、および VAD。組み込みシステム、Android、iOS、HarmonyOS、Raspberry Pi、RISC-V、RK NPU、Axera NPU、Ascend NPU、x86_64 サーバー、WebSocket サーバー/クライアントをサポートし、12 のプログラミング言語をサポートします。

スター 14,779フォーク 1,698C++Apache-2.0

ひと目でわかる

これは何?
onnxruntimeを使い、ASR、TTS、VAD、話者処理、音声強調、音源分離を多様なOS、CPU、NPU、12言語から利用できるC++基盤です。
誰に向いている?
音声データをローカルで処理したい組み込み、モバイル、デスクトップ、サーバー開発に向いています。対応表だけを見て精度や遅延を決める用途には向きません。
商用利用できる?
できます。Apache-2.0 は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
今もメンテナンスされている?
されています。最後のコミットは 2 日前です。
何の言語で書かれている?
主に C++ です(GitHub の言語統計による)。

回答はプロジェクトの GitHub データ(最終同期:2026年9月15日)と当サイトの分析に基づくもので、法的助言ではありません。

オープンソース詳細解説

オフライン音声処理の範囲

sherpa-onnxは、onnxruntimeを通じて音声認識、音声合成、話者ダイアライゼーション、話者識別、VAD、キーワードスポッティング、句読点、音声強調、音源分離などを実行するプロジェクトです。READMEはインターネット接続なしで動作することを掲げていますが、モデル取得や初回配布の経路まで常にオフラインという意味ではありません。推論時の通信を対象端末で確認します。

モデルを機能別に選ぶ

モデルはASR、TTS、VAD、話者認識、句読点、強調、分離などのリリースへ分類されています。ストリーミングASRにはZipformer、非ストリーミングにはWhisper、SenseVoice、Paraformerなどが挙げられ、VADにはsilero-vadが記載されています。モデルごとに言語、入力形式、精度、速度、配布条件が異なるため、機能名だけで互換性を判断せず、リンク先のモデル資料を確認します。

端末とアクセラレーター

対応表にはx86_64、arm64、riscv64などのCPUアーキテクチャ、Linux、macOS、Windows、Android、iOS、HarmonyOSなどのOSが並びます。Raspberry Pi、Jetson、RK3588などの個別機器や、RKNN、QNN、Ascend、AxeraのNPUも列挙されています。チェックマークは対応範囲の主張で、消費電力、レイテンシ、精度のベンチマークではありません。

12言語と配布物

READMEはC++、C、Python、JavaScript、Java、C#、Kotlin、Swift、Go、Dart、Rust、Object Pascalの12言語とWebAssemblyを挙げています。AndroidのAPK、Flutterアプリ、Lazarusアプリ、Hugging Face SpacesやModelScopeのデモも案内されます。ただし、各バインディングがどの機能を公開し、どのOSにプリビルドがあるかは個別確認が必要です。

ローカル推論を実測する

対象端末でモデルを一つ選び、同一の音声ファイルとストリーミング条件で認識結果、初回ロード時間、継続遅延、CPUまたはNPU使用率、メモリ、無通信状態を記録します。話者分離や音源分離では出力チャンネルの意味も確認します。READMEに統一ベンチマークはないため、モデル間の数値を単純比較せず、用途の許容値と照合します。

第三者統合とApache-2.0

READMEにはReact Nativeラッパー、オフラインTTS、音声入力、Open-LLM-VTuberなどの利用例があります。これは統合例であり、公式サポートや品質保証の一覧ではありません。ライセンスはApache-2.0ですが、モデルや変換元の条件が同じとは限らないため、コード、モデル、アプリのライセンスを分けて確認します。

対象を一つのモデルと一つの端末に固定し、モデルファイルの取得後にネットワークを遮断して推論を行います。ストリーミングASRでは最初の結果までの時間、途中結果の変化、最終結果を保存し、非ストリーミングでは音声長に対する処理時間とメモリを測ります。VADの区間とASRの文字列、話者ダイアライゼーションの話者ラベルを同じ入力で照合します。CPU版と対象NPU版では、ライブラリの版、量子化、入力サンプルレートを揃えます。APKやWebデモの結果は本番ライブラリの測定値に置き換えず、モデルカード、変換元、配布条件をコードのApache-2.0とは別に確認します。

音声処理の出力は、モデル名だけでは評価できません。日本語と英語、雑音、無音、複数話者を含む短い固定データセットを作り、文字誤り、話者ラベル、無音区間、処理時間を記録します。TTSでは生成音声の長さとサンプルレート、音源分離では分離後のチャンネル数とクリッピングを確認します。モデルのダウンロード先、量子化形式、onnxruntimeの版、NPUドライバーを固定し、端末を変えたときの差分を残します。オフライン要件ではDNS、証明書、モデルの追加取得が起きないことも観察します。

音声データを外部へ出さない要件では、ログに音声そのものや認識結果が残る経路も確認します。モデル更新時は精度だけでなく、ファイルサイズ、ロード時間、端末の温度と電力も比較します。

sherpa-onnxの検証では、モデルと推論エンジンの版を固定します。音声の内容、結果、処理時間、資源使用量を分けて記録し、対応表のチェックを精度の保証とは読み替えません。対象端末で再確認します。

導入前には、対象版のリリースと実行環境を記録します。入力と出力を固定した小さな試験を作り、成功だけでなく失敗時の状態も保存します。設定ファイルの既定値を確認し、変更した値を一覧にします。権限は必要な範囲に絞り、管理者操作と通常利用を分けます。ログには時刻、版、対象、結果を残します。外部サービスを使う場合は通信先と認証の境界を確認します。更新時は同じ試験を再実行し、以前の結果との差を見ます。素材にない性能や安全性を数値として補いません。READMEの機能説明と実際の動作が異なる場合は、動作を優先して原因を調べます。

編集部の結論

音声データをローカルで処理したい組み込み、モバイル、デスクトップ、サーバー開発に向いています。対応表だけを見て精度や遅延を決める用途には向きません。採用前に対象モデルと対象端末を一つに固定し、入力音声、認識結果、メモリ、遅延、NPU経路、モデルのライセンスを同じ条件で測り、READMEの対応表と実測を分けて記録します。

公式情報源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
コミュニティノート

コミュニティノート