音声認識WhisperをNVIDIA Jetson AGX Orin Developer KitでNGCからL4T-PyTorchを入手し、動作させる方法(2023年9月時点)
最終更新日:2023年10月13日
※ NVIDIAのロゴはガイダンスに則り使用しています。
※ Whisperのバージョンは20230918を使用した説明となります。
OpenAIが文字起こしサービスとして公開した無料の音声認識モデルであるWhisperをNVIDIA Jetson AGX Orin Developer Kit (以降Jetson Orin)で動作確認できたので方法を記事に残します。
Jetson Orinのローカルにpythonライブラリを直接インストールするのは避けたいので、nvidia-dockerを使用してDockerコンテナからWhisperを実行します。
Whisperとは
WhisperとはChatGPTで話題となったOpenAIが文字起こしサービスとして公開した無料の音声認識モデルです。WhisperはWebから収集した68万時間分(約77年)、日本語は7,054時間(約294日)の多言語音声データを教師付きデータで学習させており、高い精度で入力した音声を文字起こしすることが可能になっています。
環境
本記事を参考に、Whisperを動作させるには以下のものが必要です。
NVIDIA Jetson AGX Orin Developer Kit (64GB)
JetPack5.1.1 (※ NVIDIA Jetson AGX Orin Developer KitはJetPack5.1.1以上を推奨、本記事はJetPack5.1.2でも読み替えれば対応可能です)
20Gbyteの空きスペース (※ ターミナルでdf -hを入力してAvailが20G以上であることを確認してください)
USBマイク
ディスプレイ(※)
USBマウス(※)
USBキーボード(※)
インターネット接続
※ SSH等でJetson Orinへリモートログインする場合はディスプレイ、USBマウスやUSBキーボードは必須ではありません。
JetPackのバージョン確認
Jetson OrinのJetPackのバージョンを確認します。NVIDIAではJetPackのバージョン毎にDockerイメージを提供しているためです。
ターミナルで以下のコマンドを入力することでJetPackバージョンを確認することできます。
$ cat /etc/nv_tegra_release
私の環境だと以下のように出力されます。
note@ubuntu:~/Desktop$ cat /etc/nv_tegra_release
# R35 (release), REVISION: 3.1, GCID: 32827747, BOARD: t186ref, EABI: aarch64, DATE: Sun Mar 19 15:19:21 UTC 2023
note@ubuntu:~/Desktop$
先頭のR35 (release), REVISION: 3.1に注目して、L4T R35.3.1と解釈します。
以上でJetPackのバージョン確認の説明は終了です。
L4T-PyTorchの入手
PyTorchをNVIDIAのGPUに対応させるには、CUDAやcuDNNなど様々なライブラリをインストールし、さらには各ライブラリ間のバージョンも合わせる必要があり、かなりハードルが高いです。
NVIDIAはCUDA対応したPyTorchをnvidia-dockerで無償提供しています。本記事では、NVIDIAのDockerイメージを使用してWhisperを動作させます。
まずは、以下のWebページでJetPack5.1.1に適合するL4T-PyTorchを探します。
l4t-pytorchをクリックします。
JetPack5.1.1はL4T R35.3.1なので、dustynv/l4t-pytorch:r35.3.1を使用することになります。
もし、JetPack5.1.2の場合は、dustynv/l4t-pytorch:r35.4.1として以降を進めてください。
以下のコマンドを入力してL4T-PyTorchのnvidia-dockerイメージをダウンロードします。
$ sudo docker pull dustynv/l4t-pytorch:r35.3.1
L4T-PyTorchのnvidia-dockerイメージの確認のため、以下のコマンドを入力します。
$ sudo docker images
私の環境では以下のようになりました。
note@ubuntu:~/Desktop$ sudo docker images
[sudo] password for note:
REPOSITORY TAG IMAGE ID CREATED SIZE
dustynv/l4t-pytorch r35.3.1 b7b86c6df311 2 days ago 11.4GB
note@ubuntu:~/Desktop$
このDockerイメージで使用しているPyTorchのバージョンは2.0.0、Pythonのバージョンは3.8.10です。
torch 2.0.0+nv23.5
torch2trt 0.4.0
torchaudio 2.0.1+3b40834
torchvision 0.15.1a0+42759b1
Python 3.8.10
以上でL4T-PyTorchの入手の説明は終了です。
作業フォルダの作成
Jetson Orinのデスクトップにwhisperという名前のフォルダを作成します。
このwhisperフォルダをコンテナにマウントするため、必ずフォルダ名をwhisperにしてください。(大文字と小文字も区別するので注意です。先頭のwは小文字です。)
USBマイクのデバイス名確認
アプリケーションからUSBマイクのコントロールを行うためにUSBマイクのデバイス名を確認する必要があります。 Jetson OrinにUSBマイクを接続し、以下のコマンドを入力してデバイス名を確認します。
arecord -l
※ USBマイク未接続時と接続時に本コマンドを入力し、接続時に増えたデバイスがUSBマイクの情報と断定できます。
実行結果
**** List of CAPTURE Hardware Devices ****
card 1: APE [NVIDIA Jetson AGX Orin APE], device 0: tegra-dlink-0 XBAR-ADMAIF1-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: APE [NVIDIA Jetson AGX Orin APE], device 1: tegra-dlink-1 XBAR-ADMAIF2-1 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: APE [NVIDIA Jetson AGX Orin APE], device 2: tegra-dlink-2 XBAR-ADMAIF3-2 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: APE [NVIDIA Jetson AGX Orin APE], device 3: tegra-dlink-3 XBAR-ADMAIF4-3 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: APE [NVIDIA Jetson AGX Orin APE], device 4: tegra-dlink-4 XBAR-ADMAIF5-4 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: APE [NVIDIA Jetson AGX Orin APE], device 5: tegra-dlink-5 XBAR-ADMAIF6-5 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: APE [NVIDIA Jetson AGX Orin APE], device 6: tegra-dlink-6 XBAR-ADMAIF7-6 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: APE [NVIDIA Jetson AGX Orin APE], device 7: tegra-dlink-7 XBAR-ADMAIF8-7 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: APE [NVIDIA Jetson AGX Orin APE], device 8: tegra-dlink-8 XBAR-ADMAIF9-8 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: APE [NVIDIA Jetson AGX Orin APE], device 9: tegra-dlink-9 XBAR-ADMAIF10-9 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: APE [NVIDIA Jetson AGX Orin APE], device 10: tegra-dlink-10 XBAR-ADMAIF11-10 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: APE [NVIDIA Jetson AGX Orin APE], device 11: tegra-dlink-11 XBAR-ADMAIF12-11 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: APE [NVIDIA Jetson AGX Orin APE], device 12: tegra-dlink-12 XBAR-ADMAIF13-12 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: APE [NVIDIA Jetson AGX Orin APE], device 13: tegra-dlink-13 XBAR-ADMAIF14-13 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: APE [NVIDIA Jetson AGX Orin APE], device 14: tegra-dlink-14 XBAR-ADMAIF15-14 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: APE [NVIDIA Jetson AGX Orin APE], device 15: tegra-dlink-15 XBAR-ADMAIF16-15 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: APE [NVIDIA Jetson AGX Orin APE], device 16: tegra-dlink-16 XBAR-ADMAIF17-16 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: APE [NVIDIA Jetson AGX Orin APE], device 17: tegra-dlink-17 XBAR-ADMAIF18-17 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: APE [NVIDIA Jetson AGX Orin APE], device 18: tegra-dlink-18 XBAR-ADMAIF19-18 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: APE [NVIDIA Jetson AGX Orin APE], device 19: tegra-dlink-19 XBAR-ADMAIF20-19 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: APE [NVIDIA Jetson AGX Orin APE], device 20: tegra-dlink-20 ADSP-FE1-20 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: APE [NVIDIA Jetson AGX Orin APE], device 21: tegra-dlink-21 ADSP-FE2-21 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 2: Microphone [USB Microphone], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
USBマイクを接続した後、 card 2: Microphone [USB Microphone], device 0: USB Audio [USB Audio] が追加されました。この先頭の[ ]の中がUSBマイクのデバイス名となります。この例だと USB Microphone がデバイス名です。
このデバイス名はソースコードで必要になるので、[USB Microphone]を覚えておきます。
コンテナの作成
L4T-PyTorchのDockerイメージからコンテナを作成します。事前準備として以下の項目を確認します。
Jetson OrinにUSBマイクを接続してあること
デスクトップにwhisperフォルダがあること
USBマイクのデバイスファイルをマウントするため、USBマイクを接続しないとコンテナの作成に失敗します。
デスクトップにwhisperフォルダがない場合は、作業フォルダの作成の目次に戻ってください。
ここから先は
この記事が気に入ったらチップで応援してみませんか?