ai-voice-cloning/notebook.ipynb

274 lines
7.7 KiB
Plaintext

{
"nbformat":4,
"nbformat_minor":0,
"metadata":{
"colab":{
"private_outputs":true,
"provenance":[
]
},
"kernelspec":{
"name":"python3",
"display_name":"Python 3"
},
"language_info":{
"name":"python"
},
"accelerator":"GPU",
"gpuClass":"standard"
},
"cells":[
{
"cell_type":"markdown",
"source":[
"## Initialization"
],
"metadata":{
"id":"ni41hmE03DL6"
}
},
{
"cell_type":"code",
"execution_count":null,
"metadata":{
"id":"FtsMKKfH18iM"
},
"outputs":[
],
"source":[
"!git clone https://git.ecker.tech/mrq/ai-voice-cloning/\n",
"%cd ai-voice-cloning\n",
"\n",
"!git submodule init\n",
"!git submodule update --remote\n",
"\n",
"# TODO: fix venvs working for subprocess.Popen calling a bash script\n",
"#!apt install python3.8-venv\n",
"#!python -m venv venv\n",
"#!source ./venv/bin/activate\n",
"\n",
"!python -m pip install --upgrade pip\n",
"!pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu116\n",
"!python -m pip install -r ./dlas/requirements.txt\n",
"!python -m pip install -r ./tortoise-tts/requirements.txt\n",
"!python -m pip install -r ./requirements.txt\n",
"!python -m pip install -e ./tortoise-tts/\n",
"\n",
"!rm ./tortoise-tts/{main,webui}.py"
]
},
{
"cell_type":"markdown",
"source":[
"# Update Repos"
],
"metadata":{
"id":"IzrGt5IcHlAD"
}
},
{
"cell_type":"code",
"source":[
"# for my debugging purposes\n",
"%cd /content/ai-voice-cloning/\n",
"!./update.sh"
],
"metadata":{
"id":"3DktoOXSHmtw"
},
"execution_count":null,
"outputs":[
]
},
{
"cell_type":"markdown",
"source":[
"# Mount Drive"
],
"metadata":{
"id":"2Y4t9zDIZMTg"
}
},
{
"cell_type":"code",
"source":[
"# only run once, this will save all userdata to your Drive\n",
"# it shouldn't delete through symlinks, but you never know\n",
"\n",
"from google.colab import drive\n",
"\n",
"%cd /content/ai-voice-cloning\n",
"drive.flush_and_unmount()\n",
"!rm -r ./{training,results,voices,config}\n",
"drive.mount('/content/drive')\n",
"!mkdir /content/drive/MyDrive/ai-voice-cloning/\n",
"!mv /content/drive/MyDrive/{training,results,voices,config} /content/drive/MyDrive/ai-voice-cloning\n",
"!mkdir /content/drive/MyDrive/ai-voice-cloning/{training,results,voices,config}\n",
"!ln -s /content/drive/MyDrive/ai-voice-cloning/{training,results,voices,config} ./"
],
"metadata":{
"id":"SGt9gyvubveT"
},
"execution_count":null,
"outputs":[
]
},
{
"cell_type":"markdown",
"source":[
"## Running (Inlined)"
],
"metadata":{
"id":"o1gkfw3B3JSk"
}
},
{
"cell_type":"code",
"source":[
"%cd /content/ai-voice-cloning\n",
"#!source ./venv/bin/activate\n",
"\n",
"import os\n",
"import sys\n",
"\n",
"sys.argv = [\"\"]\n",
"if './src/' not in sys.path:\n",
"\tsys.path.append('./src/')\n",
"if './tortoise-tts/' not in sys.path:\n",
"\tsys.path.append('./tortoise-tts/')\n",
"\n",
"if 'TORTOISE_MODELS_DIR' not in os.environ:\n",
"\tos.environ['TORTOISE_MODELS_DIR'] = os.path.realpath(os.path.join(os.getcwd(), './models/tortoise/'))\n",
"\n",
"if 'TRANSFORMERS_CACHE' not in os.environ:\n",
"\tos.environ['TRANSFORMERS_CACHE'] = os.path.realpath(os.path.join(os.getcwd(), './models/transformers/'))\n",
"\n",
"import utils\n",
"import webui\n",
"\n",
"args = utils.setup_args()\n",
"ui = webui.setup_gradio()\n",
"# Be very, very sure to check \"Defer TTS Load\" in Settings, then restart, before you start training\n",
"# You'll crash the runtime if you don't\n",
"if not args.defer_tts_load:\n",
"\tutils.setup_tortoise()\n",
"\n",
"ui.launch(share=True, prevent_thread_lock=True, height=1000)\n",
"ui.block_thread()"
],
"metadata":{
"id":"c_EQZLTA19c7"
},
"execution_count":null,
"outputs":[
]
},
{
"cell_type":"markdown",
"source":[
"## Running (non-inlined)"
],
"metadata":{
"id":"EM3iNqgJF6Be"
}
},
{
"cell_type":"code",
"source":[
"%cd /content/ai-voice-cloning/\n",
"!./start.sh"
],
"metadata":{
"id":"QRA8jF3cF-YJ"
},
"execution_count":null,
"outputs":[
]
},
{
"cell_type":"markdown",
"source":[
"# Restart Runtime"
],
"metadata":{
"id":"vH9KU7SMGDxb"
}
},
{
"cell_type":"code",
"source":[
"!rm ./tortoise-tts/{main,webui}.py\n",
"exit()"
],
"metadata":{
"id":"EWeyUPvgGDX5"
},
"execution_count":null,
"outputs":[
]
},
{
"cell_type":"markdown",
"source":[
"# Fallback Training"
],
"metadata":{
"id":"ggLY9A9KA21D"
}
},
{
"cell_type":"code",
"source":[
"# This is in case you can't get training through the web UI\n",
"%cd /content/ai-voice-cloning\n",
"!python ./dlas/codes/train.py -opt ./training/finetune.yaml"
],
"metadata":{
"id":"-KayB8klA5tY"
},
"execution_count":null,
"outputs":[
]
},
{
"cell_type":"markdown",
"source":[
"## Exporting"
],
"metadata":{
"id":"2AnVQxEJx47p"
}
},
{
"cell_type":"code",
"source":[
"# if you're not using drive mounting\n",
"%cd /content/ai-voice-cloning\n",
"!apt install -y p7zip-full\n",
"from datetime import datetime\n",
"timestamp = datetime.now().strftime('%m-%d-%Y_%H:%M:%S')\n",
"!mkdir -p \"../{timestamp}/results\"\n",
"!mv ./results/* \"../{timestamp}/results/.\"\n",
"!mv ./training/* \"../{timestamp}/training/.\"\n",
"!7z a -t7z -m0=lzma2 -mx=9 -mfb=64 -md=32m -ms=on \"../{timestamp}.7z\" \"../{timestamp}/\"\n",
"!ls ~/\n",
"!echo \"Finished zipping, archive is available at {timestamp}.7z\""
],
"metadata":{
"id":"YOACiDCXx72G"
},
"execution_count":null,
"outputs":[
]
}
]
}