cmusphinx/pocketsphinx
A small speech recognizer
PocketSphinx – 軽量でオフラインの音声認識エンジン
何であるか – PocketSphinx はカーネギー・メロン大学から生まれたオープンソースの連続音声認識エンジンです。大語彙・話者非依存音声認識のための古典的な隠れマルコフモデル(HMM)デコーディングを実装していますが、意図的に小型かつ高速に設計されており、低消費電力デバイス(例:Raspberry Pi、組み込みLinux、Windows)でも動作します。コードベースはC言語で書かれており、Pythonバインディングもオプションで提供されています。
なぜ重要か – 多くの現代のニューラルネットワークベースの認識エンジンがGPUやクラウドAPIを必要とする一方、PocketSphinxは完全にオフラインで動作し、非常に小さなフットプリント(数MB)です。この特性により、プライバシーに配慮が必要な、またはリソースが制限されたアプリケーション(例:音声制御IoT機器、ロボット、オフライン音声認識が必要な趣味プロジェクト)に非常に有用です。
入手方法 – このプロジェクトはCMakeを使ってCライブラリとpocketsphinxコマンドラインツールをビルドします。DebianベースのLinuxでは、オプションの音声処理依存関係(ffmpeg、portaudio、soxなど)をaptでインストールできます。リポジトリをクローンした後は、以下の手順で実行します:
# Cライブラリのビルド
cmake -S . -B build
cmake --build build
sudo cmake --build build --target install # または -DCMAKE_INSTALL_PREFIX でカスタムパスを指定可能
Python用には仮想環境を作成し、トップレベルディレクトリから pip install . を実行します。
実行方法 – pocketsphinx実行ファイルは16ビットモノラルPCM音声(ファイルまたはstdinから)を読み込み、認識結果を行区切りJSON形式で出力します。主なサブコマンドは以下の通りです:
live– 音声ストリームを処理し、音声セグメントを検出し、各セグメントに対してJSONオブジェクトを出力します(b:開始時刻、d:持続時間、p:信頼度、t:トランスクリプト、w:単語レベルの詳細)。single– 各入力ファイルを1つの発話とみなして、1つのJSONオブジェクトを返します。align– 指定された音声ファイルを、提供されたトランスクリプトに強制的に同期(アライメント)します。単語や音素のタイムスタンプを生成する際に有用です。soxflags– 任意の音声フォーマットを必要なPCMストリームに変換するために必要なsox引数を出力します。sox audio.mp3 $(pocketsphinx soxflags) | pocketsphinx -のようなパイプラインを可能にします。
プログラミング – リポジトリにはCおよびPython用の例プログラムがexamples/に含まれています。C APIはDoxygenでドキュメント化されており(CMakeで自動的にビルド)、Python APIは https://pocketsphinx.readthedocs.io でホストされています。Pythonでの一般的な使用例は以下の通りです:
import pocketsphinx as ps
config = ps.Decoder.default_config()
config.set_string('-hmm', '/path/to/acoustic/model')
config.set_string('-lm', '/path/to/language/model')
config.set_string('-dict', '/path/to/dictionary')
decoder = ps.Decoder(config)
decoder.start_utt()
with open('speech.wav', 'rb') as f:
decoder.process_raw(f.read(), False, True)
decoder.end_utt()
print('Result:', decoder.hyp().hypstr)
開発とテスト – プロジェクトにはレグレッション/ユニットテストスイート(make check または ctest)が含まれています。ドキュメントはローカルでビルド可能(C APIは cmake --build build --target docs、Pythonドキュメントは make -C docs html)。GitHub Actions上の継続的インテグレーションワークフローがリリースとAPIドキュメントの更新を自動処理しています。
ライセンス – リポジトリ内の LICENSE ファイルを参照してください。PocketSphinxはBSDスタイルのライセンスの下でリリースされており、自由な使用と再配布が許可されています。
PocketSphinxは本物で、積極的にメンテナンスされている音声認識ライブラリであり、大規模なニューラルモデルではなく、効率的でオフラインの推論に焦点を当てたAI/ML分野に位置づけられます。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト