{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Text-to-Speech VITS" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "VITS, End-to-End." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "This tutorial is available as an IPython notebook at [malaya-speech/example/tts-vits](https://github.com/huseinzol05/malaya-speech/tree/master/example/tts-vits).\n", " \n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "This module is not language independent, so it not save to use on different languages. Pretrained models trained on hyperlocal languages.\n", " \n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "This is an application of malaya-speech Pipeline, read more about malaya-speech Pipeline at [malaya-speech/example/pipeline](https://github.com/huseinzol05/malaya-speech/tree/master/example/pipeline).\n", " \n", "
" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import os\n", "\n", "os.environ['CUDA_VISIBLE_DEVICES'] = ''" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "`pyaudio` is not available, `malaya_speech.streaming.pyaudio` is not able to use.\n" ] } ], "source": [ "import malaya_speech\n", "import numpy as np\n", "from malaya_speech import Pipeline\n", "import matplotlib.pyplot as plt\n", "import IPython.display as ipd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### VITS description\n", "\n", "1. Malaya-speech VITS generate End-to-End, from text input into waveforms with 22050 sample rate.\n", "2. No length limit, but to get better results, split the text." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### List available VITS" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Size (MB)Understand punctuationIs lowercasenum speakers
mesolitica/VITS-osman145TrueFalse1
mesolitica/VITS-yasmin145TrueFalse1
mesolitica/VITS-female-singlish145TrueTrue1
mesolitica/VITS-haqkiem145TrueTrue1
mesolitica/VITS-orkid145TrueFalse1
mesolitica/VITS-bunga145TrueFalse1
mesolitica/VITS-jebat145TrueFalse1
mesolitica/VITS-tuah145TrueFalse1
mesolitica/VITS-male145TrueFalse1
mesolitica/VITS-female145TrueFalse1
mesolitica/VITS-multispeaker-clean159TrueFalse9
mesolitica/VITS-multispeaker-noisy159TrueFalse3
\n", "
" ], "text/plain": [ " Size (MB) Understand punctuation \\\n", "mesolitica/VITS-osman 145 True \n", "mesolitica/VITS-yasmin 145 True \n", "mesolitica/VITS-female-singlish 145 True \n", "mesolitica/VITS-haqkiem 145 True \n", "mesolitica/VITS-orkid 145 True \n", "mesolitica/VITS-bunga 145 True \n", "mesolitica/VITS-jebat 145 True \n", "mesolitica/VITS-tuah 145 True \n", "mesolitica/VITS-male 145 True \n", "mesolitica/VITS-female 145 True \n", "mesolitica/VITS-multispeaker-clean 159 True \n", "mesolitica/VITS-multispeaker-noisy 159 True \n", "\n", " Is lowercase num speakers \n", "mesolitica/VITS-osman False 1 \n", "mesolitica/VITS-yasmin False 1 \n", "mesolitica/VITS-female-singlish True 1 \n", "mesolitica/VITS-haqkiem True 1 \n", "mesolitica/VITS-orkid False 1 \n", "mesolitica/VITS-bunga False 1 \n", "mesolitica/VITS-jebat False 1 \n", "mesolitica/VITS-tuah False 1 \n", "mesolitica/VITS-male False 1 \n", "mesolitica/VITS-female False 1 \n", "mesolitica/VITS-multispeaker-clean False 9 \n", "mesolitica/VITS-multispeaker-noisy False 3 " ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "malaya_speech.tts.available_vits()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Load VITS model\n", "\n", "VITS use text normalizer from Malaya, https://malaya.readthedocs.io/en/latest/load-normalizer.html#Load-normalizer,\n", "\n", "Make sure you install Malaya version > 4.0 to make it works, **to get better speech synthesis, make sure Malaya version > 4.9.1**,\n", "\n", "```bash\n", "pip install malaya -U\n", "```\n", "\n", "```python\n", "def vits(model: str = 'mesolitica/VITS-osman', **kwargs):\n", " \"\"\"\n", " Load VITS End-to-End TTS model.\n", "\n", " Parameters\n", " ----------\n", " model : str, optional (default='mesolitica/VITS-osman')\n", " Check available models at `malaya_speech.tts.available_vits()`.\n", " Returns\n", " -------\n", " result : malaya_speech.torch_model.synthesis.VITS class\n", " \"\"\"\n", "```" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "osman = malaya_speech.tts.vits(model = 'mesolitica/VITS-osman')" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# https://www.sinarharian.com.my/article/115216/BERITA/Politik/Syed-Saddiq-pertahan-Dr-Mahathir\n", "string1 = 'Syed Saddiq berkata, mereka seharusnya mengingati bahawa semasa menjadi Perdana Menteri Pakatan Harapan'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Predict\n", "\n", "```python\n", "def predict(\n", " self,\n", " string,\n", " temperature: float = 0.0,\n", " temperature_durator: float = 0.0,\n", " length_ratio: float = 1.0,\n", " **kwargs,\n", "):\n", " \"\"\"\n", " Change string to waveform.\n", "\n", " Parameters\n", " ----------\n", " string: str\n", " temperature: float, optional (default=0.0)\n", " Decoder model trying to decode with encoder(text) + random.normal() * temperature.\n", " Manipulate this variable will change speaking style.\n", " temperature_durator: float, optional (default=0.0)\n", " Durator trying to predict alignment with random.normal() * temperature_durator.\n", " Manipulate this variable will change speaking style.\n", " length_ratio: float, optional (default=1.0)\n", " Manipulate this variable will change length frames generated.\n", "\n", " Returns\n", " -------\n", " result: Dict[string, ids, alignment, y]\n", " \"\"\"\n", "```\n", "\n", "It only able to predict 1 text for single feed-forward." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "dict_keys(['string', 'ids', 'alignment', 'y'])" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r_osman = osman.predict(string1)\n", "r_osman.keys()" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig = plt.figure(figsize=(8, 6))\n", "ax = fig.add_subplot(111)\n", "ax.set_title('Alignment steps')\n", "im = ax.imshow(\n", " r_osman['alignment'],\n", " aspect='auto',\n", " origin='lower',\n", " interpolation='none')\n", "fig.colorbar(im, ax=ax)\n", "xlabel = 'Decoder timestep'\n", "plt.xlabel(xlabel)\n", "plt.ylabel('Encoder timestep')\n", "plt.tight_layout()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ipd.Audio(r_osman['y'], rate = 22050)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "string2 = 'Haqkiem adalah pelajar tahun akhir yang mengambil Ijazah Sarjana Muda Sains Komputer Kecerdasan Buatan utama dari Universiti Teknikal Malaysia Melaka (UTeM) yang kini berusaha untuk latihan industri di mana dia secara praktikal dapat menerapkan pengetahuannya dalam Perisikan Perisian dan Pengaturcaraan ke arah organisasi atau industri yang berkaitan.'" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "dict_keys(['string', 'ids', 'alignment', 'y'])" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r_osman = osman.predict(string2)\n", "r_osman.keys()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig = plt.figure(figsize=(8, 6))\n", "ax = fig.add_subplot(111)\n", "ax.set_title('Alignment steps')\n", "im = ax.imshow(\n", " r_osman['alignment'],\n", " aspect='auto',\n", " origin='lower',\n", " interpolation='none')\n", "fig.colorbar(im, ax=ax)\n", "xlabel = 'Decoder timestep'\n", "plt.xlabel(xlabel)\n", "plt.ylabel('Encoder timestep')\n", "plt.tight_layout()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ipd.Audio(r_osman['y'], rate = 22050)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Compare different speakers" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "yasmin = malaya_speech.tts.vits(model = 'mesolitica/VITS-yasmin')" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "haqkiem = malaya_speech.tts.vits(model = 'mesolitica/VITS-haqkiem')" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "orkid = malaya_speech.tts.vits(model = 'mesolitica/VITS-orkid')" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "bunga = malaya_speech.tts.vits(model = 'mesolitica/VITS-bunga')" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "jebat = malaya_speech.tts.vits(model = 'mesolitica/VITS-jebat')" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "tuah = malaya_speech.tts.vits(model = 'mesolitica/VITS-tuah')" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "male = malaya_speech.tts.vits(model = 'mesolitica/VITS-male')" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "female = malaya_speech.tts.vits(model = 'mesolitica/VITS-female')" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "s = 'Haqkiem adalah pelajar tahun akhir yang mengambil Ijazah Sarjana Muda Sains Komputer Kecerdasan Buatan utama dari Universiti Teknikal Malaysia Melaka (UTeM) yang kini berusaha untuk latihan industri di mana dia secara praktikal dapat menerapkan pengetahuannya dalam Perisikan Perisian dan Pengaturcaraan ke arah organisasi atau industri yang berkaitan.'" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r = osman.predict(s)\n", "ipd.Audio(r['y'], rate = 22050)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r = haqkiem.predict(s)\n", "ipd.Audio(r['y'], rate = 22050)" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r = orkid.predict(s)\n", "ipd.Audio(r['y'], rate = 22050)" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r = bunga.predict(s)\n", "ipd.Audio(r['y'], rate = 22050)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r = jebat.predict(s)\n", "ipd.Audio(r['y'], rate = 22050)" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r = tuah.predict(s)\n", "ipd.Audio(r['y'], rate = 22050)" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r = male.predict(s)\n", "ipd.Audio(r['y'], rate = 22050)" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r = female.predict(s)\n", "ipd.Audio(r['y'], rate = 22050)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.8.10" }, "varInspector": { "cols": { "lenName": 16, "lenType": 16, "lenVar": 40 }, "kernels_config": { "python": { "delete_cmd_postfix": "", "delete_cmd_prefix": "del ", "library": "var_list.py", "varRefreshCmd": "print(var_dic_list())" }, "r": { "delete_cmd_postfix": ") ", "delete_cmd_prefix": "rm(", "library": "var_list.r", "varRefreshCmd": "cat(var_dic_list()) " } }, "types_to_exclude": [ "module", "function", "builtin_function_or_method", "instance", "_Feature" ], "window_display": false } }, "nbformat": 4, "nbformat_minor": 4 }