From 2b1f2b20454d968bb4b224bdafc0ab37c6dd71d0 Mon Sep 17 00:00:00 2001 From: Blaise Date: Mon, 9 Dec 2024 21:25:11 +0100 Subject: [PATCH] Remove link --- app.py | 2 +- assets/Applio.ipynb | 900 ++++++++++++++++++------------------- assets/Applio_Kaggle.ipynb | 474 +++++++++---------- assets/Applio_NoUI.ipynb | 2 +- 4 files changed, 689 insertions(+), 689 deletions(-) diff --git a/app.py b/app.py index 8da0b3f5..c4baf71f 100644 --- a/app.py +++ b/app.py @@ -83,7 +83,7 @@ ) gr.Markdown( i18n( - "[Support](https://discord.gg/urxFjYmYYh) — [Discord Bot](https://discord.com/oauth2/authorize?client_id=1144714449563955302&permissions=1376674695271&scope=bot%20applications.commands) — [Find Voices](https://applio.org/models) — [GitHub](https://github.com/IAHispano/Applio)" + "[Support](https://discord.gg/urxFjYmYYh) — [Discord Bot](https://discord.com/oauth2/authorize?client_id=1144714449563955302&permissions=1376674695271&scope=bot%20applications.commands) — [GitHub](https://github.com/IAHispano/Applio)" ) ) with gr.Tab(i18n("Inference")): diff --git a/assets/Applio.ipynb b/assets/Applio.ipynb index 48099fb3..8f3c1bbc 100644 --- a/assets/Applio.ipynb +++ b/assets/Applio.ipynb @@ -1,453 +1,453 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "ymhGfgFSR17k" - }, - "source": [ - "## **Applio**\n", - "A simple, high-quality voice conversion tool focused on ease of use and performance.\n", - "\n", - "[Support](https://discord.gg/urxFjYmYYh) — [Discord Bot](https://discord.com/oauth2/authorize?client_id=1144714449563955302&permissions=1376674695271&scope=bot%20applications.commands) — [Find Voices](https://applio.org/models) — [GitHub](https://github.com/IAHispano/Applio)\n", - "\n", - "
\n", - "\n", - "### **Credits**\n", - "- Encryption method: [Hina](https://github.com/hinabl)\n", - "- Extra section: [Poopmaster](https://github.com/poiqazwsx)\n", - "- Main development: [Applio Team](https://github.com/IAHispano)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "cellView": "form", - "id": "vtON700qokuQ" - }, - "outputs": [], - "source": [ - "# @title **Install Applio**\n", - "import os\n", - "import codecs\n", - "import shutil\n", - "import tarfile\n", - "import subprocess\n", - "\n", - "from pathlib import Path\n", - "from IPython.display import clear_output\n", - "\n", - "rot_47 = lambda encoded_text: \"\".join(\n", - " [\n", - " (\n", - " chr(\n", - " (ord(c) - (ord(\"a\") if c.islower() else ord(\"A\")) - 47) % 26\n", - " + (ord(\"a\") if c.islower() else ord(\"A\"))\n", - " )\n", - " if c.isalpha()\n", - " else c\n", - " )\n", - " for c in encoded_text\n", - " ]\n", - ")\n", - "\n", - "org_name = rot_47(\"Vkkgdj\")\n", - "new_name = rot_47(\"kmjbmvh_hg\")\n", - "uioawhd = rot_47(codecs.decode(\"pbbxa://oqbpcj.kwu/QIPqaxivw/Ixxtqw.oqb\", \"rot_13\"))\n", - "uyadwa = codecs.decode(\"ncc.cl\", \"rot_13\")\n", - "A = \"/content/\" + rot_47(\"Kikpm.ovm.bu\")\n", - "!git clone --depth 1 $uioawhd $new_name --branch 3.2.7 --single-branch\n", - "%cd $new_name/\n", - "clear_output()\n", - "def vidal_setup():\n", - " A = \"/content/\" + rot_47(\"Kikpm.ovm.bu\")\n", - "\n", - " D = \"/\"\n", - " if not os.path.exists(A):\n", - " M = os.path.dirname(A)\n", - " os.makedirs(M, exist_ok=True)\n", - " print(\"No cached install found..\")\n", - " try:\n", - " N = codecs.decode(\n", - " \"uggcf://uhttvatsnpr.pb/VNUvfcnab/Nccyvb/erfbyir/znva/Raivebzrag/Pbyno/Cache.gne.tm\",\n", - " \"rot_13\",\n", - " )\n", - " subprocess.run([\"wget\", \"-O\", A, N])\n", - " print(\"Download completed successfully!\")\n", - " except Exception as H:\n", - " print(str(H))\n", - " if os.path.exists(A):\n", - " os.remove(A)\n", - " if Path(A).exists():\n", - " with tarfile.open(A, \"r:gz\") as I:\n", - " I.extractall(D)\n", - " print(f\"Extraction of {A} to {D} completed.\")\n", - " if os.path.exists(A):\n", - " os.remove(A)\n", - "\n", - "vidal_setup()\n", - "!pip uninstall torch torchvision torchaudio -y\n", - "!pip install pydantic==2.8.2 fastapi==0.112.0 starlette==0.37.2\n", - "!pip install torch==2.3.1 torchvision==0.18.1 torchaudio==2.3.1 --upgrade --index-url https://download.pytorch.org/whl/cu121\n", - "clear_output()\n", - "print(\"Finished installing requirements! \")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "cellView": "form", - "id": "-7cQtXouqpQi" - }, - "outputs": [], - "source": [ - "# @title **Start Applio**\n", - "# @markdown ### Just activate this in case the share link of the gradio dont work\n", - "import codecs\n", - "import threading\n", - "import urllib.request\n", - "import time\n", - "import ipywidgets as widgets\n", - "from IPython.display import display\n", - "import os\n", - "os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'\n", - "!npm install -g localtunnel &>/dev/null\n", - "share_tunnel = False # @param {type:\"boolean\"}\n", - "def start_applio():\n", - " if share_tunnel:\n", - " !python $uyadwa --listen\n", - " else:\n", - " !python $uyadwa --listen --share\n", - "\n", - "%load_ext tensorboard\n", - "%reload_ext tensorboard\n", - "%tensorboard --logdir logs --bind_all\n", - "\n", - "if \"autobackups\" not in globals():\n", - " autobackups = False\n", - "\n", - "if autobackups:\n", - " thread = threading.Thread(target=backup_files)\n", - " thread.start()\n", - "\n", - "thread_applio = threading.Thread(target=start_applio)\n", - "thread_applio.start()\n", - "\n", - "if share_tunnel:\n", - " if not os.path.exists(codecs.decode(\"eip/zbqryf/cergenvarqf/cergenvarq_i2/s0T48x.cgu\", \"rot_13\")):\n", - " while not os.path.exists(codecs.decode(\"eip/zbqryf/cergenvarqf/cergenvarq_i2/s0T48x.cgu\", \"rot_13\")):\n", - " time.sleep(2)\n", - " time.sleep(5)\n", - " else:\n", - " time.sleep(10)\n", - " with open('url.txt', 'w') as file:\n", - " file.write('')\n", - "\n", - " get_ipython().system_raw('lt --port 6969 >> url.txt 2>&1 &')\n", - "\n", - " time.sleep(4)\n", - "\n", - " endpoint_ip = urllib.request.urlopen('https://ipv4.icanhazip.com').read().decode('utf8').strip(\"\\n\")\n", - "\n", - " with open('url.txt', 'r') as file:\n", - " tunnel_url = file.read()\n", - " tunnel_url = tunnel_url.replace(\"your url is: \", \"\")\n", - "\n", - " print(f\"Share Link: \\033[0m\\033[93m{tunnel_url}\\033[0m\", end=\"\\033[0m\\n\")\n", - "\n", - " password_endpoint_widget = widgets.Text(\n", - " value=endpoint_ip,\n", - " description='Password IP:',\n", - " disabled=True\n", - " )\n", - " display(password_endpoint_widget)\n", - "\n", - "\n", - "\n", - "while True:\n", - " time.sleep(5)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "3b59-2x-qEnX" - }, - "source": [ - "### **Extra**\n", - "Enjoy extra options that can make it easier for you to use Applio\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "cellView": "form", - "id": "19LNv6iYqF6_" - }, - "outputs": [], - "source": [ - "# @title Mount Drive\n", - "# @markdown Mount the files from Google Drive to the Colab.\n", - "from google.colab import drive\n", - "\n", - "drive.mount(\"/content/drive\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "cellView": "form", - "id": "I5o6MlpFouiG" - }, - "outputs": [], - "source": [ - "# @title Auto Backup\n", - "# @markdown When running it, it will be activated or deactivated previously to start up together with Applio.\n", - "import os\n", - "import shutil\n", - "import time\n", - "\n", - "LOGS_FOLDER = \"/content/program_ml/logs/\"\n", - "GOOGLE_DRIVE_PATH = \"/content/drive/MyDrive/ApplioBackup\"\n", - "\n", - "if \"autobackups\" not in globals():\n", - " autobackups = False\n", - "\n", - "cooldown = 15 # @param {type:\"slider\", min:0, max:100, step:0}\n", - "def backup_files():\n", - " print(\"\\nStarting backup loop...\")\n", - " last_backup_timestamps_path = os.path.join(\n", - " LOGS_FOLDER, \"last_backup_timestamps.txt\"\n", - " )\n", - " fully_updated = False\n", - "\n", - " while True:\n", - " try:\n", - " updated_files = 0\n", - " deleted_files = 0\n", - " new_files = 0\n", - " last_backup_timestamps = {}\n", - "\n", - " try:\n", - " with open(last_backup_timestamps_path, \"r\") as f:\n", - " last_backup_timestamps = dict(line.strip().split(\":\") for line in f)\n", - " except FileNotFoundError:\n", - " pass\n", - "\n", - " for root, dirs, files in os.walk(LOGS_FOLDER):\n", - " # Excluding \"zips\" and \"mute\" directories\n", - " if \"zips\" in dirs:\n", - " dirs.remove(\"zips\")\n", - " if \"mute\" in dirs:\n", - " dirs.remove(\"mute\")\n", - "\n", - " for filename in files:\n", - " if filename != \"last_backup_timestamps.txt\":\n", - " filepath = os.path.join(root, filename)\n", - " if os.path.isfile(filepath):\n", - " backup_filepath = os.path.join(\n", - " GOOGLE_DRIVE_PATH,\n", - " os.path.relpath(filepath, LOGS_FOLDER),\n", - " )\n", - " backup_folderpath = os.path.dirname(backup_filepath)\n", - " if not os.path.exists(backup_folderpath):\n", - " os.makedirs(backup_folderpath)\n", - " last_backup_timestamp = last_backup_timestamps.get(filepath)\n", - " current_timestamp = os.path.getmtime(filepath)\n", - " if (\n", - " last_backup_timestamp is None\n", - " or float(last_backup_timestamp) < current_timestamp\n", - " ):\n", - " shutil.copy2(filepath, backup_filepath)\n", - " last_backup_timestamps[filepath] = str(current_timestamp)\n", - " if last_backup_timestamp is None:\n", - " new_files += 1\n", - " else:\n", - " updated_files += 1\n", - "\n", - "\n", - " for filepath in list(last_backup_timestamps.keys()):\n", - " if not os.path.exists(filepath):\n", - " backup_filepath = os.path.join(\n", - " GOOGLE_DRIVE_PATH, os.path.relpath(filepath, LOGS_FOLDER)\n", - " )\n", - " if os.path.exists(backup_filepath):\n", - " os.remove(backup_filepath)\n", - " deleted_files += 1\n", - " del last_backup_timestamps[filepath]\n", - "\n", - "\n", - " if updated_files > 0 or deleted_files > 0 or new_files > 0:\n", - " print(f\"Backup Complete: {new_files} new, {updated_files} updated, {deleted_files} deleted.\")\n", - " fully_updated = False\n", - " elif not fully_updated:\n", - " print(\"Files are up to date.\")\n", - " fully_updated = True\n", - "\n", - " with open(last_backup_timestamps_path, \"w\") as f:\n", - " for filepath, timestamp in last_backup_timestamps.items():\n", - " f.write(f\"{filepath}:{timestamp}\\n\")\n", - "\n", - " time.sleep(cooldown if fully_updated else 0.1)\n", - "\n", - "\n", - " except Exception as error:\n", - " print(f\"An error occurred during backup: {error}\")\n", - "\n", - "\n", - "if autobackups:\n", - " autobackups = False\n", - " print(\"Autobackup Disabled\")\n", - "else:\n", - " autobackups = True\n", - " print(\"Autobackup Enabled\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "cellView": "form", - "id": "-vIzj7pye8Z0" - }, - "outputs": [], - "source": [ - "# @title Setup new logs folder format\n", - "# @markdown Put the exact name you put as your Model Name in Applio.\n", - "modelname = \"My-Project\" # @param {type:\"string\"}\n", - "logs_folder = f\"/content/program_ml/logs/{modelname}/\"\n", - "\n", - "import os\n", - "\n", - "folder_renames = {\n", - " \"0_gt_wavs\": \"sliced_audios\",\n", - " \"1_16k_wavs\": \"sliced_audios_16k\",\n", - " \"2a_f0\": \"f0\",\n", - " \"2b-f0nsf\": \"f0_voiced\",\n", - " \"3_feature768\": \"v2_extracted\"\n", - "}\n", - "\n", - "def rename_folders(base_path, rename_dict):\n", - " for old_name, new_name in rename_dict.items():\n", - " old_path = os.path.join(base_path, old_name)\n", - " new_path = os.path.join(base_path, new_name)\n", - " if os.path.exists(old_path):\n", - " os.rename(old_path, new_path)\n", - " print(f\"Renamed {old_path} to {new_path}\")\n", - " else:\n", - " print(f\"Folder {old_path} does not exist\")\n", - "\n", - "rename_folders(logs_folder, folder_renames)\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "cellView": "form", - "id": "ifV_vc4h4Uvx" - }, - "outputs": [], - "source": [ - "# @title Load a Backup\n", - "from google.colab import drive\n", - "import os\n", - "\n", - "# @markdown Put the exact name you put as your Model Name in Applio.\n", - "modelname = \"My-Project\" # @param {type:\"string\"}\n", - "source_path = \"/content/drive/MyDrive/ApplioBackup/\" + modelname\n", - "destination_path = \"/content/program_ml/logs/\" + modelname\n", - "backup_timestamps_file = \"last_backup_timestamps.txt\"\n", - "if not os.path.exists(source_path):\n", - " print(\n", - " \"The model folder does not exist. Please verify the name is correct or check your Google Drive.\"\n", - " )\n", - "else:\n", - " time_ = os.path.join(\"/content/drive/MyDrive/ApplioBackup/\", backup_timestamps_file)\n", - " time__ = os.path.join(\"/content/program_ml/logs/\", backup_timestamps_file)\n", - " if os.path.exists(time_):\n", - " shutil.copy(time_, time__)\n", - " shutil.copytree(source_path, destination_path)\n", - " print(\"Model backup loaded successfully.\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "cellView": "form", - "id": "leWbhk1X4XoY" - }, - "outputs": [], - "source": [ - "# @title Download all custom pretrains\n", - "import os\n", - "import urllib.request\n", - "\n", - "%mkdir /content/program_ml/rvc/models/pretraineds/pretraineds_custom\n", - "pretrained_urls = [\n", - " # Ov2 Super\n", - " \"https://huggingface.co/ORVC/Ov2Super/resolve/main/f0Ov2Super32kG.pth\",\n", - " \"https://huggingface.co/ORVC/Ov2Super/resolve/main/f0Ov2Super32kD.pth\",\n", - " \"https://huggingface.co/ORVC/Ov2Super/resolve/main/f0Ov2Super40kG.pth\",\n", - " \"https://huggingface.co/ORVC/Ov2Super/resolve/main/f0Ov2Super40kD.pth\",\n", - "\n", - " # TITAN\n", - " \"https://huggingface.co/blaise-tk/TITAN/resolve/main/models/medium/40k/pretrained/G-f040k-TITAN-Medium.pth\",\n", - " \"https://huggingface.co/blaise-tk/TITAN/resolve/main/models/medium/40k/pretrained/D-f040k-TITAN-Medium.pth\",\n", - " \"https://huggingface.co/blaise-tk/TITAN/resolve/main/models/medium/32k/pretrained/G-f032k-TITAN-Medium.pth\",\n", - " \"https://huggingface.co/blaise-tk/TITAN/resolve/main/models/medium/32k/pretrained/D-f032k-TITAN-Medium.pth\",\n", - "\n", - " # Snowie V3\n", - " \"https://huggingface.co/MUSTAR/SnowieV3.1-32k/resolve/main/D_SnowieV3.1_32k.pth\",\n", - " \"https://huggingface.co/MUSTAR/SnowieV3.1-32k/resolve/main/G_SnowieV3.1_32k.pth\",\n", - " \"https://huggingface.co/MUSTAR/SnowieV3.1-40k/resolve/main/G_SnowieV3.1_40k.pth\",\n", - " \"https://huggingface.co/MUSTAR/SnowieV3.1-40k/resolve/main/D_SnowieV3.1_40k.pth\",\n", - " \"https://huggingface.co/MUSTAR/SnowieV3.1-48k/resolve/main/G_SnowieV3.1_48k.pth\",\n", - " \"https://huggingface.co/MUSTAR/SnowieV3.1-48k/resolve/main/D_SnowieV3.1_48k.pth\",\n", - "\n", - " # RIN E3\n", - " \"https://huggingface.co/MUSTAR/RIN_E3/resolve/main/RIN_E3_G.pth\",\n", - " \"https://huggingface.co/MUSTAR/RIN_E3/resolve/main/RIN_E3_D.pth\",\n", - "\n", - " # KLM\n", - " \"https://huggingface.co/SeoulStreamingStation/KLM4.1/resolve/main/D_KLM41_32k.pth\",\n", - " \"https://huggingface.co/SeoulStreamingStation/KLM4.1/resolve/main/G_KLM41_32k.pth\",\n", - " \"https://huggingface.co/SeoulStreamingStation/KLM4.1/resolve/main/D_KLM41_48k.pth\",\n", - " \"https://huggingface.co/SeoulStreamingStation/KLM4.1/resolve/main/G_KLM41_48k.pth\",\n", - "\n", - " # SnowieV3 X RIN_E3\n", - " \"https://huggingface.co/MUSTAR/SnowieV3.1-X-RinE3-40K/resolve/main/D_Snowie-X-Rin_40k.pth\",\n", - " \"https://huggingface.co/MUSTAR/SnowieV3.1-X-RinE3-40K/resolve/main/G_Snowie-X-Rin_40k.pth\",\n", - "]\n", - "output_directory = \"/content/program_ml/rvc/models/pretraineds/pretraineds_custom\"\n", - "for url in pretrained_urls:\n", - " filename = os.path.join(output_directory, os.path.basename(url))\n", - " urllib.request.urlretrieve(url, filename)" - ] - } - ], - "metadata": { - "accelerator": "GPU", - "colab": { - "collapsed_sections": [ - "3b59-2x-qEnX" - ], - "gpuType": "T4", - "provenance": [] - }, - "kernelspec": { - "display_name": "Python 3", - "name": "python3" - }, - "language_info": { - "name": "python" - } + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "ymhGfgFSR17k" + }, + "source": [ + "## **Applio**\n", + "A simple, high-quality voice conversion tool focused on ease of use and performance.\n", + "\n", + "[Support](https://discord.gg/urxFjYmYYh) — [Discord Bot](https://discord.com/oauth2/authorize?client_id=1144714449563955302&permissions=1376674695271&scope=bot%20applications.commands) — [GitHub](https://github.com/IAHispano/Applio)\n", + "\n", + "
\n", + "\n", + "### **Credits**\n", + "- Encryption method: [Hina](https://github.com/hinabl)\n", + "- Extra section: [Poopmaster](https://github.com/poiqazwsx)\n", + "- Main development: [Applio Team](https://github.com/IAHispano)" + ] }, - "nbformat": 4, - "nbformat_minor": 0 + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "cellView": "form", + "id": "vtON700qokuQ" + }, + "outputs": [], + "source": [ + "# @title **Install Applio**\n", + "import os\n", + "import codecs\n", + "import shutil\n", + "import tarfile\n", + "import subprocess\n", + "\n", + "from pathlib import Path\n", + "from IPython.display import clear_output\n", + "\n", + "rot_47 = lambda encoded_text: \"\".join(\n", + " [\n", + " (\n", + " chr(\n", + " (ord(c) - (ord(\"a\") if c.islower() else ord(\"A\")) - 47) % 26\n", + " + (ord(\"a\") if c.islower() else ord(\"A\"))\n", + " )\n", + " if c.isalpha()\n", + " else c\n", + " )\n", + " for c in encoded_text\n", + " ]\n", + ")\n", + "\n", + "org_name = rot_47(\"Vkkgdj\")\n", + "new_name = rot_47(\"kmjbmvh_hg\")\n", + "uioawhd = rot_47(codecs.decode(\"pbbxa://oqbpcj.kwu/QIPqaxivw/Ixxtqw.oqb\", \"rot_13\"))\n", + "uyadwa = codecs.decode(\"ncc.cl\", \"rot_13\")\n", + "A = \"/content/\" + rot_47(\"Kikpm.ovm.bu\")\n", + "!git clone --depth 1 $uioawhd $new_name --branch 3.2.7 --single-branch\n", + "%cd $new_name/\n", + "clear_output()\n", + "def vidal_setup():\n", + " A = \"/content/\" + rot_47(\"Kikpm.ovm.bu\")\n", + "\n", + " D = \"/\"\n", + " if not os.path.exists(A):\n", + " M = os.path.dirname(A)\n", + " os.makedirs(M, exist_ok=True)\n", + " print(\"No cached install found..\")\n", + " try:\n", + " N = codecs.decode(\n", + " \"uggcf://uhttvatsnpr.pb/VNUvfcnab/Nccyvb/erfbyir/znva/Raivebzrag/Pbyno/Cache.gne.tm\",\n", + " \"rot_13\",\n", + " )\n", + " subprocess.run([\"wget\", \"-O\", A, N])\n", + " print(\"Download completed successfully!\")\n", + " except Exception as H:\n", + " print(str(H))\n", + " if os.path.exists(A):\n", + " os.remove(A)\n", + " if Path(A).exists():\n", + " with tarfile.open(A, \"r:gz\") as I:\n", + " I.extractall(D)\n", + " print(f\"Extraction of {A} to {D} completed.\")\n", + " if os.path.exists(A):\n", + " os.remove(A)\n", + "\n", + "vidal_setup()\n", + "!pip uninstall torch torchvision torchaudio -y\n", + "!pip install pydantic==2.8.2 fastapi==0.112.0 starlette==0.37.2\n", + "!pip install torch==2.3.1 torchvision==0.18.1 torchaudio==2.3.1 --upgrade --index-url https://download.pytorch.org/whl/cu121\n", + "clear_output()\n", + "print(\"Finished installing requirements! \")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "cellView": "form", + "id": "-7cQtXouqpQi" + }, + "outputs": [], + "source": [ + "# @title **Start Applio**\n", + "# @markdown ### Just activate this in case the share link of the gradio dont work\n", + "import codecs\n", + "import threading\n", + "import urllib.request\n", + "import time\n", + "import ipywidgets as widgets\n", + "from IPython.display import display\n", + "import os\n", + "os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'\n", + "!npm install -g localtunnel &>/dev/null\n", + "share_tunnel = False # @param {type:\"boolean\"}\n", + "def start_applio():\n", + " if share_tunnel:\n", + " !python $uyadwa --listen\n", + " else:\n", + " !python $uyadwa --listen --share\n", + "\n", + "%load_ext tensorboard\n", + "%reload_ext tensorboard\n", + "%tensorboard --logdir logs --bind_all\n", + "\n", + "if \"autobackups\" not in globals():\n", + " autobackups = False\n", + "\n", + "if autobackups:\n", + " thread = threading.Thread(target=backup_files)\n", + " thread.start()\n", + "\n", + "thread_applio = threading.Thread(target=start_applio)\n", + "thread_applio.start()\n", + "\n", + "if share_tunnel:\n", + " if not os.path.exists(codecs.decode(\"eip/zbqryf/cergenvarqf/cergenvarq_i2/s0T48x.cgu\", \"rot_13\")):\n", + " while not os.path.exists(codecs.decode(\"eip/zbqryf/cergenvarqf/cergenvarq_i2/s0T48x.cgu\", \"rot_13\")):\n", + " time.sleep(2)\n", + " time.sleep(5)\n", + " else:\n", + " time.sleep(10)\n", + " with open('url.txt', 'w') as file:\n", + " file.write('')\n", + "\n", + " get_ipython().system_raw('lt --port 6969 >> url.txt 2>&1 &')\n", + "\n", + " time.sleep(4)\n", + "\n", + " endpoint_ip = urllib.request.urlopen('https://ipv4.icanhazip.com').read().decode('utf8').strip(\"\\n\")\n", + "\n", + " with open('url.txt', 'r') as file:\n", + " tunnel_url = file.read()\n", + " tunnel_url = tunnel_url.replace(\"your url is: \", \"\")\n", + "\n", + " print(f\"Share Link: \\033[0m\\033[93m{tunnel_url}\\033[0m\", end=\"\\033[0m\\n\")\n", + "\n", + " password_endpoint_widget = widgets.Text(\n", + " value=endpoint_ip,\n", + " description='Password IP:',\n", + " disabled=True\n", + " )\n", + " display(password_endpoint_widget)\n", + "\n", + "\n", + "\n", + "while True:\n", + " time.sleep(5)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "3b59-2x-qEnX" + }, + "source": [ + "### **Extra**\n", + "Enjoy extra options that can make it easier for you to use Applio\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "cellView": "form", + "id": "19LNv6iYqF6_" + }, + "outputs": [], + "source": [ + "# @title Mount Drive\n", + "# @markdown Mount the files from Google Drive to the Colab.\n", + "from google.colab import drive\n", + "\n", + "drive.mount(\"/content/drive\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "cellView": "form", + "id": "I5o6MlpFouiG" + }, + "outputs": [], + "source": [ + "# @title Auto Backup\n", + "# @markdown When running it, it will be activated or deactivated previously to start up together with Applio.\n", + "import os\n", + "import shutil\n", + "import time\n", + "\n", + "LOGS_FOLDER = \"/content/program_ml/logs/\"\n", + "GOOGLE_DRIVE_PATH = \"/content/drive/MyDrive/ApplioBackup\"\n", + "\n", + "if \"autobackups\" not in globals():\n", + " autobackups = False\n", + "\n", + "cooldown = 15 # @param {type:\"slider\", min:0, max:100, step:0}\n", + "def backup_files():\n", + " print(\"\\nStarting backup loop...\")\n", + " last_backup_timestamps_path = os.path.join(\n", + " LOGS_FOLDER, \"last_backup_timestamps.txt\"\n", + " )\n", + " fully_updated = False\n", + "\n", + " while True:\n", + " try:\n", + " updated_files = 0\n", + " deleted_files = 0\n", + " new_files = 0\n", + " last_backup_timestamps = {}\n", + "\n", + " try:\n", + " with open(last_backup_timestamps_path, \"r\") as f:\n", + " last_backup_timestamps = dict(line.strip().split(\":\") for line in f)\n", + " except FileNotFoundError:\n", + " pass\n", + "\n", + " for root, dirs, files in os.walk(LOGS_FOLDER):\n", + " # Excluding \"zips\" and \"mute\" directories\n", + " if \"zips\" in dirs:\n", + " dirs.remove(\"zips\")\n", + " if \"mute\" in dirs:\n", + " dirs.remove(\"mute\")\n", + "\n", + " for filename in files:\n", + " if filename != \"last_backup_timestamps.txt\":\n", + " filepath = os.path.join(root, filename)\n", + " if os.path.isfile(filepath):\n", + " backup_filepath = os.path.join(\n", + " GOOGLE_DRIVE_PATH,\n", + " os.path.relpath(filepath, LOGS_FOLDER),\n", + " )\n", + " backup_folderpath = os.path.dirname(backup_filepath)\n", + " if not os.path.exists(backup_folderpath):\n", + " os.makedirs(backup_folderpath)\n", + " last_backup_timestamp = last_backup_timestamps.get(filepath)\n", + " current_timestamp = os.path.getmtime(filepath)\n", + " if (\n", + " last_backup_timestamp is None\n", + " or float(last_backup_timestamp) < current_timestamp\n", + " ):\n", + " shutil.copy2(filepath, backup_filepath)\n", + " last_backup_timestamps[filepath] = str(current_timestamp)\n", + " if last_backup_timestamp is None:\n", + " new_files += 1\n", + " else:\n", + " updated_files += 1\n", + "\n", + "\n", + " for filepath in list(last_backup_timestamps.keys()):\n", + " if not os.path.exists(filepath):\n", + " backup_filepath = os.path.join(\n", + " GOOGLE_DRIVE_PATH, os.path.relpath(filepath, LOGS_FOLDER)\n", + " )\n", + " if os.path.exists(backup_filepath):\n", + " os.remove(backup_filepath)\n", + " deleted_files += 1\n", + " del last_backup_timestamps[filepath]\n", + "\n", + "\n", + " if updated_files > 0 or deleted_files > 0 or new_files > 0:\n", + " print(f\"Backup Complete: {new_files} new, {updated_files} updated, {deleted_files} deleted.\")\n", + " fully_updated = False\n", + " elif not fully_updated:\n", + " print(\"Files are up to date.\")\n", + " fully_updated = True\n", + "\n", + " with open(last_backup_timestamps_path, \"w\") as f:\n", + " for filepath, timestamp in last_backup_timestamps.items():\n", + " f.write(f\"{filepath}:{timestamp}\\n\")\n", + "\n", + " time.sleep(cooldown if fully_updated else 0.1)\n", + "\n", + "\n", + " except Exception as error:\n", + " print(f\"An error occurred during backup: {error}\")\n", + "\n", + "\n", + "if autobackups:\n", + " autobackups = False\n", + " print(\"Autobackup Disabled\")\n", + "else:\n", + " autobackups = True\n", + " print(\"Autobackup Enabled\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "cellView": "form", + "id": "-vIzj7pye8Z0" + }, + "outputs": [], + "source": [ + "# @title Setup new logs folder format\n", + "# @markdown Put the exact name you put as your Model Name in Applio.\n", + "modelname = \"My-Project\" # @param {type:\"string\"}\n", + "logs_folder = f\"/content/program_ml/logs/{modelname}/\"\n", + "\n", + "import os\n", + "\n", + "folder_renames = {\n", + " \"0_gt_wavs\": \"sliced_audios\",\n", + " \"1_16k_wavs\": \"sliced_audios_16k\",\n", + " \"2a_f0\": \"f0\",\n", + " \"2b-f0nsf\": \"f0_voiced\",\n", + " \"3_feature768\": \"v2_extracted\"\n", + "}\n", + "\n", + "def rename_folders(base_path, rename_dict):\n", + " for old_name, new_name in rename_dict.items():\n", + " old_path = os.path.join(base_path, old_name)\n", + " new_path = os.path.join(base_path, new_name)\n", + " if os.path.exists(old_path):\n", + " os.rename(old_path, new_path)\n", + " print(f\"Renamed {old_path} to {new_path}\")\n", + " else:\n", + " print(f\"Folder {old_path} does not exist\")\n", + "\n", + "rename_folders(logs_folder, folder_renames)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "cellView": "form", + "id": "ifV_vc4h4Uvx" + }, + "outputs": [], + "source": [ + "# @title Load a Backup\n", + "from google.colab import drive\n", + "import os\n", + "\n", + "# @markdown Put the exact name you put as your Model Name in Applio.\n", + "modelname = \"My-Project\" # @param {type:\"string\"}\n", + "source_path = \"/content/drive/MyDrive/ApplioBackup/\" + modelname\n", + "destination_path = \"/content/program_ml/logs/\" + modelname\n", + "backup_timestamps_file = \"last_backup_timestamps.txt\"\n", + "if not os.path.exists(source_path):\n", + " print(\n", + " \"The model folder does not exist. Please verify the name is correct or check your Google Drive.\"\n", + " )\n", + "else:\n", + " time_ = os.path.join(\"/content/drive/MyDrive/ApplioBackup/\", backup_timestamps_file)\n", + " time__ = os.path.join(\"/content/program_ml/logs/\", backup_timestamps_file)\n", + " if os.path.exists(time_):\n", + " shutil.copy(time_, time__)\n", + " shutil.copytree(source_path, destination_path)\n", + " print(\"Model backup loaded successfully.\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "cellView": "form", + "id": "leWbhk1X4XoY" + }, + "outputs": [], + "source": [ + "# @title Download all custom pretrains\n", + "import os\n", + "import urllib.request\n", + "\n", + "%mkdir /content/program_ml/rvc/models/pretraineds/pretraineds_custom\n", + "pretrained_urls = [\n", + " # Ov2 Super\n", + " \"https://huggingface.co/ORVC/Ov2Super/resolve/main/f0Ov2Super32kG.pth\",\n", + " \"https://huggingface.co/ORVC/Ov2Super/resolve/main/f0Ov2Super32kD.pth\",\n", + " \"https://huggingface.co/ORVC/Ov2Super/resolve/main/f0Ov2Super40kG.pth\",\n", + " \"https://huggingface.co/ORVC/Ov2Super/resolve/main/f0Ov2Super40kD.pth\",\n", + "\n", + " # TITAN\n", + " \"https://huggingface.co/blaise-tk/TITAN/resolve/main/models/medium/40k/pretrained/G-f040k-TITAN-Medium.pth\",\n", + " \"https://huggingface.co/blaise-tk/TITAN/resolve/main/models/medium/40k/pretrained/D-f040k-TITAN-Medium.pth\",\n", + " \"https://huggingface.co/blaise-tk/TITAN/resolve/main/models/medium/32k/pretrained/G-f032k-TITAN-Medium.pth\",\n", + " \"https://huggingface.co/blaise-tk/TITAN/resolve/main/models/medium/32k/pretrained/D-f032k-TITAN-Medium.pth\",\n", + "\n", + " # Snowie V3\n", + " \"https://huggingface.co/MUSTAR/SnowieV3.1-32k/resolve/main/D_SnowieV3.1_32k.pth\",\n", + " \"https://huggingface.co/MUSTAR/SnowieV3.1-32k/resolve/main/G_SnowieV3.1_32k.pth\",\n", + " \"https://huggingface.co/MUSTAR/SnowieV3.1-40k/resolve/main/G_SnowieV3.1_40k.pth\",\n", + " \"https://huggingface.co/MUSTAR/SnowieV3.1-40k/resolve/main/D_SnowieV3.1_40k.pth\",\n", + " \"https://huggingface.co/MUSTAR/SnowieV3.1-48k/resolve/main/G_SnowieV3.1_48k.pth\",\n", + " \"https://huggingface.co/MUSTAR/SnowieV3.1-48k/resolve/main/D_SnowieV3.1_48k.pth\",\n", + "\n", + " # RIN E3\n", + " \"https://huggingface.co/MUSTAR/RIN_E3/resolve/main/RIN_E3_G.pth\",\n", + " \"https://huggingface.co/MUSTAR/RIN_E3/resolve/main/RIN_E3_D.pth\",\n", + "\n", + " # KLM\n", + " \"https://huggingface.co/SeoulStreamingStation/KLM4.1/resolve/main/D_KLM41_32k.pth\",\n", + " \"https://huggingface.co/SeoulStreamingStation/KLM4.1/resolve/main/G_KLM41_32k.pth\",\n", + " \"https://huggingface.co/SeoulStreamingStation/KLM4.1/resolve/main/D_KLM41_48k.pth\",\n", + " \"https://huggingface.co/SeoulStreamingStation/KLM4.1/resolve/main/G_KLM41_48k.pth\",\n", + "\n", + " # SnowieV3 X RIN_E3\n", + " \"https://huggingface.co/MUSTAR/SnowieV3.1-X-RinE3-40K/resolve/main/D_Snowie-X-Rin_40k.pth\",\n", + " \"https://huggingface.co/MUSTAR/SnowieV3.1-X-RinE3-40K/resolve/main/G_Snowie-X-Rin_40k.pth\",\n", + "]\n", + "output_directory = \"/content/program_ml/rvc/models/pretraineds/pretraineds_custom\"\n", + "for url in pretrained_urls:\n", + " filename = os.path.join(output_directory, os.path.basename(url))\n", + " urllib.request.urlretrieve(url, filename)" + ] + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "collapsed_sections": [ + "3b59-2x-qEnX" + ], + "gpuType": "T4", + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "name": "python3" + }, + "language_info": { + "name": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 0 } diff --git a/assets/Applio_Kaggle.ipynb b/assets/Applio_Kaggle.ipynb index 0479b47c..439398e6 100644 --- a/assets/Applio_Kaggle.ipynb +++ b/assets/Applio_Kaggle.ipynb @@ -1,239 +1,239 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## **Applio**\n", - "A simple, high-quality voice conversion tool focused on ease of use and performance.\n", - "\n", - "[Support](https://discord.gg/urxFjYmYYh) — [Discord Bot](https://discord.com/oauth2/authorize?client_id=1144714449563955302&permissions=1376674695271&scope=bot%20applications.commands) — [Find Voices](https://applio.org/models) — [GitHub](https://github.com/IAHispano/Applio)\n", - "\n", - "
\n", - "\n", - "### **Credits**\n", - "- Encryption method: [Hina](https://github.com/hinabl)\n", - "- Main development: [Applio Team](https://github.com/IAHispano)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Install" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "trusted": true - }, - "outputs": [], - "source": [ - "import codecs\n", - "import os\n", - "import tarfile\n", - "import subprocess\n", - "from pathlib import Path\n", - "from IPython.display import clear_output\n", - "rot_47 = lambda encoded_text: \"\".join(\n", - " [\n", - " (\n", - " chr(\n", - " (ord(c) - (ord(\"a\") if c.islower() else ord(\"A\")) - 47) % 26\n", - " + (ord(\"a\") if c.islower() else ord(\"A\"))\n", - " )\n", - " if c.isalpha()\n", - " else c\n", - " )\n", - " for c in encoded_text\n", - " ]\n", - ")\n", - "\n", - "new_name = rot_47(\"kmjbmvh_hg\")\n", - "findme = rot_47(codecs.decode(\"pbbxa://oqbpcj.kwu/Dqlitvb/qurwg-mtnqvlmz.oqb\", \"rot_13\"))\n", - "uioawhd = rot_47(codecs.decode(\"pbbxa://oqbpcj.kwu/QIPqaxivw/Ixxtqw.oqb\", \"rot_13\"))\n", - "!pip install uv\n", - "!git clone --depth 1 $uioawhd $new_name --branch 3.2.7\n", - "clear_output()\n", - "!mkdir -p /kaggle/tmp\n", - "%cd /kaggle/tmp\n", - "!uv venv .venv > /dev/null 2>&1\n", - "def vidal_setup(ForceIn):\n", - " def F():\n", - " print(\"Installing pip packages...\")\n", - " subprocess.check_call([\"uv\", \"pip\", \"install\", \"-r\", \"requirements.txt\", \"--quiet\"])\n", - "\n", - " A = \"/kaggle/working\" + rot_47(\"Kikpm.ovm.bu\")\n", - " D = \"/kaggle/tmp\"\n", - " if not os.path.exists(A):\n", - " M = os.path.dirname(A)\n", - " os.makedirs(M, exist_ok=True)\n", - " print(\"No cached install found..\")\n", - " try:\n", - " N = rot_47(codecs.decode(\"pbbxa://pcooqvonikm.kw/QIPqaxivw/Ixxtqw/zmawtdm/uiqv/Mvdqzwumvb/Siootm/SiootmD2.biz.oh?lwevtwil=bzcm\", \"rot_13\"))\n", - " subprocess.run([\"wget\",\"-q\" ,\"-O\", A, N])\n", - " print(\"Download completed successfully!\")\n", - " except Exception as H:\n", - " print(str(H))\n", - " if os.path.exists(A):\n", - " os.remove(A)\n", - " if Path(A).exists():\n", - " with tarfile.open(A, \"r:gz\") as I:\n", - " I.extractall(D)\n", - " print(f\"Extraction of {A} to {D} completed.\")\n", - " if os.path.exists(A):\n", - " os.remove(A)\n", - " else:\n", - " F()\n", - "\n", - "vidal_setup(False)\n", - "%cd /kaggle/working/program_ml\n", - "!source /kaggle/tmp/.venv/bin/activate; python core.py \"prerequisites\" --models \"True\" --exe \"True\" --pretraineds_v1_f0 \"False\" --pretraineds_v2_f0 \"True\" --pretraineds_v1_nof0 \"False\" --pretraineds_v2_nof0 \"False\" > /dev/null 2>&1\n", - "!sudo curl -fsSL https://raw.githubusercontent.com/filebrowser/get/master/get.sh | sudo bash\n", - "!filebrowser config init\n", - "!filebrowser config set --auth.method=noauth\n", - "!filebrowser users add \"applio\" \"\" --perm.admin\n", - "clear_output()\n", - "print(\"Finished\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Setup Ngrok" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "trusted": true - }, - "outputs": [], - "source": [ - "#https://dashboard.ngrok.com/get-started/your-authtoken (Token Ngrok)\n", - "!pip install pyngrok\n", - "!ngrok config add-authtoken token" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Start" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "trusted": true - }, - "outputs": [], - "source": [ - "import os\n", - "from pyngrok import ngrok\n", - "from IPython.display import clear_output\n", - "ngrok.kill()\n", - "%cd /kaggle/working/program_ml\n", - "os.system(f\"filebrowser -r /kaggle -p 9876 > /dev/null 2>&1 &\")\n", - "clear_output()\n", - "%load_ext tensorboard\n", - "%tensorboard --logdir logs --port 8077\n", - "p_tunnel = ngrok.connect(6969)\n", - "t_tunnel = ngrok.connect(8077)\n", - "f_tunnel = ngrok.connect(9876)\n", - "clear_output()\n", - "print(\"Applio Url:\", p_tunnel.public_url)\n", - "print(\"Tensorboard Url:\", t_tunnel.public_url)\n", - "print(\"File Url:\", f_tunnel.public_url)\n", - "print(\"Save the link for later, this will take a while...\")\n", - "\n", - "!source /kaggle/tmp/.venv/bin/activate; python app.py" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "_kg_hide-input": false - }, - "source": [ - "## Extra" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Setup new logs folder format\n", - "- Put the exact name you put as your Model Name in Applio." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "\n", - "modelname = \"Test\"\n", - "logs_folder = f\"/kaggle/working/program_ml/logs/\" + modelname\n", - "\n", - "import os\n", - "\n", - "folder_renames = {\n", - " \"0_gt_wavs\": \"sliced_audios\",\n", - " \"1_16k_wavs\": \"sliced_audios_16k\",\n", - " \"2a_f0\": \"f0\",\n", - " \"2b-f0nsf\": \"f0_voiced\",\n", - " \"3_feature768\": \"v2_extracted\"\n", - "}\n", - "\n", - "def rename_folders(base_path, rename_dict):\n", - " for old_name, new_name in rename_dict.items():\n", - " old_path = os.path.join(base_path, old_name)\n", - " new_path = os.path.join(base_path, new_name)\n", - " if os.path.exists(old_path):\n", - " os.rename(old_path, new_path)\n", - " print(f\"Renamed {old_path} to {new_path}\")\n", - " else:\n", - " print(f\"Folder {old_path} does not exist\")\n", - "\n", - "rename_folders(logs_folder, folder_renames)\n" - ] - } - ], - "metadata": { - "kaggle": { - "accelerator": "nvidiaTeslaT4", - "dataSources": [], - "dockerImageVersionId": 30558, - "isGpuEnabled": true, - "isInternetEnabled": true, - "language": "python", - "sourceType": "notebook" - }, - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.12" - } - }, - "nbformat": 4, - "nbformat_minor": 4 + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **Applio**\n", + "A simple, high-quality voice conversion tool focused on ease of use and performance.\n", + "\n", + "[Support](https://discord.gg/urxFjYmYYh) — [Discord Bot](https://discord.com/oauth2/authorize?client_id=1144714449563955302&permissions=1376674695271&scope=bot%20applications.commands) — [GitHub](https://github.com/IAHispano/Applio)\n", + "\n", + "
\n", + "\n", + "### **Credits**\n", + "- Encryption method: [Hina](https://github.com/hinabl)\n", + "- Main development: [Applio Team](https://github.com/IAHispano)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Install" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": [ + "import codecs\n", + "import os\n", + "import tarfile\n", + "import subprocess\n", + "from pathlib import Path\n", + "from IPython.display import clear_output\n", + "rot_47 = lambda encoded_text: \"\".join(\n", + " [\n", + " (\n", + " chr(\n", + " (ord(c) - (ord(\"a\") if c.islower() else ord(\"A\")) - 47) % 26\n", + " + (ord(\"a\") if c.islower() else ord(\"A\"))\n", + " )\n", + " if c.isalpha()\n", + " else c\n", + " )\n", + " for c in encoded_text\n", + " ]\n", + ")\n", + "\n", + "new_name = rot_47(\"kmjbmvh_hg\")\n", + "findme = rot_47(codecs.decode(\"pbbxa://oqbpcj.kwu/Dqlitvb/qurwg-mtnqvlmz.oqb\", \"rot_13\"))\n", + "uioawhd = rot_47(codecs.decode(\"pbbxa://oqbpcj.kwu/QIPqaxivw/Ixxtqw.oqb\", \"rot_13\"))\n", + "!pip install uv\n", + "!git clone --depth 1 $uioawhd $new_name --branch 3.2.7\n", + "clear_output()\n", + "!mkdir -p /kaggle/tmp\n", + "%cd /kaggle/tmp\n", + "!uv venv .venv > /dev/null 2>&1\n", + "def vidal_setup(ForceIn):\n", + " def F():\n", + " print(\"Installing pip packages...\")\n", + " subprocess.check_call([\"uv\", \"pip\", \"install\", \"-r\", \"requirements.txt\", \"--quiet\"])\n", + "\n", + " A = \"/kaggle/working\" + rot_47(\"Kikpm.ovm.bu\")\n", + " D = \"/kaggle/tmp\"\n", + " if not os.path.exists(A):\n", + " M = os.path.dirname(A)\n", + " os.makedirs(M, exist_ok=True)\n", + " print(\"No cached install found..\")\n", + " try:\n", + " N = rot_47(codecs.decode(\"pbbxa://pcooqvonikm.kw/QIPqaxivw/Ixxtqw/zmawtdm/uiqv/Mvdqzwumvb/Siootm/SiootmD2.biz.oh?lwevtwil=bzcm\", \"rot_13\"))\n", + " subprocess.run([\"wget\",\"-q\" ,\"-O\", A, N])\n", + " print(\"Download completed successfully!\")\n", + " except Exception as H:\n", + " print(str(H))\n", + " if os.path.exists(A):\n", + " os.remove(A)\n", + " if Path(A).exists():\n", + " with tarfile.open(A, \"r:gz\") as I:\n", + " I.extractall(D)\n", + " print(f\"Extraction of {A} to {D} completed.\")\n", + " if os.path.exists(A):\n", + " os.remove(A)\n", + " else:\n", + " F()\n", + "\n", + "vidal_setup(False)\n", + "%cd /kaggle/working/program_ml\n", + "!source /kaggle/tmp/.venv/bin/activate; python core.py \"prerequisites\" --models \"True\" --exe \"True\" --pretraineds_v1_f0 \"False\" --pretraineds_v2_f0 \"True\" --pretraineds_v1_nof0 \"False\" --pretraineds_v2_nof0 \"False\" > /dev/null 2>&1\n", + "!sudo curl -fsSL https://raw.githubusercontent.com/filebrowser/get/master/get.sh | sudo bash\n", + "!filebrowser config init\n", + "!filebrowser config set --auth.method=noauth\n", + "!filebrowser users add \"applio\" \"\" --perm.admin\n", + "clear_output()\n", + "print(\"Finished\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Setup Ngrok" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": [ + "#https://dashboard.ngrok.com/get-started/your-authtoken (Token Ngrok)\n", + "!pip install pyngrok\n", + "!ngrok config add-authtoken token" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Start" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": [ + "import os\n", + "from pyngrok import ngrok\n", + "from IPython.display import clear_output\n", + "ngrok.kill()\n", + "%cd /kaggle/working/program_ml\n", + "os.system(f\"filebrowser -r /kaggle -p 9876 > /dev/null 2>&1 &\")\n", + "clear_output()\n", + "%load_ext tensorboard\n", + "%tensorboard --logdir logs --port 8077\n", + "p_tunnel = ngrok.connect(6969)\n", + "t_tunnel = ngrok.connect(8077)\n", + "f_tunnel = ngrok.connect(9876)\n", + "clear_output()\n", + "print(\"Applio Url:\", p_tunnel.public_url)\n", + "print(\"Tensorboard Url:\", t_tunnel.public_url)\n", + "print(\"File Url:\", f_tunnel.public_url)\n", + "print(\"Save the link for later, this will take a while...\")\n", + "\n", + "!source /kaggle/tmp/.venv/bin/activate; python app.py" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_kg_hide-input": false + }, + "source": [ + "## Extra" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Setup new logs folder format\n", + "- Put the exact name you put as your Model Name in Applio." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "modelname = \"Test\"\n", + "logs_folder = f\"/kaggle/working/program_ml/logs/\" + modelname\n", + "\n", + "import os\n", + "\n", + "folder_renames = {\n", + " \"0_gt_wavs\": \"sliced_audios\",\n", + " \"1_16k_wavs\": \"sliced_audios_16k\",\n", + " \"2a_f0\": \"f0\",\n", + " \"2b-f0nsf\": \"f0_voiced\",\n", + " \"3_feature768\": \"v2_extracted\"\n", + "}\n", + "\n", + "def rename_folders(base_path, rename_dict):\n", + " for old_name, new_name in rename_dict.items():\n", + " old_path = os.path.join(base_path, old_name)\n", + " new_path = os.path.join(base_path, new_name)\n", + " if os.path.exists(old_path):\n", + " os.rename(old_path, new_path)\n", + " print(f\"Renamed {old_path} to {new_path}\")\n", + " else:\n", + " print(f\"Folder {old_path} does not exist\")\n", + "\n", + "rename_folders(logs_folder, folder_renames)\n" + ] + } + ], + "metadata": { + "kaggle": { + "accelerator": "nvidiaTeslaT4", + "dataSources": [], + "dockerImageVersionId": 30558, + "isGpuEnabled": true, + "isInternetEnabled": true, + "language": "python", + "sourceType": "notebook" + }, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 4 } diff --git a/assets/Applio_NoUI.ipynb b/assets/Applio_NoUI.ipynb index 28172661..e7f5941b 100644 --- a/assets/Applio_NoUI.ipynb +++ b/assets/Applio_NoUI.ipynb @@ -9,7 +9,7 @@ "## **Applio NoUI**\n", "A simple, high-quality voice conversion tool focused on ease of use and performance. \n", "\n", - "[Support](https://discord.gg/urxFjYmYYh) — [Discord Bot](https://discord.com/oauth2/authorize?client_id=1144714449563955302&permissions=1376674695271&scope=bot%20applications.commands) — [Find Voices](https://applio.org/models) — [GitHub](https://github.com/IAHispano/Applio)\n", + "[Support](https://discord.gg/urxFjYmYYh) — [Discord Bot](https://discord.com/oauth2/authorize?client_id=1144714449563955302&permissions=1376674695271&scope=bot%20applications.commands) — [GitHub](https://github.com/IAHispano/Applio)\n", "\n", "
\n", "\n",