HOME
  Security
   Software
    Hardware
  
FPGA
  CPU
   Android
    Raspberry Pi
  
nLite
  Xcode
   etc.
    ALL
  
LINK
BACK
 

[NEW] 2022/11/26

NVIDIA Jetsonで音声認識の Whisperを動かす方法 NVIDIA Jetsonで音声認識の Whisperを動かす方法

(Jetson Xavier NXの JetPack 5.0.1に Whisperをインストールする!)

Tags: [Raspberry Pi], [電子工作], [ディープラーニング]




● Jetson Nano、Jetson Xavier NXの便利スクリプト

2020/07/03
【2020年版】NVIDIA Jetson Nano、Jetson Xavier NXの便利スクリプト
【2020年版】NVIDIA Jetson Nano、Jetson Xavier NXの便利スクリプト

  Jetsonの面倒な初期設定やミドルウェアのインストールを bashスクリプトの実行だけで簡単にできます


● NVIDIA Jetsonで音声認識の Whisperを動かす方法

Whisper

 Jetson Xavier NXの JetPack 5.0.1に Whisperをインストールする!

 PyTorchが必要なので下記の手順でインストールします。

[NEW] 2022/11/26
NVIDIA Jetson JetPack 5.0.1に PyTorchを NVIDIA公式の手順でインストールする方法
NVIDIA Jetson JetPack 5.0.1に PyTorchを NVIDIA公式の手順でインストールする方法

  Jetson Xavier NXの JetPack 5.0.1に PyTorchをインストールする!

● NVIDIA Jetsonで音声認識の Whisperをインストールする方法

# Install Whisper
pip install git+https://github.com/openai/whisper.git

pip install --upgrade --no-deps --force-reinstall git+https://github.com/openai/whisper.git

# Install FFmpeg
# on Ubuntu or Debian
sudo apt update && sudo apt install -y ffmpeg
# Setting up ffmpeg (7:4.2.7-0ubuntu0.1) ...

# ERROR: launchpadlib 1.10.13 requires testresources, which is not installed.
pip install launchpadlib=='1.10.13'

pip install setuptools-rust

sudo reboot

● NVIDIA Jetsonで音声認識の Whisperを動かす方法

雨ニモマケズ
 著者:宮沢 賢治 読み手:山城 隆盛 時間:2分11秒

wget http://aozoraroudoku.jp/voice/mp3/rd700.mp3

python3
import whisper
model = whisper.load_model("base")
result = model.transcribe("rd700.mp3")
print(result["text"])

$ python3
Python 3.8.10 (default, Jun 22 2022, 20:18:18)
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import whisper
>>> model = whisper.load_model("base")
100%|███████████████████████████████████████| 139M/139M [00:16<00:00, 8.65MiB/s]
>>> result = model.transcribe("rd700.mp3")
>>> print(result["text"])
宮沢県時作 雨にも負けず雨にも負けず 風にも負けず行きにも 夏の暑さにも負ける丈夫な体を持ちよくはなく 消していからつ いつも静かに笑っている一日に県前4号と 見外少しの野菜を食べあらゆることを 自分を感情に入れずによく見聞きしわかり そして忘れずのはらの末の流しの影の 小さな火焼きの小屋にいて東に病気の子どもあれば 行って幹病してやり西に疲れた母あれば 行ってその夢の束を追い南に死にそうな人あれば 行って怖がらなくてもいいといい来たに憲会や訴訟があれば 積まらないからやめるといい独りの時は涙を流し 寒さの夏はおろおろあるきみんなに手首を問いを張れ 褒められもせず国もされず そういうものに私はなりたい南無変業を募察 南上行募察 南多方におらい南無名法連撃 南射仮無にぶつ 南上行募察南安留行募察

● CUDAと CPUの比較

CUDACPU
tiny0m30.653s1m58.965s
base0m37.521s4m9.435s
small1m19.058s10m21.408s
mediumKilled未計測

● CUDAを使用の場合

$ time whisper rd700.mp3 --language Japanese --model tiny
[00:00.000 --> 00:05.000] みやざわけんじさく
[00:05.000 --> 00:10.000] 雨にも負けず
[00:10.000 --> 00:12.000] 雨にも負けず
[00:12.000 --> 00:15.000] 風にも負けず
[00:15.000 --> 00:17.000] 行きにも
[00:17.000 --> 00:19.000] 夏のあつさにも負ける
[00:19.000 --> 00:22.000] ジョーブな体を持ち
[00:22.000 --> 00:24.000] よくはなく
[00:24.000 --> 00:26.000] 決していからず
[00:26.000 --> 00:29.000] いつも静かに笑っている
[00:29.000 --> 00:34.000] 一日に県前4号と
[00:34.000 --> 00:37.000] ミソト少しの野菜を食べ
[00:37.000 --> 00:39.000] あらゆることを
[00:39.000 --> 00:42.000] 自分を感情に入れずに
[00:42.000 --> 00:44.000] よく見聞きし分かり
[00:44.000 --> 00:47.000] そして忘れず
[00:47.000 --> 00:49.000] ノファラの
[00:49.000 --> 00:51.000] 松の速しのかげの
[00:51.000 --> 00:54.000] 小さな怪物の声にいて
[00:54.000 --> 00:58.000] 東に病気の子供あれば
[00:58.000 --> 01:01.000] 行って完美をしてやり
[01:01.000 --> 01:04.000] 西に疲れたハハあれば
[01:04.000 --> 01:08.000] 行ってその夢のたばを追い
[01:08.000 --> 01:12.000] みなみに死にそうな人あれば
[01:12.000 --> 01:16.000] 行って怖がらなくてもいいといい
[01:16.000 --> 01:19.000] きたに県開や総症があれば
[01:19.000 --> 01:23.000] つまらないからやめるといい
[01:23.000 --> 01:27.000] ひどりの時は涙を流し
[01:27.000 --> 01:31.000] さむさの夏はオロオロあるき
[01:31.000 --> 01:35.000] みんなに敵の棒と呼ばれ
[01:35.000 --> 01:37.000] ほめられもせず
[01:37.000 --> 01:39.000] 区にもされず
[01:39.000 --> 01:41.000] そういうものに
[01:41.000 --> 01:45.000] 私はなりたい
[01:45.000 --> 01:48.000] 何も無変業ぼさつ
[01:48.000 --> 01:52.000] 何も状業ぼさつ
[01:52.000 --> 01:59.000] なむたほうにおらい
[01:59.000 --> 02:02.000] 何も妙法連逆を
[02:02.000 --> 02:06.000] 何も射かむにぶつ
[02:06.000 --> 02:27.000] 何も状業ぼさつ

real    0m30.653s
user    0m28.838s
sys     0m12.489s

$ time whisper rd700.mp3 --language Japanese --model base
[00:00.000 --> 00:10.480] 宮沢県時作 雨にも負けず
[00:10.480 --> 00:19.400] 雨にも負けず 風にも負けず 行きにも夏の暑さにも負ける
[00:19.400 --> 00:31.080] 丈夫な体を持ち 良くはなく決していからつ いつも静かに笑っている
[00:31.080 --> 00:37.540] 一日に県前4号と 見そと少しの野菜を食べ
[00:37.540 --> 00:47.880] あらゆることを自分を感情に入れずに 良く見聞きし分かりそして忘れず
[00:47.880 --> 00:55.060] のはらの末の流しの影の 小さな雷武器の小屋に行って
[00:55.060 --> 01:01.600] 日がしに病気の子どもあれば 行って完美をしてやり
[01:01.600 --> 01:08.480] 西に疲れた母あれば 行ってその夢の束を追い
[01:08.480 --> 01:16.340] 南に死にそうな人あれば 行って怖がらなくてもいいといい
[01:16.340 --> 01:24.080] 来たに憲会や訴訟があれば つまらないからやめるといい
[01:24.080 --> 01:31.160] ひどりの時は涙を流し 寒さの夏はおろおろ歩き
[01:31.160 --> 01:36.780] みんなに手くのぼうと呼ばれ 褒められもせず
[01:36.780 --> 01:45.320] 国もされず そういうものに私はなりたい
[01:45.320 --> 01:55.000] 南無編業募殺 南上行募殺 南多方におらい
[01:55.000 --> 02:05.640] 南無描法連撃 南尺無にぶつ 南上行募殺
[02:05.640 --> 02:16.160] 南安留行募殺

real    0m37.521s
user    0m30.244s
sys     0m13.167s

$ time whisper rd700.mp3 --language Japanese --model small
[00:00.000 --> 00:29.000] 宮沢賢治策 雨にも負けず 雨にも負けず 風にも負けず 雪にも 夏の暑さにも負けぬ 丈夫な体を持ち 欲はなく 決していからず いつも静かに笑っている
[00:29.000 --> 00:47.000] 一日に玄米四号と味噌と少しの 野菜を食べ あらゆることを自分を感情に入れずに よく見聞きしわかり そして忘れず
[00:47.000 --> 01:08.000] 野原の松の林の影の 小さな飼いぶきの小屋にいて 東に病気の子供あれば 行って勘病してやり 西に疲れた母あれば 行ってその胃の束を追い
[01:08.000 --> 01:16.000] 南に死にそうな人あれば 行って怖がらなくてもいいといい
[01:16.000 --> 01:23.000] 北に喧嘩や訴訟があれば つまらないからやめろといい
[01:23.000 --> 01:44.000] ひどりの時は涙を流し 寒さの夏はおろおろ歩き みんなにテクノボウと呼ばれ 褒められもせず 苦にもされず そういうものに私はなりたい
[01:44.000 --> 02:10.000] 南無変行誤殺 南上行誤殺 南多方御来 南妙法連下郷 南しゃかむにぶつ 南上行誤殺 南安流行誤殺

real    1m19.058s
user    0m43.111s
sys     0m14.470s

$ time whisper rd700.mp3 --language Japanese --model medium
Killed

● CPUを使用の場合


$ sudo nvpmodel -m 6
$ sudo nvpmodel -q
NV Power Mode: MODE_20W_2CORE
6

$ time whisper rd700.mp3 --language Japanese --model tiny --fp16 False
[00:00.000 --> 00:05.000] みやざわけんじさく
[00:05.000 --> 00:10.000] 雨にも負けず
[00:10.000 --> 00:12.000] 雨にも負けず
[00:12.000 --> 00:15.000] 風にも負けず
[00:15.000 --> 00:17.000] 行きにも
[00:17.000 --> 00:19.000] 夏のあつさにも負ける
[00:19.000 --> 00:22.000] ジョーブな体を持ち
[00:22.000 --> 00:24.000] よくはなく
[00:24.000 --> 00:26.000] 決していからず
[00:26.000 --> 00:29.000] いつも静かに笑っている
[00:29.000 --> 00:34.000] 一日に県前4号と
[00:34.000 --> 00:37.000] ミソト少しの野菜を食べ
[00:37.000 --> 00:39.000] あらゆることを
[00:39.000 --> 00:42.000] 自分を感情に入れずに
[00:42.000 --> 00:44.000] よく見聞きし分かり
[00:44.000 --> 00:47.000] そして忘れず
[00:47.000 --> 00:49.000] ノハラの
[00:49.000 --> 00:51.000] 松の速しのかげの
[00:51.000 --> 00:54.000] 小さな怪物の声にいて
[00:54.000 --> 00:58.000] 東に病気の子どもあれば
[00:58.000 --> 01:01.000] 行って完美をしてやり
[01:01.000 --> 01:04.000] 西に疲れたハハあれば
[01:04.000 --> 01:08.000] 行ってその夢のたばを追い
[01:08.000 --> 01:12.000] みなみに死にそうな人あれば
[01:12.000 --> 01:16.000] 行って怖がらなくてもいいといい
[01:16.000 --> 01:19.000] きたに県開や総証があれば
[01:19.000 --> 01:23.000] つまらないからやめるといい
[01:23.000 --> 01:27.000] ひどりの時は涙を流し
[01:27.000 --> 01:31.000] さむさの夏はオロオロあるき
[01:31.000 --> 01:35.000] みんなに敵の棒と呼ばれ
[01:35.000 --> 01:37.000] ほめられもせず
[01:37.000 --> 01:39.000] 区にもされず
[01:39.000 --> 01:41.000] そういうものに
[01:41.000 --> 01:45.000] 私はなりたい
[01:45.000 --> 01:48.000] 何も無変業ぼさつ
[01:48.000 --> 01:52.000] 何も状業ぼさつ
[01:52.000 --> 01:59.000] なむたほうにおらい
[01:59.000 --> 02:02.000] 何も妙法連逆を
[02:02.000 --> 02:06.000] 何も射かむにぶつ
[02:06.000 --> 02:27.000] 何も状業ぼさつ

real    2m46.431s
user    3m33.102s
sys     0m7.005s

$ time whisper rd700.mp3 --language Japanese --model base --fp16 False
[00:00.000 --> 00:10.480] 宮沢県時作 雨にも負けず
[00:10.480 --> 00:19.240] 雨にも負けず 風にも負けず 雪にも夏の暑さにも負ける
[00:19.240 --> 00:30.920] 丈夫な体を持ちよくはなく 消していからついつも静かに笑っている
[00:30.920 --> 00:37.440] 一日に県前4号と 見そと少しの野菜を食べ
[00:37.440 --> 00:47.800] あらゆることを自分を感情に入れずに よく見聞きし分かりそして忘れず
[00:47.800 --> 00:54.980] のはらの末の流しの影の 小さな雷武器の小屋に行って
[00:54.980 --> 01:01.520] 東に病気の子どもあれば 行って完美をしてやり
[01:01.520 --> 01:08.440] 西に疲れた母あれば 行ってその夢の束を追い
[01:08.440 --> 01:16.280] 南に死にそうな人あれば 行って怖がらなくてもいいといい
[01:16.280 --> 01:23.880] 来たに憲会や訴訟があれば つまらないからやめるといい
[01:23.880 --> 01:31.080] ひどりの時は涙を流し 寒さの夏はおろおろ歩き
[01:31.080 --> 01:36.680] みんなに手くの棒と呼ばれ 褒められもせず
[01:36.680 --> 01:45.120] 国もされず そういうものに私はなりたい
[01:45.120 --> 01:54.840] 南無編業募殺 南上行募殺 南多方におらい
[01:54.840 --> 02:05.520] 南無描法連撃 南尺無にぶつ 南上行募殺
[02:05.520 --> 02:16.240] 南安留行募殺

real    4m17.863s
user    7m27.578s
sys     0m7.459s

$ time whisper rd700.mp3 --language Japanese --model small --fp16 False
[00:00.000 --> 00:29.000] 宮沢賢治策 雨にも負けず 雨にも負けず 風にも負けず 雪にも 夏の暑さにも負けぬ 丈夫な体を持ち 欲はなく 決していからず いつも静かに笑っている
[00:29.000 --> 00:47.000] 一日に玄米四号と味噌と少しの 野菜を食べ あらゆることを自分を感情に入れずに よく見聞きしわかり そして忘れず
[00:47.000 --> 01:08.000] 野原の松の林の影の 小さな飼いぶきの小屋にいて 東に病気の子供あれば 行って勘病してやり 西に疲れた母あれば 行ってその胃の束を追い
[01:08.000 --> 01:16.000] 南に死にそうな人あれば 行って怖がらなくてもいいといい
[01:16.000 --> 01:23.000] 北に喧嘩や訴訟があれば つまらないからやめろといい
[01:23.000 --> 01:44.000] ひどりの時は涙を流し 寒さの夏はおろおろ歩き みんなにテクノボウと呼ばれ 褒められもせず 苦にもされず そういうものに私はなりたい
[01:44.000 --> 02:10.000] 南無変行誤殺 南上行誤殺 南多方御来 南妙法連下郷 南しゃかむにぶつ 南上行誤殺 南安流行誤殺

real    10m47.443s
user    18m58.883s
sys     0m16.692s

$ whisper --help
usage: whisper [-h] [--model {tiny.en,tiny,base.en,base,small.en,small,medium.en,medium,large}]
               [--model_dir MODEL_DIR] [--device DEVICE] [--output_dir OUTPUT_DIR] [--verbose VERBOSE]
               [--task {transcribe,translate}]
               [--language {af,am,ar,as,az,ba,be,bg,bn,bo,br,bs,ca,cs,cy,da,de,el,en,es,et,eu,fa,fi,fo,fr,gl,gu,ha,haw,hi,hr,ht,hu,hy,id,is,it,iw,ja,jw,ka,kk,km,kn,ko,la,lb,ln,lo,lt,lv,mg,mi,mk,ml,mn,mr,ms,mt,my,ne,nl,nn,no,oc,pa,pl,ps,pt,ro,ru,sa,sd,si,sk,sl,sn,so,sq,sr,su,sv,sw,ta,te,tg,th,tk,tl,tr,tt,uk,ur,uz,vi,yi,yo,zh,Afrikaans,Albanian,Amharic,Arabic,Armenian,Assamese,Azerbaijani,Bashkir,Basque,Belarusian,Bengali,Bosnian,Breton,Bulgarian,Burmese,Castilian,Catalan,Chinese,Croatian,Czech,Danish,Dutch,English,Estonian,Faroese,Finnish,Flemish,French,Galician,Georgian,German,Greek,Gujarati,Haitian,Haitian Creole,Hausa,Hawaiian,Hebrew,Hindi,Hungarian,Icelandic,Indonesian,Italian,Japanese,Javanese,Kannada,Kazakh,Khmer,Korean,Lao,Latin,Latvian,Letzeburgesch,Lingala,Lithuanian,Luxembourgish,Macedonian,Malagasy,Malay,Malayalam,Maltese,Maori,Marathi,Moldavian,Moldovan,Mongolian,Myanmar,Nepali,Norwegian,Nynorsk,Occitan,Panjabi,Pashto,Persian,Polish,Portuguese,Punjabi,Pushto,Romanian,Russian,Sanskrit,Serbian,Shona,Sindhi,Sinhala,Sinhalese,Slovak,Slovenian,Somali,Spanish,Sundanese,Swahili,Swedish,Tagalog,Tajik,Tamil,Tatar,Telugu,Thai,Tibetan,Turkish,Turkmen,Ukrainian,Urdu,Uzbek,Valencian,Vietnamese,Welsh,Yiddish,Yoruba}]
               [--temperature TEMPERATURE] [--best_of BEST_OF] [--beam_size BEAM_SIZE] [--patience PATIENCE]
               [--length_penalty LENGTH_PENALTY] [--suppress_tokens SUPPRESS_TOKENS]
               [--initial_prompt INITIAL_PROMPT] [--condition_on_previous_text CONDITION_ON_PREVIOUS_TEXT]
               [--fp16 FP16] [--temperature_increment_on_fallback TEMPERATURE_INCREMENT_ON_FALLBACK]
               [--compression_ratio_threshold COMPRESSION_RATIO_THRESHOLD]
               [--logprob_threshold LOGPROB_THRESHOLD] [--no_speech_threshold NO_SPEECH_THRESHOLD]
               [--threads THREADS]
               audio [audio ...]

positional arguments:
  audio                 audio file(s) to transcribe

optional arguments:
  -h, --help            show this help message and exit
  --model {tiny.en,tiny,base.en,base,small.en,small,medium.en,medium,large}
                        name of the Whisper model to use (default: small)
  --model_dir MODEL_DIR
                        the path to save model files; uses ~/.cache/whisper by default (default: None)
  --device DEVICE       device to use for PyTorch inference (default: cpu)
  --output_dir OUTPUT_DIR, -o OUTPUT_DIR
                        directory to save the outputs (default: .)
  --verbose VERBOSE     whether to print out the progress and debug messages (default: True)
  --task {transcribe,translate}
                        whether to perform X->X speech recognition ('transcribe') or X->English translation
                        ('translate') (default: transcribe)
  --language {af,am,ar,as,az,ba,be,bg,bn,bo,br,bs,ca,cs,cy,da,de,el,en,es,et,eu,fa,fi,fo,fr,gl,gu,ha,haw,hi,hr,ht,hu,hy,id,is,it,iw,ja,jw,ka,kk,km,kn,ko,la,lb,ln,lo,lt,lv,mg,mi,mk,ml,mn,mr,ms,mt,my,ne,nl,nn,no,oc,pa,pl,ps,pt,ro,ru,sa,sd,si,sk,sl,sn,so,sq,sr,su,sv,sw,ta,te,tg,th,tk,tl,tr,tt,uk,ur,uz,vi,yi,yo,zh,Afrikaans,Albanian,Amharic,Arabic,Armenian,Assamese,Azerbaijani,Bashkir,Basque,Belarusian,Bengali,Bosnian,Breton,Bulgarian,Burmese,Castilian,Catalan,Chinese,Croatian,Czech,Danish,Dutch,English,Estonian,Faroese,Finnish,Flemish,French,Galician,Georgian,German,Greek,Gujarati,Haitian,Haitian Creole,Hausa,Hawaiian,Hebrew,Hindi,Hungarian,Icelandic,Indonesian,Italian,Japanese,Javanese,Kannada,Kazakh,Khmer,Korean,Lao,Latin,Latvian,Letzeburgesch,Lingala,Lithuanian,Luxembourgish,Macedonian,Malagasy,Malay,Malayalam,Maltese,Maori,Marathi,Moldavian,Moldovan,Mongolian,Myanmar,Nepali,Norwegian,Nynorsk,Occitan,Panjabi,Pashto,Persian,Polish,Portuguese,Punjabi,Pushto,Romanian,Russian,Sanskrit,Serbian,Shona,Sindhi,Sinhala,Sinhalese,Slovak,Slovenian,Somali,Spanish,Sundanese,Swahili,Swedish,Tagalog,Tajik,Tamil,Tatar,Telugu,Thai,Tibetan,Turkish,Turkmen,Ukrainian,Urdu,Uzbek,Valencian,Vietnamese,Welsh,Yiddish,Yoruba}
                        language spoken in the audio, specify None to perform language detection (default:
                        None)
  --temperature TEMPERATURE
                        temperature to use for sampling (default: 0)
  --best_of BEST_OF     number of candidates when sampling with non-zero temperature (default: 5)
  --beam_size BEAM_SIZE
                        number of beams in beam search, only applicable when temperature is zero (default: 5)
  --patience PATIENCE   optional patience value to use in beam decoding, as in
                        https://arxiv.org/abs/2204.05424, the default (1.0) is equivalent to conventional
                        beam search (default: None)
  --length_penalty LENGTH_PENALTY
                        optional token length penalty coefficient (alpha) as in
                        https://arxiv.org/abs/1609.08144, uses simple length normalization by default
                        (default: None)
  --suppress_tokens SUPPRESS_TOKENS
                        comma-separated list of token ids to suppress during sampling; '-1' will suppress
                        most special characters except common punctuations (default: -1)
  --initial_prompt INITIAL_PROMPT
                        optional text to provide as a prompt for the first window. (default: None)
  --condition_on_previous_text CONDITION_ON_PREVIOUS_TEXT
                        if True, provide the previous output of the model as a prompt for the next window;
                        disabling may make the text inconsistent across windows, but the model becomes less
                        prone to getting stuck in a failure loop (default: True)
  --fp16 FP16           whether to perform inference in fp16; True by default (default: True)
  --temperature_increment_on_fallback TEMPERATURE_INCREMENT_ON_FALLBACK
                        temperature to increase when falling back when the decoding fails to meet either of
                        the thresholds below (default: 0.2)
  --compression_ratio_threshold COMPRESSION_RATIO_THRESHOLD
                        if the gzip compression ratio is higher than this value, treat the decoding as failed
                        (default: 2.4)
  --logprob_threshold LOGPROB_THRESHOLD
                        if the average log probability is lower than this value, treat the decoding as failed
                        (default: -1.0)
  --no_speech_threshold NO_SPEECH_THRESHOLD
                        if the probability of the <|nospeech|> token is higher than this value AND the
                        decoding has failed due to `logprob_threshold`, consider the segment as silence
                        (default: 0.6)
  --threads THREADS     number of threads used by torch for CPU inference; supercedes
                        MKL_NUM_THREADS/OMP_NUM_THREADS (default: 0)



Tags: [Raspberry Pi], [電子工作], [ディープラーニング]



[HOME] | [BACK]
リンクフリー(連絡不要、ただしトップページ以外は Web構成の変更で移動する場合があります)
Copyright (c) 2022 FREE WING,Y.Sakamoto
Powered by 猫屋敷工房 & HTML Generator

http://www.neko.ne.jp/~freewing/raspberry_pi/nvidia_jetson_install_whisper_speech_recognition/