diff --git a/notebooks/piper_model_exporter.ipynb b/notebooks/piper_model_exporter.ipynb index ecf8195..db033b5 100644 --- a/notebooks/piper_model_exporter.ipynb +++ b/notebooks/piper_model_exporter.ipynb @@ -5,7 +5,7 @@ "colab": { "provenance": [], "gpuType": "T4", - "authorship_tag": "ABX9TyOyCiCt4X4oZWyqzQ2fAafX", + "authorship_tag": "ABX9TyNKVcsLxVm78BeU3TIFeDMa", "include_colab_link": true }, "kernelspec": { @@ -52,7 +52,6 @@ "!git clone https://github.com/rhasspy/piper\n", "%cd /content/piper/src/python\n", "!pip install --upgrade pip\n", - "!pip install --upgrade wheel setuptools\n", "!pip install cython>=0.29.0 espeak-phonemizer>=1.1.0 librosa>=0.9.2 numpy>=1.19.0 pytorch-lightning~=1.7.0 torch~=1.11.0\n", "!pip install onnx onnxruntime-gpu\n", "!bash build_monotonic_align.sh\n", @@ -66,9 +65,13 @@ "#@title Voice package generation section\n", "%cd /content/piper/src/python\n", "import os\n", + "import ipywidgets as widgets\n", + "from IPython.display import display\n", + "import json\n", + "from google.colab import output\n", "#@markdown #### Download:\n", "#@markdown **Google Drive model ID:**\n", - "model_id = \"\" #@param {type:\"string\"}\n", + "model_id = \"1LQ8CY8stAhk6aK2HbDxNOvff8vT0q7Jr+\" #@param {type:\"string\"}\n", "#@markdown **Config.json Google Drive ID**\n", "config_id = \"1-7qJ-Aw8OmqKgxxG8o_onU_Rwn0xfIOj\" #@param {type:\"string\"}\n", "#@markdown ---\n", @@ -82,15 +85,46 @@ "export_voice_path = \"/content/project/voice-\"+export_voice_name\n", "packages_path = \"/content/project/packages\"\n", "if not os.path.exists(export_voice_path):\n", - " os.makedirs(export_voice_path)\n", + " os.makedirs(export_voice_path)\n", "if not os.path.exists(packages_path):\n", - " os.makedirs(packages_path)\n", - "!gdown \"{model_id}\" -O /content/project/model.ckpt\n", - "!gdown \"{config_id}\" -O \"{export_voice_path}/{export_voice_name}.onnx.json\"\n", - "!python -m piper_train.export_onnx \"/content/project/model.ckpt\" \"{export_voice_path}/{export_voice_name}.onnx\"\n", - "print(\"compressing...\")\n", - "%cd /content/project\n", - "!tar -czvf \"{packages_path}/voice-{export_voice_name}.tar.gz\" \"voice-{export_voice_name}\"" + " os.makedirs(packages_path)\n", + "print(\"Downloading model and his config...\")\n", + "!gdown -q \"{model_id}\" -O /content/project/model.ckpt\n", + "!gdown -q \"{config_id}\" -O \"{export_voice_path}/{export_voice_name}.onnx.json\"\n", + "#@markdown **Do you want to write a model card?**\n", + "write_model_card = True #@param {type:\"boolean\"}\n", + "if write_model_card:\n", + " with open(f\"{export_voice_path}/{export_voice_name}.onnx.json\", \"r\") as file:\n", + " config = json.load(file)\n", + " sample_rate = config[\"audio\"][\"sample_rate\"]\n", + " num_speakers = config[\"num_speakers\"]\n", + " output.eval_js('new Audio(\"https://github.com/rmcpantoja/piper/raw/master/notebooks/waiting.wav?raw=true\").play()')\n", + " text_area = widgets.Textarea(\n", + " description = \"fill in this following template and press start to generate the voice package\",\n", + " value=f'# Model card for {voice_name} ({quality})\\n\\n* Language: {language} (normaliced)\\n* Speakers: {num_speakers}\\n* Quality: {quality}\\n* Samplerate: {sample_rate}Hz\\n\\n## Dataset\\n\\n* URL: \\n* License: \\n\\n## Training\\n\\nTrained from scratch.\\nOr finetuned from: ',\n", + " layout=widgets.Layout(width='500px', height='200px')\n", + " )\n", + " button = widgets.Button(description='Start')\n", + "\n", + " def create_model_card(button):\n", + " model_card_text = text_area.value.strip()\n", + " with open(f'{export_voice_path}/MODEL_CARD', 'w') as file:\n", + " file.write(model_card_text)\n", + " text_area.close()\n", + " button.close()\n", + " output.clear()\n", + " output.eval_js('new Audio(\"https://github.com/rmcpantoja/piper/blob/master/notebooks/starting.wav?raw=true\").play()')\n", + " start_process()\n", + "\n", + " button.on_click(create_model_card)\n", + "\n", + " display(text_area, button)\n", + "\n", + "def start_process():\n", + " !python -m piper_train.export_onnx \"/content/project/model.ckpt\" \"{export_voice_path}/{export_voice_name}.onnx\"\n", + " print(\"compressing...\")\n", + " !tar -czvf \"{packages_path}/voice-{export_voice_name}.tar.gz\" -C \"{export_voice_path}\" .\n", + " output.eval_js('new Audio(\"https://github.com/rmcpantoja/piper/raw/master/notebooks/success.wav?raw=true\").play()')" ], "metadata": { "cellView": "form",