{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "provenance": [], "include_colab_link": true }, "kernelspec": { "name": "python3", "display_name": "Python 3" }, "language_info": { "name": "python" }, "gpuClass": "standard", "accelerator": "GPU" }, "cells": [ { "cell_type": "markdown", "metadata": { "id": "view-in-github", "colab_type": "text" }, "source": [ "\"Open" ] }, { "cell_type": "markdown", "source": [ "# このノートブックは管理されていません。\n", "# VCClientをColabで使用する場合は、次のノートブックをご使用ください。\n", "\n", "# This notebook is not being managed.\n", "# If you're using VCClient in Colab, please use the following notebook.\n", "\n", "https://github.com/w-okada/voice-changer/blob/master/Realtime_Voice_Changer_on_Colab.ipynb\n", "\n", "\n" ], "metadata": { "id": "_41LkcbiwUFK" } }, { "cell_type": "markdown", "source": [ "Voice Changer Simple (デモ版)\n", "---\n", "\n", "このノートはVoice ChangerをColab上で動かすデモ版です。\n", "\n", "正式版はローカルPCのDocker上で動かすアプリケーションです。\n", "\n", "正式版は、多くの場合より少ないタイムラグで滑らかに音声を変換できます。\n", "\n", "詳細な使用方法はこちらの[リポジトリ](https://github.com/w-okada/voice-changer)からご確認ください。\n" ], "metadata": { "id": "Lbbmx_Vjl0zo" } }, { "cell_type": "markdown", "source": [ "# GPUを確認\n", "GPUを用いたほうが高速に処理が行えます。\n", "\n", "下記のコマンドでGPUが確認できない場合は、上のメニューから\n", "\n", "「ランタイム」→「ランタイムの変更」→「ハードウェア アクセラレータ」\n", "\n", "でGPUを選択してください。" ], "metadata": { "id": "oUKi1NYMmXrr" } }, { "cell_type": "code", "source": [ "# (1) GPUの確認\n", "!nvidia-smi" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "vV1t7PBRm-o6", "outputId": "4f159c80-8114-4732-f5af-0856f7b5c39a" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Sat Dec 10 23:45:44 2022 \n", "+-----------------------------------------------------------------------------+\n", "| NVIDIA-SMI 460.32.03 Driver Version: 460.32.03 CUDA Version: 11.2 |\n", "|-------------------------------+----------------------+----------------------+\n", "| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |\n", "| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |\n", "| | | MIG M. |\n", "|===============================+======================+======================|\n", "| 0 Tesla T4 Off | 00000000:00:04.0 Off | 0 |\n", "| N/A 70C P0 31W / 70W | 0MiB / 15109MiB | 0% Default |\n", "| | | N/A |\n", "+-------------------------------+----------------------+----------------------+\n", " \n", "+-----------------------------------------------------------------------------+\n", "| Processes: |\n", "| GPU GI CI PID Type Process name GPU Memory |\n", "| ID ID Usage |\n", "|=============================================================================|\n", "| No running processes found |\n", "+-----------------------------------------------------------------------------+\n" ] } ] }, { "cell_type": "markdown", "source": [ "# リポジトリのクローン\n", "リポジトリをクローンします" ], "metadata": { "id": "sLBfykjBnjWc" } }, { "cell_type": "code", "source": [ "# (2) リポジトリのクローン\n", "!git clone --depth 1 https://github.com/w-okada/voice-changer.git -b dev\n", "%cd voice-changer/demo/\n", "\n", "!cp ../template/setting_mmvc_colab.json ../frontend/dist/assets/setting.json" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "86wTFmqsNMnD", "outputId": "3f84319c-0365-442a-fa3a-0a8aea701926" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Cloning into 'voice-changer'...\n", "remote: Enumerating objects: 1029, done.\u001b[K\n", "remote: Counting objects: 100% (1029/1029), done.\u001b[K\n", "remote: Compressing objects: 100% (919/919), done.\u001b[K\n", "remote: Total 1029 (delta 21), reused 979 (delta 10), pack-reused 0\u001b[K\n", "Receiving objects: 100% (1029/1029), 71.87 MiB | 26.18 MiB/s, done.\n", "Resolving deltas: 100% (21/21), done.\n", "/content/voice-changer/demo\n" ] } ] }, { "cell_type": "markdown", "source": [ "# モジュールのインストール\n", "\n", "必要なモジュールをインストールします。" ], "metadata": { "id": "8Na2PbLZSWgZ" } }, { "cell_type": "code", "source": [ "# (3) 設定ファイルの確認\n", "!apt-get install -y espeak libsndfile1-dev &> /dev/null\n", "!pip install unidecode &> /dev/null\n", "!pip install phonemizer &> /dev/null\n", "!pip install retry &> /dev/null\n", "!pip install python-socketio &> /dev/null\n", "!pip install fastapi &> /dev/null\n", "!pip install python-multipart &> /dev/null\n", "!pip install uvicorn &> /dev/null\n", "!pip install websockets &> /dev/null\n", "!pip install pyOpenSSL &> /dev/null\n", "!pip install pyopenjtalk==0.2.0 &> /dev/null\n", "\n", "%cd MMVC_Trainer/monotonic_align/\n", "!python setup.py build_ext --inplace\n", "%cd ../../" ], "metadata": { "id": "LwZAAuqxX7yY", "outputId": "61526e29-97d9-4975-e921-4ca9ae5a153f", "colab": { "base_uri": "https://localhost:8080/" } }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "/content/voice-changer/demo/MMVC_Trainer/monotonic_align\n", "running build_ext\n", "building 'monotonic_align.core' extension\n", "creating build\n", "creating build/temp.linux-x86_64-3.8\n", "x86_64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/local/lib/python3.8/dist-packages/numpy/core/include -I/usr/include/python3.8 -c core.c -o build/temp.linux-x86_64-3.8/core.o\n", "x86_64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -g -fwrapv -O2 -Wl,-Bsymbolic-functions -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 build/temp.linux-x86_64-3.8/core.o -o /content/voice-changer/demo/MMVC_Trainer/monotonic_align/monotonic_align/core.cpython-38-x86_64-linux-gnu.so\n", "/content/voice-changer/demo\n" ] } ] }, { "cell_type": "markdown", "source": [ "# サーバの起動\n", "\n", "サーバを起動します。(4-1)\n", "\n", "サーバの起動状況を確認します。(4-2)\n", "\n", "このセルは繰り返し実行することになるのでCtrl+Retでセルを実行してください。\n", "\n", "下記のようなテキストが表示されたら起動完了です。\n", "\n", "**`DEBUG:asyncio:Using selector: EpollSelector`**\n", "\n", "```\n", " Phase name:__main__\n", " PHASE3:__main__\n", " PHASE1:__main__\n", "Start MMVC SocketIO Server\n", " CONFIG:None, MODEL:None\n", "DEBUG:asyncio:Using selector: EpollSelector\n", "```\n", "\n" ], "metadata": { "id": "-_2OcN9Borke" } }, { "cell_type": "code", "source": [ "# (4-1) サーバの起動\n", "import random\n", "PORT = 10000 + random.randint(1, 9999)\n", "LOG_FILE = f\"LOG_FILE_{PORT}\"\n", "\n", "get_ipython().system_raw(f'python3 MMVCServerSIO.py -p {PORT} --colab True >{LOG_FILE} 2>&1 &')\n", "#print(f\"PORT:{PORT}, LOG_FILE:{LOG_FILE}\")" ], "metadata": { "id": "G-nMdPxEW1rc" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "# (4-2) サーバの起動確認\n", "!sleep 5\n", "!tail -20 {LOG_FILE}" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "chu06KpAjEK6", "outputId": "51b4979c-91b7-4c95-eb4b-40ea001042a9" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "\u001b[32m Phase name:__main__\u001b[0m\n", "\u001b[32m PHASE3:__main__\u001b[0m\n", "\u001b[32m PHASE1:__main__\u001b[0m\n", "\u001b[17mStart MMVC SocketIO Server\u001b[0m\n", "\u001b[34m CONFIG:None, MODEL:None\u001b[0m\n", "DEBUG:asyncio:Using selector: EpollSelector\n" ] } ] }, { "cell_type": "markdown", "source": [ "# プロキシを起動\n", "ウェブサーバへのアクセスをするためのプロキシを起動します。\n", "\n", "表示されたURLをクリックして開くと別タブでアプリが開きます。\n", "\n", "Colabなので、ロードにある程度時間がかかります(30秒くらい)。" ], "metadata": { "id": "WhxcFLQEpctq" } }, { "cell_type": "code", "source": [ "# (5) プロキシを起動\n", "from google.colab.output import eval_js\n", "proxy = eval_js( \"google.colab.kernel.proxyPort(\" + str(PORT) + \")\" )\n", "print(f\"{proxy}trainer/\")" ], "metadata": { "id": "nkRjZm95l87C", "colab": { "base_uri": "https://localhost:8080/", "height": 34 }, "outputId": "bcca9fae-642c-42f6-f3a5-a8bb0789090f" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "https://vljlzcgk39q-496ff2e9c6d22116-17357-colab.googleusercontent.com/trainer/\n" ] } ] }, { "cell_type": "code", "source": [], "metadata": { "id": "s1aWiBg-cTle" }, "execution_count": null, "outputs": [] } ] }