qwen_asr_once.py ドキュメント

概要

指定された音声ファイルに対してQwen3-ASRモデルを用いた音声認識(文字起こし)を1回だけ実行し、結果をJSON形式で出力して終了する単発実行用のPythonスクリプトです。

目的・用途

このスクリプトは、実行されるたびにモデルをメモリにロードし、推論終了とともにプロセスを終了する設計となっています。主に qwen_asr_flask.py などの外部プログラムからサブプロセスとして都度呼び出されることを想定しています。このアプローチにより、推論リクエストの合間にGPUメモリを確実に解放することが目的です。

動作原理・アルゴリズム

本スクリプトは音声認識モデルを呼び出すためのシンプルなラッパープログラムであり、複雑な数学的処理や独自のアルゴリズムは実装されていません。基本的な動作フローは以下の通りです。

  1. コマンドライン引数を解析し、対象となる音声ファイルのパスとモデルの指定を受け取ります。

  2. 指定された音声ファイルがシステム上に存在するかを確認します。存在しない場合は即座にエラーを返して終了します。

  3. qwen_asr ライブラリから Qwen3ASRModel をロードします。この際、推論環境として以下のパラメータが固定で適用されます。

    • デバイス: cuda:0

    • データ型: torch.bfloat16

    • 最大バッチサイズ (max_inference_batch_size): 1

    • 最大新規トークン数 (max_new_tokens): 4096

  4. 音声ファイルをモデルに入力し、文字起こしを実行します。言語の自動判定が行われるように言語指定は None に設定されます。

  5. 得られた認識結果(テキスト情報と判定された言語情報)を抽出し、JSONフォーマットに変換して標準出力に書き出します。

入出力仕様

入力(CLIオプション)

  • --audio

    • 必須: はい

    • 型: ファイルパス

    • 説明: 音声認識の対象となる音声ファイルのパスを指定します。

  • --model

    • 必須: いいえ

    • 型: 文字列

    • 説明: ロードするモデルの名前またはディレクトリパスを指定します。デフォルト値は Qwen/Qwen3-ASR-1.7B です。

出力

  • 標準出力 (stdout)

    • 推論が成功した場合、以下のキーを持つJSON文字列が1行で出力されます。非ASCII文字をそのまま表示するため、Unicodeエスケープは行われません。

    • 出力されるJSONキー:

      • text: 文字起こしされたテキスト結果

      • language: モデルによって判定された言語情報

  • 標準エラー (stderr)

    • --audio で指定されたファイルが存在しない場合、エラーメッセージが出力されます。

  • 終了コード

    • 0: 正常終了

    • 2: 入力ファイルが存在しない場合のエラー終了

実行例

デフォルトのモデルを使用して、sample.wav の音声認識を行う場合のコマンド例です。

python qwen_asr_once.py --audio sample.wav

別のモデルを明示的に指定して実行する場合のコマンド例です。

python qwen_asr_once.py --audio sample.wav --model path/to/custom_model

正常に実行された場合の標準出力例は以下のようになります。

{"text": "こんにちは、今日は良い天気ですね。", "language": "ja"}

依存ライブラリ

コードの import 文から確認できる非標準ライブラリは以下の通りです。

  • torch

  • qwen_asr (内部で Qwen3ASRModel を利用)