diff --git a/README_dev_en.md b/README_dev_en.md index 56262a98..9a54ba3d 100644 --- a/README_dev_en.md +++ b/README_dev_en.md @@ -1,6 +1,6 @@ ## For Developper -[English](/README_dev_ja.md) +[Japanese](/README_dev_ja.md) ## Prerequisit diff --git a/README_en.md b/README_en.md index 9c5382c8..9f327bd6 100644 --- a/README_en.md +++ b/README_en.md @@ -1,5 +1,7 @@ ## VC Client +[Japanese](/README_ja.md) + ## What's New! - v.1.5.2.3a diff --git a/docker_vcclient/Dockerfile b/docker_vcclient/Dockerfile new file mode 100644 index 00000000..e38dd3d3 --- /dev/null +++ b/docker_vcclient/Dockerfile @@ -0,0 +1,95 @@ +# FROM nvidia/cuda:11.8.0-cudnn8-runtime-ubuntu22.04 as base + +# ARG DEBIAN_FRONTEND=noninteractive + +# RUN apt-get update +# RUN apt-get install -y python3-pip git + +# RUN pip install torch==1.13.1 +# RUN pip install numpy==1.24.1 +# RUN pip install python-socketio==5.7.2 + +# RUN pip install fastapi==0.89.1 +# RUN pip install python-multipart==0.0.5 +# RUN pip install uvicorn==0.20.0 +# RUN pip install websockets==10.4 +# RUN pip install pyOpenSSL==23.0.0 +# RUN pip install onnxruntime-gpu==1.13.1 + +# RUN git clone https://github.com/isletennos/MMVC_Client.git +# RUN cd MMVC_Client && git checkout 04f3fec4fd82dea6657026ec4e1cd80fb29a415c && cd - + + +# WORKDIR / +# ADD dummy / + +# RUN git clone --depth 1 https://github.com/w-okada/voice-changer.git + + +######### +# Prod # +######### +FROM nvidia/cuda:11.8.0-cudnn8-runtime-ubuntu22.04 +# FROM nvidia/cuda:12.0.1-cudnn8-runtime-ubuntu22.04 + +RUN apt-get update \ + && apt-get install -y python3-pip espeak gosu libsndfile1-dev emacs git \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +RUN pip install uvicorn==0.21.1 +RUN pip install pyOpenSSL==23.1.1 +RUN pip install numpy==1.23.5 +RUN pip install torch==1.13.1 +RUN pip install resampy==0.4.2 +RUN pip install python-socketio==5.8.0 +RUN pip install fastapi==0.95.1 +RUN pip install python-multipart==0.0.6 +RUN pip install onnxruntime-gpu==1.14.1 +RUN pip install pyworld==0.3.3 +RUN pip install scipy==1.10.1 +RUN pip install matplotlib==3.7.1 +RUN pip install fairseq==0.12.2 +RUN pip install websockets==11.0.2 +RUN pip install praat-parselmouth==0.4.3 +RUN pip install faiss-cpu==1.7.3 +RUN pip install torchcrepe==0.0.18 +RUN pip install librosa==0.10.0.post1 +RUN pip install gin==0.1.6 +RUN pip install gin_config==0.5.0 +RUN pip install einops==0.6.0 +RUN pip install local_attention==1.8.5 +RUN pip install websockets==11.0.2 + +RUN git clone https://github.com/w-okada/voice-changer.git + +ADD /setup.sh /voice-changer/server +ADD /exec.sh /voice-changer/server + +RUN chmod 0777 /voice-changer/server +WORKDIR /voice-changer/server + +RUN git clone https://github.com/isletennos/MMVC_Client.git MMVC_Client_v13 +RUN git clone https://github.com/isletennos/MMVC_Client.git MMVC_Client_v15 +RUN git clone https://github.com/StarStringStudio/so-vits-svc.git so-vits-svc-40 +RUN git clone https://github.com/StarStringStudio/so-vits-svc.git so-vits-svc-40v2 +RUN cd so-vits-svc-40v2 && git checkout 08c70ff3d2f7958820b715db2a2180f4b7f92f8d && cd - +RUN git clone https://github.com/yxlllc/DDSP-SVC.git DDSP-SVC +RUN git clone https://github.com/liujing04/Retrieval-based-Voice-Conversion-WebUI.git RVC + +ENTRYPOINT ["/bin/bash", "setup.sh"] + +# ### Copy from base +# COPY --from=base --chmod=777 /usr/local/lib/python3.10/dist-packages /usr/local/lib/python3.10/dist-packages +# COPY --from=base --chmod=777 /voice-changer /voice-changer +# COPY --from=base --chmod=777 /MMVC_Client /voice-changer/server/MMVC_Client +# RUN chmod 0777 /voice-changer/server/MMVC_Client +# RUN chmod 0777 /voice-changer/server + +# ADD /setup.sh /voice-changer/server +# ADD /exec.sh /voice-changer/server + + +# WORKDIR /voice-changer/server +# ENTRYPOINT ["/bin/bash", "setup.sh"] +# CMD [ "-h"] diff --git a/docker_vcclient/README.md b/docker_vcclient/README.md new file mode 100644 index 00000000..6e36ab5c --- /dev/null +++ b/docker_vcclient/README.md @@ -0,0 +1,43 @@ +## VC Client for Docker + +[English](/README_en.md) + +## ビルド + +リポジトリフォルダのルートで + +``` +npm run build:docker:vcclient +``` + +## 実行 + +リポジトリフォルダのルートで + +``` +bash start_docker.sh +``` + +GPU を使用しない場合は + +``` +USE_GPU=off bash start_docker.sh +``` + +ポート番号を変えたい場合は + +``` +EX_PORT= bash start_docker.sh +``` + +ローカルのイメージを使用したい場合は + +``` +USE_LOCAL=on bash start_docker.sh +``` + +## Push to Repo (only for devs) + +``` +npm run push:docker:vcclient +``` diff --git a/docker_vcclient/README_en.md b/docker_vcclient/README_en.md new file mode 100644 index 00000000..3c84fdb7 --- /dev/null +++ b/docker_vcclient/README_en.md @@ -0,0 +1,43 @@ +## VC Client for Docker + +[Japanese](/README_ja.md) + +## Build + +In root folder of repos. + +``` +npm run build:docker:vcclient +``` + +## Run + +In root folder of repos. + +``` +bash start_docker.sh +``` + +Without GPU + +``` +USE_GPU=off bash start_docker.sh +``` + +Specify port num + +``` +EX_PORT= bash start_docker.sh +``` + +Use Local Image + +``` +USE_LOCAL=on bash start_docker.sh +``` + +## Push to Repo (only for devs) + +``` +npm run push:docker:vcclient +``` diff --git a/docker_vcclient/exec.sh b/docker_vcclient/exec.sh new file mode 100644 index 00000000..a9cae100 --- /dev/null +++ b/docker_vcclient/exec.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +set -eu + +cp -r /weights/* /voice-changer/server/ +# /bin/bash + +python3 MMVCServerSIO.py $@ +# python3 MMVCServerSIO.py -p 18888 --https true \ +# --content_vec_500 checkpoint_best_legacy_500.pt \ +# --hubert_base hubert_base.pt \ +# --hubert_soft hubert-soft-0d54a1f4.pt \ +# --nsf_hifigan nsf_hifigan/model + + +# -p 18888 --https true \ +# --content_vec_500 checkpoint_best_legacy_500.pt \ +# --hubert_base hubert_base.pt \ +# --hubert_soft hubert-soft-0d54a1f4.pt \ +# --nsf_hifigan nsf_hifigan/model \ No newline at end of file diff --git a/docker_vcclient/setup.sh b/docker_vcclient/setup.sh new file mode 100644 index 00000000..5da2cef2 --- /dev/null +++ b/docker_vcclient/setup.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +# 参考:https://programwiz.org/2022/03/22/how-to-write-shell-script-for-option-parsing/ + +set -eu +# 実行ユーザ作成 +USER_ID=${LOCAL_UID:-9001} +GROUP_ID=${LOCAL_GID:-9001} + +echo "exec with [UID : $USER_ID, GID: $GROUP_ID]" +useradd -u $USER_ID -o -m user +groupmod -g $GROUP_ID user + +#su user +#echo "parameter: $@" +exec /usr/sbin/gosu user /bin/bash exec.sh "$@" +#/bin/bash + diff --git a/docker_vcclient/weights/.gitignore b/docker_vcclient/weights/.gitignore new file mode 100644 index 00000000..d6b7ef32 --- /dev/null +++ b/docker_vcclient/weights/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/package.json b/package.json index 02e53c43..de5fd155 100644 --- a/package.json +++ b/package.json @@ -7,8 +7,10 @@ "build:docker": "date +%Y%m%d%H%M%S > docker/dummy && DOCKER_BUILDKIT=1 docker build -f docker/Dockerfile docker/ -t voice-changer", "build:docker:onnx": "DOCKER_BUILDKIT=1 docker build -f docker_onnx/Dockerfile docker/ -t onnx-converter", "build:docker:trainer": "date +%Y%m%d%H%M%S > docker_trainer/dummy && DOCKER_BUILDKIT=1 docker build -f docker_trainer/Dockerfile docker_trainer/ -t trainer", + "build:docker:vcclient": "date +%Y%m%d%H%M%S > docker/dummy && DOCKER_BUILDKIT=1 docker build -f docker_vcclient/Dockerfile docker_vcclient/ -t vcclient", "push:docker": "bash script/001_pushDocker.sh", "push:docker:trainer": "bash script/002_pushDockerTrainer.sh", + "push:docker:vcclient": "bash script/003_pushDockerVCClient.sh", "test": "echo \"Error: no test specified\" && exit 1" }, "repository": { diff --git a/script/003_pushDockerVCClient.sh b/script/003_pushDockerVCClient.sh new file mode 100644 index 00000000..b4e6c3c2 --- /dev/null +++ b/script/003_pushDockerVCClient.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +data_tag=`date +%Y%m%d_%H%M%S` +docker login + +docker tag vcclient dannadori/vcclient:$data_tag +docker push dannadori/vcclient:$data_tag diff --git a/start_docker.sh b/start_docker.sh new file mode 100644 index 00000000..8553fee7 --- /dev/null +++ b/start_docker.sh @@ -0,0 +1,51 @@ +#!/bin/bash +set -eu + +DOCKER_IMAGE=dannadori/vcclient:20230420_003000 +#DOCKER_IMAGE=vcclient + +### DEFAULT VAR ### +DEFAULT_EX_PORT=18888 +DEFAULT_USE_GPU=on # on|off +DEFAULT_USE_LOCAL=off # on|off +### ENV VAR ### +EX_PORT=${EX_PORT:-${DEFAULT_EX_PORT}} +USE_GPU=${USE_GPU:-${DEFAULT_USE_GPU}} +USE_LOCAL=${USE_LOCAL:-${DEFAULT_USE_LOCAL}} + +if [ "${USE_LOCAL}" = "on" ]; then + DOCKER_IMAGE=vcclient +fi + +if [ "${USE_GPU}" = "on" ]; then + echo "VC Client start...(with gpu)" + + docker run -it --rm --gpus all --shm-size=1024M \ + -v `pwd`/docker_vcclient/weights:/weights \ + -e EX_IP="`hostname -I`" \ + -e EX_PORT=${EX_PORT} \ + -e LOCAL_UID=$(id -u $USER) \ + -e LOCAL_GID=$(id -g $USER) \ + -p ${EX_PORT}:18888 \ + $DOCKER_IMAGE -p 18888 --https true \ + --content_vec_500 checkpoint_best_legacy_500.pt \ + --hubert_base hubert_base.pt \ + --hubert_soft hubert-soft-0d54a1f4.pt \ + --nsf_hifigan nsf_hifigan/model +else + echo "VC Client start...(cpu)" + docker run -it --rm --shm-size=1024M \ + -v `pwd`/docker_vcclient/weights:/weights \ + -e EX_IP="`hostname -I`" \ + -e EX_PORT=${EX_PORT} \ + -e LOCAL_UID=$(id -u $USER) \ + -e LOCAL_GID=$(id -g $USER) \ + -p ${EX_PORT}:18888 \ + $DOCKER_IMAGE -p 18888 --https true \ + --content_vec_500 checkpoint_best_legacy_500.pt \ + --hubert_base hubert_base.pt \ + --hubert_soft hubert-soft-0d54a1f4.pt \ + --nsf_hifigan nsf_hifigan/model +fi + +