このプロジェクトは、音声認識エンジン VOSK を利用したコマンドラインインターフェイス(CLI)アプリケーションです。 マイクからの音声入力をリアルタイムでテキスト化します。
VOSKの詳細や対応モデルについては、公式サイトもあわせてご参照ください。
Node.jsプロジェクトの依存ライブラリとしても利用できます。
- マイクからの音声をリアルタイムで認識
- 日本語と英語のモデルサポート
- 利用可能なオーディオ入力デバイスのリスト表示
- テストモードでの録音とWAVファイルの保存
- JSON形式での出力
- Node.jsライブラリとしての統合
- 自動モデルダウンロード機能
bin/vosk-cli [options]
-l- 利用可能な入力オーディオデバイスをJSON形式で一覧表示-d index- 使用するオーディオデバイスのインデックスを指定-m path- 音声認識モデルのパスを指定(デフォルト:model/vosk-model-small-ja-0.22)-test- 10秒間の音声を録音し、「recorded_converted.wav」としてWAVファイルに保存-textonly- 最終認識結果のみを表示(部分的な中間結果を表示しない)-h- ヘルプメッセージを表示
いずれか有効な引数を指定しない場合はヘルプを表示します。
利用可能なオーディオデバイスのリストを表示:
vosk-cli -l
オーディオデバイス インデックス=0で 実行:
vosk-cli -d 0
軽量版モデルを使用:
vosk-cli -m model/vosk-model-small-ja-0.22
通常版モデルを使用:
vosk-cli -m model/vosk-model-ja-0.22
英語のモデルを使用:
vosk-cli -m model/vosk-model-small-en-us-0.15
テストモードで実行(10秒間録音してWAVファイルを保存):
vosk-cli -test
npm install github:n-air-app/vosk-cliもしくは
package.jsonのdependenciesに追加:
{
"dependencies": {
"vosk-cli": "github:n-air-app/vosk-cli"
}
}使用例:
import Vosk from "vosk-cli";
// システム情報の取得
console.log(Vosk.getExePath());
console.log(Vosk.getVersion());
console.log(Vosk.getDevices());
// 音声認識の開始
const child = Vosk.start({
deviceIndex: 0,
modelPath: "./model/vosk-model-small-ja-0.22",
onData: (data) => {
if (data.text) {
console.log("認識結果:", data.text);
} else if (data.partial) {
console.log("部分認識:", data.partial);
}
},
});
// 終了
setTimeout(() => {
child.kill();
}, 30000);- Windows OS
- オーディオ入力デバイス(マイク)
- VOSKモデル(下記参照)
- Node.js (v14.0.0以上推奨)
- Windows OS
- オーディオ入力デバイス(マイク)
- VOSKモデル(下記参照)
モデルは以下のサイトからダウンロードできます。
https://alphacephei.com/vosk/models
download_model.batを実行すると、日本語モデルを自動的にダウンロードできます:
download_model.bat
このバッチファイルは以下のモデルをダウンロードします:
vosk-model-small-ja-0.22- 軽量版(約50MB)vosk-model-ja-0.22- 通常版(約1.5GB、高精度)
VOSK Modelsから直接ダウンロードして、modelフォルダに展開することも可能です。
このプロジェクトをビルドするには、Visual Studioを使用してソリューションファイル(vosk-cli.sln)を開き、ビルドしてください。
実行ファイルのパスを取得します。
const exePath = Vosk.getExePath();
console.log(exePath); // "C:\\path\\to\\vosk-cli.exe"バージョン情報を取得します。
const version = Vosk.getVersion();
console.log(version); // バージョン文字列利用可能なオーディオデバイスの一覧を取得します。
const devices = Vosk.getDevices();
console.log(devices); // デバイス情報のJSON配列音声認識を開始します。
const child = Vosk.start({
deviceIndex: 0, // オーディオデバイスのインデックス
modelPath: "./model/vosk-model-small-ja-0.22", // モデルのパス
onData: (data) => { // データ受信時のコールバック
console.log(data);
},
});
// 終了時
child.kill();deviceIndex(number): 使用するオーディオデバイスのインデックスmodelPath(string): 音声認識モデルのパスonData(function): データ受信時のコールバック関数
コールバック関数には以下の形式のオブジェクトが渡されます:
{
text: "最終的な認識結果", // 確定した認識結果
partial: "部分的な認識結果", // 認識途中の結果
error: "エラーメッセージ", // エラーが発生した場合
info: "情報メッセージ" // その他の情報
}完全なサンプルコードは example フォルダに含まれています。詳細は example/readme.md を参照してください。
bin ディレクトリ内の以下の DLL ファイルは、vosk-api v0.3.45 リリース から取得しています。
各DLLの詳細やライセンスについては、上記リリースページをご参照ください。
libgcc_s_seh-1.dlllibstdc++-6.dlllibvosk.dlllibwinpthread-1.dll
モジュールが見つからないエラー
npm installを実行して依存関係を再インストールしてください。
音声認識が開始されない
Vosk.getDevices()でデバイス一覧を確認し、正しいインデックスを指定してください
TypeScriptエラー 型定義ファイルが正しくインポートされているか確認してください:
import Vosk from "vosk-cli";