【動物会話】Keras(Tensorflow), Opencv, pyaudio, ffmpeg, moviepyなどでCPU環境構築♬

環境構築だけで記事にしておきます。

###CPU環境構築
今までは、将棋AIのアプリ開発環境からの延長でやってきたのであまり意識していなかったが、それなりに載せないといけないものがあった。
今回、並べてみると主要なものだけでも以下のものを使っています。
・SurfacePro3、windows10
に以下を入れようとするといくつか躓きました。

・Anaconda3 with python3
・Visual Studio 2015 Community
・tensorflow
・keras
・opencv-python
・ffmpeg
・pyaudio
・moviepy

ということで、まずpythonやVisual Studio 2015 Community のインストールは以下を参考にしました。
【参考】
・①[【将棋AI】「将棋AIで学ぶディープラーニング」を読む♪～Chainer環境構築](https://qiita.com/MuAuan/items/3fc4dba323446024f471)
・②[opencv-python 4.0.0.21](https://pypi.org/project/opencv-python/)
参考①でAnaconda3、およびVisual Studio 2015 communityまでインストールできます。
カスタムーVisual C++とPython Tools for Visual Studioをチェックでインストールします。
※anaconda以外にpython3.7や3.6もインストールしてみましたが、結局消しました。

以下、ハマった部分をそれぞれ記載します。
###tensorflow,kerasとopencv-python
これらは、Windows10だとpipでトラブらずにインストールできると思います。

```
pip install keras
pip install tensorflow
pip install opencv-python
```
pipが古ければ文句言われるので、upgradeします。

```
pip install --upgrade pip
```
もし環境変数に追加が必要な時は、追加しましょう。
※以下の順に選んでいけば出てきます

```
コントロールパネル\システムとセキュリティ\システム\システム詳細設定\環境変数\Path
```
###ffmpeg
だいたい動いていましたが、怒られました。
ということで、以下のサイトのインストールを参考に入れました。
【参考】
・[windowsにffmpegをインストールする](https://web.plus-idea.net/2015/11/windows-ffmpeg/)
丁寧に書かれているのでまんまインストールできると思います。
「このディレクトリの下のディレクトリ「bin」の下に本体がありますので、「<解凍したディレクトリ>bin」をpathに入れておく」
ちなみに、今回は上記で行けましたが、解決しなかったら以下を試してみるのがよさそうです。

```
conda install -c conda-forge ffmpeg
```
###pyaudio
これも悩みどころでした。
要は、portaudioのインストールができていればすんなり入るということです。
これは、ウワンはVisualStudioの後入れて、通常のpipで入ったように記憶しています。
最後は、以下のコマンドのようです。

```
conda install -c anaconda portaudio
```
【参考】
・[anaconda  / packages / portaudio 19.6.0](https://anaconda.org/anaconda/portaudio)
###moviepy
これは実は一度あきらめて音声と動画と別々に保存して後で合体させようと考えました。
これは、何度やってもimageioがuninstallできないというので諦めましたが、condaでuninstallできました。
ということで、

```
conda uninstall imageio
```
を実施して完全に削除した後、再度

```
pip install moviepy
```
で入りました。ここでpip uninstall出来なくても、conda unistallで綺麗に消せることを理解しました。

実はそれでもエラーが出ていました。
それはここまでmoviepyが使えなかったので、最初からmp3ファイルに保存していました。
しかし、使えるようになった時点でbase_sound = AudioSegment.from_file('out'+str(s)+'.mp3', format="mp3")を復活しましたが、ここで怒られました。
ということで、以下のように音声と動画を合体させる必要があるようです。

```py
        wf = wave.open('out'+str(s)+'.wav', 'wb') #wavに保存する
        wf.setnchannels(CHANNELS)
        wf.setsampwidth(p.get_sample_size(FORMAT))  #width=2 ; 16bit
        wf.setframerate(RATE)
        wf.writeframes(b''.join(frames))
        wf.close()    
        
        base_sound = AudioSegment.from_file('out'+str(s)+'.wav', format="wav") #wavから読み込む
        base_sound.export('out'+str(s)+'.mp3', format="mp3")  # mp3で保存する
        length_seconds = base_sound.duration_seconds  # 長さを確認
        
        clip_output = mp.VideoFileClip(outputfile).subclip()
        clip_output.write_videofile(outputfile.replace('.avi', '.mp4'), audio='out'+str(s)+'.mp3') #avi動画ファイルとmp3音声ファイルを合体してmp4ファイルに保管する
```
###まとめ
・前回記事の3つのアプリがsurface pro3でサクサク動きました

・次回はRasPiに載せようと思います
###おまけ
とりあえず、入っているものリストを書いておきます。
※ほとんどはanacondaで入ったのだと思います

```
>pip list
Package                            Version
---------------------------------- --------
absl-py                            0.7.1
alabaster                          0.7.12
anaconda-client                    1.7.2
anaconda-navigator                 1.9.6
anaconda-project                   0.8.2
asn1crypto                         0.24.0
astor                              0.7.1
astroid                            2.1.0
astropy                            3.1
atomicwrites                       1.2.1
attrs                              18.2.0
Babel                              2.6.0
backcall                           0.1.0
backports.os                       0.1.1
backports.shutil-get-terminal-size 1.0.0
beautifulsoup4                     4.6.3
bitarray                           0.8.3
bkcharts                           0.2
blaze                              0.11.3
bleach                             3.0.2
bokeh                              1.0.2
boto                               2.49.0
Bottleneck                         1.2.1
certifi                            2019.3.9
cffi                               1.11.5
chardet                            3.0.4
Click                              7.0
cloudpickle                        0.6.1
clyent                             1.2.2
colorama                           0.4.1
comtypes                           1.1.7
conda                              4.6.8
conda-build                        3.17.6
conda-verify                       3.1.1
contextlib2                        0.5.5
cryptography                       2.4.2
cycler                             0.10.0
Cython                             0.29.2
cytoolz                            0.9.0.1
dask                               1.0.0
datashape                          0.5.4
decorator                          4.3.0
defusedxml                         0.5.0
distributed                        1.25.1
docutils                           0.14
entrypoints                        0.2.3
et-xmlfile                         1.0.1
ez-setup                           0.9
fastcache                          1.0.2
ffmpeg                             1.4
filelock                           3.0.10
Flask                              1.0.2
Flask-Cors                         3.0.7
future                             0.17.1
gast                               0.2.2
gevent                             1.3.7
glob2                              0.6
greenlet                           0.4.15
grpcio                             1.19.0
h5py                               2.8.0
heapdict                           1.0.0
html5lib                           1.0.1
idna                               2.8
imageio                            2.5.0
imageio-ffmpeg                     0.2.0
imagesize                          1.1.0
importlib-metadata                 0.6
ipykernel                          5.1.0
ipython                            7.2.0
ipython-genutils                   0.2.0
ipywidgets                         7.4.2
isort                              4.3.4
itsdangerous                       1.1.0
jdcal                              1.4
jedi                               0.13.2
Jinja2                             2.10
jsonschema                         2.6.0
jupyter                            1.0.0
jupyter-client                     5.2.4
jupyter-console                    6.0.0
jupyter-core                       4.4.0
jupyterlab                         0.35.3
jupyterlab-server                  0.2.0
Keras                              2.2.4
Keras-Applications                 1.0.7
Keras-Preprocessing                1.0.9
keyring                            17.0.0
kiwisolver                         1.0.1
lazy-object-proxy                  1.3.1
libarchive-c                       2.8
llvmlite                           0.26.0
locket                             0.2.0
lxml                               4.2.5
Markdown                           3.0.1
MarkupSafe                         1.1.0
matplotlib                         3.0.2
mccabe                             0.6.1
menuinst                           1.4.14
mistune                            0.8.4
mkl-fft                            1.0.6
mkl-random                         1.0.2
mock                               2.0.0
more-itertools                     4.3.0
moviepy                            1.0.0
mpmath                             1.1.0
msgpack                            0.5.6
multipledispatch                   0.6.0
navigator-updater                  0.2.1
nbconvert                          5.4.0
nbformat                           4.4.0
networkx                           2.2
nltk                               3.4
nose                               1.3.7
notebook                           5.7.4
numba                              0.41.0
numexpr                            2.6.8
numpy                              1.16.2
numpydoc                           0.8.0
odo                                0.5.1
olefile                            0.46
opencv-python                      4.0.0.21
openpyxl                           2.5.12
packaging                          18.0
pandas                             0.23.4
pandocfilters                      1.4.2
parso                              0.3.1
partd                              0.3.9
path.py                            11.5.0
pathlib2                           2.3.3
patsy                              0.5.1
pbr                                5.1.3
pep8                               1.7.1
pickleshare                        0.7.5
Pillow                             5.3.0
pip                                18.1
pkginfo                            1.4.2
pluggy                             0.8.0
ply                                3.11
proglog                            0.1.9
prometheus-client                  0.5.0
prompt-toolkit                     2.0.7
protobuf                           3.7.0
psutil                             5.4.8
py                                 1.7.0
PyAudio                            0.2.11
pycodestyle                        2.4.0
pycosat                            0.6.3
pycparser                          2.19
pycrypto                           2.6.1
pycurl                             7.43.0.2
pydub                              0.23.1
pyflakes                           2.0.0
Pygments                           2.3.1
pylint                             2.2.2
pyodbc                             4.0.25
pyOpenSSL                          18.0.0
pyparsing                          2.3.0
PySocks                            1.6.8
pytest                             4.0.2
pytest-arraydiff                   0.3
pytest-astropy                     0.5.0
pytest-doctestplus                 0.2.0
pytest-openfiles                   0.3.1
pytest-remotedata                  0.3.1
python-dateutil                    2.7.5
pytz                               2018.7
PyWavelets                         1.0.1
pywin32                            223
pywinpty                           0.5.5
PyYAML                             3.13
pyzmq                              17.1.2
QtAwesome                          0.5.3
qtconsole                          4.4.3
QtPy                               1.5.2
requests                           2.21.0
rope                               0.11.0
ruamel-yaml                        0.15.46
scikit-learn                       0.20.1
scipy                              1.1.0
seaborn                            0.9.0
Send2Trash                         1.5.0
setuptools                         40.6.3
simplegeneric                      0.8.1
singledispatch                     3.4.0.3
six                                1.12.0
snowballstemmer                    1.2.1
sortedcollections                  1.0.1
sortedcontainers                   2.1.0
Sphinx                             1.8.2
sphinxcontrib-websupport           1.1.0
spyder                             3.3.2
spyder-kernels                     0.3.0
SQLAlchemy                         1.2.15
statsmodels                        0.9.0
sympy                              1.3
tables                             3.4.4
tblib                              1.3.2
tensorboard                        1.13.1
tensorflow                         1.13.1
tensorflow-estimator               1.13.0
termcolor                          1.1.0
terminado                          0.8.1
testpath                           0.4.2
toolz                              0.9.0
tornado                            5.1.1
tqdm                               4.28.1
traitlets                          4.3.2
unicodecsv                         0.14.1
urllib3                            1.24.1
wcwidth                            0.1.7
webencodings                       0.5.1
Werkzeug                           0.14.1
wheel                              0.32.3
widgetsnbextension                 3.4.2
win-inet-pton                      1.0.1
win-unicode-console                0.5
wincertstore                       0.2
wrapt                              1.10.11
xlrd                               1.2.0
XlsxWriter                         1.1.2
xlwings                            0.15.1
xlwt                               1.3.0
zict                               0.1.3
```