音声エージェントの認識器は、マイク付近にいるすべての人の発言を文字起こししてしまいます。VoxLock は、公開されている REAL-TSE ベースラインを単一の GPU でファインチューニングして作成された、27M パラメータの因果的ターゲット話者抽出モデルです。通話自体から発信者の声をサンプルとして切り出し(デフォルトでは最初の 15 秒、ストリーミングモードでは 3 秒の音声を受信後に開始)、その人の声のみを保持して周囲の会話を除去し、音声認識に渡します。
いいね 3 · コードスター数 88
理由
- 著者によると、Krisp の 265 件の実際の録音データにおいて、単語誤り率を 23.21% から 4.95% に低減し、Krisp の最高性能の有料フィルタと有意な差がないことを確認しました。また、学習に使用していない AMI 会議ウィンドウでは、42.95% から 10.63% に低減しています。
- 軽量でリアルタイム処理が可能:8 ビットモデルは、1 つの CPU スレッドで 77% を消費して 1 通話分を実行でき、アルゴリズム遅延は 24 ms です。ONNX では int8 / fp16 / fp32 の複数の精度がサポートされています。
- 導入が容易:pip install voxlock でインストールでき、Pipecat 音声フィルタと LiveKit Agents プラグインが付属しています。sherpa-onnx 2.0.1 以降では組み込み済みです。モデル、コード、ファイル単位の評価結果はすべて公開されており、ライセンスは Apache-2.0 です。
使い方
- コマンドライン:pip install voxlock → voxlock call.wav -o caller.wav(初回実行時にモデルが自動的にダウンロードされます)。
- Python ストリーミング:vl = voxlock.VoxLock(threads=1); stream = vl.live() と設定し、16 kHz の音声チャンクを受信するたびに stream.push(chunk) を呼び出し、終了時に stream.flush() を実行します。既存の発信者サンプルがある場合は、vl.stream(sample) を使用して最初のチャンクから分離を開始できます。
- 音声エージェント:pip install "voxlock[pipecat]" を実行後、VoxLockFilter() を audio_in_filter に設定します。LiveKit では "voxlock[livekit]" をインストールし、noise_cancellation として渡します。
- ブラウザでの試用:Hugging Face Space の arbazsiddiqui/voxlock を参照してください。
リスク
- 学習データは英語(LibriSpeech、AMI)であり、モデルカードの言語は英語と記載されています。中国語などの他の言語での性能については報告されていません。
- 最初の数秒間は通話の冒頭から自動的に発信者を特定するため、冒頭で他の人が話している場合は誤った話者をロックする可能性があります。手動で sample を渡すことで回避できます。商用製品との比較は著者自身によるテストに基づいています。
- 個人開発者のプロジェクトであり、評価スクリプトとファイル単位の結果はリポジトリの bench/ ディレクトリにあります。自分で検証可能です。