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 の機能(
cuda、tensorrt、webgpu、directml、migraphxなど)で 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-ONNX、parakeet-tdt-0.6b-v3-onnx、nemotron‑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 から直接取得されています。追加の機能は推測されていません。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト