antirez/qwen-asr

C inference for Qwen3-ASR 0.6b and 1.7b transcriptions models

解決する課題

本プロジェクトは、Qwen3-ASR音声テキスト変換モデルのための高性能な純C言語による推論パイプラインを提供します。依存関係を最小限に抑えつつ、強力なASRモデル(0.6Bおよび1.7Bパラメータ)をCPU、NVIDIA GPU(CUDA経由)、AMD GPU(ROCm経由)上で効率的に実行可能です。

仕組み

この実装は、音声の前処理、トークン化、モデル推論を処理するCベースのパイプラインを使用しています。主に3つの動作モードをサポートしています:

  • ノーマルモード (Normal Mode):音声を一括(オフライン)で処理するか、大きなファイルを扱うためにセグメント単位で処理します。
  • ストリーミングモード (Streaming Mode):2秒単位のチャンクで音声を処理し、スライディングウィンドウとプレフィックスロールバックを使用して、ライブ音声のコンテキストと安定性を維持します。
  • セグメントモード (Segmented Mode):メモリと計算コストを管理するため、無音区間に基づいて長い音声をセグメントに分割します。

パフォーマンスを最適化するため、CPU加速にはBLASを、GPUバックエンドにはネイティブカーネルを使用しています。また、CPU推論ではメモリマップドウェイト(memory-mapped weights)を採用し、メモリオーバーヘッドを削減しています。

対象ユーザー

  • 開発者:音声テキスト変換をアプリケーションに統合するための、軽量で依存関係のないCライブラリを探している方。
  • システム管理者:重いPythonランタイムなしで、リモートのLinuxサーバー上でASRを実行する必要がある方。
  • ユーザー:低スペックのIntel/AMDプロセッサや特定のAMD/NVIDIA GPUを含む、控えめなハードウェアでQwen3-ASRモデルを実行したい方。

ハイライト

  • 最小限の依存関係:CPUビルドにはC標準ライブラリとBLAS実装のみが必要です。
  • GPU加速:NVIDIA CUDAおよびAMD ROCmバックエンドをネイティブサポート。
  • 柔軟な入力:WAVファイルおよびstdin経由の音声(ffmpegなどからのパイプ)をサポート。
  • リアルタイム診断:Unicodeシンボルを使用してstderr上でパイプラインの進行状況を可視化する「モニターモード」。
  • 言語とプロンプトの制御:特定のターゲット言語を強制したり、システムプロンプトを提供してスペルや専門用語を調整したりすることが可能。
  • ストリーミング機能:メモリと計算量を制限するスライディングウィンドウを備えた無制限のストリーミングをサポート。

関連

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