やってみよう!

プログラミングとかでぃーぷらーにんぐとかVRとか気になったものをやってみる予定

声質変換 - 開発環境構築

前回の続き

blog.ascreit.com

ディレクトリ構造

voichan
├─ Dockerfile
├── README.md
├── SPTK-3.11.tar.gz
└── python
│ └── test.py
└── docker-compose.yml

ホスト環境

  • Docker version 18.03.1-ce
  • docker-compose version 1.22.0-rc2
  • ホストOS:ubuntu:18.04
  • コンテナOS:ubuntu:18.04
  • Python3.6.5

メモリは31GiB使えるようになっているはず。

CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
839e827ec187        voichan_python_1    0.22%               24.75MiB / 31.35GiB   0.08%               12.4kB / 0B         0B / 0B             14

Dockerfile

FROM ubuntu:18.04
ENV TZ=Asia/Tokyo
ENV DEBIAN_FRONTEND=noninteractive
RUN apt update
RUN apt install -y tzdata alsa-utils sptk tk-dev xvfb
RUN apt install -y python3-pip portaudio19-dev python3-tk
RUN apt install -y vim usbutils
COPY SPTK-3.11.tar.gz SPTK-3.11.tar.gz
RUN tar xvzf SPTK-3.11.tar.gz && cd SPTK-3.11 && ./configure && make && make install
RUN pip3 install pyaudio numpy matplotlib sounddevice scipy pyworld

DEBIAN_FRONTEND=noninteractiveはtk-devを入れるときにGUIで設定聞かれるのを防ぐため

docker-compose.yml

特殊な部分はマイクとスピーカーを使うため、/dev/sndをマウントしている点と、 グラフ表示(matplotとか使うとき)のために.X11-unixをマウントしている点、 それに伴って特権モード(privileged: true)で動かしている点くらいです。

version: '2'
services:
  python:
    build: ./
    volumes:
      - ./python:/home/python
      - /tmp/.X11-unix/:/tmp/.X11-unix/
    environment:
      - "DISPLAY=$DISPLAY"
    devices:
      - /dev/snd
      - /dev/usb
    working_dir: "/home/python"
    privileged: true
    restart: always
    tty: true

.bash_profile

画面共有にあたって、ホストからコンテナに使用許可がいるみたいなので、~/.bash_profileに1行追記

xhost +local

起動

あとはvoichanディレクトリに移動して

docker-compose up -d
docker-compose exec python bash

でコンテナ入ってpythonファイルを実行できるようになります。

とりあえず必要そうなライブラリ等を見繕って入れましたが、足りなければDockerfileに追記して ビルドしていきます。