altunenes/parakeet-rs

very fast speech-to-text, diarization, streaming (even in CPU) with NVIDIA Parakeet in Rust

parakeet‑rs – Rust での高速音声認識

何であるかparakeet‑rs は、ONNX Runtime を介して NVIDIA の Parakeet 音声認識モデル(CTC、TDT、ストリーミング、多言語、話者分離など)を実行できる Rust クレートです。ONNX ファイルの読み込み、16 kHz のモノラル音声の入力、テキストの出力に加えて、オプションのタイムスタンプと話者ラベルを返す、簡潔で使いやすい API を提供します。

なぜ重要か – オリジナルの Parakeet モデルは大規模で高品質な ASR モデルであり、GPU 上で実行されます。parakeet‑rs は、Python や重いディープラーニングフレームワークを導入せずに、ネイティブ Rust プログラムからこれらのモデルを利用可能にします。また、CUDA、TensorRT、WebGPU、DirectML、MIGraphX、CPU などのさまざまな実行プロバイダーをサポートしています。これにより、デスクトップ、サーバー、または組み込み Rust アプリケーション向けの低遅延・オンデバイス音声認識が実現できます。

主な機能

  • CTC(英語専用) – 単語レベルのタイムスタンプ付きの高速オフライン音声認識。
  • TDT(多言語) – 25言語の自動検出モデル、文レベルのタイムスタンプ。
  • EOU(発話終了検出) – 発話が終わると停止するリアルタイムストリーミング ASR。
  • Nemotron ストリーミング – キャッシュ対応のストリーミングで句読点を含む。英語専用(0.6 B)と多言語(3.5 B)のバージョン。
  • Cohere Transcribe – オプションのオフライン多言語モデル(14言語)、句読点と逆テキスト正規化のオプションあり。
  • マルチターゲット – ストリーミング多話者音声認識。各チャンクは (speaker_id, text) のペアのリストを返す。
  • Sortformer 話者分離 – 最大4話者の話者分離モデル。オフラインまたはチャンク単位でリアルタイム利用可能。
  • トークンレベルのタイムスタンプ – CTC/TDT モデルでは、各トークンの開始・終了時刻を取得可能。
  • GPU/CPU の柔軟性 – Cargo の機能(cudatensorrtwebgpudirectmlmigraphx など)で ONNX Runtime の実行プロバイダーを選択可能。デフォルトでは CPU に自動フォールバック。

一般的な使用例(簡略化)

use parakeet_rs::{Parakeet, Transcriber, TimestampMode};

// ローカルディレクトリから事前学習済み CTC モデルを読み込む
let mut model = Parakeet::from_pretrained("./ctc", None)?;

// `audio` = 16 kHz モノラルサンプルの Vec<f32>
let result = model.transcribe_samples(audio, 16000, 1, Some(TimestampMode::Words))?;
println!("Transcribed: {}", result.text);

// オプションのトークンごとのタイムスタンプ
for token in result.tokens {
    println!(["{:.3}s – {:.3}s] {}", token.start, token.end, token.text);
}

このクレートには、各モデルタイプ、ストリーミングループ、話者分離パイプラインを示す例プログラム(examples/*.rs)が同梱されています。

モデルの入手方法 このライブラリは ONNX 重みを同梱していません。リンクされた Hugging Face リポジトリ(例:parakeet-ctc-0.6b-ONNXparakeet-tdt-0.6b-v3-onnxnemotron‑3.5‑asr‑streaming‑0.6b)からダウンロードする必要があります。README には直接の URL と、ハッシュを検証しローカルにキャッシュする小さな Python ヘルパー(scripts/download_orukeet.py)が記載されています。

インストール

# Cargo.toml
parakeet-rs = { version = "0.3", features = ["cuda"] }   # または "webgpu", "tensorrt" など。

デフォルトの CPU 以外の実行プロバイダーを使用する場合は、次のように設定します:

use parakeet_rs::{Parakeet, ExecutionConfig, ExecutionProvider};
let cfg = ExecutionConfig::new().with_execution_provider(ExecutionProvider::Cuda);
let mut model = Parakeet::from_pretrained("./model", Some(cfg))?;

上級ユーザーは ExecutionConfig::with_custom_configure を使って、下位の ONNX Runtime SessionBuilder をカスタマイズできます。

ライセンス – コードは MIT または Apache‑2.0 の二重ライセンスです。ONNX モデルファイルは含まれません。NVIDIA や各モデル所有者のライセンス(例:Orukeet の微調整モデルは CC BY‑SA 4.0)に従います。


上記のすべての詳細は、リポジトリの README から直接取得されています。追加の機能は推測されていません。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト