UbuntuマシンにESPnet2(ESPnet)をインストールした際の備忘録です。一度インストールしてしまえば新しい環境でも簡単にインストールできますが最初だと結構躓くこともあると思います。Qiitaは初投稿なので読みにくい点などあるでしょうがご了承ください。
ちなみに当方がインストールを行った際の環境は
- Ubuntu18.04
- GeForce RTX3090
- CUDA 11.1
- cuDNN 8.0
- PyTorch 1.8.1
- ESPnet 0.9.9
です。Ubuntu20.04、RTX2080Ti、PyTorch1.7.1などでもこの通りの方法で成功するのを確認しています。ESPnet0.9.8でも確認していますが0.9.9で学習の高速化が実装されているので新しい方が良いです。
ESPnet2とは?
ESPnet2はEnd-to-Endの音声処理ツールキットです。音声認識や音声合成など様々なタスクを簡単に、高性能で行うことができます。無印のESPnetと違い、Kaldiなしで実行可能です。
ESPnet2については開発者の方が詳しく書いてくださっています。
ESPnet2のインストール
ESPnet2はESPnetの中に含まれており、ESPnetをインストールすることでESPnet2を使うことができます。
インストール方法について、公式のドキュメントもあります。
しかし、これだけに従ってインストールするのは不慣れな場合難しいと思います。ここでは公式ドキュメントを元にもうちょっとわかりやすく(?)書いていきます。
必要なツール、ライブラリのインストール
公式ドキュメントに書いてあるように、必要なツールをインストールしていきます。
$ sudo apt-get install cmake
$ sudo apt-get install sox
$ sudo apt-get install libsndfile1-dev
$ sudo apt-get install ffmpeg
$ sudo apt-get install flac
また、日本語を扱う場合nkfも入れるとよいでしょう。
$ sudo apt-get install nkf
CUDAが入っていない場合CUDAをインストールします。入っていたとしてもバージョンを合わせないとインストールできません。その場合インストールしなおしてください。
nvidia-smi
で表示されるCUDAのバージョンは単にドライバに適したCUDAのバージョンです。これは実際に入っているCUDAのバージョンと異なることもありますし、CUDAが入っていなくても表示されます。nvcc -V
で出てくるのが正しいCUDAのバージョンです。
ESPnet2をAnaconda環境で使う場合ここにあるPyTorchのどれかをインストールするようになっています。
PyTorch、CUDA、cuDNNのバージョンを必ず合わせましょう。下位互換性のため、CUDA11.0対応のPyTorchはCUDA11.1でも入れることができます(この場合インストールの際、指定するバージョンは11.0にします。)。
CUDAはNVIDIAの公式サイトからダウンロードできます。
環境を選んでいくとインストールするためのコマンドが出てきます。私はrunfileが好きです。
必ず、忘れずPATHも通しましょう。nvcc -V
コマンドを実行できない状態だと、せっかくGPUがあってもCPU only版のPyTorchがインストールされてしまいます。
次に、cuDNNを入れましょう。cuDNNは
cuDNN Archive | NVIDIA Developer
からダウンロードできます。CUDA、PyTorchのバージョンにあったものを入れましょう。PyTorch1.8.1の場合8.0.xか7.6.xです。Runtime LibraryとDeveloper Libraryをインストールしてください。
python3
コマンドではPythonが実行されるのにpython
コマンドでは実行できない場合Python2がインストールされていません。ESPnetは一部でPython2も使用しているようなのでPython2もインストールしましょう。
$ sudo apt install python2
これで準備は完了しました。GPUを複数使う場合はNCCLなども適宜インストールしてください。
ESPnetのインストール
いよいよESPnetをインストールします。まずは使いたいディレクトリの中でGitHubからクローンします。クローン出来たらespnet/tools
に移動してください。
$ git clone https://github.com/espnet/espnet
$ cd espnet/tools
無印のESPnetの場合ここでKaldiをインストールしますがESPnet2では必要ありません。Pythonの環境を作っていきます。もともと入っているPythonやAnacondaを使う方法もありますがESPnetの中のAnacondaを使う方法が一番簡単です。もし他のPythonを使う場合ターミナルなど、いくつかデフォルトで入っているPython3で動き、それでしか動かないものがあるので気を付けてください。
$ ./setup_anaconda.sh anaconda espnet 3.8
この一行でOKです。さて、いよいよインストールします。
$ make TH_VERSION=1.8.1 CUDA_VERSION=11.1
ここは自分の使うバージョンにしましょう。このオプションを元にここからPyTorchを選んでいます。ちなみにGPUがRTX30シリーズなど新しい場合PyTorchのバージョンは1.7.1以上にする必要があります。特に理由がなければ新しい方が良いと個人的には思います。
”ft2build.h”がないというエラーが出てインストールに失敗する場合があります。その場合は
$ sudo apt-get install libfreetype6 libfreetype6-dev
しましょう。これでmakeからやり直せばエラーが出なくなるはずです。
PyTorchのインストールは長いです。気長に待ちましょう。
ESPnet2の動作確認
ちゃんとインストールできているかどうか簡単なレシピを実行して確認しましょう。espnet/egs2
の中にESPnet2のレシピが入っています。an4やJSUTなんかが簡単だと思います。実行したいレシピのディレクトリの中にasr1
(音声認識)やtts1
(音声合成)などタスクごとのディレクトリがあります。好きなタスクのディレクトリの中で
$ ./run.sh
を実行します。うまく動きましたか? お疲れ様です。うまく動いた場合、ここで完了です。あとは好きなレシピを実行したり、レシピを自作したり、使っていきましょう。
ESPnet2の日本語版チュートリアルは
です。
ft2build.hのエラーに関しては、こちらのサイトを参考に致しました。
Ubuntu 12.04にpipでmatplotlibを入れようとしたら詰まった件 - ふゆみけ
補足(日本語TTSの場合)
pyopenjtalkが必要です。
$ pip install pyopenjtalk
でインストールしましょう。pip
です。