やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

ESPnetをインストールする

 ラズパイ4に。

成果物

情報源

まとめ

pip3 install --upgrade pip3 setuptools
pip install --upgrade pip setuptools
sudo apt install -y cmake sox libsndfile1-dev ffmpeg flac libatlas-base-dev
git clone https://github.com/kaldi-asr/kaldi.git
git clone https://github.com/espnet/espnet
cd espnet/tools
ls -s ../../kaldi/ .
./setup_venv.sh $(command -v python3)
. activate_python.sh
pip install numpy
pip install cython
./installers/install_pyopenjtalk.sh
make
. ./activate_python.sh; python3 check_install.py
  • ESPnetはactivate_python.shPythonパッケージ仮想環境を作っている
    • いつもこれを実行して仮想環境をアクティブにしておく必要がある
  • 日本語TTSのためpyopenjtalkを入れた
    • pip install: numpy, cythonが必要だった

インストール状況

[x] python=3.7.3 (default, Jul 25 2020, 13:03:44)  [GCC 8.3.0]

Python modules:
[ ] torch
[ ] chainer
[ ] cupy
[ ] torchaudio
[ ] torch_optimizer
[ ] warpctc_pytorch
[ ] warprnnt_pytorch
[ ] warp_rnnt
[ ] chainer_ctc
[ ] pyopenjtalk
[ ] kenlm
[ ] mmseg
[ ] espnet

Executables:
[ ] sclite
[ ] sph2pipe
[ ] PESQ
[ ] BeamformIt

試行錯誤ログ

pip3 install --upgrade pip3 setuptools
pip install --upgrade pip setuptools
pip3 install espnet
pip3 install torch
pip3 install chainer==6.0.0 cupy==6.0.0    # [Option] If you'll use ESPnet1
pip3 install torchaudio                    # [Option] If you'll use enhancement task
pip3 install torch_optimizer               # [Option] If you'll use additional optimizers in ESPnet2
pip install espnet
pip install torch
pip install chainer==6.0.0 cupy==6.0.0    # [Option] If you'll use ESPnet1
pip install torchaudio                    # [Option] If you'll use enhancement task
pip install torch_optimizer               # [Option] If you'll use additional optimizers in ESPnet2

 エラー。

Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-b7ux0rwr/sentencepiece/

 解決できず。よくみるとフルインストールするなら以下を読めってことだった。こっちをみてみる。

sudo apt install -y cmake sox libsndfile1-dev ffmpeg flac

 日本語TTSするならpyopenjtalkを入れるっぽい。それを加味してインストールするスクリプトは以下だと思われる。

git clone https://github.com/kaldi-asr/kaldi.git
git clone https://github.com/espnet/espnet
cd espnet/tools
ls -s ../../kaldi/ .
./setup_venv.sh $(command -v python3)
. activate_python.sh
./installers/install_pyopenjtalk.sh
make
. ./activate_python.sh; python3 check_install.py

PyOpenJTalk

 PyOpenJTalkのインストールでエラー。mumpyがないと怒られる。

Obtaining file:///tmp/work/espnet/tools/pyopenjtalk
    ERROR: Command errored out with exit status 1:
     command: /tmp/work/espnet/tools/venv/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/work/espnet/tools/pyopenjtalk/setup.py'"'"'; __file__='"'"'/tmp/work/espnet/tools/pyopenjtalk/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-tifgzkmx
         cwd: /tmp/work/espnet/tools/pyopenjtalk/
    Complete output (5 lines):
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/work/espnet/tools/pyopenjtalk/setup.py", line 10, in <module>
        import numpy as np
    ModuleNotFoundError: No module named 'numpy'
    ----------------------------------------
WARNING: Discarding file:///tmp/work/espnet/tools/pyopenjtalk. Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

 いや、あるんですけど?

$ pip3 list | grep numpy
numpy             1.16.2   
$ pip list | grep numpy
numpy             1.16.2   
./setup_venv.sh numpy

 わかったぞ。. activate_python.shスクリプトファイルの中でPythonパッケージ仮想環境をつくっている。venvってやつ。その仮想環境venvの中にnumpyをインストールしないとダメなんだ。

. activate_python.sh
pip install numpy
git clone https://github.com/kaldi-asr/kaldi.git
git clone https://github.com/espnet/espnet
cd espnet/tools
ls -s ../../kaldi/ .
./setup_venv.sh $(command -v python3)
. activate_python.sh
pip install numpy
./installers/install_pyopenjtalk.sh
make
. ./activate_python.sh; python3 check_install.py

 新たなエラーが出た。

...
Obtaining file:///tmp/work/espnet/tools/pyopenjtalk
    ERROR: Command errored out with exit status 1:
     command: /tmp/work/espnet/tools/venv/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/work/espnet/tools/pyopenjtalk/setup.py'"'"'; __file__='"'"'/tmp/work/espnet/tools/pyopenjtalk/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-u88lzkkx
         cwd: /tmp/work/espnet/tools/pyopenjtalk/
    Complete output (41 lines):
    Traceback (most recent call last):
      File "/tmp/work/espnet/tools/venv/lib/python3.7/site-packages/numpy/core/__init__.py", line 22, in <module>
        from . import multiarray
      File "/tmp/work/espnet/tools/venv/lib/python3.7/site-packages/numpy/core/multiarray.py", line 12, in <module>
        from . import overrides
      File "/tmp/work/espnet/tools/venv/lib/python3.7/site-packages/numpy/core/overrides.py", line 7, in <module>
        from numpy.core._multiarray_umath import (
    ImportError: libf77blas.so.3: cannot open shared object file: No such file or directory
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/work/espnet/tools/pyopenjtalk/setup.py", line 10, in <module>
        import numpy as np
      File "/tmp/work/espnet/tools/venv/lib/python3.7/site-packages/numpy/__init__.py", line 145, in <module>
        from . import core
      File "/tmp/work/espnet/tools/venv/lib/python3.7/site-packages/numpy/core/__init__.py", line 48, in <module>
        raise ImportError(msg)
    ImportError:
    
    IMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!
    
    Importing the numpy C-extensions failed. This error can happen for
    many reasons, often due to issues with your setup or how NumPy was
    installed.
    
    We have compiled some common reasons and troubleshooting tips at:
    
        https://numpy.org/devdocs/user/troubleshooting-importerror.html
    
    Please note and check the following:
    
      * The Python version is: Python3.7 from "/tmp/work/espnet/tools/venv/bin/python3"
      * The NumPy version is: "1.20.0"
    
    and make sure that they are the versions you expect.
    Please carefully study the documentation linked above for further help.
    
    Original error was: libf77blas.so.3: cannot open shared object file: No such file or directory
    
    ----------------------------------------
WARNING: Discarding file:///tmp/work/espnet/tools/pyopenjtalk. Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

 何かが足りないっぽい。

アナコンダは使えなかった

 これはアナコンダってのを入れたほうが早いかもな。

 新しい端末のタブを起動。以下コマンドを入力する。

cd /tmp/work/espnet/tools
./setup_anaconda.sh anaconda espnet 3.8
...
miniconda.sh: 行 412: /tmp/work/espnet/tools/anaconda/conda.exe: バイナリファイルを実行できません: 実行形式エラー
miniconda.sh: 行 414: /tmp/work/espnet/tools/anaconda/conda.exe: バイナリファイルを実行できません: 実行形式エラー

 exeって、まさかWindowsでしか使えないの? クソすぎ。ダメじゃん。

libf77blas.so.3

 numpyが使うlibf77blas.so.3というのがないってさ。libf77blas.so.3ってなんぞ?

        from . import multiarray
      File "/tmp/work/espnet/tools/venv/lib/python3.7/site-packages/numpy/core/multiarray.py", line 12, in <module>
        from . import overrides
      File "/tmp/work/espnet/tools/venv/lib/python3.7/site-packages/numpy/core/overrides.py", line 7, in <module>
        from numpy.core._multiarray_umath import (
    ImportError: libf77blas.so.3: cannot open shared object file: No such file or directory

 ググった。

 以下インストールすればいいっぽい。

sudo apt install libatlas-base-dev

 再び

./installers/install_pyopenjtalk.sh

 また別のエラー。

Obtaining file:///tmp/work/espnet/tools/pyopenjtalk
    ERROR: Command errored out with exit status 1:
     command: /tmp/work/espnet/tools/venv/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/work/espnet/tools/pyopenjtalk/setup.py'"'"'; __file__='"'"'/tmp/work/espnet/tools/pyopenjtalk/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-0_tnrln8
         cwd: /tmp/work/espnet/tools/pyopenjtalk/
    Complete output (5 lines):
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/work/espnet/tools/pyopenjtalk/setup.py", line 52, in <module>
        raise RuntimeError("Cython is required to generate C++ code")
    RuntimeError: Cython is required to generate C++ code
    ----------------------------------------
WARNING: Discarding file:///tmp/work/espnet/tools/pyopenjtalk. Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

 エラー内容を和訳すると「C++コードを生成するにはCPythonが必要です」ってことらしい。

 よくわからんけどCPythonってのはPythonのパッケージ。以下でインストールするっぽい。venv内に入れる。

pip install cython

 再び

./installers/install_pyopenjtalk.sh

 できた!

Successfully installed pyopenjtalk six-1.15.0

ESPnetのビルド

 やっと続きができる。

make

インストール確認

. ./activate_python.sh; python3 check_install.py
[x] python=3.7.3 (default, Jul 25 2020, 13:03:44)  [GCC 8.3.0]

Python modules:
[ ] torch
[ ] chainer
[ ] cupy
[ ] torchaudio
[ ] torch_optimizer
[ ] warpctc_pytorch
[ ] warprnnt_pytorch
[ ] warp_rnnt
[ ] chainer_ctc
[ ] pyopenjtalk
[ ] kenlm
[ ] mmseg
[ ] espnet

Executables:
[ ] sclite
[ ] sph2pipe
[ ] PESQ
[ ] BeamformIt

INFO:
Use 'installers/install_warp-ctc.sh' to install warpctc_pytorch
Use 'installers/install_warp-transducer.sh' to install warprnnt_pytorch
Use 'installers/install_warp-rnnt.sh' to install warp_rnnt
Use 'installers/install_chainer_ctc.sh' to install chainer_ctc
Use 'installers/install_pyopenjtalk.sh' to install pyopenjtalk
Use 'installers/install_kenlm.sh' to install kenlm
Use 'installers/install_py3mmseg.sh' to install mmseg
Use 'installers/install_sctk.sh' to install sclite
Use 'installers/install_sph2pipe.sh' to install sph2pipe
Use 'installers/install_pesq.sh' to install PESQ
Use 'installers/install_beamformit.sh' to install BeamformIt

 あれ、チェックついてないじゃん。これほんとにインストールされてんの? 一応、INFOに従って以下コマンドをやってみたけどかわらず。

./installers/install_pyopenjtalk.sh

 以下の[ ][x]になるのかと思っていたんだが。ていうか、torchとかも必要じゃないの?

[ ] pyopenjtalk

 ダメだわからん。

 ESPnetのインストールはできたと思う。足りないものばかりっぽいが。とにかくここまでまとめよう。

まとめ

sudo apt install -y cmake sox libsndfile1-dev ffmpeg flac libatlas-base-dev
git clone https://github.com/kaldi-asr/kaldi.git
git clone https://github.com/espnet/espnet
cd espnet/tools
ls -s ../../kaldi/ .
./setup_venv.sh $(command -v python3)
. activate_python.sh
pip install numpy
pip install cython
./installers/install_pyopenjtalk.sh
make
. ./activate_python.sh; python3 check_install.py
  • ESPnetはactivate_python.shPythonパッケージ仮想環境を作っているっぽい
    • いつもこれを実行して仮想環境をアクティブにしておく必要がある
  • 日本語TTSのためpyopenjtalkを入れた
    • pip install: numpy, cythonが必要だった

所感

 で? だから何? これで何ができるの? どうやって使うの? というかインストール完了してなくない? ぜんぜん足りてないっぽく見えるんですけど。

 あらゆる疑問をすっとばして次へ進む。

対象環境

$ uname -a
Linux raspberrypi 5.4.83-v7l+ #1379 SMP Mon Dec 14 13:11:54 GMT 2020 armv7l GNU/Linux