PyTorch QuartzNet モデルの変換

危険

ここで説明されているコードは非推奨になりました。従来のソリューションの適用を避けるため使用しないでください。下位互換性を確保するためにしばらく保持されますが、最新のアプリケーションでは使用してはなりません

このガイドでは、非推奨となった変換方法について説明します。新しい推奨方法に関するガイドは、Python チュートリアルに記載されています。

NeMo プロジェクトは QuartzNet モデルを提供します。

事前トレーニングされた QuartzNet モデルをダウンロード

事前トレーニングされたモデルをダウンロードするには、NeMo 音声モデルカタログを参照してください。ここでは、ONNX 形式で QuartzNet を取得する方法について説明します。

  1. 指示に従って NeMo ツールキットをインストールします。

  2. 次のコードを実行します。

    import nemo
    import nemo.collections.asr as nemo_asr
    
    quartznet = nemo_asr.models.EncDecCTCModel.from_pretrained(model_name="QuartzNet15x5Base-En")
    # Export QuartzNet model to ONNX format
    quartznet.decoder.export('decoder_qn.onnx')
    quartznet.encoder.export('encoder_qn.onnx')
    quartznet.export('qn.onnx')
    

    このコードは、encoder_qn.onnxdecoder_qn.onnxqn.onnx の 3 つの ONNX モデルファイルを生成します。それぞれ decoderencoder、および decoder(encoder(x)) モデルに相当します。

ONNX QuartzNet モデルから IR への変換

複合モデルを使用する場合:

mo --input_model <MODEL_DIR>/qt.onnx --input_shape [B,64,X]

別のモデルを使用する場合:

mo --input_model <MODEL_DIR>/encoder_qt.onnx --input_shape [B,64,X]
mo --input_model <MODEL_DIR>/decoder_qt.onnx --input_shape [B,1024,Y]

形状はオーディオファイルのメルスペクトログラムの長さによって決まります: B - バッチの次元、X - 入力の長さに基づく次元、Y - エンコーダーの出力によって決定 (通常は X / 2)。