{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "4Pjmz-RORV8E" }, "source": [ "# Text to speech generation\n", "\n", "Text To Speech (TTS) models have made great strides in quality over the last few years. Unfortunately, it's not currently possible to use these libraries without installing a large number of dependencies.\n", "\n", "The txtai TextToSpeech pipeline has the following objectives:\n", "\n", "- Fast performance both on CPU and GPU\n", "- Ability to batch large text values and stream it through the model\n", "- Minimal install footprint\n", "- All dependencies must be Apache 2.0 compatible\n", "\n", "This notebook will go through a set of text to speech generation examples.\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "id": "Dk31rbYjSTYm" }, "source": [ "# Install dependencies\n", "\n", "Install `txtai` and all dependencies. Since this notebook is using optional pipelines, we need to install the pipeline extras package. We'll also demonstrate running this pipeline as an application." ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "id": "XMQuuun2R06J" }, "outputs": [], "source": [ "%%capture\n", "!pip install git+https://github.com/neuml/txtai#egg=txtai[pipeline-audio,pipeline-data] onnxruntime-gpu librosa\n", "\n", "# Install NLTK\n", "import nltk\n", "nltk.download('averaged_perceptron_tagger_eng')" ] }, { "cell_type": "markdown", "metadata": { "id": "PNPJ95cdTKSS" }, "source": [ "# Create a TextToSpeech instance\n", "\n", "The TextToSpeech instance is the main entrypoint for generating speech from text. The pipeline is backed by models from the [ESPnet](https://github.com/espnet/espnet) project. ESPnet has a number of high quality TTS models available on the [Hugging Face Hub](https://huggingface.co/models?library=espnet&pipeline_tag=text-to-speech&sort=downloads).\n", "\n", "This pipeline can use the following models on the Hugging Face Hub.\n", "\n", "- [ljspeech-jets-onnx](https://huggingface.co/NeuML/ljspeech-jets-onnx)\n", "- [ljspeech-vits-onnx](https://huggingface.co/NeuML/ljspeech-vits-onnx)\n", "- [vctk-vits-onnx](https://huggingface.co/NeuML/vctk-vits-onnx)\n", "\n", "The default model is `ljspeech-jets-onnx`. Each of the models above are ESPnet models exported to ONNX using [espnet_onnx](https://github.com/espnet/espnet_onnx). More on that process can be found in the links above.\n" ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "id": "nTDwXOUeTH2-" }, "outputs": [], "source": [ "%%capture\n", "\n", "from txtai.pipeline import TextToSpeech\n", "\n", "# Create text-to-speech model\n", "tts = TextToSpeech()" ] }, { "cell_type": "markdown", "metadata": { "id": "-vGR_piwZZO6" }, "source": [ "# Generate speech\n", "\n", "The first example shows how to generate speech from text. Let's give it a try!" ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 465 }, "id": "-K2YJJzsVtfq", "outputId": "28fd09d8-73e1-4c07-ae71-09397081631c" }, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "iVBORw0KGgoAAAANSUhEUgAABMkAAAHACAYAAAC4Zz/7AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAACkeElEQVR4nOzdd3gUZdcG8HvTe0IIhBYIvfdepUlV4VOxISp2BRu+voIFVFTsYkFRLKivCCpiQYp0pPfeS+hJCCGd1N3vj5CQsmV2d2aeKffvurgkm9ndI8nuzpznPOdYbDabDURERERERERERCbmIzoAIiIiIiIiIiIi0ZgkIyIiIiIiIiIi02OSjIiIiIiIiIiITI9JMiIiIiIiIiIiMj0myYiIiIiIiIiIyPSYJCMiIiIiIiIiItNjkoyIiIiIiIiIiEyPSTIiIiIiIiIiIjI9P9EByM1qteL8+fMIDw+HxWIRHQ4REREREREREQlks9mQmZmJWrVqwcfHcb2Y4ZJk58+fR1xcnOgwiIiIiIiIiIhIQ86cOYM6deo4/L7hkmTh4eEAiv/HIyIiBEdDREREREREREQiZWRkIC4urjRn5IjhkmQlWywjIiKYJCMiIiIiIiIiIgBw2ZaLjfuJiIiIiIiIiMj0mCQjIiIiIiIiIiLTY5KMiIiIiIiIiIhMj0kyIiIiIiIiIiIyPSbJiIiIiIiIiIjI9JgkIyIiIiIiIiIi02OSjIiIiIiIiIiITI9JMiIiIiIiIiIiMj0myYiIiIiIiIiIyPSYJCMiIiIiIiIiItNjkoyIiIiIiIiIiEyPSTIiIiIiIiIiIjI9JsmIiIiIiIiIiMj0mCQjIiIiIiIiIiLTY5LMZPq9txrztp4WHQYRERERERERkaYwSWYyJ1OyMX35UdFhEBERERERERFpCpNkJnQhPRfZeYWiwyAiIiIiIiIi0gwmyUxq5prjokMgIiIiIiIiItIMJslM6tSlHNEhEBERERERERFpBpNkRERERERERERkekySERERERERERGR6TFJRkREREREREREpsckGRERERERERERmZ6f6ABIHX/sOoftpy6LDoOIiIiIiIiISJOYJDOJp+buEh0CEREREREREZFmcbslERERERERERGZHpNkRERERERERERkekySERERERERERGR6TFJRkREREREREREpsckGRERERERERERmR6TZEREREREREREZHpMkhERERERERERkekxSUZERERERERERKbHJBkREREREREREZkek2RERERERERERGR6TJIREREREREREZHpMUlGRERERERERESmxyQZERERERERERGZHpNkRERERERERERkekySERERERERERGR6TFJRkREREREREREpsckmUn9ufs8TlzMEh0GEREREREREZEmMElmYptOpIoOgYiIiIiIiIhIE5gkIyIiIiIiIiIi02OSzMT2nksXHQIRERERERERkSYwSWYCS/Yl2r39py2ncSH9isrREBERERERERFpjypJshkzZiA+Ph5BQUHo2rUrtmzZIul+c+fOhcViwciRI5UN0OA+X33M4fdy8otUjISIiIiIiIiISJsUT5LNmzcPEyZMwJQpU7Bjxw60bdsWgwcPRnJystP7JSQk4D//+Q969+6tdIiGZ3PyvX+PXFQtDiIiIiIiIiIirVI8SfbBBx/goYcewtixY9GiRQvMnDkTISEh+Oabbxzep6ioCKNHj8arr76KBg0aKB2iqb3y1wHRIRARERERERERCadokiw/Px/bt2/HwIEDrz2hjw8GDhyIjRs3Orzfa6+9hurVq+OBBx5w+Rx5eXnIyMgo94fKyy+0ig7BLpvNBqvVWZ0bEREREREREZE6FE2SpaSkoKioCLGxseVuj42NRWKi/Wby69atw9dff41Zs2ZJeo5p06YhMjKy9E9cXJzXcRtNzcgg0SHYNXH+Xtw6c4PoMIiIiJw6dSkb7y49hDmbT4sOhYhIFeuPpWDR3guiwyAiUp2f6ADKyszMxJgxYzBr1izExMRIus+kSZMwYcKE0q8zMjKYKNOJedvOiA6BiIjIpbHfbsWJlGwAwF1d6wqOhohIeaO/2gwASHhruOBIiIjUpWiSLCYmBr6+vkhKSip3e1JSEmrUqFHp+OPHjyMhIQE33nhj6W1Wa/FWQT8/Pxw+fBgNGzYsd5/AwEAEBgYqED0RERERShNk9mw5mYrPVx/D1/d2ho+PRcWoiIiIiEhuim63DAgIQMeOHbFixYrS26xWK1asWIHu3btXOr5Zs2bYu3cvdu3aVfrnpptuQr9+/bBr1y5WiClkyh/7RIdARESkS+8tPYxVhy8it7BIdChERERE5CXFt1tOmDAB9957Lzp16oQuXbpg+vTpyM7Oxtix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BpNkJtSmTpToEIiIiIiIiIiINMVPdACkrtljO6NlrUjRYRARERERERERaQqTZCbTt2l10SEQEREREREREWkOt1sSEREREREREZHpMUlGRERERERERESmxyQZERERERERERGZHpNkRERERERERERkekySERERERERERGR6TFJRkREREREREREpsckGRERERERERERmR6TZEREREREREREZHpMkhERERERERERkekxSUZERERERERERKbHJBkREREREREREZkek2RERERERERERGR6TJIREREREREREZHpMUlGRERERERERESm5yc6ALnZbDYAQEZGhuBIiIiIiIiIiIhItJIcUUnOyBHDJckyMzMBAHFxcYIjISIiIiIiIiIircjMzERkZKTD71tsrtJoOmO1WnH+/HmEh4fDYrGIDkcWGRkZiIuLw5kzZxARESE6HCLV8TVAxNcBEV8DZHZ8DRDxdUCes9lsyMzMRK1ateDj47jzmOEqyXx8fFCnTh3RYSgiIiKCbwRkanwNEPF1QMTXAJkdXwNEfB2QZ5xVkJVg434iIiIiIiIiIjI9JsmIiIiIiIiIiMj0mCTTgcDAQEyZMgWBgYGiQyESgq8BIr4OiPgaILPja4CIrwNSnuEa9xMREREREREREbmLlWRERERERERERGR6TJIREREREREREZHpMUlGRERERERERESmxyQZERERERERERGZHpNkOjBjxgzEx8cjKCgIXbt2xZYtW0SHRKSKtWvX4sYbb0StWrVgsVjw+++/iw6JSFXTpk1D586dER4ejurVq2PkyJE4fPiw6LCIVPX555+jTZs2iIiIQEREBLp3747FixeLDotImLfeegsWiwVPP/206FCIVPHKK6/AYrGU+9OsWTPRYZFBMUmmcfPmzcOECRMwZcoU7NixA23btsXgwYORnJwsOjQixWVnZ6Nt27aYMWOG6FCIhFizZg3GjRuHTZs2YdmyZSgoKMCgQYOQnZ0tOjQi1dSpUwdvvfUWtm/fjm3btqF///4YMWIE9u/fLzo0ItVt3boVX3zxBdq0aSM6FCJVtWzZEhcuXCj9s27dOtEhkUFZbDabTXQQ5FjXrl3RuXNnfPrppwAAq9WKuLg4PPHEE5g4caLg6IjUY7FYsGDBAowcOVJ0KETCXLx4EdWrV8eaNWvQp08f0eEQCRMdHY13330XDzzwgOhQiFSTlZWFDh064LPPPsPrr7+Odu3aYfr06aLDIlLcK6+8gt9//x27du0SHQqZACvJNCw/Px/bt2/HwIEDS2/z8fHBwIEDsXHjRoGRERGRCOnp6QCKEwREZlRUVIS5c+ciOzsb3bt3Fx0OkarGjRuH4cOHl7s2IDKLo0ePolatWmjQoAFGjx6N06dPiw6JDMpPdADkWEpKCoqKihAbG1vu9tjYWBw6dEhQVEREJILVasXTTz+Nnj17olWrVqLDIVLV3r170b17d+Tm5iIsLAwLFixAixYtRIdFpJq5c+dix44d2Lp1q+hQiFTXtWtXzJ49G02bNsWFCxfw6quvonfv3ti3bx/Cw8NFh0cGwyQZERGRDowbNw779u1jDw4ypaZNm2LXrl1IT0/Hr7/+invvvRdr1qxhooxM4cyZM3jqqaewbNkyBAUFiQ6HSHVDhw4t/XubNm3QtWtX1KtXDz///DO33ZPsmCTTsJiYGPj6+iIpKanc7UlJSahRo4agqIiISG3jx4/HwoULsXbtWtSpU0d0OESqCwgIQKNGjQAAHTt2xNatW/HRRx/hiy++EBwZkfK2b9+O5ORkdOjQofS2oqIirF27Fp9++iny8vLg6+srMEIidUVFRaFJkyY4duyY6FDIgNiTTMMCAgLQsWNHrFixovQ2q9WKFStWsA8HEZEJ2Gw2jB8/HgsWLMDKlStRv3590SERaYLVakVeXp7oMIhUMWDAAOzduxe7du0q/dOpUyeMHj0au3btYoKMTCcrKwvHjx9HzZo1RYdCBsRKMo2bMGEC7r33XnTq1AldunTB9OnTkZ2djbFjx4oOjUhxWVlZ5VaITp48iV27diE6Ohp169YVGBmROsaNG4c5c+bgjz/+QHh4OBITEwEAkZGRCA4OFhwdkTomTZqEoUOHom7dusjMzMScOXOwevVqLF26VHRoRKoIDw+v1IsyNDQUVatWZY9KMoX//Oc/uPHGG1GvXj2cP38eU6ZMga+vL+68807RoZEBMUmmcbfffjsuXryIyZMnIzExEe3atcOSJUsqNfMnMqJt27ahX79+pV9PmDABAHDvvfdi9uzZgqIiUs/nn38OAOjbt2+527/99lvcd9996gdEJEBycjLuueceXLhwAZGRkWjTpg2WLl2K66+/XnRoRESkgrNnz+LOO+/EpUuXUK1aNfTq1QubNm1CtWrVRIdGBmSx2Ww20UEQERERERERERGJxJ5kRERERERERERkekySERERERERERGR6TFJRkREREREREREpsckGRERERERERERmR6TZEREREREREREZHpMkhERERERERERkekxSUZERERERERERKbHJBkRERGRTt13330YOXKk6DCIiIiIDMFPdABEREREVJnFYnH6/SlTpuCjjz6CzWZTKSIiIiIiY2OSjIiIiEiDLly4UPr3efPmYfLkyTh8+HDpbWFhYQgLCxMRGhEREZEhcbslERERkQbVqFGj9E9kZCQsFku528LCwiptt+zbty+eeOIJPP3006hSpQpiY2Mxa9YsZGdnY+zYsQgPD0ejRo2wePHics+1b98+DB06FGFhYYiNjcWYMWOQkpKi8v8xERERkVhMkhEREREZyHfffYeYmBhs2bIFTzzxBB577DGMGjUKPXr0wI4dOzBo0CCMGTMGOTk5AIC0tDT0798f7du3x7Zt27BkyRIkJSXhtttuE/x/QkRERKQuJsmIiIiIDKRt27Z46aWX0LhxY0yaNAlBQUGIiYnBQw89hMaNG2Py5Mm4dOkS9uzZAwD49NNP0b59e7z55pto1qwZ2rdvj2+++QarVq3CkSNHBP/fEBEREamHPcmIiIiIDKRNmzalf/f19UXVqlXRunXr0ttiY2MBAMnJyQCA3bt3Y9WqVXb7mx0/fhxNmjRROGIiIiIibWCSjIiIiMhA/P39y31tsVjK3VYyNdNqtQIAsrKycOONN+Ltt9+u9Fg1a9ZUMFIiIiIibWGSjIiIiMjEOnTogPnz5yM+Ph5+fjw1JCIiIvNiTzIiIiIiExs3bhxSU1Nx5513YuvWrTh+/DiWLl2KsWPHoqioSHR4RERERKphkoyIiIjIxGrVqoX1/9+eHRQBEMJAEMyhACPYQA8mkUVxMnhst4J9piZ71zmn5pw1xqi1VvXeqzWnIgCQ47v33tcjAAAAAOAl70EAAAAA4olkAAAAAMQTyQAAAACIJ5IBAAAAEE8kAwAAACCeSAYAAABAPJEMAAAAgHgiGQAAAADxRDIAAAAA4olkAAAAAMQTyQAAAACIJ5IBAAAAEO8HzDi1ivBSs0EAAAAASUVORK5CYII=\n" }, "metadata": {} } ], "source": [ "import librosa.display\n", "import matplotlib.pyplot as plt\n", "\n", "text = \"Text To Speech models have made great strides in quality over the last few years.\"\n", "\n", "# Generate raw waveform speech\n", "speech, rate = tts(text), 22050\n", "\n", "# Print waveplot\n", "plt.figure(figsize=(15, 5))\n", "plot = librosa.display.waveshow(speech[0], sr=speech[1])" ] }, { "cell_type": "markdown", "metadata": { "id": "ARFO5J46SJyj" }, "source": [ "The graph shows a plot of the audio. It clearly shows pauses between words and sentences as we would expect in spoken language. Now let's play the generated speech." ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 60 }, "id": "GpNhbItq3QGL", "outputId": "c85abf97-1b39-4938-f4e3-c4f415b3b132" }, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "" ], "text/html": [ "\n", " \n", " " ] }, "metadata": {} } ], "source": [ "from IPython.display import Audio, display\n", "\n", "import os\n", "\n", "import soundfile as sf\n", "\n", "def play(speech):\n", " # Convert to MP3 to save space\n", " sf.write(\"speech.wav\", speech[0], speech[1])\n", " !ffmpeg -i speech.wav -y -b:a 64 speech.mp3 2> /dev/null\n", "\n", " # Play speech\n", " display(Audio(filename=\"speech.mp3\"))\n", "\n", "play(speech)" ] }, { "cell_type": "markdown", "metadata": { "id": "bDxW-tsCELob" }, "source": [ "# Transcribe audio back to text\n", "\n", "Next we'll use [OpenAI Whisper](https://github.com/openai/whisper) to transcribe the generated audio back to text." ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 70 }, "id": "-KgYwAQzFVll", "outputId": "47857ba8-0942-42f9-ee8a-fde0abe5140a" }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "'Text to speech models have made great strides in quality over the last few years.'" ], "application/vnd.google.colaboratory.intrinsic+json": { "type": "string" } }, "metadata": {}, "execution_count": 48 } ], "source": [ "from txtai.pipeline import Transcription\n", "\n", "# Transcribe files\n", "transcribe = Transcription(\"openai/whisper-base\")\n", "\n", "# Print result\n", "transcribe(speech, rate)" ] }, { "cell_type": "markdown", "metadata": { "id": "lmKDL32ySfXl" }, "source": [ "And as expected, the transcription matches the original text." ] }, { "cell_type": "markdown", "source": [ "# Streaming speech generation\n", "\n", "The TextToSpeech pipeline supports incrementally generating snippets of speech. This enables the pipeline to work with streaming LLM generation." ], "metadata": { "id": "oI2bCz0kBDSO" } }, { "cell_type": "code", "source": [ "text = \"This is streaming speech generation. It's designed to take output tokens from a streaming LLM. It returns snippets of speech.\".split()\n", "for speech, _ in tts(text, stream=True):\n", " print(speech.shape)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "QGpF2T8ce0Md", "outputId": "4f8eefb3-eb46-4bdf-ce45-bd752d9a3822" }, "execution_count": 49, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "(32768,)\n", "(31488,)\n", "(26368,)\n" ] } ] }, { "cell_type": "markdown", "metadata": { "id": "8miGM2xKSkq_" }, "source": [ "# Audio books\n", "\n", "The TextToSpeech pipeline is designed to work with large blocks of text. It could be used to build audio for entire chapters of books.\n", "\n", "In the next example below, we'll read the beginning of the book the `Great Gatsby`. We'll load a new model that enables setting a speaker." ] }, { "cell_type": "code", "execution_count": 50, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 60 }, "id": "liLFTAAvOWpi", "outputId": "76210dec-7b43-4383-ebd0-6320c71d42d4" }, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "" ], "text/html": [ "\n", " \n", " " ] }, "metadata": {} } ], "source": [ "# Beginning of The Great Gatsby from Project Gutenberg\n", "# https://www.gutenberg.org/ebooks/64317\n", "\n", "text = \"\"\"\n", "In my younger and more vulnerable years my father gave me some advice\n", "that I've been turning over in my mind ever since.\n", "\n", "“Whenever you feel like criticizing anyone,” he told me, “just\n", "remember that all the people in this world haven't had the advantages\n", "that you've had.”\n", "\n", "He didn't say any more, but we've always been unusually communicative\n", "in a reserved way, and I understood that he meant a great deal more\n", "than that.\n", "\"\"\"\n", "\n", "tts = TextToSpeech(\"neuml/vctk-vits-onnx\")\n", "speech = tts(text, speaker=3)\n", "play(speech)" ] }, { "cell_type": "markdown", "metadata": { "id": "NsmhYciqTAX6" }, "source": [ "# Text To Speech Workflow\n", "\n", "In the last example, we'll cover building a text-to-speech workflow. This workflow is no different in that it connects multiple pipelines together, each of which are backed by machine learning models.\n", "\n", "The workflow extracts text from a webpage, summarizes it and then generates audio of the summary." ] }, { "cell_type": "code", "execution_count": 51, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "TAv7XVgzHb_4", "outputId": "1d88f847-5773-4be3-8f6c-ed33e49ef548" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Overwriting workflow.yml\n" ] } ], "source": [ "%%writefile workflow.yml\n", "summary:\n", " path: sshleifer/distilbart-cnn-12-6\n", "\n", "textractor:\n", " join: true\n", " lines: false\n", " minlength: 100\n", " paragraphs: true\n", " sentences: false\n", "\n", "texttospeech:\n", " path: neuml/vctk-vits-onnx\n", "\n", "workflow:\n", " tts:\n", " tasks:\n", " - action: textractor\n", " task: url\n", " - action: summary\n", " - action: texttospeech\n", " args:\n", " speaker: 15" ] }, { "cell_type": "code", "execution_count": 52, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 115 }, "id": "_dmQZ6i8IDAA", "outputId": "47bda0fc-c7df-42d3-d540-834576c806f8" }, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "" ], "text/html": [ "\n", " \n", " " ] }, "metadata": {} } ], "source": [ "from txtai.app import Application\n", "\n", "app = Application(\"workflow.yml\")\n", "\n", "speech = list(app.workflow(\"tts\", [\"https://en.wikipedia.org/wiki/Natural_language_processing\"]))[0]\n", "\n", "play(speech)" ] }, { "cell_type": "markdown", "metadata": { "id": "VCU8zGGDXQ0Y" }, "source": [ "# Wrapping up\n", "\n", "This notebook gave a brief introduction on text to speech models. The text to speech pipeline in txtai is designed to be easy to use and handles the most common text to speech tasks in English. \n", "\n", "This work is made possible by the excellent advancements in text to speech modeling. [ESPnet](https://github.com/espnet/espnet) is a great project and should be checked out for more advanced and a wider range of use cases. This pipeline was also made possible by the great work from [espnet_onnx](https://github.com/espnet/espnet_onnx) in building a framework to export models to ONNX.\n", "\n", "Looking forward to seeing what the community dreams up using this pipeline!\n", "\n" ] } ], "metadata": { "accelerator": "GPU", "colab": { "provenance": [] }, "gpuClass": "standard", "kernelspec": { "display_name": "Python 3", "name": "python3" } }, "nbformat": 4, "nbformat_minor": 0 }