diff --git a/VoiceChangerDemo.ipynb b/VoiceChangerDemo.ipynb index 5903869e..5a4d002b 100644 --- a/VoiceChangerDemo.ipynb +++ b/VoiceChangerDemo.ipynb @@ -6,7 +6,7 @@ "name": "VoiceChangerDemo", "provenance": [], "collapsed_sections": [], - "authorship_tag": "ABX9TyMGicNQLwe01+RypHQi293k", + "authorship_tag": "ABX9TyPUNk3o1zBcw8KyZOFlhFH1", "include_colab_link": true }, "kernelspec": { @@ -31,27 +31,43 @@ ] }, { - "cell_type": "code", + "cell_type": "markdown", "source": [ - "# Voice Changer Demo\n", - "このノートはVoice Changer" + "Voice Changer (デモ版)\n", + "---\n", + "\n", + "このノートはVoice ChangerをColab上で動かすデモ版です。\n", + "\n", + "正式版はローカルPCのDocker上で動かすアプリケーションです。\n", + "\n", + "正式版は、多くの場合より少ないタイムラグで滑らかに音声を変換できます。\n", + "\n", + "詳細な使用方法はこちらの[リポジトリ](https://https://github.com/w-okada/voice-changer)からご確認ください。\n" ], "metadata": { - "id": "3oW_LGv-lL_d" - }, - "execution_count": null, - "outputs": [] + "id": "Lbbmx_Vjl0zo" + } }, { "cell_type": "markdown", - "source": [], + "source": [ + "# GPUを確認\n", + "GPUを用いたほうが高速に処理が行えます。\n", + "\n", + "下記のコマンドでGPUが確認できない場合は、上のメニューから\n", + "\n", + "「ランタイム」→「ランタイムの変更」→「ハードウェア アクセラレータ」\n", + "\n", + "でGPUを選択してください。" + ], "metadata": { - "id": "57p7pA1Qb5wa" + "id": "oUKi1NYMmXrr" } }, { "cell_type": "code", "source": [ + "# (1) GPUの確認\n", "!nvidia-smi" ], "metadata": { @@ -59,7 +75,7 @@ "base_uri": "https://localhost:8080/" }, "id": "vV1t7PBRm-o6", - "outputId": "d796c25d-c3f7-4977-cd26-7c724c72e178" + "outputId": "5f5c582b-08f3-4575-db1e-6524a16fbc30" }, "execution_count": 1, "outputs": [ @@ -67,7 +83,7 @@ "output_type": "stream", "name": "stdout", "text": [ - "Wed Aug 31 06:26:38 2022 \n", + "Wed Aug 31 06:47:03 2022 \n", "+-----------------------------------------------------------------------------+\n", "| NVIDIA-SMI 460.32.03 Driver Version: 460.32.03 CUDA Version: 11.2 |\n", "|-------------------------------+----------------------+----------------------+\n", @@ -76,7 +92,7 @@ "| | | MIG M. |\n", "|===============================+======================+======================|\n", "| 0 Tesla T4 Off | 00000000:00:04.0 Off | 0 |\n", - "| N/A 58C P8 10W / 70W | 0MiB / 15109MiB | 0% Default |\n", + "| N/A 47C P8 9W / 70W | 0MiB / 15109MiB | 0% Default |\n", "| | | N/A |\n", "+-------------------------------+----------------------+----------------------+\n", " \n", @@ -91,9 +107,23 @@ } ] }, + { + "cell_type": "markdown", + "source": [ + "# 使用するモデルとコンフィグファイルの指定\n", + "\n", + "使用するトレーニング済みのモデルと、トレーニングで使用したコンフィグファイルのパスを指定してください。\n", + "\n", + "多くの場合はGoogle Driveに格納されているファイルを使用すると思います。その場合は、下の(2-2)のセルを実行してドライブをマウントしてください" + ], + "metadata": { + "id": "mHvGrgaWnIPA" + } + }, { "cell_type": "code", "source": [ + "# (2-1) 使用するモデルとコンフィグファイルの指定\n", "CONFIG=\"/content/drive/MyDrive/VoiceChanger/config.json\"\n", "MODEL=\"/content/drive/MyDrive/VoiceChanger/G_326000.pth\"" ], @@ -105,19 +135,43 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": { - "id": "2wxD-gRSMU5R" + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "2wxD-gRSMU5R", + "outputId": "22755d32-b29f-4bc5-b674-6443ca45d184" }, - "outputs": [], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Mounted at /content/drive\n" + ] + } + ], "source": [ + "# (2-2) Google Driveのマウント\n", "from google.colab import drive\n", "drive.mount('/content/drive')" ] }, + { + "cell_type": "markdown", + "source": [ + "# リポジトリのクローン\n", + "リポジトリをクローンします" + ], + "metadata": { + "id": "sLBfykjBnjWc" + } + }, { "cell_type": "code", "source": [ + "# (3) リポジトリのクローン\n", "!git clone https://github.com/w-okada/voice-changer.git\n", "%cd voice-changer/demo/\n" ], @@ -126,53 +180,42 @@ "base_uri": "https://localhost:8080/" }, "id": "86wTFmqsNMnD", - "outputId": "3fc68f14-b6b7-48bb-e285-5bed78e74f26" + "outputId": "078feaed-9b1a-4946-f1e8-0a87d447e392" }, - "execution_count": null, + "execution_count": 4, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Cloning into 'voice-changer'...\n", - "remote: Enumerating objects: 266, done.\u001b[K\n", - "remote: Counting objects: 100% (266/266), done.\u001b[K\n", - "remote: Compressing objects: 100% (189/189), done.\u001b[K\n", - "remote: Total 266 (delta 123), reused 194 (delta 65), pack-reused 0\u001b[K\n", - "Receiving objects: 100% (266/266), 19.11 MiB | 35.44 MiB/s, done.\n", - "Resolving deltas: 100% (123/123), done.\n", + "remote: Enumerating objects: 276, done.\u001b[K\n", + "remote: Counting objects: 100% (276/276), done.\u001b[K\n", + "remote: Compressing objects: 100% (195/195), done.\u001b[K\n", + "remote: Total 276 (delta 127), reused 200 (delta 69), pack-reused 0\u001b[K\n", + "Receiving objects: 100% (276/276), 19.11 MiB | 30.11 MiB/s, done.\n", + "Resolving deltas: 100% (127/127), done.\n", "/content/voice-changer/demo\n" ] } ] }, { - "cell_type": "code", + "cell_type": "markdown", "source": [ - "!git checkout dev\n" + "# ファイルの配置\n", + "このデモでは、GUIをWebサーバで提供します。WebサーバからGUIのファイルにアクセスできるようにファイルをコピーします(4-1)。\n", + "\n", + "また、アプリケーションの挙動を記した設定ファイルもコピーします(4-2)。(4-3)はコピーした設定ファイルを表示しています。もしかしたらうまく動かないときに役立つかもしれません。" ], "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "CBsogR-zWH4r", - "outputId": "f4c9737b-831d-4938-d387-caf07693030e" - }, - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Branch 'dev' set up to track remote branch 'dev' from 'origin'.\n", - "Switched to a new branch 'dev'\n" - ] - } - ] + "id": "jmDY8W_fnuSi" + } }, { "cell_type": "code", "source": [ + "# (4-1) GUIファイルの配置 \n", "!mkdir -p ../frontend/dist\n", "!cp -r ../docs/* ../frontend/dist/\n", "!ls ../frontend/dist\n" @@ -182,9 +225,9 @@ "base_uri": "https://localhost:8080/" }, "id": "uCEKf3_JNoyq", - "outputId": "746e1946-5c3a-49af-df26-d86149f8adb1" + "outputId": "fd4efece-deaa-4766-a5c1-c6866eb5ffe1" }, - "execution_count": null, + "execution_count": 5, "outputs": [ { "output_type": "stream", @@ -199,27 +242,29 @@ { "cell_type": "code", "source": [ - "!cp ../template/setting_colab.json ../frontend/dist/assets/setting.json" + "# (4-2) 設定ファイルの配置\n", + "!cp ../template/setting_colab.json ../frontend/dist/assets/setting.json\n" ], "metadata": { "id": "Bn4kV8TgXp8i" }, - "execution_count": null, + "execution_count": 6, "outputs": [] }, { "cell_type": "code", "source": [ - "!cat ../frontend/dist/assets/setting.json" + "# (4-3) 設定ファイルの確認\n", + "!cat ../frontend/dist/assets/setting.json\n" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "pjxPsOOaXXTj", - "outputId": "1bf85102-87ed-462c-e732-cffb878d95f3" + "outputId": "99ad8af6-d4d0-4ba1-c5fe-a5c701b38a0a" }, - "execution_count": null, + "execution_count": 7, "outputs": [ { "output_type": "stream", @@ -267,13 +312,9 @@ { "cell_type": "markdown", "source": [ - "# 手作業\n", + "# モジュールのインストール\n", "\n", - "・configとモデルをdemoフォルダにコピー\n", - "\n", - "・docsをfrontendに変更\n", - "\n", - "・setting.jsonをfrontendにコピー\n" + "必要なモジュールをインストールします。" ], "metadata": { "id": "8Na2PbLZSWgZ" @@ -282,6 +323,7 @@ { "cell_type": "code", "source": [ + "# (5) 設定ファイルの確認\n", "!apt-get install -y espeak libsndfile1-dev\n", "!pip install flask\n", "!pip install python-socketio\n", @@ -297,9 +339,9 @@ "base_uri": "https://localhost:8080/" }, "id": "LwZAAuqxX7yY", - "outputId": "c67b2741-7a1e-448d-abf9-7b8d8f5e3d15" + "outputId": "d45cbfdf-27aa-4a00-baee-a6e6e5646a01" }, - "execution_count": null, + "execution_count": 8, "outputs": [ { "output_type": "stream", @@ -324,7 +366,7 @@ "Get:3 http://archive.ubuntu.com/ubuntu bionic/universe amd64 espeak-data amd64 1.48.04+dfsg-5 [934 kB]\n", "Get:4 http://archive.ubuntu.com/ubuntu bionic/universe amd64 libespeak1 amd64 1.48.04+dfsg-5 [145 kB]\n", "Get:5 http://archive.ubuntu.com/ubuntu bionic/universe amd64 espeak amd64 1.48.04+dfsg-5 [61.6 kB]\n", - "Fetched 1,219 kB in 1s (1,636 kB/s)\n", + "Fetched 1,219 kB in 1s (1,125 kB/s)\n", "Selecting previously unselected package libportaudio2:amd64.\n", "(Reading database ... 155676 files and directories currently installed.)\n", "Preparing to unpack .../libportaudio2_19.6.0-1_amd64.deb ...\n", @@ -350,29 +392,29 @@ "Processing triggers for libc-bin (2.27-3ubuntu1.5) ...\n", "Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n", "Requirement already satisfied: flask in /usr/local/lib/python3.7/dist-packages (1.1.4)\n", - "Requirement already satisfied: click<8.0,>=5.1 in /usr/local/lib/python3.7/dist-packages (from flask) (7.1.2)\n", - "Requirement already satisfied: Jinja2<3.0,>=2.10.1 in /usr/local/lib/python3.7/dist-packages (from flask) (2.11.3)\n", - "Requirement already satisfied: itsdangerous<2.0,>=0.24 in /usr/local/lib/python3.7/dist-packages (from flask) (1.1.0)\n", "Requirement already satisfied: Werkzeug<2.0,>=0.15 in /usr/local/lib/python3.7/dist-packages (from flask) (1.0.1)\n", + "Requirement already satisfied: click<8.0,>=5.1 in /usr/local/lib/python3.7/dist-packages (from flask) (7.1.2)\n", + "Requirement already satisfied: itsdangerous<2.0,>=0.24 in /usr/local/lib/python3.7/dist-packages (from flask) (1.1.0)\n", + "Requirement already satisfied: Jinja2<3.0,>=2.10.1 in /usr/local/lib/python3.7/dist-packages (from flask) (2.11.3)\n", "Requirement already satisfied: MarkupSafe>=0.23 in /usr/local/lib/python3.7/dist-packages (from Jinja2<3.0,>=2.10.1->flask) (2.0.1)\n", "Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n", "Collecting python-socketio\n", " Downloading python_socketio-5.7.1-py3-none-any.whl (56 kB)\n", - "\u001b[K |████████████████████████████████| 56 kB 5.0 MB/s \n", + "\u001b[K |████████████████████████████████| 56 kB 2.6 MB/s \n", "\u001b[?25hCollecting bidict>=0.21.0\n", " Downloading bidict-0.22.0-py3-none-any.whl (36 kB)\n", "Collecting python-engineio>=4.3.0\n", " Downloading python_engineio-4.3.4-py3-none-any.whl (52 kB)\n", - "\u001b[K |████████████████████████████████| 52 kB 2.0 MB/s \n", + "\u001b[K |████████████████████████████████| 52 kB 1.8 MB/s \n", "\u001b[?25hInstalling collected packages: python-engineio, bidict, python-socketio\n", "Successfully installed bidict-0.22.0 python-engineio-4.3.4 python-socketio-5.7.1\n", "Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n", "Collecting eventlet\n", " Downloading eventlet-0.33.1-py2.py3-none-any.whl (226 kB)\n", - "\u001b[K |████████████████████████████████| 226 kB 33.3 MB/s \n", + "\u001b[K |████████████████████████████████| 226 kB 4.7 MB/s \n", "\u001b[?25hCollecting dnspython>=1.15.0\n", " Downloading dnspython-2.2.1-py3-none-any.whl (269 kB)\n", - "\u001b[K |████████████████████████████████| 269 kB 52.5 MB/s \n", + "\u001b[K |████████████████████████████████| 269 kB 55.9 MB/s \n", "\u001b[?25hRequirement already satisfied: six>=1.10.0 in /usr/local/lib/python3.7/dist-packages (from eventlet) (1.15.0)\n", "Requirement already satisfied: greenlet>=0.3 in /usr/local/lib/python3.7/dist-packages (from eventlet) (1.1.3)\n", "Installing collected packages: dnspython, eventlet\n", @@ -380,59 +422,59 @@ "Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n", "Collecting unidecode\n", " Downloading Unidecode-1.3.4-py3-none-any.whl (235 kB)\n", - "\u001b[K |████████████████████████████████| 235 kB 28.6 MB/s \n", + "\u001b[K |████████████████████████████████| 235 kB 4.7 MB/s \n", "\u001b[?25hInstalling collected packages: unidecode\n", "Successfully installed unidecode-1.3.4\n", "Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n", "Collecting phonemizer\n", " Downloading phonemizer-3.2.1-py3-none-any.whl (90 kB)\n", - "\u001b[K |████████████████████████████████| 90 kB 9.5 MB/s \n", - "\u001b[?25hCollecting segments\n", - " Downloading segments-2.2.1-py2.py3-none-any.whl (15 kB)\n", - "Requirement already satisfied: joblib in /usr/local/lib/python3.7/dist-packages (from phonemizer) (1.1.0)\n", - "Collecting dlinfo\n", + "\u001b[K |████████████████████████████████| 90 kB 4.2 MB/s \n", + "\u001b[?25hCollecting dlinfo\n", " Downloading dlinfo-1.2.1-py3-none-any.whl (3.6 kB)\n", "Requirement already satisfied: typing-extensions in /usr/local/lib/python3.7/dist-packages (from phonemizer) (4.1.1)\n", "Requirement already satisfied: attrs>=18.1 in /usr/local/lib/python3.7/dist-packages (from phonemizer) (22.1.0)\n", - "Collecting csvw>=1.5.6\n", - " Downloading csvw-3.1.1-py2.py3-none-any.whl (56 kB)\n", - "\u001b[K |████████████████████████████████| 56 kB 5.7 MB/s \n", - "\u001b[?25hRequirement already satisfied: regex in /usr/local/lib/python3.7/dist-packages (from segments->phonemizer) (2022.6.2)\n", + "Collecting segments\n", + " Downloading segments-2.2.1-py2.py3-none-any.whl (15 kB)\n", + "Requirement already satisfied: joblib in /usr/local/lib/python3.7/dist-packages (from phonemizer) (1.1.0)\n", + "Requirement already satisfied: regex in /usr/local/lib/python3.7/dist-packages (from segments->phonemizer) (2022.6.2)\n", "Collecting clldutils>=1.7.3\n", " Downloading clldutils-3.12.0-py2.py3-none-any.whl (197 kB)\n", - "\u001b[K |████████████████████████████████| 197 kB 63.8 MB/s \n", + "\u001b[K |████████████████████████████████| 197 kB 25.8 MB/s \n", + "\u001b[?25hCollecting csvw>=1.5.6\n", + " Downloading csvw-3.1.1-py2.py3-none-any.whl (56 kB)\n", + "\u001b[K |████████████████████████████████| 56 kB 5.7 MB/s \n", "\u001b[?25hRequirement already satisfied: python-dateutil in /usr/local/lib/python3.7/dist-packages (from clldutils>=1.7.3->segments->phonemizer) (2.8.2)\n", - "Requirement already satisfied: tabulate>=0.7.7 in /usr/local/lib/python3.7/dist-packages (from clldutils>=1.7.3->segments->phonemizer) (0.8.10)\n", "Collecting colorlog\n", " Downloading colorlog-6.7.0-py2.py3-none-any.whl (11 kB)\n", - "Collecting colorama\n", - " Downloading colorama-0.4.5-py2.py3-none-any.whl (16 kB)\n", - "Requirement already satisfied: jsonschema in /usr/local/lib/python3.7/dist-packages (from csvw>=1.5.6->segments->phonemizer) (4.3.3)\n", - "Collecting rdflib\n", - " Downloading rdflib-6.2.0-py3-none-any.whl (500 kB)\n", - "\u001b[K |████████████████████████████████| 500 kB 53.6 MB/s \n", - "\u001b[?25hRequirement already satisfied: babel in /usr/local/lib/python3.7/dist-packages (from csvw>=1.5.6->segments->phonemizer) (2.10.3)\n", + "Requirement already satisfied: tabulate>=0.7.7 in /usr/local/lib/python3.7/dist-packages (from clldutils>=1.7.3->segments->phonemizer) (0.8.10)\n", "Collecting language-tags\n", " Downloading language_tags-1.1.0-py2.py3-none-any.whl (210 kB)\n", - "\u001b[K |████████████████████████████████| 210 kB 65.4 MB/s \n", - "\u001b[?25hCollecting rfc3986<2\n", - " Downloading rfc3986-1.5.0-py2.py3-none-any.whl (31 kB)\n", - "Requirement already satisfied: uritemplate>=3.0.0 in /usr/local/lib/python3.7/dist-packages (from csvw>=1.5.6->segments->phonemizer) (3.0.1)\n", + "\u001b[K |████████████████████████████████| 210 kB 67.8 MB/s \n", + "\u001b[?25hCollecting colorama\n", + " Downloading colorama-0.4.5-py2.py3-none-any.whl (16 kB)\n", + "Requirement already satisfied: babel in /usr/local/lib/python3.7/dist-packages (from csvw>=1.5.6->segments->phonemizer) (2.10.3)\n", + "Collecting rdflib\n", + " Downloading rdflib-6.2.0-py3-none-any.whl (500 kB)\n", + "\u001b[K |████████████████████████████████| 500 kB 62.5 MB/s \n", + "\u001b[?25hRequirement already satisfied: jsonschema in /usr/local/lib/python3.7/dist-packages (from csvw>=1.5.6->segments->phonemizer) (4.3.3)\n", "Collecting isodate\n", " Downloading isodate-0.6.1-py2.py3-none-any.whl (41 kB)\n", - "\u001b[K |████████████████████████████████| 41 kB 763 kB/s \n", + "\u001b[K |████████████████████████████████| 41 kB 735 kB/s \n", "\u001b[?25hRequirement already satisfied: requests in /usr/local/lib/python3.7/dist-packages (from csvw>=1.5.6->segments->phonemizer) (2.23.0)\n", + "Requirement already satisfied: uritemplate>=3.0.0 in /usr/local/lib/python3.7/dist-packages (from csvw>=1.5.6->segments->phonemizer) (3.0.1)\n", + "Collecting rfc3986<2\n", + " Downloading rfc3986-1.5.0-py2.py3-none-any.whl (31 kB)\n", "Requirement already satisfied: pytz>=2015.7 in /usr/local/lib/python3.7/dist-packages (from babel->csvw>=1.5.6->segments->phonemizer) (2022.2.1)\n", "Requirement already satisfied: six in /usr/local/lib/python3.7/dist-packages (from isodate->csvw>=1.5.6->segments->phonemizer) (1.15.0)\n", - "Requirement already satisfied: pyrsistent!=0.17.0,!=0.17.1,!=0.17.2,>=0.14.0 in /usr/local/lib/python3.7/dist-packages (from jsonschema->csvw>=1.5.6->segments->phonemizer) (0.18.1)\n", "Requirement already satisfied: importlib-resources>=1.4.0 in /usr/local/lib/python3.7/dist-packages (from jsonschema->csvw>=1.5.6->segments->phonemizer) (5.9.0)\n", + "Requirement already satisfied: pyrsistent!=0.17.0,!=0.17.1,!=0.17.2,>=0.14.0 in /usr/local/lib/python3.7/dist-packages (from jsonschema->csvw>=1.5.6->segments->phonemizer) (0.18.1)\n", "Requirement already satisfied: importlib-metadata in /usr/local/lib/python3.7/dist-packages (from jsonschema->csvw>=1.5.6->segments->phonemizer) (4.12.0)\n", "Requirement already satisfied: zipp>=3.1.0 in /usr/local/lib/python3.7/dist-packages (from importlib-resources>=1.4.0->jsonschema->csvw>=1.5.6->segments->phonemizer) (3.8.1)\n", - "Requirement already satisfied: setuptools in /usr/local/lib/python3.7/dist-packages (from rdflib->csvw>=1.5.6->segments->phonemizer) (57.4.0)\n", "Requirement already satisfied: pyparsing in /usr/local/lib/python3.7/dist-packages (from rdflib->csvw>=1.5.6->segments->phonemizer) (3.0.9)\n", - "Requirement already satisfied: chardet<4,>=3.0.2 in /usr/local/lib/python3.7/dist-packages (from requests->csvw>=1.5.6->segments->phonemizer) (3.0.4)\n", - "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.7/dist-packages (from requests->csvw>=1.5.6->segments->phonemizer) (2022.6.15)\n", + "Requirement already satisfied: setuptools in /usr/local/lib/python3.7/dist-packages (from rdflib->csvw>=1.5.6->segments->phonemizer) (57.4.0)\n", "Requirement already satisfied: idna<3,>=2.5 in /usr/local/lib/python3.7/dist-packages (from requests->csvw>=1.5.6->segments->phonemizer) (2.10)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.7/dist-packages (from requests->csvw>=1.5.6->segments->phonemizer) (2022.6.15)\n", + "Requirement already satisfied: chardet<4,>=3.0.2 in /usr/local/lib/python3.7/dist-packages (from requests->csvw>=1.5.6->segments->phonemizer) (3.0.4)\n", "Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /usr/local/lib/python3.7/dist-packages (from requests->csvw>=1.5.6->segments->phonemizer) (1.24.3)\n", "Installing collected packages: isodate, rfc3986, rdflib, language-tags, colorama, csvw, colorlog, clldutils, segments, dlinfo, phonemizer\n", "Successfully installed clldutils-3.12.0 colorama-0.4.5 colorlog-6.7.0 csvw-3.1.1 dlinfo-1.2.1 isodate-0.6.1 language-tags-1.1.0 phonemizer-3.2.1 rdflib-6.2.0 rfc3986-1.5.0 segments-2.2.1\n", @@ -445,20 +487,20 @@ "Successfully installed retry-0.9.2\n", "Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n", "Requirement already satisfied: flask in /usr/local/lib/python3.7/dist-packages (1.1.4)\n", - "Requirement already satisfied: itsdangerous<2.0,>=0.24 in /usr/local/lib/python3.7/dist-packages (from flask) (1.1.0)\n", "Requirement already satisfied: Jinja2<3.0,>=2.10.1 in /usr/local/lib/python3.7/dist-packages (from flask) (2.11.3)\n", - "Requirement already satisfied: Werkzeug<2.0,>=0.15 in /usr/local/lib/python3.7/dist-packages (from flask) (1.0.1)\n", "Requirement already satisfied: click<8.0,>=5.1 in /usr/local/lib/python3.7/dist-packages (from flask) (7.1.2)\n", + "Requirement already satisfied: itsdangerous<2.0,>=0.24 in /usr/local/lib/python3.7/dist-packages (from flask) (1.1.0)\n", + "Requirement already satisfied: Werkzeug<2.0,>=0.15 in /usr/local/lib/python3.7/dist-packages (from flask) (1.0.1)\n", "Requirement already satisfied: MarkupSafe>=0.23 in /usr/local/lib/python3.7/dist-packages (from Jinja2<3.0,>=2.10.1->flask) (2.0.1)\n", "Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n", "Collecting flask_cors\n", " Downloading Flask_Cors-3.0.10-py2.py3-none-any.whl (14 kB)\n", - "Requirement already satisfied: Flask>=0.9 in /usr/local/lib/python3.7/dist-packages (from flask_cors) (1.1.4)\n", "Requirement already satisfied: Six in /usr/local/lib/python3.7/dist-packages (from flask_cors) (1.15.0)\n", - "Requirement already satisfied: itsdangerous<2.0,>=0.24 in /usr/local/lib/python3.7/dist-packages (from Flask>=0.9->flask_cors) (1.1.0)\n", + "Requirement already satisfied: Flask>=0.9 in /usr/local/lib/python3.7/dist-packages (from flask_cors) (1.1.4)\n", "Requirement already satisfied: Jinja2<3.0,>=2.10.1 in /usr/local/lib/python3.7/dist-packages (from Flask>=0.9->flask_cors) (2.11.3)\n", "Requirement already satisfied: Werkzeug<2.0,>=0.15 in /usr/local/lib/python3.7/dist-packages (from Flask>=0.9->flask_cors) (1.0.1)\n", "Requirement already satisfied: click<8.0,>=5.1 in /usr/local/lib/python3.7/dist-packages (from Flask>=0.9->flask_cors) (7.1.2)\n", + "Requirement already satisfied: itsdangerous<2.0,>=0.24 in /usr/local/lib/python3.7/dist-packages (from Flask>=0.9->flask_cors) (1.1.0)\n", "Requirement already satisfied: MarkupSafe>=0.23 in /usr/local/lib/python3.7/dist-packages (from Jinja2<3.0,>=2.10.1->Flask>=0.9->flask_cors) (2.0.1)\n", "Installing collected packages: flask-cors\n", "Successfully installed flask-cors-3.0.10\n" @@ -466,20 +508,61 @@ } ] }, + { + "cell_type": "markdown", + "source": [ + "# サーバの起動\n", + "\n", + "サーバを起動します。(6-1)\n", + "\n", + "サーバの起動状況を確認します。(6-2) \n", + "\n", + "このセルは繰り返し実行することになるのでCtrl+Retでセルを実行してください。\n", + "\n", + "アクセスできるようになるまで、1~2分かかるようです。コーヒーでも飲みに行きましょう。\n", + "\n", + "下記のようなテキストが表示されたら起動完了です。\n", + "\n", + "```\n", + "[2022-08-31 06:48:38,064] INFO in serverFlask: INITIALIZE MODEL\n", + "[2022-08-31 06:48:45,660] INFO in utils: Loaded checkpoint '/content/drive/MyDrive/VoiceChanger/G_326000.pth' (iteration 1136)\n", + "[2022-08-31 06:48:57,329] INFO in serverFlask: START APP\n", + "GPU_NUM: 1\n", + " * Serving Flask app \"serverFlask\" (lazy loading)\n", + " * Environment: production\n", + " WARNING: This is a development server. Do not use it in a production deployment.\n", + " Use a production WSGI server instead.\n", + " * Debug mode: on\n", + "[2022-08-31 06:48:57,336] INFO in _internal: * Running on http://0.0.0.0:8082/ (Press CTRL+C to quit)\n", + "[2022-08-31 06:48:57,337] INFO in _internal: * Restarting with stat\n", + "[2022-08-31 06:48:59,283] INFO in serverFlask: INITIALIZE MODEL\n", + "[2022-08-31 06:49:01,125] INFO in utils: Loaded checkpoint '/content/drive/MyDrive/VoiceChanger/G_326000.pth' (iteration 1136)\n", + "[2022-08-31 06:49:04,996] INFO in serverFlask: START APP\n", + "[2022-08-31 06:49:05,002] WARNING in _internal: * Debugger is active!\n", + "[2022-08-31 06:49:05,074] INFO in _internal: * Debugger PIN: 879-442-767\n", + "```\n", + "\n" + ], + "metadata": { + "id": "-_2OcN9Borke" + } + }, { "cell_type": "code", "source": [ + "# (6-1) サーバの起動\n", "get_ipython().system_raw(f'python3 serverFlask.py 8082 {CONFIG} {MODEL} >foo 2>&1 &')" ], "metadata": { "id": "iNOAB7zISI6J" }, - "execution_count": null, + "execution_count": 9, "outputs": [] }, { "cell_type": "code", "source": [ + "# (6-2) サーバの起動確認 (Ctrl+Retで実行)\n", "!cat foo" ], "metadata": { @@ -487,23 +570,60 @@ "base_uri": "https://localhost:8080/" }, "id": "chu06KpAjEK6", - "outputId": "887c2d50-c49f-4a22-f0d0-8a3667511466" + "outputId": "2f203b23-54a3-4d0b-e173-c8f2628c0dd0" }, - "execution_count": null, + "execution_count": 14, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ - "[2022-08-31 06:17:58,669] INFO in serverFlask: INITIALIZE MODEL\n", - "[2022-08-31 06:18:08,764] INFO in utils: Loaded checkpoint '/content/drive/MyDrive/VoiceChanger/G_326000.pth' (iteration 1136)\n" + "[2022-08-31 06:48:38,064] INFO in serverFlask: INITIALIZE MODEL\n", + "[2022-08-31 06:48:45,660] INFO in utils: Loaded checkpoint '/content/drive/MyDrive/VoiceChanger/G_326000.pth' (iteration 1136)\n", + "[2022-08-31 06:48:57,329] INFO in serverFlask: START APP\n", + "GPU_NUM: 1\n", + " * Serving Flask app \"serverFlask\" (lazy loading)\n", + " * Environment: production\n", + " WARNING: This is a development server. Do not use it in a production deployment.\n", + " Use a production WSGI server instead.\n", + " * Debug mode: on\n", + "[2022-08-31 06:48:57,336] INFO in _internal: * Running on http://0.0.0.0:8082/ (Press CTRL+C to quit)\n", + "[2022-08-31 06:48:57,337] INFO in _internal: * Restarting with stat\n", + "[2022-08-31 06:48:59,283] INFO in serverFlask: INITIALIZE MODEL\n", + "[2022-08-31 06:49:01,125] INFO in utils: Loaded checkpoint '/content/drive/MyDrive/VoiceChanger/G_326000.pth' (iteration 1136)\n", + "[2022-08-31 06:49:04,996] INFO in serverFlask: START APP\n", + "[2022-08-31 06:49:05,002] WARNING in _internal: * Debugger is active!\n", + "[2022-08-31 06:49:05,074] INFO in _internal: * Debugger PIN: 879-442-767\n" ] } ] }, + { + "cell_type": "markdown", + "source": [ + "# プロキシを起動\n", + "ウェブサーバへのアクセスをするためのプロキシを起動します。\n", + "\n", + "表示されたURLをクリックして開くと、\n", + "\n", + "**うまくページが表示されていないと思います**。\n", + "\n", + "また、アドレスバーには\"localhost\"とは異なるURLが表示されていると思います。\n", + "\n", + "**そのURLの末尾に/index.htmlを追加してアクセス**\n", + "\n", + "しなおしてください。\n", + "\n", + "ちなみに、Colabなので、ロードにある程度時間がかかります(30秒くらい)。" + ], + "metadata": { + "id": "WhxcFLQEpctq" + } + }, { "cell_type": "code", "source": [ + "# (7) プロキシを起動\n", "from google.colab import output\n", "\n", "output.serve_kernel_port_as_window(8082)" @@ -514,9 +634,9 @@ "base_uri": "https://localhost:8080/", "height": 34 }, - "outputId": "abf57f92-5cb6-4325-b64a-095d42f561d5" + "outputId": "84879cea-2a09-428a-d707-857bc43d5cb1" }, - "execution_count": null, + "execution_count": 15, "outputs": [ { "output_type": "display_data", @@ -544,29 +664,6 @@ } ] }, - { - "cell_type": "code", - "source": [ - "! ls ../frontend/dist/index.html" - ], - "metadata": { - "id": "DKWni4moSyzO", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "b5635a1e-6ac6-41db-a706-dc3e5fb866a5" - }, - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "../frontend/dist/index.html\n" - ] - } - ] - }, { "cell_type": "code", "source": [],