[
  {
    "path": ".github/workflows",
    "content": "# This workflow will upload a Python Package using Twine when a release is created\n# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python#publishing-to-package-registries\n\n# This workflow uses actions that are not certified by GitHub.\n# They are provided by a third-party and are governed by\n# separate terms of service, privacy policy, and support\n# documentation.\n\nname: Upload Python Package\n\non:\n  release:\n    types: [published]\n\npermissions:\n  contents: read\n\njobs:\n  deploy:\n\n    runs-on: ubuntu-latest\n\n    steps:\n    - uses: actions/checkout@v3\n    - name: Set up Python\n      uses: actions/setup-python@v3\n      with:\n        python-version: '3.x'\n    - name: Install dependencies\n      run: |\n        python -m pip install --upgrade pip\n        pip install build\n    - name: Build package\n      run: python -m build\n    - name: Publish package\n      uses: pypa/gh-action-pypi-publish@27b31702a0e7fc50959f5ad993c78deac1bdfc29\n      with:\n        user: __token__\n        password: ${{ secrets.PYPI_API_TOKEN }}\n"
  },
  {
    "path": ".gitignore",
    "content": "# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\n\n# C extensions\n*.so\n\n# Distribution / packaging\n.Python\nbuild/\ndevelop-eggs/\ndist/\ndownloads/\neggs/\n.eggs/\nlib/\nlib64/\nparts/\nsdist/\nvar/\nwheels/\npip-wheel-metadata/\nshare/python-wheels/\n*.egg-info/\n.installed.cfg\n*.egg\nMANIFEST\n\n# PyInstaller\n#  Usually these files are written by a python script from a template\n#  before PyInstaller builds the exe, so as to inject date/other infos into it.\n*.manifest\n*.spec\n\n# Installer logs\npip-log.txt\npip-delete-this-directory.txt\n\n# Unit test / coverage reports\nhtmlcov/\n.tox/\n.nox/\n.coverage\n.coverage.*\n.cache\nnosetests.xml\ncoverage.xml\n*.cover\n*.py,cover\n.hypothesis/\n.pytest_cache/\n\n# Translations\n*.mo\n*.pot\n\n# Django stuff:\n*.log\nlocal_settings.py\ndb.sqlite3\ndb.sqlite3-journal\n\n# Flask stuff:\ninstance/\n.webassets-cache\n\n# Scrapy stuff:\n.scrapy\n\n# Sphinx documentation\ndocs/_build/\n\n# PyBuilder\ntarget/\n\n# Jupyter Notebook\n.ipynb_checkpoints\n\n# IPython\nprofile_default/\nipython_config.py\n\n# pyenv\n.python-version\n\n# pipenv\n#   According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.\n#   However, in case of collaboration, if having platform-specific dependencies or dependencies\n#   having no cross-platform support, pipenv may install dependencies that don't work, or not\n#   install all needed dependencies.\n#Pipfile.lock\n\n# PEP 582; used by e.g. github.com/David-OConnor/pyflow\n__pypackages__/\n\n# Celery stuff\ncelerybeat-schedule\ncelerybeat.pid\n\n# SageMath parsed files\n*.sage.py\n\n# Environments\n.env\n.venv\nenv/\nvenv/\nENV/\nenv.bak/\nvenv.bak/\n\n# Spyder project settings\n.spyderproject\n.spyproject\n\n# Rope project settings\n.ropeproject\n\n# mkdocs documentation\n/site\n\n# mypy\n.mypy_cache/\n.dmypy.json\ndmypy.json\n\n# Pyre type checker\n.pyre/\n\n.idea/*\n.models/*\n.custom/*\nresults/*\ndebug_states/*"
  },
  {
    "path": "Advanced_Usage.md",
    "content": "## Advanced Usage\n\n### Generation settings\n\nTortoise is primarily an autoregressive decoder model combined with a diffusion model. Both of these have a lot of knobs\nthat can be turned that I've abstracted away for the sake of ease of use. I did this by generating thousands of clips using\nvarious permutations of the settings and using a metric for voice realism and intelligibility to measure their effects. I've\nset the defaults to the best overall settings I was able to find. For specific use-cases, it might be effective to play with\nthese settings (and it's very likely that I missed something!)\n\nThese settings are not available in the normal scripts packaged with Tortoise. They are available, however, in the API. See\n```api.tts``` for a full list.\n\n### Prompt engineering\n\nSome people have discovered that it is possible to do prompt engineering with Tortoise! For example, you can evoke emotion\nby including things like \"I am really sad,\" before your text. I've built an automated redaction system that you can use to\ntake advantage of this. It works by attempting to redact any text in the prompt surrounded by brackets. For example, the\nprompt \"\\[I am really sad,\\] Please feed me.\" will only speak the words \"Please feed me\" (with a sad tonality).\n\n### Playing with the voice latent\n\nTortoise ingests reference clips by feeding them through individually through a small submodel that produces a point latent,\nthen taking the mean of all of the produced latents. The experimentation I have done has indicated that these point latents\nare quite expressive, affecting everything from tone to speaking rate to speech abnormalities.\n\nThis lends itself to some neat tricks. For example, you can combine feed two different voices to tortoise and it will output\nwhat it thinks the \"average\" of those two voices sounds like.\n\n#### Generating conditioning latents from voices\n\nUse the script `get_conditioning_latents.py` to extract conditioning latents for a voice you have installed. This script\nwill dump the latents to a .pth pickle file. The file will contain a single tuple, (autoregressive_latent, diffusion_latent).\n\nAlternatively, use the api.TextToSpeech.get_conditioning_latents() to fetch the latents.\n\n#### Using raw conditioning latents to generate speech\n\nAfter you've played with them, you can use them to generate speech by creating a subdirectory in voices/ with a single\n\".pth\" file containing the pickled conditioning latents as a tuple (autoregressive_latent, diffusion_latent).\n\n## Tortoise-detect\n\nOut of concerns that this model might be misused, I've built a classifier that tells the likelihood that an audio clip\ncame from Tortoise.\n\nThis classifier can be run on any computer, usage is as follows:\n\n```commandline\npython tortoise/is_this_from_tortoise.py --clip=<path_to_suspicious_audio_file>\n```\n\nThis model has 100% accuracy on the contents of the results/ and voices/ folders in this repo. Still, treat this classifier\nas a \"strong signal\". Classifiers can be fooled and it is likewise not impossible for this classifier to exhibit false\npositives.\n\n## Model architecture\n\nTortoise TTS is inspired by OpenAI's DALLE, applied to speech data and using a better decoder. It is made up of 5 separate\nmodels that work together. I've assembled a write-up of the system architecture here:\n[https://nonint.com/2022/04/25/tortoise-architectural-design-doc/](https://nonint.com/2022/04/25/tortoise-architectural-design-doc/)\n\n## Training\n\nThese models were trained on my \"homelab\" server with 8 RTX 3090s over the course of several months. They were trained on a dataset consisting of\n~50k hours of speech data, most of which was transcribed by [ocotillo](http://www.github.com/neonbjb/ocotillo). Training was done on my own\n[DLAS](https://github.com/neonbjb/DL-Art-School) trainer.\n\nI currently do not have plans to release the training configurations or methodology. See the next section..\n\n## Ethical Considerations\n\nTortoise v2 works considerably better than I had planned. When I began hearing some of the outputs of the last few versions, I began\nwondering whether or not I had an ethically unsound project on my hands. The ways in which a voice-cloning text-to-speech system\ncould be misused are many. It doesn't take much creativity to think up how.\n\nAfter some thought, I have decided to go forward with releasing this. Following are the reasons for this choice:\n\n1. It is primarily good at reading books and speaking poetry. Other forms of speech do not work well.\n2. It was trained on a dataset which does not have the voices of public figures. While it will attempt to mimic these voices if they are provided as references, it does not do so in such a way that most humans would be fooled.\n3. The above points could likely be resolved by scaling up the model and the dataset. For this reason, I am currently withholding details on how I trained the model, pending community feedback.\n4. I am releasing a separate classifier model which will tell you whether a given audio clip was generated by Tortoise or not. See `tortoise-detect` above.\n5. If I, a tinkerer with a BS in computer science with a ~$15k computer can build this, then any motivated corporation or state can as well. I would prefer that it be in the open and everyone know the kinds of things ML can do.\n\n### Diversity\n\nThe diversity expressed by ML models is strongly tied to the datasets they were trained on.\n\nTortoise was trained primarily on a dataset consisting of audiobooks. I made no effort to\nbalance diversity in this dataset. For this reason, Tortoise will be particularly poor at generating the voices of minorities\nor of people who speak with strong accents.\n\n## Looking forward\n\nTortoise v2 is about as good as I think I can do in the TTS world with the resources I have access to. A phenomenon that happens when\ntraining very large models is that as parameter count increases, the communication bandwidth needed to support distributed training\nof the model increases multiplicatively. On enterprise-grade hardware, this is not an issue: GPUs are attached together with\nexceptionally wide buses that can accommodate this bandwidth. I cannot afford enterprise hardware, though, so I am stuck.\n\nI want to mention here\nthat I think Tortoise could be a **lot** better. The three major components of Tortoise are either vanilla Transformer Encoder stacks\nor Decoder stacks. Both of these types of models have a rich experimental history with scaling in the NLP realm. I see no reason\nto believe that the same is not true of TTS.\n"
  },
  {
    "path": "CHANGELOG.md",
    "content": "## Changelog\n#### v3.0.0; 2023/10/18\n- Added fast inference for tortoise with HiFi Decoder (inspired by xtts by [coquiTTS](https://github.com/coqui-ai/TTS) 🐸, check out their multilingual model for noncommercial uses)\n#### v2.8.0; 2023/9/13\n- Added custom tokenizer for non-english models\n#### v2.7.0; 2023/7/26\n- Bug fixes\n- Added Apple Silicon Support\n- Updated Transformer version\n#### v2.6.0; 2023/7/26\n- Bug fixes\n\n#### v2.5.0; 2023/7/09\n- Added kv_cache support 5x faster\n- Added deepspeed support 10x faster\n- Added half precision support\n  \n#### v2.4.0; 2022/5/17\n- Removed CVVP model. Found that it does not, in fact, make an appreciable difference in the output.\n- Add better debugging support; existing tools now spit out debug files which can be used to reproduce bad runs.\n\n#### v2.3.0; 2022/5/12\n- New CLVP-large model for further improved decoding guidance.\n- Improvements to read.py and do_tts.py (new options)\n\n#### v2.2.0; 2022/5/5\n- Added several new voices from the training set.\n- Automated redaction. Wrap the text you want to use to prompt the model but not be spoken in brackets.\n- Bug fixes\n\n#### v2.1.0; 2022/5/2\n- Added ability to produce totally random voices.\n- Added ability to download voice conditioning latent via a script, and then use a user-provided conditioning latent.\n- Added ability to use your own pretrained models.\n- Refactored directory structures.\n- Performance improvements & bug fixes.\n"
  },
  {
    "path": "CITATION.cff",
    "content": "cff-version: 1.3.0\nmessage: \"If you use this software, please cite it as below.\"\nauthors:\n- family-names: \"Betker\"\n  given-names: \"James\"\n  orcid: \"https://orcid.org/my-orcid?orcid=0000-0003-3259-4862\"\ntitle: \"TorToiSe text-to-speech\"\nversion: 2.0\ndate-released: 2022-04-28\nurl: \"https://github.com/neonbjb/tortoise-tts\""
  },
  {
    "path": "Dockerfile",
    "content": "FROM nvidia/cuda:12.2.0-base-ubuntu22.04\n\nCOPY . /app\n\nRUN apt-get update && \\\n    apt-get install -y --allow-unauthenticated --no-install-recommends \\\n    wget \\\n    git \\\n    && apt-get autoremove -y \\\n    && apt-get clean -y \\\n    && rm -rf /var/lib/apt/lists/*\n\nENV HOME=\"/root\"\nENV CONDA_DIR=\"${HOME}/miniconda\"\nENV PATH=\"$CONDA_DIR/bin\":$PATH\nENV CONDA_AUTO_UPDATE_CONDA=false\nENV PIP_DOWNLOAD_CACHE=\"$HOME/.pip/cache\"\nENV TORTOISE_MODELS_DIR=\"$HOME/tortoise-tts/build/lib/tortoise/models\"\n\nRUN wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O /tmp/miniconda3.sh \\\n    && bash /tmp/miniconda3.sh -b -p \"${CONDA_DIR}\" -f -u \\\n    && \"${CONDA_DIR}/bin/conda\" init bash \\\n    && rm -f /tmp/miniconda3.sh \\\n    && echo \". '${CONDA_DIR}/etc/profile.d/conda.sh'\" >> \"${HOME}/.profile\"\n\n# --login option used to source bashrc (thus activating conda env) at every RUN statement\nSHELL [\"/bin/bash\", \"--login\", \"-c\"]\n\nRUN conda create --name tortoise python=3.9 numba inflect -y \\\n    && conda activate tortoise \\\n    && conda install --yes pytorch==2.2.2 torchvision==0.17.2 torchaudio==2.2.2 pytorch-cuda=12.1 -c pytorch -c nvidia \\\n    && conda install --yes transformers=4.31.0 \\\n    && cd /app \\\n    && python setup.py install\n"
  },
  {
    "path": "LICENSE",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "MANIFEST.in",
    "content": "recursive-include tortoise/data *\nrecursive-include tortoise/voices *\n"
  },
  {
    "path": "README.md",
    "content": "# TorToiSe\n\nTortoise is a text-to-speech program built with the following priorities:\n\n1. Strong multi-voice capabilities.\n2. Highly realistic prosody and intonation.\n   \nThis repo contains all the code needed to run Tortoise TTS in inference mode.\n\nManuscript: https://arxiv.org/abs/2305.07243\n## Hugging Face space\n\nA live demo is hosted on Hugging Face Spaces. If you'd like to avoid a queue, please duplicate the Space and add a GPU. Please note that CPU-only spaces do not work for this demo.\n\nhttps://huggingface.co/spaces/Manmay/tortoise-tts\n\n## Install via pip\n```bash\npip install tortoise-tts\n```\n\nIf you would like to install the latest development version, you can also install it directly from the git repository:\n\n```bash\npip install git+https://github.com/neonbjb/tortoise-tts\n```\n\n## What's in a name?\n\nI'm naming my speech-related repos after Mojave desert flora and fauna. Tortoise is a bit tongue in cheek: this model\nis insanely slow. It leverages both an autoregressive decoder **and** a diffusion decoder; both known for their low\nsampling rates. On a K80, expect to generate a medium sized sentence every 2 minutes.\n\nwell..... not so slow anymore now we can get a **0.25-0.3 RTF** on 4GB vram and with streaming we can get < **500 ms** latency !!! \n\n## Demos\n\nSee [this page](http://nonint.com/static/tortoise_v2_examples.html) for a large list of example outputs.\n\nA cool application of Tortoise + GPT-3 (not affiliated with this repository): https://twitter.com/lexman_ai. Unfortunately, this project seems no longer to be active.\n\n## Usage guide\n\n### Local installation\n\nIf you want to use this on your own computer, you must have an NVIDIA GPU.\n\n> [!TIP]\n> On Windows, I **highly** recommend using the Conda installation method. I have been told that if you do not do this, you will spend a lot of time chasing dependency problems.\n\nFirst, install miniconda: https://docs.conda.io/en/latest/miniconda.html\n\nThen run the following commands, using anaconda prompt as the terminal (or any other terminal configured to work with conda)\n\nThis will:\n1. create conda environment with minimal dependencies specified\n1. activate the environment\n1. install pytorch with the command provided here: https://pytorch.org/get-started/locally/\n1. clone tortoise-tts\n1. change the current directory to tortoise-tts\n1. run tortoise python setup install script\n\n```shell\nconda create --name tortoise python=3.9 numba inflect\nconda activate tortoise\nconda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia\nconda install transformers=4.29.2\ngit clone https://github.com/neonbjb/tortoise-tts.git\ncd tortoise-tts\npython setup.py install\n```\n\nOptionally, pytorch can be installed in the base environment, so that other conda environments can use it too. To do this, simply send the `conda install pytorch...` line before activating the tortoise environment.\n\n> [!NOTE]  \n> When you want to use tortoise-tts, you will always have to ensure the `tortoise` conda environment is activated.\n\nIf you are on windows, you may also need to install pysoundfile: `conda install -c conda-forge pysoundfile`\n\n### Docker\n\nAn easy way to hit the ground running and a good jumping off point depending on your use case.\n\n```sh\ngit clone https://github.com/neonbjb/tortoise-tts.git\ncd tortoise-tts\n\ndocker build . -t tts\n\ndocker run --gpus all \\\n    -e TORTOISE_MODELS_DIR=/models \\\n    -v /mnt/user/data/tortoise_tts/models:/models \\\n    -v /mnt/user/data/tortoise_tts/results:/results \\\n    -v /mnt/user/data/.cache/huggingface:/root/.cache/huggingface \\\n    -v /root:/work \\\n    -it tts\n```\nThis gives you an interactive terminal in an environment that's ready to do some tts. Now you can explore the different interfaces that tortoise exposes for tts.\n\nFor example:\n\n```sh\ncd app\nconda activate tortoise\ntime python tortoise/do_tts.py \\\n    --output_path /results \\\n    --preset ultra_fast \\\n    --voice geralt \\\n    --text \"Time flies like an arrow; fruit flies like a bananna.\"\n```\n\n## Apple Silicon\n\nOn macOS 13+ with M1/M2 chips you need to install the nighly version of PyTorch, as stated in the official page you can do:\n\n```shell\npip3 install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cpu\n```\n\nBe sure to do that after you activate the environment. If you don't use conda the commands would look like this:\n\n```shell\npython3.10 -m venv .venv\nsource .venv/bin/activate\npip install numba inflect psutil\npip install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cpu\npip install transformers\ngit clone https://github.com/neonbjb/tortoise-tts.git\ncd tortoise-tts\npip install .\n```\n\nBe aware that DeepSpeed is disabled on Apple Silicon since it does not work. The flag `--use_deepspeed` is ignored.\nYou may need to prepend `PYTORCH_ENABLE_MPS_FALLBACK=1` to the commands below to make them work since MPS does not support all the operations in Pytorch.\n\n\n### do_tts.py\n\nThis script allows you to speak a single phrase with one or more voices.\n```shell\npython tortoise/do_tts.py --text \"I'm going to speak this\" --voice random --preset fast\n```\n### do socket streaming\n```socket server\npython tortoise/socket_server.py \n```\nwill listen at port 5000\n\n\n### faster inference read.py\n\nThis script provides tools for reading large amounts of text.\n\n```shell\npython tortoise/read_fast.py --textfile <your text to be read> --voice random\n```\n\n### read.py\n\nThis script provides tools for reading large amounts of text.\n\n```shell\npython tortoise/read.py --textfile <your text to be read> --voice random\n```\n\nThis will break up the textfile into sentences, and then convert them to speech one at a time. It will output a series\nof spoken clips as they are generated. Once all the clips are generated, it will combine them into a single file and\noutput that as well.\n\nSometimes Tortoise screws up an output. You can re-generate any bad clips by re-running `read.py` with the --regenerate\nargument.\n\n### API\n\nTortoise can be used programmatically, like so:\n\n```python\nreference_clips = [utils.audio.load_audio(p, 22050) for p in clips_paths]\ntts = api.TextToSpeech()\npcm_audio = tts.tts_with_preset(\"your text here\", voice_samples=reference_clips, preset='fast')\n```\n\nTo use deepspeed:\n\n```python\nreference_clips = [utils.audio.load_audio(p, 22050) for p in clips_paths]\ntts = api.TextToSpeech(use_deepspeed=True)\npcm_audio = tts.tts_with_preset(\"your text here\", voice_samples=reference_clips, preset='fast')\n```\n\nTo use kv cache:\n\n```python\nreference_clips = [utils.audio.load_audio(p, 22050) for p in clips_paths]\ntts = api.TextToSpeech(kv_cache=True)\npcm_audio = tts.tts_with_preset(\"your text here\", voice_samples=reference_clips, preset='fast')\n```\n\nTo run model in float16:\n\n```python\nreference_clips = [utils.audio.load_audio(p, 22050) for p in clips_paths]\ntts = api.TextToSpeech(half=True)\npcm_audio = tts.tts_with_preset(\"your text here\", voice_samples=reference_clips, preset='fast')\n```\nfor Faster runs use all three:\n\n```python\nreference_clips = [utils.audio.load_audio(p, 22050) for p in clips_paths]\ntts = api.TextToSpeech(use_deepspeed=True, kv_cache=True, half=True)\npcm_audio = tts.tts_with_preset(\"your text here\", voice_samples=reference_clips, preset='fast')\n```\n\n## Acknowledgements\n\nThis project has garnered more praise than I expected. I am standing on the shoulders of giants, though, and I want to\ncredit a few of the amazing folks in the community that have helped make this happen:\n\n- Hugging Face, who wrote the GPT model and the generate API used by Tortoise, and who hosts the model weights.\n- [Ramesh et al](https://arxiv.org/pdf/2102.12092.pdf) who authored the DALLE paper, which is the inspiration behind Tortoise.\n- [Nichol and Dhariwal](https://arxiv.org/pdf/2102.09672.pdf) who authored the (revision of) the code that drives the diffusion model.\n- [Jang et al](https://arxiv.org/pdf/2106.07889.pdf) who developed and open-sourced univnet, the vocoder this repo uses.\n- [Kim and Jung](https://github.com/mindslab-ai/univnet) who implemented univnet pytorch model.\n- [lucidrains](https://github.com/lucidrains) who writes awesome open source pytorch models, many of which are used here.\n- [Patrick von Platen](https://huggingface.co/patrickvonplaten) whose guides on setting up wav2vec were invaluable to building my dataset.\n\n## Notice\n\nTortoise was built entirely by the author (James Betker) using their own hardware. Their employer was not involved in any facet of Tortoise's development.\n\n## License\n\nTortoise TTS is licensed under the Apache 2.0 license.\n\nIf you use this repo or the ideas therein for your research, please cite it! A bibtex entree can be found in the right pane on GitHub.\n"
  },
  {
    "path": "requirements.txt",
    "content": "tqdm\nrotary_embedding_torch\ntransformers==4.31.0\ntokenizers\ninflect\nprogressbar\neinops==0.4.1\nunidecode\nscipy\nlibrosa==0.9.1\nffmpeg\nnumpy\nnumba\ntorchaudio\nthreadpoolctl\nllvmlite\nappdirs\nnbconvert==5.3.1\ntornado==4.2\npydantic==1.9.1\ndeepspeed==0.8.3\npy-cpuinfo\nhjson\npsutil\nsounddevice\nspacy==3.7.5\n"
  },
  {
    "path": "scripts/tortoise_tts.py",
    "content": "#!/usr/bin/env python3\n\nimport argparse\nimport os\nimport sys\nimport tempfile\nimport time\n\nimport torch\nimport torchaudio\n\nfrom tortoise.api import MODELS_DIR, TextToSpeech\nfrom tortoise.utils.audio import get_voices, load_voices, load_audio\nfrom tortoise.utils.text import split_and_recombine_text\n\nparser = argparse.ArgumentParser(\n    description='TorToiSe is a text-to-speech program that is capable of synthesizing speech '\n                'in multiple voices with realistic prosody and intonation.')\n\nparser.add_argument(\n    'text', type=str, nargs='*',\n    help='Text to speak. If omitted, text is read from stdin.')\nparser.add_argument(\n    '-v, --voice', type=str, default='random', metavar='VOICE', dest='voice',\n    help='Selects the voice to use for generation. Use the & character to join two voices together. '\n         'Use a comma to perform inference on multiple voices. Set to \"all\" to use all available voices. '\n         'Note that multiple voices require the --output-dir option to be set.')\nparser.add_argument(\n    '-V, --voices-dir', metavar='VOICES_DIR', type=str, dest='voices_dir',\n    help='Path to directory containing extra voices to be loaded. Use a comma to specify multiple directories.')\nparser.add_argument(\n    '-p, --preset', type=str, default='fast', choices=['ultra_fast', 'fast', 'standard', 'high_quality'], dest='preset',\n    help='Which voice quality preset to use.')\nparser.add_argument(\n    '-q, --quiet', default=False, action='store_true', dest='quiet',\n    help='Suppress all output.')\n\noutput_group = parser.add_mutually_exclusive_group(required=True)\noutput_group.add_argument(\n    '-l, --list-voices', default=False, action='store_true', dest='list_voices',\n    help='List available voices and exit.')\noutput_group.add_argument(\n    '-P, --play', action='store_true', dest='play',\n    help='Play the audio (requires pydub).')\noutput_group.add_argument(\n    '-o, --output', type=str, metavar='OUTPUT', dest='output',\n    help='Save the audio to a file.')\noutput_group.add_argument(\n    '-O, --output-dir', type=str, metavar='OUTPUT_DIR', dest='output_dir',\n    help='Save the audio to a directory as individual segments.')\n\nmulti_output_group = parser.add_argument_group('multi-output options (requires --output-dir)')\nmulti_output_group.add_argument(\n    '--candidates', type=int, default=1,\n    help='How many output candidates to produce per-voice. Note that only the first candidate is used in the combined output.')\nmulti_output_group.add_argument(\n    '--regenerate', type=str, default=None,\n    help='Comma-separated list of clip numbers to re-generate.')\nmulti_output_group.add_argument(\n    '--skip-existing', action='store_true',\n    help='Set to skip re-generating existing clips.')\n\nadvanced_group = parser.add_argument_group('advanced options')\nadvanced_group.add_argument(\n    '--produce-debug-state', default=False, action='store_true',\n    help='Whether or not to produce debug_states in current directory, which can aid in reproducing problems.')\nadvanced_group.add_argument(\n    '--seed', type=int, default=None,\n    help='Random seed which can be used to reproduce results.')\nadvanced_group.add_argument(\n    '--models-dir', type=str, default=MODELS_DIR,\n    help='Where to find pretrained model checkpoints. Tortoise automatically downloads these to '\n         '~/.cache/tortoise/.models, so this should only be specified if you have custom checkpoints.')\nadvanced_group.add_argument(\n    '--text-split', type=str, default=None,\n    help='How big chunks to split the text into, in the format <desired_length>,<max_length>.')\nadvanced_group.add_argument(\n    '--disable-redaction', default=False, action='store_true',\n    help='Normally text enclosed in brackets are automatically redacted from the spoken output '\n         '(but are still rendered by the model), this can be used for prompt engineering. '\n         'Set this to disable this behavior.')\nadvanced_group.add_argument(\n    '--device', type=str, default=None,\n    help='Device to use for inference.')\nadvanced_group.add_argument(\n    '--batch-size', type=int, default=None,\n    help='Batch size to use for inference. If omitted, the batch size is set based on available GPU memory.')\n\ntuning_group = parser.add_argument_group('tuning options (overrides preset settings)')\ntuning_group.add_argument(\n    '--num-autoregressive-samples', type=int, default=None,\n    help='Number of samples taken from the autoregressive model, all of which are filtered using CLVP. '\n         'As TorToiSe is a probabilistic model, more samples means a higher probability of creating something \"great\".')\ntuning_group.add_argument(\n    '--temperature', type=float, default=None,\n    help='The softmax temperature of the autoregressive model.')\ntuning_group.add_argument(\n    '--length-penalty', type=float, default=None,\n    help='A length penalty applied to the autoregressive decoder. Higher settings causes the model to produce more terse outputs.')\ntuning_group.add_argument(\n    '--repetition-penalty', type=float, default=None,\n    help='A penalty that prevents the autoregressive decoder from repeating itself during decoding. '\n         'Can be used to reduce the incidence of long silences or \"uhhhhhhs\", etc.')\ntuning_group.add_argument(\n    '--top-p', type=float, default=None,\n    help='P value used in nucleus sampling. 0 to 1. Lower values mean the decoder produces more \"likely\" (aka boring) outputs.')\ntuning_group.add_argument(\n    '--max-mel-tokens', type=int, default=None,\n    help='Restricts the output length. 1 to 600. Each unit is 1/20 of a second.')\ntuning_group.add_argument(\n    '--cvvp-amount', type=float, default=None,\n    help='How much the CVVP model should influence the output.'\n    'Increasing this can in some cases reduce the likelihood of multiple speakers.')\ntuning_group.add_argument(\n    '--diffusion-iterations', type=int, default=None,\n    help='Number of diffusion steps to perform.  More steps means the network has more chances to iteratively'\n         'refine the output, which should theoretically mean a higher quality output. '\n         'Generally a value above 250 is not noticeably better, however.')\ntuning_group.add_argument(\n    '--cond-free', type=bool, default=None,\n    help='Whether or not to perform conditioning-free diffusion. Conditioning-free diffusion performs two forward passes for '\n         'each diffusion step: one with the outputs of the autoregressive model and one with no conditioning priors. The output '\n         'of the two is blended according to the cond_free_k value below. Conditioning-free diffusion is the real deal, and '\n         'dramatically improves realism.')\ntuning_group.add_argument(\n    '--cond-free-k', type=float, default=None,\n    help='Knob that determines how to balance the conditioning free signal with the conditioning-present signal. [0,inf]. '\n         'As cond_free_k increases, the output becomes dominated by the conditioning-free signal. '\n         'Formula is: output=cond_present_output*(cond_free_k+1)-cond_absenct_output*cond_free_k')\ntuning_group.add_argument(\n    '--diffusion-temperature', type=float, default=None,\n    help='Controls the variance of the noise fed into the diffusion model. [0,1]. Values at 0 '\n         'are the \"mean\" prediction of the diffusion network and will sound bland and smeared. ')\n\nusage_examples = f'''\nExamples:\n\nRead text using random voice and place it in a file:\n\n    {parser.prog} -o hello.wav \"Hello, how are you?\"\n\nRead text from stdin and play it using the tom voice:\n\n    echo \"Say it like you mean it!\" | {parser.prog} -P -v tom\n\nRead a text file using multiple voices and save the audio clips to a directory:\n\n    {parser.prog} -O /tmp/tts-results -v tom,emma <textfile.txt\n'''\n\ntry:\n    args = parser.parse_args()\nexcept SystemExit as e:\n    if e.code == 0:\n        print(usage_examples)\n    sys.exit(e.code)\n\nextra_voice_dirs = args.voices_dir.split(',') if args.voices_dir else []\nall_voices = sorted(get_voices(extra_voice_dirs))\n\nif args.list_voices:\n    for v in all_voices:\n        print(v)\n    sys.exit(0)\n\nselected_voices = all_voices if args.voice == 'all' else args.voice.split(',')\nselected_voices = [v.split('&') if '&' in v else [v] for v in selected_voices]\nfor voices in selected_voices:\n    for v in voices:\n        if v != 'random' and v not in all_voices:\n            parser.error(f'voice {v} not available, use --list-voices to see available voices.')\n\nif len(args.text) == 0:\n    text = ''\n    for line in sys.stdin:\n        text += line\nelse:\n    text = ' '.join(args.text)\ntext = text.strip()\nif args.text_split:\n    desired_length, max_length = [int(x) for x in args.text_split.split(',')]\n    if desired_length > max_length:\n        parser.error(f'--text-split: desired_length ({desired_length}) must be <= max_length ({max_length})')\n    texts = split_and_recombine_text(text, desired_length, max_length)\nelse:\n    texts = split_and_recombine_text(text)\nif len(texts) == 0:\n    parser.error('no text provided')\n\nif args.output_dir:\n    os.makedirs(args.output_dir, exist_ok=True)\nelse:\n    if len(selected_voices) > 1:\n        parser.error('cannot have multiple voices without --output-dir\"')\n    if args.candidates > 1:\n        parser.error('cannot have multiple candidates without --output-dir\"')\n\n# error out early if pydub isn't installed\nif args.play:\n    try:\n        import pydub\n        import pydub.playback\n    except ImportError:\n        parser.error('--play requires pydub to be installed, which can be done with \"pip install pydub\"')\n\nseed = int(time.time()) if args.seed is None else args.seed\nif not args.quiet:\n    print('Loading tts...')\ntts = TextToSpeech(models_dir=args.models_dir, enable_redaction=not args.disable_redaction,\n                   device=args.device, autoregressive_batch_size=args.batch_size)\ngen_settings = {\n    'use_deterministic_seed': seed,\n    'verbose': not args.quiet,\n    'k': args.candidates,\n    'preset': args.preset,\n}\ntuning_options = [\n    'num_autoregressive_samples', 'temperature', 'length_penalty', 'repetition_penalty', 'top_p',\n    'max_mel_tokens', 'cvvp_amount', 'diffusion_iterations', 'cond_free', 'cond_free_k', 'diffusion_temperature']\nfor option in tuning_options:\n    if getattr(args, option) is not None:\n        gen_settings[option] = getattr(args, option)\ntotal_clips = len(texts) * len(selected_voices)\nregenerate_clips = [int(x) for x in args.regenerate.split(',')] if args.regenerate else None\nfor voice_idx, voice in enumerate(selected_voices):\n    audio_parts = []\n    voice_samples, conditioning_latents = load_voices(voice, extra_voice_dirs)\n    for text_idx, text in enumerate(texts):\n        clip_name = f'{\"-\".join(voice)}_{text_idx:02d}'\n        if args.output_dir:\n            first_clip = os.path.join(args.output_dir, f'{clip_name}_00.wav')\n            if (args.skip_existing or (regenerate_clips and text_idx not in regenerate_clips)) and os.path.exists(first_clip):\n                audio_parts.append(load_audio(first_clip, 24000))\n                if not args.quiet:\n                    print(f'Skipping {clip_name}')\n                continue\n        if not args.quiet:\n            print(f'Rendering {clip_name} ({(voice_idx * len(texts) + text_idx + 1)} of {total_clips})...')\n            print('  ' + text)\n        gen = tts.tts_with_preset(\n            text, voice_samples=voice_samples, conditioning_latents=conditioning_latents, **gen_settings)\n        gen = gen if args.candidates > 1 else [gen]\n        for candidate_idx, audio in enumerate(gen):\n            audio = audio.squeeze(0).cpu()\n            if candidate_idx == 0:\n                audio_parts.append(audio)\n            if args.output_dir:\n                filename = f'{clip_name}_{candidate_idx:02d}.wav'\n                torchaudio.save(os.path.join(args.output_dir, filename), audio, 24000)\n\n    audio = torch.cat(audio_parts, dim=-1)\n    if args.output_dir:\n        filename = f'{\"-\".join(voice)}_combined.wav'\n        torchaudio.save(os.path.join(args.output_dir, filename), audio, 24000)\n    elif args.output:\n        filename = args.output if args.output else os.tmp\n        torchaudio.save(args.output, audio, 24000)\n    elif args.play:\n        f = tempfile.NamedTemporaryFile(suffix='.wav', delete=True)\n        torchaudio.save(f.name, audio, 24000)\n        pydub.playback.play(pydub.AudioSegment.from_wav(f.name))\n\n    if args.produce_debug_state:\n        os.makedirs('debug_states', exist_ok=True)\n        dbg_state = (seed, texts, voice_samples, conditioning_latents, args)\n        torch.save(dbg_state, os.path.join('debug_states', f'debug_{\"-\".join(voice)}.pth'))\n"
  },
  {
    "path": "setup.cfg",
    "content": "[metadata]\ndescription_file = README.md\n"
  },
  {
    "path": "setup.py",
    "content": "import setuptools\n\nwith open(\"README.md\", \"r\", encoding=\"utf-8\") as fh:\n    long_description = fh.read()\n\nsetuptools.setup(\n    name=\"tortoise-tts\",\n    packages=setuptools.find_packages(),\n    version=\"3.0.0\",\n    author=\"James Betker\",\n    author_email=\"james@adamant.ai\",\n    description=\"A high quality multi-voice text-to-speech library\",\n    long_description=long_description,\n    long_description_content_type=\"text/markdown\",\n    url=\"https://github.com/neonbjb/tortoise-tts\",\n    project_urls={},\n    scripts=[\n        'scripts/tortoise_tts.py',\n    ],\n    include_package_data=True,\n    install_requires=[\n        'tqdm',\n        'rotary_embedding_torch',\n        'inflect',\n        'progressbar',\n        'einops',\n        'unidecode',\n        'scipy',\n        'librosa',\n        'transformers==4.31.0',\n        'tokenizers==0.14.0',\n        'scipy==1.13.1'\n        # 'deepspeed==0.8.3',\n    ],\n    classifiers=[\n        \"Programming Language :: Python :: 3\",\n        \"License :: OSI Approved :: Apache Software License\",\n        \"Operating System :: OS Independent\",\n    ],\n    python_requires=\">=3.6\",\n)\n"
  },
  {
    "path": "tortoise/__init__.py",
    "content": ""
  },
  {
    "path": "tortoise/api.py",
    "content": "import os\nimport random\nimport uuid\nfrom time import time\nfrom urllib import request\n\nimport torch\nimport torch.nn.functional as F\nimport progressbar\nimport torchaudio\n\nfrom tortoise.models.classifier import AudioMiniEncoderWithClassifierHead\nfrom tortoise.models.diffusion_decoder import DiffusionTts\nfrom tortoise.models.autoregressive import UnifiedVoice\nfrom tqdm import tqdm\nfrom tortoise.models.arch_util import TorchMelSpectrogram\nfrom tortoise.models.clvp import CLVP\nfrom tortoise.models.cvvp import CVVP\nfrom tortoise.models.random_latent_generator import RandomLatentConverter\nfrom tortoise.models.vocoder import UnivNetGenerator\nfrom tortoise.utils.audio import wav_to_univnet_mel, denormalize_tacotron_mel, TacotronSTFT\nfrom tortoise.utils.diffusion import SpacedDiffusion, space_timesteps, get_named_beta_schedule\nfrom tortoise.utils.tokenizer import VoiceBpeTokenizer\nfrom tortoise.utils.wav2vec_alignment import Wav2VecAlignment\nfrom contextlib import contextmanager\nfrom huggingface_hub import hf_hub_download\npbar = None\n\nDEFAULT_MODELS_DIR = os.path.join(os.path.expanduser('~'), '.cache', 'tortoise', 'models')\nMODELS_DIR = os.environ.get('TORTOISE_MODELS_DIR', DEFAULT_MODELS_DIR)\nMODELS = {\n    'autoregressive.pth': 'https://huggingface.co/jbetker/tortoise-tts-v2/resolve/main/.models/autoregressive.pth',\n    'classifier.pth': 'https://huggingface.co/jbetker/tortoise-tts-v2/resolve/main/.models/classifier.pth',\n    'clvp2.pth': 'https://huggingface.co/jbetker/tortoise-tts-v2/resolve/main/.models/clvp2.pth',\n    'cvvp.pth': 'https://huggingface.co/jbetker/tortoise-tts-v2/resolve/main/.models/cvvp.pth',\n    'diffusion_decoder.pth': 'https://huggingface.co/jbetker/tortoise-tts-v2/resolve/main/.models/diffusion_decoder.pth',\n    'vocoder.pth': 'https://huggingface.co/jbetker/tortoise-tts-v2/resolve/main/.models/vocoder.pth',\n    'rlg_auto.pth': 'https://huggingface.co/jbetker/tortoise-tts-v2/resolve/main/.models/rlg_auto.pth',\n    'rlg_diffuser.pth': 'https://huggingface.co/jbetker/tortoise-tts-v2/resolve/main/.models/rlg_diffuser.pth',\n}\n\ndef get_model_path(model_name, models_dir=MODELS_DIR):\n    \"\"\"\n    Get path to given model, download it if it doesn't exist.\n    \"\"\"\n    if model_name not in MODELS:\n        raise ValueError(f'Model {model_name} not found in available models.')\n    model_path = hf_hub_download(repo_id=\"Manmay/tortoise-tts\", filename=model_name, cache_dir=models_dir)\n    return model_path\n\n\ndef pad_or_truncate(t, length):\n    \"\"\"\n    Utility function for forcing <t> to have the specified sequence length, whether by clipping it or padding it with 0s.\n    \"\"\"\n    if t.shape[-1] == length:\n        return t\n    elif t.shape[-1] < length:\n        return F.pad(t, (0, length-t.shape[-1]))\n    else:\n        return t[..., :length]\n\n\ndef load_discrete_vocoder_diffuser(trained_diffusion_steps=4000, desired_diffusion_steps=200, cond_free=True, cond_free_k=1):\n    \"\"\"\n    Helper function to load a GaussianDiffusion instance configured for use as a vocoder.\n    \"\"\"\n    return SpacedDiffusion(use_timesteps=space_timesteps(trained_diffusion_steps, [desired_diffusion_steps]), model_mean_type='epsilon',\n                           model_var_type='learned_range', loss_type='mse', betas=get_named_beta_schedule('linear', trained_diffusion_steps),\n                           conditioning_free=cond_free, conditioning_free_k=cond_free_k)\n\n\ndef format_conditioning(clip, cond_length=132300, device=\"cuda\" if not torch.backends.mps.is_available() else 'mps'):\n    \"\"\"\n    Converts the given conditioning signal to a MEL spectrogram and clips it as expected by the models.\n    \"\"\"\n    gap = clip.shape[-1] - cond_length\n    if gap < 0:\n        clip = F.pad(clip, pad=(0, abs(gap)))\n    elif gap > 0:\n        rand_start = random.randint(0, gap)\n        clip = clip[:, rand_start:rand_start + cond_length]\n    mel_clip = TorchMelSpectrogram()(clip.unsqueeze(0)).squeeze(0)\n    return mel_clip.unsqueeze(0).to(device)\n\n\ndef fix_autoregressive_output(codes, stop_token, complain=True):\n    \"\"\"\n    This function performs some padding on coded audio that fixes a mismatch issue between what the diffusion model was\n    trained on and what the autoregressive code generator creates (which has no padding or end).\n    This is highly specific to the DVAE being used, so this particular coding will not necessarily work if used with\n    a different DVAE. This can be inferred by feeding a audio clip padded with lots of zeros on the end through the DVAE\n    and copying out the last few codes.\n\n    Failing to do this padding will produce speech with a harsh end that sounds like \"BLAH\" or similar.\n    \"\"\"\n    # Strip off the autoregressive stop token and add padding.\n    stop_token_indices = (codes == stop_token).nonzero()\n    if len(stop_token_indices) == 0:\n        if complain:\n            print(\"No stop tokens found in one of the generated voice clips. This typically means the spoken audio is \"\n                  \"too long. In some cases, the output will still be good, though. Listen to it and if it is missing words, \"\n                  \"try breaking up your input text.\")\n        return codes\n    else:\n        codes[stop_token_indices] = 83\n    stm = stop_token_indices.min().item()\n    codes[stm:] = 83\n    if stm - 3 < codes.shape[0]:\n        codes[-3] = 45\n        codes[-2] = 45\n        codes[-1] = 248\n\n    return codes\n\n\ndef do_spectrogram_diffusion(diffusion_model, diffuser, latents, conditioning_latents, temperature=1, verbose=True):\n    \"\"\"\n    Uses the specified diffusion model to convert discrete codes into a spectrogram.\n    \"\"\"\n    with torch.no_grad():\n        output_seq_len = latents.shape[1] * 4 * 24000 // 22050  # This diffusion model converts from 22kHz spectrogram codes to a 24kHz spectrogram signal.\n        output_shape = (latents.shape[0], 100, output_seq_len)\n        precomputed_embeddings = diffusion_model.timestep_independent(latents, conditioning_latents, output_seq_len, False)\n\n        noise = torch.randn(output_shape, device=latents.device) * temperature\n        mel = diffuser.p_sample_loop(diffusion_model, output_shape, noise=noise,\n                                      model_kwargs={'precomputed_aligned_embeddings': precomputed_embeddings},\n                                     progress=verbose)\n        return denormalize_tacotron_mel(mel)[:,:,:output_seq_len]\n\n\ndef classify_audio_clip(clip):\n    \"\"\"\n    Returns whether or not Tortoises' classifier thinks the given clip came from Tortoise.\n    :param clip: torch tensor containing audio waveform data (get it from load_audio)\n    :return: True if the clip was classified as coming from Tortoise and false if it was classified as real.\n    \"\"\"\n    classifier = AudioMiniEncoderWithClassifierHead(2, spec_dim=1, embedding_dim=512, depth=5, downsample_factor=4,\n                                                    resnet_blocks=2, attn_blocks=4, num_attn_heads=4, base_channels=32,\n                                                    dropout=0, kernel_size=5, distribute_zero_label=False)\n    classifier.load_state_dict(torch.load(get_model_path('classifier.pth'), map_location=torch.device('cpu')))\n    clip = clip.cpu().unsqueeze(0)\n    results = F.softmax(classifier(clip), dim=-1)\n    return results[0][0]\n\n\ndef pick_best_batch_size_for_gpu():\n    \"\"\"\n    Tries to pick a batch size that will fit in your GPU. These sizes aren't guaranteed to work, but they should give\n    you a good shot.\n    \"\"\"\n    if torch.cuda.is_available():\n        _, available = torch.cuda.mem_get_info()\n        availableGb = available / (1024 ** 3)\n        if availableGb > 14:\n            return 16\n        elif availableGb > 10:\n            return 8\n        elif availableGb > 7:\n            return 4\n    if torch.backends.mps.is_available():\n        import psutil\n        available = psutil.virtual_memory().total\n        availableGb = available / (1024 ** 3)\n        if availableGb > 14:\n            return 16\n        elif availableGb > 10:\n            return 8\n        elif availableGb > 7:\n            return 4\n    return 1\n\nclass TextToSpeech:\n    \"\"\"\n    Main entry point into Tortoise.\n    \"\"\"\n\n    def __init__(self, autoregressive_batch_size=None, models_dir=MODELS_DIR, \n                 enable_redaction=True, kv_cache=False, use_deepspeed=False, half=False, device=None,\n                 tokenizer_vocab_file=None, tokenizer_basic=False):\n\n        \"\"\"\n        Constructor\n        :param autoregressive_batch_size: Specifies how many samples to generate per batch. Lower this if you are seeing\n                                          GPU OOM errors. Larger numbers generates slightly faster.\n        :param models_dir: Where model weights are stored. This should only be specified if you are providing your own\n                           models, otherwise use the defaults.\n        :param enable_redaction: When true, text enclosed in brackets are automatically redacted from the spoken output\n                                 (but are still rendered by the model). This can be used for prompt engineering.\n                                 Default is true.\n        :param device: Device to use when running the model. If omitted, the device will be automatically chosen.\n        \"\"\"\n        self.models_dir = models_dir\n        self.autoregressive_batch_size = pick_best_batch_size_for_gpu() if autoregressive_batch_size is None else autoregressive_batch_size\n        self.enable_redaction = enable_redaction\n        if device is None:\n            self.device = torch.device('cuda' if torch.cuda.is_available() else'cpu')\n        else:\n            self.device = torch.device(device)\n            \n        if torch.backends.mps.is_available():\n            self.device = torch.device('mps')\n        if self.enable_redaction:\n            self.aligner = Wav2VecAlignment()\n\n        self.tokenizer = VoiceBpeTokenizer(\n            vocab_file=tokenizer_vocab_file,\n            use_basic_cleaners=tokenizer_basic,\n        )\n        self.half = half\n        if os.path.exists(f'{models_dir}/autoregressive.ptt'):\n            # Assume this is a traced directory.\n            self.autoregressive = torch.jit.load(f'{models_dir}/autoregressive.ptt')\n            self.diffusion = torch.jit.load(f'{models_dir}/diffusion_decoder.ptt')\n        else:\n            self.autoregressive = UnifiedVoice(max_mel_tokens=604, max_text_tokens=402, max_conditioning_inputs=2, layers=30,\n                                          model_dim=1024,\n                                          heads=16, number_text_tokens=255, start_text_token=255, checkpointing=False,\n                                          train_solo_embeddings=False).cpu().eval()\n            self.autoregressive.load_state_dict(torch.load(get_model_path('autoregressive.pth', models_dir)), strict=False)\n            self.autoregressive.post_init_gpt2_config(use_deepspeed=use_deepspeed, kv_cache=kv_cache, half=self.half)\n            \n            self.diffusion = DiffusionTts(model_channels=1024, num_layers=10, in_channels=100, out_channels=200,\n                                          in_latent_channels=1024, in_tokens=8193, dropout=0, use_fp16=False, num_heads=16,\n                                          layer_drop=0, unconditioned_percentage=0).cpu().eval()\n            self.diffusion.load_state_dict(torch.load(get_model_path('diffusion_decoder.pth', models_dir)))\n\n        self.clvp = CLVP(dim_text=768, dim_speech=768, dim_latent=768, num_text_tokens=256, text_enc_depth=20,\n                         text_seq_len=350, text_heads=12,\n                         num_speech_tokens=8192, speech_enc_depth=20, speech_heads=12, speech_seq_len=430,\n                         use_xformers=True).cpu().eval()\n        self.clvp.load_state_dict(torch.load(get_model_path('clvp2.pth', models_dir)))\n        self.cvvp = None # CVVP model is only loaded if used.\n\n        self.vocoder = UnivNetGenerator().cpu()\n        self.vocoder.load_state_dict(torch.load(get_model_path('vocoder.pth', models_dir), map_location=torch.device('cpu'))['model_g'])\n        self.vocoder.eval(inference=True)\n        \n        self.stft = None # TacotronSTFT is only loaded if used.\n\n        # Random latent generators (RLGs) are loaded lazily.\n        self.rlg_auto = None\n        self.rlg_diffusion = None\n    @contextmanager\n    def temporary_cuda(self, model):\n        m = model.to(self.device)\n        yield m\n        m = model.cpu()\n\n    \n    def load_cvvp(self):\n        \"\"\"Load CVVP model.\"\"\"\n        self.cvvp = CVVP(model_dim=512, transformer_heads=8, dropout=0, mel_codes=8192, conditioning_enc_depth=8, cond_mask_percentage=0,\n                         speech_enc_depth=8, speech_mask_percentage=0, latent_multiplier=1).cpu().eval()\n        self.cvvp.load_state_dict(torch.load(get_model_path('cvvp.pth', self.models_dir)))\n\n    def get_conditioning_latents(self, voice_samples, return_mels=False):\n        \"\"\"\n        Transforms one or more voice_samples into a tuple (autoregressive_conditioning_latent, diffusion_conditioning_latent).\n        These are expressive learned latents that encode aspects of the provided clips like voice, intonation, and acoustic\n        properties.\n        :param voice_samples: List of 2 or more ~10 second reference clips, which should be torch tensors containing 22.05kHz waveform data.\n        \"\"\"\n        with torch.no_grad():\n            voice_samples = [v.to(self.device) for v in voice_samples]\n\n            auto_conds = []\n            if not isinstance(voice_samples, list):\n                voice_samples = [voice_samples]\n            for vs in voice_samples:\n                auto_conds.append(format_conditioning(vs, device=self.device))\n            auto_conds = torch.stack(auto_conds, dim=1)\n            self.autoregressive = self.autoregressive.to(self.device)\n            auto_latent = self.autoregressive.get_conditioning(auto_conds)\n            self.autoregressive = self.autoregressive.cpu()\n\n            if self.stft is None:\n                # Initialize STFT\n                self.stft = TacotronSTFT(1024, 256, 1024, 100, 24000, 0, 12000).to(self.device)\n\n            diffusion_conds = []\n            for sample in voice_samples:\n                # The diffuser operates at a sample rate of 24000 (except for the latent inputs)\n                sample = torchaudio.functional.resample(sample, 22050, 24000)\n                sample = pad_or_truncate(sample, 102400)\n                cond_mel = wav_to_univnet_mel(sample.to(self.device), do_normalization=False,\n                                              device=self.device, stft=self.stft)\n                diffusion_conds.append(cond_mel)\n            diffusion_conds = torch.stack(diffusion_conds, dim=1)\n\n            self.diffusion = self.diffusion.to(self.device)\n            diffusion_latent = self.diffusion.get_conditioning(diffusion_conds)\n            self.diffusion = self.diffusion.cpu()\n\n        if return_mels:\n            return auto_latent, diffusion_latent, auto_conds, diffusion_conds\n        else:\n            return auto_latent, diffusion_latent\n\n    def get_random_conditioning_latents(self):\n        # Lazy-load the RLG models.\n        if self.rlg_auto is None:\n            self.rlg_auto = RandomLatentConverter(1024).eval()\n            self.rlg_auto.load_state_dict(torch.load(get_model_path('rlg_auto.pth', self.models_dir), map_location=torch.device('cpu')))\n            self.rlg_diffusion = RandomLatentConverter(2048).eval()\n            self.rlg_diffusion.load_state_dict(torch.load(get_model_path('rlg_diffuser.pth', self.models_dir), map_location=torch.device('cpu')))\n        with torch.no_grad():\n            return self.rlg_auto(torch.tensor([0.0])), self.rlg_diffusion(torch.tensor([0.0]))\n\n    def tts_with_preset(self, text, preset='fast', **kwargs):\n        \"\"\"\n        Calls TTS with one of a set of preset generation parameters. Options:\n            'ultra_fast': Produces speech at a speed which belies the name of this repo. (Not really, but it's definitely fastest).\n            'fast': Decent quality speech at a decent inference rate. A good choice for mass inference.\n            'standard': Very good quality. This is generally about as good as you are going to get.\n            'high_quality': Use if you want the absolute best. This is not really worth the compute, though.\n        \"\"\"\n        # Use generally found best tuning knobs for generation.\n        settings = {'temperature': .8, 'length_penalty': 1.0, 'repetition_penalty': 2.0,\n                    'top_p': .8,\n                    'cond_free_k': 2.0, 'diffusion_temperature': 1.0}\n        # Presets are defined here.\n        presets = {\n            'ultra_fast': {'num_autoregressive_samples': 16, 'diffusion_iterations': 30, 'cond_free': False},\n            'fast': {'num_autoregressive_samples': 96, 'diffusion_iterations': 80},\n            'standard': {'num_autoregressive_samples': 256, 'diffusion_iterations': 200},\n            'high_quality': {'num_autoregressive_samples': 256, 'diffusion_iterations': 400},\n        }\n        settings.update(presets[preset])\n        settings.update(kwargs) # allow overriding of preset settings with kwargs\n        return self.tts(text, **settings)\n\n    def tts(self, text, voice_samples=None, conditioning_latents=None, k=1, verbose=True, use_deterministic_seed=None,\n            return_deterministic_state=False,\n            # autoregressive generation parameters follow\n            num_autoregressive_samples=512, temperature=.8, length_penalty=1, repetition_penalty=2.0, top_p=.8, max_mel_tokens=500,\n            # CVVP parameters follow\n            cvvp_amount=.0,\n            # diffusion generation parameters follow\n            diffusion_iterations=100, cond_free=True, cond_free_k=2, diffusion_temperature=1.0,\n            **hf_generate_kwargs):\n        \"\"\"\n        Produces an audio clip of the given text being spoken with the given reference voice.\n        :param text: Text to be spoken.\n        :param voice_samples: List of 2 or more ~10 second reference clips which should be torch tensors containing 22.05kHz waveform data.\n        :param conditioning_latents: A tuple of (autoregressive_conditioning_latent, diffusion_conditioning_latent), which\n                                     can be provided in lieu of voice_samples. This is ignored unless voice_samples=None.\n                                     Conditioning latents can be retrieved via get_conditioning_latents().\n        :param k: The number of returned clips. The most likely (as determined by Tortoises' CLVP model) clips are returned.\n        :param verbose: Whether or not to print log messages indicating the progress of creating a clip. Default=true.\n        ~~AUTOREGRESSIVE KNOBS~~\n        :param num_autoregressive_samples: Number of samples taken from the autoregressive model, all of which are filtered using CLVP.\n               As Tortoise is a probabilistic model, more samples means a higher probability of creating something \"great\".\n        :param temperature: The softmax temperature of the autoregressive model.\n        :param length_penalty: A length penalty applied to the autoregressive decoder. Higher settings causes the model to produce more terse outputs.\n        :param repetition_penalty: A penalty that prevents the autoregressive decoder from repeating itself during decoding. Can be used to reduce the incidence\n                                   of long silences or \"uhhhhhhs\", etc.\n        :param top_p: P value used in nucleus sampling. (0,1]. Lower values mean the decoder produces more \"likely\" (aka boring) outputs.\n        :param max_mel_tokens: Restricts the output length. (0,600] integer. Each unit is 1/20 of a second.\n        :param typical_sampling: Turns typical sampling on or off. This sampling mode is discussed in this paper: https://arxiv.org/abs/2202.00666\n                                 I was interested in the premise, but the results were not as good as I was hoping. This is off by default, but\n                                 could use some tuning.\n        :param typical_mass: The typical_mass parameter from the typical_sampling algorithm.\n        ~~CLVP-CVVP KNOBS~~\n        :param cvvp_amount: Controls the influence of the CVVP model in selecting the best output from the autoregressive model.\n                            [0,1]. Values closer to 1 mean the CVVP model is more important, 0 disables the CVVP model.\n        ~~DIFFUSION KNOBS~~\n        :param diffusion_iterations: Number of diffusion steps to perform. [0,4000]. More steps means the network has more chances to iteratively refine\n                                     the output, which should theoretically mean a higher quality output. Generally a value above 250 is not noticeably better,\n                                     however.\n        :param cond_free: Whether or not to perform conditioning-free diffusion. Conditioning-free diffusion performs two forward passes for\n                          each diffusion step: one with the outputs of the autoregressive model and one with no conditioning priors. The output\n                          of the two is blended according to the cond_free_k value below. Conditioning-free diffusion is the real deal, and\n                          dramatically improves realism.\n        :param cond_free_k: Knob that determines how to balance the conditioning free signal with the conditioning-present signal. [0,inf].\n                            As cond_free_k increases, the output becomes dominated by the conditioning-free signal.\n                            Formula is: output=cond_present_output*(cond_free_k+1)-cond_absenct_output*cond_free_k\n        :param diffusion_temperature: Controls the variance of the noise fed into the diffusion model. [0,1]. Values at 0\n                                      are the \"mean\" prediction of the diffusion network and will sound bland and smeared.\n        ~~OTHER STUFF~~\n        :param hf_generate_kwargs: The huggingface Transformers generate API is used for the autoregressive transformer.\n                                   Extra keyword args fed to this function get forwarded directly to that API. Documentation\n                                   here: https://huggingface.co/docs/transformers/internal/generation_utils\n        :return: Generated audio clip(s) as a torch tensor. Shape 1,S if k=1 else, (k,1,S) where S is the sample length.\n                 Sample rate is 24kHz.\n        \"\"\"\n        deterministic_seed = self.deterministic_state(seed=use_deterministic_seed)\n\n        text_tokens = torch.IntTensor(self.tokenizer.encode(text)).unsqueeze(0).to(self.device)\n        text_tokens = F.pad(text_tokens, (0, 1))  # This may not be necessary.\n        assert text_tokens.shape[-1] < 400, 'Too much text provided. Break the text up into separate segments and re-try inference.'\n        auto_conds = None\n        if voice_samples is not None:\n            auto_conditioning, diffusion_conditioning, auto_conds, _ = self.get_conditioning_latents(voice_samples, return_mels=True)\n        elif conditioning_latents is not None:\n            auto_conditioning, diffusion_conditioning = conditioning_latents\n        else:\n            auto_conditioning, diffusion_conditioning = self.get_random_conditioning_latents()\n        auto_conditioning = auto_conditioning.to(self.device)\n        diffusion_conditioning = diffusion_conditioning.to(self.device)\n\n        diffuser = load_discrete_vocoder_diffuser(desired_diffusion_steps=diffusion_iterations, cond_free=cond_free, cond_free_k=cond_free_k)\n\n        with torch.no_grad():\n            samples = []\n            num_batches = num_autoregressive_samples // self.autoregressive_batch_size\n            stop_mel_token = self.autoregressive.stop_mel_token\n            calm_token = 83  # This is the token for coding silence, which is fixed in place with \"fix_autoregressive_output\"\n            if verbose:\n                print(\"Generating autoregressive samples..\")\n            if not torch.backends.mps.is_available():\n                with self.temporary_cuda(self.autoregressive\n                ) as autoregressive, torch.autocast(device_type=\"cuda\", dtype=torch.float16, enabled=self.half):\n                    for b in tqdm(range(num_batches), disable=not verbose):\n                        codes = autoregressive.inference_speech(auto_conditioning, text_tokens,\n                                                                    do_sample=True,\n                                                                    top_p=top_p,\n                                                                    temperature=temperature,\n                                                                    num_return_sequences=self.autoregressive_batch_size,\n                                                                    length_penalty=length_penalty,\n                                                                    repetition_penalty=repetition_penalty,\n                                                                    max_generate_length=max_mel_tokens,\n                                                                    **hf_generate_kwargs)\n                        padding_needed = max_mel_tokens - codes.shape[1]\n                        codes = F.pad(codes, (0, padding_needed), value=stop_mel_token)\n                        samples.append(codes)\n            else:\n                with self.temporary_cuda(self.autoregressive) as autoregressive:\n                    for b in tqdm(range(num_batches), disable=not verbose):\n                        codes = autoregressive.inference_speech(auto_conditioning, text_tokens,\n                                                                    do_sample=True,\n                                                                    top_p=top_p,\n                                                                    temperature=temperature,\n                                                                    num_return_sequences=self.autoregressive_batch_size,\n                                                                    length_penalty=length_penalty,\n                                                                    repetition_penalty=repetition_penalty,\n                                                                    max_generate_length=max_mel_tokens,\n                                                                    **hf_generate_kwargs)\n                        padding_needed = max_mel_tokens - codes.shape[1]\n                        codes = F.pad(codes, (0, padding_needed), value=stop_mel_token)\n                        samples.append(codes)\n\n            clip_results = []\n            \n            if not torch.backends.mps.is_available():\n                with self.temporary_cuda(self.clvp) as clvp, torch.autocast(\n                    device_type=\"cuda\" if not torch.backends.mps.is_available() else 'mps', dtype=torch.float16, enabled=self.half\n                ):\n                    if cvvp_amount > 0:\n                        if self.cvvp is None:\n                            self.load_cvvp()\n                        self.cvvp = self.cvvp.to(self.device)\n                    if verbose:\n                        if self.cvvp is None:\n                            print(\"Computing best candidates using CLVP\")\n                        else:\n                            print(f\"Computing best candidates using CLVP {((1-cvvp_amount) * 100):2.0f}% and CVVP {(cvvp_amount * 100):2.0f}%\")\n                    for batch in tqdm(samples, disable=not verbose):\n                        for i in range(batch.shape[0]):\n                            batch[i] = fix_autoregressive_output(batch[i], stop_mel_token)\n                        if cvvp_amount != 1:\n                            clvp_out = clvp(text_tokens.repeat(batch.shape[0], 1), batch, return_loss=False)\n                        if auto_conds is not None and cvvp_amount > 0:\n                            cvvp_accumulator = 0\n                            for cl in range(auto_conds.shape[1]):\n                                cvvp_accumulator = cvvp_accumulator + self.cvvp(auto_conds[:, cl].repeat(batch.shape[0], 1, 1), batch, return_loss=False)\n                            cvvp = cvvp_accumulator / auto_conds.shape[1]\n                            if cvvp_amount == 1:\n                                clip_results.append(cvvp)\n                            else:\n                                clip_results.append(cvvp * cvvp_amount + clvp_out * (1-cvvp_amount))\n                        else:\n                            clip_results.append(clvp_out)\n                    clip_results = torch.cat(clip_results, dim=0)\n                    samples = torch.cat(samples, dim=0)\n                    best_results = samples[torch.topk(clip_results, k=k).indices]\n            else:\n                with self.temporary_cuda(self.clvp) as clvp:\n                    if cvvp_amount > 0:\n                        if self.cvvp is None:\n                            self.load_cvvp()\n                        self.cvvp = self.cvvp.to(self.device)\n                    if verbose:\n                        if self.cvvp is None:\n                            print(\"Computing best candidates using CLVP\")\n                        else:\n                            print(f\"Computing best candidates using CLVP {((1-cvvp_amount) * 100):2.0f}% and CVVP {(cvvp_amount * 100):2.0f}%\")\n                    for batch in tqdm(samples, disable=not verbose):\n                        for i in range(batch.shape[0]):\n                            batch[i] = fix_autoregressive_output(batch[i], stop_mel_token)\n                        if cvvp_amount != 1:\n                            clvp_out = clvp(text_tokens.repeat(batch.shape[0], 1), batch, return_loss=False)\n                        if auto_conds is not None and cvvp_amount > 0:\n                            cvvp_accumulator = 0\n                            for cl in range(auto_conds.shape[1]):\n                                cvvp_accumulator = cvvp_accumulator + self.cvvp(auto_conds[:, cl].repeat(batch.shape[0], 1, 1), batch, return_loss=False)\n                            cvvp = cvvp_accumulator / auto_conds.shape[1]\n                            if cvvp_amount == 1:\n                                clip_results.append(cvvp)\n                            else:\n                                clip_results.append(cvvp * cvvp_amount + clvp_out * (1-cvvp_amount))\n                        else:\n                            clip_results.append(clvp_out)\n                    clip_results = torch.cat(clip_results, dim=0)\n                    samples = torch.cat(samples, dim=0)\n                    best_results = samples[torch.topk(clip_results, k=k).indices]\n            if self.cvvp is not None:\n                self.cvvp = self.cvvp.cpu()\n            del samples\n\n            # The diffusion model actually wants the last hidden layer from the autoregressive model as conditioning\n            # inputs. Re-produce those for the top results. This could be made more efficient by storing all of these\n            # results, but will increase memory usage.\n            if not torch.backends.mps.is_available():\n                with self.temporary_cuda(\n                    self.autoregressive\n                ) as autoregressive, torch.autocast(\n                    device_type=\"cuda\" if not torch.backends.mps.is_available() else 'mps', dtype=torch.float16, enabled=self.half\n                ):\n                    best_latents = autoregressive(auto_conditioning.repeat(k, 1), text_tokens.repeat(k, 1),\n                                                    torch.tensor([text_tokens.shape[-1]], device=text_tokens.device), best_results,\n                                                    torch.tensor([best_results.shape[-1]*self.autoregressive.mel_length_compression], device=text_tokens.device),\n                                                    return_latent=True, clip_inputs=False)\n                    del auto_conditioning\n            else:\n                with self.temporary_cuda(\n                    self.autoregressive\n                ) as autoregressive:\n                    best_latents = autoregressive(auto_conditioning.repeat(k, 1), text_tokens.repeat(k, 1),\n                                                    torch.tensor([text_tokens.shape[-1]], device=text_tokens.device), best_results,\n                                                    torch.tensor([best_results.shape[-1]*self.autoregressive.mel_length_compression], device=text_tokens.device),\n                                                    return_latent=True, clip_inputs=False)\n                    del auto_conditioning\n\n            if verbose:\n                print(\"Transforming autoregressive outputs into audio..\")\n            wav_candidates = []\n            if not torch.backends.mps.is_available():\n                with self.temporary_cuda(self.diffusion) as diffusion, self.temporary_cuda(\n                    self.vocoder\n                ) as vocoder:\n                    for b in range(best_results.shape[0]):\n                        codes = best_results[b].unsqueeze(0)\n                        latents = best_latents[b].unsqueeze(0)\n\n                        # Find the first occurrence of the \"calm\" token and trim the codes to that.\n                        ctokens = 0\n                        for k in range(codes.shape[-1]):\n                            if codes[0, k] == calm_token:\n                                ctokens += 1\n                            else:\n                                ctokens = 0\n                            if ctokens > 8:  # 8 tokens gives the diffusion model some \"breathing room\" to terminate speech.\n                                latents = latents[:, :k]\n                                break\n                        mel = do_spectrogram_diffusion(diffusion, diffuser, latents, diffusion_conditioning, temperature=diffusion_temperature, \n                                                    verbose=verbose)\n                        wav = vocoder.inference(mel)\n                        wav_candidates.append(wav.cpu())\n            else:\n                diffusion, vocoder = self.diffusion, self.vocoder\n                diffusion_conditioning = diffusion_conditioning.cpu()\n                for b in range(best_results.shape[0]):\n                    codes = best_results[b].unsqueeze(0).cpu()\n                    latents = best_latents[b].unsqueeze(0).cpu()\n\n                    # Find the first occurrence of the \"calm\" token and trim the codes to that.\n                    ctokens = 0\n                    for k in range(codes.shape[-1]):\n                        if codes[0, k] == calm_token:\n                            ctokens += 1\n                        else:\n                            ctokens = 0\n                        if ctokens > 8:  # 8 tokens gives the diffusion model some \"breathing room\" to terminate speech.\n                            latents = latents[:, :k]\n                            break\n                    mel = do_spectrogram_diffusion(diffusion, diffuser, latents, diffusion_conditioning, temperature=diffusion_temperature, \n                                                verbose=verbose)\n                    wav = vocoder.inference(mel)\n                    wav_candidates.append(wav.cpu())\n\n            def potentially_redact(clip, text):\n                if self.enable_redaction:\n                    return self.aligner.redact(clip.squeeze(1), text).unsqueeze(1)\n                return clip\n            wav_candidates = [potentially_redact(wav_candidate, text) for wav_candidate in wav_candidates]\n\n            if len(wav_candidates) > 1:\n                res = wav_candidates\n            else:\n                res = wav_candidates[0]\n\n            if return_deterministic_state:\n                return res, (deterministic_seed, text, voice_samples, conditioning_latents)\n            else:\n                return res\n    def deterministic_state(self, seed=None):\n        \"\"\"\n        Sets the random seeds that tortoise uses to the current time() and returns that seed so results can be\n        reproduced.\n        \"\"\"\n        seed = int(time()) if seed is None else seed\n        torch.manual_seed(seed)\n        random.seed(seed)\n        # Can't currently set this because of CUBLAS. TODO: potentially enable it if necessary.\n        # torch.use_deterministic_algorithms(True)\n\n        return seed\n"
  },
  {
    "path": "tortoise/api_fast.py",
    "content": "import os\nimport random\nimport uuid\nfrom time import time\nfrom urllib import request\n\nimport torch\nimport torch.nn.functional as F\nimport progressbar\nimport torchaudio\nimport numpy as np\nfrom tortoise.models.classifier import AudioMiniEncoderWithClassifierHead\nfrom tortoise.models.diffusion_decoder import DiffusionTts\nfrom tortoise.models.autoregressive import UnifiedVoice\nfrom tqdm import tqdm\nfrom tortoise.models.arch_util import TorchMelSpectrogram\nfrom tortoise.models.clvp import CLVP\nfrom tortoise.models.cvvp import CVVP\nfrom tortoise.models.hifigan_decoder import HifiganGenerator\nfrom tortoise.models.random_latent_generator import RandomLatentConverter\nfrom tortoise.models.vocoder import UnivNetGenerator\nfrom tortoise.utils.audio import wav_to_univnet_mel, denormalize_tacotron_mel\nfrom tortoise.utils.diffusion import SpacedDiffusion, space_timesteps, get_named_beta_schedule\nfrom tortoise.utils.tokenizer import VoiceBpeTokenizer\nfrom tortoise.utils.wav2vec_alignment import Wav2VecAlignment\nfrom contextlib import contextmanager\nfrom tortoise.models.stream_generator import init_stream_support\nfrom huggingface_hub import hf_hub_download\npbar = None\ninit_stream_support()\nDEFAULT_MODELS_DIR = os.path.join(os.path.expanduser('~'), '.cache', 'tortoise', 'models')\nMODELS_DIR = os.environ.get('TORTOISE_MODELS_DIR', DEFAULT_MODELS_DIR)\n\nMODELS = {\n    'autoregressive.pth': 'https://huggingface.co/Manmay/tortoise-tts/resolve/main/autoregressive.pth',\n    'classifier.pth': 'https://huggingface.co/Manmay/tortoise-tts/resolve/main/classifier.pth',\n    'rlg_auto.pth': 'https://huggingface.co/Manmay/tortoise-tts/resolve/main/rlg_auto.pth',\n    'hifidecoder.pth': 'https://huggingface.co/Manmay/tortoise-tts/resolve/main/hifidecoder.pth',\n}\n\ndef get_model_path(model_name, models_dir=MODELS_DIR):\n    \"\"\"\n    Get path to given model, download it if it doesn't exist.\n    \"\"\"\n    if model_name not in MODELS:\n        raise ValueError(f'Model {model_name} not found in available models.')\n    model_path = hf_hub_download(repo_id=\"Manmay/tortoise-tts\", filename=model_name, cache_dir=models_dir)\n    return model_path\n\n\ndef pad_or_truncate(t, length):\n    \"\"\"\n    Utility function for forcing <t> to have the specified sequence length, whether by clipping it or padding it with 0s.\n    \"\"\"\n    if t.shape[-1] == length:\n        return t\n    elif t.shape[-1] < length:\n        return F.pad(t, (0, length-t.shape[-1]))\n    else:\n        return t[..., :length]\n\n\ndef load_discrete_vocoder_diffuser(trained_diffusion_steps=4000, desired_diffusion_steps=200, cond_free=True, cond_free_k=1):\n    \"\"\"\n    Helper function to load a GaussianDiffusion instance configured for use as a vocoder.\n    \"\"\"\n    return SpacedDiffusion(use_timesteps=space_timesteps(trained_diffusion_steps, [desired_diffusion_steps]), model_mean_type='epsilon',\n                           model_var_type='learned_range', loss_type='mse', betas=get_named_beta_schedule('linear', trained_diffusion_steps),\n                           conditioning_free=cond_free, conditioning_free_k=cond_free_k)\n\n\ndef format_conditioning(clip, cond_length=132300, device=\"cuda\" if not torch.backends.mps.is_available() else 'mps'):\n    \"\"\"\n    Converts the given conditioning signal to a MEL spectrogram and clips it as expected by the models.\n    \"\"\"\n    gap = clip.shape[-1] - cond_length\n    if gap < 0:\n        clip = F.pad(clip, pad=(0, abs(gap)))\n    elif gap > 0:\n        rand_start = random.randint(0, gap)\n        clip = clip[:, rand_start:rand_start + cond_length]\n    mel_clip = TorchMelSpectrogram()(clip.unsqueeze(0)).squeeze(0)\n    return mel_clip.unsqueeze(0).to(device)\n\n\ndef fix_autoregressive_output(codes, stop_token, complain=True):\n    \"\"\"\n    This function performs some padding on coded audio that fixes a mismatch issue between what the diffusion model was\n    trained on and what the autoregressive code generator creates (which has no padding or end).\n    This is highly specific to the DVAE being used, so this particular coding will not necessarily work if used with\n    a different DVAE. This can be inferred by feeding a audio clip padded with lots of zeros on the end through the DVAE\n    and copying out the last few codes.\n\n    Failing to do this padding will produce speech with a harsh end that sounds like \"BLAH\" or similar.\n    \"\"\"\n    # Strip off the autoregressive stop token and add padding.\n    stop_token_indices = (codes == stop_token).nonzero()\n    if len(stop_token_indices) == 0:\n        if complain:\n            print(\"No stop tokens found in one of the generated voice clips. This typically means the spoken audio is \"\n                  \"too long. In some cases, the output will still be good, though. Listen to it and if it is missing words, \"\n                  \"try breaking up your input text.\")\n        return codes\n    else:\n        codes[stop_token_indices] = 83\n    stm = stop_token_indices.min().item()\n    codes[stm:] = 83\n    if stm - 3 < codes.shape[0]:\n        codes[-3] = 45\n        codes[-2] = 45\n        codes[-1] = 248\n\n    return codes\n\n\ndef do_spectrogram_diffusion(diffusion_model, diffuser, latents, conditioning_latents, temperature=1, verbose=True):\n    \"\"\"\n    Uses the specified diffusion model to convert discrete codes into a spectrogram.\n    \"\"\"\n    with torch.no_grad():\n        output_seq_len = latents.shape[1] * 4 * 24000 // 22050  # This diffusion model converts from 22kHz spectrogram codes to a 24kHz spectrogram signal.\n        output_shape = (latents.shape[0], 100, output_seq_len)\n        precomputed_embeddings = diffusion_model.timestep_independent(latents, conditioning_latents, output_seq_len, False)\n\n        noise = torch.randn(output_shape, device=latents.device) * temperature\n        mel = diffuser.p_sample_loop(diffusion_model, output_shape, noise=noise,\n                                      model_kwargs={'precomputed_aligned_embeddings': precomputed_embeddings},\n                                     progress=verbose)\n        return denormalize_tacotron_mel(mel)[:,:,:output_seq_len]\n\n\ndef classify_audio_clip(clip):\n    \"\"\"\n    Returns whether or not Tortoises' classifier thinks the given clip came from Tortoise.\n    :param clip: torch tensor containing audio waveform data (get it from load_audio)\n    :return: True if the clip was classified as coming from Tortoise and false if it was classified as real.\n    \"\"\"\n    classifier = AudioMiniEncoderWithClassifierHead(2, spec_dim=1, embedding_dim=512, depth=5, downsample_factor=4,\n                                                    resnet_blocks=2, attn_blocks=4, num_attn_heads=4, base_channels=32,\n                                                    dropout=0, kernel_size=5, distribute_zero_label=False)\n    classifier.load_state_dict(torch.load(get_model_path('classifier.pth'), map_location=torch.device('cpu')))\n    clip = clip.cpu().unsqueeze(0)\n    results = F.softmax(classifier(clip), dim=-1)\n    return results[0][0]\n\n\ndef pick_best_batch_size_for_gpu():\n    \"\"\"\n    Tries to pick a batch size that will fit in your GPU. These sizes aren't guaranteed to work, but they should give\n    you a good shot.\n    \"\"\"\n    if torch.cuda.is_available():\n        _, available = torch.cuda.mem_get_info()\n        availableGb = available / (1024 ** 3)\n        if availableGb > 14:\n            return 16\n        elif availableGb > 10:\n            return 8\n        elif availableGb > 7:\n            return 4\n    if torch.backends.mps.is_available():\n        import psutil\n        available = psutil.virtual_memory().total\n        availableGb = available / (1024 ** 3)\n        if availableGb > 14:\n            return 16\n        elif availableGb > 10:\n            return 8\n        elif availableGb > 7:\n            return 4\n    return 1\n\nclass TextToSpeech:\n    \"\"\"\n    Main entry point into Tortoise.\n    \"\"\"\n\n    def __init__(self, autoregressive_batch_size=None, models_dir=MODELS_DIR, \n                 enable_redaction=True, kv_cache=False, use_deepspeed=False, half=False, device=None,\n                 tokenizer_vocab_file=None, tokenizer_basic=False):\n\n        \"\"\"\n        Constructor\n        :param autoregressive_batch_size: Specifies how many samples to generate per batch. Lower this if you are seeing\n                                          GPU OOM errors. Larger numbers generates slightly faster.\n        :param models_dir: Where model weights are stored. This should only be specified if you are providing your own\n                           models, otherwise use the defaults.\n        :param enable_redaction: When true, text enclosed in brackets are automatically redacted from the spoken output\n                                 (but are still rendered by the model). This can be used for prompt engineering.\n                                 Default is true.\n        :param device: Device to use when running the model. If omitted, the device will be automatically chosen.\n        \"\"\"\n        self.models_dir = models_dir\n        self.autoregressive_batch_size = pick_best_batch_size_for_gpu() if autoregressive_batch_size is None else autoregressive_batch_size\n        self.enable_redaction = enable_redaction\n        if device is None:\n            self.device = torch.device('cuda' if torch.cuda.is_available() else'cpu')\n        else:\n            self.device = torch.device(device)\n            \n        if torch.backends.mps.is_available():\n            self.device = torch.device('mps')\n        if self.enable_redaction:\n            self.aligner = Wav2VecAlignment()\n\n        self.tokenizer = VoiceBpeTokenizer(\n            vocab_file=tokenizer_vocab_file,\n            use_basic_cleaners=tokenizer_basic,\n        )\n        self.half = half\n        if os.path.exists(f'{models_dir}/autoregressive.ptt'):\n            # Assume this is a traced directory.\n            self.autoregressive = torch.jit.load(f'{models_dir}/autoregressive.ptt')\n        else:\n            self.autoregressive = UnifiedVoice(max_mel_tokens=604, max_text_tokens=402, max_conditioning_inputs=2, layers=30,\n                                          model_dim=1024,\n                                          heads=16, number_text_tokens=255, start_text_token=255, checkpointing=False,\n                                          train_solo_embeddings=False).to(self.device).eval()\n            self.autoregressive.load_state_dict(torch.load(get_model_path('autoregressive.pth', models_dir)), strict=False)\n            self.autoregressive.post_init_gpt2_config(use_deepspeed=use_deepspeed, kv_cache=kv_cache, half=self.half)\n\n        self.hifi_decoder = HifiganGenerator(in_channels=1024, out_channels = 1, resblock_type = \"1\",\n        resblock_dilation_sizes = [[1, 3, 5], [1, 3, 5], [1, 3, 5]], resblock_kernel_sizes = [3, 7, 11],\n        upsample_kernel_sizes = [16, 16, 4, 4], upsample_initial_channel = 512, upsample_factors = [8, 8, 2, 2],\n        cond_channels=1024).to(self.device).eval()\n        hifi_model = torch.load(get_model_path('hifidecoder.pth'))\n        self.hifi_decoder.load_state_dict(hifi_model, strict=False)\n        # Random latent generators (RLGs) are loaded lazily.\n        self.rlg_auto = None\n    def get_conditioning_latents(self, voice_samples, return_mels=False):\n        \"\"\"\n        Transforms one or more voice_samples into a tuple (autoregressive_conditioning_latent, diffusion_conditioning_latent).\n        These are expressive learned latents that encode aspects of the provided clips like voice, intonation, and acoustic\n        properties.\n        :param voice_samples: List of 2 or more ~10 second reference clips, which should be torch tensors containing 22.05kHz waveform data.\n        \"\"\"\n        with torch.no_grad():\n            voice_samples = [v.to(self.device) for v in voice_samples]\n\n            auto_conds = []\n            if not isinstance(voice_samples, list):\n                voice_samples = [voice_samples]\n            for vs in voice_samples:\n                auto_conds.append(format_conditioning(vs, device=self.device))\n            auto_conds = torch.stack(auto_conds, dim=1)\n            auto_latent = self.autoregressive.get_conditioning(auto_conds)\n\n        if return_mels:\n            return auto_latent\n        else:\n            return auto_latent\n\n    def get_random_conditioning_latents(self):\n        # Lazy-load the RLG models.\n        if self.rlg_auto is None:\n            self.rlg_auto = RandomLatentConverter(1024).eval()\n            self.rlg_auto.load_state_dict(torch.load(get_model_path('rlg_auto.pth', self.models_dir), map_location=torch.device('cpu')))\n        with torch.no_grad():\n            return self.rlg_auto(torch.tensor([0.0]))\n\n    def tts_with_preset(self, text, preset='fast', **kwargs):\n        \"\"\"\n        Calls TTS with one of a set of preset generation parameters. Options:\n            'ultra_fast': Produces speech at a speed which belies the name of this repo. (Not really, but it's definitely fastest).\n            'fast': Decent quality speech at a decent inference rate. A good choice for mass inference.\n            'standard': Very good quality. This is generally about as good as you are going to get.\n            'high_quality': Use if you want the absolute best. This is not really worth the compute, though.\n        \"\"\"\n        # Use generally found best tuning knobs for generation.\n        settings = {'temperature': .8, 'length_penalty': 1.0, 'repetition_penalty': 2.0,\n                    'top_p': .8,\n                    'cond_free_k': 2.0, 'diffusion_temperature': 1.0}\n        # Presets are defined here.\n        presets = {\n            'ultra_fast': {'num_autoregressive_samples': 1, 'diffusion_iterations': 10},\n            'fast': {'num_autoregressive_samples': 32, 'diffusion_iterations': 50},\n            'standard': {'num_autoregressive_samples': 256, 'diffusion_iterations': 200},\n            'high_quality': {'num_autoregressive_samples': 256, 'diffusion_iterations': 400},\n        }\n        settings.update(presets[preset])\n        settings.update(kwargs) # allow overriding of preset settings with kwargs\n        for audio_frame in self.tts(text, **settings):\n            yield audio_frame\n    # taken from here https://github.com/coqui-ai/TTS/blob/b4c552a112fd4c5f3477f439882eb43c2e2ce85f/TTS/tts/models/xtts.py#L600\n    def handle_chunks(self, wav_gen, wav_gen_prev, wav_overlap, overlap_len):\n        \"\"\"Handle chunk formatting in streaming mode\"\"\"\n        wav_chunk = wav_gen[:-overlap_len]\n        if wav_gen_prev is not None:\n            wav_chunk = wav_gen[(wav_gen_prev.shape[0] - overlap_len) : -overlap_len]\n        if wav_overlap is not None:\n            # cross fade the overlap section\n            if overlap_len > len(wav_chunk):\n                # wav_chunk is smaller than overlap_len, pass on last wav_gen\n                if wav_gen_prev is not None:\n                    wav_chunk = wav_gen[(wav_gen_prev.shape[0] - overlap_len):]\n                else:\n                    # not expecting will hit here as problem happens on last chunk\n                    wav_chunk = wav_gen[-overlap_len:]\n                return wav_chunk, wav_gen, None\n            else:\n                crossfade_wav = wav_chunk[:overlap_len]\n                crossfade_wav = crossfade_wav * torch.linspace(0.0, 1.0, overlap_len).to(crossfade_wav.device)\n                wav_chunk[:overlap_len] = wav_overlap * torch.linspace(1.0, 0.0, overlap_len).to(wav_overlap.device)\n                wav_chunk[:overlap_len] += crossfade_wav\n\n        wav_overlap = wav_gen[-overlap_len:]\n        wav_gen_prev = wav_gen\n        return wav_chunk, wav_gen_prev, wav_overlap\n\n\n    def tts_stream(self, text, voice_samples=None, conditioning_latents=None, k=1, verbose=True, use_deterministic_seed=None,\n            return_deterministic_state=False, overlap_wav_len=1024, stream_chunk_size=40,\n            # autoregressive generation parameters follow\n            num_autoregressive_samples=512, temperature=.8, length_penalty=1, repetition_penalty=2.0, top_p=.8, max_mel_tokens=500,\n            # CVVP parameters follow\n            cvvp_amount=.0,\n            # diffusion generation parameters follow\n            diffusion_iterations=100, cond_free=True, cond_free_k=2, diffusion_temperature=1.0,\n            **hf_generate_kwargs):\n        \"\"\"\n        Produces an audio clip of the given text being spoken with the given reference voice.\n        :param text: Text to be spoken.\n        :param voice_samples: List of 2 or more ~10 second reference clips which should be torch tensors containing 22.05kHz waveform data.\n        :param conditioning_latents: A tuple of (autoregressive_conditioning_latent, diffusion_conditioning_latent), which\n                                     can be provided in lieu of voice_samples. This is ignored unless voice_samples=None.\n                                     Conditioning latents can be retrieved via get_conditioning_latents().\n        :param k: The number of returned clips. The most likely (as determined by Tortoises' CLVP model) clips are returned.\n        :param verbose: Whether or not to print log messages indicating the progress of creating a clip. Default=true.\n        ~~AUTOREGRESSIVE KNOBS~~\n        :param num_autoregressive_samples: Number of samples taken from the autoregressive model, all of which are filtered using CLVP.\n               As Tortoise is a probabilistic model, more samples means a higher probability of creating something \"great\".\n        :param temperature: The softmax temperature of the autoregressive model.\n        :param length_penalty: A length penalty applied to the autoregressive decoder. Higher settings causes the model to produce more terse outputs.\n        :param repetition_penalty: A penalty that prevents the autoregressive decoder from repeating itself during decoding. Can be used to reduce the incidence\n                                   of long silences or \"uhhhhhhs\", etc.\n        :param top_p: P value used in nucleus sampling. (0,1]. Lower values mean the decoder produces more \"likely\" (aka boring) outputs.\n        :param max_mel_tokens: Restricts the output length. (0,600] integer. Each unit is 1/20 of a second.\n        ~~DIFFUSION KNOBS~~\n        :param diffusion_iterations: Number of diffusion steps to perform. [0,4000]. More steps means the network has more chances to iteratively refine\n                                     the output, which should theoretically mean a higher quality output. Generally a value above 250 is not noticeably better,\n                                     however.\n        :param cond_free: Whether or not to perform conditioning-free diffusion. Conditioning-free diffusion performs two forward passes for\n                          each diffusion step: one with the outputs of the autoregressive model and one with no conditioning priors. The output\n                          of the two is blended according to the cond_free_k value below. Conditioning-free diffusion is the real deal, and\n                          dramatically improves realism.\n        :param cond_free_k: Knob that determines how to balance the conditioning free signal with the conditioning-present signal. [0,inf].\n                            As cond_free_k increases, the output becomes dominated by the conditioning-free signal.\n                            Formula is: output=cond_present_output*(cond_free_k+1)-cond_absenct_output*cond_free_k\n        :param diffusion_temperature: Controls the variance of the noise fed into the diffusion model. [0,1]. Values at 0\n                                      are the \"mean\" prediction of the diffusion network and will sound bland and smeared.\n        ~~OTHER STUFF~~\n        :param hf_generate_kwargs: The huggingface Transformers generate API is used for the autoregressive transformer.\n                                   Extra keyword args fed to this function get forwarded directly to that API. Documentation\n                                   here: https://huggingface.co/docs/transformers/internal/generation_utils\n        :return: Generated audio clip(s) as a torch tensor. Shape 1,S if k=1 else, (k,1,S) where S is the sample length.\n                 Sample rate is 24kHz.\n        \"\"\"\n        deterministic_seed = self.deterministic_state(seed=use_deterministic_seed)\n\n        text_tokens = torch.IntTensor(self.tokenizer.encode(text)).unsqueeze(0).to(self.device)\n        text_tokens = F.pad(text_tokens, (0, 1))  # This may not be necessary.\n        assert text_tokens.shape[-1] < 400, 'Too much text provided. Break the text up into separate segments and re-try inference.'\n        if voice_samples is not None:\n            auto_conditioning = self.get_conditioning_latents(voice_samples, return_mels=False)\n        else:\n            auto_conditioning  = self.get_random_conditioning_latents()\n        auto_conditioning = auto_conditioning.to(self.device)\n\n        with torch.no_grad():\n            calm_token = 83  # This is the token for coding silence, which is fixed in place with \"fix_autoregressive_output\"\n            if verbose:\n                print(\"Generating autoregressive samples..\")\n            with torch.autocast(\n                    device_type=\"cuda\" , dtype=torch.float16, enabled=self.half\n                ):\n                fake_inputs = self.autoregressive.compute_embeddings(\n                    auto_conditioning,\n                    text_tokens,\n                )\n                gpt_generator = self.autoregressive.get_generator(\n                    fake_inputs=fake_inputs,\n                    top_k=50,\n                    top_p=top_p,\n                    temperature=temperature,\n                    do_sample=True,\n                    num_beams=1,\n                    num_return_sequences=1,\n                    length_penalty=float(length_penalty),\n                    repetition_penalty=float(repetition_penalty),\n                    output_attentions=False,\n                    output_hidden_states=True,\n                    **hf_generate_kwargs,\n                )\n            all_latents = []\n            codes_ = []\n            wav_gen_prev = None\n            wav_overlap = None\n            is_end = False\n            first_buffer = 60\n            while not is_end:\n                try:\n                    with torch.autocast(\n                        device_type=\"cuda\", dtype=torch.float16, enabled=self.half\n                    ):\n                        codes, latent = next(gpt_generator)\n                        all_latents += [latent]\n                        codes_ += [codes]\n                except StopIteration:\n                    is_end = True\n\n                if is_end or (stream_chunk_size > 0 and len(codes_) >= max(stream_chunk_size, first_buffer)):\n                    first_buffer = 0\n                    gpt_latents = torch.cat(all_latents, dim=0)[None, :]\n                    wav_gen = self.hifi_decoder.inference(gpt_latents.to(self.device), auto_conditioning)\n                    wav_gen = wav_gen.squeeze()\n                    wav_chunk, wav_gen_prev, wav_overlap = self.handle_chunks(\n                        wav_gen.squeeze(), wav_gen_prev, wav_overlap, overlap_wav_len\n                    )\n                    codes_ = []\n                    yield wav_chunk\n    def tts(self, text, voice_samples=None, k=1, verbose=True, use_deterministic_seed=None,\n            # autoregressive generation parameters follow\n            num_autoregressive_samples=512, temperature=.8, length_penalty=1, repetition_penalty=2.0, \n            top_p=.8, max_mel_tokens=500,\n            # CVVP parameters follow\n            cvvp_amount=.0,\n            **hf_generate_kwargs):\n        \"\"\"\n        Produces an audio clip of the given text being spoken with the given reference voice.\n        :param text: Text to be spoken.\n        :param voice_samples: List of 2 or more ~10 second reference clips which should be torch tensors containing 22.05kHz waveform data.\n        :param conditioning_latents: A tuple of (autoregressive_conditioning_latent, diffusion_conditioning_latent), which\n                                     can be provided in lieu of voice_samples. This is ignored unless voice_samples=None.\n                                     Conditioning latents can be retrieved via get_conditioning_latents().\n        :param k: The number of returned clips. The most likely (as determined by Tortoises' CLVP model) clips are returned.\n        :param verbose: Whether or not to print log messages indicating the progress of creating a clip. Default=true.\n        ~~AUTOREGRESSIVE KNOBS~~\n        :param num_autoregressive_samples: Number of samples taken from the autoregressive model, all of which are filtered using CLVP.\n               As Tortoise is a probabilistic model, more samples means a higher probability of creating something \"great\".\n        :param temperature: The softmax temperature of the autoregressive model.\n        :param length_penalty: A length penalty applied to the autoregressive decoder. Higher settings causes the model to produce more terse outputs.\n        :param repetition_penalty: A penalty that prevents the autoregressive decoder from repeating itself during decoding. Can be used to reduce the incidence\n                                   of long silences or \"uhhhhhhs\", etc.\n        :param top_p: P value used in nucleus sampling. (0,1]. Lower values mean the decoder produces more \"likely\" (aka boring) outputs.\n        :param max_mel_tokens: Restricts the output length. (0,600] integer. Each unit is 1/20 of a second.\n        ~~DIFFUSION KNOBS~~\n        :param diffusion_iterations: Number of diffusion steps to perform. [0,4000]. More steps means the network has more chances to iteratively refine\n                                     the output, which should theoretically mean a higher quality output. Generally a value above 250 is not noticeably better,\n                                     however.\n        :param cond_free: Whether or not to perform conditioning-free diffusion. Conditioning-free diffusion performs two forward passes for\n                          each diffusion step: one with the outputs of the autoregressive model and one with no conditioning priors. The output\n                          of the two is blended according to the cond_free_k value below. Conditioning-free diffusion is the real deal, and\n                          dramatically improves realism.\n        :param cond_free_k: Knob that determines how to balance the conditioning free signal with the conditioning-present signal. [0,inf].\n                            As cond_free_k increases, the output becomes dominated by the conditioning-free signal.\n                            Formula is: output=cond_present_output*(cond_free_k+1)-cond_absenct_output*cond_free_k\n        :param diffusion_temperature: Controls the variance of the noise fed into the diffusion model. [0,1]. Values at 0\n                                      are the \"mean\" prediction of the diffusion network and will sound bland and smeared.\n        ~~OTHER STUFF~~\n        :param hf_generate_kwargs: The huggingface Transformers generate API is used for the autoregressive transformer.\n                                   Extra keyword args fed to this function get forwarded directly to that API. Documentation\n                                   here: https://huggingface.co/docs/transformers/internal/generation_utils\n        :return: Generated audio clip(s) as a torch tensor. Shape 1,S if k=1 else, (k,1,S) where S is the sample length.\n                 Sample rate is 24kHz.\n        \"\"\"\n        deterministic_seed = self.deterministic_state(seed=use_deterministic_seed)\n\n        text_tokens = torch.IntTensor(self.tokenizer.encode(text)).unsqueeze(0).to(self.device)\n        text_tokens = F.pad(text_tokens, (0, 1))  # This may not be necessary.\n        assert text_tokens.shape[-1] < 400, 'Too much text provided. Break the text up into separate segments and re-try inference.'\n        if voice_samples is not None:\n            auto_conditioning = self.get_conditioning_latents(voice_samples, return_mels=False)\n        else:\n            auto_conditioning  = self.get_random_conditioning_latents()\n        auto_conditioning = auto_conditioning.to(self.device)\n\n        with torch.no_grad():\n            calm_token = 83  # This is the token for coding silence, which is fixed in place with \"fix_autoregressive_output\"\n            if verbose:\n                print(\"Generating autoregressive samples..\")\n            with torch.autocast(\n                    device_type=\"cuda\" , dtype=torch.float16, enabled=self.half\n                ):\n                codes = self.autoregressive.inference_speech(auto_conditioning, text_tokens,\n                                                            top_k=50,\n                                                            top_p=top_p,\n                                                            temperature=temperature,\n                                                            do_sample=True,\n                                                            num_beams=1,\n                                                            num_return_sequences=1,\n                                                            length_penalty=float(length_penalty),\n                                                            repetition_penalty=float(repetition_penalty),\n                                                            output_attentions=False,\n                                                            output_hidden_states=True,\n                                                            **hf_generate_kwargs)\n                gpt_latents = self.autoregressive(auto_conditioning.repeat(k, 1), text_tokens.repeat(k, 1),\n                                torch.tensor([text_tokens.shape[-1]], device=text_tokens.device), codes,\n                                torch.tensor([codes.shape[-1]*self.autoregressive.mel_length_compression], device=text_tokens.device),\n                                return_latent=True, clip_inputs=False)\n            if verbose:\n                print(\"generating audio..\")\n            wav_gen = self.hifi_decoder.inference(gpt_latents.to(self.device), auto_conditioning)\n            return wav_gen\n    def deterministic_state(self, seed=None):\n        \"\"\"\n        Sets the random seeds that tortoise uses to the current time() and returns that seed so results can be\n        reproduced.\n        \"\"\"\n        seed = int(time()) if seed is None else seed\n        torch.manual_seed(seed)\n        random.seed(seed)\n        # Can't currently set this because of CUBLAS. TODO: potentially enable it if necessary.\n        # torch.use_deterministic_algorithms(True)\n\n        return seed\n"
  },
  {
    "path": "tortoise/data/got.txt",
    "content": "Chapter One\n\n\nBran\n\n\nThe morning had dawned clear and cold, with a crispness that hinted at the end of summer. They set forth at daybreak to see a man beheaded, twenty in all, and Bran rode among them, nervous with excitement. This was the first time he had been deemed old enough to go with his lord father and his brothers to see the king's justice done. It was the ninth year of summer, and the seventh of Bran's life.\n\n\nThe man had been taken outside a small holdfast in the hills. Robb thought he was a wildling, his sword sworn to Mance Rayder, the King-beyond-the-Wall. It made Bran's skin prickle to think of it. He remembered the hearth tales Old Nan told them. The wildlings were cruel men, she said, slavers and slayers and thieves. They consorted with giants and ghouls, stole girl children in the dead of night, and drank blood from polished horns. And their women lay with the Others in the Long Night to sire terrible half-human children.\n\n\nBut the man they found bound hand and foot to the holdfast wall awaiting the king's justice was old and scrawny, not much taller than Robb. He had lost both ears and a finger to frostbite, and he dressed all in black, the same as a brother of the Night's Watch, except that his furs were ragged and greasy.\n\n\nThe breath of man and horse mingled, steaming, in the cold morning air as his lord father had the man cut down from the wall and dragged before them. Robb and Jon sat tall and still on their horses, with Bran between them on his pony, trying to seem older than seven, trying to pretend that he'd seen all this before. A faint wind blew through the holdfast gate. Over their heads flapped the banner of the Starks of Winterfell: a grey direwolf racing across an ice-white field.\n\nBran's father sat solemnly on his horse, long brown hair stirring in the wind. His closely trimmed beard was shot with white, making him look older than his thirty-five years. He had a grim cast to his grey eyes this day, and he seemed not at all the man who would sit before the fire in the evening and talk softly of the age of heroes and the children of the forest. He had taken off Father's face, Bran thought, and donned the face of Lord Stark of Winterfell.\n\n\nThere were questions asked and answers given there in the chill of morning, but afterward Bran could not recall much of what had been said. Finally his lord father gave a command, and two of his guardsmen dragged the ragged man to the ironwood stump in the center of the square. They forced his head down onto the hard black wood. Lord Eddard Stark dismounted and his ward Theon Greyjoy brought forth the sword. \"Ice,\" that sword was called. It was as wide across as a man's hand, and taller even than Robb. The blade was Valyrian steel, spell-forged and dark as smoke. Nothing held an edge like Valyrian steel.\n\n\nHis father peeled off his gloves and handed them to Jory Cassel, the captain of his household guard. He took hold of Ice with both hands and said, \"In the name of Robert of the House Baratheon, the First of his Name, King of the Andals and the Rhoynar and the First Men, Lord of the Seven Kingdoms and Protector of the Realm, by the word of Eddard of the House Stark, Lord of Winterfell and Warden of the North, I do sentence you to die.\" He lifted the greatsword high above his head.\n\n\nBran's bastard brother Jon Snow moved closer. \"Keep the pony well in hand,\" he whispered. \"And don't look away. Father will know if you do.\"\n\n\nBran kept his pony well in hand, and did not look away.\n\n\nHis father took off the man's head with a single sure stroke. Blood sprayed out across the snow, as red as surnmerwine. One of the horses reared and had to be restrained to keep from bolting. Bran could not take his eyes off the blood. The snows around the stump drank it eagerly, reddening as he watched.\n\nThe head bounced off a thick root and rolled. It came up near Greyjoy's feet. Theon was a lean, dark youth of nineteen who found everything amusing. He laughed, put his boot on the head, and kicked it away.\n\n\n\"Ass,\" Jon muttered, low enough so Greyjoy did not hear. He put a hand on Bran's shoulder, and Bran looked over at his bastard brother. \"You did well,\" Jon told him solemnly. Jon was fourteen, an old hand at justice.\n\n\nIt seemed colder on the long ride back to Winterfell, though the wind had died by then and the sun was higher in the sky. Bran rode with his brothers, well ahead of the main party, his pony struggling hard to keep up with their horses.\n\n\n\"The deserter died bravely,\" Robb said. He was big and broad and growing every day, with his mother's coloring, the fair skin, red-brown hair, and blue eyes of the Tullys of Riverrun. \"He had courage, at the least.\"\n\n\n\"No,\" Jon Snow said quietly. \"It was not courage. This one was dead of fear. You could see it in his eyes, Stark.\" Jon's eyes were a grey so dark they seemed almost black, but there was little they did not see. He was of an age with Robb, but they did not look alike. Jon was slender where Robb was muscular, dark where Robb was fair, graceful and quick where his half brother was strong and fast.\n\n\nRobb was not impressed. \"The Others take his eyes,\" he swore. \"He died well. Race you to the bridge?\"\n\n\n\"Done,\" Jon said, kicking his horse forward. Robb cursed and followed, and they galloped off down the trail, Robb laughing and hooting, Jon silent and intent. The hooves of their horses kicked up showers of snow as they went.\n\nBran did not try to follow. His pony could not keep up. He had seen the ragged man's eyes, and he was thinking of them now. After a while, the sound of Robb's laughter receded, and the woods grew silent again.\n\n\nSo deep in thought was he that he never heard the rest of the party until his father moved up to ride beside him. \"Are you well, Bran?\" he asked, not unkindly.\n\n\n\"Yes, Father,\" Bran told him. He looked up. Wrapped in his furs and leathers, mounted on his great warhorse, his lord father loomed over him like a giant. \"Robb says the man died bravely, but Jon says he was afraid.\"\n\n\n\"What do you think?\" his father asked.\n\n\nBran thought about it. \"Can a man still be brave if he's afraid?\"\n\n\n\"That is the only time a man can be brave,\" his father told him. \"Do you understand why I did it?\"\n\n\n\"He was a wildling,\" Bran said. \"They carry off women and sell them to the Others.\"\n\n\nHis lord father smiled. \"Old Nan has been telling you stories again. In truth, the man was an oathbreaker, a deserter from the Night's Watch. No man is more dangerous. The deserter knows his life is forfeit if he is taken, so he will not flinch from any crime, no matter how vile. But you mistake me. The question was not why the man had to die, but why I must do it.\"\n\n\nBran had no answer for that. \"King Robert has a headsman,\" he said, uncertainly.\n\n\n\"He does,\" his father admitted. \"As did the Targaryen kings before him. Yet our way is the older way. The blood of the First Men still flows in the veins of the Starks, and we hold to the belief that the man who passes the sentence should swing the sword. If you would take a man's life, you owe it to him to look into his eyes and hear his final words. And if you cannot bear to do that, then perhaps the man does not deserve to die.\n\n\n\"One day, Bran, you will be Robb's bannerman, holding a keep of your own for your brother and your king, and justice will fall to you. When that day comes, you must take no pleasure in the task, but neither must you look away. A ruler who hides behind paid executioners soon forgets what death is.\"\n\n\nThat was when Jon reappeared on the crest of the hill before them. He waved and shouted down at them. \"Father, Bran, come quickly, see what Robb has found!\" Then he was gone again.\n\n\nJory rode up beside them. \"Trouble, my lord?\"\n\n\n\"Beyond a doubt,\" his lord father said. \"Come, let us see what mischief my sons have rooted out now.\" He sent his horse into a trot. Jory and Bran and the rest came after.\n\n\nThey found Robb on the riverbank north of the bridge, with Jon still mounted beside him. The late summer snows had been heavy this moonturn. Robb stood knee-deep in white, his hood pulled back so the sun shone in his hair. He was cradling something in his arm, while the boys talked in hushed, excited voices.\n\n\nThe riders picked their way carefully through the drifts, groping for solid footing on the hidden, uneven ground . Jory Cassel and Theon Greyjoy were the first to reach the boys. Greyjoy was laughing and joking as he rode. Bran heard the breath go out of him. \"Gods!\" he exclaimed, struggling to keep control of his horse as he reached for his sword.\n\n\nJory's sword was already out. \"Robb, get away from it!\" he called as his horse reared under him.\n\n\nRobb grinned and looked up from the bundle in his arms. \"She can't hurt you,\" he said. \"She's dead, Jory.\"\n\n\nBran was afire with curiosity by then. He would have spurred the pony faster, but his father made them dismount beside the bridge and approach on foot. Bran jumped off and ran.\n\n\nBy then Jon, Jory, and Theon Greyjoy had all dismounted as well. \"What in the seven hells is it?\" Greyjoy was saying.\n\n\n\"A wolf,\" Robb told him.\n\n\n\"A freak,\" Greyjoy said. \"Look at the size of it.\"\n\n\nBran's heart was thumping in his chest as he pushed through a waist-high drift to his brothers' side.\n\n\nHalf-buried in bloodstained snow, a huge dark shape slumped in death. Ice had formed in its shaggy grey fur, and the faint smell of corruption clung to it like a woman's perfume. Bran glimpsed blind eyes crawling with maggots, a wide mouth full of yellowed teeth. But it was the size of it that made him gasp. It was bigger than his pony, twice the size of the largest hound in his father's kennel.\n\n\n\"It's no freak,\" Jon said calmly. \"That's a direwolf. They grow larger than the other kind.\"\n\n\nTheon Greyjoy said, \"There's not been a direwolf sighted south of the Wall in two hundred years.\"\n\n\n\"I see one now,\" Jon replied.\n\n\nBran tore his eyes away from the monster. That was when he noticed the bundle in Robb's arms. He gave a cry of delight and moved closer. The pup was a tiny ball of grey-black fur, its eyes still closed. It nuzzled blindly against Robb's chest as he cradled it, searching for milk among his leathers, making a sad little whimpery sound. Bran reached out hesitantly. \"Go on,\" Robb told him. \"You can touch him.\"\n\n\nBran gave the pup a quick nervous stroke, then turned as Jon said, \"Here you go.\" His half brother put a second pup into his arms. \"There are five of them.\" Bran sat down in the snow and hugged the wolf pup to his face. Its fur was soft and warm against his cheek.\n\n\n\"Direwolves loose in the realm, after so many years,\" muttered Hullen, the master of horse. \"I like it not.\"\n\n\n\"It is a sign,\" Jory said.\n\n\nFather frowned. \"This is only a dead animal, Jory,\" he said. Yet he seemed troubled. Snow crunched under his boots as he moved around the body. \"Do we know what killed her?\"\n\n\n\"There's something in the throat,\" Robb told him, proud to have found the answer before his father even asked. \"There, just under the jaw.\"\n\n\nHis father knelt and groped under the beast's head with his hand. He gave a yank and held it up for all to see. A foot of shattered antler, tines snapped off, all wet with blood.\n\n\nA sudden silence descended over the party. The men looked at the antler uneasily, and no one dared to speak. Even Bran could sense their fear, though he did not understand.\n\n\nHis father tossed the antler to the side and cleansed his hands in the snow. \"I'm surprised she lived long enough to whelp,\" he said. His voice broke the spell.\n\n\n\"Maybe she didn't,\" Jory said. \"I've heard tales . . . maybe the bitch was already dead when the pups came.\"\n\n\n\"Born with the dead,\" another man put in. \"Worse luck.\"\n\n\n\"No matter,\" said Hullen. \"They be dead soon enough too.\"\n\n\nBran gave a wordless cry of dismay.\n\n\n\"The sooner the better,\" Theon Greyjoy agreed. He drew his sword. \"Give the beast here, Bran.\"\n\n\nThe little thing squirmed against him, as if it heard and understood. \"No!\" Bran cried out fiercely. \"It's mine.\"\n\n\n\"Put away your sword, Greyjoy,\" Robb said. For a moment he sounded as commanding as their father, like the lord he would someday be. \"We will keep these pups.\"\n\n\n\"You cannot do that, boy,\" said Harwin, who was Hullen's son.\n\n\n\"It be a mercy to kill them,\" Hullen said.\n\n\nBran looked to his lord father for rescue, but got only a frown, a furrowed brow. \"Hullen speaks truly, son. Better a swift death than a hard one from cold and starvation.\"\n\n\n\"No!\" He could feel tears welling in his eyes, and he looked away. He did not want to cry in front of his father.\n\n\nRobb resisted stubbornly. \"Ser Rodrik's red bitch whelped again last week,\" he said. \"It was a small litter, only two live pups. She'll have milk enough.\"\n\n\n\"She'll rip them apart when they try to nurse.\"\n\n\n\"Lord Stark,\" Jon said. It was strange to hear him call Father that, so formal. Bran looked at him with desperate hope. \"There are five pups,\" he told Father. \"Three male, two female.\"\n\n\n\"What of it, Jon?\"\n\n\n\"You have five trueborn children,\" Jon said. \"Three sons, two daughters. The direwolf is the sigil of your House. Your children were meant to have these pups, my lord.\"\n\n\nBran saw his father's face change, saw the other men exchange glances. He loved Jon with all his heart at that moment. Even at seven, Bran understood what his brother had done. The count had come right only because Jon had omitted himself. He had included the girls, included even Rickon, the baby, but not the bastard who bore the surname Snow, the name that custom decreed be given to all those in the north unlucky enough to be born with no name of their own.\n\n\nTheir father understood as well. \"You want no pup for yourself, Jon?\" he asked softly.\n\n\n\"The direwolf graces the banners of House Stark,\" Jon pointed out. \"I am no Stark, Father.\"\n\n\nTheir lord father regarded Jon thoughtfully. Robb rushed into the silence he left. \"I will nurse him myself, Father,\" he promised. \"I will soak a towel with warm milk, and give him suck from that.\"\n\n\n\"Me too!\" Bran echoed.\n\n\nThe lord weighed his sons long and carefully with his eyes. \"Easy to say, and harder to do. I will not have you wasting the servants' time with this. If you want these pups, you will feed them yourselves. Is that understood?\"\n\n\nBran nodded eagerly. The pup squirmed in his grasp, licked at his face with a warm tongue.\n\n\n\"You must train them as well,\" their father said. \"You must train them. The kennelmaster will have nothing to do with these monsters, I promise you that. And the gods help you if you neglect them, or brutalize them, or train them badly. These are not dogs to beg for treats and slink off at a kick. A direwolf will rip a man's arm off his shoulder as easily as a dog will kill a rat. Are you sure you want this?\"\n\n\"Yes, Father,\" Bran said.\n\n\n\"Yes,\" Robb agreed.\n\n\n\"The pups may die anyway, despite all you do.\"\n\n\n\"They won't die,\" Robb said. \"We won't let them die.\"\n\n\n\"Keep them, then. Jory, Desmond, gather up the other pups. It's time we were back to Winterfell.\"\n\n\nIt was not until they were mounted and on their way that Bran allowed himself to taste the sweet air of victory. By then, his pup was snuggled inside his leathers, warm against him, safe for the long ride home. Bran was wondering what to name him.\n\n\nHalfway across the bridge, Jon pulled up suddenly.\n\n\n\"What is it, Jon?\" their lord father asked.\n\n\n\"Can't you hear it?\"\n\n\nBran could hear the wind in the trees, the clatter of their hooves on the ironwood planks, the whimpering of his hungry pup, but Jon was listening to something else.\n\n\n\"There,\" Jon said. He swung his horse around and galloped back across the bridge. They watched him dismount where the direwolf lay dead in the snow, watched him kneel. A moment later he was riding back to them, smiling.\n\n\n\"He must have crawled away from the others,\" Jon said.\n\n\n\"Or been driven away,\" their father said, looking at the sixth pup. His fur was white, where the rest of the litter was grey. His eyes were as red as the blood of the ragged man who had died that morning. Bran thought it curious that this pup alone would have opened his eyes while the others were still blind.\n\n\n\"An albino,\" Theon Greyjoy said with wry amusement. \"This one will die even faster than the others.\"\n\n\nJon Snow gave his father's ward a long, chilling look. \"I think not, Greyjoy,\" he said. \"This one belongs to me.\""
  },
  {
    "path": "tortoise/data/layman.txt",
    "content": ""
  },
  {
    "path": "tortoise/data/riding_hood.txt",
    "content": "Once upon a time there lived in a certain village a little country girl, the prettiest creature who was ever seen. Her mother was excessively fond of her; and her grandmother doted on her still more. This good woman had a little red riding hood made for her. It suited the girl so extremely well that everybody called her Little Red Riding Hood.\nOne day her mother, having made some cakes, said to her, \"Go, my dear, and see how your grandmother is doing, for I hear she has been very ill. Take her a cake, and this little pot of butter.\"\n\nLittle Red Riding Hood set out immediately to go to her grandmother, who lived in another village.\n\nAs she was going through the wood, she met with a wolf, who had a very great mind to eat her up, but he dared not, because of some woodcutters working nearby in the forest. He asked her where she was going. The poor child, who did not know that it was dangerous to stay and talk to a wolf, said to him, \"I am going to see my grandmother and carry her a cake and a little pot of butter from my mother.\"\n\n\"Does she live far off?\" said the wolf\n\n\"Oh I say,\" answered Little Red Riding Hood; \"it is beyond that mill you see there, at the first house in the village.\"\n\n\"Well,\" said the wolf, \"and I'll go and see her too. I'll go this way and go you that, and we shall see who will be there first.\"\n\nThe wolf ran as fast as he could, taking the shortest path, and the little girl took a roundabout way, entertaining herself by gathering nuts, running after butterflies, and gathering bouquets of little flowers. It was not long before the wolf arrived at the old woman's house. He knocked at the door: tap, tap.\n\n\"Who's there?\"\n\n\"Your grandchild, Little Red Riding Hood,\" replied the wolf, counterfeiting her voice; \"who has brought you a cake and a little pot of butter sent you by mother.\"\n\nThe good grandmother, who was in bed, because she was somewhat ill, cried out, \"Pull the bobbin, and the latch will go up.\"\n\nThe wolf pulled the bobbin, and the door opened, and then he immediately fell upon the good woman and ate her up in a moment, for it been more than three days since he had eaten. He then shut the door and got into the grandmother's bed, expecting Little Red Riding Hood, who came some time afterwards and knocked at the door: tap, tap.\n\n\"Who's there?\"\n\nLittle Red Riding Hood, hearing the big voice of the wolf, was at first afraid; but believing her grandmother had a cold and was hoarse, answered, \"It is your grandchild Little Red Riding Hood, who has brought you a cake and a little pot of butter mother sends you.\"\n\nThe wolf cried out to her, softening his voice as much as he could, \"Pull the bobbin, and the latch will go up.\"\n\nLittle Red Riding Hood pulled the bobbin, and the door opened.\n\nThe wolf, seeing her come in, said to her, hiding himself under the bedclothes, \"Put the cake and the little pot of butter upon the stool, and come get into bed with me.\"\n\nLittle Red Riding Hood took off her clothes and got into bed. She was greatly amazed to see how her grandmother looked in her nightclothes, and said to her, \"Grandmother, what big arms you have!\"\n\n\"All the better to hug you with, my dear.\"\n\n\"Grandmother, what big legs you have!\"\n\n\"All the better to run with, my child.\"\n\n\"Grandmother, what big ears you have!\"\n\n\"All the better to hear with, my child.\"\n\n\"Grandmother, what big eyes you have!\"\n\n\"All the better to see with, my child.\"\n\n\"Grandmother, what big teeth you have got!\"\n\n\"All the better to eat you up with.\"\n\nAnd, saying these words, this wicked wolf fell upon Little Red Riding Hood, and ate her all up."
  },
  {
    "path": "tortoise/data/seal_copypasta.txt",
    "content": "What the fuck did you just fucking say about me, you little bitch? I'll have you know I graduated top of my class in the Navy Seals, and I've been involved in numerous secret raids on Al kayda, and I have over 300 confirmed kills. I am trained in gorilla warfare and I'm the top sniper in the entire U S armed forces. You are nothing to me but just another target. I will wipe you the fuck out with precision the likes of which has never been seen before on this Earth, mark my fucking words. You think you can get away with saying that shit to me over the Internet? Think again, fucker. As we speak I am contacting my secret network of spies across the U S A and your IP is being traced right now so you better prepare for the storm, maggot. The storm that wipes out the pathetic little thing you call your life. You're fucking dead, kid. I can be anywhere, anytime, and I can kill you in over seven hundred ways, and that's just with my bare hands. Not only am I extensively trained in unarmed combat, but I have access to the entire arsenal of the United States Marine Corps and I will use it to its full extent to wipe your miserable ass off the face of the continent, you little shit. If only you could have known what unholy retribution your little \"clever\" comment was about to bring down upon you, maybe you would have held your fucking tongue. But you couldn't, you didn't, and now you're paying the price, you goddamn idiot. I will shit fury all over you and you will drown in it. You're fucking dead, kiddo."
  },
  {
    "path": "tortoise/data/tokenizer.json",
    "content": "{\"version\":\"1.0\",\"truncation\":null,\"padding\":null,\"added_tokens\":[{\"id\":0,\"special\":true,\"content\":\"[STOP]\",\"single_word\":false,\"lstrip\":false,\"rstrip\":false,\"normalized\":false},{\"id\":1,\"special\":true,\"content\":\"[UNK]\",\"single_word\":false,\"lstrip\":false,\"rstrip\":false,\"normalized\":false},{\"id\":2,\"special\":true,\"content\":\"[SPACE]\",\"single_word\":false,\"lstrip\":false,\"rstrip\":false,\"normalized\":false}],\"normalizer\":null,\"pre_tokenizer\":{\"type\":\"Whitespace\"},\"post_processor\":null,\"decoder\":null,\"model\":{\"type\":\"BPE\",\"dropout\":null,\"unk_token\":\"[UNK]\",\"continuing_subword_prefix\":null,\"end_of_word_suffix\":null,\"fuse_unk\":false,\"vocab\":{\"[STOP]\":0,\"[UNK]\":1,\"[SPACE]\":2,\"!\":3,\"'\":4,\"(\":5,\")\":6,\",\":7,\"-\":8,\".\":9,\"/\":10,\":\":11,\";\":12,\"?\":13,\"a\":14,\"b\":15,\"c\":16,\"d\":17,\"e\":18,\"f\":19,\"g\":20,\"h\":21,\"i\":22,\"j\":23,\"k\":24,\"l\":25,\"m\":26,\"n\":27,\"o\":28,\"p\":29,\"q\":30,\"r\":31,\"s\":32,\"t\":33,\"u\":34,\"v\":35,\"w\":36,\"x\":37,\"y\":38,\"z\":39,\"th\":40,\"in\":41,\"the\":42,\"an\":43,\"er\":44,\"ou\":45,\"re\":46,\"on\":47,\"at\":48,\"ed\":49,\"en\":50,\"to\":51,\"ing\":52,\"and\":53,\"is\":54,\"as\":55,\"al\":56,\"or\":57,\"of\":58,\"ar\":59,\"it\":60,\"es\":61,\"he\":62,\"st\":63,\"le\":64,\"om\":65,\"se\":66,\"be\":67,\"ad\":68,\"ow\":69,\"ly\":70,\"ch\":71,\"wh\":72,\"that\":73,\"you\":74,\"li\":75,\"ve\":76,\"ac\":77,\"ti\":78,\"ld\":79,\"me\":80,\"was\":81,\"gh\":82,\"id\":83,\"ll\":84,\"wi\":85,\"ent\":86,\"for\":87,\"ay\":88,\"ro\":89,\"ver\":90,\"ic\":91,\"her\":92,\"ke\":93,\"his\":94,\"no\":95,\"ut\":96,\"un\":97,\"ir\":98,\"lo\":99,\"we\":100,\"ri\":101,\"ha\":102,\"with\":103,\"ght\":104,\"out\":105,\"im\":106,\"ion\":107,\"all\":108,\"ab\":109,\"one\":110,\"ne\":111,\"ge\":112,\"ould\":113,\"ter\":114,\"mo\":115,\"had\":116,\"ce\":117,\"she\":118,\"go\":119,\"sh\":120,\"ur\":121,\"am\":122,\"so\":123,\"pe\":124,\"my\":125,\"de\":126,\"are\":127,\"but\":128,\"ome\":129,\"fr\":130,\"ther\":131,\"fe\":132,\"su\":133,\"do\":134,\"con\":135,\"te\":136,\"ain\":137,\"ere\":138,\"po\":139,\"if\":140,\"they\":141,\"us\":142,\"ag\":143,\"tr\":144,\"now\":145,\"oun\":146,\"this\":147,\"have\":148,\"not\":149,\"sa\":150,\"il\":151,\"up\":152,\"thing\":153,\"from\":154,\"ap\":155,\"him\":156,\"ack\":157,\"ation\":158,\"ant\":159,\"our\":160,\"op\":161,\"like\":162,\"ust\":163,\"ess\":164,\"bo\":165,\"ok\":166,\"ul\":167,\"ind\":168,\"ex\":169,\"com\":170,\"some\":171,\"there\":172,\"ers\":173,\"co\":174,\"res\":175,\"man\":176,\"ard\":177,\"pl\":178,\"wor\":179,\"way\":180,\"tion\":181,\"fo\":182,\"ca\":183,\"were\":184,\"by\":185,\"ate\":186,\"pro\":187,\"ted\":188,\"ound\":189,\"own\":190,\"would\":191,\"ts\":192,\"what\":193,\"qu\":194,\"ally\":195,\"ight\":196,\"ck\":197,\"gr\":198,\"when\":199,\"ven\":200,\"can\":201,\"ough\":202,\"ine\":203,\"end\":204,\"per\":205,\"ous\":206,\"od\":207,\"ide\":208,\"know\":209,\"ty\":210,\"very\":211,\"si\":212,\"ak\":213,\"who\":214,\"about\":215,\"ill\":216,\"them\":217,\"est\":218,\"red\":219,\"ye\":220,\"could\":221,\"ong\":222,\"your\":223,\"their\":224,\"em\":225,\"just\":226,\"other\":227,\"into\":228,\"any\":229,\"whi\":230,\"um\":231,\"tw\":232,\"ast\":233,\"der\":234,\"did\":235,\"ie\":236,\"been\":237,\"ace\":238,\"ink\":239,\"ity\":240,\"back\":241,\"ting\":242,\"br\":243,\"more\":244,\"ake\":245,\"pp\":246,\"then\":247,\"sp\":248,\"el\":249,\"use\":250,\"bl\":251,\"said\":252,\"over\":253,\"get\":254},\"merges\":[\"t h\",\"i n\",\"th e\",\"a n\",\"e r\",\"o u\",\"r e\",\"o n\",\"a t\",\"e d\",\"e n\",\"t o\",\"in g\",\"an d\",\"i s\",\"a s\",\"a l\",\"o r\",\"o f\",\"a r\",\"i t\",\"e s\",\"h e\",\"s t\",\"l e\",\"o m\",\"s e\",\"b e\",\"a d\",\"o w\",\"l y\",\"c h\",\"w h\",\"th at\",\"y ou\",\"l i\",\"v e\",\"a c\",\"t i\",\"l d\",\"m e\",\"w as\",\"g h\",\"i d\",\"l l\",\"w i\",\"en t\",\"f or\",\"a y\",\"r o\",\"v er\",\"i c\",\"h er\",\"k e\",\"h is\",\"n o\",\"u t\",\"u n\",\"i r\",\"l o\",\"w e\",\"r i\",\"h a\",\"wi th\",\"gh t\",\"ou t\",\"i m\",\"i on\",\"al l\",\"a b\",\"on e\",\"n e\",\"g e\",\"ou ld\",\"t er\",\"m o\",\"h ad\",\"c e\",\"s he\",\"g o\",\"s h\",\"u r\",\"a m\",\"s o\",\"p e\",\"m y\",\"d e\",\"a re\",\"b ut\",\"om e\",\"f r\",\"the r\",\"f e\",\"s u\",\"d o\",\"c on\",\"t e\",\"a in\",\"er e\",\"p o\",\"i f\",\"the y\",\"u s\",\"a g\",\"t r\",\"n ow\",\"ou n\",\"th is\",\"ha ve\",\"no t\",\"s a\",\"i l\",\"u p\",\"th ing\",\"fr om\",\"a p\",\"h im\",\"ac k\",\"at ion\",\"an t\",\"ou r\",\"o p\",\"li ke\",\"u st\",\"es s\",\"b o\",\"o k\",\"u l\",\"in d\",\"e x\",\"c om\",\"s ome\",\"the re\",\"er s\",\"c o\",\"re s\",\"m an\",\"ar d\",\"p l\",\"w or\",\"w ay\",\"ti on\",\"f o\",\"c a\",\"w ere\",\"b y\",\"at e\",\"p ro\",\"t ed\",\"oun d\",\"ow n\",\"w ould\",\"t s\",\"wh at\",\"q u\",\"al ly\",\"i ght\",\"c k\",\"g r\",\"wh en\",\"v en\",\"c an\",\"ou gh\",\"in e\",\"en d\",\"p er\",\"ou s\",\"o d\",\"id e\",\"k now\",\"t y\",\"ver y\",\"s i\",\"a k\",\"wh o\",\"ab out\",\"i ll\",\"the m\",\"es t\",\"re d\",\"y e\",\"c ould\",\"on g\",\"you r\",\"the ir\",\"e m\",\"j ust\",\"o ther\",\"in to\",\"an y\",\"wh i\",\"u m\",\"t w\",\"as t\",\"d er\",\"d id\",\"i e\",\"be en\",\"ac e\",\"in k\",\"it y\",\"b ack\",\"t ing\",\"b r\",\"mo re\",\"a ke\",\"p p\",\"the n\",\"s p\",\"e l\",\"u se\",\"b l\",\"sa id\",\"o ver\",\"ge t\"]}}"
  },
  {
    "path": "tortoise/do_tts.py",
    "content": "import argparse\nimport os\n\nimport torch\nimport torchaudio\n\nfrom api import TextToSpeech, MODELS_DIR\nfrom utils.audio import load_voices\n\nif __name__ == '__main__':\n    parser = argparse.ArgumentParser()\n    parser.add_argument('--text', type=str, help='Text to speak.', default=\"The expressiveness of autoregressive transformers is literally nuts! I absolutely adore them.\")\n    parser.add_argument('--voice', type=str, help='Selects the voice to use for generation. See options in voices/ directory (and add your own!) '\n                                                 'Use the & character to join two voices together. Use a comma to perform inference on multiple voices.', default='random')\n    parser.add_argument('--preset', type=str, help='Which voice preset to use.', default='fast')\n    parser.add_argument('--use_deepspeed', type=str, help='Use deepspeed for speed bump.', default=False)\n    parser.add_argument('--kv_cache', type=bool, help='If you disable this please wait for a long a time to get the output', default=True)\n    parser.add_argument('--half', type=bool, help=\"float16(half) precision inference if True it's faster and take less vram and ram\", default=True)\n    parser.add_argument('--output_path', type=str, help='Where to store outputs.', default='results/')\n    parser.add_argument('--model_dir', type=str, help='Where to find pretrained model checkpoints. Tortoise automatically downloads these to .models, so this'\n                                                      'should only be specified if you have custom checkpoints.', default=MODELS_DIR)\n    parser.add_argument('--candidates', type=int, help='How many output candidates to produce per-voice.', default=3)\n    parser.add_argument('--seed', type=int, help='Random seed which can be used to reproduce results.', default=None)\n    parser.add_argument('--produce_debug_state', type=bool, help='Whether or not to produce debug_state.pth, which can aid in reproducing problems. Defaults to true.', default=True)\n    parser.add_argument('--cvvp_amount', type=float, help='How much the CVVP model should influence the output.'\n                                                          'Increasing this can in some cases reduce the likelihood of multiple speakers. Defaults to 0 (disabled)', default=.0)\n    args = parser.parse_args()\n    if torch.backends.mps.is_available():\n        args.use_deepspeed = False\n    os.makedirs(args.output_path, exist_ok=True)\n    tts = TextToSpeech(models_dir=args.model_dir, use_deepspeed=args.use_deepspeed, kv_cache=args.kv_cache, half=args.half)\n\n    selected_voices = args.voice.split(',')\n    for k, selected_voice in enumerate(selected_voices):\n        if '&' in selected_voice:\n            voice_sel = selected_voice.split('&')\n        else:\n            voice_sel = [selected_voice]\n        voice_samples, conditioning_latents = load_voices(voice_sel)\n\n        gen, dbg_state = tts.tts_with_preset(args.text, k=args.candidates, voice_samples=voice_samples, conditioning_latents=conditioning_latents,\n                                  preset=args.preset, use_deterministic_seed=args.seed, return_deterministic_state=True, cvvp_amount=args.cvvp_amount)\n        if isinstance(gen, list):\n            for j, g in enumerate(gen):\n                torchaudio.save(os.path.join(args.output_path, f'{selected_voice}_{k}_{j}.wav'), g.squeeze(0).cpu(), 24000)\n        else:\n            torchaudio.save(os.path.join(args.output_path, f'{selected_voice}_{k}.wav'), gen.squeeze(0).cpu(), 24000)\n\n        if args.produce_debug_state:\n            os.makedirs('debug_states', exist_ok=True)\n            torch.save(dbg_state, f'debug_states/do_tts_debug_{selected_voice}.pth')\n\n"
  },
  {
    "path": "tortoise/eval.py",
    "content": "import argparse\nimport os\n\nimport torchaudio\n\nfrom api import TextToSpeech\nfrom tortoise.utils.audio import load_audio\n\nif __name__ == '__main__':\n    parser = argparse.ArgumentParser()\n    parser.add_argument('--eval_path', type=str, help='Path to TSV test file', default=\"D:\\\\tmp\\\\tortoise-tts-eval\\\\test.tsv\")\n    parser.add_argument('--output_path', type=str, help='Where to put results', default=\"D:\\\\tmp\\\\tortoise-tts-eval\\\\baseline\")\n    parser.add_argument('--preset', type=str, help='Rendering preset.', default=\"standard\")\n    args = parser.parse_args()\n    os.makedirs(args.output_path, exist_ok=True)\n\n    tts = TextToSpeech()\n\n    with open(args.eval_path, 'r', encoding='utf-8') as f:\n        lines = f.readlines()\n\n    for line in lines:\n        text, real = line.strip().split('\\t')\n        conds = [load_audio(real, 22050)]\n        gen = tts.tts_with_preset(text, voice_samples=conds, conditioning_latents=None, preset=args.preset)\n        torchaudio.save(os.path.join(args.output_path, os.path.basename(real)), gen.squeeze(0).cpu(), 24000)\n\n"
  },
  {
    "path": "tortoise/get_conditioning_latents.py",
    "content": "import argparse\nimport os\nimport torch\n\nfrom api import TextToSpeech\nfrom tortoise.utils.audio import load_audio, get_voices\n\n\"\"\"\nDumps the conditioning latents for the specified voice to disk. These are expressive latents which can be used for\nother ML models, or can be augmented manually and fed back into Tortoise to affect vocal qualities.\n\"\"\"\nif __name__ == '__main__':\n    parser = argparse.ArgumentParser()\n    parser.add_argument('--voice', type=str, help='Selects the voice to convert to conditioning latents', default='pat2')\n    parser.add_argument('--output_path', type=str, help='Where to store outputs.', default='../results/conditioning_latents')\n    args = parser.parse_args()\n    os.makedirs(args.output_path, exist_ok=True)\n\n    tts = TextToSpeech()\n    voices = get_voices()\n    selected_voices = args.voice.split(',')\n    for voice in selected_voices:\n        cond_paths = voices[voice]\n        conds = []\n        for cond_path in cond_paths:\n            c = load_audio(cond_path, 22050)\n            conds.append(c)\n        conditioning_latents = tts.get_conditioning_latents(conds)\n        torch.save(conditioning_latents, os.path.join(args.output_path, f'{voice}.pth'))\n\n"
  },
  {
    "path": "tortoise/is_this_from_tortoise.py",
    "content": "import argparse\n\nfrom api import classify_audio_clip\nfrom tortoise.utils.audio import load_audio\n\nif __name__ == '__main__':\n    parser = argparse.ArgumentParser()\n    parser.add_argument('--clip', type=str, help='Path to an audio clip to classify.', default=\"../examples/favorite_riding_hood.mp3\")\n    args = parser.parse_args()\n\n    clip = load_audio(args.clip, 24000)\n    clip = clip[:, :220000]\n    prob = classify_audio_clip(clip)\n    print(f\"This classifier thinks there is a {prob*100}% chance that this clip was generated from Tortoise.\")"
  },
  {
    "path": "tortoise/models/__init__.py",
    "content": ""
  },
  {
    "path": "tortoise/models/arch_util.py",
    "content": "import os\nimport functools\nimport math\n\nimport torch\nimport torch.nn as nn\nimport torch.nn.functional as F\nimport torchaudio\nfrom tortoise.models.xtransformers import ContinuousTransformerWrapper, RelativePositionBias\n\n\ndef zero_module(module):\n    \"\"\"\n    Zero out the parameters of a module and return it.\n    \"\"\"\n    for p in module.parameters():\n        p.detach().zero_()\n    return module\n\n\nclass GroupNorm32(nn.GroupNorm):\n    def forward(self, x):\n        return super().forward(x.float()).type(x.dtype)\n\n\ndef normalization(channels):\n    \"\"\"\n    Make a standard normalization layer.\n\n    :param channels: number of input channels.\n    :return: an nn.Module for normalization.\n    \"\"\"\n    groups = 32\n    if channels <= 16:\n        groups = 8\n    elif channels <= 64:\n        groups = 16\n    while channels % groups != 0:\n        groups = int(groups / 2)\n    assert groups > 2\n    return GroupNorm32(groups, channels)\n\n\nclass QKVAttentionLegacy(nn.Module):\n    \"\"\"\n    A module which performs QKV attention. Matches legacy QKVAttention + input/output heads shaping\n    \"\"\"\n\n    def __init__(self, n_heads):\n        super().__init__()\n        self.n_heads = n_heads\n\n    def forward(self, qkv, mask=None, rel_pos=None):\n        \"\"\"\n        Apply QKV attention.\n\n        :param qkv: an [N x (H * 3 * C) x T] tensor of Qs, Ks, and Vs.\n        :return: an [N x (H * C) x T] tensor after attention.\n        \"\"\"\n        bs, width, length = qkv.shape\n        assert width % (3 * self.n_heads) == 0\n        ch = width // (3 * self.n_heads)\n        q, k, v = qkv.reshape(bs * self.n_heads, ch * 3, length).split(ch, dim=1)\n        scale = 1 / math.sqrt(math.sqrt(ch))\n        weight = torch.einsum(\n            \"bct,bcs->bts\", q * scale, k * scale\n        )  # More stable with f16 than dividing afterwards\n        if rel_pos is not None:\n            weight = rel_pos(weight.reshape(bs, self.n_heads, weight.shape[-2], weight.shape[-1])).reshape(bs * self.n_heads, weight.shape[-2], weight.shape[-1])\n        weight = torch.softmax(weight.float(), dim=-1).type(weight.dtype)\n        if mask is not None:\n            # The proper way to do this is to mask before the softmax using -inf, but that doesn't work properly on CPUs.\n            mask = mask.repeat(self.n_heads, 1).unsqueeze(1)\n            weight = weight * mask\n        a = torch.einsum(\"bts,bcs->bct\", weight, v)\n\n        return a.reshape(bs, -1, length)\n\n\nclass AttentionBlock(nn.Module):\n    \"\"\"\n    An attention block that allows spatial positions to attend to each other.\n\n    Originally ported from here, but adapted to the N-d case.\n    https://github.com/hojonathanho/diffusion/blob/1e0dceb3b3495bbe19116a5e1b3596cd0706c543/diffusion_tf/models/unet.py#L66.\n    \"\"\"\n\n    def __init__(\n        self,\n        channels,\n        num_heads=1,\n        num_head_channels=-1,\n        do_checkpoint=True,\n        relative_pos_embeddings=False,\n    ):\n        super().__init__()\n        self.channels = channels\n        self.do_checkpoint = do_checkpoint\n        if num_head_channels == -1:\n            self.num_heads = num_heads\n        else:\n            assert (\n                channels % num_head_channels == 0\n            ), f\"q,k,v channels {channels} is not divisible by num_head_channels {num_head_channels}\"\n            self.num_heads = channels // num_head_channels\n        self.norm = normalization(channels)\n        self.qkv = nn.Conv1d(channels, channels * 3, 1)\n        # split heads before split qkv\n        self.attention = QKVAttentionLegacy(self.num_heads)\n\n        self.proj_out = zero_module(nn.Conv1d(channels, channels, 1))\n        if relative_pos_embeddings:\n            self.relative_pos_embeddings = RelativePositionBias(scale=(channels // self.num_heads) ** .5, causal=False, heads=num_heads, num_buckets=32, max_distance=64)\n        else:\n            self.relative_pos_embeddings = None\n\n    def forward(self, x, mask=None):\n        b, c, *spatial = x.shape\n        x = x.reshape(b, c, -1)\n        qkv = self.qkv(self.norm(x))\n        h = self.attention(qkv, mask, self.relative_pos_embeddings)\n        h = self.proj_out(h)\n        return (x + h).reshape(b, c, *spatial)\n\n\nclass Upsample(nn.Module):\n    \"\"\"\n    An upsampling layer with an optional convolution.\n\n    :param channels: channels in the inputs and outputs.\n    :param use_conv: a bool determining if a convolution is applied.\n    \"\"\"\n\n    def __init__(self, channels, use_conv, out_channels=None, factor=4):\n        super().__init__()\n        self.channels = channels\n        self.out_channels = out_channels or channels\n        self.use_conv = use_conv\n        self.factor = factor\n        if use_conv:\n            ksize = 5\n            pad = 2\n            self.conv = nn.Conv1d(self.channels, self.out_channels, ksize, padding=pad)\n\n    def forward(self, x):\n        assert x.shape[1] == self.channels\n        x = F.interpolate(x, scale_factor=self.factor, mode=\"nearest\")\n        if self.use_conv:\n            x = self.conv(x)\n        return x\n\n\nclass Downsample(nn.Module):\n    \"\"\"\n    A downsampling layer with an optional convolution.\n\n    :param channels: channels in the inputs and outputs.\n    :param use_conv: a bool determining if a convolution is applied.\n    \"\"\"\n\n    def __init__(self, channels, use_conv, out_channels=None, factor=4, ksize=5, pad=2):\n        super().__init__()\n        self.channels = channels\n        self.out_channels = out_channels or channels\n        self.use_conv = use_conv\n\n        stride = factor\n        if use_conv:\n            self.op = nn.Conv1d(\n                self.channels, self.out_channels, ksize, stride=stride, padding=pad\n            )\n        else:\n            assert self.channels == self.out_channels\n            self.op = nn.AvgPool1d(kernel_size=stride, stride=stride)\n\n    def forward(self, x):\n        assert x.shape[1] == self.channels\n        return self.op(x)\n\n\nclass ResBlock(nn.Module):\n    def __init__(\n            self,\n            channels,\n            dropout,\n            out_channels=None,\n            use_conv=False,\n            use_scale_shift_norm=False,\n            up=False,\n            down=False,\n            kernel_size=3,\n    ):\n        super().__init__()\n        self.channels = channels\n        self.dropout = dropout\n        self.out_channels = out_channels or channels\n        self.use_conv = use_conv\n        self.use_scale_shift_norm = use_scale_shift_norm\n        padding = 1 if kernel_size == 3 else 2\n\n        self.in_layers = nn.Sequential(\n            normalization(channels),\n            nn.SiLU(),\n            nn.Conv1d(channels, self.out_channels, kernel_size, padding=padding),\n        )\n\n        self.updown = up or down\n\n        if up:\n            self.h_upd = Upsample(channels, False)\n            self.x_upd = Upsample(channels, False)\n        elif down:\n            self.h_upd = Downsample(channels, False)\n            self.x_upd = Downsample(channels, False)\n        else:\n            self.h_upd = self.x_upd = nn.Identity()\n\n        self.out_layers = nn.Sequential(\n            normalization(self.out_channels),\n            nn.SiLU(),\n            nn.Dropout(p=dropout),\n            zero_module(\n                nn.Conv1d(self.out_channels, self.out_channels, kernel_size, padding=padding)\n            ),\n        )\n\n        if self.out_channels == channels:\n            self.skip_connection = nn.Identity()\n        elif use_conv:\n            self.skip_connection = nn.Conv1d(\n                channels, self.out_channels, kernel_size, padding=padding\n            )\n        else:\n            self.skip_connection = nn.Conv1d(channels, self.out_channels, 1)\n\n    def forward(self, x):\n        if self.updown:\n            in_rest, in_conv = self.in_layers[:-1], self.in_layers[-1]\n            h = in_rest(x)\n            h = self.h_upd(h)\n            x = self.x_upd(x)\n            h = in_conv(h)\n        else:\n            h = self.in_layers(x)\n        h = self.out_layers(h)\n        return self.skip_connection(x) + h\n\n\nclass AudioMiniEncoder(nn.Module):\n    def __init__(self,\n                 spec_dim,\n                 embedding_dim,\n                 base_channels=128,\n                 depth=2,\n                 resnet_blocks=2,\n                 attn_blocks=4,\n                 num_attn_heads=4,\n                 dropout=0,\n                 downsample_factor=2,\n                 kernel_size=3):\n        super().__init__()\n        self.init = nn.Sequential(\n            nn.Conv1d(spec_dim, base_channels, 3, padding=1)\n        )\n        ch = base_channels\n        res = []\n        for l in range(depth):\n            for r in range(resnet_blocks):\n                res.append(ResBlock(ch, dropout, kernel_size=kernel_size))\n            res.append(Downsample(ch, use_conv=True, out_channels=ch*2, factor=downsample_factor))\n            ch *= 2\n        self.res = nn.Sequential(*res)\n        self.final = nn.Sequential(\n            normalization(ch),\n            nn.SiLU(),\n            nn.Conv1d(ch, embedding_dim, 1)\n        )\n        attn = []\n        for a in range(attn_blocks):\n            attn.append(AttentionBlock(embedding_dim, num_attn_heads,))\n        self.attn = nn.Sequential(*attn)\n        self.dim = embedding_dim\n\n    def forward(self, x):\n        h = self.init(x)\n        h = self.res(h)\n        h = self.final(h)\n        h = self.attn(h)\n        return h[:, :, 0]\n\n\nDEFAULT_MEL_NORM_FILE = os.path.join(os.path.dirname(os.path.realpath(__file__)), '../data/mel_norms.pth')\n\n\nclass TorchMelSpectrogram(nn.Module):\n    def __init__(self, filter_length=1024, hop_length=256, win_length=1024, n_mel_channels=80, mel_fmin=0, mel_fmax=8000,\n                 sampling_rate=22050, normalize=False, mel_norm_file=DEFAULT_MEL_NORM_FILE):\n        super().__init__()\n        # These are the default tacotron values for the MEL spectrogram.\n        self.filter_length = filter_length\n        self.hop_length = hop_length\n        self.win_length = win_length\n        self.n_mel_channels = n_mel_channels\n        self.mel_fmin = mel_fmin\n        self.mel_fmax = mel_fmax\n        self.sampling_rate = sampling_rate\n        self.mel_stft = torchaudio.transforms.MelSpectrogram(n_fft=self.filter_length, hop_length=self.hop_length,\n                                                             win_length=self.win_length, power=2, normalized=normalize,\n                                                             sample_rate=self.sampling_rate, f_min=self.mel_fmin,\n                                                             f_max=self.mel_fmax, n_mels=self.n_mel_channels,\n                                                             norm=\"slaney\")\n        self.mel_norm_file = mel_norm_file\n        if self.mel_norm_file is not None:\n            self.mel_norms = torch.load(self.mel_norm_file)\n        else:\n            self.mel_norms = None\n\n    def forward(self, inp):\n        if len(inp.shape) == 3:  # Automatically squeeze out the channels dimension if it is present (assuming mono-audio)\n            inp = inp.squeeze(1)\n        assert len(inp.shape) == 2\n        if torch.backends.mps.is_available():\n            inp = inp.to('cpu')\n        self.mel_stft = self.mel_stft.to(inp.device)\n        mel = self.mel_stft(inp)\n        # Perform dynamic range compression\n        mel = torch.log(torch.clamp(mel, min=1e-5))\n        if self.mel_norms is not None:\n            self.mel_norms = self.mel_norms.to(mel.device)\n            mel = mel / self.mel_norms.unsqueeze(0).unsqueeze(-1)\n        return mel\n\n\nclass CheckpointedLayer(nn.Module):\n    \"\"\"\n    Wraps a module. When forward() is called, passes kwargs that require_grad through torch.checkpoint() and bypasses\n    checkpoint for all other args.\n    \"\"\"\n    def __init__(self, wrap):\n        super().__init__()\n        self.wrap = wrap\n\n    def forward(self, x, *args, **kwargs):\n        for k, v in kwargs.items():\n            assert not (isinstance(v, torch.Tensor) and v.requires_grad)  # This would screw up checkpointing.\n        partial = functools.partial(self.wrap, **kwargs)\n        return partial(x, *args)\n\n\nclass CheckpointedXTransformerEncoder(nn.Module):\n    \"\"\"\n    Wraps a ContinuousTransformerWrapper and applies CheckpointedLayer to each layer and permutes from channels-mid\n    to channels-last that XTransformer expects.\n    \"\"\"\n    def __init__(self, needs_permute=True, exit_permute=True, checkpoint=True, **xtransformer_kwargs):\n        super().__init__()\n        self.transformer = ContinuousTransformerWrapper(**xtransformer_kwargs)\n        self.needs_permute = needs_permute\n        self.exit_permute = exit_permute\n\n        if not checkpoint:\n            return\n        for i in range(len(self.transformer.attn_layers.layers)):\n            n, b, r = self.transformer.attn_layers.layers[i]\n            self.transformer.attn_layers.layers[i] = nn.ModuleList([n, CheckpointedLayer(b), r])\n\n    def forward(self, x, **kwargs):\n        if self.needs_permute:\n            x = x.permute(0,2,1)\n        h = self.transformer(x, **kwargs)\n        if self.exit_permute:\n            h = h.permute(0,2,1)\n        return h"
  },
  {
    "path": "tortoise/models/autoregressive.py",
    "content": "import functools\n\nimport torch\nimport torch.nn as nn\nimport torch.nn.functional as F\nfrom transformers import GPT2Config, GPT2PreTrainedModel, LogitsProcessorList\nfrom transformers.modeling_outputs import CausalLMOutputWithCrossAttentions\nfrom transformers.utils.model_parallel_utils import get_device_map, assert_device_map\nfrom tortoise.models.arch_util import AttentionBlock\nfrom tortoise.utils.typical_sampling import TypicalLogitsWarper\n\n\ndef null_position_embeddings(range, dim):\n    return torch.zeros((range.shape[0], range.shape[1], dim), device=range.device)\n\n\nclass ResBlock(nn.Module):\n    \"\"\"\n    Basic residual convolutional block that uses GroupNorm.\n    \"\"\"\n    def __init__(self, chan):\n        super().__init__()\n        self.net = nn.Sequential(\n            nn.Conv1d(chan, chan, kernel_size=3, padding=1),\n            nn.GroupNorm(chan//8, chan),\n            nn.ReLU(),\n            nn.Conv1d(chan, chan, kernel_size=3, padding=1),\n            nn.GroupNorm(chan//8, chan)\n        )\n\n    def forward(self, x):\n        return F.relu(self.net(x) + x)\n\n\nclass GPT2InferenceModel(GPT2PreTrainedModel):\n    def __init__(self, config, gpt, text_pos_emb, embeddings, norm, linear, kv_cache=False):\n        super().__init__(config)\n        self.transformer = gpt\n        self.text_pos_embedding = text_pos_emb\n        self.embeddings = embeddings\n        self.final_norm = norm\n        self.lm_head = nn.Sequential(norm, linear)\n        self.kv_cache = kv_cache\n        \n        # Model parallel\n        self.model_parallel = False\n        self.device_map = None\n        self.cached_mel_emb = None\n    def parallelize(self, device_map=None):\n        self.device_map = (\n            get_device_map(len(self.transformer.h), range(max(1, torch.cuda.device_count())))\n            if device_map is None\n            else device_map\n        )\n        assert_device_map(self.device_map, len(self.transformer.h))\n        self.transformer.parallelize(self.device_map)\n        self.lm_head = self.lm_head.to(self.transformer.first_device)\n        self.model_parallel = True\n\n    def deparallelize(self):\n        self.transformer.deparallelize()\n        self.transformer = self.transformer.to(\"cpu\")\n        self.lm_head = self.lm_head.to(\"cpu\")\n        self.model_parallel = False\n        torch.cuda.empty_cache()\n        if torch.backends.mps.is_available():\n            torch.mps.empty_cache()\n    \n    def get_output_embeddings(self):\n        return self.lm_head\n\n    def set_output_embeddings(self, new_embeddings):\n        self.lm_head = new_embeddings\n    \n    def store_mel_emb(self, mel_emb):\n        self.cached_mel_emb = mel_emb\n\n    def prepare_inputs_for_generation(self, input_ids, past_key_values=None, **kwargs):\n        token_type_ids = kwargs.get(\"token_type_ids\", None)  # usually None\n        if not self.kv_cache:\n            past_key_values = None\n        # only last token for inputs_ids if past is defined in kwargs\n        if past_key_values:\n            input_ids = input_ids[:, -1].unsqueeze(-1)\n            if token_type_ids is not None:\n                token_type_ids = token_type_ids[:, -1].unsqueeze(-1)\n\n        attention_mask = kwargs.get(\"attention_mask\", None)\n        position_ids = kwargs.get(\"position_ids\", None)\n\n        if attention_mask is not None and position_ids is None:\n            # create position_ids on the fly for batch generation\n            position_ids = attention_mask.long().cumsum(-1) - 1\n            position_ids.masked_fill_(attention_mask == 0, 1)\n            if past_key_values:\n                position_ids = position_ids[:, -1].unsqueeze(-1)\n        else:\n            position_ids = None\n        return {\n            \"input_ids\": input_ids,\n            \"past_key_values\": past_key_values,\n            \"use_cache\": kwargs.get(\"use_cache\"),\n            \"position_ids\": position_ids,\n            \"attention_mask\": attention_mask,\n            \"token_type_ids\": token_type_ids,\n        }\n\n    def forward(\n        self,\n        input_ids=None,\n        past_key_values=None,\n        attention_mask=None,\n        token_type_ids=None,\n        position_ids=None,\n        head_mask=None,\n        inputs_embeds=None,\n        encoder_hidden_states=None,\n        encoder_attention_mask=None,\n        labels=None,\n        use_cache=None,\n        output_attentions=None,\n        output_hidden_states=None,\n        return_dict=None,\n    ):\n        assert self.cached_mel_emb is not None\n        assert inputs_embeds is None  # Not supported by this inference model.\n        assert labels is None  # Training not supported by this inference model.\n        return_dict = (\n            return_dict if return_dict is not None else self.config.use_return_dict\n        )\n\n        # Create embedding\n        mel_len = self.cached_mel_emb.shape[1]\n        if input_ids.shape[1] != 1:\n            text_inputs = input_ids[:, mel_len:]\n            text_emb = self.embeddings(text_inputs)\n            text_emb = text_emb + self.text_pos_embedding(text_emb)\n            if self.cached_mel_emb.shape[0] != text_emb.shape[0]:\n                mel_emb = self.cached_mel_emb.repeat_interleave(\n                    text_emb.shape[0] // self.cached_mel_emb.shape[0], 0\n                )\n            else:  # this outcome only occurs once per loop in most cases\n                mel_emb = self.cached_mel_emb\n            emb = torch.cat([mel_emb, text_emb], dim=1)\n        else:\n            emb = self.embeddings(input_ids)\n            emb = emb + self.text_pos_embedding.get_fixed_embedding(\n                attention_mask.shape[1] - mel_len, attention_mask.device\n            )\n        transformer_outputs = self.transformer(\n            inputs_embeds=emb,\n            past_key_values=past_key_values,\n            attention_mask=attention_mask,\n            token_type_ids=token_type_ids,\n            position_ids=position_ids,\n            head_mask=head_mask,\n            encoder_hidden_states=encoder_hidden_states,\n            encoder_attention_mask=encoder_attention_mask,\n            use_cache=use_cache,\n            output_attentions=output_attentions,\n            output_hidden_states=output_hidden_states,\n            return_dict=return_dict,\n        )\n        hidden_states = transformer_outputs[0]\n\n        # Set device for model parallelism\n        if self.model_parallel:\n            if torch.backends.mps.is_available():\n                self.to(self.transformer.first_device)\n            else:\n                torch.cuda.set_device(self.transformer.first_device)\n            hidden_states = hidden_states.to(self.lm_head.weight.device)\n\n        lm_logits = self.lm_head(hidden_states)\n\n        if not return_dict:\n            return (lm_logits,) + transformer_outputs[1:]\n\n        return CausalLMOutputWithCrossAttentions(\n            loss=None,\n            logits=lm_logits,\n            past_key_values=transformer_outputs.past_key_values,\n            hidden_states=transformer_outputs.hidden_states,\n            attentions=transformer_outputs.attentions,\n            cross_attentions=transformer_outputs.cross_attentions,\n        )\n\n    @staticmethod\n    def _reorder_cache(past, beam_idx):\n        \"\"\"\n        This function is used to re-order the :obj:`past_key_values` cache if\n        :meth:`~transformers.PreTrainedModel.beam_search` or :meth:`~transformers.PreTrainedModel.beam_sample` is\n        called. This is required to match :obj:`past_key_values` with the correct beam_idx at every generation step.\n        \"\"\"\n        return tuple(\n            tuple(\n                past_state.index_select(0, beam_idx.to(past_state.device))\n                for past_state in layer_past\n            )\n            for layer_past in past\n        )\n\n\nclass ConditioningEncoder(nn.Module):\n    def __init__(self,\n                 spec_dim,\n                 embedding_dim,\n                 attn_blocks=6,\n                 num_attn_heads=4,\n                 do_checkpointing=False,\n                 mean=False):\n        super().__init__()\n        attn = []\n        self.init = nn.Conv1d(spec_dim, embedding_dim, kernel_size=1)\n        for a in range(attn_blocks):\n            attn.append(AttentionBlock(embedding_dim, num_attn_heads))\n        self.attn = nn.Sequential(*attn)\n        self.dim = embedding_dim\n        self.do_checkpointing = do_checkpointing\n        self.mean = mean\n\n    def forward(self, x):\n        h = self.init(x)\n        h = self.attn(h)\n        if self.mean:\n            return h.mean(dim=2)\n        else:\n            return h[:, :, 0]\n\n\nclass LearnedPositionEmbeddings(nn.Module):\n    def __init__(self, seq_len, model_dim, init=.02):\n        super().__init__()\n        self.emb = nn.Embedding(seq_len, model_dim)\n        # Initializing this way is standard for GPT-2\n        self.emb.weight.data.normal_(mean=0.0, std=init)\n\n    def forward(self, x):\n        sl = x.shape[1]\n        return self.emb(torch.arange(0, sl, device=x.device))\n\n    def get_fixed_embedding(self, ind, dev):\n        return self.emb(torch.tensor([ind], device=dev)).unsqueeze(0)\n\n\ndef build_hf_gpt_transformer(layers, model_dim, heads, max_mel_seq_len, max_text_seq_len, checkpointing):\n    \"\"\"\n    GPT-2 implemented by the HuggingFace library.\n    \"\"\"\n    from transformers import GPT2Config, GPT2Model\n    gpt_config = GPT2Config(vocab_size=256,  # Unused.\n                             n_positions=max_mel_seq_len+max_text_seq_len,\n                             n_ctx=max_mel_seq_len+max_text_seq_len,\n                             n_embd=model_dim,\n                             n_layer=layers,\n                             n_head=heads,\n                             gradient_checkpointing=checkpointing,\n                             use_cache=not checkpointing)\n    gpt = GPT2Model(gpt_config)\n    # Override the built in positional embeddings\n    del gpt.wpe\n    gpt.wpe = functools.partial(null_position_embeddings, dim=model_dim)\n    # Built-in token embeddings are unused.\n    del gpt.wte\n    return gpt, LearnedPositionEmbeddings(max_mel_seq_len, model_dim), LearnedPositionEmbeddings(max_text_seq_len, model_dim),\\\n           None, None\n\n\nclass MelEncoder(nn.Module):\n    def __init__(self, channels, mel_channels=80, resblocks_per_reduction=2):\n        super().__init__()\n        self.channels = channels\n        self.encoder = nn.Sequential(nn.Conv1d(mel_channels, channels//4, kernel_size=3, padding=1),\n                                     nn.Sequential(*[ResBlock(channels//4) for _ in range(resblocks_per_reduction)]),\n                                     nn.Conv1d(channels//4, channels//2, kernel_size=3, stride=2, padding=1),\n                                     nn.GroupNorm(channels//16, channels//2),\n                                     nn.ReLU(),\n                                     nn.Sequential(*[ResBlock(channels//2) for _ in range(resblocks_per_reduction)]),\n                                     nn.Conv1d(channels//2, channels, kernel_size=3, stride=2, padding=1),\n                                     nn.GroupNorm(channels//8, channels),\n                                     nn.ReLU(),\n                                     nn.Sequential(*[ResBlock(channels) for _ in range(resblocks_per_reduction)]),\n                                     )\n        self.reduction = 4\n\n\n    def forward(self, x):\n        for e in self.encoder:\n            x = e(x)\n        return x.permute(0,2,1)\n\n\nclass UnifiedVoice(nn.Module):\n    def __init__(self, layers=8, model_dim=512, heads=8, max_text_tokens=120, max_mel_tokens=250, max_conditioning_inputs=1,\n                 mel_length_compression=1024, number_text_tokens=256,\n                 start_text_token=None, number_mel_codes=8194, start_mel_token=8192,\n                 stop_mel_token=8193, train_solo_embeddings=False, use_mel_codes_as_input=True,\n                 checkpointing=True, types=1):\n        \"\"\"\n        Args:\n            layers: Number of layers in transformer stack.\n            model_dim: Operating dimensions of the transformer\n            heads: Number of transformer heads. Must be divisible by model_dim. Recommend model_dim//64\n            max_text_tokens: Maximum number of text tokens that will be encountered by model.\n            max_mel_tokens: Maximum number of MEL tokens that will be encountered by model.\n            max_conditioning_inputs: Maximum number of conditioning inputs provided to the model. If (1), conditioning input can be of format (b,80,s), otherwise (b,n,80,s).\n            mel_length_compression: The factor between <number_input_samples> and <mel_tokens>. Used to compute MEL code padding given wav input length.\n            number_text_tokens:\n            start_text_token:\n            stop_text_token:\n            number_mel_codes:\n            start_mel_token:\n            stop_mel_token:\n            train_solo_embeddings:\n            use_mel_codes_as_input:\n            checkpointing:\n        \"\"\"\n        super().__init__()\n\n        self.number_text_tokens = number_text_tokens\n        self.start_text_token = number_text_tokens * types if start_text_token is None else start_text_token\n        self.stop_text_token = 0\n        self.number_mel_codes = number_mel_codes\n        self.start_mel_token = start_mel_token\n        self.stop_mel_token = stop_mel_token\n        self.layers = layers\n        self.heads = heads\n        self.max_mel_tokens = max_mel_tokens\n        self.max_text_tokens = max_text_tokens\n        self.model_dim = model_dim\n        self.max_conditioning_inputs = max_conditioning_inputs\n        self.mel_length_compression = mel_length_compression\n        self.conditioning_encoder = ConditioningEncoder(80, model_dim, num_attn_heads=heads)\n        self.text_embedding = nn.Embedding(self.number_text_tokens*types+1, model_dim)\n        if use_mel_codes_as_input:\n            self.mel_embedding = nn.Embedding(self.number_mel_codes, model_dim)\n        else:\n            self.mel_embedding = MelEncoder(model_dim, resblocks_per_reduction=1)\n        self.gpt, self.mel_pos_embedding, self.text_pos_embedding, self.mel_layer_pos_embedding, self.text_layer_pos_embedding = \\\n            build_hf_gpt_transformer(layers, model_dim, heads, self.max_mel_tokens+2+self.max_conditioning_inputs, self.max_text_tokens+2, checkpointing)\n        if train_solo_embeddings:\n            self.mel_solo_embedding = nn.Parameter(torch.randn(1, 1, model_dim) * .02, requires_grad=True)\n            self.text_solo_embedding = nn.Parameter(torch.randn(1, 1, model_dim) * .02, requires_grad=True)\n        else:\n            self.mel_solo_embedding = 0\n            self.text_solo_embedding = 0\n\n        self.final_norm = nn.LayerNorm(model_dim)\n        self.text_head = nn.Linear(model_dim, self.number_text_tokens*types+1)\n        self.mel_head = nn.Linear(model_dim, self.number_mel_codes)\n\n        # Initialize the embeddings per the GPT-2 scheme\n        embeddings = [self.text_embedding]\n        if use_mel_codes_as_input:\n            embeddings.append(self.mel_embedding)\n        for module in embeddings:\n            module.weight.data.normal_(mean=0.0, std=.02)\n    def post_init_gpt2_config(self, use_deepspeed=False, kv_cache=False, half=False):\n        seq_length = self.max_mel_tokens + self.max_text_tokens + 2\n        gpt_config = GPT2Config(\n            vocab_size=self.max_mel_tokens,\n            n_positions=seq_length,\n            n_ctx=seq_length,\n            n_embd=self.model_dim,\n            n_layer=self.layers,\n            n_head=self.heads,\n            gradient_checkpointing=False,\n            use_cache=True,\n        )\n        self.inference_model = GPT2InferenceModel(\n            gpt_config,\n            self.gpt,\n            self.mel_pos_embedding,\n            self.mel_embedding,\n            self.final_norm,\n            self.mel_head,\n            kv_cache=kv_cache,\n        )\n        if use_deepspeed and half and torch.cuda.is_available():\n            import deepspeed\n            self.ds_engine = deepspeed.init_inference(model=self.inference_model,  \n                                                    mp_size=1,\n                                                    replace_with_kernel_inject=True,\n                                                    dtype=torch.float16)\n            self.inference_model = self.ds_engine.module.eval()\n        elif use_deepspeed and torch.cuda.is_available():\n            import deepspeed\n            self.ds_engine = deepspeed.init_inference(model=self.inference_model,  \n                                                    mp_size=1,\n                                                    replace_with_kernel_inject=True,\n                                                    dtype=torch.float32)\n            self.inference_model = self.ds_engine.module.eval()\n        else:\n            self.inference_model = self.inference_model.eval()\n\n        # self.inference_model = PrunedGPT2InferenceModel(gpt_config, self.gpt, self.mel_pos_embedding, self.mel_embedding, self.final_norm, self.mel_head)\n        self.gpt.wte = self.mel_embedding\n    def build_aligned_inputs_and_targets(self, input, start_token, stop_token):\n        inp = F.pad(input, (1,0), value=start_token)\n        tar = F.pad(input, (0,1), value=stop_token)\n        return inp, tar\n\n    def set_mel_padding(self, mel_input_tokens, wav_lengths):\n        \"\"\"\n        Given mel tokens that are derived from a padded audio clip and the actual lengths of each batch element in\n        that audio clip, reformats the tokens with STOP_MEL_TOKEN in place of the zero padding. This is required\n        preformatting to create a working TTS model.\n        \"\"\"\n        # Set padding areas within MEL (currently it is coded with the MEL code for <zero>).\n        mel_lengths = torch.div(wav_lengths, self.mel_length_compression, rounding_mode='trunc')\n        for b in range(len(mel_lengths)):\n            actual_end = mel_lengths[b] + 1  # Due to the convolutional nature of how these tokens are generated, it would be best if the model predicts a token past the actual last token.\n            if actual_end < mel_input_tokens.shape[-1]:\n                mel_input_tokens[b, actual_end:] = self.stop_mel_token\n        return mel_input_tokens\n\n    def get_logits(self, speech_conditioning_inputs, first_inputs, first_head, second_inputs=None, second_head=None, get_attns=False, return_latent=False):\n        if second_inputs is not None:\n            emb = torch.cat([speech_conditioning_inputs, first_inputs, second_inputs], dim=1)\n        else:\n            emb = torch.cat([speech_conditioning_inputs, first_inputs], dim=1)\n\n        gpt_out = self.gpt(inputs_embeds=emb, return_dict=True, output_attentions=get_attns)\n        if get_attns:\n            return gpt_out.attentions\n\n        enc = gpt_out.last_hidden_state[:, 1:]  # The first logit is tied to the speech_conditioning_input\n        enc = self.final_norm(enc)\n\n        if return_latent:\n            return enc[:, speech_conditioning_inputs.shape[1]:speech_conditioning_inputs.shape[1]+first_inputs.shape[1]], enc[:, -second_inputs.shape[1]:]\n\n        first_logits = enc[:, :first_inputs.shape[1]]\n        first_logits = first_head(first_logits)\n        first_logits = first_logits.permute(0,2,1)\n        if second_inputs is not None:\n            second_logits = enc[:, -second_inputs.shape[1]:]\n            second_logits = second_head(second_logits)\n            second_logits = second_logits.permute(0,2,1)\n            return first_logits, second_logits\n        else:\n            return first_logits\n\n    def get_conditioning(self, speech_conditioning_input):\n        speech_conditioning_input = speech_conditioning_input.unsqueeze(1) if len(\n            speech_conditioning_input.shape) == 3 else speech_conditioning_input\n        conds = []\n        for j in range(speech_conditioning_input.shape[1]):\n            conds.append(self.conditioning_encoder(speech_conditioning_input[:, j]))\n        conds = torch.stack(conds, dim=1)\n        conds = conds.mean(dim=1)\n        return conds\n\n    def forward(self, speech_conditioning_latent, text_inputs, text_lengths, mel_codes, wav_lengths, types=None, text_first=True, raw_mels=None, return_attentions=False,\n                return_latent=False, clip_inputs=True):\n        \"\"\"\n        Forward pass that uses both text and voice in either text conditioning mode or voice conditioning mode\n        (actuated by `text_first`).\n\n        speech_conditioning_input: MEL float tensor, (b,1024)\n        text_inputs: long tensor, (b,t)\n        text_lengths: long tensor, (b,)\n        mel_inputs:  long tensor, (b,m)\n        wav_lengths: long tensor, (b,)\n        raw_mels: MEL float tensor (b,80,s)\n\n        If return_attentions is specified, only logits are returned.\n        If return_latent is specified, loss & logits are not computed or returned. Only the predicted latents are returned.\n        If clip_inputs is True, the inputs will be clipped to the smallest input size across each input modality.\n        \"\"\"\n        # Types are expressed by expanding the text embedding space.\n        if types is not None:\n            text_inputs = text_inputs * (1+types).unsqueeze(-1)\n\n        if clip_inputs:\n            # This model will receive micro-batches with a ton of padding for both the text and MELs. Ameliorate this by\n            # chopping the inputs by the maximum actual length.\n            max_text_len = text_lengths.max()\n            text_inputs = text_inputs[:, :max_text_len]\n            max_mel_len = wav_lengths.max() // self.mel_length_compression\n            mel_codes = mel_codes[:, :max_mel_len]\n            if raw_mels is not None:\n                raw_mels = raw_mels[:, :, :max_mel_len*4]\n        mel_codes = self.set_mel_padding(mel_codes, wav_lengths)\n        text_inputs = F.pad(text_inputs, (0,1), value=self.stop_text_token)\n        mel_codes = F.pad(mel_codes, (0,1), value=self.stop_mel_token)\n\n        conds = speech_conditioning_latent.unsqueeze(1)\n        text_inputs, text_targets = self.build_aligned_inputs_and_targets(text_inputs, self.start_text_token, self.stop_text_token)\n        text_emb = self.text_embedding(text_inputs) + self.text_pos_embedding(text_inputs)\n        mel_codes, mel_targets = self.build_aligned_inputs_and_targets(mel_codes, self.start_mel_token, self.stop_mel_token)\n        if raw_mels is not None:\n            mel_inp = F.pad(raw_mels, (0, 8))\n        else:\n            mel_inp = mel_codes\n        mel_emb = self.mel_embedding(mel_inp)\n        mel_emb = mel_emb + self.mel_pos_embedding(mel_codes)\n\n        if text_first:\n            text_logits, mel_logits = self.get_logits(conds, text_emb, self.text_head, mel_emb, self.mel_head, get_attns=return_attentions, return_latent=return_latent)\n            if return_latent:\n                return mel_logits[:, :-2]  # Despite the name, these are not logits. Strip off the two tokens added by this forward pass.\n        else:\n            mel_logits, text_logits = self.get_logits(conds, mel_emb, self.mel_head, text_emb, self.text_head, get_attns=return_attentions, return_latent=return_latent)\n            if return_latent:\n                return text_logits[:, :-2]  # Despite the name, these are not logits. Strip off the two tokens added by this forward pass.\n\n        if return_attentions:\n            return mel_logits\n        loss_text = F.cross_entropy(text_logits, text_targets.long())\n        loss_mel = F.cross_entropy(mel_logits, mel_targets.long())\n        return loss_text.mean(), loss_mel.mean(), mel_logits\n    def compute_embeddings(\n        self,\n        cond_latents,\n        text_inputs,\n    ):\n        text_inputs = F.pad(text_inputs, (0, 1), value=self.stop_text_token)\n        text_inputs = F.pad(text_inputs, (1, 0), value=self.start_text_token)\n        emb = self.text_embedding(text_inputs) + self.text_pos_embedding(text_inputs)\n        conds = cond_latents.unsqueeze(1)\n        emb = torch.cat([conds, emb], dim=1)\n        self.inference_model.store_mel_emb(emb)\n        gpt_inputs = torch.full(\n            (\n                emb.shape[0],\n                emb.shape[1] + 1,  # +1 for the start_mel_token\n            ),\n            fill_value=1,\n            dtype=torch.long,\n            device=text_inputs.device,\n        )\n        gpt_inputs[:, -1] = self.start_mel_token\n        return gpt_inputs\n    def inference_speech(self, speech_conditioning_latent, text_inputs, input_tokens=None, num_return_sequences=1,\n                         max_generate_length=None, typical_sampling=False, typical_mass=.9, **hf_generate_kwargs):        \n\n        text_inputs = F.pad(text_inputs, (0, 1), value=self.stop_text_token)\n        text_inputs, _ = self.build_aligned_inputs_and_targets(text_inputs, self.start_text_token, self.stop_text_token)\n        text_emb = self.text_embedding(text_inputs) + self.text_pos_embedding(text_inputs)\n\n        conds = speech_conditioning_latent.unsqueeze(1)\n        emb = torch.cat([conds, text_emb], dim=1)\n        self.inference_model.store_mel_emb(emb)\n\n        fake_inputs = torch.full((emb.shape[0], conds.shape[1] + emb.shape[1],), fill_value=1, dtype=torch.long,\n                                 device=text_inputs.device)\n        fake_inputs[:, -1] = self.start_mel_token\n        trunc_index = fake_inputs.shape[1]\n        if input_tokens is None:\n            inputs = fake_inputs\n        else:\n            assert num_return_sequences % input_tokens.shape[0] == 0, \"The number of return sequences must be divisible by the number of input sequences\"\n            fake_inputs = fake_inputs.repeat(num_return_sequences, 1)\n            input_tokens = input_tokens.repeat(num_return_sequences // input_tokens.shape[0], 1)\n            inputs = torch.cat([fake_inputs, input_tokens], dim=1)\n\n        logits_processor = LogitsProcessorList([TypicalLogitsWarper(mass=typical_mass)]) if typical_sampling else LogitsProcessorList()\n        max_length = trunc_index + self.max_mel_tokens - 1  if max_generate_length is None else trunc_index + max_generate_length\n        gen = self.inference_model.generate(inputs, bos_token_id=self.start_mel_token, pad_token_id=self.stop_mel_token, eos_token_id=self.stop_mel_token,\n                                            max_length=max_length, logits_processor=logits_processor,\n                                            num_return_sequences=num_return_sequences, **hf_generate_kwargs)\n        return gen[:, trunc_index:]\n\n    def get_generator(self, fake_inputs, **hf_generate_kwargs):\n        return self.inference_model.generate_stream(\n            fake_inputs,\n            bos_token_id=self.start_mel_token,\n            pad_token_id=self.stop_mel_token,\n            eos_token_id=self.stop_mel_token,\n            max_length=500,\n            do_stream=True,\n            **hf_generate_kwargs,\n        )\nif __name__ == '__main__':\n    gpt = UnifiedVoice(model_dim=256, heads=4, train_solo_embeddings=True, use_mel_codes_as_input=True, max_conditioning_inputs=4)\n    l = gpt(torch.randn(2, 3, 80, 800),\n            torch.randint(high=120, size=(2,120)),\n            torch.tensor([32, 120]),\n            torch.randint(high=8192, size=(2,250)),\n            torch.tensor([250*256,195*256]))\n    gpt.text_forward(torch.randn(2,80,800), torch.randint(high=50, size=(2,80)), torch.tensor([32, 80]))\n"
  },
  {
    "path": "tortoise/models/classifier.py",
    "content": "import torch\nimport torch.nn as nn\n\nfrom tortoise.models.arch_util import Upsample, Downsample, normalization, zero_module, AttentionBlock\n\n\nclass ResBlock(nn.Module):\n    def __init__(\n        self,\n        channels,\n        dropout,\n        out_channels=None,\n        use_conv=False,\n        use_scale_shift_norm=False,\n        dims=2,\n        up=False,\n        down=False,\n        kernel_size=3,\n        do_checkpoint=True,\n    ):\n        super().__init__()\n        self.channels = channels\n        self.dropout = dropout\n        self.out_channels = out_channels or channels\n        self.use_conv = use_conv\n        self.use_scale_shift_norm = use_scale_shift_norm\n        self.do_checkpoint = do_checkpoint\n        padding = 1 if kernel_size == 3 else 2\n\n        self.in_layers = nn.Sequential(\n            normalization(channels),\n            nn.SiLU(),\n            nn.Conv1d(channels, self.out_channels, kernel_size, padding=padding),\n        )\n\n        self.updown = up or down\n\n        if up:\n            self.h_upd = Upsample(channels, False, dims)\n            self.x_upd = Upsample(channels, False, dims)\n        elif down:\n            self.h_upd = Downsample(channels, False, dims)\n            self.x_upd = Downsample(channels, False, dims)\n        else:\n            self.h_upd = self.x_upd = nn.Identity()\n\n        self.out_layers = nn.Sequential(\n            normalization(self.out_channels),\n            nn.SiLU(),\n            nn.Dropout(p=dropout),\n            zero_module(\n                nn.Conv1d(self.out_channels, self.out_channels, kernel_size, padding=padding)\n            ),\n        )\n\n        if self.out_channels == channels:\n            self.skip_connection = nn.Identity()\n        elif use_conv:\n            self.skip_connection = nn.Conv1d(\n                dims, channels, self.out_channels, kernel_size, padding=padding\n            )\n        else:\n            self.skip_connection = nn.Conv1d(dims, channels, self.out_channels, 1)\n\n    def forward(self, x):\n        if self.updown:\n            in_rest, in_conv = self.in_layers[:-1], self.in_layers[-1]\n            h = in_rest(x)\n            h = self.h_upd(h)\n            x = self.x_upd(x)\n            h = in_conv(h)\n        else:\n            h = self.in_layers(x)\n        h = self.out_layers(h)\n        return self.skip_connection(x) + h\n\n\nclass AudioMiniEncoder(nn.Module):\n    def __init__(self,\n                 spec_dim,\n                 embedding_dim,\n                 base_channels=128,\n                 depth=2,\n                 resnet_blocks=2,\n                 attn_blocks=4,\n                 num_attn_heads=4,\n                 dropout=0,\n                 downsample_factor=2,\n                 kernel_size=3):\n        super().__init__()\n        self.init = nn.Sequential(\n            nn.Conv1d(spec_dim, base_channels, 3, padding=1)\n        )\n        ch = base_channels\n        res = []\n        self.layers = depth\n        for l in range(depth):\n            for r in range(resnet_blocks):\n                res.append(ResBlock(ch, dropout, do_checkpoint=False, kernel_size=kernel_size))\n            res.append(Downsample(ch, use_conv=True, out_channels=ch*2, factor=downsample_factor))\n            ch *= 2\n        self.res = nn.Sequential(*res)\n        self.final = nn.Sequential(\n            normalization(ch),\n            nn.SiLU(),\n            nn.Conv1d(ch, embedding_dim, 1)\n        )\n        attn = []\n        for a in range(attn_blocks):\n            attn.append(AttentionBlock(embedding_dim, num_attn_heads, do_checkpoint=False))\n        self.attn = nn.Sequential(*attn)\n        self.dim = embedding_dim\n\n    def forward(self, x):\n        h = self.init(x)\n        h = self.res(h)\n        h = self.final(h)\n        for blk in self.attn:\n            h = blk(h)\n        return h[:, :, 0]\n\n\nclass AudioMiniEncoderWithClassifierHead(nn.Module):\n    def __init__(self, classes, distribute_zero_label=True, **kwargs):\n        super().__init__()\n        self.enc = AudioMiniEncoder(**kwargs)\n        self.head = nn.Linear(self.enc.dim, classes)\n        self.num_classes = classes\n        self.distribute_zero_label = distribute_zero_label\n\n    def forward(self, x, labels=None):\n        h = self.enc(x)\n        logits = self.head(h)\n        if labels is None:\n            return logits\n        else:\n            if self.distribute_zero_label:\n                oh_labels = nn.functional.one_hot(labels, num_classes=self.num_classes)\n                zeros_indices = (labels == 0).unsqueeze(-1)\n                # Distribute 20% of the probability mass on all classes when zero is specified, to compensate for dataset noise.\n                zero_extra_mass = torch.full_like(oh_labels, dtype=torch.float, fill_value=.2/(self.num_classes-1))\n                zero_extra_mass[:, 0] = -.2\n                zero_extra_mass = zero_extra_mass * zeros_indices\n                oh_labels = oh_labels + zero_extra_mass\n            else:\n                oh_labels = labels\n            loss = nn.functional.cross_entropy(logits, oh_labels)\n            return loss\n"
  },
  {
    "path": "tortoise/models/clvp.py",
    "content": "import torch\nimport torch.nn as nn\nimport torch.nn.functional as F\nfrom torch import einsum\n\nfrom tortoise.models.arch_util import CheckpointedXTransformerEncoder\nfrom tortoise.models.transformer import Transformer\nfrom tortoise.models.xtransformers import Encoder\n\n\ndef exists(val):\n    return val is not None\n\n\ndef masked_mean(t, mask, dim = 1):\n    t = t.masked_fill(~mask[:, :, None], 0.)\n    return t.sum(dim = 1) / mask.sum(dim = 1)[..., None]\n\nclass CLVP(nn.Module):\n    \"\"\"\n    CLIP model retrofitted for performing contrastive evaluation between tokenized audio data and the corresponding\n    transcribed text.\n\n    Originally from https://github.com/lucidrains/DALLE-pytorch/blob/main/dalle_pytorch/dalle_pytorch.py\n    \"\"\"\n\n    def __init__(\n            self,\n            *,\n            dim_text=512,\n            dim_speech=512,\n            dim_latent=512,\n            num_text_tokens=256,\n            text_enc_depth=6,\n            text_seq_len=120,\n            text_heads=8,\n            num_speech_tokens=8192,\n            speech_enc_depth=6,\n            speech_heads=8,\n            speech_seq_len=250,\n            text_mask_percentage=0,\n            voice_mask_percentage=0,\n            wav_token_compression=1024,\n            use_xformers=False,\n    ):\n        super().__init__()\n        self.text_emb = nn.Embedding(num_text_tokens, dim_text)\n        self.to_text_latent = nn.Linear(dim_text, dim_latent, bias=False)\n\n        self.speech_emb = nn.Embedding(num_speech_tokens, dim_speech)\n        self.to_speech_latent = nn.Linear(dim_speech, dim_latent, bias=False)\n\n        if use_xformers:\n            self.text_transformer = CheckpointedXTransformerEncoder(\n                needs_permute=False,\n                exit_permute=False,\n                max_seq_len=-1,\n                attn_layers=Encoder(\n                    dim=dim_text,\n                    depth=text_enc_depth,\n                    heads=text_heads,\n                    ff_dropout=.1,\n                    ff_mult=2,\n                    attn_dropout=.1,\n                    use_rmsnorm=True,\n                    ff_glu=True,\n                    rotary_pos_emb=True,\n                ))\n            self.speech_transformer = CheckpointedXTransformerEncoder(\n                needs_permute=False,\n                exit_permute=False,\n                max_seq_len=-1,\n                attn_layers=Encoder(\n                    dim=dim_speech,\n                    depth=speech_enc_depth,\n                    heads=speech_heads,\n                    ff_dropout=.1,\n                    ff_mult=2,\n                    attn_dropout=.1,\n                    use_rmsnorm=True,\n                    ff_glu=True,\n                    rotary_pos_emb=True,\n                ))\n        else:\n            self.text_transformer = Transformer(causal=False, seq_len=text_seq_len, dim=dim_text, depth=text_enc_depth,\n                                                heads=text_heads)\n            self.speech_transformer = Transformer(causal=False, seq_len=speech_seq_len, dim=dim_speech,\n                                                  depth=speech_enc_depth, heads=speech_heads)\n\n        self.temperature = nn.Parameter(torch.tensor(1.))\n        self.text_mask_percentage = text_mask_percentage\n        self.voice_mask_percentage = voice_mask_percentage\n        self.wav_token_compression = wav_token_compression\n        self.xformers = use_xformers\n        if not use_xformers:\n            self.text_pos_emb = nn.Embedding(text_seq_len, dim_text)\n            self.speech_pos_emb = nn.Embedding(num_speech_tokens, dim_speech)\n\n    def forward(\n            self,\n            text,\n            speech_tokens,\n            return_loss=False\n    ):\n        b, device = text.shape[0], text.device\n        if self.training:\n            text_mask = torch.rand_like(text.float()) > self.text_mask_percentage\n            voice_mask = torch.rand_like(speech_tokens.float()) > self.voice_mask_percentage\n        else:\n            text_mask = torch.ones_like(text.float()).bool()\n            voice_mask = torch.ones_like(speech_tokens.float()).bool()\n\n        text_emb = self.text_emb(text)\n        speech_emb = self.speech_emb(speech_tokens)\n\n        if not self.xformers:\n            text_emb += self.text_pos_emb(torch.arange(text.shape[1], device=device))\n            speech_emb += self.speech_pos_emb(torch.arange(speech_emb.shape[1], device=device))\n\n        enc_text = self.text_transformer(text_emb, mask=text_mask)\n        enc_speech = self.speech_transformer(speech_emb, mask=voice_mask)\n\n        text_latents = masked_mean(enc_text, text_mask, dim=1)\n        speech_latents = masked_mean(enc_speech, voice_mask, dim=1)\n\n        text_latents = self.to_text_latent(text_latents)\n        speech_latents = self.to_speech_latent(speech_latents)\n\n        text_latents, speech_latents = map(lambda t: F.normalize(t, p=2, dim=-1), (text_latents, speech_latents))\n\n        temp = self.temperature.exp()\n\n        if not return_loss:\n            sim = einsum('n d, n d -> n', text_latents, speech_latents) * temp\n            return sim\n\n        sim = einsum('i d, j d -> i j', text_latents, speech_latents) * temp\n        labels = torch.arange(b, device=device)\n        loss = (F.cross_entropy(sim, labels) + F.cross_entropy(sim.t(), labels)) / 2\n        return loss\n\n\nif __name__ == '__main__':\n    clip = CLVP(text_mask_percentage=.2, voice_mask_percentage=.2)\n    clip(torch.randint(0,256,(2,120)),\n         torch.tensor([50,100]),\n         torch.randint(0,8192,(2,250)),\n         torch.tensor([101,102]),\n         return_loss=True)\n    nonloss = clip(torch.randint(0,256,(2,120)),\n         torch.tensor([50,100]),\n         torch.randint(0,8192,(2,250)),\n         torch.tensor([101,102]),\n         return_loss=False)\n    print(nonloss.shape)"
  },
  {
    "path": "tortoise/models/cvvp.py",
    "content": "import torch\nimport torch.nn as nn\nimport torch.nn.functional as F\nfrom torch import einsum\n\nfrom tortoise.models.arch_util import AttentionBlock\nfrom tortoise.models.xtransformers import ContinuousTransformerWrapper, Encoder\n\n\ndef exists(val):\n    return val is not None\n\n\ndef masked_mean(t, mask):\n    t = t.masked_fill(~mask, 0.)\n    return t.sum(dim=1) / mask.sum(dim=1)\n\n\nclass CollapsingTransformer(nn.Module):\n    def __init__(self, model_dim, output_dims, heads, dropout, depth, mask_percentage=0, **encoder_kwargs):\n        super().__init__()\n        self.transformer = ContinuousTransformerWrapper(\n            max_seq_len=-1,\n            use_pos_emb=False,\n            attn_layers=Encoder(\n                dim=model_dim,\n                depth=depth,\n                heads=heads,\n                ff_dropout=dropout,\n                ff_mult=1,\n                attn_dropout=dropout,\n                use_rmsnorm=True,\n                ff_glu=True,\n                rotary_pos_emb=True,\n                **encoder_kwargs,\n            ))\n        self.pre_combiner = nn.Sequential(nn.Conv1d(model_dim, output_dims, 1),\n                                          AttentionBlock(\n            output_dims, num_heads=heads, do_checkpoint=False),\n            nn.Conv1d(output_dims, output_dims, 1))\n        self.mask_percentage = mask_percentage\n\n    def forward(self, x, **transformer_kwargs):\n        h = self.transformer(x, **transformer_kwargs)\n        h = h.permute(0, 2, 1)\n        h = self.pre_combiner(h).permute(0, 2, 1)\n        if self.training:\n            mask = torch.rand_like(h.float()) > self.mask_percentage\n        else:\n            mask = torch.ones_like(h.float()).bool()\n        return masked_mean(h, mask)\n\n\nclass ConvFormatEmbedding(nn.Module):\n    def __init__(self, *args, **kwargs):\n        super().__init__()\n        self.emb = nn.Embedding(*args, **kwargs)\n\n    def forward(self, x):\n        y = self.emb(x)\n        return y.permute(0, 2, 1)\n\n\nclass CVVP(nn.Module):\n    def __init__(\n            self,\n            model_dim=512,\n            transformer_heads=8,\n            dropout=.1,\n            conditioning_enc_depth=8,\n            cond_mask_percentage=0,\n            mel_channels=80,\n            mel_codes=None,\n            speech_enc_depth=8,\n            speech_mask_percentage=0,\n            latent_multiplier=1,\n    ):\n        super().__init__()\n        latent_dim = latent_multiplier*model_dim\n        self.temperature = nn.Parameter(torch.tensor(1.))\n\n        self.cond_emb = nn.Sequential(nn.Conv1d(mel_channels, model_dim//2, kernel_size=5, stride=2, padding=2),\n                                      nn.Conv1d(model_dim//2, model_dim, kernel_size=3, stride=2, padding=1))\n        self.conditioning_transformer = CollapsingTransformer(\n            model_dim, model_dim, transformer_heads, dropout, conditioning_enc_depth, cond_mask_percentage)\n        self.to_conditioning_latent = nn.Linear(\n            latent_dim, latent_dim, bias=False)\n\n        if mel_codes is None:\n            self.speech_emb = nn.Conv1d(\n                mel_channels, model_dim, kernel_size=5, padding=2)\n        else:\n            self.speech_emb = ConvFormatEmbedding(mel_codes, model_dim)\n        self.speech_transformer = CollapsingTransformer(\n            model_dim, latent_dim, transformer_heads, dropout, speech_enc_depth, speech_mask_percentage)\n        self.to_speech_latent = nn.Linear(\n            latent_dim, latent_dim, bias=False)\n\n    def get_grad_norm_parameter_groups(self):\n        return {\n            'conditioning': list(self.conditioning_transformer.parameters()),\n            'speech': list(self.speech_transformer.parameters()),\n        }\n\n    def forward(\n            self,\n            mel_cond,\n            mel_input,\n            return_loss=False\n    ):\n        cond_emb = self.cond_emb(mel_cond).permute(0, 2, 1)\n        enc_cond = self.conditioning_transformer(cond_emb)\n        cond_latents = self.to_conditioning_latent(enc_cond)\n\n        speech_emb = self.speech_emb(mel_input).permute(0, 2, 1)\n        enc_speech = self.speech_transformer(speech_emb)\n        speech_latents = self.to_speech_latent(enc_speech)\n\n        cond_latents, speech_latents = map(lambda t: F.normalize(\n            t, p=2, dim=-1), (cond_latents, speech_latents))\n        temp = self.temperature.exp()\n\n        if not return_loss:\n            sim = einsum('n d, n d -> n', cond_latents,\n                         speech_latents) * temp\n            return sim\n\n        sim = einsum('i d, j d -> i j', cond_latents,\n                     speech_latents) * temp\n        labels = torch.arange(\n            cond_latents.shape[0], device=mel_input.device)\n        loss = (F.cross_entropy(sim, labels) +\n                F.cross_entropy(sim.t(), labels)) / 2\n\n        return loss\n\n\nif __name__ == '__main__':\n    clvp = CVVP()\n    clvp(torch.randn(2, 80, 100),\n         torch.randn(2, 80, 95),\n         return_loss=True)\n"
  },
  {
    "path": "tortoise/models/diffusion_decoder.py",
    "content": "import math\nimport random\nfrom abc import abstractmethod\n\nimport torch\nimport torch.nn as nn\nimport torch.nn.functional as F\nfrom torch import autocast\n\nfrom tortoise.models.arch_util import normalization, AttentionBlock\n\n\ndef is_latent(t):\n    return t.dtype == torch.float\n\n\ndef is_sequence(t):\n    return t.dtype == torch.long\n\n\ndef timestep_embedding(timesteps, dim, max_period=10000):\n    \"\"\"\n    Create sinusoidal timestep embeddings.\n\n    :param timesteps: a 1-D Tensor of N indices, one per batch element.\n                      These may be fractional.\n    :param dim: the dimension of the output.\n    :param max_period: controls the minimum frequency of the embeddings.\n    :return: an [N x dim] Tensor of positional embeddings.\n    \"\"\"\n    half = dim // 2\n    freqs = torch.exp(\n        -math.log(max_period) * torch.arange(start=0, end=half, dtype=torch.float32) / half\n    ).to(device=timesteps.device)\n    args = timesteps[:, None].float() * freqs[None]\n    embedding = torch.cat([torch.cos(args), torch.sin(args)], dim=-1)\n    if dim % 2:\n        embedding = torch.cat([embedding, torch.zeros_like(embedding[:, :1])], dim=-1)\n    return embedding\n\n\nclass TimestepBlock(nn.Module):\n    @abstractmethod\n    def forward(self, x, emb):\n        \"\"\"\n        Apply the module to `x` given `emb` timestep embeddings.\n        \"\"\"\n\n\nclass TimestepEmbedSequential(nn.Sequential, TimestepBlock):\n    def forward(self, x, emb):\n        for layer in self:\n            if isinstance(layer, TimestepBlock):\n                x = layer(x, emb)\n            else:\n                x = layer(x)\n        return x\n\n\nclass ResBlock(TimestepBlock):\n    def __init__(\n        self,\n        channels,\n        emb_channels,\n        dropout,\n        out_channels=None,\n        dims=2,\n        kernel_size=3,\n        efficient_config=True,\n        use_scale_shift_norm=False,\n    ):\n        super().__init__()\n        self.channels = channels\n        self.emb_channels = emb_channels\n        self.dropout = dropout\n        self.out_channels = out_channels or channels\n        self.use_scale_shift_norm = use_scale_shift_norm\n        padding = {1: 0, 3: 1, 5: 2}[kernel_size]\n        eff_kernel = 1 if efficient_config else 3\n        eff_padding = 0 if efficient_config else 1\n\n        self.in_layers = nn.Sequential(\n            normalization(channels),\n            nn.SiLU(),\n            nn.Conv1d(channels, self.out_channels, eff_kernel, padding=eff_padding),\n        )\n\n        self.emb_layers = nn.Sequential(\n            nn.SiLU(),\n            nn.Linear(\n                emb_channels,\n                2 * self.out_channels if use_scale_shift_norm else self.out_channels,\n            ),\n        )\n        self.out_layers = nn.Sequential(\n            normalization(self.out_channels),\n            nn.SiLU(),\n            nn.Dropout(p=dropout),\n                nn.Conv1d(self.out_channels, self.out_channels, kernel_size, padding=padding),\n        )\n\n        if self.out_channels == channels:\n            self.skip_connection = nn.Identity()\n        else:\n            self.skip_connection = nn.Conv1d(channels, self.out_channels, eff_kernel, padding=eff_padding)\n\n    def forward(self, x, emb):\n        h = self.in_layers(x)\n        emb_out = self.emb_layers(emb).type(h.dtype)\n        while len(emb_out.shape) < len(h.shape):\n            emb_out = emb_out[..., None]\n        if self.use_scale_shift_norm:\n            out_norm, out_rest = self.out_layers[0], self.out_layers[1:]\n            scale, shift = torch.chunk(emb_out, 2, dim=1)\n            h = out_norm(h) * (1 + scale) + shift\n            h = out_rest(h)\n        else:\n            h = h + emb_out\n            h = self.out_layers(h)\n        return self.skip_connection(x) + h\n\n\nclass DiffusionLayer(TimestepBlock):\n    def __init__(self, model_channels, dropout, num_heads):\n        super().__init__()\n        self.resblk = ResBlock(model_channels, model_channels, dropout, model_channels, dims=1, use_scale_shift_norm=True)\n        self.attn = AttentionBlock(model_channels, num_heads, relative_pos_embeddings=True)\n\n    def forward(self, x, time_emb):\n        y = self.resblk(x, time_emb)\n        return self.attn(y)\n\n\nclass DiffusionTts(nn.Module):\n    def __init__(\n            self,\n            model_channels=512,\n            num_layers=8,\n            in_channels=100,\n            in_latent_channels=512,\n            in_tokens=8193,\n            out_channels=200,  # mean and variance\n            dropout=0,\n            use_fp16=False,\n            num_heads=16,\n            # Parameters for regularization.\n            layer_drop=.1,\n            unconditioned_percentage=.1,  # This implements a mechanism similar to what is used in classifier-free training.\n    ):\n        super().__init__()\n\n        self.in_channels = in_channels\n        self.model_channels = model_channels\n        self.out_channels = out_channels\n        self.dropout = dropout\n        self.num_heads = num_heads\n        self.unconditioned_percentage = unconditioned_percentage\n        self.enable_fp16 = use_fp16\n        self.layer_drop = layer_drop\n\n        self.inp_block = nn.Conv1d(in_channels, model_channels, 3, 1, 1)\n        self.time_embed = nn.Sequential(\n            nn.Linear(model_channels, model_channels),\n            nn.SiLU(),\n            nn.Linear(model_channels, model_channels),\n        )\n\n        # Either code_converter or latent_converter is used, depending on what type of conditioning data is fed.\n        # This model is meant to be able to be trained on both for efficiency purposes - it is far less computationally\n        # complex to generate tokens, while generating latents will normally mean propagating through a deep autoregressive\n        # transformer network.\n        self.code_embedding = nn.Embedding(in_tokens, model_channels)\n        self.code_converter = nn.Sequential(\n            AttentionBlock(model_channels, num_heads, relative_pos_embeddings=True),\n            AttentionBlock(model_channels, num_heads, relative_pos_embeddings=True),\n            AttentionBlock(model_channels, num_heads, relative_pos_embeddings=True),\n        )\n        self.code_norm = normalization(model_channels)\n        self.latent_conditioner = nn.Sequential(\n            nn.Conv1d(in_latent_channels, model_channels, 3, padding=1),\n            AttentionBlock(model_channels, num_heads, relative_pos_embeddings=True),\n            AttentionBlock(model_channels, num_heads, relative_pos_embeddings=True),\n            AttentionBlock(model_channels, num_heads, relative_pos_embeddings=True),\n            AttentionBlock(model_channels, num_heads, relative_pos_embeddings=True),\n        )\n        self.contextual_embedder = nn.Sequential(nn.Conv1d(in_channels,model_channels,3,padding=1,stride=2),\n                                                 nn.Conv1d(model_channels, model_channels*2,3,padding=1,stride=2),\n                                                 AttentionBlock(model_channels*2, num_heads, relative_pos_embeddings=True, do_checkpoint=False),\n                                                 AttentionBlock(model_channels*2, num_heads, relative_pos_embeddings=True, do_checkpoint=False),\n                                                 AttentionBlock(model_channels*2, num_heads, relative_pos_embeddings=True, do_checkpoint=False),\n                                                 AttentionBlock(model_channels*2, num_heads, relative_pos_embeddings=True, do_checkpoint=False),\n                                                 AttentionBlock(model_channels*2, num_heads, relative_pos_embeddings=True, do_checkpoint=False))\n        self.unconditioned_embedding = nn.Parameter(torch.randn(1,model_channels,1))\n        self.conditioning_timestep_integrator = TimestepEmbedSequential(\n            DiffusionLayer(model_channels, dropout, num_heads),\n            DiffusionLayer(model_channels, dropout, num_heads),\n            DiffusionLayer(model_channels, dropout, num_heads),\n        )\n\n        self.integrating_conv = nn.Conv1d(model_channels*2, model_channels, kernel_size=1)\n        self.mel_head = nn.Conv1d(model_channels, in_channels, kernel_size=3, padding=1)\n\n        self.layers = nn.ModuleList([DiffusionLayer(model_channels, dropout, num_heads) for _ in range(num_layers)] +\n                                    [ResBlock(model_channels, model_channels, dropout, dims=1, use_scale_shift_norm=True) for _ in range(3)])\n\n        self.out = nn.Sequential(\n            normalization(model_channels),\n            nn.SiLU(),\n            nn.Conv1d(model_channels, out_channels, 3, padding=1),\n        )\n\n    def get_grad_norm_parameter_groups(self):\n        groups = {\n            'minicoder': list(self.contextual_embedder.parameters()),\n            'layers': list(self.layers.parameters()),\n            'code_converters': list(self.code_embedding.parameters()) + list(self.code_converter.parameters()) + list(self.latent_conditioner.parameters()) + list(self.latent_conditioner.parameters()),\n            'timestep_integrator': list(self.conditioning_timestep_integrator.parameters()) + list(self.integrating_conv.parameters()),\n            'time_embed': list(self.time_embed.parameters()),\n        }\n        return groups\n\n    def get_conditioning(self, conditioning_input):\n        speech_conditioning_input = conditioning_input.unsqueeze(1) if len(\n            conditioning_input.shape) == 3 else conditioning_input\n        conds = []\n        for j in range(speech_conditioning_input.shape[1]):\n            conds.append(self.contextual_embedder(speech_conditioning_input[:, j]))\n        conds = torch.cat(conds, dim=-1)\n        conds = conds.mean(dim=-1)\n        return conds\n\n    def timestep_independent(self, aligned_conditioning, conditioning_latent, expected_seq_len, return_code_pred):\n        # Shuffle aligned_latent to BxCxS format\n        if is_latent(aligned_conditioning):\n            aligned_conditioning = aligned_conditioning.permute(0, 2, 1)\n\n        cond_scale, cond_shift = torch.chunk(conditioning_latent, 2, dim=1)\n        if is_latent(aligned_conditioning):\n            code_emb = self.latent_conditioner(aligned_conditioning)\n        else:\n            code_emb = self.code_embedding(aligned_conditioning).permute(0, 2, 1)\n            code_emb = self.code_converter(code_emb)\n        code_emb = self.code_norm(code_emb) * (1 + cond_scale.unsqueeze(-1)) + cond_shift.unsqueeze(-1)\n\n        unconditioned_batches = torch.zeros((code_emb.shape[0], 1, 1), device=code_emb.device)\n        # Mask out the conditioning branch for whole batch elements, implementing something similar to classifier-free guidance.\n        if self.training and self.unconditioned_percentage > 0:\n            unconditioned_batches = torch.rand((code_emb.shape[0], 1, 1),\n                                               device=code_emb.device) < self.unconditioned_percentage\n            code_emb = torch.where(unconditioned_batches, self.unconditioned_embedding.repeat(aligned_conditioning.shape[0], 1, 1),\n                                   code_emb)\n        expanded_code_emb = F.interpolate(code_emb, size=expected_seq_len, mode='nearest')\n\n        if not return_code_pred:\n            return expanded_code_emb\n        else:\n            mel_pred = self.mel_head(expanded_code_emb)\n            # Multiply mel_pred by !unconditioned_branches, which drops the gradient on unconditioned branches. This is because we don't want that gradient being used to train parameters through the codes_embedder as it unbalances contributions to that network from the MSE loss.\n            mel_pred = mel_pred * unconditioned_batches.logical_not()\n            return expanded_code_emb, mel_pred\n\n    def forward(self, x, timesteps, aligned_conditioning=None, conditioning_latent=None, precomputed_aligned_embeddings=None, conditioning_free=False, return_code_pred=False):\n        \"\"\"\n        Apply the model to an input batch.\n\n        :param x: an [N x C x ...] Tensor of inputs.\n        :param timesteps: a 1-D batch of timesteps.\n        :param aligned_conditioning: an aligned latent or sequence of tokens providing useful data about the sample to be produced.\n        :param conditioning_latent: a pre-computed conditioning latent; see get_conditioning().\n        :param precomputed_aligned_embeddings: Embeddings returned from self.timestep_independent()\n        :param conditioning_free: When set, all conditioning inputs (including tokens and conditioning_input) will not be considered.\n        :return: an [N x C x ...] Tensor of outputs.\n        \"\"\"\n        assert precomputed_aligned_embeddings is not None or (aligned_conditioning is not None and conditioning_latent is not None)\n        assert not (return_code_pred and precomputed_aligned_embeddings is not None)  # These two are mutually exclusive.\n\n        unused_params = []\n        if conditioning_free:\n            code_emb = self.unconditioned_embedding.repeat(x.shape[0], 1, x.shape[-1])\n            unused_params.extend(list(self.code_converter.parameters()) + list(self.code_embedding.parameters()))\n            unused_params.extend(list(self.latent_conditioner.parameters()))\n        else:\n            if precomputed_aligned_embeddings is not None:\n                code_emb = precomputed_aligned_embeddings\n            else:\n                code_emb, mel_pred = self.timestep_independent(aligned_conditioning, conditioning_latent, x.shape[-1], True)\n                if is_latent(aligned_conditioning):\n                    unused_params.extend(list(self.code_converter.parameters()) + list(self.code_embedding.parameters()))\n                else:\n                    unused_params.extend(list(self.latent_conditioner.parameters()))\n\n            unused_params.append(self.unconditioned_embedding)\n\n        time_emb = self.time_embed(timestep_embedding(timesteps, self.model_channels))\n        code_emb = self.conditioning_timestep_integrator(code_emb, time_emb)\n        x = self.inp_block(x)\n        x = torch.cat([x, code_emb], dim=1)\n        x = self.integrating_conv(x)\n        for i, lyr in enumerate(self.layers):\n            # Do layer drop where applicable. Do not drop first and last layers.\n            if self.training and self.layer_drop > 0 and i != 0 and i != (len(self.layers)-1) and random.random() < self.layer_drop:\n                unused_params.extend(list(lyr.parameters()))\n            else:\n                # First and last blocks will have autocast disabled for improved precision.\n                if not torch.backends.mps.is_available():\n                    with autocast(x.device.type, enabled=self.enable_fp16 and i != 0):\n                        x = lyr(x, time_emb)\n                else:\n                    x = lyr(x, time_emb)\n\n        x = x.float()\n        out = self.out(x)\n\n        # Involve probabilistic or possibly unused parameters in loss so we don't get DDP errors.\n        extraneous_addition = 0\n        for p in unused_params:\n            extraneous_addition = extraneous_addition + p.mean()\n        out = out + extraneous_addition * 0\n\n        if return_code_pred:\n            return out, mel_pred\n        return out\n\n\nif __name__ == '__main__':\n    clip = torch.randn(2, 100, 400)\n    aligned_latent = torch.randn(2,388,512)\n    aligned_sequence = torch.randint(0,8192,(2,100))\n    cond = torch.randn(2, 100, 400)\n    ts = torch.LongTensor([600, 600])\n    model = DiffusionTts(512, layer_drop=.3, unconditioned_percentage=.5)\n    # Test with latent aligned conditioning\n    #o = model(clip, ts, aligned_latent, cond)\n    # Test with sequence aligned conditioning\n    o = model(clip, ts, aligned_sequence, cond)\n\n"
  },
  {
    "path": "tortoise/models/hifigan_decoder.py",
    "content": "# adopted from https://github.com/jik876/hifi-gan/blob/master/models.py\nimport torch\nfrom torch import nn\nfrom torch.nn import Conv1d, ConvTranspose1d\nfrom torch.nn import functional as F\nfrom torch.nn.utils import remove_weight_norm, weight_norm\n\nLRELU_SLOPE = 0.1\n\n\ndef get_padding(k, d):\n    return int((k * d - d) / 2)\n\n\nclass ResBlock1(torch.nn.Module):\n    \"\"\"Residual Block Type 1. It has 3 convolutional layers in each convolutional block.\n\n    Network::\n\n        x -> lrelu -> conv1_1 -> conv1_2 -> conv1_3 -> z -> lrelu -> conv2_1 -> conv2_2 -> conv2_3 -> o -> + -> o\n        |--------------------------------------------------------------------------------------------------|\n\n\n    Args:\n        channels (int): number of hidden channels for the convolutional layers.\n        kernel_size (int): size of the convolution filter in each layer.\n        dilations (list): list of dilation value for each conv layer in a block.\n    \"\"\"\n\n    def __init__(self, channels, kernel_size=3, dilation=(1, 3, 5)):\n        super().__init__()\n        self.convs1 = nn.ModuleList(\n            [\n                weight_norm(\n                    Conv1d(\n                        channels,\n                        channels,\n                        kernel_size,\n                        1,\n                        dilation=dilation[0],\n                        padding=get_padding(kernel_size, dilation[0]),\n                    )\n                ),\n                weight_norm(\n                    Conv1d(\n                        channels,\n                        channels,\n                        kernel_size,\n                        1,\n                        dilation=dilation[1],\n                        padding=get_padding(kernel_size, dilation[1]),\n                    )\n                ),\n                weight_norm(\n                    Conv1d(\n                        channels,\n                        channels,\n                        kernel_size,\n                        1,\n                        dilation=dilation[2],\n                        padding=get_padding(kernel_size, dilation[2]),\n                    )\n                ),\n            ]\n        )\n\n        self.convs2 = nn.ModuleList(\n            [\n                weight_norm(\n                    Conv1d(channels, channels, kernel_size, 1, dilation=1, padding=get_padding(kernel_size, 1))\n                ),\n                weight_norm(\n                    Conv1d(channels, channels, kernel_size, 1, dilation=1, padding=get_padding(kernel_size, 1))\n                ),\n                weight_norm(\n                    Conv1d(channels, channels, kernel_size, 1, dilation=1, padding=get_padding(kernel_size, 1))\n                ),\n            ]\n        )\n\n    def forward(self, x):\n        \"\"\"\n        Args:\n            x (Tensor): input tensor.\n        Returns:\n            Tensor: output tensor.\n        Shapes:\n            x: [B, C, T]\n        \"\"\"\n        for c1, c2 in zip(self.convs1, self.convs2):\n            xt = F.leaky_relu(x, LRELU_SLOPE)\n            xt = c1(xt)\n            xt = F.leaky_relu(xt, LRELU_SLOPE)\n            xt = c2(xt)\n            x = xt + x\n        return x\n\n    def remove_weight_norm(self):\n        for l in self.convs1:\n            remove_weight_norm(l)\n        for l in self.convs2:\n            remove_weight_norm(l)\n\n\nclass ResBlock2(torch.nn.Module):\n    \"\"\"Residual Block Type 2. It has 1 convolutional layers in each convolutional block.\n\n    Network::\n\n        x -> lrelu -> conv1-> -> z -> lrelu -> conv2-> o -> + -> o\n        |---------------------------------------------------|\n\n\n    Args:\n        channels (int): number of hidden channels for the convolutional layers.\n        kernel_size (int): size of the convolution filter in each layer.\n        dilations (list): list of dilation value for each conv layer in a block.\n    \"\"\"\n\n    def __init__(self, channels, kernel_size=3, dilation=(1, 3)):\n        super().__init__()\n        self.convs = nn.ModuleList(\n            [\n                weight_norm(\n                    Conv1d(\n                        channels,\n                        channels,\n                        kernel_size,\n                        1,\n                        dilation=dilation[0],\n                        padding=get_padding(kernel_size, dilation[0]),\n                    )\n                ),\n                weight_norm(\n                    Conv1d(\n                        channels,\n                        channels,\n                        kernel_size,\n                        1,\n                        dilation=dilation[1],\n                        padding=get_padding(kernel_size, dilation[1]),\n                    )\n                ),\n            ]\n        )\n\n    def forward(self, x):\n        for c in self.convs:\n            xt = F.leaky_relu(x, LRELU_SLOPE)\n            xt = c(xt)\n            x = xt + x\n        return x\n\n    def remove_weight_norm(self):\n        for l in self.convs:\n            remove_weight_norm(l)\n\n\nclass HifiganGenerator(torch.nn.Module):\n    def __init__(\n        self,\n        in_channels,\n        out_channels,\n        resblock_type,\n        resblock_dilation_sizes,\n        resblock_kernel_sizes,\n        upsample_kernel_sizes,\n        upsample_initial_channel,\n        upsample_factors,\n        inference_padding=5,\n        cond_channels=0,\n        conv_pre_weight_norm=True,\n        conv_post_weight_norm=True,\n        conv_post_bias=True,\n    ):\n        r\"\"\"HiFiGAN Generator with Multi-Receptive Field Fusion (MRF)\n\n        Network:\n            x -> lrelu -> upsampling_layer -> resblock1_k1x1 -> z1 -> + -> z_sum / #resblocks -> lrelu -> conv_post_7x1 -> tanh -> o\n                                                 ..          -> zI ---|\n                                              resblockN_kNx1 -> zN ---'\n\n        Args:\n            in_channels (int): number of input tensor channels.\n            out_channels (int): number of output tensor channels.\n            resblock_type (str): type of the `ResBlock`. '1' or '2'.\n            resblock_dilation_sizes (List[List[int]]): list of dilation values in each layer of a `ResBlock`.\n            resblock_kernel_sizes (List[int]): list of kernel sizes for each `ResBlock`.\n            upsample_kernel_sizes (List[int]): list of kernel sizes for each transposed convolution.\n            upsample_initial_channel (int): number of channels for the first upsampling layer. This is divided by 2\n                for each consecutive upsampling layer.\n            upsample_factors (List[int]): upsampling factors (stride) for each upsampling layer.\n            inference_padding (int): constant padding applied to the input at inference time. Defaults to 5.\n        \"\"\"\n        super().__init__()\n        self.inference_padding = inference_padding\n        self.num_kernels = len(resblock_kernel_sizes)\n        self.num_upsamples = len(upsample_factors)\n        # initial upsampling layers\n        self.conv_pre = weight_norm(Conv1d(in_channels, upsample_initial_channel, 7, 1, padding=3))\n        resblock = ResBlock1 if resblock_type == \"1\" else ResBlock2\n        # upsampling layers\n        self.ups = nn.ModuleList()\n        for i, (u, k) in enumerate(zip(upsample_factors, upsample_kernel_sizes)):\n            self.ups.append(\n                weight_norm(\n                    ConvTranspose1d(\n                        upsample_initial_channel // (2**i),\n                        upsample_initial_channel // (2 ** (i + 1)),\n                        k,\n                        u,\n                        padding=(k - u) // 2,\n                    )\n                )\n            )\n        # MRF blocks\n        self.resblocks = nn.ModuleList()\n        for i in range(len(self.ups)):\n            ch = upsample_initial_channel // (2 ** (i + 1))\n            for _, (k, d) in enumerate(zip(resblock_kernel_sizes, resblock_dilation_sizes)):\n                self.resblocks.append(resblock(ch, k, d))\n        # post convolution layer\n        self.conv_post = weight_norm(Conv1d(ch, out_channels, 7, 1, padding=3, bias=conv_post_bias))\n        if cond_channels > 0:\n            self.cond_layer = nn.Conv1d(cond_channels, upsample_initial_channel, 1)\n\n        if not conv_pre_weight_norm:\n            remove_weight_norm(self.conv_pre)\n\n        if not conv_post_weight_norm:\n            remove_weight_norm(self.conv_post)\n\n        self.device = torch.device('cuda' if torch.cuda.is_available() else'cpu')\n        if torch.backends.mps.is_available():\n            self.device = torch.device('mps')\n\n    def forward(self, x, g=None):\n        \"\"\"\n        Args:\n            x (Tensor): feature input tensor.\n            g (Tensor): global conditioning input tensor.\n\n        Returns:\n            Tensor: output waveform.\n\n        Shapes:\n            x: [B, C, T]\n            Tensor: [B, 1, T]\n        \"\"\"\n        o = self.conv_pre(x)\n        if hasattr(self, \"cond_layer\"):\n            o = o + self.cond_layer(g)\n        for i in range(self.num_upsamples):\n            o = F.leaky_relu(o, LRELU_SLOPE)\n            o = self.ups[i](o)\n            z_sum = None\n            for j in range(self.num_kernels):\n                if z_sum is None:\n                    z_sum = self.resblocks[i * self.num_kernels + j](o)\n                else:\n                    z_sum += self.resblocks[i * self.num_kernels + j](o)\n            o = z_sum / self.num_kernels\n        o = F.leaky_relu(o)\n        o = self.conv_post(o)\n        o = torch.tanh(o)\n        return o\n\n    @torch.no_grad()\n    def inference(self, c, g=None):\n        \"\"\"\n        Args:\n            x (Tensor): conditioning input tensor.\n\n        Returns:\n            Tensor: output waveform.\n\n        Shapes:\n            x: [B, C, T]\n            Tensor: [B, 1, T]\n        \"\"\"\n        # c = c.to(self.conv_pre.weight.device)\n        # c = torch.nn.functional.pad(c, (self.inference_padding, self.inference_padding), \"replicate\")\n        up_1 = torch.nn.functional.interpolate(\n                c.transpose(1,2),\n                scale_factor=[1024 / 256],\n                mode=\"linear\",\n            )\n        up_2 = torch.nn.functional.interpolate(\n            up_1,\n            scale_factor=[24000 / 22050],\n            mode=\"linear\",\n        )\n        g = g.unsqueeze(0)\n        return self.forward(up_2.to(self.device), g.transpose(1,2))\n\n    def remove_weight_norm(self):\n        print(\"Removing weight norm...\")\n        for l in self.ups:\n            remove_weight_norm(l)\n        for l in self.resblocks:\n            l.remove_weight_norm()\n        remove_weight_norm(self.conv_pre)\n        remove_weight_norm(self.conv_post)\n"
  },
  {
    "path": "tortoise/models/random_latent_generator.py",
    "content": "import math\n\nimport torch\nimport torch.nn as nn\nimport torch.nn.functional as F\n\n\ndef fused_leaky_relu(input, bias=None, negative_slope=0.2, scale=2 ** 0.5):\n    if bias is not None:\n        rest_dim = [1] * (input.ndim - bias.ndim - 1)\n        return (\n            F.leaky_relu(\n                input + bias.view(1, bias.shape[0], *rest_dim), negative_slope=negative_slope\n            )\n            * scale\n        )\n    else:\n        return F.leaky_relu(input, negative_slope=0.2) * scale\n\n\nclass EqualLinear(nn.Module):\n    def __init__(\n        self, in_dim, out_dim, bias=True, bias_init=0, lr_mul=1\n    ):\n        super().__init__()\n        self.weight = nn.Parameter(torch.randn(out_dim, in_dim).div_(lr_mul))\n        if bias:\n            self.bias = nn.Parameter(torch.zeros(out_dim).fill_(bias_init))\n        else:\n            self.bias = None\n        self.scale = (1 / math.sqrt(in_dim)) * lr_mul\n        self.lr_mul = lr_mul\n\n    def forward(self, input):\n        out = F.linear(input, self.weight * self.scale)\n        out = fused_leaky_relu(out, self.bias * self.lr_mul)\n        return out\n\n\nclass RandomLatentConverter(nn.Module):\n    def __init__(self, channels):\n        super().__init__()\n        self.layers = nn.Sequential(*[EqualLinear(channels, channels, lr_mul=.1) for _ in range(5)],\n                                    nn.Linear(channels, channels))\n        self.channels = channels\n\n    def forward(self, ref):\n        r = torch.randn(ref.shape[0], self.channels, device=ref.device)\n        y = self.layers(r)\n        return y\n\n\nif __name__ == '__main__':\n    model = RandomLatentConverter(512)\n    model(torch.randn(5,512))"
  },
  {
    "path": "tortoise/models/stream_generator.py",
    "content": "# Adapted from: https://github.com/LowinLi/transformers-stream-generator\n\nfrom transformers import (\n    GenerationConfig,\n    GenerationMixin,\n    LogitsProcessorList,\n    StoppingCriteriaList,\n    DisjunctiveConstraint,\n    BeamSearchScorer,\n    PhrasalConstraint,\n    ConstrainedBeamSearchScorer,\n    PreTrainedModel,\n)\nimport numpy as np\nimport random\nimport warnings\nimport inspect\nfrom transformers.generation.utils import GenerateOutput, SampleOutput, logger\nimport torch\nfrom typing import Callable, List, Optional, Union\nfrom torch import nn\nimport torch.distributed as dist\nimport copy\n\n\ndef setup_seed(seed):\n    if seed == -1:\n        return\n    torch.manual_seed(seed)\n    if torch.cuda.is_available():\n        torch.cuda.manual_seed_all(seed)\n    np.random.seed(seed)\n    random.seed(seed)\n    torch.backends.cudnn.deterministic = True\n\n\nclass StreamGenerationConfig(GenerationConfig):\n    def __init__(self, **kwargs):\n        super().__init__(**kwargs)\n        self.do_stream = kwargs.pop(\"do_stream\", False)\n\n\nclass NewGenerationMixin(GenerationMixin):\n    @torch.no_grad()\n    def generate(\n        self,\n        inputs: Optional[torch.Tensor] = None,\n        generation_config: Optional[StreamGenerationConfig] = None,\n        logits_processor: Optional[LogitsProcessorList] = None,\n        stopping_criteria: Optional[StoppingCriteriaList] = None,\n        prefix_allowed_tokens_fn: Optional[\n            Callable[[int, torch.Tensor], List[int]]\n        ] = None,\n        synced_gpus: Optional[bool] = False,\n        seed=0,\n        **kwargs,\n    ) -> Union[GenerateOutput, torch.LongTensor]:\n        r\"\"\"\n\n        Generates sequences of token ids for models with a language modeling head.\n\n        <Tip warning={true}>\n\n        Most generation-controlling parameters are set in `generation_config` which, if not passed, will be set to the\n        model's default generation configuration. You can override any `generation_config` by passing the corresponding\n        parameters to generate(), e.g. `.generate(inputs, num_beams=4, do_sample=True)`.\n\n        For an overview of generation strategies and code examples, check out the [following\n        guide](./generation_strategies).\n\n        </Tip>\n\n        Parameters:\n            inputs (`torch.Tensor` of varying shape depending on the modality, *optional*):\n                The sequence used as a prompt for the generation or as model inputs to the encoder. If `None` the\n                method initializes it with `bos_token_id` and a batch size of 1. For decoder-only models `inputs`\n                should of in the format of `input_ids`. For encoder-decoder models *inputs* can represent any of\n                `input_ids`, `input_values`, `input_features`, or `pixel_values`.\n            generation_config (`~generation.GenerationConfig`, *optional*):\n                The generation configuration to be used as base parametrization for the generation call. `**kwargs`\n                passed to generate matching the attributes of `generation_config` will override them. If\n                `generation_config` is not provided, the default will be used, which had the following loading\n                priority: 1) from the `generation_config.json` model file, if it exists; 2) from the model\n                configuration. Please note that unspecified parameters will inherit [`~generation.GenerationConfig`]'s\n                default values, whose documentation should be checked to parameterize generation.\n            logits_processor (`LogitsProcessorList`, *optional*):\n                Custom logits processors that complement the default logits processors built from arguments and\n                generation config. If a logit processor is passed that is already created with the arguments or a\n                generation config an error is thrown. This feature is intended for advanced users.\n            stopping_criteria (`StoppingCriteriaList`, *optional*):\n                Custom stopping criteria that complement the default stopping criteria built from arguments and a\n                generation config. If a stopping criteria is passed that is already created with the arguments or a\n                generation config an error is thrown. This feature is intended for advanced users.\n            prefix_allowed_tokens_fn (`Callable[[int, torch.Tensor], List[int]]`, *optional*):\n                If provided, this function constraints the beam search to allowed tokens only at each step. If not\n                provided no constraint is applied. This function takes 2 arguments: the batch ID `batch_id` and\n                `input_ids`. It has to return a list with the allowed tokens for the next generation step conditioned\n                on the batch ID `batch_id` and the previously generated tokens `inputs_ids`. This argument is useful\n                for constrained generation conditioned on the prefix, as described in [Autoregressive Entity\n                Retrieval](https://arxiv.org/abs/2010.00904).\n            synced_gpus (`bool`, *optional*, defaults to `False`):\n                Whether to continue running the while loop until max_length (needed for ZeRO stage 3)\n            kwargs:\n                Ad hoc parametrization of `generate_config` and/or additional model-specific kwargs that will be\n                forwarded to the `forward` function of the model. If the model is an encoder-decoder model, encoder\n                specific kwargs should not be prefixed and decoder specific kwargs should be prefixed with *decoder_*.\n\n        Return:\n            [`~utils.ModelOutput`] or `torch.LongTensor`: A [`~utils.ModelOutput`] (if `return_dict_in_generate=True`\n            or when `config.return_dict_in_generate=True`) or a `torch.FloatTensor`.\n\n                If the model is *not* an encoder-decoder model (`model.config.is_encoder_decoder=False`), the possible\n                [`~utils.ModelOutput`] types are:\n\n                    - [`~generation.GreedySearchDecoderOnlyOutput`],\n                    - [`~generation.SampleDecoderOnlyOutput`],\n                    - [`~generation.BeamSearchDecoderOnlyOutput`],\n                    - [`~generation.BeamSampleDecoderOnlyOutput`]\n\n                If the model is an encoder-decoder model (`model.config.is_encoder_decoder=True`), the possible\n                [`~utils.ModelOutput`] types are:\n\n                    - [`~generation.GreedySearchEncoderDecoderOutput`],\n                    - [`~generation.SampleEncoderDecoderOutput`],\n                    - [`~generation.BeamSearchEncoderDecoderOutput`],\n                    - [`~generation.BeamSampleEncoderDecoderOutput`]\n        \"\"\"\n        setup_seed(seed)\n        # 1. Handle `generation_config` and kwargs that might update it, and validate the `.generate()` call\n        self._validate_model_class()\n\n        # priority: `generation_config` argument > `model.generation_config` (the default generation config)\n        if generation_config is None:\n            # legacy: users may modify the model configuration to control generation -- update the generation config\n            # model attribute accordingly, if it was created from the model config\n            if self.generation_config._from_model_config:\n                new_generation_config = StreamGenerationConfig.from_model_config(\n                    self.config\n                )\n                if new_generation_config != self.generation_config:\n                    warnings.warn(\n                        \"You have modified the pretrained model configuration to control generation. This is a\"\n                        \" deprecated strategy to control generation and will be removed soon, in a future version.\"\n                        \" Please use a generation configuration file (see\"\n                        \" https://huggingface.co/docs/transformers/main_classes/text_generation)\"\n                    )\n                    self.generation_config = new_generation_config\n            generation_config = self.generation_config\n\n        generation_config = copy.deepcopy(generation_config)\n        model_kwargs = generation_config.update(\n            **kwargs\n        )  # All unused kwargs must be model kwargs\n        # self._validate_model_kwargs(model_kwargs.copy())\n\n        # 2. Set generation parameters if not already defined\n        logits_processor = (\n            logits_processor if logits_processor is not None else LogitsProcessorList()\n        )\n        stopping_criteria = (\n            stopping_criteria\n            if stopping_criteria is not None\n            else StoppingCriteriaList()\n        )\n\n        if (\n            generation_config.pad_token_id is None\n            and generation_config.eos_token_id is not None\n        ):\n            if model_kwargs.get(\"attention_mask\", None) is None:\n                logger.warning(\n                    \"The attention mask and the pad token id were not set. As a consequence, you may observe \"\n                    \"unexpected behavior. Please pass your input's `attention_mask` to obtain reliable results.\"\n                )\n            eos_token_id = generation_config.eos_token_id\n            if isinstance(eos_token_id, list):\n                eos_token_id = eos_token_id[0]\n            logger.warning(\n                f\"Setting `pad_token_id` to `eos_token_id`:{eos_token_id} for open-end generation.\"\n            )\n            generation_config.pad_token_id = eos_token_id\n\n        # 3. Define model inputs\n        # inputs_tensor has to be defined\n        # model_input_name is defined if model-specific keyword input is passed\n        # otherwise model_input_name is None\n        # all model-specific keyword inputs are removed from `model_kwargs`\n        inputs_tensor, model_input_name, model_kwargs = self._prepare_model_inputs(\n            inputs, generation_config.bos_token_id, model_kwargs\n        )\n        batch_size = inputs_tensor.shape[0]\n\n        # 4. Define other model kwargs\n        model_kwargs[\"output_attentions\"] = generation_config.output_attentions\n        model_kwargs[\"output_hidden_states\"] = generation_config.output_hidden_states\n        model_kwargs[\"use_cache\"] = generation_config.use_cache\n\n        accepts_attention_mask = \"attention_mask\" in set(\n            inspect.signature(self.forward).parameters.keys()\n        )\n        requires_attention_mask = \"encoder_outputs\" not in model_kwargs\n\n        if (\n            model_kwargs.get(\"attention_mask\", None) is None\n            and requires_attention_mask\n            and accepts_attention_mask\n        ):\n            model_kwargs[\n                \"attention_mask\"\n            ] = self._prepare_attention_mask_for_generation(\n                inputs_tensor,\n                generation_config.pad_token_id,\n                generation_config.eos_token_id,\n            )\n\n        # decoder-only models should use left-padding for generation\n        if not self.config.is_encoder_decoder:\n            if (\n                generation_config.pad_token_id is not None\n                and torch.sum(inputs_tensor[:, -1] == generation_config.pad_token_id)\n                > 0\n            ):\n                logger.warning(\n                    \"A decoder-only architecture is being used, but right-padding was detected! For correct \"\n                    \"generation results, please set `padding_side='left'` when initializing the tokenizer.\"\n                )\n\n        if self.config.is_encoder_decoder and \"encoder_outputs\" not in model_kwargs:\n            # if model is encoder decoder encoder_outputs are created\n            # and added to `model_kwargs`\n            model_kwargs = self._prepare_encoder_decoder_kwargs_for_generation(\n                inputs_tensor, model_kwargs, model_input_name\n            )\n\n        # 5. Prepare `input_ids` which will be used for auto-regressive generation\n        if self.config.is_encoder_decoder:\n            input_ids = self._prepare_decoder_input_ids_for_generation(\n                batch_size,\n                decoder_start_token_id=generation_config.decoder_start_token_id,\n                bos_token_id=generation_config.bos_token_id,\n                model_kwargs=model_kwargs,\n                device=inputs_tensor.device,\n            )\n        else:\n            # if decoder-only then inputs_tensor has to be `input_ids`\n            input_ids = inputs_tensor\n\n        # 6. Prepare `max_length` depending on other stopping criteria.\n        input_ids_seq_length = input_ids.shape[-1]\n        has_default_max_length = (\n            kwargs.get(\"max_length\") is None\n            and generation_config.max_length is not None\n        )\n        if has_default_max_length and generation_config.max_new_tokens is None:\n            warnings.warn(\n                \"Neither `max_length` nor `max_new_tokens` has been set, `max_length` will default to\"\n                f\" {generation_config.max_length} (`generation_config.max_length`). Controlling `max_length` via the\"\n                \" config is deprecated and `max_length` will be removed from the config in v5 of Transformers -- we\"\n                \" recommend using `max_new_tokens` to control the maximum length of the generation.\",\n                UserWarning,\n            )\n        elif has_default_max_length and generation_config.max_new_tokens is not None:\n            generation_config.max_length = (\n                generation_config.max_new_tokens + input_ids_seq_length\n            )\n        elif (\n            not has_default_max_length and generation_config.max_new_tokens is not None\n        ):\n            raise ValueError(\n                \"Both `max_new_tokens` and `max_length` have been set but they serve the same purpose -- setting a\"\n                \" limit to the generated output length. Remove one of those arguments. Please refer to the\"\n                \" documentation for more information. \"\n                \"(https://huggingface.co/docs/transformers/main/en/main_classes/text_generation)\"\n            )\n\n        if (\n            generation_config.min_length is not None\n            and generation_config.min_length > generation_config.max_length\n        ):\n            raise ValueError(\n                f\"Unfeasible length constraints: the minimum length ({generation_config.min_length}) is larger than\"\n                f\" the maximum length ({generation_config.max_length})\"\n            )\n        if input_ids_seq_length >= generation_config.max_length:\n            input_ids_string = (\n                \"decoder_input_ids\" if self.config.is_encoder_decoder else \"input_ids\"\n            )\n            logger.warning(\n                f\"Input length of {input_ids_string} is {input_ids_seq_length}, but `max_length` is set to\"\n                f\" {generation_config.max_length}. This can lead to unexpected behavior. You should consider\"\n                \" increasing `max_new_tokens`.\"\n            )\n\n        # 7. determine generation mode\n        is_constraint_gen_mode = (\n            generation_config.constraints is not None\n            or generation_config.force_words_ids is not None\n        )\n\n        is_contrastive_search_gen_mode = (\n            generation_config.top_k is not None\n            and generation_config.top_k > 1\n            and generation_config.do_sample is False\n            and generation_config.penalty_alpha is not None\n            and generation_config.penalty_alpha > 0\n        )\n\n        is_greedy_gen_mode = (\n            (generation_config.num_beams == 1)\n            and (generation_config.num_beam_groups == 1)\n            and generation_config.do_sample is False\n            and not is_constraint_gen_mode\n            and not is_contrastive_search_gen_mode\n        )\n        is_sample_gen_mode = (\n            (generation_config.num_beams == 1)\n            and (generation_config.num_beam_groups == 1)\n            and generation_config.do_sample is True\n            and generation_config.do_stream is False\n            and not is_constraint_gen_mode\n            and not is_contrastive_search_gen_mode\n        )\n        is_sample_gen_stream_mode = (\n            (generation_config.num_beams == 1)\n            and (generation_config.num_beam_groups == 1)\n            and generation_config.do_stream is True\n            and not is_constraint_gen_mode\n            and not is_contrastive_search_gen_mode\n        )\n        is_beam_gen_mode = (\n            (generation_config.num_beams > 1)\n            and (generation_config.num_beam_groups == 1)\n            and generation_config.do_sample is False\n            and not is_constraint_gen_mode\n            and not is_contrastive_search_gen_mode\n        )\n        is_beam_sample_gen_mode = (\n            (generation_config.num_beams > 1)\n            and (generation_config.num_beam_groups == 1)\n            and generation_config.do_sample is True\n            and not is_constraint_gen_mode\n            and not is_contrastive_search_gen_mode\n        )\n        is_group_beam_gen_mode = (\n            (generation_config.num_beams > 1)\n            and (generation_config.num_beam_groups > 1)\n            and not is_constraint_gen_mode\n            and not is_contrastive_search_gen_mode\n        )\n\n        if generation_config.num_beam_groups > generation_config.num_beams:\n            raise ValueError(\n                \"`num_beam_groups` has to be smaller or equal to `num_beams`\"\n            )\n        if is_group_beam_gen_mode and generation_config.do_sample is True:\n            raise ValueError(\n                \"Diverse beam search cannot be used in sampling mode. Make sure that `do_sample` is set to `False`.\"\n            )\n\n        if self.device.type != input_ids.device.type:\n            warnings.warn(\n                \"You are calling .generate() with the `input_ids` being on a device type different\"\n                f\" than your model's device. `input_ids` is on {input_ids.device.type}, whereas the model\"\n                f\" is on {self.device.type}. You may experience unexpected behaviors or slower generation.\"\n                \" Please make sure that you have put `input_ids` to the\"\n                f\" correct device by calling for example input_ids = input_ids.to('{self.device.type}') before\"\n                \" running `.generate()`.\",\n                UserWarning,\n            )\n        # 8. prepare distribution pre_processing samplers\n        logits_processor = self._get_logits_processor(\n            generation_config=generation_config,\n            input_ids_seq_length=input_ids_seq_length,\n            encoder_input_ids=inputs_tensor,\n            prefix_allowed_tokens_fn=prefix_allowed_tokens_fn,\n            logits_processor=logits_processor,\n        )\n\n        # 9. prepare stopping criteria\n        stopping_criteria = self._get_stopping_criteria(\n            generation_config=generation_config, stopping_criteria=stopping_criteria\n        )\n        # 10. go into different generation modes\n        if is_greedy_gen_mode:\n            if generation_config.num_return_sequences > 1:\n                raise ValueError(\n                    f\"num_return_sequences has to be 1, but is {generation_config.num_return_sequences} when doing\"\n                    \" greedy search.\"\n                )\n\n            # 11. run greedy search\n            return self.greedy_search(\n                input_ids,\n                logits_processor=logits_processor,\n                stopping_criteria=stopping_criteria,\n                pad_token_id=generation_config.pad_token_id,\n                eos_token_id=generation_config.eos_token_id,\n                output_scores=generation_config.output_scores,\n                return_dict_in_generate=generation_config.return_dict_in_generate,\n                synced_gpus=synced_gpus,\n                **model_kwargs,\n            )\n\n        elif is_contrastive_search_gen_mode:\n            if generation_config.num_return_sequences > 1:\n                raise ValueError(\n                    f\"num_return_sequences has to be 1, but is {generation_config.num_return_sequences} when doing\"\n                    \" contrastive search.\"\n                )\n\n            return self.contrastive_search(\n                input_ids,\n                top_k=generation_config.top_k,\n                penalty_alpha=generation_config.penalty_alpha,\n                logits_processor=logits_processor,\n                stopping_criteria=stopping_criteria,\n                pad_token_id=generation_config.pad_token_id,\n                eos_token_id=generation_config.eos_token_id,\n                output_scores=generation_config.output_scores,\n                return_dict_in_generate=generation_config.return_dict_in_generate,\n                synced_gpus=synced_gpus,\n                **model_kwargs,\n            )\n\n        elif is_sample_gen_mode:\n            # 11. prepare logits warper\n            logits_warper = self._get_logits_warper(generation_config)\n\n            # 12. expand input_ids with `num_return_sequences` additional sequences per batch\n            input_ids, model_kwargs = self._expand_inputs_for_generation(\n                input_ids=input_ids,\n                expand_size=generation_config.num_return_sequences,\n                is_encoder_decoder=self.config.is_encoder_decoder,\n                **model_kwargs,\n            )\n\n            # 13. run sample\n            return self.sample(\n                input_ids,\n                logits_processor=logits_processor,\n                logits_warper=logits_warper,\n                stopping_criteria=stopping_criteria,\n                pad_token_id=generation_config.pad_token_id,\n                eos_token_id=generation_config.eos_token_id,\n                output_scores=generation_config.output_scores,\n                return_dict_in_generate=generation_config.return_dict_in_generate,\n                synced_gpus=synced_gpus,\n                **model_kwargs,\n            )\n        elif is_sample_gen_stream_mode:\n            # 11. prepare logits warper\n            logits_warper = self._get_logits_warper(generation_config)\n\n            # 12. expand input_ids with `num_return_sequences` additional sequences per batch\n            input_ids, model_kwargs = self._expand_inputs_for_generation(\n                input_ids=input_ids,\n                expand_size=generation_config.num_return_sequences,\n                is_encoder_decoder=self.config.is_encoder_decoder,\n                **model_kwargs,\n            )\n\n            # 13. run sample\n            return self.sample_stream(\n                input_ids,\n                logits_processor=logits_processor,\n                logits_warper=logits_warper,\n                stopping_criteria=stopping_criteria,\n                pad_token_id=generation_config.pad_token_id,\n                eos_token_id=generation_config.eos_token_id,\n                output_scores=generation_config.output_scores,\n                return_dict_in_generate=generation_config.return_dict_in_generate,\n                synced_gpus=synced_gpus,\n                **model_kwargs,\n            )\n        elif is_beam_gen_mode:\n            if generation_config.num_return_sequences > generation_config.num_beams:\n                raise ValueError(\n                    \"`num_return_sequences` has to be smaller or equal to `num_beams`.\"\n                )\n\n            if stopping_criteria.max_length is None:\n                raise ValueError(\n                    \"`max_length` needs to be a stopping_criteria for now.\"\n                )\n\n            # 11. prepare beam search scorer\n            beam_scorer = BeamSearchScorer(\n                batch_size=batch_size,\n                num_beams=generation_config.num_beams,\n                device=inputs_tensor.device,\n                length_penalty=generation_config.length_penalty,\n                do_early_stopping=generation_config.early_stopping,\n                num_beam_hyps_to_keep=generation_config.num_return_sequences,\n            )\n            # 12. interleave input_ids with `num_beams` additional sequences per batch\n            input_ids, model_kwargs = self._expand_inputs_for_generation(\n                input_ids=input_ids,\n                expand_size=generation_config.num_beams,\n                is_encoder_decoder=self.config.is_encoder_decoder,\n                **model_kwargs,\n            )\n            # 13. run beam search\n            return self.beam_search(\n                input_ids,\n                beam_scorer,\n                logits_processor=logits_processor,\n                stopping_criteria=stopping_criteria,\n                pad_token_id=generation_config.pad_token_id,\n                eos_token_id=generation_config.eos_token_id,\n                output_scores=generation_config.output_scores,\n                return_dict_in_generate=generation_config.return_dict_in_generate,\n                synced_gpus=synced_gpus,\n                **model_kwargs,\n            )\n\n        elif is_beam_sample_gen_mode:\n            # 11. prepare logits warper\n            logits_warper = self._get_logits_warper(generation_config)\n\n            if stopping_criteria.max_length is None:\n                raise ValueError(\n                    \"`max_length` needs to be a stopping_criteria for now.\"\n                )\n            # 12. prepare beam search scorer\n            beam_scorer = BeamSearchScorer(\n                batch_size=batch_size * generation_config.num_return_sequences,\n                num_beams=generation_config.num_beams,\n                device=inputs_tensor.device,\n                length_penalty=generation_config.length_penalty,\n                do_early_stopping=generation_config.early_stopping,\n            )\n\n            # 13. interleave input_ids with `num_beams` additional sequences per batch\n            input_ids, model_kwargs = self._expand_inputs_for_generation(\n                input_ids=input_ids,\n                expand_size=generation_config.num_beams\n                * generation_config.num_return_sequences,\n                is_encoder_decoder=self.config.is_encoder_decoder,\n                **model_kwargs,\n            )\n\n            # 14. run beam sample\n            return self.beam_sample(\n                input_ids,\n                beam_scorer,\n                logits_processor=logits_processor,\n                logits_warper=logits_warper,\n                stopping_criteria=stopping_criteria,\n                pad_token_id=generation_config.pad_token_id,\n                eos_token_id=generation_config.eos_token_id,\n                output_scores=generation_config.output_scores,\n                return_dict_in_generate=generation_config.return_dict_in_generate,\n                synced_gpus=synced_gpus,\n                **model_kwargs,\n            )\n\n        elif is_group_beam_gen_mode:\n            if generation_config.num_return_sequences > generation_config.num_beams:\n                raise ValueError(\n                    \"`num_return_sequences` has to be smaller or equal to `num_beams`.\"\n                )\n\n            if generation_config.num_beams % generation_config.num_beam_groups != 0:\n                raise ValueError(\n                    \"`num_beams` should be divisible by `num_beam_groups` for group beam search.\"\n                )\n\n            if stopping_criteria.max_length is None:\n                raise ValueError(\n                    \"`max_length` needs to be a stopping_criteria for now.\"\n                )\n\n            has_default_typical_p = (\n                kwargs.get(\"typical_p\") is None and generation_config.typical_p == 1.0\n            )\n            if not has_default_typical_p:\n                raise ValueError(\n                    \"Decoder argument `typical_p` is not supported with beam groups.\"\n                )\n\n            # 11. prepare beam search scorer\n            beam_scorer = BeamSearchScorer(\n                batch_size=batch_size,\n                num_beams=generation_config.num_beams,\n                max_length=stopping_criteria.max_length,\n                device=inputs_tensor.device,\n                length_penalty=generation_config.length_penalty,\n                do_early_stopping=generation_config.early_stopping,\n                num_beam_hyps_to_keep=generation_config.num_return_sequences,\n                num_beam_groups=generation_config.num_beam_groups,\n            )\n            # 12. interleave input_ids with `num_beams` additional sequences per batch\n            input_ids, model_kwargs = self._expand_inputs_for_generation(\n                input_ids=input_ids,\n                expand_size=generation_config.num_beams,\n                is_encoder_decoder=self.config.is_encoder_decoder,\n                **model_kwargs,\n            )\n            # 13. run beam search\n            return self.group_beam_search(\n                input_ids,\n                beam_scorer,\n                logits_processor=logits_processor,\n                stopping_criteria=stopping_criteria,\n                pad_token_id=generation_config.pad_token_id,\n                eos_token_id=generation_config.eos_token_id,\n                output_scores=generation_config.output_scores,\n                return_dict_in_generate=generation_config.return_dict_in_generate,\n                synced_gpus=synced_gpus,\n                **model_kwargs,\n            )\n\n        elif is_constraint_gen_mode:\n            if generation_config.num_return_sequences > generation_config.num_beams:\n                raise ValueError(\n                    \"`num_return_sequences` has to be smaller or equal to `num_beams`.\"\n                )\n\n            if stopping_criteria.max_length is None:\n                raise ValueError(\n                    \"`max_length` needs to be a stopping_criteria for now.\"\n                )\n\n            if generation_config.num_beams <= 1:\n                raise ValueError(\n                    \"`num_beams` needs to be greater than 1 for constrained generation.\"\n                )\n\n            if generation_config.do_sample:\n                raise ValueError(\n                    \"`do_sample` needs to be false for constrained generation.\"\n                )\n\n            if (\n                generation_config.num_beam_groups is not None\n                and generation_config.num_beam_groups > 1\n            ):\n                raise ValueError(\n                    \"`num_beam_groups` not supported yet for constrained generation.\"\n                )\n\n            final_constraints = []\n            if generation_config.constraints is not None:\n                final_constraints = generation_config.constraints\n\n            if generation_config.force_words_ids is not None:\n\n                def typeerror():\n                    raise ValueError(\n                        \"`force_words_ids` has to either be a `List[List[List[int]]]` or `List[List[int]]`\"\n                        f\"of positive integers, but is {generation_config.force_words_ids}.\"\n                    )\n\n                if (\n                    not isinstance(generation_config.force_words_ids, list)\n                    or len(generation_config.force_words_ids) == 0\n                ):\n                    typeerror()\n\n                for word_ids in generation_config.force_words_ids:\n                    if isinstance(word_ids[0], list):\n                        if not isinstance(word_ids, list) or len(word_ids) == 0:\n                            typeerror()\n                        if any(\n                            not isinstance(token_ids, list) for token_ids in word_ids\n                        ):\n                            typeerror()\n                        if any(\n                            any(\n                                (not isinstance(token_id, int) or token_id < 0)\n                                for token_id in token_ids\n                            )\n                            for token_ids in word_ids\n                        ):\n                            typeerror()\n\n                        constraint = DisjunctiveConstraint(word_ids)\n                    else:\n                        if not isinstance(word_ids, list) or len(word_ids) == 0:\n                            typeerror()\n                        if any(\n                            (not isinstance(token_id, int) or token_id < 0)\n                            for token_id in word_ids\n                        ):\n                            typeerror()\n\n                        constraint = PhrasalConstraint(word_ids)\n                    final_constraints.append(constraint)\n\n            # 11. prepare beam search scorer\n            constrained_beam_scorer = ConstrainedBeamSearchScorer(\n                constraints=final_constraints,\n                batch_size=batch_size,\n                num_beams=generation_config.num_beams,\n                device=inputs_tensor.device,\n                length_penalty=generation_config.length_penalty,\n                do_early_stopping=generation_config.early_stopping,\n                num_beam_hyps_to_keep=generation_config.num_return_sequences,\n            )\n            # 12. interleave input_ids with `num_beams` additional sequences per batch\n            input_ids, model_kwargs = self._expand_inputs_for_generation(\n                input_ids=input_ids,\n                expand_size=generation_config.num_beams,\n                is_encoder_decoder=self.config.is_encoder_decoder,\n                **model_kwargs,\n            )\n            # 13. run beam search\n            return self.constrained_beam_search(\n                input_ids,\n                constrained_beam_scorer=constrained_beam_scorer,\n                logits_processor=logits_processor,\n                stopping_criteria=stopping_criteria,\n                pad_token_id=generation_config.pad_token_id,\n                eos_token_id=generation_config.eos_token_id,\n                output_scores=generation_config.output_scores,\n                return_dict_in_generate=generation_config.return_dict_in_generate,\n                synced_gpus=synced_gpus,\n                **model_kwargs,\n            )\n\n    @torch.no_grad()\n    def sample_stream(\n        self,\n        input_ids: torch.LongTensor,\n        logits_processor: Optional[LogitsProcessorList] = None,\n        stopping_criteria: Optional[StoppingCriteriaList] = None,\n        logits_warper: Optional[LogitsProcessorList] = None,\n        max_length: Optional[int] = None,\n        pad_token_id: Optional[int] = None,\n        eos_token_id: Optional[Union[int, List[int]]] = None,\n        output_attentions: Optional[bool] = None,\n        output_hidden_states: Optional[bool] = None,\n        output_scores: Optional[bool] = None,\n        return_dict_in_generate: Optional[bool] = None,\n        synced_gpus: Optional[bool] = False,\n        **model_kwargs,\n    ) -> Union[SampleOutput, torch.LongTensor]:\n        r\"\"\"\n        Generates sequences of token ids for models with a language modeling head using **multinomial sampling** and\n        can be used for text-decoder, text-to-text, speech-to-text, and vision-to-text models.\n\n        <Tip warning={true}>\n\n        In most cases, you do not need to call [`~generation.GenerationMixin.sample`] directly. Use generate() instead.\n        For an overview of generation strategies and code examples, check the [following\n        guide](./generation_strategies).\n\n        </Tip>\n\n        Parameters:\n            input_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`):\n                The sequence used as a prompt for the generation.\n            logits_processor (`LogitsProcessorList`, *optional*):\n                An instance of [`LogitsProcessorList`]. List of instances of class derived from [`LogitsProcessor`]\n                used to modify the prediction scores of the language modeling head applied at each generation step.\n            stopping_criteria (`StoppingCriteriaList`, *optional*):\n                An instance of [`StoppingCriteriaList`]. List of instances of class derived from [`StoppingCriteria`]\n                used to tell if the generation loop should stop.\n            logits_warper (`LogitsProcessorList`, *optional*):\n                An instance of [`LogitsProcessorList`]. List of instances of class derived from [`LogitsWarper`] used\n                to warp the prediction score distribution of the language modeling head applied before multinomial\n                sampling at each generation step.\n            max_length (`int`, *optional*, defaults to 20):\n                **DEPRECATED**. Use `logits_processor` or `stopping_criteria` directly to cap the number of generated\n                tokens. The maximum length of the sequence to be generated.\n            pad_token_id (`int`, *optional*):\n                The id of the *padding* token.\n            eos_token_id (`int`, *optional*):\n                The id of the *end-of-sequence* token.\n            output_attentions (`bool`, *optional*, defaults to `False`):\n                Whether or not to return the attentions tensors of all attention layers. See `attentions` under\n                returned tensors for more details.\n            output_hidden_states (`bool`, *optional*, defaults to `False`):\n                Whether or not to return the hidden states of all layers. See `hidden_states` under returned tensors\n                for more details.\n            output_scores (`bool`, *optional*, defaults to `False`):\n                Whether or not to return the prediction scores. See `scores` under returned tensors for more details.\n            return_dict_in_generate (`bool`, *optional*, defaults to `False`):\n                Whether or not to return a [`~utils.ModelOutput`] instead of a plain tuple.\n            synced_gpus (`bool`, *optional*, defaults to `False`):\n                Whether to continue running the while loop until max_length (needed for ZeRO stage 3)\n            model_kwargs:\n                Additional model specific kwargs will be forwarded to the `forward` function of the model. If model is\n                an encoder-decoder model the kwargs should include `encoder_outputs`.\n\n        Return:\n            [`~generation.SampleDecoderOnlyOutput`], [`~generation.SampleEncoderDecoderOutput`] or `torch.LongTensor`:\n            A `torch.LongTensor` containing the generated tokens (default behaviour) or a\n            [`~generation.SampleDecoderOnlyOutput`] if `model.config.is_encoder_decoder=False` and\n            `return_dict_in_generate=True` or a [`~generation.SampleEncoderDecoderOutput`] if\n            `model.config.is_encoder_decoder=True`.\n\n        Examples:\n\n        ```python\n        >>> from transformers import (\n        ...     AutoTokenizer,\n        ...     AutoModelForCausalLM,\n        ...     LogitsProcessorList,\n        ...     MinLengthLogitsProcessor,\n        ...     TopKLogitsWarper,\n        ...     TemperatureLogitsWarper,\n        ...     StoppingCriteriaList,\n        ...     MaxLengthCriteria,\n        ... )\n        >>> import torch\n\n        >>> tokenizer = AutoTokenizer.from_pretrained(\"gpt2\")\n        >>> model = AutoModelForCausalLM.from_pretrained(\"gpt2\")\n\n        >>> # set pad_token_id to eos_token_id because GPT2 does not have a EOS token\n        >>> model.config.pad_token_id = model.config.eos_token_id\n        >>> model.generation_config.pad_token_id = model.config.eos_token_id\n\n        >>> input_prompt = \"Today is a beautiful day, and\"\n        >>> input_ids = tokenizer(input_prompt, return_tensors=\"pt\").input_ids\n\n        >>> # instantiate logits processors\n        >>> logits_processor = LogitsProcessorList(\n        ...     [\n        ...         MinLengthLogitsProcessor(15, eos_token_id=model.generation_config.eos_token_id),\n        ...     ]\n        ... )\n        >>> # instantiate logits processors\n        >>> logits_warper = LogitsProcessorList(\n        ...     [\n        ...         TopKLogitsWarper(50),\n        ...         TemperatureLogitsWarper(0.7),\n        ...     ]\n        ... )\n\n        >>> stopping_criteria = StoppingCriteriaList([MaxLengthCriteria(max_length=20)])\n\n        >>> torch.manual_seed(0)  # doctest: +IGNORE_RESULT\n        >>> outputs = model.sample(\n        ...     input_ids,\n        ...     logits_processor=logits_processor,\n        ...     logits_warper=logits_warper,\n        ...     stopping_criteria=stopping_criteria,\n        ... )\n\n        >>> tokenizer.batch_decode(outputs, skip_special_tokens=True)\n        ['Today is a beautiful day, and a wonderful day.\\n\\nI was lucky enough to meet the']\n        ```\"\"\"\n        # init values\n        logits_processor = (\n            logits_processor if logits_processor is not None else LogitsProcessorList()\n        )\n        stopping_criteria = (\n            stopping_criteria\n            if stopping_criteria is not None\n            else StoppingCriteriaList()\n        )\n        if max_length is not None:\n            warnings.warn(\n                \"`max_length` is deprecated in this function, use\"\n                \" `stopping_criteria=StoppingCriteriaList(MaxLengthCriteria(max_length=max_length))` instead.\",\n                UserWarning,\n            )\n            stopping_criteria = validate_stopping_criteria(\n                stopping_criteria, max_length\n            )\n        logits_warper = (\n            logits_warper if logits_warper is not None else LogitsProcessorList()\n        )\n        pad_token_id = (\n            pad_token_id\n            if pad_token_id is not None\n            else self.generation_config.pad_token_id\n        )\n        eos_token_id = (\n            eos_token_id\n            if eos_token_id is not None\n            else self.generation_config.eos_token_id\n        )\n        if isinstance(eos_token_id, int):\n            eos_token_id = [eos_token_id]\n        output_scores = (\n            output_scores\n            if output_scores is not None\n            else self.generation_config.output_scores\n        )\n        output_attentions = (\n            output_attentions\n            if output_attentions is not None\n            else self.generation_config.output_attentions\n        )\n        output_hidden_states = (\n            output_hidden_states\n            if output_hidden_states is not None\n            else self.generation_config.output_hidden_states\n        )\n        return_dict_in_generate = (\n            return_dict_in_generate\n            if return_dict_in_generate is not None\n            else self.generation_config.return_dict_in_generate\n        )\n\n        # init attention / hidden states / scores tuples\n        scores = () if (return_dict_in_generate and output_scores) else None\n        decoder_attentions = (\n            () if (return_dict_in_generate and output_attentions) else None\n        )\n        cross_attentions = (\n            () if (return_dict_in_generate and output_attentions) else None\n        )\n        decoder_hidden_states = (\n            () if (return_dict_in_generate and output_hidden_states) else None\n        )\n\n        # keep track of which sequences are already finished\n        unfinished_sequences = input_ids.new(input_ids.shape[0]).fill_(1)\n\n        this_peer_finished = False  # used by synced_gpus only\n        # auto-regressive generation\n        while True:\n            if synced_gpus:\n                # Under synced_gpus the `forward` call must continue until all gpus complete their sequence.\n                # The following logic allows an early break if all peers finished generating their sequence\n                this_peer_finished_flag = torch.tensor(\n                    0.0 if this_peer_finished else 1.0\n                ).to(input_ids.device)\n                # send 0.0 if we finished, 1.0 otherwise\n                dist.all_reduce(this_peer_finished_flag, op=dist.ReduceOp.SUM)\n                # did all peers finish? the reduced sum will be 0.0 then\n                if this_peer_finished_flag.item() == 0.0:\n                    break\n\n            # prepare model inputs\n            model_inputs = self.prepare_inputs_for_generation(input_ids, **model_kwargs)\n\n            # forward pass to get next token\n            outputs = self(\n                **model_inputs,\n                return_dict=True,\n                output_attentions=output_attentions,\n                output_hidden_states=output_hidden_states,\n            )\n\n            if synced_gpus and this_peer_finished:\n                continue  # don't waste resources running the code we don't need\n\n            next_token_logits = outputs.logits[:, -1, :]\n\n            # pre-process distribution\n            next_token_scores = logits_processor(input_ids, next_token_logits)\n            next_token_scores = logits_warper(input_ids, next_token_scores)\n\n            # Store scores, attentions and hidden_states when required\n            if return_dict_in_generate:\n                if output_scores:\n                    scores += (next_token_scores,)\n                if output_attentions:\n                    decoder_attentions += (\n                        (outputs.decoder_attentions,)\n                        if self.config.is_encoder_decoder\n                        else (outputs.attentions,)\n                    )\n                    if self.config.is_encoder_decoder:\n                        cross_attentions += (outputs.cross_attentions,)\n\n                if output_hidden_states:\n                    decoder_hidden_states += (\n                        (outputs.decoder_hidden_states,)\n                        if self.config.is_encoder_decoder\n                        else (outputs.hidden_states,)\n                    )\n\n            # sample\n            probs = nn.functional.softmax(next_token_scores, dim=-1)\n            next_tokens = torch.multinomial(probs, num_samples=1).squeeze(1)\n\n            # finished sentences should have their next token be a padding token\n            if eos_token_id is not None:\n                if pad_token_id is None:\n                    raise ValueError(\n                        \"If `eos_token_id` is defined, make sure that `pad_token_id` is defined.\"\n                    )\n                next_tokens = next_tokens * unfinished_sequences + pad_token_id * (\n                    1 - unfinished_sequences\n                )\n            yield next_tokens, self.final_norm(outputs.hidden_states[-1][:, -1])\n            # update generated ids, model inputs, and length for next step\n            input_ids = torch.cat([input_ids, next_tokens[:, None]], dim=-1)\n            model_kwargs = self._update_model_kwargs_for_generation(\n                outputs, model_kwargs, is_encoder_decoder=self.config.is_encoder_decoder\n            )\n\n            # if eos_token was found in one sentence, set sentence to finished\n            if eos_token_id is not None:\n                unfinished_sequences = unfinished_sequences.mul(\n                    (sum(next_tokens != i for i in eos_token_id)).long()\n                )\n\n            # stop when each sentence is finished, or if we exceed the maximum length\n            if unfinished_sequences.max() == 0 or stopping_criteria(input_ids, scores):\n                if not synced_gpus:\n                    break\n                else:\n                    this_peer_finished = True\n\n\ndef init_stream_support():\n    \"\"\"Overload PreTrainedModel for streaming.\"\"\"\n    PreTrainedModel.generate_stream = NewGenerationMixin.generate\n    PreTrainedModel.sample_stream = NewGenerationMixin.sample_stream\n\n\nif __name__ == \"__main__\":\n    from transformers import PreTrainedModel\n    from transformers import AutoTokenizer, AutoModelForCausalLM\n\n    PreTrainedModel.generate = NewGenerationMixin.generate\n    PreTrainedModel.sample_stream = NewGenerationMixin.sample_stream\n    model = AutoModelForCausalLM.from_pretrained(\n        \"bigscience/bloom-560m\", torch_dtype=torch.float16\n    )\n\n    tokenizer = AutoTokenizer.from_pretrained(\"bigscience/bloom-560m\")\n    model = model.to(\"cuda:0\")\n    model = model.eval()\n    prompt_text = \"hello? \\n\"\n    input_ids = tokenizer(\n        prompt_text, return_tensors=\"pt\", add_special_tokens=False\n    ).input_ids\n    input_ids = input_ids.to(\"cuda:0\")\n\n    with torch.no_grad():\n        result = model.generate(\n            input_ids,\n            max_new_tokens=200,\n            do_sample=True,\n            top_k=30,\n            top_p=0.85,\n            temperature=0.35,\n            repetition_penalty=1.2,\n            early_stopping=True,\n            seed=0,\n        )\n        print(tokenizer.decode(result, skip_special_tokens=True))\n        generator = model.generate(\n            input_ids,\n            max_new_tokens=200,\n            do_sample=True,\n            top_k=30,\n            top_p=0.85,\n            temperature=0.35,\n            repetition_penalty=1.2,\n            early_stopping=True,\n            seed=0,\n            do_stream=True,\n        )\n        stream_result = \"\"\n        for x in generator:\n            chunk = tokenizer.decode(x, skip_special_tokens=True)\n            stream_result += chunk\n        print(stream_result)\n"
  },
  {
    "path": "tortoise/models/transformer.py",
    "content": "from functools import partial\n\nimport torch\nimport torch.nn.functional as F\nfrom einops import rearrange\nfrom rotary_embedding_torch import RotaryEmbedding\nfrom torch import nn\n\n\n# helpers\n\n\ndef exists(val):\n    return val is not None\n\n\ndef default(val, d):\n    return val if exists(val) else d\n\n\ndef cast_tuple(val, depth = 1):\n    if isinstance(val, list):\n        val = tuple(val)\n    return val if isinstance(val, tuple) else (val,) * depth\n\n\ndef max_neg_value(t):\n    return -torch.finfo(t.dtype).max\n\n\ndef stable_softmax(t, dim = -1, alpha = 32 ** 2):\n    t = t / alpha\n    t = t - torch.amax(t, dim = dim, keepdim = True).detach()\n    return (t * alpha).softmax(dim = dim)\n\n\ndef route_args(router, args, depth):\n    routed_args = [(dict(), dict()) for _ in range(depth)]\n    matched_keys = [key for key in args.keys() if key in router]\n\n    for key in matched_keys:\n        val = args[key]\n        for depth, ((f_args, g_args), routes) in enumerate(zip(routed_args, router[key])):\n            new_f_args, new_g_args = map(lambda route: ({key: val} if route else {}), routes)\n            routed_args[depth] = ({**f_args, **new_f_args}, {**g_args, **new_g_args})\n    return routed_args\n\n\n# classes\nclass SequentialSequence(nn.Module):\n    def __init__(self, layers, args_route = {}, layer_dropout = 0.):\n        super().__init__()\n        assert all(len(route) == len(layers) for route in args_route.values()), 'each argument route map must have the same depth as the number of sequential layers'\n        self.layers = layers\n        self.args_route = args_route\n        self.layer_dropout = layer_dropout\n\n    def forward(self, x, **kwargs):\n        args = route_args(self.args_route, kwargs, len(self.layers))\n        layers_and_args = list(zip(self.layers, args))\n\n        for (f, g), (f_args, g_args) in layers_and_args:\n            x = x + f(x, **f_args)\n            x = x + g(x, **g_args)\n        return x\n\n\nclass DivideMax(nn.Module):\n    def __init__(self, dim):\n        super().__init__()\n        self.dim = dim\n\n    def forward(self, x):\n        maxes = x.amax(dim = self.dim, keepdim = True).detach()\n        return x / maxes\n\n\n# https://arxiv.org/abs/2103.17239\nclass LayerScale(nn.Module):\n    def __init__(self, dim, depth, fn):\n        super().__init__()\n        if depth <= 18:\n            init_eps = 0.1\n        elif depth > 18 and depth <= 24:\n            init_eps = 1e-5\n        else:\n            init_eps = 1e-6\n\n        scale = torch.zeros(1, 1, dim).fill_(init_eps)\n        self.scale = nn.Parameter(scale)\n        self.fn = fn\n    def forward(self, x, **kwargs):\n        return self.fn(x, **kwargs) * self.scale\n\n# layer norm\n\n\nclass PreNorm(nn.Module):\n    def __init__(self, dim, fn, sandwich = False):\n        super().__init__()\n        self.norm = nn.LayerNorm(dim)\n        self.norm_out = nn.LayerNorm(dim) if sandwich else nn.Identity()\n        self.fn = fn\n\n    def forward(self, x, **kwargs):\n        x = self.norm(x)\n        x = self.fn(x, **kwargs)\n        return self.norm_out(x)\n\n# feed forward\n\n\nclass GEGLU(nn.Module):\n    def forward(self, x):\n        x, gates = x.chunk(2, dim = -1)\n        return x * F.gelu(gates)\n\n\nclass FeedForward(nn.Module):\n    def __init__(self, dim, dropout = 0., mult = 4.):\n        super().__init__()\n        self.net = nn.Sequential(\n            nn.Linear(dim, dim * mult * 2),\n            GEGLU(),\n            nn.Dropout(dropout),\n            nn.Linear(dim * mult, dim)\n        )\n\n    def forward(self, x):\n        return self.net(x)\n\n# Attention\n\n\nclass Attention(nn.Module):\n    def __init__(self, dim, seq_len, causal = True, heads = 8, dim_head = 64, dropout = 0.):\n        super().__init__()\n        inner_dim = dim_head *  heads\n        self.heads = heads\n        self.seq_len = seq_len\n        self.scale = dim_head ** -0.5\n\n        self.causal = causal\n\n        self.to_qkv = nn.Linear(dim, inner_dim * 3, bias = False)\n        self.to_out = nn.Sequential(\n            nn.Linear(inner_dim, dim),\n            nn.Dropout(dropout)\n        )\n\n    def forward(self, x, mask = None):\n        b, n, _, h, device = *x.shape, self.heads, x.device\n        softmax = torch.softmax\n\n        qkv = self.to_qkv(x).chunk(3, dim = -1)\n        q, k, v = map(lambda t: rearrange(t, 'b n (h d) -> b h n d', h = h), qkv)\n\n        q = q * self.scale\n\n        dots = torch.einsum('b h i d, b h j d -> b h i j', q, k)\n        mask_value = max_neg_value(dots)\n\n        if exists(mask):\n            mask = rearrange(mask, 'b j -> b () () j')\n            dots.masked_fill_(~mask, mask_value)\n            del mask\n\n        if self.causal:\n            i, j = dots.shape[-2:]\n            mask = torch.ones(i, j, device = device).triu_(j - i + 1).bool()\n            dots.masked_fill_(mask, mask_value)\n\n        attn = softmax(dots, dim=-1)\n\n        out = torch.einsum('b h i j, b h j d -> b h i d', attn, v)\n        out = rearrange(out, 'b h n d -> b n (h d)')\n        out = self.to_out(out)\n        return out\n\n\n# main transformer class\nclass Transformer(nn.Module):\n    def __init__(\n        self,\n        *,\n        dim,\n        depth,\n        seq_len,\n        causal = True,\n        heads = 8,\n        dim_head = 64,\n        ff_mult = 4,\n        attn_dropout = 0.,\n        ff_dropout = 0.,\n        sparse_attn = False,\n        sandwich_norm = False,\n    ):\n        super().__init__()\n        layers = nn.ModuleList([])\n        sparse_layer = cast_tuple(sparse_attn, depth)\n\n        for ind, sparse_attn in zip(range(depth), sparse_layer):\n            attn = Attention(dim, causal = causal, seq_len = seq_len, heads = heads, dim_head = dim_head, dropout = attn_dropout)\n\n            ff = FeedForward(dim, mult = ff_mult, dropout = ff_dropout)\n\n            layers.append(nn.ModuleList([\n                LayerScale(dim, ind + 1, PreNorm(dim, attn, sandwich = sandwich_norm)),\n                LayerScale(dim, ind + 1, PreNorm(dim, ff, sandwich = sandwich_norm))\n            ]))\n\n        execute_type = SequentialSequence\n        route_attn = ((True, False),) * depth\n        attn_route_map = {'mask': route_attn}\n\n        self.layers = execute_type(layers, args_route = attn_route_map)\n\n    def forward(self, x, **kwargs):\n        return self.layers(x, **kwargs)\n"
  },
  {
    "path": "tortoise/models/vocoder.py",
    "content": "import torch\nimport torch.nn as nn\nimport torch.nn.functional as F\n\nMAX_WAV_VALUE = 32768.0\n\nclass KernelPredictor(torch.nn.Module):\n    ''' Kernel predictor for the location-variable convolutions'''\n\n    def __init__(\n            self,\n            cond_channels,\n            conv_in_channels,\n            conv_out_channels,\n            conv_layers,\n            conv_kernel_size=3,\n            kpnet_hidden_channels=64,\n            kpnet_conv_size=3,\n            kpnet_dropout=0.0,\n            kpnet_nonlinear_activation=\"LeakyReLU\",\n            kpnet_nonlinear_activation_params={\"negative_slope\": 0.1},\n    ):\n        '''\n        Args:\n            cond_channels (int): number of channel for the conditioning sequence,\n            conv_in_channels (int): number of channel for the input sequence,\n            conv_out_channels (int): number of channel for the output sequence,\n            conv_layers (int): number of layers\n        '''\n        super().__init__()\n\n        self.conv_in_channels = conv_in_channels\n        self.conv_out_channels = conv_out_channels\n        self.conv_kernel_size = conv_kernel_size\n        self.conv_layers = conv_layers\n\n        kpnet_kernel_channels = conv_in_channels * conv_out_channels * conv_kernel_size * conv_layers  # l_w\n        kpnet_bias_channels = conv_out_channels * conv_layers  # l_b\n\n        self.input_conv = nn.Sequential(\n            nn.utils.weight_norm(nn.Conv1d(cond_channels, kpnet_hidden_channels, 5, padding=2, bias=True)),\n            getattr(nn, kpnet_nonlinear_activation)(**kpnet_nonlinear_activation_params),\n        )\n\n        self.residual_convs = nn.ModuleList()\n        padding = (kpnet_conv_size - 1) // 2\n        for _ in range(3):\n            self.residual_convs.append(\n                nn.Sequential(\n                    nn.Dropout(kpnet_dropout),\n                    nn.utils.weight_norm(\n                        nn.Conv1d(kpnet_hidden_channels, kpnet_hidden_channels, kpnet_conv_size, padding=padding,\n                                  bias=True)),\n                    getattr(nn, kpnet_nonlinear_activation)(**kpnet_nonlinear_activation_params),\n                    nn.utils.weight_norm(\n                        nn.Conv1d(kpnet_hidden_channels, kpnet_hidden_channels, kpnet_conv_size, padding=padding,\n                                  bias=True)),\n                    getattr(nn, kpnet_nonlinear_activation)(**kpnet_nonlinear_activation_params),\n                )\n            )\n        self.kernel_conv = nn.utils.weight_norm(\n            nn.Conv1d(kpnet_hidden_channels, kpnet_kernel_channels, kpnet_conv_size, padding=padding, bias=True))\n        self.bias_conv = nn.utils.weight_norm(\n            nn.Conv1d(kpnet_hidden_channels, kpnet_bias_channels, kpnet_conv_size, padding=padding, bias=True))\n\n    def forward(self, c):\n        '''\n        Args:\n            c (Tensor): the conditioning sequence (batch, cond_channels, cond_length)\n        '''\n        batch, _, cond_length = c.shape\n        c = self.input_conv(c)\n        for residual_conv in self.residual_convs:\n            residual_conv.to(c.device)\n            c = c + residual_conv(c)\n        k = self.kernel_conv(c)\n        b = self.bias_conv(c)\n        kernels = k.contiguous().view(\n            batch,\n            self.conv_layers,\n            self.conv_in_channels,\n            self.conv_out_channels,\n            self.conv_kernel_size,\n            cond_length,\n        )\n        bias = b.contiguous().view(\n            batch,\n            self.conv_layers,\n            self.conv_out_channels,\n            cond_length,\n        )\n\n        return kernels, bias\n\n    def remove_weight_norm(self):\n        nn.utils.remove_weight_norm(self.input_conv[0])\n        nn.utils.remove_weight_norm(self.kernel_conv)\n        nn.utils.remove_weight_norm(self.bias_conv)\n        for block in self.residual_convs:\n            nn.utils.remove_weight_norm(block[1])\n            nn.utils.remove_weight_norm(block[3])\n\n\nclass LVCBlock(torch.nn.Module):\n    '''the location-variable convolutions'''\n\n    def __init__(\n            self,\n            in_channels,\n            cond_channels,\n            stride,\n            dilations=[1, 3, 9, 27],\n            lReLU_slope=0.2,\n            conv_kernel_size=3,\n            cond_hop_length=256,\n            kpnet_hidden_channels=64,\n            kpnet_conv_size=3,\n            kpnet_dropout=0.0,\n    ):\n        super().__init__()\n\n        self.cond_hop_length = cond_hop_length\n        self.conv_layers = len(dilations)\n        self.conv_kernel_size = conv_kernel_size\n\n        self.kernel_predictor = KernelPredictor(\n            cond_channels=cond_channels,\n            conv_in_channels=in_channels,\n            conv_out_channels=2 * in_channels,\n            conv_layers=len(dilations),\n            conv_kernel_size=conv_kernel_size,\n            kpnet_hidden_channels=kpnet_hidden_channels,\n            kpnet_conv_size=kpnet_conv_size,\n            kpnet_dropout=kpnet_dropout,\n            kpnet_nonlinear_activation_params={\"negative_slope\": lReLU_slope}\n        )\n\n        self.convt_pre = nn.Sequential(\n            nn.LeakyReLU(lReLU_slope),\n            nn.utils.weight_norm(nn.ConvTranspose1d(in_channels, in_channels, 2 * stride, stride=stride,\n                                                    padding=stride // 2 + stride % 2, output_padding=stride % 2)),\n        )\n\n        self.conv_blocks = nn.ModuleList()\n        for dilation in dilations:\n            self.conv_blocks.append(\n                nn.Sequential(\n                    nn.LeakyReLU(lReLU_slope),\n                    nn.utils.weight_norm(nn.Conv1d(in_channels, in_channels, conv_kernel_size,\n                                                   padding=dilation * (conv_kernel_size - 1) // 2, dilation=dilation)),\n                    nn.LeakyReLU(lReLU_slope),\n                )\n            )\n\n    def forward(self, x, c):\n        ''' forward propagation of the location-variable convolutions.\n        Args:\n            x (Tensor): the input sequence (batch, in_channels, in_length)\n            c (Tensor): the conditioning sequence (batch, cond_channels, cond_length)\n\n        Returns:\n            Tensor: the output sequence (batch, in_channels, in_length)\n        '''\n        _, in_channels, _ = x.shape  # (B, c_g, L')\n\n        x = self.convt_pre(x)  # (B, c_g, stride * L')\n        kernels, bias = self.kernel_predictor(c)\n\n        for i, conv in enumerate(self.conv_blocks):\n            output = conv(x)  # (B, c_g, stride * L')\n\n            k = kernels[:, i, :, :, :, :]  # (B, 2 * c_g, c_g, kernel_size, cond_length)\n            b = bias[:, i, :, :]  # (B, 2 * c_g, cond_length)\n\n            output = self.location_variable_convolution(output, k, b,\n                                                        hop_size=self.cond_hop_length)  # (B, 2 * c_g, stride * L'): LVC\n            x = x + torch.sigmoid(output[:, :in_channels, :]) * torch.tanh(\n                output[:, in_channels:, :])  # (B, c_g, stride * L'): GAU\n\n        return x\n\n    def location_variable_convolution(self, x, kernel, bias, dilation=1, hop_size=256):\n        ''' perform location-variable convolution operation on the input sequence (x) using the local convolution kernl.\n        Time: 414 μs ± 309 ns per loop (mean ± std. dev. of 7 runs, 1000 loops each), test on NVIDIA V100.\n        Args:\n            x (Tensor): the input sequence (batch, in_channels, in_length).\n            kernel (Tensor): the local convolution kernel (batch, in_channel, out_channels, kernel_size, kernel_length)\n            bias (Tensor): the bias for the local convolution (batch, out_channels, kernel_length)\n            dilation (int): the dilation of convolution.\n            hop_size (int): the hop_size of the conditioning sequence.\n        Returns:\n            (Tensor): the output sequence after performing local convolution. (batch, out_channels, in_length).\n        '''\n        batch, _, in_length = x.shape\n        batch, _, out_channels, kernel_size, kernel_length = kernel.shape\n        assert in_length == (kernel_length * hop_size), \"length of (x, kernel) is not matched\"\n\n        padding = dilation * int((kernel_size - 1) / 2)\n        x = F.pad(x, (padding, padding), 'constant', 0)  # (batch, in_channels, in_length + 2*padding)\n        x = x.unfold(2, hop_size + 2 * padding, hop_size)  # (batch, in_channels, kernel_length, hop_size + 2*padding)\n\n        if hop_size < dilation:\n            x = F.pad(x, (0, dilation), 'constant', 0)\n        x = x.unfold(3, dilation,\n                     dilation)  # (batch, in_channels, kernel_length, (hop_size + 2*padding)/dilation, dilation)\n        x = x[:, :, :, :, :hop_size]\n        x = x.transpose(3, 4)  # (batch, in_channels, kernel_length, dilation, (hop_size + 2*padding)/dilation)\n        x = x.unfold(4, kernel_size, 1)  # (batch, in_channels, kernel_length, dilation, _, kernel_size)\n\n        o = torch.einsum('bildsk,biokl->bolsd', x, kernel)\n        o = o.to(memory_format=torch.channels_last_3d)\n        bias = bias.unsqueeze(-1).unsqueeze(-1).to(memory_format=torch.channels_last_3d)\n        o = o + bias\n        o = o.contiguous().view(batch, out_channels, -1)\n\n        return o\n\n    def remove_weight_norm(self):\n        self.kernel_predictor.remove_weight_norm()\n        nn.utils.remove_weight_norm(self.convt_pre[1])\n        for block in self.conv_blocks:\n            nn.utils.remove_weight_norm(block[1])\n\n\nclass UnivNetGenerator(nn.Module):\n    \"\"\"\n    UnivNet Generator\n    \n    Originally from https://github.com/mindslab-ai/univnet/blob/master/model/generator.py.\n    \"\"\"\n\n    def __init__(self, noise_dim=64, channel_size=32, dilations=[1,3,9,27], strides=[8,8,4], lReLU_slope=.2, kpnet_conv_size=3,\n                 # Below are MEL configurations options that this generator requires.\n                 hop_length=256, n_mel_channels=100):\n        super(UnivNetGenerator, self).__init__()\n        self.mel_channel = n_mel_channels\n        self.noise_dim = noise_dim\n        self.hop_length = hop_length\n        channel_size = channel_size\n        kpnet_conv_size = kpnet_conv_size\n\n        self.res_stack = nn.ModuleList()\n        hop_length = 1\n        for stride in strides:\n            hop_length = stride * hop_length\n            self.res_stack.append(\n                LVCBlock(\n                    channel_size,\n                    n_mel_channels,\n                    stride=stride,\n                    dilations=dilations,\n                    lReLU_slope=lReLU_slope,\n                    cond_hop_length=hop_length,\n                    kpnet_conv_size=kpnet_conv_size\n                )\n            )\n\n        self.conv_pre = \\\n            nn.utils.weight_norm(nn.Conv1d(noise_dim, channel_size, 7, padding=3, padding_mode='reflect'))\n\n        self.conv_post = nn.Sequential(\n            nn.LeakyReLU(lReLU_slope),\n            nn.utils.weight_norm(nn.Conv1d(channel_size, 1, 7, padding=3, padding_mode='reflect')),\n            nn.Tanh(),\n        )\n\n    def forward(self, c, z):\n        '''\n        Args:\n            c (Tensor): the conditioning sequence of mel-spectrogram (batch, mel_channels, in_length)\n            z (Tensor): the noise sequence (batch, noise_dim, in_length)\n\n        '''\n        z = self.conv_pre(z)  # (B, c_g, L)\n\n        for res_block in self.res_stack:\n            res_block.to(z.device)\n            z = res_block(z, c)  # (B, c_g, L * s_0 * ... * s_i)\n\n        z = self.conv_post(z)  # (B, 1, L * 256)\n\n        return z\n\n    def eval(self, inference=False):\n        super(UnivNetGenerator, self).eval()\n        # don't remove weight norm while validation in training loop\n        if inference:\n            self.remove_weight_norm()\n\n    def remove_weight_norm(self):\n        nn.utils.remove_weight_norm(self.conv_pre)\n\n        for layer in self.conv_post:\n            if len(layer.state_dict()) != 0:\n                nn.utils.remove_weight_norm(layer)\n\n        for res_block in self.res_stack:\n            res_block.remove_weight_norm()\n\n    def inference(self, c, z=None):\n        # pad input mel with zeros to cut artifact\n        # see https://github.com/seungwonpark/melgan/issues/8\n        zero = torch.full((c.shape[0], self.mel_channel, 10), -11.5129).to(c.device)\n        mel = torch.cat((c, zero), dim=2)\n\n        if z is None:\n            z = torch.randn(c.shape[0], self.noise_dim, mel.size(2)).to(mel.device)\n\n        audio = self.forward(mel, z)\n        audio = audio[:, :, :-(self.hop_length * 10)]\n        audio = audio.clamp(min=-1, max=1)\n        return audio\n\n\nif __name__ == '__main__':\n    model = UnivNetGenerator()\n\n    c = torch.randn(3, 100, 10)\n    z = torch.randn(3, 64, 10)\n    print(c.shape)\n\n    y = model(c, z)\n    print(y.shape)\n    assert y.shape == torch.Size([3, 1, 2560])\n\n    pytorch_total_params = sum(p.numel() for p in model.parameters() if p.requires_grad)\n    print(pytorch_total_params)\n"
  },
  {
    "path": "tortoise/models/xtransformers.py",
    "content": "import math\nfrom collections import namedtuple\nfrom functools import partial\nfrom inspect import isfunction\n\nimport torch\nimport torch.nn.functional as F\nfrom einops import rearrange, repeat\nfrom torch import nn, einsum\n\nDEFAULT_DIM_HEAD = 64\n\nIntermediates = namedtuple('Intermediates', [\n    'pre_softmax_attn',\n    'post_softmax_attn'\n])\n\nLayerIntermediates = namedtuple('Intermediates', [\n    'hiddens',\n    'attn_intermediates',\n    'past_key_values',\n])\n\n\n# helpers\n\ndef exists(val):\n    return val is not None\n\n\ndef default(val, d):\n    if exists(val):\n        return val\n    return d() if isfunction(d) else d\n\n\ndef cast_tuple(val, depth):\n    return val if isinstance(val, tuple) else (val,) * depth\n\n\nclass always():\n    def __init__(self, val):\n        self.val = val\n\n    def __call__(self, *args, **kwargs):\n        return self.val\n\n\nclass not_equals():\n    def __init__(self, val):\n        self.val = val\n\n    def __call__(self, x, *args, **kwargs):\n        return x != self.val\n\n\nclass equals():\n    def __init__(self, val):\n        self.val = val\n\n    def __call__(self, x, *args, **kwargs):\n        return x == self.val\n\n\ndef max_neg_value(tensor):\n    return -torch.finfo(tensor.dtype).max\n\n\ndef l2norm(t):\n    return F.normalize(t, p=2, dim=-1)\n\n\n# init helpers\n\ndef init_zero_(layer):\n    nn.init.constant_(layer.weight, 0.)\n    if exists(layer.bias):\n        nn.init.constant_(layer.bias, 0.)\n\n\n# keyword argument helpers\n\ndef pick_and_pop(keys, d):\n    values = list(map(lambda key: d.pop(key), keys))\n    return dict(zip(keys, values))\n\n\ndef group_dict_by_key(cond, d):\n    return_val = [dict(), dict()]\n    for key in d.keys():\n        match = bool(cond(key))\n        ind = int(not match)\n        return_val[ind][key] = d[key]\n    return (*return_val,)\n\n\ndef string_begins_with(prefix, str):\n    return str.startswith(prefix)\n\n\ndef group_by_key_prefix(prefix, d):\n    return group_dict_by_key(partial(string_begins_with, prefix), d)\n\n\ndef groupby_prefix_and_trim(prefix, d):\n    kwargs_with_prefix, kwargs = group_dict_by_key(partial(string_begins_with, prefix), d)\n    kwargs_without_prefix = dict(map(lambda x: (x[0][len(prefix):], x[1]), tuple(kwargs_with_prefix.items())))\n    return kwargs_without_prefix, kwargs\n\n\n# activations\n\nclass ReluSquared(nn.Module):\n    def forward(self, x):\n        return F.relu(x) ** 2\n\n\n# positional embeddings\n\nclass AbsolutePositionalEmbedding(nn.Module):\n    def __init__(self, dim, max_seq_len):\n        super().__init__()\n        self.scale = dim ** -0.5\n        self.emb = nn.Embedding(max_seq_len, dim)\n\n    def forward(self, x):\n        n = torch.arange(x.shape[1], device=x.device)\n        pos_emb = self.emb(n)\n        pos_emb = rearrange(pos_emb, 'n d -> () n d')\n        return pos_emb * self.scale\n\n\nclass FixedPositionalEmbedding(nn.Module):\n    def __init__(self, dim):\n        super().__init__()\n        inv_freq = 1. / (10000 ** (torch.arange(0, dim, 2).float() / dim))\n        self.register_buffer('inv_freq', inv_freq)\n\n    def forward(self, x, seq_dim=1, offset=0):\n        t = torch.arange(x.shape[seq_dim], device=x.device).type_as(self.inv_freq) + offset\n        sinusoid_inp = torch.einsum('i , j -> i j', t, self.inv_freq)\n        emb = torch.cat((sinusoid_inp.sin(), sinusoid_inp.cos()), dim=-1)\n        return rearrange(emb, 'n d -> () n d')\n\n\nclass RelativePositionBias(nn.Module):\n    def __init__(self, scale, causal=False, num_buckets=32, max_distance=128, heads=8):\n        super().__init__()\n        self.scale = scale\n        self.causal = causal\n        self.num_buckets = num_buckets\n        self.max_distance = max_distance\n        self.relative_attention_bias = nn.Embedding(num_buckets, heads)\n\n    @staticmethod\n    def _relative_position_bucket(relative_position, causal=True, num_buckets=32, max_distance=128):\n        ret = 0\n        n = -relative_position\n        if not causal:\n            num_buckets //= 2\n            ret += (n < 0).long() * num_buckets\n            n = torch.abs(n)\n        else:\n            n = torch.max(n, torch.zeros_like(n))\n\n        max_exact = num_buckets // 2\n        is_small = n < max_exact\n\n        val_if_large = max_exact + (\n                torch.log(n.float() / max_exact) / math.log(max_distance / max_exact) * (num_buckets - max_exact)\n        ).long()\n        val_if_large = torch.min(val_if_large, torch.full_like(val_if_large, num_buckets - 1))\n\n        ret += torch.where(is_small, n, val_if_large)\n        return ret\n\n    def forward(self, qk_dots):\n        i, j, device = *qk_dots.shape[-2:], qk_dots.device\n        q_pos = torch.arange(i, dtype=torch.long, device=device)\n        k_pos = torch.arange(j, dtype=torch.long, device=device)\n        rel_pos = k_pos[None, :] - q_pos[:, None]\n        rp_bucket = self._relative_position_bucket(rel_pos, causal=self.causal, num_buckets=self.num_buckets,\n                                                   max_distance=self.max_distance)\n        values = self.relative_attention_bias(rp_bucket)\n        bias = rearrange(values, 'i j h -> () h i j')\n        return qk_dots + (bias * self.scale)\n\n\nclass AlibiPositionalBias(nn.Module):\n    def __init__(self, heads, **kwargs):\n        super().__init__()\n        self.heads = heads\n        slopes = torch.Tensor(self._get_slopes(heads))\n        slopes = rearrange(slopes, 'h -> () h () ()')\n        self.register_buffer('slopes', slopes, persistent=False)\n        self.register_buffer('bias', None, persistent=False)\n\n    @staticmethod\n    def _get_slopes(heads):\n        def get_slopes_power_of_2(n):\n            start = (2 ** (-2 ** -(math.log2(n) - 3)))\n            ratio = start\n            return [start * ratio ** i for i in range(n)]\n\n        if math.log2(heads).is_integer():\n            return get_slopes_power_of_2(heads)\n\n        closest_power_of_2 = 2 ** math.floor(math.log2(heads))\n        return get_slopes_power_of_2(closest_power_of_2) + get_slopes_power_of_2(2 * closest_power_of_2)[0::2][\n                                                           :heads - closest_power_of_2]\n\n    def forward(self, qk_dots):\n        h, i, j, device = *qk_dots.shape[-3:], qk_dots.device\n\n        if exists(self.bias) and self.bias.shape[-1] >= j:\n            return qk_dots + self.bias[..., :j]\n\n        bias = torch.arange(j, device=device)\n        bias = rearrange(bias, 'j -> () () () j')\n        bias = bias * self.slopes\n\n        num_heads_unalibied = h - bias.shape[1]\n        bias = F.pad(bias, (0, 0, 0, 0, 0, num_heads_unalibied))\n\n        self.register_buffer('bias', bias, persistent=False)\n        return qk_dots + self.bias\n\n\nclass LearnedAlibiPositionalBias(AlibiPositionalBias):\n    def __init__(self, heads, bidirectional=False):\n        super().__init__(heads)\n        los_slopes = torch.log(self.slopes)\n        self.learned_logslopes = nn.Parameter(los_slopes)\n\n        self.bidirectional = bidirectional\n        if self.bidirectional:\n            self.learned_logslopes_future = nn.Parameter(los_slopes)\n\n    def forward(self, qk_dots):\n        h, i, j, device = *qk_dots.shape[-3:], qk_dots.device\n\n        def get_slopes(param):\n            return F.pad(param.exp(), (0, 0, 0, 0, 0, h - param.shape[1]))\n\n        if exists(self.bias) and self.bias.shape[-1] >= j:\n            bias = self.bias[..., :i, :j]\n        else:\n            i_arange = torch.arange(i, device=device)\n            j_arange = torch.arange(j, device=device)\n            bias = rearrange(j_arange, 'j -> 1 1 1 j') - rearrange(i_arange, 'i -> 1 1 i 1')\n            self.register_buffer('bias', bias, persistent=False)\n\n        if self.bidirectional:\n            past_slopes = get_slopes(self.learned_logslopes)\n            future_slopes = get_slopes(self.learned_logslopes_future)\n            bias = torch.tril(bias * past_slopes) + torch.triu(bias * future_slopes)\n        else:\n            slopes = get_slopes(self.learned_logslopes)\n            bias = bias * slopes\n\n        return qk_dots + bias\n\n\nclass RotaryEmbedding(nn.Module):\n    def __init__(self, dim):\n        super().__init__()\n        inv_freq = 1. / (10000 ** (torch.arange(0, dim, 2).float() / dim))\n        self.register_buffer('inv_freq', inv_freq)\n\n    def forward(self, max_seq_len, device):\n        t = torch.arange(max_seq_len, device=device).type_as(self.inv_freq)\n        freqs = torch.einsum('i , j -> i j', t, self.inv_freq)\n        emb = torch.cat((freqs, freqs), dim=-1)\n        return rearrange(emb, 'n d -> () () n d')\n\n\ndef rotate_half(x):\n    x = rearrange(x, '... (j d) -> ... j d', j=2)\n    x1, x2 = x.unbind(dim=-2)\n    return torch.cat((-x2, x1), dim=-1)\n\n\ndef apply_rotary_pos_emb(t, freqs):\n    seq_len = t.shape[-2]\n    freqs = freqs[:, :, -seq_len:]\n    return (t * freqs.cos()) + (rotate_half(t) * freqs.sin())\n\n\n# norms\n\nclass Scale(nn.Module):\n    def __init__(self, value, fn):\n        super().__init__()\n        self.value = value\n        self.fn = fn\n\n    def forward(self, x, **kwargs):\n        out = self.fn(x, **kwargs)\n        scale_fn = lambda t: t * self.value\n\n        if not isinstance(out, tuple):\n            return scale_fn(out)\n\n        return (scale_fn(out[0]), *out[1:])\n\n\nclass Rezero(nn.Module):\n    def __init__(self, fn):\n        super().__init__()\n        self.fn = fn\n        self.g = nn.Parameter(torch.zeros(1))\n\n    def forward(self, x, **kwargs):\n        out = self.fn(x, **kwargs)\n        rezero_fn = lambda t: t * self.g\n\n        if not isinstance(out, tuple):\n            return rezero_fn(out)\n\n        return (rezero_fn(out[0]), *out[1:])\n\n\nclass ScaleNorm(nn.Module):\n    def __init__(self, dim, eps=1e-5):\n        super().__init__()\n        self.scale = dim ** -0.5\n        self.eps = eps\n        self.g = nn.Parameter(torch.ones(1))\n\n    def forward(self, x):\n        norm = torch.norm(x, dim=-1, keepdim=True) * self.scale\n        return x / norm.clamp(min=self.eps) * self.g\n\n\nclass RMSNorm(nn.Module):\n    def __init__(self, dim, eps=1e-8):\n        super().__init__()\n        self.scale = dim ** -0.5\n        self.eps = eps\n        self.g = nn.Parameter(torch.ones(dim))\n\n    def forward(self, x):\n        norm = torch.norm(x, dim=-1, keepdim=True) * self.scale\n        return x / norm.clamp(min=self.eps) * self.g\n\n\nclass RMSScaleShiftNorm(nn.Module):\n    def __init__(self, dim, eps=1e-8):\n        super().__init__()\n        self.scale = dim ** -0.5\n        self.eps = eps\n        self.g = nn.Parameter(torch.ones(dim))\n        self.scale_shift_process = nn.Linear(dim * 2, dim * 2)\n\n    def forward(self, x, norm_scale_shift_inp):\n        norm = torch.norm(x, dim=-1, keepdim=True) * self.scale\n        norm = x / norm.clamp(min=self.eps) * self.g\n\n        ss_emb = self.scale_shift_process(norm_scale_shift_inp)\n        scale, shift = torch.chunk(ss_emb, 2, dim=1)\n        h = norm * (1 + scale.unsqueeze(1)) + shift.unsqueeze(1)\n        return h\n\n\n# residual and residual gates\n\nclass Residual(nn.Module):\n    def __init__(self, dim, scale_residual=False):\n        super().__init__()\n        self.residual_scale = nn.Parameter(torch.ones(dim)) if scale_residual else None\n\n    def forward(self, x, residual):\n        if exists(self.residual_scale):\n            residual = residual * self.residual_scale\n\n        return x + residual\n\n\nclass GRUGating(nn.Module):\n    def __init__(self, dim, scale_residual=False):\n        super().__init__()\n        self.gru = nn.GRUCell(dim, dim)\n        self.residual_scale = nn.Parameter(torch.ones(dim)) if scale_residual else None\n\n    def forward(self, x, residual):\n        if exists(self.residual_scale):\n            residual = residual * self.residual_scale\n\n        gated_output = self.gru(\n            rearrange(x, 'b n d -> (b n) d'),\n            rearrange(residual, 'b n d -> (b n) d')\n        )\n\n        return gated_output.reshape_as(x)\n\n\n# token shifting\n\ndef shift(t, amount, mask=None):\n    if amount == 0:\n        return t\n\n    if exists(mask):\n        t = t.masked_fill(~mask[..., None], 0.)\n\n    return F.pad(t, (0, 0, amount, -amount), value=0.)\n\n\nclass ShiftTokens(nn.Module):\n    def __init__(self, shifts, fn):\n        super().__init__()\n        self.fn = fn\n        self.shifts = tuple(shifts)\n\n    def forward(self, x, **kwargs):\n        mask = kwargs.get('mask', None)\n        shifts = self.shifts\n        segments = len(shifts)\n        feats_per_shift = x.shape[-1] // segments\n        splitted = x.split(feats_per_shift, dim=-1)\n        segments_to_shift, rest = splitted[:segments], splitted[segments:]\n        segments_to_shift = list(map(lambda args: shift(*args, mask=mask), zip(segments_to_shift, shifts)))\n        x = torch.cat((*segments_to_shift, *rest), dim=-1)\n        return self.fn(x, **kwargs)\n\n\n# feedforward\n\nclass GLU(nn.Module):\n    def __init__(self, dim_in, dim_out, activation):\n        super().__init__()\n        self.act = activation\n        self.proj = nn.Linear(dim_in, dim_out * 2)\n\n    def forward(self, x):\n        x, gate = self.proj(x).chunk(2, dim=-1)\n        return x * self.act(gate)\n\n\nclass FeedForward(nn.Module):\n    def __init__(\n            self,\n            dim,\n            dim_out=None,\n            mult=4,\n            glu=False,\n            relu_squared=False,\n            post_act_ln=False,\n            dropout=0.,\n            zero_init_output=False\n    ):\n        super().__init__()\n        inner_dim = int(dim * mult)\n        dim_out = default(dim_out, dim)\n        activation = ReluSquared() if relu_squared else nn.GELU()\n\n        project_in = nn.Sequential(\n            nn.Linear(dim, inner_dim),\n            activation\n        ) if not glu else GLU(dim, inner_dim, activation)\n\n        self.net = nn.Sequential(\n            project_in,\n            nn.LayerNorm(inner_dim) if post_act_ln else nn.Identity(),\n            nn.Dropout(dropout),\n            nn.Linear(inner_dim, dim_out)\n        )\n\n        # init last linear layer to 0\n        if zero_init_output:\n            init_zero_(self.net[-1])\n\n    def forward(self, x):\n        return self.net(x)\n\n\n# attention.\n\nclass Attention(nn.Module):\n    def __init__(\n            self,\n            dim,\n            dim_head=DEFAULT_DIM_HEAD,\n            heads=8,\n            causal=False,\n            talking_heads=False,\n            head_scale=False,\n            collab_heads=False,\n            collab_compression=.3,\n            sparse_topk=None,\n            use_entmax15=False,\n            num_mem_kv=0,\n            dropout=0.,\n            on_attn=False,\n            gate_values=False,\n            zero_init_output=False,\n            max_attend_past=None,\n            qk_norm=False,\n            scale_init_value=None,\n            rel_pos_bias=False,\n            rel_pos_num_buckets=32,\n            rel_pos_max_distance=128,\n    ):\n        super().__init__()\n        self.scale = dim_head ** -0.5\n\n        self.heads = heads\n        self.causal = causal\n        self.max_attend_past = max_attend_past\n\n        qk_dim = v_dim = dim_head * heads\n\n        # collaborative heads\n        self.collab_heads = collab_heads\n        if self.collab_heads:\n            qk_dim = int(collab_compression * qk_dim)\n            self.collab_mixing = nn.Parameter(torch.randn(heads, qk_dim))\n\n        self.to_q = nn.Linear(dim, qk_dim, bias=False)\n        self.to_k = nn.Linear(dim, qk_dim, bias=False)\n        self.to_v = nn.Linear(dim, v_dim, bias=False)\n\n        self.dropout = nn.Dropout(dropout)\n\n        # add GLU gating for aggregated values, from alphafold2\n        self.to_v_gate = None\n        if gate_values:\n            self.to_v_gate = nn.Linear(dim, v_dim)\n            nn.init.constant_(self.to_v_gate.weight, 0)\n            nn.init.constant_(self.to_v_gate.bias, 1)\n\n        # cosine sim attention\n        self.qk_norm = qk_norm\n        if qk_norm:\n            scale_init_value = default(scale_init_value,\n                                       -3)  # if not provided, initialize as though it were sequence length of 1024\n            self.scale = nn.Parameter(torch.ones(1, heads, 1, 1) * scale_init_value)\n\n        # talking heads\n        self.talking_heads = talking_heads\n        if talking_heads:\n            self.pre_softmax_proj = nn.Parameter(torch.randn(heads, heads))\n            self.post_softmax_proj = nn.Parameter(torch.randn(heads, heads))\n\n        # head scaling\n        self.head_scale = head_scale\n        if head_scale:\n            self.head_scale_params = nn.Parameter(torch.ones(1, heads, 1, 1))\n\n        # explicit topk sparse attention\n        self.sparse_topk = sparse_topk\n\n        # entmax\n        self.attn_fn = F.softmax\n\n        # add memory key / values\n        self.num_mem_kv = num_mem_kv\n        if num_mem_kv > 0:\n            self.mem_k = nn.Parameter(torch.randn(heads, num_mem_kv, dim_head))\n            self.mem_v = nn.Parameter(torch.randn(heads, num_mem_kv, dim_head))\n\n        # attention on attention\n        self.attn_on_attn = on_attn\n        self.to_out = nn.Sequential(nn.Linear(v_dim, dim * 2), nn.GLU()) if on_attn else nn.Linear(v_dim, dim)\n\n        self.rel_pos_bias = rel_pos_bias\n        if rel_pos_bias:\n            assert rel_pos_num_buckets <= rel_pos_max_distance, 'number of relative position buckets must be less than the relative position max distance'\n            self.rel_pos = RelativePositionBias(scale=dim_head ** 0.5, causal=causal, heads=heads,\n                                                num_buckets=rel_pos_num_buckets, max_distance=rel_pos_max_distance)\n\n        # init output projection 0\n        if zero_init_output:\n            init_zero_(self.to_out)\n\n    def forward(\n            self,\n            x,\n            context=None,\n            mask=None,\n            context_mask=None,\n            attn_mask=None,\n            sinusoidal_emb=None,\n            rotary_pos_emb=None,\n            prev_attn=None,\n            mem=None,\n            layer_past=None,\n    ):\n        b, n, _, h, talking_heads, collab_heads, head_scale, scale, device, has_context = *x.shape, self.heads, self.talking_heads, self.collab_heads, self.head_scale, self.scale, x.device, exists(\n            context)\n        kv_input = default(context, x)\n\n        q_input = x\n        k_input = kv_input\n        v_input = kv_input\n\n        if exists(mem):\n            k_input = torch.cat((mem, k_input), dim=-2)\n            v_input = torch.cat((mem, v_input), dim=-2)\n\n        if exists(sinusoidal_emb):\n            # in shortformer, the query would start at a position offset depending on the past cached memory\n            offset = k_input.shape[-2] - q_input.shape[-2]\n            q_input = q_input + sinusoidal_emb(q_input, offset=offset)\n            k_input = k_input + sinusoidal_emb(k_input)\n\n        q = self.to_q(q_input)\n        k = self.to_k(k_input)\n        v = self.to_v(v_input)\n\n        if not collab_heads:\n            q, k, v = map(lambda t: rearrange(t, 'b n (h d) -> b h n d', h=h), (q, k, v))\n        else:\n            q = einsum('b i d, h d -> b h i d', q, self.collab_mixing)\n            k = rearrange(k, 'b n d -> b () n d')\n            v = rearrange(v, 'b n (h d) -> b h n d', h=h)\n\n        if layer_past is not None:\n            past_key, past_value = layer_past\n            k = torch.cat([past_key, k], dim=-2)\n            v = torch.cat([past_value, v], dim=-2)\n        k_cache = k\n        v_cache = v\n\n        if exists(rotary_pos_emb) and not has_context:\n            l = rotary_pos_emb.shape[-1]\n            (ql, qr), (kl, kr), (vl, vr) = map(lambda t: (t[..., :l], t[..., l:]), (q, k, v))\n            ql, kl, vl = map(lambda t: apply_rotary_pos_emb(t, rotary_pos_emb), (ql, kl, vl))\n            q, k, v = map(lambda t: torch.cat(t, dim=-1), ((ql, qr), (kl, kr), (vl, vr)))\n\n        input_mask = None\n        if any(map(exists, (mask, context_mask))):\n            q_mask = default(mask, lambda: torch.ones((b, n), device=device).bool())\n            k_mask = q_mask if not exists(context) else context_mask\n            k_mask = default(k_mask, lambda: torch.ones((b, k.shape[-2]), device=device).bool())\n            q_mask = rearrange(q_mask, 'b i -> b () i ()')\n            k_mask = rearrange(k_mask, 'b j -> b () () j')\n            input_mask = q_mask * k_mask\n\n        if self.num_mem_kv > 0:\n            mem_k, mem_v = map(lambda t: repeat(t, 'h n d -> b h n d', b=b), (self.mem_k, self.mem_v))\n            k = torch.cat((mem_k, k), dim=-2)\n            v = torch.cat((mem_v, v), dim=-2)\n            if exists(input_mask):\n                input_mask = F.pad(input_mask, (self.num_mem_kv, 0), value=True)\n\n        if collab_heads:\n            k = k.expand(-1, h, -1, -1)\n\n        if self.qk_norm:\n            q, k = map(l2norm, (q, k))\n            scale = 1 / (self.scale.exp().clamp(min=1e-2))\n\n        dots = einsum('b h i d, b h j d -> b h i j', q, k) * scale\n        mask_value = max_neg_value(dots)\n\n        if exists(prev_attn):\n            dots = dots + prev_attn\n\n        pre_softmax_attn = dots.clone()\n\n        if talking_heads:\n            dots = einsum('b h i j, h k -> b k i j', dots, self.pre_softmax_proj).contiguous()\n\n        if self.rel_pos_bias:\n            dots = self.rel_pos(dots)\n\n        if exists(input_mask):\n            dots.masked_fill_(~input_mask, mask_value)\n            del input_mask\n\n        if exists(attn_mask):\n            assert 2 <= attn_mask.ndim <= 4, 'attention mask must have greater than 2 dimensions but less than or equal to 4'\n            if attn_mask.ndim == 2:\n                attn_mask = rearrange(attn_mask, 'i j -> () () i j')\n            elif attn_mask.ndim == 3:\n                attn_mask = rearrange(attn_mask, 'h i j -> () h i j')\n            dots.masked_fill_(~attn_mask, mask_value)\n\n        if exists(self.max_attend_past):\n            i, j = dots.shape[-2:]\n            range_q = torch.arange(j - i, j, device=device)\n            range_k = torch.arange(j, device=device)\n            dist = rearrange(range_q, 'i -> () () i ()') - rearrange(range_k, 'j -> () () () j')\n            mask = dist > self.max_attend_past\n            dots.masked_fill_(mask, mask_value)\n            del mask\n\n        if self.causal:\n            i, j = dots.shape[-2:]\n            r = torch.arange(i, device=device)\n            mask = rearrange(r, 'i -> () () i ()') < rearrange(r, 'j -> () () () j')\n            mask = F.pad(mask, (j - i, 0), value=False)\n            dots.masked_fill_(mask, mask_value)\n            del mask\n\n        if exists(self.sparse_topk) and self.sparse_topk < dots.shape[-1]:\n            top, _ = dots.topk(self.sparse_topk, dim=-1)\n            vk = top[..., -1].unsqueeze(-1).expand_as(dots)\n            mask = dots < vk\n            dots.masked_fill_(mask, mask_value)\n            del mask\n\n        attn = self.attn_fn(dots, dim=-1)\n        post_softmax_attn = attn.clone()\n\n        attn = self.dropout(attn)\n\n        if talking_heads:\n            attn = einsum('b h i j, h k -> b k i j', attn, self.post_softmax_proj).contiguous()\n\n        out = einsum('b h i j, b h j d -> b h i d', attn, v)\n\n        if head_scale:\n            out = out * self.head_scale_params\n\n        out = rearrange(out, 'b h n d -> b n (h d)')\n\n        if exists(self.to_v_gate):\n            gates = self.to_v_gate(x)\n            out = out * gates.sigmoid()\n\n        intermediates = Intermediates(\n            pre_softmax_attn=pre_softmax_attn,\n            post_softmax_attn=post_softmax_attn\n        )\n\n        return self.to_out(out), intermediates, k_cache, v_cache\n\n\nclass AttentionLayers(nn.Module):\n    def __init__(\n            self,\n            dim,\n            depth,\n            heads=8,\n            causal=False,\n            cross_attend=False,\n            only_cross=False,\n            use_scalenorm=False,\n            use_rms_scaleshift_norm=False,\n            use_rmsnorm=False,\n            use_rezero=False,\n            alibi_pos_bias=False,\n            alibi_num_heads=None,\n            alibi_learned=False,\n            position_infused_attn=False,\n            rotary_pos_emb=False,\n            rotary_emb_dim=None,\n            custom_layers=None,\n            sandwich_coef=None,\n            par_ratio=None,\n            residual_attn=False,\n            cross_residual_attn=False,\n            macaron=False,\n            pre_norm=True,\n            gate_residual=False,\n            scale_residual=False,\n            shift_tokens=0,\n            sandwich_norm=False,\n            use_qk_norm_attn=False,\n            qk_norm_attn_seq_len=None,\n            zero_init_branch_output=False,\n            **kwargs\n    ):\n        super().__init__()\n        ff_kwargs, kwargs = groupby_prefix_and_trim('ff_', kwargs)\n        attn_kwargs, _ = groupby_prefix_and_trim('attn_', kwargs)\n\n        dim_head = attn_kwargs.get('dim_head', DEFAULT_DIM_HEAD)\n\n        self.dim = dim\n        self.depth = depth\n        self.layers = nn.ModuleList([])\n        self.causal = causal\n\n        rel_pos_bias = 'rel_pos_bias' in attn_kwargs\n        self.has_pos_emb = position_infused_attn or rel_pos_bias or rotary_pos_emb\n        self.pia_pos_emb = FixedPositionalEmbedding(dim) if position_infused_attn else None\n\n        rotary_emb_dim = max(default(rotary_emb_dim, dim_head // 2), 32)\n        self.rotary_pos_emb = RotaryEmbedding(rotary_emb_dim) if rotary_pos_emb else None\n\n        assert not (\n                    alibi_pos_bias and rel_pos_bias), 'you can only choose Alibi positional bias or T5 relative positional bias, not both'\n\n        if alibi_pos_bias:\n            alibi_num_heads = default(alibi_num_heads, heads)\n            assert alibi_num_heads <= heads, 'number of ALiBi heads must be less than the total number of heads'\n            alibi_pos_klass = LearnedAlibiPositionalBias if alibi_learned or not causal else AlibiPositionalBias\n            self.rel_pos = alibi_pos_klass(heads=alibi_num_heads, bidirectional=not causal)\n        else:\n            self.rel_pos = None\n\n        assert not (not pre_norm and sandwich_norm), 'sandwich norm cannot be used when not using prenorm'\n        self.pre_norm = pre_norm\n        self.sandwich_norm = sandwich_norm\n\n        self.residual_attn = residual_attn\n        self.cross_residual_attn = cross_residual_attn\n        self.cross_attend = cross_attend\n\n        norm_class = ScaleNorm if use_scalenorm else nn.LayerNorm\n        norm_class = RMSNorm if use_rmsnorm else norm_class\n        norm_class = RMSScaleShiftNorm if use_rms_scaleshift_norm else norm_class\n        norm_fn = partial(norm_class, dim)\n\n        norm_fn = nn.Identity if use_rezero else norm_fn\n        branch_fn = Rezero if use_rezero else None\n\n        if cross_attend and not only_cross:\n            default_block = ('a', 'c', 'f')\n        elif cross_attend and only_cross:\n            default_block = ('c', 'f')\n        else:\n            default_block = ('a', 'f')\n\n        if macaron:\n            default_block = ('f',) + default_block\n\n        # qk normalization\n\n        if use_qk_norm_attn:\n            attn_scale_init_value = -math.log(math.log2(qk_norm_attn_seq_len ** 2 - qk_norm_attn_seq_len)) if exists(\n                qk_norm_attn_seq_len) else None\n            attn_kwargs = {**attn_kwargs, 'qk_norm': True, 'scale_init_value': attn_scale_init_value}\n\n        # zero init\n\n        if zero_init_branch_output:\n            attn_kwargs = {**attn_kwargs, 'zero_init_output': True}\n            ff_kwargs = {**ff_kwargs, 'zero_init_output': True}\n\n        # calculate layer block order\n\n        if exists(custom_layers):\n            layer_types = custom_layers\n        elif exists(par_ratio):\n            par_depth = depth * len(default_block)\n            assert 1 < par_ratio <= par_depth, 'par ratio out of range'\n            default_block = tuple(filter(not_equals('f'), default_block))\n            par_attn = par_depth // par_ratio\n            depth_cut = par_depth * 2 // 3  # 2 / 3 attention layer cutoff suggested by PAR paper\n            par_width = (depth_cut + depth_cut // par_attn) // par_attn\n            assert len(default_block) <= par_width, 'default block is too large for par_ratio'\n            par_block = default_block + ('f',) * (par_width - len(default_block))\n            par_head = par_block * par_attn\n            layer_types = par_head + ('f',) * (par_depth - len(par_head))\n        elif exists(sandwich_coef):\n            assert sandwich_coef > 0 and sandwich_coef <= depth, 'sandwich coefficient should be less than the depth'\n            layer_types = ('a',) * sandwich_coef + default_block * (depth - sandwich_coef) + ('f',) * sandwich_coef\n        else:\n            layer_types = default_block * depth\n\n        self.layer_types = layer_types\n        self.num_attn_layers = len(list(filter(equals('a'), layer_types)))\n\n        # calculate token shifting\n\n        shift_tokens = cast_tuple(shift_tokens, len(layer_types))\n\n        # iterate and construct layers\n\n        for ind, (layer_type, layer_shift_tokens) in enumerate(zip(self.layer_types, shift_tokens)):\n            is_last_layer = ind == (len(self.layer_types) - 1)\n\n            if layer_type == 'a':\n                layer = Attention(dim, heads=heads, causal=causal, **attn_kwargs)\n            elif layer_type == 'c':\n                layer = Attention(dim, heads=heads, **attn_kwargs)\n            elif layer_type == 'f':\n                layer = FeedForward(dim, **ff_kwargs)\n                layer = layer if not macaron else Scale(0.5, layer)\n            else:\n                raise Exception(f'invalid layer type {layer_type}')\n\n            if layer_shift_tokens > 0:\n                shift_range_upper = layer_shift_tokens + 1\n                shift_range_lower = -layer_shift_tokens if not causal else 0\n                layer = ShiftTokens(range(shift_range_lower, shift_range_upper), layer)\n\n            if exists(branch_fn):\n                layer = branch_fn(layer)\n\n            residual_fn = GRUGating if gate_residual else Residual\n            residual = residual_fn(dim, scale_residual=scale_residual)\n\n            layer_uses_qk_norm = use_qk_norm_attn and layer_type in ('a', 'c')\n\n            pre_branch_norm = norm_fn() if pre_norm and not layer_uses_qk_norm else None\n            post_branch_norm = norm_fn() if sandwich_norm or layer_uses_qk_norm else None\n            post_main_norm = norm_fn() if not pre_norm and not is_last_layer else None\n\n            norms = nn.ModuleList([\n                pre_branch_norm,\n                post_branch_norm,\n                post_main_norm\n            ])\n\n            self.layers.append(nn.ModuleList([\n                norms,\n                layer,\n                residual\n            ]))\n\n    def forward(\n            self,\n            x,\n            context=None,\n            full_context=None,  # for passing a list of hidden states from an encoder\n            mask=None,\n            context_mask=None,\n            attn_mask=None,\n            mems=None,\n            return_hiddens=False,\n            norm_scale_shift_inp=None,\n            past_key_values=None,\n            expected_seq_len=None,\n    ):\n\n        assert not (self.cross_attend ^ (exists(context) or exists(\n            full_context))), 'context must be passed in if cross_attend is set to True'\n        assert context is None or full_context is None, 'only one of full_context or context can be provided'\n\n        hiddens = []\n        intermediates = []\n        prev_attn = None\n        prev_cross_attn = None\n\n        mems = mems.copy() if exists(mems) else [None] * self.num_attn_layers\n        norm_args = {}\n        if exists(norm_scale_shift_inp):\n            norm_args['norm_scale_shift_inp'] = norm_scale_shift_inp\n\n        rotary_pos_emb = None\n        if exists(self.rotary_pos_emb):\n            if not self.training and self.causal:\n                assert expected_seq_len is not None, \"To decode a transformer with rotary embeddings, you must specify an `expected_seq_len`\"\n            elif expected_seq_len is None:\n                expected_seq_len = 0\n            seq_len = x.shape[1]\n            if past_key_values is not None:\n                seq_len += past_key_values[0][0].shape[-2]\n            max_rotary_emb_length = max(list(map(lambda m: (m.shape[1] if exists(m) else 0) + seq_len, mems)) + [expected_seq_len])\n            rotary_pos_emb = self.rotary_pos_emb(max_rotary_emb_length, x.device)\n\n        present_key_values = []\n        cross_attn_count = 0\n        for ind, (layer_type, (norm, block, residual_fn)) in enumerate(zip(self.layer_types, self.layers)):\n            if layer_type == 'a':\n                layer_mem = mems.pop(0) if mems else None\n\n            residual = x\n\n            pre_branch_norm, post_branch_norm, post_main_norm = norm\n\n            if exists(pre_branch_norm):\n                x = pre_branch_norm(x, **norm_args)\n\n            if layer_type == 'a' or layer_type == 'c':\n                if past_key_values is not None:\n                    layer_kv = past_key_values.pop(0)\n                    layer_past = tuple(s.to(x.device) for s in layer_kv)\n                else:\n                    layer_past = None\n\n            if layer_type == 'a':\n                out, inter, k, v = block(x, None, mask, None, attn_mask, self.pia_pos_emb, rotary_pos_emb,\n                                        prev_attn, layer_mem, layer_past)\n            elif layer_type == 'c':\n                if exists(full_context):\n                    out, inter, k, v = block(x, full_context[cross_attn_count], mask, context_mask, None, None,\n                                            None, prev_attn, None, layer_past)\n                else:\n                    out, inter, k, v = block(x, context, mask, context_mask, None, None, None, prev_attn, None, layer_past)\n            elif layer_type == 'f':\n                out = block(x)\n\n            if layer_type == 'a' or layer_type == 'c' and present_key_values is not None:\n                present_key_values.append((k.detach(), v.detach()))\n\n            if exists(post_branch_norm):\n                out = post_branch_norm(out, **norm_args)\n\n            x = residual_fn(out, residual)\n\n            if layer_type in ('a', 'c'):\n                intermediates.append(inter)\n\n            if layer_type == 'a' and self.residual_attn:\n                prev_attn = inter.pre_softmax_attn\n            elif layer_type == 'c' and self.cross_residual_attn:\n                prev_cross_attn = inter.pre_softmax_attn\n\n            if exists(post_main_norm):\n                x = post_main_norm(x, **norm_args)\n\n            if layer_type == 'c':\n                cross_attn_count += 1\n\n            if layer_type == 'f':\n                hiddens.append(x)\n\n        if return_hiddens:\n            intermediates = LayerIntermediates(\n                hiddens=hiddens,\n                attn_intermediates=intermediates,\n                past_key_values=present_key_values\n            )\n\n            return x, intermediates\n\n        return x\n\n\nclass Encoder(AttentionLayers):\n    def __init__(self, **kwargs):\n        assert 'causal' not in kwargs, 'cannot set causality on encoder'\n        super().__init__(causal=False, **kwargs)\n\n\nclass Decoder(AttentionLayers):\n    def __init__(self, **kwargs):\n        assert 'causal' not in kwargs, 'cannot set causality on decoder'\n        super().__init__(causal=True, **kwargs)\n\n\nclass CrossAttender(AttentionLayers):\n    def __init__(self, **kwargs):\n        super().__init__(cross_attend=True, only_cross=True, **kwargs)\n\n\nclass ViTransformerWrapper(nn.Module):\n    def __init__(\n            self,\n            *,\n            image_size,\n            patch_size,\n            attn_layers,\n            num_classes=None,\n            dropout=0.,\n            emb_dropout=0.\n    ):\n        super().__init__()\n        assert isinstance(attn_layers, Encoder), 'attention layers must be an Encoder'\n        assert image_size % patch_size == 0, 'image dimensions must be divisible by the patch size'\n        dim = attn_layers.dim\n        num_patches = (image_size // patch_size) ** 2\n        patch_dim = 3 * patch_size ** 2\n\n        self.patch_size = patch_size\n\n        self.pos_embedding = nn.Parameter(torch.randn(1, num_patches + 1, dim))\n        self.patch_to_embedding = nn.Linear(patch_dim, dim)\n        self.cls_token = nn.Parameter(torch.randn(1, 1, dim))\n        self.dropout = nn.Dropout(emb_dropout)\n\n        self.attn_layers = attn_layers\n        self.norm = nn.LayerNorm(dim)\n        self.mlp_head = FeedForward(dim, dim_out=num_classes, dropout=dropout) if exists(num_classes) else None\n\n    def forward(\n            self,\n            img,\n            return_embeddings=False\n    ):\n        p = self.patch_size\n\n        x = rearrange(img, 'b c (h p1) (w p2) -> b (h w) (p1 p2 c)', p1=p, p2=p)\n        x = self.patch_to_embedding(x)\n        b, n, _ = x.shape\n\n        cls_tokens = repeat(self.cls_token, '() n d -> b n d', b=b)\n        x = torch.cat((cls_tokens, x), dim=1)\n        x = x + self.pos_embedding[:, :(n + 1)]\n        x = self.dropout(x)\n\n        x = self.attn_layers(x)\n        x = self.norm(x)\n\n        if not exists(self.mlp_head) or return_embeddings:\n            return x\n\n        return self.mlp_head(x[:, 0])\n\n\nclass TransformerWrapper(nn.Module):\n    def __init__(\n            self,\n            *,\n            num_tokens,\n            max_seq_len,\n            attn_layers,\n            emb_dim=None,\n            max_mem_len=0.,\n            shift_mem_down=0,\n            emb_dropout=0.,\n            num_memory_tokens=None,\n            tie_embedding=False,\n            use_pos_emb=True\n    ):\n        super().__init__()\n        assert isinstance(attn_layers, AttentionLayers), 'attention layers must be one of Encoder or Decoder'\n\n        dim = attn_layers.dim\n        emb_dim = default(emb_dim, dim)\n\n        self.max_seq_len = max_seq_len\n        self.max_mem_len = max_mem_len\n        self.shift_mem_down = shift_mem_down\n\n        self.token_emb = nn.Embedding(num_tokens, emb_dim)\n        self.pos_emb = AbsolutePositionalEmbedding(emb_dim, max_seq_len) if (\n                    use_pos_emb and not attn_layers.has_pos_emb) else always(0)\n        self.emb_dropout = nn.Dropout(emb_dropout)\n\n        self.project_emb = nn.Linear(emb_dim, dim) if emb_dim != dim else nn.Identity()\n        self.attn_layers = attn_layers\n        self.norm = nn.LayerNorm(dim)\n\n        self.init_()\n\n        self.to_logits = nn.Linear(dim, num_tokens) if not tie_embedding else lambda t: t @ self.token_emb.weight.t()\n\n        # memory tokens (like [cls]) from Memory Transformers paper\n        num_memory_tokens = default(num_memory_tokens, 0)\n        self.num_memory_tokens = num_memory_tokens\n        if num_memory_tokens > 0:\n            self.memory_tokens = nn.Parameter(torch.randn(num_memory_tokens, dim))\n\n    def init_(self):\n        nn.init.kaiming_normal_(self.token_emb.weight)\n\n    def forward(\n            self,\n            x,\n            return_embeddings=False,\n            mask=None,\n            return_hiddens=False,\n            return_attn=False,\n            mems=None,\n            use_cache=False,\n            **kwargs\n    ):\n        b, n, device, num_mem = *x.shape, x.device, self.num_memory_tokens\n        x = self.token_emb(x)\n        x = x + self.pos_emb(x)\n        x = self.emb_dropout(x)\n\n        x = self.project_emb(x)\n\n        if num_mem > 0:\n            mem = repeat(self.memory_tokens, 'n d -> b n d', b=b)\n            x = torch.cat((mem, x), dim=1)\n\n            # auto-handle masking after appending memory tokens\n            if exists(mask):\n                mask = F.pad(mask, (num_mem, 0), value=True)\n\n        if self.shift_mem_down and exists(mems):\n            mems_l, mems_r = mems[:self.shift_mem_down], mems[self.shift_mem_down:]\n            mems = [*mems_r, *mems_l]\n\n        x, intermediates = self.attn_layers(x, mask=mask, mems=mems, return_hiddens=True, **kwargs)\n        x = self.norm(x)\n\n        mem, x = x[:, :num_mem], x[:, num_mem:]\n\n        out = self.to_logits(x) if not return_embeddings else x\n\n        if return_hiddens:\n            hiddens = intermediates.hiddens\n            return out, hiddens\n\n        res = [out]\n        if return_attn:\n            attn_maps = list(map(lambda t: t.post_softmax_attn, intermediates.attn_intermediates))\n            res.append(attn_maps)\n        if use_cache:\n            res.append(intermediates.past_key_values)\n\n        if len(res) > 1:\n            return tuple(res)\n        return res[0]\n\n\nclass ContinuousTransformerWrapper(nn.Module):\n    def __init__(\n            self,\n            *,\n            max_seq_len,\n            attn_layers,\n            dim_in=None,\n            dim_out=None,\n            emb_dim=None,\n            emb_dropout=0.,\n            use_pos_emb=True\n    ):\n        super().__init__()\n        assert isinstance(attn_layers, AttentionLayers), 'attention layers must be one of Encoder or Decoder'\n\n        dim = attn_layers.dim\n\n        self.max_seq_len = max_seq_len\n\n        self.pos_emb = AbsolutePositionalEmbedding(dim, max_seq_len) if (\n                    use_pos_emb and not attn_layers.has_pos_emb) else always(0)\n        self.emb_dropout = nn.Dropout(emb_dropout)\n\n        self.project_in = nn.Linear(dim_in, dim) if exists(dim_in) else nn.Identity()\n\n        self.attn_layers = attn_layers\n        self.norm = nn.LayerNorm(dim)\n\n        self.project_out = nn.Linear(dim, dim_out) if exists(dim_out) else nn.Identity()\n\n    def forward(\n            self,\n            x,\n            return_embeddings=False,\n            mask=None,\n            return_attn=False,\n            mems=None,\n            use_cache=False,\n            **kwargs\n    ):\n        b, n, _, device = *x.shape, x.device\n\n        x = self.project_in(x)\n        x = x + self.pos_emb(x)\n        x = self.emb_dropout(x)\n\n        x, intermediates = self.attn_layers(x, mask=mask, mems=mems, return_hiddens=True, **kwargs)\n        x = self.norm(x)\n\n        out = self.project_out(x) if not return_embeddings else x\n\n        res = [out]\n        if return_attn:\n            attn_maps = list(map(lambda t: t.post_softmax_attn, intermediates.attn_intermediates))\n            res.append(attn_maps)\n        if use_cache:\n            res.append(intermediates.past_key_values)\n\n        if len(res) > 1:\n            return tuple(res)\n        return res[0]\n\n"
  },
  {
    "path": "tortoise/read.py",
    "content": "import argparse\nimport os\nfrom time import time\n\nimport torch\nimport torchaudio\n\nfrom api import TextToSpeech, MODELS_DIR\nfrom utils.audio import load_audio, load_voices\nfrom utils.text import split_and_recombine_text\n\n\nif __name__ == '__main__':\n    parser = argparse.ArgumentParser()\n    parser.add_argument('--textfile', type=str, help='A file containing the text to read.', default=\"tortoise/data/riding_hood.txt\")\n    parser.add_argument('--voice', type=str, help='Selects the voice to use for generation. See options in voices/ directory (and add your own!) '\n                                                 'Use the & character to join two voices together. Use a comma to perform inference on multiple voices.', default='pat')\n    parser.add_argument('--output_path', type=str, help='Where to store outputs.', default='results/longform/')\n    parser.add_argument('--output_name', type=str, help='How to name the output file', default='combined.wav')\n    parser.add_argument('--preset', type=str, help='Which voice preset to use.', default='standard')\n    parser.add_argument('--regenerate', type=str, help='Comma-separated list of clip numbers to re-generate, or nothing.', default=None)\n    parser.add_argument('--candidates', type=int, help='How many output candidates to produce per-voice. Only the first candidate is actually used in the final product, the others can be used manually.', default=1)\n    parser.add_argument('--model_dir', type=str, help='Where to find pretrained model checkpoints. Tortoise automatically downloads these to .models, so this'\n                                                      'should only be specified if you have custom checkpoints.', default=MODELS_DIR)\n    parser.add_argument('--seed', type=int, help='Random seed which can be used to reproduce results.', default=None)\n    parser.add_argument('--produce_debug_state', type=bool, help='Whether or not to produce debug_state.pth, which can aid in reproducing problems. Defaults to true.', default=True)\n    parser.add_argument('--use_deepspeed', type=bool, help='Use deepspeed for speed bump.', default=False)\n    parser.add_argument('--kv_cache', type=bool, help='If you disable this please wait for a long a time to get the output', default=True)\n    parser.add_argument('--half', type=bool, help=\"float16(half) precision inference if True it's faster and take less vram and ram\", default=True)\n\n\n    args = parser.parse_args()\n    if torch.backends.mps.is_available():\n        args.use_deepspeed = False\n    tts = TextToSpeech(models_dir=args.model_dir, use_deepspeed=args.use_deepspeed, kv_cache=args.kv_cache, half=args.half)\n\n    outpath = args.output_path\n    outname = args.output_name\n    selected_voices = args.voice.split(',')\n    regenerate = args.regenerate\n    if regenerate is not None:\n        regenerate = [int(e) for e in regenerate.split(',')]\n\n    # Process text\n    with open(args.textfile, 'r', encoding='utf-8') as f:\n        text = ' '.join([l for l in f.readlines()])\n    if '|' in text:\n        print(\"Found the '|' character in your text, which I will use as a cue for where to split it up. If this was not\"\n              \"your intent, please remove all '|' characters from the input.\")\n        texts = text.split('|')\n    else:\n        texts = split_and_recombine_text(text)\n\n    seed = int(time()) if args.seed is None else args.seed\n    for selected_voice in selected_voices:\n        voice_outpath = os.path.join(outpath, selected_voice)\n        os.makedirs(voice_outpath, exist_ok=True)\n\n        if '&' in selected_voice:\n            voice_sel = selected_voice.split('&')\n        else:\n            voice_sel = [selected_voice]\n\n        voice_samples, conditioning_latents = load_voices(voice_sel)\n        all_parts = []\n        for j, text in enumerate(texts):\n            if regenerate is not None and j not in regenerate:\n                all_parts.append(load_audio(os.path.join(voice_outpath, f'{j}.wav'), 24000))\n                continue\n            gen = tts.tts_with_preset(text, voice_samples=voice_samples, conditioning_latents=conditioning_latents,\n                                      preset=args.preset, k=args.candidates, use_deterministic_seed=seed)\n            if args.candidates == 1:\n                audio_ = gen.squeeze(0).cpu()\n                torchaudio.save(os.path.join(voice_outpath, f'{j}.wav'), audio_, 24000)\n            else:\n                candidate_dir = os.path.join(voice_outpath, str(j))\n                os.makedirs(candidate_dir, exist_ok=True)\n                for k, g in enumerate(gen):\n                    torchaudio.save(os.path.join(candidate_dir, f'{k}.wav'), g.squeeze(0).cpu(), 24000)\n                audio_ = gen[0].squeeze(0).cpu()\n            all_parts.append(audio_)\n\n        if args.candidates == 1:\n            full_audio = torch.cat(all_parts, dim=-1)\n            torchaudio.save(os.path.join(voice_outpath, f\"{outname}.wav\"), full_audio, 24000)\n\n        if args.produce_debug_state:\n            os.makedirs('debug_states', exist_ok=True)\n            dbg_state = (seed, texts, voice_samples, conditioning_latents)\n            torch.save(dbg_state, f'debug_states/read_debug_{selected_voice}.pth')\n\n        # Combine each candidate's audio clips.\n        if args.candidates > 1:\n            audio_clips = []\n            for candidate in range(args.candidates):\n                for line in range(len(texts)):\n                    wav_file = os.path.join(voice_outpath, str(line), f\"{candidate}.wav\")\n                    audio_clips.append(load_audio(wav_file, 24000))\n                audio_clips = torch.cat(audio_clips, dim=-1)\n                torchaudio.save(os.path.join(voice_outpath, f\"{outname}_{candidate:02d}.wav\"), audio_clips, 24000)\n                audio_clips = []\n"
  },
  {
    "path": "tortoise/read_fast.py",
    "content": "import argparse\nimport os\nfrom time import time\n\nimport torch\nimport torchaudio\n\nfrom api_fast import TextToSpeech, MODELS_DIR\nfrom utils.audio import load_audio, load_voices\nfrom utils.text import split_and_recombine_text\n\n\nif __name__ == '__main__':\n    parser = argparse.ArgumentParser()\n    parser.add_argument('--textfile', type=str, help='A file containing the text to read.', default=\"tortoise/data/riding_hood.txt\")\n    parser.add_argument('--voice', type=str, help='Selects the voice to use for generation. See options in voices/ directory (and add your own!) '\n                                                 'Use the & character to join two voices together. Use a comma to perform inference on multiple voices.', default='lj')\n    parser.add_argument('--output_path', type=str, help='Where to store outputs.', default='results/longform/')\n    parser.add_argument('--output_name', type=str, help='How to name the output file', default='combined.wav')\n    parser.add_argument('--preset', type=str, help='Which voice preset to use.', default='standard')\n    parser.add_argument('--regenerate', type=str, help='Comma-separated list of clip numbers to re-generate, or nothing.', default=None)\n    parser.add_argument('--model_dir', type=str, help='Where to find pretrained model checkpoints. Tortoise automatically downloads these to .models, so this'\n                                                      'should only be specified if you have custom checkpoints.', default=MODELS_DIR)\n    parser.add_argument('--seed', type=int, help='Random seed which can be used to reproduce results.', default=None)\n    parser.add_argument('--use_deepspeed', type=bool, help='Use deepspeed for speed bump.', default=False)\n    parser.add_argument('--kv_cache', type=bool, help='If you disable this please wait for a long a time to get the output', default=True)\n    parser.add_argument('--half', type=bool, help=\"float16(half) precision inference if True it's faster and take less vram and ram\", default=True)\n\n\n    args = parser.parse_args()\n    if torch.backends.mps.is_available():\n        args.use_deepspeed = False\n    tts = TextToSpeech(models_dir=args.model_dir, use_deepspeed=args.use_deepspeed, kv_cache=args.kv_cache, half=args.half)\n\n    outpath = args.output_path\n    outname = args.output_name\n    selected_voices = args.voice.split(',')\n    regenerate = args.regenerate\n    if regenerate is not None:\n        regenerate = [int(e) for e in regenerate.split(',')]\n\n    # Process text\n    with open(args.textfile, 'r', encoding='utf-8') as f:\n        text = ' '.join([l for l in f.readlines()])\n    if '|' in text:\n        print(\"Found the '|' character in your text, which I will use as a cue for where to split it up. If this was not\"\n              \"your intent, please remove all '|' characters from the input.\")\n        texts = text.split('|')\n    else:\n        texts = split_and_recombine_text(text)\n\n    seed = int(time()) if args.seed is None else args.seed\n    for selected_voice in selected_voices:\n        voice_outpath = os.path.join(outpath, selected_voice)\n        os.makedirs(voice_outpath, exist_ok=True)\n\n        if '&' in selected_voice:\n            voice_sel = selected_voice.split('&')\n        else:\n            voice_sel = [selected_voice]\n\n        voice_samples, conditioning_latents = load_voices(voice_sel)\n        all_parts = []\n        for j, text in enumerate(texts):\n            if regenerate is not None and j not in regenerate:\n                all_parts.append(load_audio(os.path.join(voice_outpath, f'{j}.wav'), 24000))\n                continue\n            start_time = time()\n            gen = tts.tts(text, voice_samples=voice_samples, use_deterministic_seed=seed)\n            end_time = time()\n            audio_ = gen.squeeze(0).cpu()\n            print(\"Time taken to generate the audio: \", end_time - start_time, \"seconds\")\n            print(\"RTF: \", (end_time - start_time) / (audio_.shape[1] / 24000))\n            torchaudio.save(os.path.join(voice_outpath, f'{j}.wav'), audio_, 24000)\n            all_parts.append(audio_)\n        full_audio = torch.cat(all_parts, dim=-1)\n        torchaudio.save(os.path.join(voice_outpath, f\"{outname}.wav\"), full_audio, 24000)\n"
  },
  {
    "path": "tortoise/socket_client.py",
    "content": "import socket\nimport sounddevice as sd\nimport numpy as np\n\ndef play_audio_stream(client_socket):\n    buffer = b''\n    stream = sd.OutputStream(samplerate=24000, channels=1, dtype='float32')\n    stream.start()\n\n    try:\n        while True:\n            chunk = client_socket.recv(1024)\n            if b\"END_OF_AUDIO\" in chunk:\n                buffer += chunk.replace(b\"END_OF_AUDIO\", b\"\")\n                if buffer:\n                    audio_array = np.frombuffer(buffer, dtype=np.float32)\n                    stream.write(audio_array)\n                break\n\n            buffer += chunk\n            while len(buffer) >= 4096:\n                audio_chunk = buffer[:4096]\n                audio_array = np.frombuffer(audio_chunk, dtype=np.float32)\n                stream.write(audio_array)\n                buffer = buffer[4096:]\n\n    finally:\n        stream.stop()\n        stream.close()\n\ndef send_text_to_server(character_name, text, server_ip='localhost', server_port=5000):\n    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)\n    client_socket.connect((server_ip, server_port))\n\n    try:\n        data = f\"{character_name}|{text}\"\n        client_socket.sendall(data.encode('utf-8'))\n\n        play_audio_stream(client_socket)\n\n        print(\"Audio playback finished.\")\n\n    finally:\n        client_socket.close()\n\n\nif __name__ == \"__main__\":\n    character_name =\"deniro\"\n    text = \"Hello This is just for a live speaking test\"\n    send_text_to_server(character_name, text)\n"
  },
  {
    "path": "tortoise/socket_server.py",
    "content": "import spacy\nimport threading\nimport socket\nfrom tortoise.api_fast import TextToSpeech\nfrom utils.audio import load_voices\n\ntts = TextToSpeech()\nnlp = spacy.load(\"en_core_web_sm\")\n\n\ndef generate_audio_stream(text, tts, voice_samples):\n    print(f\"Generating audio stream...: {text}\")\n    voice_samples, conditioning_latents = load_voices([voice_samples])\n    stream = tts.tts_stream(\n        text,\n        voice_samples=voice_samples,\n        conditioning_latents=conditioning_latents,\n        verbose=True,\n        stream_chunk_size=40  # Adjust chunk size as needed\n    )\n    for audio_chunk in stream:\n        yield audio_chunk\n\n\ndef split_text(text, max_length=200):\n    doc = nlp(text)\n    chunks = []\n    chunk = []\n    length = 0\n\n    for sent in doc.sents:\n        sent_length = len(sent.text)\n        if length + sent_length > max_length:\n            chunks.append(' '.join(chunk))\n            chunk = []\n            length = 0\n        chunk.append(sent.text)\n        length += sent_length + 1\n\n    if chunk:\n        chunks.append(' '.join(chunk))\n\n    return chunks\n\n\ndef handle_client(client_socket, tts):\n    try:\n        while True:\n            data = client_socket.recv(1024).decode('utf-8')\n            if not data:\n                break\n            character_name, text = data.split('|', 1)\n            text_chunks = split_text(text, max_length=200)\n            print(text_chunks)\n            for chunk in text_chunks:\n                audio_stream = generate_audio_stream(chunk, tts, character_name)\n\n                for audio_chunk in audio_stream:\n                    audio_data = audio_chunk.cpu().numpy().flatten()\n                    client_socket.sendall(audio_data.tobytes())\n\n            client_socket.sendall(b\"END_OF_AUDIO\")\n\n    finally:\n        client_socket.close()\n        print(\"Client disconnected.\")\n\n\ndef start_server():\n    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)\n    server.bind(('0.0.0.0', 5000))\n    server.listen(5)\n    print(\"Server listening on port 5000\")\n\n    while True:\n        client_socket, addr = server.accept()\n        print(f\"Accepted connection from {addr}\")\n        client_handler = threading.Thread(target=handle_client, args=(client_socket, tts))\n        client_handler.start()\n\n\nif __name__ == \"__main__\":\n    start_server()\n"
  },
  {
    "path": "tortoise/tts_stream.py",
    "content": "import argparse\nimport os\nfrom time import time\n\nimport torch\nimport torchaudio\n\nfrom api_fast import TextToSpeech, MODELS_DIR\nfrom utils.audio import load_audio, load_voices\nfrom utils.text import split_and_recombine_text\nimport sounddevice as sd\nimport queue\nimport threading\ndef play_audio(audio_queue):\n    while True:\n        chunk = audio_queue.get()\n        if chunk is None:\n            break\n        sd.play(chunk.cpu().numpy(), samplerate=24000)\n        sd.wait()\n\nif __name__ == '__main__':\n    parser = argparse.ArgumentParser()\n    parser.add_argument('--textfile', type=str, help='A file containing the text to read.', default=\"tortoise/data/riding_hood.txt\")\n    parser.add_argument('--voice', type=str, help='Selects the voice to use for generation. See options in voices/ directory (and add your own!) '\n                                                 'Use the & character to join two voices together. Use a comma to perform inference on multiple voices.', default='lj')\n    parser.add_argument('--output_path', type=str, help='Where to store outputs.', default='results/longform/')\n    parser.add_argument('--output_name', type=str, help='How to name the output file', default='combined.wav')\n    parser.add_argument('--preset', type=str, help='Which voice preset to use.', default='standard')\n    parser.add_argument('--regenerate', type=str, help='Comma-separated list of clip numbers to re-generate, or nothing.', default=None)\n    parser.add_argument('--model_dir', type=str, help='Where to find pretrained model checkpoints. Tortoise automatically downloads these to .models, so this'\n                                                      'should only be specified if you have custom checkpoints.', default=MODELS_DIR)\n    parser.add_argument('--seed', type=int, help='Random seed which can be used to reproduce results.', default=None)\n    parser.add_argument('--use_deepspeed', type=bool, help='Use deepspeed for speed bump.', default=False)\n    parser.add_argument('--kv_cache', type=bool, help='If you disable this please wait for a long a time to get the output', default=True)\n    parser.add_argument('--half', type=bool, help=\"float16(half) precision inference if True it's faster and take less vram and ram\", default=True)\n\n\n    args = parser.parse_args()\n    if torch.backends.mps.is_available():\n        args.use_deepspeed = False\n    tts = TextToSpeech(models_dir=args.model_dir, use_deepspeed=args.use_deepspeed, kv_cache=args.kv_cache, half=args.half)\n\n    outpath = args.output_path\n    outname = args.output_name\n    selected_voices = args.voice.split(',')\n    regenerate = args.regenerate\n    if regenerate is not None:\n        regenerate = [int(e) for e in regenerate.split(',')]\n\n    # Process text\n    with open(args.textfile, 'r', encoding='utf-8') as f:\n        text = ' '.join([l for l in f.readlines()])\n    if '|' in text:\n        print(\"Found the '|' character in your text, which I will use as a cue for where to split it up. If this was not\"\n              \"your intent, please remove all '|' characters from the input.\")\n        texts = text.split('|')\n    else:\n        texts = split_and_recombine_text(text)\n    audio_queue = queue.Queue()\n    playback_thread = threading.Thread(target=play_audio, args=(audio_queue,))\n    playback_thread.start()\n    \n    seed = int(time()) if args.seed is None else args.seed\n    for selected_voice in selected_voices:\n        voice_outpath = os.path.join(outpath, selected_voice)\n        os.makedirs(voice_outpath, exist_ok=True)\n\n        if '&' in selected_voice:\n            voice_sel = selected_voice.split('&')\n        else:\n            voice_sel = [selected_voice]\n\n        voice_samples, conditioning_latents = load_voices(voice_sel)\n        all_parts = []\n        for j, text in enumerate(texts):\n            if regenerate is not None and j not in regenerate:\n                all_parts.append(load_audio(os.path.join(voice_outpath, f'{j}.wav'), 24000))\n                continue\n            start_time = time()\n            audio_generator = tts.tts_stream(text, voice_samples=voice_samples, use_deterministic_seed=seed)\n            for wav_chunk in audio_generator:\n                audio_queue.put(wav_chunk)\n    audio_queue.put(None)\n    playback_thread.join()"
  },
  {
    "path": "tortoise/utils/__init__.py",
    "content": ""
  },
  {
    "path": "tortoise/utils/audio.py",
    "content": "import os\nfrom glob import glob\n\nimport librosa\nimport torch\nimport torchaudio\nimport numpy as np\nfrom scipy.io.wavfile import read\n\nfrom tortoise.utils.stft import STFT\n\n\nBUILTIN_VOICES_DIR = os.path.join(os.path.dirname(os.path.realpath(__file__)), '../voices')\n\n\ndef load_wav_to_torch(full_path):\n    sampling_rate, data = read(full_path)\n    if data.dtype == np.int32:\n        norm_fix = 2 ** 31\n    elif data.dtype == np.int16:\n        norm_fix = 2 ** 15\n    elif data.dtype == np.float16 or data.dtype == np.float32:\n        norm_fix = 1.\n    else:\n        raise NotImplemented(f\"Provided data dtype not supported: {data.dtype}\")\n    return (torch.FloatTensor(data.astype(np.float32)) / norm_fix, sampling_rate)\n\n\ndef load_audio(audiopath, sampling_rate):\n    extension = os.path.splitext(audiopath)[1].casefold()\n    if extension == '.wav':\n        audio, lsr = load_wav_to_torch(audiopath)\n    elif extension == '.mp3':\n        audio, lsr = librosa.load(audiopath, sr=sampling_rate)\n        audio = torch.FloatTensor(audio)\n    else:\n        assert False, f\"Unsupported audio format provided: {audiopath[-4:]}\"\n\n    # Remove any channel data.\n    if len(audio.shape) > 1:\n        if audio.shape[0] < 5:\n            audio = audio[0]\n        else:\n            assert audio.shape[1] < 5\n            audio = audio[:, 0]\n\n    if lsr != sampling_rate:\n        audio = torchaudio.functional.resample(audio, lsr, sampling_rate)\n\n    # Check some assumptions about audio range. This should be automatically fixed in load_wav_to_torch, but might not be in some edge cases, where we should squawk.\n    # '2' is arbitrarily chosen since it seems like audio will often \"overdrive\" the [-1,1] bounds.\n    if torch.any(audio > 2) or not torch.any(audio < 0):\n        print(f\"Error with {audiopath}. Max={audio.max()} min={audio.min()}\")\n    audio.clip_(-1, 1)\n\n    return audio.unsqueeze(0)\n\n\nTACOTRON_MEL_MAX = 2.3143386840820312\nTACOTRON_MEL_MIN = -11.512925148010254\n\n\ndef denormalize_tacotron_mel(norm_mel):\n    return ((norm_mel+1)/2)*(TACOTRON_MEL_MAX-TACOTRON_MEL_MIN)+TACOTRON_MEL_MIN\n\n\ndef normalize_tacotron_mel(mel):\n    return 2 * ((mel - TACOTRON_MEL_MIN) / (TACOTRON_MEL_MAX - TACOTRON_MEL_MIN)) - 1\n\n\ndef dynamic_range_compression(x, C=1, clip_val=1e-5):\n    \"\"\"\n    PARAMS\n    ------\n    C: compression factor\n    \"\"\"\n    return torch.log(torch.clamp(x, min=clip_val) * C)\n\n\ndef dynamic_range_decompression(x, C=1):\n    \"\"\"\n    PARAMS\n    ------\n    C: compression factor used to compress\n    \"\"\"\n    return torch.exp(x) / C\n\n\ndef get_voices(extra_voice_dirs=[]):\n    dirs = [BUILTIN_VOICES_DIR] + extra_voice_dirs\n    voices = {}\n    for d in dirs:\n        subs = os.listdir(d)\n        for sub in subs:\n            subj = os.path.join(d, sub)\n            if os.path.isdir(subj):\n                voices[sub] = list(glob(f'{subj}/*.wav')) + list(glob(f'{subj}/*.mp3')) + list(glob(f'{subj}/*.pth'))\n    return voices\n\ndef save_pth(conds, save_path):\n    torch.save(conds, save_path)\n\n\ndef load_voice(voice, extra_voice_dirs=[]):\n    if voice == 'random':\n        return None, None\n\n    voices = get_voices(extra_voice_dirs)\n    paths = voices[voice]\n    pth_files = [p for p in paths if p.endswith('.pth')]\n    if len(paths) == 1 and paths[0].endswith('.pth'):\n        return None, torch.load(paths[0])\n    else:\n        conds = []\n        for cond_path in paths:\n            if not cond_path.endswith('.pth'):\n                c = load_audio(cond_path, 22050)\n                conds.append(c)\n\n        if not pth_files:\n            pth_save_path = os.path.join(os.path.dirname(paths[0]), f\"{voice}.pth\")\n            save_pth(conds, pth_save_path)\n\n        return conds, None\n\n\ndef load_voices(voices, extra_voice_dirs=[]):\n    latents = []\n    clips = []\n    for voice in voices:\n        if voice == 'random':\n            if len(voices) > 1:\n                print(\"Cannot combine a random voice with a non-random voice. Just using a random voice.\")\n            return None, None\n        clip, latent = load_voice(voice, extra_voice_dirs)\n        if latent is None:\n            assert len(latents) == 0, \"Can only combine raw audio voices or latent voices, not both. Do it yourself if you want this.\"\n            clips.extend(clip)\n        elif clip is None:\n            assert len(clips) == 0, \"Can only combine raw audio voices or latent voices, not both. Do it yourself if you want this.\"\n            latents.append(latent)\n    if len(latents) == 0:\n        return clips, None\n    else:\n        latents_0 = torch.stack([l[0] for l in latents], dim=0).mean(dim=0)\n        latents_1 = torch.stack([l[1] for l in latents], dim=0).mean(dim=0)\n        latents = (latents_0,latents_1)\n        return None, latents\n\n\nclass TacotronSTFT(torch.nn.Module):\n    def __init__(self, filter_length=1024, hop_length=256, win_length=1024,\n                 n_mel_channels=80, sampling_rate=22050, mel_fmin=0.0,\n                 mel_fmax=8000.0):\n        super(TacotronSTFT, self).__init__()\n        self.n_mel_channels = n_mel_channels\n        self.sampling_rate = sampling_rate\n        self.stft_fn = STFT(filter_length, hop_length, win_length)\n        from librosa.filters import mel as librosa_mel_fn\n        mel_basis = librosa_mel_fn(\n            sr=sampling_rate, n_fft=filter_length, n_mels=n_mel_channels, fmin=mel_fmin, fmax=mel_fmax)\n        mel_basis = torch.from_numpy(mel_basis).float()\n        self.register_buffer('mel_basis', mel_basis)\n\n    def spectral_normalize(self, magnitudes):\n        output = dynamic_range_compression(magnitudes)\n        return output\n\n    def spectral_de_normalize(self, magnitudes):\n        output = dynamic_range_decompression(magnitudes)\n        return output\n\n    def mel_spectrogram(self, y):\n        \"\"\"Computes mel-spectrograms from a batch of waves\n        PARAMS\n        ------\n        y: Variable(torch.FloatTensor) with shape (B, T) in range [-1, 1]\n\n        RETURNS\n        -------\n        mel_output: torch.FloatTensor of shape (B, n_mel_channels, T)\n        \"\"\"\n        assert(torch.min(y.data) >= -10)\n        assert(torch.max(y.data) <= 10)\n        y = torch.clip(y, min=-1, max=1)\n\n        magnitudes, phases = self.stft_fn.transform(y)\n        magnitudes = magnitudes.data\n        mel_output = torch.matmul(self.mel_basis, magnitudes)\n        mel_output = self.spectral_normalize(mel_output)\n        return mel_output\n\n\ndef wav_to_univnet_mel(wav, do_normalization=False,\n                       device='cuda' if not torch.backends.mps.is_available() else 'mps',\n                       stft=None):\n    # Don't require stft to be passed, but use it if it is.\n    if stft is None:\n        stft = TacotronSTFT(1024, 256, 1024, 100, 24000, 0, 12000)\n        stft = stft.to(device)\n    mel = stft.mel_spectrogram(wav)\n    if do_normalization:\n        mel = normalize_tacotron_mel(mel)\n    return mel\n"
  },
  {
    "path": "tortoise/utils/diffusion.py",
    "content": "\"\"\"\nThis is an almost carbon copy of gaussian_diffusion.py from OpenAI's ImprovedDiffusion repo, which itself:\n\nThis code started out as a PyTorch port of Ho et al's diffusion models:\nhttps://github.com/hojonathanho/diffusion/blob/1e0dceb3b3495bbe19116a5e1b3596cd0706c543/diffusion_tf/diffusion_utils_2.py\n\nDocstrings have been added, as well as DDIM sampling and a new collection of beta schedules.\n\"\"\"\n\nimport enum\nimport math\n\nimport numpy as np\nimport torch\nimport torch as th\nfrom tqdm import tqdm\n\n\ndef normal_kl(mean1, logvar1, mean2, logvar2):\n    \"\"\"\n    Compute the KL divergence between two gaussians.\n\n    Shapes are automatically broadcasted, so batches can be compared to\n    scalars, among other use cases.\n    \"\"\"\n    tensor = None\n    for obj in (mean1, logvar1, mean2, logvar2):\n        if isinstance(obj, th.Tensor):\n            tensor = obj\n            break\n    assert tensor is not None, \"at least one argument must be a Tensor\"\n\n    # Force variances to be Tensors. Broadcasting helps convert scalars to\n    # Tensors, but it does not work for th.exp().\n    logvar1, logvar2 = [\n        x if isinstance(x, th.Tensor) else th.tensor(x).to(tensor)\n        for x in (logvar1, logvar2)\n    ]\n\n    return 0.5 * (\n        -1.0\n        + logvar2\n        - logvar1\n        + th.exp(logvar1 - logvar2)\n        + ((mean1 - mean2) ** 2) * th.exp(-logvar2)\n    )\n\n\ndef approx_standard_normal_cdf(x):\n    \"\"\"\n    A fast approximation of the cumulative distribution function of the\n    standard normal.\n    \"\"\"\n    return 0.5 * (1.0 + th.tanh(np.sqrt(2.0 / np.pi) * (x + 0.044715 * th.pow(x, 3))))\n\n\ndef discretized_gaussian_log_likelihood(x, *, means, log_scales):\n    \"\"\"\n    Compute the log-likelihood of a Gaussian distribution discretizing to a\n    given image.\n\n    :param x: the target images. It is assumed that this was uint8 values,\n              rescaled to the range [-1, 1].\n    :param means: the Gaussian mean Tensor.\n    :param log_scales: the Gaussian log stddev Tensor.\n    :return: a tensor like x of log probabilities (in nats).\n    \"\"\"\n    assert x.shape == means.shape == log_scales.shape\n    centered_x = x - means\n    inv_stdv = th.exp(-log_scales)\n    plus_in = inv_stdv * (centered_x + 1.0 / 255.0)\n    cdf_plus = approx_standard_normal_cdf(plus_in)\n    min_in = inv_stdv * (centered_x - 1.0 / 255.0)\n    cdf_min = approx_standard_normal_cdf(min_in)\n    log_cdf_plus = th.log(cdf_plus.clamp(min=1e-12))\n    log_one_minus_cdf_min = th.log((1.0 - cdf_min).clamp(min=1e-12))\n    cdf_delta = cdf_plus - cdf_min\n    log_probs = th.where(\n        x < -0.999,\n        log_cdf_plus,\n        th.where(x > 0.999, log_one_minus_cdf_min, th.log(cdf_delta.clamp(min=1e-12))),\n    )\n    assert log_probs.shape == x.shape\n    return log_probs\n\n\ndef mean_flat(tensor):\n    \"\"\"\n    Take the mean over all non-batch dimensions.\n    \"\"\"\n    return tensor.mean(dim=list(range(1, len(tensor.shape))))\n\n\ndef get_named_beta_schedule(schedule_name, num_diffusion_timesteps):\n    \"\"\"\n    Get a pre-defined beta schedule for the given name.\n\n    The beta schedule library consists of beta schedules which remain similar\n    in the limit of num_diffusion_timesteps.\n    Beta schedules may be added, but should not be removed or changed once\n    they are committed to maintain backwards compatibility.\n    \"\"\"\n    if schedule_name == \"linear\":\n        # Linear schedule from Ho et al, extended to work for any number of\n        # diffusion steps.\n        scale = 1000 / num_diffusion_timesteps\n        beta_start = scale * 0.0001\n        beta_end = scale * 0.02\n        return np.linspace(\n            beta_start, beta_end, num_diffusion_timesteps, dtype=np.float64\n        )\n    elif schedule_name == \"cosine\":\n        return betas_for_alpha_bar(\n            num_diffusion_timesteps,\n            lambda t: math.cos((t + 0.008) / 1.008 * math.pi / 2) ** 2,\n        )\n    else:\n        raise NotImplementedError(f\"unknown beta schedule: {schedule_name}\")\n\n\ndef betas_for_alpha_bar(num_diffusion_timesteps, alpha_bar, max_beta=0.999):\n    \"\"\"\n    Create a beta schedule that discretizes the given alpha_t_bar function,\n    which defines the cumulative product of (1-beta) over time from t = [0,1].\n\n    :param num_diffusion_timesteps: the number of betas to produce.\n    :param alpha_bar: a lambda that takes an argument t from 0 to 1 and\n                      produces the cumulative product of (1-beta) up to that\n                      part of the diffusion process.\n    :param max_beta: the maximum beta to use; use values lower than 1 to\n                     prevent singularities.\n    \"\"\"\n    betas = []\n    for i in range(num_diffusion_timesteps):\n        t1 = i / num_diffusion_timesteps\n        t2 = (i + 1) / num_diffusion_timesteps\n        betas.append(min(1 - alpha_bar(t2) / alpha_bar(t1), max_beta))\n    return np.array(betas)\n\n\nclass ModelMeanType(enum.Enum):\n    \"\"\"\n    Which type of output the model predicts.\n    \"\"\"\n\n    PREVIOUS_X = 'previous_x'  # the model predicts x_{t-1}\n    START_X = 'start_x'  # the model predicts x_0\n    EPSILON = 'epsilon'  # the model predicts epsilon\n\n\nclass ModelVarType(enum.Enum):\n    \"\"\"\n    What is used as the model's output variance.\n\n    The LEARNED_RANGE option has been added to allow the model to predict\n    values between FIXED_SMALL and FIXED_LARGE, making its job easier.\n    \"\"\"\n\n    LEARNED = 'learned'\n    FIXED_SMALL = 'fixed_small'\n    FIXED_LARGE = 'fixed_large'\n    LEARNED_RANGE = 'learned_range'\n\n\nclass LossType(enum.Enum):\n    MSE = 'mse'  # use raw MSE loss (and KL when learning variances)\n    RESCALED_MSE = 'rescaled_mse'  # use raw MSE loss (with RESCALED_KL when learning variances)\n    KL = 'kl'  # use the variational lower-bound\n    RESCALED_KL = 'rescaled_kl'  # like KL, but rescale to estimate the full VLB\n\n    def is_vb(self):\n        return self == LossType.KL or self == LossType.RESCALED_KL\n\n\nclass GaussianDiffusion:\n    \"\"\"\n    Utilities for training and sampling diffusion models.\n\n    Ported directly from here, and then adapted over time to further experimentation.\n    https://github.com/hojonathanho/diffusion/blob/1e0dceb3b3495bbe19116a5e1b3596cd0706c543/diffusion_tf/diffusion_utils_2.py#L42\n\n    :param betas: a 1-D numpy array of betas for each diffusion timestep,\n                  starting at T and going to 1.\n    :param model_mean_type: a ModelMeanType determining what the model outputs.\n    :param model_var_type: a ModelVarType determining how variance is output.\n    :param loss_type: a LossType determining the loss function to use.\n    :param rescale_timesteps: if True, pass floating point timesteps into the\n                              model so that they are always scaled like in the\n                              original paper (0 to 1000).\n    \"\"\"\n\n    def __init__(\n        self,\n        *,\n        betas,\n        model_mean_type,\n        model_var_type,\n        loss_type,\n        rescale_timesteps=False,\n        conditioning_free=False,\n        conditioning_free_k=1,\n        ramp_conditioning_free=True,\n    ):\n        self.model_mean_type = ModelMeanType(model_mean_type)\n        self.model_var_type = ModelVarType(model_var_type)\n        self.loss_type = LossType(loss_type)\n        self.rescale_timesteps = rescale_timesteps\n        self.conditioning_free = conditioning_free\n        self.conditioning_free_k = conditioning_free_k\n        self.ramp_conditioning_free = ramp_conditioning_free\n\n        # Use float64 for accuracy.\n        betas = np.array(betas, dtype=np.float64)\n        self.betas = betas\n        assert len(betas.shape) == 1, \"betas must be 1-D\"\n        assert (betas > 0).all() and (betas <= 1).all()\n\n        self.num_timesteps = int(betas.shape[0])\n\n        alphas = 1.0 - betas\n        self.alphas_cumprod = np.cumprod(alphas, axis=0)\n        self.alphas_cumprod_prev = np.append(1.0, self.alphas_cumprod[:-1])\n        self.alphas_cumprod_next = np.append(self.alphas_cumprod[1:], 0.0)\n        assert self.alphas_cumprod_prev.shape == (self.num_timesteps,)\n\n        # calculations for diffusion q(x_t | x_{t-1}) and others\n        self.sqrt_alphas_cumprod = np.sqrt(self.alphas_cumprod)\n        self.sqrt_one_minus_alphas_cumprod = np.sqrt(1.0 - self.alphas_cumprod)\n        self.log_one_minus_alphas_cumprod = np.log(1.0 - self.alphas_cumprod)\n        self.sqrt_recip_alphas_cumprod = np.sqrt(1.0 / self.alphas_cumprod)\n        self.sqrt_recipm1_alphas_cumprod = np.sqrt(1.0 / self.alphas_cumprod - 1)\n\n        # calculations for posterior q(x_{t-1} | x_t, x_0)\n        self.posterior_variance = (\n            betas * (1.0 - self.alphas_cumprod_prev) / (1.0 - self.alphas_cumprod)\n        )\n        # log calculation clipped because the posterior variance is 0 at the\n        # beginning of the diffusion chain.\n        self.posterior_log_variance_clipped = np.log(\n            np.append(self.posterior_variance[1], self.posterior_variance[1:])\n        )\n        self.posterior_mean_coef1 = (\n            betas * np.sqrt(self.alphas_cumprod_prev) / (1.0 - self.alphas_cumprod)\n        )\n        self.posterior_mean_coef2 = (\n            (1.0 - self.alphas_cumprod_prev)\n            * np.sqrt(alphas)\n            / (1.0 - self.alphas_cumprod)\n        )\n\n    def q_mean_variance(self, x_start, t):\n        \"\"\"\n        Get the distribution q(x_t | x_0).\n\n        :param x_start: the [N x C x ...] tensor of noiseless inputs.\n        :param t: the number of diffusion steps (minus 1). Here, 0 means one step.\n        :return: A tuple (mean, variance, log_variance), all of x_start's shape.\n        \"\"\"\n        mean = (\n            _extract_into_tensor(self.sqrt_alphas_cumprod, t, x_start.shape) * x_start\n        )\n        variance = _extract_into_tensor(1.0 - self.alphas_cumprod, t, x_start.shape)\n        log_variance = _extract_into_tensor(\n            self.log_one_minus_alphas_cumprod, t, x_start.shape\n        )\n        return mean, variance, log_variance\n\n    def q_sample(self, x_start, t, noise=None):\n        \"\"\"\n        Diffuse the data for a given number of diffusion steps.\n\n        In other words, sample from q(x_t | x_0).\n\n        :param x_start: the initial data batch.\n        :param t: the number of diffusion steps (minus 1). Here, 0 means one step.\n        :param noise: if specified, the split-out normal noise.\n        :return: A noisy version of x_start.\n        \"\"\"\n        if noise is None:\n            noise = th.randn_like(x_start)\n        assert noise.shape == x_start.shape\n        return (\n            _extract_into_tensor(self.sqrt_alphas_cumprod, t, x_start.shape) * x_start\n            + _extract_into_tensor(self.sqrt_one_minus_alphas_cumprod, t, x_start.shape)\n            * noise\n        )\n\n    def q_posterior_mean_variance(self, x_start, x_t, t):\n        \"\"\"\n        Compute the mean and variance of the diffusion posterior:\n\n            q(x_{t-1} | x_t, x_0)\n\n        \"\"\"\n        assert x_start.shape == x_t.shape\n        posterior_mean = (\n            _extract_into_tensor(self.posterior_mean_coef1, t, x_t.shape) * x_start\n            + _extract_into_tensor(self.posterior_mean_coef2, t, x_t.shape) * x_t\n        )\n        posterior_variance = _extract_into_tensor(self.posterior_variance, t, x_t.shape)\n        posterior_log_variance_clipped = _extract_into_tensor(\n            self.posterior_log_variance_clipped, t, x_t.shape\n        )\n        assert (\n            posterior_mean.shape[0]\n            == posterior_variance.shape[0]\n            == posterior_log_variance_clipped.shape[0]\n            == x_start.shape[0]\n        )\n        return posterior_mean, posterior_variance, posterior_log_variance_clipped\n\n    def p_mean_variance(\n        self, model, x, t, clip_denoised=True, denoised_fn=None, model_kwargs=None\n    ):\n        \"\"\"\n        Apply the model to get p(x_{t-1} | x_t), as well as a prediction of\n        the initial x, x_0.\n\n        :param model: the model, which takes a signal and a batch of timesteps\n                      as input.\n        :param x: the [N x C x ...] tensor at time t.\n        :param t: a 1-D Tensor of timesteps.\n        :param clip_denoised: if True, clip the denoised signal into [-1, 1].\n        :param denoised_fn: if not None, a function which applies to the\n            x_start prediction before it is used to sample. Applies before\n            clip_denoised.\n        :param model_kwargs: if not None, a dict of extra keyword arguments to\n            pass to the model. This can be used for conditioning.\n        :return: a dict with the following keys:\n                 - 'mean': the model mean output.\n                 - 'variance': the model variance output.\n                 - 'log_variance': the log of 'variance'.\n                 - 'pred_xstart': the prediction for x_0.\n        \"\"\"\n        if model_kwargs is None:\n            model_kwargs = {}\n\n        B, C = x.shape[:2]\n        assert t.shape == (B,)\n        model_output = model(x, self._scale_timesteps(t), **model_kwargs)\n        if self.conditioning_free:\n            model_output_no_conditioning = model(x, self._scale_timesteps(t), conditioning_free=True, **model_kwargs)\n\n        if self.model_var_type in [ModelVarType.LEARNED, ModelVarType.LEARNED_RANGE]:\n            assert model_output.shape == (B, C * 2, *x.shape[2:])\n            model_output, model_var_values = th.split(model_output, C, dim=1)\n            if self.conditioning_free:\n                model_output_no_conditioning, _ = th.split(model_output_no_conditioning, C, dim=1)\n            if self.model_var_type == ModelVarType.LEARNED:\n                model_log_variance = model_var_values\n                model_variance = th.exp(model_log_variance)\n            else:\n                min_log = _extract_into_tensor(\n                    self.posterior_log_variance_clipped, t, x.shape\n                )\n                max_log = _extract_into_tensor(np.log(self.betas), t, x.shape)\n                # The model_var_values is [-1, 1] for [min_var, max_var].\n                frac = (model_var_values + 1) / 2\n                model_log_variance = frac * max_log + (1 - frac) * min_log\n                model_variance = th.exp(model_log_variance)\n        else:\n            model_variance, model_log_variance = {\n                # for fixedlarge, we set the initial (log-)variance like so\n                # to get a better decoder log likelihood.\n                ModelVarType.FIXED_LARGE: (\n                    np.append(self.posterior_variance[1], self.betas[1:]),\n                    np.log(np.append(self.posterior_variance[1], self.betas[1:])),\n                ),\n                ModelVarType.FIXED_SMALL: (\n                    self.posterior_variance,\n                    self.posterior_log_variance_clipped,\n                ),\n            }[self.model_var_type]\n            model_variance = _extract_into_tensor(model_variance, t, x.shape)\n            model_log_variance = _extract_into_tensor(model_log_variance, t, x.shape)\n\n        if self.conditioning_free:\n            if self.ramp_conditioning_free:\n                assert t.shape[0] == 1  # This should only be used in inference.\n                cfk = self.conditioning_free_k * (1 - self._scale_timesteps(t)[0].item() / self.num_timesteps)\n            else:\n                cfk = self.conditioning_free_k\n            model_output = (1 + cfk) * model_output - cfk * model_output_no_conditioning\n\n        def process_xstart(x):\n            if denoised_fn is not None:\n                x = denoised_fn(x)\n            if clip_denoised:\n                return x.clamp(-1, 1)\n            return x\n\n        if self.model_mean_type == ModelMeanType.PREVIOUS_X:\n            pred_xstart = process_xstart(\n                self._predict_xstart_from_xprev(x_t=x, t=t, xprev=model_output)\n            )\n            model_mean = model_output\n        elif self.model_mean_type in [ModelMeanType.START_X, ModelMeanType.EPSILON]:\n            if self.model_mean_type == ModelMeanType.START_X:\n                pred_xstart = process_xstart(model_output)\n            else:\n                pred_xstart = process_xstart(\n                    self._predict_xstart_from_eps(x_t=x, t=t, eps=model_output)\n                )\n            model_mean, _, _ = self.q_posterior_mean_variance(\n                x_start=pred_xstart, x_t=x, t=t\n            )\n        else:\n            raise NotImplementedError(self.model_mean_type)\n\n        assert (\n            model_mean.shape == model_log_variance.shape == pred_xstart.shape == x.shape\n        )\n        return {\n            \"mean\": model_mean,\n            \"variance\": model_variance,\n            \"log_variance\": model_log_variance,\n            \"pred_xstart\": pred_xstart,\n        }\n\n    def _predict_xstart_from_eps(self, x_t, t, eps):\n        assert x_t.shape == eps.shape\n        return (\n            _extract_into_tensor(self.sqrt_recip_alphas_cumprod, t, x_t.shape) * x_t\n            - _extract_into_tensor(self.sqrt_recipm1_alphas_cumprod, t, x_t.shape) * eps\n        )\n\n    def _predict_xstart_from_xprev(self, x_t, t, xprev):\n        assert x_t.shape == xprev.shape\n        return (  # (xprev - coef2*x_t) / coef1\n            _extract_into_tensor(1.0 / self.posterior_mean_coef1, t, x_t.shape) * xprev\n            - _extract_into_tensor(\n                self.posterior_mean_coef2 / self.posterior_mean_coef1, t, x_t.shape\n            )\n            * x_t\n        )\n\n    def _predict_eps_from_xstart(self, x_t, t, pred_xstart):\n        return (\n            _extract_into_tensor(self.sqrt_recip_alphas_cumprod, t, x_t.shape) * x_t\n            - pred_xstart\n        ) / _extract_into_tensor(self.sqrt_recipm1_alphas_cumprod, t, x_t.shape)\n\n    def _scale_timesteps(self, t):\n        if self.rescale_timesteps:\n            return t.float() * (1000.0 / self.num_timesteps)\n        return t\n\n    def condition_mean(self, cond_fn, p_mean_var, x, t, model_kwargs=None):\n        \"\"\"\n        Compute the mean for the previous step, given a function cond_fn that\n        computes the gradient of a conditional log probability with respect to\n        x. In particular, cond_fn computes grad(log(p(y|x))), and we want to\n        condition on y.\n\n        This uses the conditioning strategy from Sohl-Dickstein et al. (2015).\n        \"\"\"\n        gradient = cond_fn(x, self._scale_timesteps(t), **model_kwargs)\n        new_mean = (\n            p_mean_var[\"mean\"].float() + p_mean_var[\"variance\"] * gradient.float()\n        )\n        return new_mean\n\n    def condition_score(self, cond_fn, p_mean_var, x, t, model_kwargs=None):\n        \"\"\"\n        Compute what the p_mean_variance output would have been, should the\n        model's score function be conditioned by cond_fn.\n\n        See condition_mean() for details on cond_fn.\n\n        Unlike condition_mean(), this instead uses the conditioning strategy\n        from Song et al (2020).\n        \"\"\"\n        alpha_bar = _extract_into_tensor(self.alphas_cumprod, t, x.shape)\n\n        eps = self._predict_eps_from_xstart(x, t, p_mean_var[\"pred_xstart\"])\n        eps = eps - (1 - alpha_bar).sqrt() * cond_fn(\n            x, self._scale_timesteps(t), **model_kwargs\n        )\n\n        out = p_mean_var.copy()\n        out[\"pred_xstart\"] = self._predict_xstart_from_eps(x, t, eps)\n        out[\"mean\"], _, _ = self.q_posterior_mean_variance(\n            x_start=out[\"pred_xstart\"], x_t=x, t=t\n        )\n        return out\n\n    def p_sample(\n        self,\n        model,\n        x,\n        t,\n        clip_denoised=True,\n        denoised_fn=None,\n        cond_fn=None,\n        model_kwargs=None,\n    ):\n        \"\"\"\n        Sample x_{t-1} from the model at the given timestep.\n\n        :param model: the model to sample from.\n        :param x: the current tensor at x_{t-1}.\n        :param t: the value of t, starting at 0 for the first diffusion step.\n        :param clip_denoised: if True, clip the x_start prediction to [-1, 1].\n        :param denoised_fn: if not None, a function which applies to the\n            x_start prediction before it is used to sample.\n        :param cond_fn: if not None, this is a gradient function that acts\n                        similarly to the model.\n        :param model_kwargs: if not None, a dict of extra keyword arguments to\n            pass to the model. This can be used for conditioning.\n        :return: a dict containing the following keys:\n                 - 'sample': a random sample from the model.\n                 - 'pred_xstart': a prediction of x_0.\n        \"\"\"\n        out = self.p_mean_variance(\n            model,\n            x,\n            t,\n            clip_denoised=clip_denoised,\n            denoised_fn=denoised_fn,\n            model_kwargs=model_kwargs,\n        )\n        noise = th.randn_like(x)\n        nonzero_mask = (\n            (t != 0).float().view(-1, *([1] * (len(x.shape) - 1)))\n        )  # no noise when t == 0\n        if cond_fn is not None:\n            out[\"mean\"] = self.condition_mean(\n                cond_fn, out, x, t, model_kwargs=model_kwargs\n            )\n        sample = out[\"mean\"] + nonzero_mask * th.exp(0.5 * out[\"log_variance\"]) * noise\n        return {\"sample\": sample, \"pred_xstart\": out[\"pred_xstart\"]}\n\n    def p_sample_loop(\n        self,\n        model,\n        shape,\n        noise=None,\n        clip_denoised=True,\n        denoised_fn=None,\n        cond_fn=None,\n        model_kwargs=None,\n        device=None,\n        progress=False,\n    ):\n        \"\"\"\n        Generate samples from the model.\n\n        :param model: the model module.\n        :param shape: the shape of the samples, (N, C, H, W).\n        :param noise: if specified, the noise from the encoder to sample.\n                      Should be of the same shape as `shape`.\n        :param clip_denoised: if True, clip x_start predictions to [-1, 1].\n        :param denoised_fn: if not None, a function which applies to the\n            x_start prediction before it is used to sample.\n        :param cond_fn: if not None, this is a gradient function that acts\n                        similarly to the model.\n        :param model_kwargs: if not None, a dict of extra keyword arguments to\n            pass to the model. This can be used for conditioning.\n        :param device: if specified, the device to create the samples on.\n                       If not specified, use a model parameter's device.\n        :param progress: if True, show a tqdm progress bar.\n        :return: a non-differentiable batch of samples.\n        \"\"\"\n        final = None\n        for sample in self.p_sample_loop_progressive(\n            model,\n            shape,\n            noise=noise,\n            clip_denoised=clip_denoised,\n            denoised_fn=denoised_fn,\n            cond_fn=cond_fn,\n            model_kwargs=model_kwargs,\n            device=device,\n            progress=progress,\n        ):\n            final = sample\n        return final[\"sample\"]\n\n    def p_sample_loop_progressive(\n        self,\n        model,\n        shape,\n        noise=None,\n        clip_denoised=True,\n        denoised_fn=None,\n        cond_fn=None,\n        model_kwargs=None,\n        device=None,\n        progress=False,\n    ):\n        \"\"\"\n        Generate samples from the model and yield intermediate samples from\n        each timestep of diffusion.\n\n        Arguments are the same as p_sample_loop().\n        Returns a generator over dicts, where each dict is the return value of\n        p_sample().\n        \"\"\"\n        if device is None:\n            device = next(model.parameters()).device\n        assert isinstance(shape, (tuple, list))\n        if noise is not None:\n            img = noise\n        else:\n            img = th.randn(*shape, device=device)\n        indices = list(range(self.num_timesteps))[::-1]\n\n        for i in tqdm(indices, disable=not progress):\n            t = th.tensor([i] * shape[0], device=device)\n            with th.no_grad():\n                out = self.p_sample(\n                    model,\n                    img,\n                    t,\n                    clip_denoised=clip_denoised,\n                    denoised_fn=denoised_fn,\n                    cond_fn=cond_fn,\n                    model_kwargs=model_kwargs,\n                )\n                yield out\n                img = out[\"sample\"]\n\n    def ddim_sample(\n        self,\n        model,\n        x,\n        t,\n        clip_denoised=True,\n        denoised_fn=None,\n        cond_fn=None,\n        model_kwargs=None,\n        eta=0.0,\n    ):\n        \"\"\"\n        Sample x_{t-1} from the model using DDIM.\n\n        Same usage as p_sample().\n        \"\"\"\n        out = self.p_mean_variance(\n            model,\n            x,\n            t,\n            clip_denoised=clip_denoised,\n            denoised_fn=denoised_fn,\n            model_kwargs=model_kwargs,\n        )\n        if cond_fn is not None:\n            out = self.condition_score(cond_fn, out, x, t, model_kwargs=model_kwargs)\n\n        # Usually our model outputs epsilon, but we re-derive it\n        # in case we used x_start or x_prev prediction.\n        eps = self._predict_eps_from_xstart(x, t, out[\"pred_xstart\"])\n\n        alpha_bar = _extract_into_tensor(self.alphas_cumprod, t, x.shape)\n        alpha_bar_prev = _extract_into_tensor(self.alphas_cumprod_prev, t, x.shape)\n        sigma = (\n            eta\n            * th.sqrt((1 - alpha_bar_prev) / (1 - alpha_bar))\n            * th.sqrt(1 - alpha_bar / alpha_bar_prev)\n        )\n        # Equation 12.\n        noise = th.randn_like(x)\n        mean_pred = (\n            out[\"pred_xstart\"] * th.sqrt(alpha_bar_prev)\n            + th.sqrt(1 - alpha_bar_prev - sigma ** 2) * eps\n        )\n        nonzero_mask = (\n            (t != 0).float().view(-1, *([1] * (len(x.shape) - 1)))\n        )  # no noise when t == 0\n        sample = mean_pred + nonzero_mask * sigma * noise\n        return {\"sample\": sample, \"pred_xstart\": out[\"pred_xstart\"]}\n\n    def ddim_reverse_sample(\n        self,\n        model,\n        x,\n        t,\n        clip_denoised=True,\n        denoised_fn=None,\n        model_kwargs=None,\n        eta=0.0,\n    ):\n        \"\"\"\n        Sample x_{t+1} from the model using DDIM reverse ODE.\n        \"\"\"\n        assert eta == 0.0, \"Reverse ODE only for deterministic path\"\n        out = self.p_mean_variance(\n            model,\n            x,\n            t,\n            clip_denoised=clip_denoised,\n            denoised_fn=denoised_fn,\n            model_kwargs=model_kwargs,\n        )\n        # Usually our model outputs epsilon, but we re-derive it\n        # in case we used x_start or x_prev prediction.\n        eps = (\n            _extract_into_tensor(self.sqrt_recip_alphas_cumprod, t, x.shape) * x\n            - out[\"pred_xstart\"]\n        ) / _extract_into_tensor(self.sqrt_recipm1_alphas_cumprod, t, x.shape)\n        alpha_bar_next = _extract_into_tensor(self.alphas_cumprod_next, t, x.shape)\n\n        # Equation 12. reversed\n        mean_pred = (\n            out[\"pred_xstart\"] * th.sqrt(alpha_bar_next)\n            + th.sqrt(1 - alpha_bar_next) * eps\n        )\n\n        return {\"sample\": mean_pred, \"pred_xstart\": out[\"pred_xstart\"]}\n\n    def ddim_sample_loop(\n        self,\n        model,\n        shape,\n        noise=None,\n        clip_denoised=True,\n        denoised_fn=None,\n        cond_fn=None,\n        model_kwargs=None,\n        device=None,\n        progress=False,\n        eta=0.0,\n    ):\n        \"\"\"\n        Generate samples from the model using DDIM.\n\n        Same usage as p_sample_loop().\n        \"\"\"\n        final = None\n        for sample in self.ddim_sample_loop_progressive(\n            model,\n            shape,\n            noise=noise,\n            clip_denoised=clip_denoised,\n            denoised_fn=denoised_fn,\n            cond_fn=cond_fn,\n            model_kwargs=model_kwargs,\n            device=device,\n            progress=progress,\n            eta=eta,\n        ):\n            final = sample\n        return final[\"sample\"]\n\n    def ddim_sample_loop_progressive(\n        self,\n        model,\n        shape,\n        noise=None,\n        clip_denoised=True,\n        denoised_fn=None,\n        cond_fn=None,\n        model_kwargs=None,\n        device=None,\n        progress=False,\n        eta=0.0,\n    ):\n        \"\"\"\n        Use DDIM to sample from the model and yield intermediate samples from\n        each timestep of DDIM.\n\n        Same usage as p_sample_loop_progressive().\n        \"\"\"\n        if device is None:\n            device = next(model.parameters()).device\n        assert isinstance(shape, (tuple, list))\n        if noise is not None:\n            img = noise\n        else:\n            img = th.randn(*shape, device=device)\n        indices = list(range(self.num_timesteps))[::-1]\n\n        if progress:\n            # Lazy import so that we don't depend on tqdm.\n            from tqdm.auto import tqdm\n\n            indices = tqdm(indices, disable=not progress)\n\n        for i in indices:\n            t = th.tensor([i] * shape[0], device=device)\n            with th.no_grad():\n                out = self.ddim_sample(\n                    model,\n                    img,\n                    t,\n                    clip_denoised=clip_denoised,\n                    denoised_fn=denoised_fn,\n                    cond_fn=cond_fn,\n                    model_kwargs=model_kwargs,\n                    eta=eta,\n                )\n                yield out\n                img = out[\"sample\"]\n\n    def _vb_terms_bpd(\n        self, model, x_start, x_t, t, clip_denoised=True, model_kwargs=None\n    ):\n        \"\"\"\n        Get a term for the variational lower-bound.\n\n        The resulting units are bits (rather than nats, as one might expect).\n        This allows for comparison to other papers.\n\n        :return: a dict with the following keys:\n                 - 'output': a shape [N] tensor of NLLs or KLs.\n                 - 'pred_xstart': the x_0 predictions.\n        \"\"\"\n        true_mean, _, true_log_variance_clipped = self.q_posterior_mean_variance(\n            x_start=x_start, x_t=x_t, t=t\n        )\n        out = self.p_mean_variance(\n            model, x_t, t, clip_denoised=clip_denoised, model_kwargs=model_kwargs\n        )\n        kl = normal_kl(\n            true_mean, true_log_variance_clipped, out[\"mean\"], out[\"log_variance\"]\n        )\n        kl = mean_flat(kl) / np.log(2.0)\n\n        decoder_nll = -discretized_gaussian_log_likelihood(\n            x_start, means=out[\"mean\"], log_scales=0.5 * out[\"log_variance\"]\n        )\n        assert decoder_nll.shape == x_start.shape\n        decoder_nll = mean_flat(decoder_nll) / np.log(2.0)\n\n        # At the first timestep return the decoder NLL,\n        # otherwise return KL(q(x_{t-1}|x_t,x_0) || p(x_{t-1}|x_t))\n        output = th.where((t == 0), decoder_nll, kl)\n        return {\"output\": output, \"pred_xstart\": out[\"pred_xstart\"]}\n\n    def training_losses(self, model, x_start, t, model_kwargs=None, noise=None):\n        \"\"\"\n        Compute training losses for a single timestep.\n\n        :param model: the model to evaluate loss on.\n        :param x_start: the [N x C x ...] tensor of inputs.\n        :param t: a batch of timestep indices.\n        :param model_kwargs: if not None, a dict of extra keyword arguments to\n            pass to the model. This can be used for conditioning.\n        :param noise: if specified, the specific Gaussian noise to try to remove.\n        :return: a dict with the key \"loss\" containing a tensor of shape [N].\n                 Some mean or variance settings may also have other keys.\n        \"\"\"\n        if model_kwargs is None:\n            model_kwargs = {}\n        if noise is None:\n            noise = th.randn_like(x_start)\n        x_t = self.q_sample(x_start, t, noise=noise)\n\n        terms = {}\n\n        if self.loss_type == LossType.KL or self.loss_type == LossType.RESCALED_KL:\n            # TODO: support multiple model outputs for this mode.\n            terms[\"loss\"] = self._vb_terms_bpd(\n                model=model,\n                x_start=x_start,\n                x_t=x_t,\n                t=t,\n                clip_denoised=False,\n                model_kwargs=model_kwargs,\n            )[\"output\"]\n            if self.loss_type == LossType.RESCALED_KL:\n                terms[\"loss\"] *= self.num_timesteps\n        elif self.loss_type == LossType.MSE or self.loss_type == LossType.RESCALED_MSE:\n            model_outputs = model(x_t, self._scale_timesteps(t), **model_kwargs)\n            if isinstance(model_outputs, tuple):\n                model_output = model_outputs[0]\n                terms['extra_outputs'] = model_outputs[1:]\n            else:\n                model_output = model_outputs\n\n            if self.model_var_type in [\n                ModelVarType.LEARNED,\n                ModelVarType.LEARNED_RANGE,\n            ]:\n                B, C = x_t.shape[:2]\n                assert model_output.shape == (B, C * 2, *x_t.shape[2:])\n                model_output, model_var_values = th.split(model_output, C, dim=1)\n                # Learn the variance using the variational bound, but don't let\n                # it affect our mean prediction.\n                frozen_out = th.cat([model_output.detach(), model_var_values], dim=1)\n                terms[\"vb\"] = self._vb_terms_bpd(\n                    model=lambda *args, r=frozen_out: r,\n                    x_start=x_start,\n                    x_t=x_t,\n                    t=t,\n                    clip_denoised=False,\n                )[\"output\"]\n                if self.loss_type == LossType.RESCALED_MSE:\n                    # Divide by 1000 for equivalence with initial implementation.\n                    # Without a factor of 1/1000, the VB term hurts the MSE term.\n                    terms[\"vb\"] *= self.num_timesteps / 1000.0\n\n            if self.model_mean_type == ModelMeanType.PREVIOUS_X:\n                target = self.q_posterior_mean_variance(\n                    x_start=x_start, x_t=x_t, t=t\n                )[0]\n                x_start_pred = torch.zeros(x_start)  # Not supported.\n            elif self.model_mean_type == ModelMeanType.START_X:\n                target = x_start\n                x_start_pred = model_output\n            elif self.model_mean_type == ModelMeanType.EPSILON:\n                target = noise\n                x_start_pred = self._predict_xstart_from_eps(x_t, t, model_output)\n            else:\n                raise NotImplementedError(self.model_mean_type)\n            assert model_output.shape == target.shape == x_start.shape\n            terms[\"mse\"] = mean_flat((target - model_output) ** 2)\n            terms[\"x_start_predicted\"] = x_start_pred\n            if \"vb\" in terms:\n                terms[\"loss\"] = terms[\"mse\"] + terms[\"vb\"]\n            else:\n                terms[\"loss\"] = terms[\"mse\"]\n        else:\n            raise NotImplementedError(self.loss_type)\n\n        return terms\n\n    def autoregressive_training_losses(self, model, x_start, t, model_output_keys, gd_out_key, model_kwargs=None, noise=None):\n        \"\"\"\n        Compute training losses for a single timestep.\n\n        :param model: the model to evaluate loss on.\n        :param x_start: the [N x C x ...] tensor of inputs.\n        :param t: a batch of timestep indices.\n        :param model_kwargs: if not None, a dict of extra keyword arguments to\n            pass to the model. This can be used for conditioning.\n        :param noise: if specified, the specific Gaussian noise to try to remove.\n        :return: a dict with the key \"loss\" containing a tensor of shape [N].\n                 Some mean or variance settings may also have other keys.\n        \"\"\"\n        if model_kwargs is None:\n            model_kwargs = {}\n        if noise is None:\n            noise = th.randn_like(x_start)\n        x_t = self.q_sample(x_start, t, noise=noise)\n        terms = {}\n        if self.loss_type == LossType.KL or self.loss_type == LossType.RESCALED_KL:\n            assert False  # not currently supported for this type of diffusion.\n        elif self.loss_type == LossType.MSE or self.loss_type == LossType.RESCALED_MSE:\n            model_outputs = model(x_t, x_start, self._scale_timesteps(t), **model_kwargs)\n            terms.update({k: o for k, o in zip(model_output_keys, model_outputs)})\n            model_output = terms[gd_out_key]\n            if self.model_var_type in [\n                ModelVarType.LEARNED,\n                ModelVarType.LEARNED_RANGE,\n            ]:\n                B, C = x_t.shape[:2]\n                assert model_output.shape == (B, C, 2, *x_t.shape[2:])\n                model_output, model_var_values = model_output[:, :, 0], model_output[:, :, 1]\n                # Learn the variance using the variational bound, but don't let\n                # it affect our mean prediction.\n                frozen_out = th.cat([model_output.detach(), model_var_values], dim=1)\n                terms[\"vb\"] = self._vb_terms_bpd(\n                    model=lambda *args, r=frozen_out: r,\n                    x_start=x_start,\n                    x_t=x_t,\n                    t=t,\n                    clip_denoised=False,\n                )[\"output\"]\n                if self.loss_type == LossType.RESCALED_MSE:\n                    # Divide by 1000 for equivalence with initial implementation.\n                    # Without a factor of 1/1000, the VB term hurts the MSE term.\n                    terms[\"vb\"] *= self.num_timesteps / 1000.0\n\n            if self.model_mean_type == ModelMeanType.PREVIOUS_X:\n                target = self.q_posterior_mean_variance(\n                    x_start=x_start, x_t=x_t, t=t\n                )[0]\n                x_start_pred = torch.zeros(x_start)  # Not supported.\n            elif self.model_mean_type == ModelMeanType.START_X:\n                target = x_start\n                x_start_pred = model_output\n            elif self.model_mean_type == ModelMeanType.EPSILON:\n                target = noise\n                x_start_pred = self._predict_xstart_from_eps(x_t, t, model_output)\n            else:\n                raise NotImplementedError(self.model_mean_type)\n            assert model_output.shape == target.shape == x_start.shape\n            terms[\"mse\"] = mean_flat((target - model_output) ** 2)\n            terms[\"x_start_predicted\"] = x_start_pred\n            if \"vb\" in terms:\n                terms[\"loss\"] = terms[\"mse\"] + terms[\"vb\"]\n            else:\n                terms[\"loss\"] = terms[\"mse\"]\n        else:\n            raise NotImplementedError(self.loss_type)\n\n        return terms\n\n    def _prior_bpd(self, x_start):\n        \"\"\"\n        Get the prior KL term for the variational lower-bound, measured in\n        bits-per-dim.\n\n        This term can't be optimized, as it only depends on the encoder.\n\n        :param x_start: the [N x C x ...] tensor of inputs.\n        :return: a batch of [N] KL values (in bits), one per batch element.\n        \"\"\"\n        batch_size = x_start.shape[0]\n        t = th.tensor([self.num_timesteps - 1] * batch_size, device=x_start.device)\n        qt_mean, _, qt_log_variance = self.q_mean_variance(x_start, t)\n        kl_prior = normal_kl(\n            mean1=qt_mean, logvar1=qt_log_variance, mean2=0.0, logvar2=0.0\n        )\n        return mean_flat(kl_prior) / np.log(2.0)\n\n    def calc_bpd_loop(self, model, x_start, clip_denoised=True, model_kwargs=None):\n        \"\"\"\n        Compute the entire variational lower-bound, measured in bits-per-dim,\n        as well as other related quantities.\n\n        :param model: the model to evaluate loss on.\n        :param x_start: the [N x C x ...] tensor of inputs.\n        :param clip_denoised: if True, clip denoised samples.\n        :param model_kwargs: if not None, a dict of extra keyword arguments to\n            pass to the model. This can be used for conditioning.\n\n        :return: a dict containing the following keys:\n                 - total_bpd: the total variational lower-bound, per batch element.\n                 - prior_bpd: the prior term in the lower-bound.\n                 - vb: an [N x T] tensor of terms in the lower-bound.\n                 - xstart_mse: an [N x T] tensor of x_0 MSEs for each timestep.\n                 - mse: an [N x T] tensor of epsilon MSEs for each timestep.\n        \"\"\"\n        device = x_start.device\n        batch_size = x_start.shape[0]\n\n        vb = []\n        xstart_mse = []\n        mse = []\n        for t in list(range(self.num_timesteps))[::-1]:\n            t_batch = th.tensor([t] * batch_size, device=device)\n            noise = th.randn_like(x_start)\n            x_t = self.q_sample(x_start=x_start, t=t_batch, noise=noise)\n            # Calculate VLB term at the current timestep\n            with th.no_grad():\n                out = self._vb_terms_bpd(\n                    model,\n                    x_start=x_start,\n                    x_t=x_t,\n                    t=t_batch,\n                    clip_denoised=clip_denoised,\n                    model_kwargs=model_kwargs,\n                )\n            vb.append(out[\"output\"])\n            xstart_mse.append(mean_flat((out[\"pred_xstart\"] - x_start) ** 2))\n            eps = self._predict_eps_from_xstart(x_t, t_batch, out[\"pred_xstart\"])\n            mse.append(mean_flat((eps - noise) ** 2))\n\n        vb = th.stack(vb, dim=1)\n        xstart_mse = th.stack(xstart_mse, dim=1)\n        mse = th.stack(mse, dim=1)\n\n        prior_bpd = self._prior_bpd(x_start)\n        total_bpd = vb.sum(dim=1) + prior_bpd\n        return {\n            \"total_bpd\": total_bpd,\n            \"prior_bpd\": prior_bpd,\n            \"vb\": vb,\n            \"xstart_mse\": xstart_mse,\n            \"mse\": mse,\n        }\n\n\ndef get_named_beta_schedule(schedule_name, num_diffusion_timesteps):\n    \"\"\"\n    Get a pre-defined beta schedule for the given name.\n\n    The beta schedule library consists of beta schedules which remain similar\n    in the limit of num_diffusion_timesteps.\n    Beta schedules may be added, but should not be removed or changed once\n    they are committed to maintain backwards compatibility.\n    \"\"\"\n    if schedule_name == \"linear\":\n        # Linear schedule from Ho et al, extended to work for any number of\n        # diffusion steps.\n        scale = 1000 / num_diffusion_timesteps\n        beta_start = scale * 0.0001\n        beta_end = scale * 0.02\n        return np.linspace(\n            beta_start, beta_end, num_diffusion_timesteps, dtype=np.float64\n        )\n    elif schedule_name == \"cosine\":\n        return betas_for_alpha_bar(\n            num_diffusion_timesteps,\n            lambda t: math.cos((t + 0.008) / 1.008 * math.pi / 2) ** 2,\n        )\n    else:\n        raise NotImplementedError(f\"unknown beta schedule: {schedule_name}\")\n\n\nclass SpacedDiffusion(GaussianDiffusion):\n    \"\"\"\n    A diffusion process which can skip steps in a base diffusion process.\n\n    :param use_timesteps: a collection (sequence or set) of timesteps from the\n                          original diffusion process to retain.\n    :param kwargs: the kwargs to create the base diffusion process.\n    \"\"\"\n\n    def __init__(self, use_timesteps, **kwargs):\n        self.use_timesteps = set(use_timesteps)\n        self.timestep_map = []\n        self.original_num_steps = len(kwargs[\"betas\"])\n\n        base_diffusion = GaussianDiffusion(**kwargs)  # pylint: disable=missing-kwoa\n        last_alpha_cumprod = 1.0\n        new_betas = []\n        for i, alpha_cumprod in enumerate(base_diffusion.alphas_cumprod):\n            if i in self.use_timesteps:\n                new_betas.append(1 - alpha_cumprod / last_alpha_cumprod)\n                last_alpha_cumprod = alpha_cumprod\n                self.timestep_map.append(i)\n        kwargs[\"betas\"] = np.array(new_betas)\n        super().__init__(**kwargs)\n\n    def p_mean_variance(\n        self, model, *args, **kwargs\n    ):  # pylint: disable=signature-differs\n        return super().p_mean_variance(self._wrap_model(model), *args, **kwargs)\n\n    def training_losses(\n        self, model, *args, **kwargs\n    ):  # pylint: disable=signature-differs\n        return super().training_losses(self._wrap_model(model), *args, **kwargs)\n\n    def autoregressive_training_losses(\n        self, model, *args, **kwargs\n    ):  # pylint: disable=signature-differs\n        return super().autoregressive_training_losses(self._wrap_model(model, True), *args, **kwargs)\n\n    def condition_mean(self, cond_fn, *args, **kwargs):\n        return super().condition_mean(self._wrap_model(cond_fn), *args, **kwargs)\n\n    def condition_score(self, cond_fn, *args, **kwargs):\n        return super().condition_score(self._wrap_model(cond_fn), *args, **kwargs)\n\n    def _wrap_model(self, model, autoregressive=False):\n        if isinstance(model, _WrappedModel) or isinstance(model, _WrappedAutoregressiveModel):\n            return model\n        mod = _WrappedAutoregressiveModel if autoregressive else _WrappedModel\n        return mod(\n            model, self.timestep_map, self.rescale_timesteps, self.original_num_steps\n        )\n\n    def _scale_timesteps(self, t):\n        # Scaling is done by the wrapped model.\n        return t\n\n\ndef space_timesteps(num_timesteps, section_counts):\n    \"\"\"\n    Create a list of timesteps to use from an original diffusion process,\n    given the number of timesteps we want to take from equally-sized portions\n    of the original process.\n\n    For example, if there's 300 timesteps and the section counts are [10,15,20]\n    then the first 100 timesteps are strided to be 10 timesteps, the second 100\n    are strided to be 15 timesteps, and the final 100 are strided to be 20.\n\n    If the stride is a string starting with \"ddim\", then the fixed striding\n    from the DDIM paper is used, and only one section is allowed.\n\n    :param num_timesteps: the number of diffusion steps in the original\n                          process to divide up.\n    :param section_counts: either a list of numbers, or a string containing\n                           comma-separated numbers, indicating the step count\n                           per section. As a special case, use \"ddimN\" where N\n                           is a number of steps to use the striding from the\n                           DDIM paper.\n    :return: a set of diffusion steps from the original process to use.\n    \"\"\"\n    if isinstance(section_counts, str):\n        if section_counts.startswith(\"ddim\"):\n            desired_count = int(section_counts[len(\"ddim\") :])\n            for i in range(1, num_timesteps):\n                if len(range(0, num_timesteps, i)) == desired_count:\n                    return set(range(0, num_timesteps, i))\n            raise ValueError(\n                f\"cannot create exactly {num_timesteps} steps with an integer stride\"\n            )\n        section_counts = [int(x) for x in section_counts.split(\",\")]\n    size_per = num_timesteps // len(section_counts)\n    extra = num_timesteps % len(section_counts)\n    start_idx = 0\n    all_steps = []\n    for i, section_count in enumerate(section_counts):\n        size = size_per + (1 if i < extra else 0)\n        if size < section_count:\n            raise ValueError(\n                f\"cannot divide section of {size} steps into {section_count}\"\n            )\n        if section_count <= 1:\n            frac_stride = 1\n        else:\n            frac_stride = (size - 1) / (section_count - 1)\n        cur_idx = 0.0\n        taken_steps = []\n        for _ in range(section_count):\n            taken_steps.append(start_idx + round(cur_idx))\n            cur_idx += frac_stride\n        all_steps += taken_steps\n        start_idx += size\n    return set(all_steps)\n\n\nclass _WrappedModel:\n    def __init__(self, model, timestep_map, rescale_timesteps, original_num_steps):\n        self.model = model\n        self.timestep_map = timestep_map\n        self.rescale_timesteps = rescale_timesteps\n        self.original_num_steps = original_num_steps\n\n    def __call__(self, x, ts, **kwargs):\n        map_tensor = th.tensor(self.timestep_map, device=ts.device, dtype=ts.dtype)\n        new_ts = map_tensor[ts]\n        if self.rescale_timesteps:\n            new_ts = new_ts.float() * (1000.0 / self.original_num_steps)\n        return self.model(x, new_ts, **kwargs)\n\n\nclass _WrappedAutoregressiveModel:\n    def __init__(self, model, timestep_map, rescale_timesteps, original_num_steps):\n        self.model = model\n        self.timestep_map = timestep_map\n        self.rescale_timesteps = rescale_timesteps\n        self.original_num_steps = original_num_steps\n\n    def __call__(self, x, x0, ts, **kwargs):\n        map_tensor = th.tensor(self.timestep_map, device=ts.device, dtype=ts.dtype)\n        new_ts = map_tensor[ts]\n        if self.rescale_timesteps:\n            new_ts = new_ts.float() * (1000.0 / self.original_num_steps)\n        return self.model(x, x0, new_ts, **kwargs)\n\ndef _extract_into_tensor(arr, timesteps, broadcast_shape):\n    \"\"\"\n    Extract values from a 1-D numpy array for a batch of indices.\n\n    :param arr: the 1-D numpy array.\n    :param timesteps: a tensor of indices into the array to extract.\n    :param broadcast_shape: a larger shape of K dimensions with the batch\n                            dimension equal to the length of timesteps.\n    :return: a tensor of shape [batch_size, 1, ...] where the shape has K dims.\n    \"\"\"\n    res = th.from_numpy(arr.astype(np.float32)).to(device=timesteps.device)[timesteps]\n    while len(res.shape) < len(broadcast_shape):\n        res = res[..., None]\n    return res.expand(broadcast_shape)"
  },
  {
    "path": "tortoise/utils/stft.py",
    "content": "\"\"\"\nBSD 3-Clause License\n\nCopyright (c) 2017, Prem Seetharaman\nAll rights reserved.\n\n* Redistribution and use in source and binary forms, with or without\n  modification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice,\n  this list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice, this\n  list of conditions and the following disclaimer in the\n  documentation and/or other materials provided with the distribution.\n\n* Neither the name of the copyright holder nor the names of its\n  contributors may be used to endorse or promote products derived from this\n  software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\"\"\"\n\nimport torch\nimport numpy as np\nimport torch.nn.functional as F\nfrom torch.autograd import Variable\nfrom scipy.signal import get_window\nfrom librosa.util import pad_center, tiny\nimport librosa.util as librosa_util\n\n\ndef window_sumsquare(window, n_frames, hop_length=200, win_length=800,\n                     n_fft=800, dtype=np.float32, norm=None):\n    \"\"\"\n    # from librosa 0.6\n    Compute the sum-square envelope of a window function at a given hop length.\n\n    This is used to estimate modulation effects induced by windowing\n    observations in short-time fourier transforms.\n\n    Parameters\n    ----------\n    window : string, tuple, number, callable, or list-like\n        Window specification, as in `get_window`\n\n    n_frames : int > 0\n        The number of analysis frames\n\n    hop_length : int > 0\n        The number of samples to advance between frames\n\n    win_length : [optional]\n        The length of the window function.  By default, this matches `n_fft`.\n\n    n_fft : int > 0\n        The length of each analysis frame.\n\n    dtype : np.dtype\n        The data type of the output\n\n    Returns\n    -------\n    wss : np.ndarray, shape=`(n_fft + hop_length * (n_frames - 1))`\n        The sum-squared envelope of the window function\n    \"\"\"\n    if win_length is None:\n        win_length = n_fft\n\n    n = n_fft + hop_length * (n_frames - 1)\n    x = np.zeros(n, dtype=dtype)\n\n    # Compute the squared window at the desired length\n    win_sq = get_window(window, win_length, fftbins=True)\n    win_sq = librosa_util.normalize(win_sq, norm=norm)**2\n    win_sq = librosa_util.pad_center(win_sq, n_fft)\n\n    # Fill the envelope\n    for i in range(n_frames):\n        sample = i * hop_length\n        x[sample:min(n, sample + n_fft)] += win_sq[:max(0, min(n_fft, n - sample))]\n    return x\n\n\nclass STFT(torch.nn.Module):\n    \"\"\"adapted from Prem Seetharaman's https://github.com/pseeth/pytorch-stft\"\"\"\n    def __init__(self, filter_length=800, hop_length=200, win_length=800,\n                 window='hann'):\n        super(STFT, self).__init__()\n        self.filter_length = filter_length\n        self.hop_length = hop_length\n        self.win_length = win_length\n        self.window = window\n        self.forward_transform = None\n        scale = self.filter_length / self.hop_length\n        fourier_basis = np.fft.fft(np.eye(self.filter_length))\n\n        cutoff = int((self.filter_length / 2 + 1))\n        fourier_basis = np.vstack([np.real(fourier_basis[:cutoff, :]),\n                                   np.imag(fourier_basis[:cutoff, :])])\n\n        forward_basis = torch.FloatTensor(fourier_basis[:, None, :])\n        inverse_basis = torch.FloatTensor(\n            np.linalg.pinv(scale * fourier_basis).T[:, None, :])\n\n        if window is not None:\n            assert(filter_length >= win_length)\n            # get window and zero center pad it to filter_length\n            fft_window = get_window(window, win_length, fftbins=True)\n            fft_window = pad_center(fft_window, size=filter_length)\n            fft_window = torch.from_numpy(fft_window).float()\n\n            # window the bases\n            forward_basis *= fft_window\n            inverse_basis *= fft_window\n\n        self.register_buffer('forward_basis', forward_basis.float())\n        self.register_buffer('inverse_basis', inverse_basis.float())\n\n    def transform(self, input_data):\n        num_batches = input_data.size(0)\n        num_samples = input_data.size(1)\n\n        self.num_samples = num_samples\n\n        # similar to librosa, reflect-pad the input\n        input_data = input_data.view(num_batches, 1, num_samples)\n        input_data = F.pad(\n            input_data.unsqueeze(1),\n            (int(self.filter_length / 2), int(self.filter_length / 2), 0, 0),\n            mode='reflect')\n        input_data = input_data.squeeze(1)\n\n        forward_transform = F.conv1d(\n            input_data,\n            Variable(self.forward_basis, requires_grad=False),\n            stride=self.hop_length,\n            padding=0)\n\n        cutoff = int((self.filter_length / 2) + 1)\n        real_part = forward_transform[:, :cutoff, :]\n        imag_part = forward_transform[:, cutoff:, :]\n\n        magnitude = torch.sqrt(real_part**2 + imag_part**2)\n        phase = torch.autograd.Variable(\n            torch.atan2(imag_part.data, real_part.data))\n\n        return magnitude, phase\n\n    def inverse(self, magnitude, phase):\n        recombine_magnitude_phase = torch.cat(\n            [magnitude*torch.cos(phase), magnitude*torch.sin(phase)], dim=1)\n\n        inverse_transform = F.conv_transpose1d(\n            recombine_magnitude_phase,\n            Variable(self.inverse_basis, requires_grad=False),\n            stride=self.hop_length,\n            padding=0)\n\n        if self.window is not None:\n            window_sum = window_sumsquare(\n                self.window, magnitude.size(-1), hop_length=self.hop_length,\n                win_length=self.win_length, n_fft=self.filter_length,\n                dtype=np.float32)\n            # remove modulation effects\n            approx_nonzero_indices = torch.from_numpy(\n                np.where(window_sum > tiny(window_sum))[0])\n            window_sum = torch.autograd.Variable(\n                torch.from_numpy(window_sum), requires_grad=False)\n            window_sum = window_sum.cuda() if magnitude.is_cuda else window_sum\n            inverse_transform[:, :, approx_nonzero_indices] /= window_sum[approx_nonzero_indices]\n\n            # scale by hop ratio\n            inverse_transform *= float(self.filter_length) / self.hop_length\n\n        inverse_transform = inverse_transform[:, :, int(self.filter_length/2):]\n        inverse_transform = inverse_transform[:, :, :-int(self.filter_length/2):]\n\n        return inverse_transform\n\n    def forward(self, input_data):\n        self.magnitude, self.phase = self.transform(input_data)\n        reconstruction = self.inverse(self.magnitude, self.phase)\n        return reconstruction"
  },
  {
    "path": "tortoise/utils/text.py",
    "content": "import re\n\n\ndef split_and_recombine_text(text, desired_length=200, max_length=300):\n    \"\"\"Split text it into chunks of a desired length trying to keep sentences intact.\"\"\"\n    # normalize text, remove redundant whitespace and convert non-ascii quotes to ascii\n    text = re.sub(r'\\n\\n+', '\\n', text)\n    text = re.sub(r'\\s+', ' ', text)\n    text = re.sub(r'[“”]', '\"', text)\n\n    rv = []\n    in_quote = False\n    current = \"\"\n    split_pos = []\n    pos = -1\n    end_pos = len(text) - 1\n\n    def seek(delta):\n        nonlocal pos, in_quote, current\n        is_neg = delta < 0\n        for _ in range(abs(delta)):\n            if is_neg:\n                pos -= 1\n                current = current[:-1]\n            else:\n                pos += 1\n                current += text[pos]\n            if text[pos] == '\"':\n                in_quote = not in_quote\n        return text[pos]\n\n    def peek(delta):\n        p = pos + delta\n        return text[p] if p < end_pos and p >= 0 else \"\"\n\n    def commit():\n        nonlocal rv, current, split_pos\n        rv.append(current)\n        current = \"\"\n        split_pos = []\n\n    while pos < end_pos:\n        c = seek(1)\n        # do we need to force a split?\n        if len(current) >= max_length:\n            if len(split_pos) > 0 and len(current) > (desired_length / 2):\n                # we have at least one sentence and we are over half the desired length, seek back to the last split\n                d = pos - split_pos[-1]\n                seek(-d)\n            else:\n                # no full sentences, seek back until we are not in the middle of a word and split there\n                while c not in '!?.\\n ' and pos > 0 and len(current) > desired_length:\n                    c = seek(-1)\n            commit()\n        # check for sentence boundaries\n        elif not in_quote and (c in '!?\\n' or (c == '.' and peek(1) in '\\n ')):\n            # seek forward if we have consecutive boundary markers but still within the max length\n            while pos < len(text) - 1 and len(current) < max_length and peek(1) in '!?.':\n                c = seek(1)\n            split_pos.append(pos)\n            if len(current) >= desired_length:\n                commit()\n        # treat end of quote as a boundary if its followed by a space or newline\n        elif in_quote and peek(1) == '\"' and peek(2) in '\\n ':\n            seek(2)\n            split_pos.append(pos)\n    rv.append(current)\n\n    # clean up, remove lines with only whitespace or punctuation\n    rv = [s.strip() for s in rv]\n    rv = [s for s in rv if len(s) > 0 and not re.match(r'^[\\s\\.,;:!?]*$', s)]\n\n    return rv\n\n\nif __name__ == '__main__':\n    import os\n    import unittest\n\n    class Test(unittest.TestCase):\n        def test_split_and_recombine_text(self):\n            text = \"\"\"\n            This is a sample sentence.\n            This is another sample sentence.\n            This is a longer sample sentence that should force a split inthemiddlebutinotinthislongword.\n            \"Don't split my quote... please\"\n            \"\"\"\n            self.assertEqual(split_and_recombine_text(text, desired_length=20, max_length=40),\n                             ['This is a sample sentence.',\n                              'This is another sample sentence.',\n                              'This is a longer sample sentence that',\n                              'should force a split',\n                              'inthemiddlebutinotinthislongword.',\n                              '\"Don\\'t split my quote... please\"'])\n\n        def test_split_and_recombine_text_2(self):\n            text = \"\"\"\n            When you are really angry sometimes you use consecutive exclamation marks!!!!!! Is this a good thing to do?!?!?!\n            I don't know but we should handle this situation..........................\n            \"\"\"\n            self.assertEqual(split_and_recombine_text(text, desired_length=30, max_length=50),\n                             ['When you are really angry sometimes you use',\n                              'consecutive exclamation marks!!!!!!',\n                              'Is this a good thing to do?!?!?!',\n                              'I don\\'t know but we should handle this situation.'])\n\n        def test_split_and_recombine_text_3(self):\n            text_src = os.path.join(os.path.dirname(__file__), '../data/riding_hood.txt')\n            with open(text_src, 'r') as f:\n                text = f.read()\n            self.assertEqual(\n                split_and_recombine_text(text),\n                [\n                    'Once upon a time there lived in a certain village a little country girl, the prettiest creature who was ever seen. Her mother was excessively fond of her; and her grandmother doted on her still more. This good woman had a little red riding hood made for her.',\n                    'It suited the girl so extremely well that everybody called her Little Red Riding Hood. One day her mother, having made some cakes, said to her, \"Go, my dear, and see how your grandmother is doing, for I hear she has been very ill. Take her a cake, and this little pot of butter.\"',\n                    'Little Red Riding Hood set out immediately to go to her grandmother, who lived in another village. As she was going through the wood, she met with a wolf, who had a very great mind to eat her up, but he dared not, because of some woodcutters working nearby in the forest.',\n                    'He asked her where she was going. The poor child, who did not know that it was dangerous to stay and talk to a wolf, said to him, \"I am going to see my grandmother and carry her a cake and a little pot of butter from my mother.\" \"Does she live far off?\" said the wolf \"Oh I say,\"',\n                    'answered Little Red Riding Hood; \"it is beyond that mill you see there, at the first house in the village.\" \"Well,\" said the wolf, \"and I\\'ll go and see her too. I\\'ll go this way and go you that, and we shall see who will be there first.\"',\n                    'The wolf ran as fast as he could, taking the shortest path, and the little girl took a roundabout way, entertaining herself by gathering nuts, running after butterflies, and gathering bouquets of little flowers.',\n                    'It was not long before the wolf arrived at the old woman\\'s house. He knocked at the door: tap, tap. \"Who\\'s there?\" \"Your grandchild, Little Red Riding Hood,\" replied the wolf, counterfeiting her voice; \"who has brought you a cake and a little pot of butter sent you by mother.\"',\n                    'The good grandmother, who was in bed, because she was somewhat ill, cried out, \"Pull the bobbin, and the latch will go up.\"',\n                    'The wolf pulled the bobbin, and the door opened, and then he immediately fell upon the good woman and ate her up in a moment, for it been more than three days since he had eaten.',\n                    'He then shut the door and got into the grandmother\\'s bed, expecting Little Red Riding Hood, who came some time afterwards and knocked at the door: tap, tap. \"Who\\'s there?\"',\n                    'Little Red Riding Hood, hearing the big voice of the wolf, was at first afraid; but believing her grandmother had a cold and was hoarse, answered, \"It is your grandchild Little Red Riding Hood, who has brought you a cake and a little pot of butter mother sends you.\"',\n                    'The wolf cried out to her, softening his voice as much as he could, \"Pull the bobbin, and the latch will go up.\" Little Red Riding Hood pulled the bobbin, and the door opened.',\n                    'The wolf, seeing her come in, said to her, hiding himself under the bedclothes, \"Put the cake and the little pot of butter upon the stool, and come get into bed with me.\" Little Red Riding Hood took off her clothes and got into bed.',\n                    'She was greatly amazed to see how her grandmother looked in her nightclothes, and said to her, \"Grandmother, what big arms you have!\" \"All the better to hug you with, my dear.\" \"Grandmother, what big legs you have!\" \"All the better to run with, my child.\" \"Grandmother, what big ears you have!\"',\n                    '\"All the better to hear with, my child.\" \"Grandmother, what big eyes you have!\" \"All the better to see with, my child.\" \"Grandmother, what big teeth you have got!\" \"All the better to eat you up with.\" And, saying these words, this wicked wolf fell upon Little Red Riding Hood, and ate her all up.',\n                ]\n            )\n\n    unittest.main()\n"
  },
  {
    "path": "tortoise/utils/tokenizer.py",
    "content": "import os\nimport re\n\nimport inflect\nimport torch\nfrom tokenizers import Tokenizer\n\n\n# Regular expression matching whitespace:\nfrom unidecode import unidecode\n\n_whitespace_re = re.compile(r'\\s+')\n\n\n# List of (regular expression, replacement) pairs for abbreviations:\n_abbreviations = [(re.compile('\\\\b%s\\\\.' % x[0], re.IGNORECASE), x[1]) for x in [\n  ('mrs', 'misess'),\n  ('mr', 'mister'),\n  ('dr', 'doctor'),\n  ('st', 'saint'),\n  ('co', 'company'),\n  ('jr', 'junior'),\n  ('maj', 'major'),\n  ('gen', 'general'),\n  ('drs', 'doctors'),\n  ('rev', 'reverend'),\n  ('lt', 'lieutenant'),\n  ('hon', 'honorable'),\n  ('sgt', 'sergeant'),\n  ('capt', 'captain'),\n  ('esq', 'esquire'),\n  ('ltd', 'limited'),\n  ('col', 'colonel'),\n  ('ft', 'fort'),\n]]\n\n\ndef expand_abbreviations(text):\n  for regex, replacement in _abbreviations:\n    text = re.sub(regex, replacement, text)\n  return text\n\n\n_inflect = inflect.engine()\n_comma_number_re = re.compile(r'([0-9][0-9\\,]+[0-9])')\n_decimal_number_re = re.compile(r'([0-9]+\\.[0-9]+)')\n_pounds_re = re.compile(r'£([0-9\\,]*[0-9]+)')\n_dollars_re = re.compile(r'\\$([0-9\\.\\,]*[0-9]+)')\n_ordinal_re = re.compile(r'[0-9]+(st|nd|rd|th)')\n_number_re = re.compile(r'[0-9]+')\n\n\ndef _remove_commas(m):\n  return m.group(1).replace(',', '')\n\n\ndef _expand_decimal_point(m):\n  return m.group(1).replace('.', ' point ')\n\n\ndef _expand_dollars(m):\n  match = m.group(1)\n  parts = match.split('.')\n  if len(parts) > 2:\n    return match + ' dollars'  # Unexpected format\n  dollars = int(parts[0]) if parts[0] else 0\n  cents = int(parts[1]) if len(parts) > 1 and parts[1] else 0\n  if dollars and cents:\n    dollar_unit = 'dollar' if dollars == 1 else 'dollars'\n    cent_unit = 'cent' if cents == 1 else 'cents'\n    return '%s %s, %s %s' % (dollars, dollar_unit, cents, cent_unit)\n  elif dollars:\n    dollar_unit = 'dollar' if dollars == 1 else 'dollars'\n    return '%s %s' % (dollars, dollar_unit)\n  elif cents:\n    cent_unit = 'cent' if cents == 1 else 'cents'\n    return '%s %s' % (cents, cent_unit)\n  else:\n    return 'zero dollars'\n\n\ndef _expand_ordinal(m):\n  return _inflect.number_to_words(m.group(0))\n\n\ndef _expand_number(m):\n  num = int(m.group(0))\n  if num > 1000 and num < 3000:\n    if num == 2000:\n      return 'two thousand'\n    elif num > 2000 and num < 2010:\n      return 'two thousand ' + _inflect.number_to_words(num % 100)\n    elif num % 100 == 0:\n      return _inflect.number_to_words(num // 100) + ' hundred'\n    else:\n      return _inflect.number_to_words(num, andword='', zero='oh', group=2).replace(', ', ' ')\n  else:\n    return _inflect.number_to_words(num, andword='')\n\n\ndef normalize_numbers(text):\n  text = re.sub(_comma_number_re, _remove_commas, text)\n  text = re.sub(_pounds_re, r'\\1 pounds', text)\n  text = re.sub(_dollars_re, _expand_dollars, text)\n  text = re.sub(_decimal_number_re, _expand_decimal_point, text)\n  text = re.sub(_ordinal_re, _expand_ordinal, text)\n  text = re.sub(_number_re, _expand_number, text)\n  return text\n\n\ndef expand_numbers(text):\n  return normalize_numbers(text)\n\n\ndef lowercase(text):\n  return text.lower()\n\n\ndef collapse_whitespace(text):\n  return re.sub(_whitespace_re, ' ', text)\n\n\ndef convert_to_ascii(text):\n  return unidecode(text)\n\n\ndef basic_cleaners(text):\n  '''Basic pipeline that lowercases and collapses whitespace without transliteration.'''\n  text = lowercase(text)\n  text = collapse_whitespace(text)\n  return text\n\n\ndef transliteration_cleaners(text):\n  '''Pipeline for non-English text that transliterate to ASCII.'''\n  text = convert_to_ascii(text)\n  text = lowercase(text)\n  text = collapse_whitespace(text)\n  return text\n\n\ndef english_cleaners(text):\n  '''Pipeline for English text, including number and abbreviation expansion.'''\n  text = convert_to_ascii(text)\n  text = lowercase(text)\n  text = expand_numbers(text)\n  text = expand_abbreviations(text)\n  text = collapse_whitespace(text)\n  text = text.replace('\"', '')\n  return text\n\n\ndef lev_distance(s1, s2):\n  if len(s1) > len(s2):\n    s1, s2 = s2, s1\n\n  distances = range(len(s1) + 1)\n  for i2, c2 in enumerate(s2):\n    distances_ = [i2 + 1]\n    for i1, c1 in enumerate(s1):\n      if c1 == c2:\n        distances_.append(distances[i1])\n      else:\n        distances_.append(1 + min((distances[i1], distances[i1 + 1], distances_[-1])))\n    distances = distances_\n  return distances[-1]\n\n\nDEFAULT_VOCAB_FILE = os.path.join(os.path.dirname(os.path.realpath(__file__)), '../data/tokenizer.json')\n\n\nclass VoiceBpeTokenizer:\n    def __init__(self, vocab_file=None, use_basic_cleaners=False):\n        self.tokenizer = Tokenizer.from_file(\n          DEFAULT_VOCAB_FILE if vocab_file is None else vocab_file\n        )\n        if use_basic_cleaners:\n            self.preprocess_text = basic_cleaners\n        else:\n            self.preprocess_text = english_cleaners\n\n    def encode(self, txt):\n        txt = self.preprocess_text(txt)\n        txt = txt.replace(' ', '[SPACE]')\n        return self.tokenizer.encode(txt).ids\n\n    def decode(self, seq):\n        if isinstance(seq, torch.Tensor):\n            seq = seq.cpu().numpy()\n        txt = self.tokenizer.decode(seq, skip_special_tokens=False).replace(' ', '')\n        txt = txt.replace('[SPACE]', ' ')\n        txt = txt.replace('[STOP]', '')\n        txt = txt.replace('[UNK]', '')\n        return txt\n"
  },
  {
    "path": "tortoise/utils/typical_sampling.py",
    "content": "import torch\nfrom transformers import LogitsWarper\n\n\nclass TypicalLogitsWarper(LogitsWarper):\n    def __init__(self, mass: float = 0.9, filter_value: float = -float(\"Inf\"), min_tokens_to_keep: int = 1):\n        self.filter_value = filter_value\n        self.mass = mass\n        self.min_tokens_to_keep = min_tokens_to_keep\n\n    def __call__(self, input_ids: torch.LongTensor, scores: torch.FloatTensor) -> torch.FloatTensor:\n        # calculate entropy\n        normalized = torch.nn.functional.log_softmax(scores, dim=-1)\n        p = torch.exp(normalized)\n        ent = -(normalized * p).nansum(-1, keepdim=True)\n\n        # shift and sort\n        shifted_scores = torch.abs((-normalized) - ent)\n        sorted_scores, sorted_indices = torch.sort(shifted_scores, descending=False)\n        sorted_logits = scores.gather(-1, sorted_indices)\n        cumulative_probs = sorted_logits.softmax(dim=-1).cumsum(dim=-1)\n\n        # Remove tokens with cumulative mass above the threshold\n        last_ind = (cumulative_probs < self.mass).sum(dim=1)\n        last_ind[last_ind < 0] = 0\n        sorted_indices_to_remove = sorted_scores > sorted_scores.gather(1, last_ind.view(-1, 1))\n        if self.min_tokens_to_keep > 1:\n            # Keep at least min_tokens_to_keep (set to min_tokens_to_keep-1 because we add the first one below)\n            sorted_indices_to_remove[..., : self.min_tokens_to_keep] = 0\n        indices_to_remove = sorted_indices_to_remove.scatter(1, sorted_indices, sorted_indices_to_remove)\n\n        scores = scores.masked_fill(indices_to_remove, self.filter_value)\n        return scores"
  },
  {
    "path": "tortoise/utils/wav2vec_alignment.py",
    "content": "import re\n\nimport torch\nimport torchaudio\nfrom transformers import Wav2Vec2ForCTC, Wav2Vec2FeatureExtractor, Wav2Vec2CTCTokenizer, Wav2Vec2Processor\n\nfrom tortoise.utils.audio import load_audio\n\n\ndef max_alignment(s1, s2, skip_character='~', record=None):\n    \"\"\"\n    A clever function that aligns s1 to s2 as best it can. Wherever a character from s1 is not found in s2, a '~' is\n    used to replace that character.\n\n    Finally got to use my DP skills!\n    \"\"\"\n    if record is None:\n        record = {}\n    assert skip_character not in s1, f\"Found the skip character {skip_character} in the provided string, {s1}\"\n    if len(s1) == 0:\n        return ''\n    if len(s2) == 0:\n        return skip_character * len(s1)\n    if s1 == s2:\n        return s1\n    if s1[0] == s2[0]:\n        return s1[0] + max_alignment(s1[1:], s2[1:], skip_character, record)\n\n    take_s1_key = (len(s1), len(s2) - 1)\n    if take_s1_key in record:\n        take_s1, take_s1_score = record[take_s1_key]\n    else:\n        take_s1 = max_alignment(s1, s2[1:], skip_character, record)\n        take_s1_score = len(take_s1.replace(skip_character, ''))\n        record[take_s1_key] = (take_s1, take_s1_score)\n\n    take_s2_key = (len(s1) - 1, len(s2))\n    if take_s2_key in record:\n        take_s2, take_s2_score = record[take_s2_key]\n    else:\n        take_s2 = max_alignment(s1[1:], s2, skip_character, record)\n        take_s2_score = len(take_s2.replace(skip_character, ''))\n        record[take_s2_key] = (take_s2, take_s2_score)\n\n    return take_s1 if take_s1_score > take_s2_score else skip_character + take_s2\n\n\nclass Wav2VecAlignment:\n    \"\"\"\n    Uses wav2vec2 to perform audio<->text alignment.\n    \"\"\"\n    def __init__(self, device='cuda' if not torch.backends.mps.is_available() else 'mps'):\n        self.model = Wav2Vec2ForCTC.from_pretrained(\"jbetker/wav2vec2-large-robust-ft-libritts-voxpopuli\").cpu()\n        self.feature_extractor = Wav2Vec2FeatureExtractor.from_pretrained(f\"facebook/wav2vec2-large-960h\")\n        self.tokenizer = Wav2Vec2CTCTokenizer.from_pretrained('jbetker/tacotron-symbols')\n        self.device = device\n\n    def align(self, audio, expected_text, audio_sample_rate=24000):\n        orig_len = audio.shape[-1]\n\n        with torch.no_grad():\n            self.model = self.model.to(self.device)\n            audio = audio.to(self.device)\n            audio = torchaudio.functional.resample(audio, audio_sample_rate, 16000)\n            clip_norm = (audio - audio.mean()) / torch.sqrt(audio.var() + 1e-7)\n            logits = self.model(clip_norm).logits\n            self.model = self.model.cpu()\n\n        logits = logits[0]\n        pred_string = self.tokenizer.decode(logits.argmax(-1).tolist())\n\n        fixed_expectation = max_alignment(expected_text.lower(), pred_string)\n        w2v_compression = orig_len // logits.shape[0]\n        expected_tokens = self.tokenizer.encode(fixed_expectation)\n        expected_chars = list(fixed_expectation)\n        if len(expected_tokens) == 1:\n            return [0]  # The alignment is simple; there is only one token.\n        expected_tokens.pop(0)  # The first token is a given.\n        expected_chars.pop(0)\n\n        alignments = [0]\n        def pop_till_you_win():\n            if len(expected_tokens) == 0:\n                return None\n            popped = expected_tokens.pop(0)\n            popped_char = expected_chars.pop(0)\n            while popped_char == '~':\n                alignments.append(-1)\n                if len(expected_tokens) == 0:\n                    return None\n                popped = expected_tokens.pop(0)\n                popped_char = expected_chars.pop(0)\n            return popped\n\n        next_expected_token = pop_till_you_win()\n        for i, logit in enumerate(logits):\n            top = logit.argmax()\n            if next_expected_token == top:\n                alignments.append(i * w2v_compression)\n                if len(expected_tokens) > 0:\n                    next_expected_token = pop_till_you_win()\n                else:\n                    break\n\n        pop_till_you_win()\n        if not (len(expected_tokens) == 0 and len(alignments) == len(expected_text)):\n            torch.save([audio, expected_text], 'alignment_debug.pth')\n            assert False, \"Something went wrong with the alignment algorithm. I've dumped a file, 'alignment_debug.pth' to\" \\\n                          \"your current working directory. Please report this along with the file so it can get fixed.\"\n\n        # Now fix up alignments. Anything with -1 should be interpolated.\n        alignments.append(orig_len)  # This'll get removed but makes the algorithm below more readable.\n        for i in range(len(alignments)):\n            if alignments[i] == -1:\n                for j in range(i+1, len(alignments)):\n                    if alignments[j] != -1:\n                        next_found_token = j\n                        break\n                for j in range(i, next_found_token):\n                    gap = alignments[next_found_token] - alignments[i-1]\n                    alignments[j] = (j-i+1) * gap // (next_found_token-i+1) + alignments[i-1]\n\n        return alignments[:-1]\n\n    def redact(self, audio, expected_text, audio_sample_rate=24000):\n        if '[' not in expected_text:\n            return audio\n        splitted = expected_text.split('[')\n        fully_split = [splitted[0]]\n        for spl in splitted[1:]:\n            assert ']' in spl, 'Every \"[\" character must be paired with a \"]\" with no nesting.'\n            fully_split.extend(spl.split(']'))\n\n        # At this point, fully_split is a list of strings, with every other string being something that should be redacted.\n        non_redacted_intervals = []\n        last_point = 0\n        for i in range(len(fully_split)):\n            if i % 2 == 0 and fully_split[i] != \"\": # Check for empty string fixes index error\n                end_interval = max(0, last_point + len(fully_split[i]) - 1)\n                non_redacted_intervals.append((last_point, end_interval))\n            last_point += len(fully_split[i])\n\n        bare_text = ''.join(fully_split)\n        alignments = self.align(audio, bare_text, audio_sample_rate)\n\n        output_audio = []\n        for nri in non_redacted_intervals:\n            start, stop = nri\n            output_audio.append(audio[:, alignments[start]:alignments[stop]])\n        return torch.cat(output_audio, dim=-1)\n"
  },
  {
    "path": "tortoise_tts.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"id\": \"_pIZ3ZXNp7cf\"\n   },\n   \"source\": [\n    \"Welcome to Tortoise! 🐢🐢🐢🐢\\n\",\n    \"\\n\",\n    \"Before you begin, I **strongly** recommend you turn on a GPU runtime.\\n\",\n    \"\\n\",\n    \"There's a reason this is called \\\"Tortoise\\\" - this model takes up to a minute to perform inference for a single sentence on a GPU. Expect waits on the order of hours on a CPU.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"id\": \"JrK20I32grP6\"\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"#first follow the instructions in the README.md file under Local Installation\\n\",\n    \"!pip3 install -r requirements.txt\\n\",\n    \"# !python3 setup.py install\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {\n    \"id\": \"Gen09NM4hONQ\"\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"/home/manmay/anaconda3/envs/tortoise/lib/python3.9/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\\n\",\n      \"  from .autonotebook import tqdm as notebook_tqdm\\n\"\n     ]\n    },\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[2023-07-15 10:55:28,559] [INFO] [logging.py:93:log_dist] [Rank -1] DeepSpeed info: version=0.8.3, git-hash=unknown, git-branch=unknown\\n\",\n      \"[2023-07-15 10:55:28,603] [WARNING] [config_utils.py:75:_process_deprecated_field] Config parameter mp_size is deprecated use tensor_parallel.tp_size instead\\n\",\n      \"[2023-07-15 10:55:28,605] [INFO] [logging.py:93:log_dist] [Rank -1] quantize_bits = 8 mlp_extra_grouping = False, quantize_groups = 1\\n\",\n      \"WARNING! Setting BLOOMLayerPolicy._orig_layer_class to None due to Exception: module 'transformers.models' has no attribute 'bloom'\\n\"\n     ]\n    },\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Using /home/manmay/.cache/torch_extensions/py39_cu117 as PyTorch extensions root...\\n\",\n      \"Detected CUDA files, patching ldflags\\n\",\n      \"Emitting ninja build file /home/manmay/.cache/torch_extensions/py39_cu117/transformer_inference/build.ninja...\\n\",\n      \"Building extension module transformer_inference...\\n\",\n      \"Allowing ninja to set a default number of workers... (overridable by setting the environment variable MAX_JOBS=N)\\n\",\n      \"Loading extension module transformer_inference...\\n\"\n     ]\n    },\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"ninja: no work to do.\\n\",\n      \"Time to load transformer_inference op: 0.9313881397247314 seconds\\n\",\n      \"[2023-07-15 10:55:34,938] [INFO] [logging.py:93:log_dist] [Rank -1] DeepSpeed-Inference config: {'layer_id': 0, 'hidden_size': 1024, 'intermediate_size': 4096, 'heads': 16, 'num_hidden_layers': -1, 'fp16': False, 'pre_layer_norm': True, 'local_rank': -1, 'stochastic_mode': False, 'epsilon': 1e-05, 'mp_size': 1, 'q_int8': False, 'scale_attention': True, 'triangular_masking': True, 'local_attention': False, 'window_size': 1, 'rotary_dim': -1, 'rotate_half': False, 'rotate_every_two': True, 'return_tuple': True, 'mlp_after_attn': True, 'mlp_act_func_type': <ActivationFuncType.GELU: 1>, 'specialized_mode': False, 'training_mp_size': 1, 'bigscience_bloom': False, 'max_out_tokens': 1024, 'scale_attn_by_inverse_layer_idx': False, 'enable_qkv_quantization': False, 'use_mup': False, 'return_single_tuple': False}\\n\"\n     ]\n    },\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Using /home/manmay/.cache/torch_extensions/py39_cu117 as PyTorch extensions root...\\n\",\n      \"No modifications detected for re-loaded extension module transformer_inference, skipping build step...\\n\",\n      \"Loading extension module transformer_inference...\\n\"\n     ]\n    },\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Time to load transformer_inference op: 0.15709829330444336 seconds\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# Imports used through the rest of the notebook.\\n\",\n    \"import torch\\n\",\n    \"import torchaudio\\n\",\n    \"import torch.nn as nn\\n\",\n    \"import torch.nn.functional as F\\n\",\n    \"\\n\",\n    \"import IPython\\n\",\n    \"\\n\",\n    \"from tortoise.api import TextToSpeech\\n\",\n    \"from tortoise.utils.audio import load_audio, load_voice, load_voices\\n\",\n    \"\\n\",\n    \"# This will download all the models used by Tortoise from the HF hub.\\n\",\n    \"# tts = TextToSpeech()\\n\",\n    \"# If you want to use deepspeed the pass use_deepspeed=True nearly 2x faster than normal\\n\",\n    \"tts = TextToSpeech(use_deepspeed=True, kv_cache=True)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"metadata\": {\n    \"id\": \"bt_aoxONjfL2\"\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"# This is the text that will be spoken.\\n\",\n    \"text = \\\"Joining two modalities results in a surprising increase in generalization! What would happen if we combined them all?\\\"\\n\",\n    \"\\n\",\n    \"# Here's something for the poetically inclined.. (set text=)\\n\",\n    \"\\\"\\\"\\\"\\n\",\n    \"Then took the other, as just as fair,\\n\",\n    \"And having perhaps the better claim,\\n\",\n    \"Because it was grassy and wanted wear;\\n\",\n    \"Though as for that the passing there\\n\",\n    \"Had worn them really about the same,\\\"\\\"\\\"\\n\",\n    \"\\n\",\n    \"# Pick a \\\"preset mode\\\" to determine quality. Options: {\\\"ultra_fast\\\", \\\"fast\\\" (default), \\\"standard\\\", \\\"high_quality\\\"}. See docs in api.py\\n\",\n    \"preset = \\\"ultra_fast\\\"\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 3,\n   \"metadata\": {\n    \"id\": \"SSleVnRAiEE2\"\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"\\u001b[0m\\u001b[01;34mangie\\u001b[0m/                \\u001b[01;34mfreeman\\u001b[0m/  \\u001b[01;34mmyself\\u001b[0m/        \\u001b[01;34mtom\\u001b[0m/            \\u001b[01;34mtrain_grace\\u001b[0m/\\n\",\n      \"\\u001b[01;34mapplejack\\u001b[0m/            \\u001b[01;34mgeralt\\u001b[0m/   \\u001b[01;34mpat\\u001b[0m/           \\u001b[01;34mtrain_atkins\\u001b[0m/   \\u001b[01;34mtrain_kennard\\u001b[0m/\\n\",\n      \"\\u001b[01;34mcond_latent_example\\u001b[0m/  \\u001b[01;34mhalle\\u001b[0m/    \\u001b[01;34mpat2\\u001b[0m/          \\u001b[01;34mtrain_daws\\u001b[0m/     \\u001b[01;34mtrain_lescault\\u001b[0m/\\n\",\n      \"\\u001b[01;34mdaniel\\u001b[0m/               \\u001b[01;34mjlaw\\u001b[0m/     \\u001b[01;34mrainbow\\u001b[0m/       \\u001b[01;34mtrain_dotrice\\u001b[0m/  \\u001b[01;34mtrain_mouse\\u001b[0m/\\n\",\n      \"\\u001b[01;34mdeniro\\u001b[0m/               \\u001b[01;34mlj\\u001b[0m/       \\u001b[01;34msnakes\\u001b[0m/        \\u001b[01;34mtrain_dreams\\u001b[0m/   \\u001b[01;34mweaver\\u001b[0m/\\n\",\n      \"\\u001b[01;34memma\\u001b[0m/                 \\u001b[01;34mmol\\u001b[0m/      \\u001b[01;34mtim_reynolds\\u001b[0m/  \\u001b[01;34mtrain_empire\\u001b[0m/   \\u001b[01;34mwilliam\\u001b[0m/\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/html\": [\n       \"\\n\",\n       \"                <audio  controls=\\\"controls\\\" >\\n\",\n       \"                    <source src=\\\"data:audio/x-wav;base64,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2//v/+z/5//0/wIADQATABkABAD9//n/8v/t/+b/5f/t/+T/3P/x/9r/4P/s/+P/5//d/7//0v/e/8D/0//l/wMA4v/r/wwAEgAEAOv/EADu/wAA/P8XAB0AFwAdAAAAEQDt//b/+f/v/+X/2P/T//f/0P/u/+r/6v/1/97/7//j//D/6f/m/+T//f8RABQAEwAlABMABQAiAA4AJAD9/w0ABwD1/wQAGQD//xgAHgD9/w0A/f/7/+3/7//1/w8AFgDk/w4A9P/1/xIA9f/8//7/HQADABMAKgAaACwAQAAlACsAIQARABgAEwA/AEAALAAoAD4AJAAhABgAJwAjAB4AIwATACoACwAqAB4AFgAfABAAEABCACgAIgAkAA8ABwAAAAMA8P/8//f//v/3/wQA8//q/+r/9//3/9//8//4/+3/8f/h//b/5P/n/wYA8//t//v/9//j/+n/yf/f/9n/1f/3/9z//v8MAAsA6f/r/+T/2//v/9r/5P/s//D/CgDt//b/AgD+//T/4f/d/+j/CwDw/x4ADAAXADMAHQAdAC0AKgALABEAFgAVAA8A/f8LAPf/6P/q/wMAGADx/wYABAD///3/EAAbABsAKAAQABwACgAVABAACAAXABUAGAAjAC0AGAAdABcAEAANAO///v8YABUAAwDv/wEA5P8UAOz/AwANAB8AFwAEAA8A8v/y/+r/AQD9/+v/5v/9/wMAFQAGAP3/7//t//j/6//s/+T/6f/h/wEA7/8CAAEA7P/m/+L/8v/6/wAA8P8IAAEA8f/5/+7/7P/u/+f/6f/U/9j/7f/c//7/7v/u//D/4v8CAAAAAwD9/wcAAwDt/+3/BwDv/woAAQD9//z/5P8CANv/4f/k/+z/9P8KANn/5//V/+T/EQD4/xMAAQD7/w0ACgAeAAwACgAkAAwABwAMABIA+f8EAAEA9v/q//P/+/8JAA4A///3//H/8//z////AgASAP3/EAAIABcABAADAAMA+P8LACMAKAAKAAsA/v/3/w0AIgAmAAMA+P8AAAEAFQAgAB4AAQAHAAoA//8TAP3/CQAUAA0AEQD4//j/7f/e//D/9//6//j/CAD+/woADgANABMA8/8KABAABwAZAAQABAALAAYACwAgAAoADwAeAB0AHAAmADIAHQAEAA4AEAAdABsADAD6/97/+v/+/xAADwAYAAQA+P8BAAIADgABAAQA8f8FAP7/8/8FAAAA4/8CAOr/9v/5//D/9P/l//f/9P8AAOj/6v/v/+7/AwDo/+v/zP/W/woA3f/7/9j/uf/b/8D/0f/C/+b/2P/N//P/7P/8//j/2P/g/+n/8P/d//D/+/8UABMABwACABcAIQD2/wwA+f/9////CwAOABYABQAIABQABQAMAO3/AAD5//3/+P/m/wYA+P8RAAsACAAnAAoAFAADAPn/JQATAC0ALAAhAEAANAAiACcAJgAcACoADAAWAAQAAQApACEAIgAJAAMAAQAHAAwACAADAAcAEQAPAB0AKwBIADYAKgASACYAGAAeAA4A6P/2//b/BgAHABMAHwAVACYA/P8TAAwAEgAWAP3/CgD6/wEACgAEAP///v/1/+r/6P/1/+r/BQDd//D/7P/x/wIA6P/0//L//P/o/+v/4v/V/+D/zv/g//b//f/8//D/+P/z/+f/2f/k/+T/+v/q/+v/6//4//j/6P/3//H/0v+//9P/0P/i/9z/9f8TAAAAEQD0//r/4f/0/+T/6P/y/+L/BAD5////9f/9//r/5P/z/+3/8v/7/+j/9P/9//r/BgAQACQAJwATABkAGQADABQACwAGAAwAAgD2/w0AFQAFAAYA+v/x/+T/7P/r//f/BAAMABQACQAeABkADwAUABcAFQAdAAoAEwAmAAkAFQAKAAYAHQAEAAkA2//p/+z/6v8DAAoAAAD///X//v8fABwAEQD6//n/7v/+//n/EQD2//T/CQDx/+//+//4/wAA9v/x//r/7f/w//7/8f8IAPr/CQAGABYACAD5//z/9P/2//T/+//5//P/8v8DAPH/+//7//H/+P/v/wEA6f/4//r//v8SAP//BAD2/xYA/f8HAAwADgAEAPj/CwAWACYAFgATAPj//f/2/wEA/f8GAAcABQALABMAJQAaABAACgD///H/AgAGAA0ADAAIABQADwARAAkABAABAAoA8P8EAPr/BAALAAwACAAAAAQAGQALAPr/DgD4/wQABQD0//H/AAAXABUA9v8BAO//5//1/+f/4//w/wYAFgATAAcABQATAC0AHQACAA4AGAAUAAcAEwAaAAwACQD///n/8v/t/+7/9v8CAPH/AgD5/wQABwAFABAACwAGAAsADQD2/w4ACQATAP3/5P/1/+n/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9P/2/wcAAgD7//L/5//h/+z/6P/k/+j/9P///wEAAgAAAPT/CAACAAoABgALAA0ABwACAB8AJwAhABkAIQAhACQAFAAiABMADQAVABoAHgAfAC0AHAAsADcAPAA4ADYAPABEAEIANwA0ADoATQBWAE4AWwBNAEgAUABBAEkAQQA3ADQAIwAjABoAGAAKAAsABAD+/wEA/P8UAAIA8//d/9f/7//p/97/3v/O/8D/wP/P/+L/+P/q//P/9v////j/AAAQAAoAFwANADAANgAyABMAEAABAPn/4v/Y/9v/3f/f/9f/1/++/8H/rv+r/6f/qv+c/53/pP+s/6P/lv+c/5r/qv+y/7D/tf+8/7z/y//G/83/2P/Z/+X/3v/m/93/4//b/+r/AwAGAA4AFQAKAAwAFAAeABkAEQAmAC0AIAAVABoABgAjABkAFAAMAAUADgAdACoAIAAXAPX/9P/1//j//f/8/+v/7P/3/wAAAADv/+//5//u/+//AgAEAP7/6//p/+P/4f/o/9//8v/i//n/8f/6//P/8P/v//T/DgAXAA8ACAASABwAIQAnADMAGgAqAB8AKgAlADIAOAA9AEEAJQAtAC4ANgAkACoAGAAIAAMABwD2//L/4f/i/+H/2//T/8n/z//U/9//7P/k/+n/6f/0//7/CQAVAAkA+f8PACIAKgAoACkAJwAoAC4AKQATAAsACgAMABoAAAD4/wUA+v/4//v/9v/v/+z/5//r/+P/8P/v//H/4P/h/+P/2v/a/8b/2v/Y/9r/1v/U/+D/7f/7/xoAIgAxAD8ANQA0ACoAMAA7ADYAQgAvAC8ALgAyAB4AGAATABQAFwAQABYADQADAAIA+P/y//X/6//o/97/5v/O/8v/vv+5/7j/vf++/8v/4v/Z/9v/6P/s//D/7/8HABAAFwAYACcAKAAyACoAKQAnACUALwAwAD8APQAyADQAPAA1ADUAPABHADMAFgASABkAGQAJAAkA/P/x//3/+f/h/9z/4P/W/+D/5P/n/+b/5v/5//b//f/3//3/AwALAA0ADQAaAA4AFwAKAA0A/v/+////+f/0//D/AwDv//n/BQD+//j/5//j/+z/5P/5//r/7f/n/9//6P/a/+j/8v/l/+//8v/x//b/5//3/wgADAARACIALgAfAAAA+/8BAA0AGwAgACMAGwAYABoAFwAKAAoA6P/E/7j/xP/B/83/uv+v/7r/xf/T/+P/7f/4/wcA///1/wMAGgAlABQAFwAeABUALAA0ADQAPAAqADMALQAyAD4AMwA2ACUAHwAmACAAAwDy/+3/9v/0//H/3//k/+r/8f8CAPj/6//U/+v//f/3/wsACwAbAO3/3P/6/xkAJwAkABQABQADAB0AFwATAAgA+v/9/wgAHAAHAAAA5v/g/+D//v8ZAAoA/f8JABoA/v/w/xMAFwAfAC4ALwAiAAUA//////v/BAD+/wkA+v/q/+T/9//3//v/8v/q//H/2//p//b/+v/1//D/AQDp/9//6f/P/87/yf/Q/9z/4f/n/9b/1//1/xEA+f/3//z/EwAcAP//AwD3//f////v////AgAEAAsAGAAUAP//EgAQAP7/AgAOABAA+P8AAAcAIAAPAAQAHgAYABAAAQDt//T/4//i/wUAFgD9/wEA//8AAPn/4v/p/+z/6v/8//T/DgAmABcABAD9/xsAIwAaAAsADwAMAP//FAAtABsA/v8MABkA/f/7/+L/yv+g/7v/1/+8/8H/2f/l/9X/tv+//83/7f/1/+n/5P/Y/+7/BgAFAO///f8ZACMAAgD+/+v/6f/v/+//AgATADEAQgBMACoAIQARABoAGgAmABgAHAAeAB8ABQAfACQA+f8GAAwA6f///w0A9P/h/wQAIAAAAPD/6/8LAPP/2//n/w0A9f/u/wMA/P/Z/9H/5//P/8z/9v/o/9n/5v/n/+n/3v/z/wEA5f/i//T////z//D/9/8RAB8ACwAPADUAEwD5/wIA/f8FADIAMwABAOn/AAAKAAsA3//I/9P/7P8MAPj/5f///+//w//F//P/8P/v//n/4//h/woAMAAMAP7/AAAKAEwAXQAwACMAEAAwAGwAgABmADMALwBGADAAIAAuAEEAEQD6/wgA6f/c/9n/5//v/wkADwAFANj/2P/V/7//yP/x/wMAyv+t//3/OwAMABcAGwAgADoAMQAGAAIAMwA2ADIAXAA8ANf/LQBsADAARwDq/5P/IQAjAOf/x//D/9f/6f8GAPz/BQDl/8L/9/8iAMP/sf/O/9L/1f/d/8D/5P/2/wQA7f8QACoADgAbADEAQABAAG8AdABHACkAUQBvAJIAVwBDABoAFwBDAEIAEQDx/yYA6P/Z/+z/4P8KAO3/4f/2/xcAIwD7/9f/yP8fAA4A1v/5/97/uv8KAPP/zf/f/9r/x//V//j/4//g/9f/5/8GADgA5v/v/yYAAQAEABcAHQDi/9r/+P8cAAoABgAHADkAQQDz/83/8P83AC4A9f/N/8n//P8PAAsADQDO//f/8//P/8j/y//W/97/uP+l/x0AJwDO/+T/+v/t//X/7f/i/9P/3P/g//X/AgAMABIAEwD1/8j/3P8AAP//4P/K//7/DgDx/9z/qv/W/xEA+//x//3/5f/B/wEABAA4ADEA9v/x/xsAKQDz/xcAJQDV/7P/CAANABcAMQAZAP//6P8eABkA0f/z//7/AgAwADAAAQD+/yEABAD1/xUAHgAUAPz/AQAnAC0AIQDm/93/EgDK//b/EQDS/9T//P/+/7L/xP/l/wsA2P+i/yAAEAC1/67/v/8JAND/ov/F/8T/AAA5ADIAs/+//93/2f+9/7P/w//v/+z/4f8DAPf/BQDz/93/5f9RADoAx//f/y8AVwBkACkAIgAdAEAAbgAVAOT/9v9bAPD/zv/s//v/FwDb/9L/+P8PAOn/+f8OAOH/5v/r/0QARgABAP//BwA5ABQAAwAMACkAAABMAHUAKQApAPz/MgA8AOT/wP8XAAIAwP+f/9X/6v8GAPD/kP/A/9v/zv+T/87/yP+w/7v/xv+h/87/AgAGACsAEQAVADsADQDn/z4AfwCPAEkAawCQAIwASwAtADwAMgCBAG8AaQBDAEgAiQByADIA5v/2/1UAaQD1//b/HgBMAGUATwA4AAAA+f8NAP7/6f/y/9j/5f8YAOP/+v9RAP//t//O/8f/HgAuAA4A9f/w//b/y//T/8f/xf/t/3EARwDg/wkAEgA9ABwAHAAhAP3/zv/O/zcAKQD2/5X/8f8+AA8A//8CANz/KgBSANr/5v8UAOv/DgBIAAsACwAAAPf/LgBEAA4AIwAHAP//HwAcANj/x//t/7H/CQAXABoAMgATABQABgAIACEAAQATAOv/AQBPACQA+P+W/+n/4v8PACwABgAHAAsA8v/Q/xUAHwDa/4j/v/8LAEsAOQD7/+j/OQAJAP3/IQDg/woALwBJAC8AGwAOAAUA9//2/9L/1f/K/8D/HwBIADIAiP+E/8b/w/9CAAEAYP+R/yYARADC/3v/vv8DAJ7/c/+H/63/zv/A/8P/0////wUAwv/h//7/y//Q/w4A7f+f//f/IwD6/wMAAADl/4v/OP+P/9n/e/+R//D/FQDk//r/BACl/3v/9f+Z/7f/2f/d/xYAMACQAD0ABADG/wQAQgA0AAYA+/8MAFQAnABVAF8A3v8sAJkAJACV/+7/4v+Z/y8AYAAiAP//GAArABIA7P8OACsA+v/A/y4AKAAwADwA8f8RAA4ACACN/4X/7v+T/6//HwDd/+D/zv9CAHIA0//H/0YA+f9Y/wEAIQDe/x0AcwBbAB8AHgA9AN7/3/8wABEAAQDT/w4AaABwAE0ABwC9/7v/4f8gAOz/AQDJ/9f/CQAbADIA///0/8H/BQAcAAcA9P/H/9D/VgARAOv/FwABABIAEAAEALn/FAAwAAoAxP8DAGEASAAkAC0A8f8LABoA+f9mANn/xP/s/wkAFwDI/7P/yv9jAIgA7//J/xEASQA5ANT//f/t/z8AkQBxAAQA3/8hAAoA8//g/3r/ev/P/wkA5v8QAGQABQCU/7j/AACs/33/u/8bABgAKQAbACsA3f8IAGgAqP+w//X/KAAzAC4ANAB+AEkAJwBPABYAKwBnAD0AEAAmADYAYwA3AIAA9P/p/2oAOgD9/wcA8P8BAPr/wf9FAC4AWQBmACgADAAtAPL/0/8kAD0AKgA2AFAASQBCACEA8f+g/woAYQByABgAtv/r/1wAEQDH/xEAtf+F/wAAFQD//9r/xf8cAAYA1/9FAA4AjP/G/+X/GwA1AOj/2/+K/+n/PwAUAMb/sf/y/0IABAAIAOP/n//C/+X/GgAaABIAAQDT/7r/8//j/wEAt/+j/+D/GQDr/5L/u//g//b/wf8XACkAEQDr//b/JgDv/7H/EwD8//X/VABu/77/5QBGAM//jwB5AGAAsv9E/wAAKABaAGEA6f/b/yUA0P++/5D/pv88ABwA0//J/4f/7/9NAAUA+//8/83/CQANAHUAnQA6AGUADAAXAEQA6v81AIgA1//U/1sAKADh/y8AMQAkAE4A2v+o/53/q//9////tP/B/7f/if98/63/yv/h/5P/Q//z/9L/Zf/h/wwAHwAIALn/6P/Q/w8AegAfAND/AQBOAOL/tf8tACgAk/+9/0YAqP+J/wEAFgAWAN7/3P8dAFIAz/+S/+n/bAAIAO7/NAD7/yYACgAbAC8ALgAPAOz/FQDW/2T/AwA1AAYAAgAeAEwATQAIAML//P8VAPT/8/9UABwAu/+R//P/WQDI/2z/s/82ALr/pv/j/97/CgCE/77/FQDq/+T/x//V//f/nf/L//b/8P/g/67/BAAwAB0AyP/l/xoANAAyADIAHQAMANL/0//1//f/gwC8AM4AnABiACUAFwA8AEIARQBcACkAZQCdADoAEAAlAPv/o//a/wIA1//O/8j/vf/2//7/rv9+/+X/NwDl//T/WAD4/7r/0v9RAA4ADwBoAFsAfwA7AFUATQAQAPX/PAApADcATgAyAOX/QAA7ANX/8v/U/xYAWQALAO7/SAAGACYA7f/Y/5D/rP/N/0oACADa/1QA+/9IAO3/4v/h//H/1v8MAMT/1//t/+H/5v+W//z/YAA6ALj/3v/t//H/xv8EAO3/LAD3//7/IQAVABsADwAtADAAPwABAIAAJgAQAGwATwAxAF0APwAiADIAzv8zAAIA9P9TABkAuv/C//H/AQDI/93/8P+T/7f/4P/B/8b/tv+O/7H/yv/B/6j/kP8SAEAAk/+T//H/5v/F/xMAbQARANz///8lACAABQAKACQAWQBhAD8AAQD8/zEAMgDv/1QARQDg/1EAWADv/+L/HADF/5L/6/8pAA8A9P8aAP7/BwAvAO//pv9r/8f/+f/8/yEA6v/V/9j///8vACUA2P/D/+7/GQAaAO//IAAgAPb/KgCAAGQAFQDv//3////g/zUARwDh/9P/KQCYACEAif+2/+v/AwD2/+j/1P/3/yEABgD9//T//f/V/87/2f8BAAYA6v+2/9X/HwAhAA0AIADt//j/JQAjADgAOADr/+7/EgAsAF8A6f8SAIUACwAJAA4AXf+c/9f/rP/f//r/1//k/9//CADv/5//av9N/0D/iv/k/1z/rP8XADMA4v+k/wYAAQDm/xEAVgBDABAA5P9IAFgABgASAPD/3v8YABEA4P/e/6//m//r/1AAIgC2//n/WABPAIz/fP8ZAND/Yf+F/+3/AwAdAF4A1v/W//H/3/8FAMb/tf8XAB4ADQA1AFMAOgBvAFUA/f9cAGYAFgDd/53/0f8SABQARgAHAMz/FACCAD0Atv+r/+j/1P/J/z0AAQDx//X/5/8FAPX/KQATAMf/uP+s/yoAcwAtACIA0f80AGoARQAGAND/5f8xADAA3v/c/2gAZwAlAEkANQAYAN7/CwD+/8f/q/8OAB8Axv8dADIAJQBpACgAqP/c/8j/7f88ACEA8f/0//r/IwBDAOj/9//5/ykALQAUAAUARACWAP7/4f9dAGkAFADi/9f/DQA0AAgA3f/e/0MAYQBDABkA/v/h/xsASgAWAAsA9P8zAEIARQANAC0AIAD0/w4ACwArACUANgBNABEAtf8OAAMA4f/C/+L/1/+u//L/3//t//r/MADt/8j//v/M//H/CgCl/9T/LwA3AAkA3v8uABEAGADH/+X/tv+//wgAyP8eAAcA9v9QAFYAAgAbAF0AJwAAABAAEgBfACoA4v8XANn/NABIAML/fv/M/zEAKQByAC8AJAAnAPz/YgAhALr/1P/y/xkA2v+8//3/8/+r/+f/tv9r/8L/m/+N/xIALgA5APb/l/8eAFYA/////+z/JgD5/+n/uf8JAJIADwDB/4z/AABNACwA1f/c/ycAJQDM/6P/8//f/yUAHQDG/wYA6P+n/8f/4P/J/5//lf/7/wIA9v8qADAA9f/G/wIAAgDl/9n/yv/b/yYAHAAoAOf/q//2/yEA8v8lABkA9//0//3/GQAIACcACQDi/wkAzP+9/+7/HgAHAM7//P8XAC8A+v/4//L/qv/M/9z/2f+g/w0ATAA+ACgA2f8gAAIA3v/8/wQAHQAJADEAOAD+/+z/LgAcABcAEQDh/xoAMgAmAPX/0/8KABwANwAqAOb/p//J/+L/zv/z/+n/4//V/9f/CwDe/7r/+f8KALr//f8eANz/uP/K/73/9P8eACgAAAD8/y4AGAAZANn/1f/s/9P/mv/e/xsARAA/AF0AMQDG/+r/3P/1/9n/3P/M/wQAQwBCABoAyP/M//D/1P/N////x/+n/6r/PQBrABEA9P8CAFIAPADC/5//NwBUABAAKwA+AGgAbgAHABoALAAeACcAHAAUAAIAUwAiAFMAbAAeABoAGwAEADsAWADx/7r/IgBbACEAMgASAP3/9P/6/yUAEADj/8X/BQALADEAPQDV/wwAOgBBAO//4P8sAAUAkv+p/wIAEAAfAL3/BwAGACEAAQDX/+b/BgANACAAHQBXAHIAFAAxAFgAgQAQAAUAHwBIAEAAYwBSADkAEgD0/z4AAgAFAOb/3v8RABEAMABFAOT/CQAOAMv/wv+2/6P/pP+f/4v/AQAZANT/qf8jAPb/+//h/17/t/+s/9X////8/w4AfwA2AO7/QQAqAEMADgDG/xoARgAcABcAxf/o/xAAZgBQAM3/of/1/0MAQADZ/8D/EQAvACkA/v8KAC4A5v+w/wwAIAAyAPX/ov/l/ygAGAD7////JAAMABAA9f+t/wcA3//e/wsARQB3ACoACgDa/9//uP9p/4f/mv/D/+v/GwAeAAoA/P8CANr/y/+V/7v/3v+p/8T/3P8AAEIAUwDW/8T/CgAQAOD/mP/B/yEAAQDt/xwAbgAzALb/q//1/zoADwDL/5r/1P87ABAA9P8DAEQAOwDy/9f/t//r/+D/uf8BAFYAKgDV/yEA+f/D//H/7v+7/97/3v8jADwAGgDs/83/JgBEAEIA+f+v/+T/BQDH/9n/FADP/9j/BgAjAO//BACy/8T/y/+v/9f/uP///w4ATAAzACMAtv+T/8X/wv/0/woA+P/t////6/9/ADsAJQAdALH/x//4/wgA+f/h/zkAYgAVADsAMwBbAFkA3//7/+P/zv++/wgA///A/w8AJADw/+n/p/96/9D/yv+a/6f/2//8/+n/DwA/AAcAy//F/+z/9f8aAAkADwAUABIAiABVANr/yf/C/zAAPwCp/83/DQAcANj/6f9GAE0AFQCj/73/8/8AAMP/O/9//xMALQB4AEEAx/8NAAkAXwBbANb/zf/t/yIAPQBaAJUAbAARADoAjgB0ACsAEgDm/+j/XgB4AG8AaQAeAPv/UwBPAPT/CwAEABAAMwAXAA0AKADy//b/KQAUAB8APwAeAM//IwAGAOH/+v/s/xsAOgASAAkAFwDi/7r/lf+7/+H/DgD7/+r/UwAMABUABADz//j//v8XABUAGAD1//X/4/8yADMA+f/1/ykASQAsAPD/2/8IAGIAHwC0/zQAiwBRAEUA8/+l/9X/xv8BABwAJgAQALz/+P8YABcA1P+g/7n/wP/t/+H/AwB3AO7/oP8EAOb/9/8HAMz/yP/+/xMAKQDZ/8T/GgCuAIQA7f8YAB0AAADl/wIAEAAmAB8AJQAqADUAXQAqAJT/jv8kAE8AGQDB/8P/FQAYADsAKgCW/6//HwDY/87/BQAxADwAHQBmAFgA+P/6//P/EQB+AEUA1P8HADcAFwAsADUADwDz/8D/5P8gAP3/jf93/83//f8cACsAHQC2/8b/+v/6/woA2f/7//L/8v8RAEQAUgAsAND/hP/2/xYA5//O/8j/AgAkAOn/AwAFAMX/pv/E/97/1v+2/6j/8f/s/9j/qv/W/xQAAwCc/3j/DADR/7b/yP/2/+f/4f8MADcAFQCX/9v/GQDD/9//z//j/2oAJADr//X/1P+n/7r/v//+/zsA9/8IABgAJQBBAC0A/f+1/6n/BAAqAPP/BgAeABQA2P8FABIAJgAoAMf/tf/N/wIAIwDd/7D/2v8xADoA8f+4/7//vv+x/8b/HgDv/97/k//p/4EAQQD9/5T/nf/Z//D/EwAbADAASQALABoANAD//9r////p/xsAKgAhADcA8v8FAI0AbAAwAPf/wf8IADAAOAC2/4b/5v8rAC0AFgAKABIA2P+u/+//7//w/+//EgDS/wcAUQDx/8z/k//k/0UASwATAIr/8P8rAMP/zP/d/8D/zf/L/+P/1//a/yEANwANAD8AWwD3/97/0P/0/1QASAAoACcAKwCiAGkA7f9UAGEAAwDv/+D/GQBOAFsATwDj/9T/MACHAI0AMwABAAgASAAqANL/5f8VAC4A8v/J/x8AQAAcAAUA4f8hAP//1//a/+P/9//s/yUAZgAgAOT/MAAiAFEAJwAVAGgAQgDp/9D/UQCOAFAAIwDl/xMAQgD3//j/yP85AH8AcAAZAKr/BwAwAAEA7P+u/7P/AQDW/wAAFgAFAPD/BwAHABwAJAAqAEMANAB4ADIA1v8MAFMAfwBpACAALAAiANT/RgAFAOD/HwDg/87/rf8UADEAyf+a/+3/SADt/53/z/8ZADEABwC8/9v/9//n/wAA+f/o/+j/0v/V/wAAFwD9/6b/EwB0ANv/8P/+//7/KADK/+P/PADn/9r/RQB2AEkA2/+4/+r/wP/d/+v/0//O/7n/GgBzADkA9f8TADkAVgDs/3//pP8QAAsALAAJAOr/LQAiAM3/i/8+/7D/PAD9/8//kP/g/zsATQC9/73/yv/p//b/pf+V/6//+v8WACUABwAfAOb/u/++/8D/5P/k/8//tv/v//7/NAAEANz/3P+B/6n/xP/F//D/o/+5/xoAeABRANb/iP/G/w8AKgC//0//rP8mAEUAOwD5/7j/3//H/9H/2/+x/+7/CgDh//f/OQBOAA8AEQA6AO3/BADa/7f//v/2/9n/GQArAAoAv//H/6r/yf/2/+n/vP+K/8b/SgBoABkA7//r/ycAGgCu/3//wf8MADUAFwDu/0QAYAArABwAVwAUAM3/3P8hACMACwBNACsAJABSADYAIgDv/93/9v8EACYArf9D/83/PQAeANj/wP+F/77/xf+x/8j/LgAlAAcA4f8TACcA4v8KAPL/+P8HAPH/4/9KAFYAOQAZAPj/OQAUAP//+f/i/zIACQAEABoABAAiADIAGAAHADQA8P+6/83/9P8OAEMA3f+z/9v/3v/p/57/o/+6/x4APACT/8b/XgBFAB4AFQANAAMAHgDm/wIADgBDAGkAhQBwABIAEgD9/wYAAAAQAN//LgABABgAXABbAC0A+v/Y/yMAggAWAK3/6f9FAEoACgAlAJwAWAD2/+X/AAAWACgA+f8kABoAOQAeAMn/NQBdAA4AxP/H/xoAXwDy/97/4v8+AIcANgAWAOn/2P87AEwARAAyACwAZgB7AHwAIwDy/6n/mP/q/yQAQABeAEMA0P8XADsAIQAcAM//of/f/z0ABwDF////PwAnACkABQD9/yIA+f+v/+n/VABQABQArP8BAEkAcwBCAP3/IABRAAEA0P/q/8v/BQAEADIAIQAaAPL/rP/H/5X/vv/p/7L/qf/3/y0APACj/5P/5v/t/wUAk/+1/xsA/f/O//H/HABHAOH/t/8PACkARQDm/8//AAAOABMAPgAzAB8A3P8KAEUA+v/R/9j/2//q/97/u/8DAN3/uP/2/0QASgAAAKD/jf/v/0kAIgCv/7b/GwB7AGQAPgANAPD/nP/F/xkAzv8GAAQA5P8xAGsAHwDM/7r/sv8eAA0ApP/H/wsA0f/y/2MANwDJ/9H/0v/V/xQA7f+//9D/9/9XAHIAAgDy/xQA6//v/7f/xv+2/5v/kv/x/xoATgAtAMr/y//T/9r/VP9P/7z/5//f/9L/+P8UAPX/yP8SAAMAnf+3/ywAHADr//z/AgDv/w8AKwAiAEcAAwDa/wAAGwDe/67/7P/c//3/4P/g//H/1v+w/67/y/8RAOj/of+Z/93/IgDo/w4A1v/H/+L/9P8pAP7/GgDz/9f/MgAMAP7/OQDf/9X/7P/5/0wABgCu/8z/BgBCACwAFAD7/1MAiAAuAOv/9/////L/LgD8/woAMQDR/wMAQgAhACkAFwAFAA8A6//K/+H/EQD//xEASgBKAAsAAQDM/8L/RQAOALP/wf/3/0MAFgApACEADADr/7X/BAA0APL/4f+s/67/HwBYADUA+//z/z4AdgAVAO3/BwALAPf/CgAVAEwARgBBADgA+/8hAAMAFwAiAPL/EgABAFMAUwAzANz/w/8LAAoAFQDr/8T/+P8qADAAGADO/+7/DADo/9L/DQAuAMz/DAAwABQAQwAXAPT/8f/u/y0AMQDo/9D/8P8ZAC4AGwAqADUA+//M/woAYAD//wYAAwAHAC8ASAB6ADIAOQBEAE8AZgAXAN//GgBAACYAPABQADwATwAlAOD/IgA6AO7/sf+R/6//NgBUAAwA9f8QAP////8gALz/8P////P/WABTADQARgDx/9H/JgDs/+b/GgABADUAWwAYAAYA4/8mAAkAzf/p/+//8/+3/+f/EAArAEgA7f/m/yAAEgAvAMb/m//O/8L/w//m/wUAHgDN/93/CgDg/xcA7//W/8j/jf8GABMAwv/b/ycA/f/j/5P/xf8NAAgA+//s/wUA8P/w/wIA4f8SADUA2v+y/7j/BQDW/7P/8P/6/xAA9P/u/xgAGgADAPH/x//8/+r/3/8YAPH/GQAjAB4AEwDZ//b/DQDb/+X/JQAZAPf/AQD6/x0AJgDh/+X/8f8XAPb/4P/b/+7/9f/b/+H/1/80AAYA+v/b/6T/7////7r/vP/Y/+//PwAQAML/AgD4/9v/r/+a/8b/rf/h/+P/8f8iAB4Au//M/zQAKADn/2n/tP/8//f/CgDh/+P/HgAbAN7/4f8XAC4AAADG/9b/HQAxABYAyf/f/xMAAQDC/5//z/8aAAwAh/+m/+j//v8GAMr/3v8ZAMP/1v/1/8r//P8cAC0A/f/o/+P/5f/P/97/4f/h/x4AJAAxAC8AWAA6ABcA9//K//H/SQAnAB8ASgBoAFIAJwASACgASQAmAOz/uP/v/yAAQgAnAPP/ZABIABkACQDs//7/KQD7/xsADQAvAB8AFgANAA0ANwDp/wEA3/9CAC0A7P/2/wcAGAADAPr/HgAqAC0AIQD6/wYAMQBEACoASQA2AEIAQQArADEAMgAzABsAXwAWADUAIwAtAE0AFAAIANv/KwDy/9z/CgAmACoA8f/K//r/DADz/6z/sP/6//j/zP/K/xYACADx/7j/vP/r/+z/5f/f//r//f/g/xkAKQAjABQA5f/u/xAAAQDR/73/+v88ADwACQDe/wEAFADj/+D/9v8NAAgA+////x8AGQARADIACAD5/xwAGgDc/8T/6/87AD8ACgD9/wYATQAlAM3/w//0/ywATgAJAAoAggBnAA0AAAA+AFMABQDW/83/BABCACMADwAcAA8ADQAWABUAJQDq//j/6//e/wkAFQAVABYAIwBEAA4A1P+S/6b/3//R//L/AAAjAP7/AwAAAOL/DwD1/+z/s//F/+z/7f/j//v/AAAMACAAFQA4ADkAJQDk/+n/AwAZAPz/GQANAEYAMQAnAEIABgDr/+v/LgAvAP7/7P8rADYAFwALAPf/0/+///H/xf+i/9X/uf/D//v/CQAiAPP/1v/j/wIA3f/I/9f/xv+w/8X/HwAMABsAEwAGAAwA9P/E/7P/s//N/9r/4P/n/wIAFgADAOf/+P8wAAkA3P/F/9H/+f8+ADQAEwAeADUAUQAFAAcAEgDr/9n/2f8VAC4AAwDq/w8AOwArAPX/zf/o/+n/of+e/wgAHwApAA8A//9ZAEkA2f/F/+7/yP+4/5z/qf/o/8H/6v/s/9D////t/9z/vP/M/8f/vf/V/8L//f/+/+j/BQDZ/9z/0//d/7X/s/+l/6v/6f/W/77/s//d/wkABwDz/+T/8//P/9r/s//a/+j/7//7//j/AgAGAPL/xv/n//D/2//7/xgA+v8LADYALwD3/////v8FAOX/6f/3/xwAPwAxACAAOABwADoAFgAHABEAAADW/+v/2P8rADMA+f/y/x4APQAdABYAz//6/xQAEQAGAB0ATABEADMACwBBAD0ALwD6//3/AAAqACgA9P/y/x0ATwBXACkA/P8IAAIAEAD+//r/IwBOAEEAMgApAEMAKwACAPr/+f8WAO7/6/8WABIAHwAtAD0AFgAqACIAFwD9//j/BQDv/xYA8f/8/wQAUgB3ABcA4P///wYAxv++/8//7//v/xwAFAApACUABgDp/9z/BAAOAPv/7P/7/z0AfwBeAD0APQBAABwAFQD7/9//+v8AAMb/7/9AAFAAJQAYABwAIADn/8T/zv/B/97/+P8UABQAJgAoADkAKAAOAPv/5P/l/wQAMwAKABYAEgARACcAHwAfABsA/v8gACsAGAAGACQAOQA0AFUAPAA3ACAADwAeAO//8f8QACUAHQAyAFEARQAXAPP/xf/l/93/uv+//97/CQDu/wsA7v/y/9//of+z/7b/1P/o//X/7v/i/+P/DQAVAPn/2//x//7/6v/U/7X/y//W/+n/1//c//z/FgD//+T/u//q//r/AgDw//D/MgAeABUA3//1/x4ABQD8//z/DgACAAAA8f/b/73/6f/d/9X/vv/x/wYA5v/G/9X/6//e/97/6v8HACoAFQD4/wQAGgAYAPD/CwAeACwABgDd/+H/6v8GANj/uv+x/97/7P/I/7v/4//w//H/4f/Y//j//f/e/77/y//6//f/0f/S/x0ABgDT/+L/5v8KAAwA6v/a//r/BgAlAB8ALQBYAFYAPgAoAC4ALQAXAAUAIAAoABkABADt////9//+//L/2//Q/9f/2f/Y/8b/4f/z/+f/7f/s/+D//P8FANH/n//C/wEA3P+o/8D/1P/D/87/yv/B/+n/5//W/9r/9v/7/+3/AAAPAAYA/f8lACgAAwD2/yIALwABANr/6f8xAAYA8v/6/yYAJwALAPz/yf/b/wIAEAAdABIAKQAmABgALQBDAD0AGwAxAEIAIQD9//3/KAAOAOn/9v8jADsACgC1/+X/AADy/+P/1v/7/wgAIwAEAAkAGAA9APj/3/8SAAcA5//r/wEA+v8EAPD/9P/1/w8AFAD6/wYA+v/5/xcANwBNADIAOABCAGAAQgAhACMALwAkABoAHwA0ACoAKAA/AC4AGgD+/xIAKQANAA0AGQAXACIAHgAYAB4AMQAJAPf/8//2/wIA1f/n/woA///y/+z/1P/t/+//4v/p/wIA8P/G/+3/5f/0//H/+v/2/woAHQDu/+L//P8bAAYA2v/h//f/8//i/8f/yf/a/97/3v/x/ysAIAAAACAAKwAYAPj///8pABoAEgAeACcAJQAtAA8ABQARAA4ABQALAAkA9//x/+z/AwAEAAsABQD1/ygAMABIAAsABQAkACQAKAAQAAoADAAWAAcAFAAaAAkA/f/k/9r/CQAIAOz/zv/v/xMA8v/w/w4AAgD5/+P/8v8IAAQA///z//D/6v/r//D/6v/j//r/GQAQAAQAIQAaACUAGQDk//n/DAAhAO//y//s/wEA+//5//H//f8CAOf/6f/8/+n/2P/a/wAA8//V/9v/7P8BAPD/DgAdABUADgDt/xgAGgAEAPz/7//8/wYADgD2/9////8ZAAsA4P/z/wEACgAOABEAEQAkADIAFwD1/wEA/v/3/+z/9/8YABEADwD5/w8A9f/u/wcA5//E/9X/BAD1/+X/2v/2//v/9//r/+7/+v////v/AAAiABsADQAQAAMAFwANAAQA7f/8//T/4f/b/9j/4f/u//r/BQD6/xAAAgADAA0ACQAiAAcABwD2//j/8//u//T/8f/x/wYAEgD1//7/BAALAAoA8//7//X/9v/7/wEABADx/+n/5f/m/9z/0//l/+j/0P/D/9n/0f/J/9L/0v/b/+n/6f+1/9P/9v/z/+T/3//6/xMACwAQAAoA+v/7//v/EAACAOj///8EAPH/2/8GAAcABwAMAAQA6P/h/+v/9f/n/+f/+//8/+3/8f8CAAQA5//q/wIABQAaAAkAAAD0/+3/AgAMAPv/CAAUAPX/+//6/wQA+f/+/wEA/v8FAP//CwAFAP7/FgALAPf/9//5/wUAAQAGAAYAAgD4/wIABAADAAQAAwAEAAsADgAZABgADgAVACsANgAhACgAHwAjABkAHwAoACQAFAAMAB4AJQAcABEABAAXABcA+f/7/wEAGwAYAB0AKAAzADMAGQAkACkAGAD4/wAA+P8BAAsABwD0/+L/5P/0/+P/5f/4//f/FgALAAEA/P8GABMAAgAJABIAEwARAAoADAAHAAwADwAMABIAGgAgABgADwAPABoACADn/9//+v8YAP3/AAAQAB0AIwATAA0AEAAVAA0AFgAWABIAGgAnAC4AIAAYAAAACQADAPz/8//s//X/BQAUAAYACgANABEAAwATACIADwAUABwAFwATAAQAHQAaABgAHgABAPn/9f8CAAoACwAIAPL/7//2/wIA5//h//r/+P/+//j/+P/+/wcACAAMAAoABQAEAPv//f8EAOn/9//W/9z/6//5/+r/4f/6/xwAGwAQAAsA/v/0//L/6f/d/+X/+/8HAAUA/f/8/wgA9//q/+r/7P/k/9T/7P/v//H/9f/o/+D/6v/2//T/8f/k//T/2f/e/9//3f/q/+b/6v/g/9j/3P/p//j/2//g/+j/8P/x//f//P/1//T/8P/q/+j/7f/a/9f/3//m/8z/yv/N/9z/8f/P/9D/3v/0//7/8P/z/+r/9//5/xQABAAbAAMA+/////n//f/3/wEAAgAaABAACgACAPb////4/+n/6f/r/wMA+v/z//f/4f/0/9//5//q/+H/8f/w//L//f8MAPj/9v/u//b//P8AAAoA/v8KAAoAAgD//w0AFgANAAMABwAIAAEA8//t//b/7//3/+//6v/n//f//f/y/wAAEgAWAB4AHwAmACIAJgAgABYADwAgACwAMQAxACcAIwAUAA4ACgASAP7/9f/p/+///f/8//3/DAAJABEADwADAAUACAAAAAEA/f8IAAkAHQAnACUAGwAJAAcA+/8QAAsAEwAUAAgADwAdAAsAIwAaACMAIAAiACQAGgAOAPb/9P/+/+//5//5/wYABAD6//n/+P/2/wkA/P8PAAgA/P8HAOz//P/0/wMACQAVABcADwARAA0A7P/k/+L/9f8AAPz//P8FAAIABwAOABUAEgAJAAkA8v/6//H///8JABcADAAIAAsABQD3//f/7//v/wAA//8GAPj/BwD8/wEA8v/4/+//9v8AAA0AGgAMABUACAAEAPb/+f/5/wkA+P/q/+n/8P/6//n/AAABAAYAAgDz//v/6v/6/wEA+/8NAAQADAADAAYACwANAAwABAAMAAMACQD9/wIA/P8DAAsA+//x//v/CgAUAAYA///8/w4AFQATACMAJQAyACoAIwASAB8AJwAaABEADAAVACAAIAAKAAIADgAUABwADQAcAC0AKwASAP//CwALAAgAAwALABQACgD///z/6f/v//X/AwD7//3//P8CAPj/8f/4//z/DQADAAQABQAEAAAA///7//D/BgAEAAcA/P8CAAAA/P/s//D/9//z//P/6//p//T/+P8AAAcACwADAAUAAgD4//f/DwACAPL/2P/m//T/8P/p/+f/8P/x/+7/8//0/wkAAgAAAPb/9P/m//T/5P/n/+//8P/t//r/9f/6//L/4f/l//P/9//r/+r/6v/v/+v/5f/t/+z/7//q//P/6v/w//j/DAAFAP//AgD4//P/9/8IAAkAGQAgAAoABwABAAwAAgD1//H/7//v//X/6//3//n/AwAHAPr/9/8AAPb/+f/q//n/+P/+//b/9v/x//D/5//t/+r/5v/u/+b/4P/0//b/5f/2/wAA8v/0//z/AwD4////CgAFAP3/8/8AAPv/5//m/+n/5v/h/+z/4P/Z/+f/6v/z//L/6f/y//7/8v/4/+j/2v/k/+L/7f/z//b/8f/6/wIAAQD7/wUA+v8LAAIAAwAOAA0AAwD8//j//f/z//j//f/9/wgADAAHAA8AGgAGAA8AGgAjABkA//8DAPH/8v/2//b//P8JAAIABAAKABEAFgANAP7/CgAWABkAJgAbABAAGQARABsAHQAVAB0AGgASABAABQAFAAQACwAWAAsABwANAAcAAQDv//n/BAADAAkAEwAZACIAFwAQABAAIwAcAAkACQABABUAFQAHAAsAAAACAAEA9/8CAAcAFwAUAB8AJAAcACAAKAAeABIAEQAHAA8AEAAIAP7//v8AAP7//f8TABIA+f/x//z/9//+//n/7v/2/wUAAQD9//L/6f/2/+//AQD//wgADQACAPj//v/7/wcAAgD+//j/BgAEAAEACQAKABcAAQD9//7//P8GABEADQAQAB0AGwAbABQADwAiABwAHwAnAB4ABAD4/wgABwAKABwAGAAkABUAHwAtACcAHgAfABwAFAAWABgAFwAaAB0AEwAUAAQADAD///n/8P/u////BAADAPr/CgANAA0AGQAJABAAJgAcAA4ACwAHAAwAAAD4//r/DAAMABAACQD6//3/8f/j/+P/5//z/+j/4f/s//T/5v/s//X/4f/e/9H/2f/s/+P/5v/t/+P/4f/v/+H/6P/q/+X/6v/s/+f/6//o/+X/6f/w//H/4P/a/9v/3//i/+D/4f/q/+3/9//r/+f/2f/j/9b/3//k/9v/zf/d/9r/5v/k/+r/4f/m/+X/3P/x/9z/1//a/+n/7v/5//v/9/8CAPz/CAAAAPL//v/7//n/+/8GAAAA7v/q//v/8v/3//b/+f/5/wwA/v8KAPz/+f/z//n/5f/1//L/9v/6//v/9//2/wEA+P/r/+r/BAALAAAABwAOAAUABwAHAAUA+//6//3/+P/3//f/9P/n/+D/3v/q/+L/8f/6//T/7P/x//L/3v/m//L/9f/u/+b/8//6//D/8//7/+v/6P/p/+v//P/3//T/9P/1//T//P8EAAMAAQAIAAEABQAHAP3/GAAOAAwAFQANABEACwAJABIA/v8HAAkACAANACEAEQAiACIAGAAeADIALwAlABIABQD+/w4AEAAXACAAGgAQABcADwAQABoAFAAPAB0AIgAYABIAGgAfACAAEQALAAwABgASACgAJwANAB0AIgA/AFIAOwAvACcABwAIABoAAQAFAPL/JgBKAAMAJQBSAPf/BQAuAOz/JQAxAPT/JwA0APz/HQAsABIAQgAsABgAKQAVAPb/LwAUAPz/GQACAPT/EAAdAAYAHwAjAAoAJAAkAAkAEgAfABIAFgAPAAUAEAD6/wwAGAAWAAgAHgD6//D/FAADAOv//P/9/97/6//s/+z/7P/2/+r/8//1/+X/5f/e/9v/6f/l/+b/+f/x/+H/7f/n/+D/+//5/+r/8f/u/+P/6v/p/wcACgAIAPv/BwD7//b/EQAHAAsADQD+//P/BAAPAA0AFAD1/+f/4f/V/9j/9P/2//L//f/4/wAA9v/y//L/+P/v/+n/6f/o/+7/7v/q/+n/8f8BAAQA+v/y/wkAAgD8/+r/6v/l/+f/8P/4//D/6P/c/9L/0f/N/9X/x//d/8//0P/Q/9z/2P/i/+n/6v/z//n/9f/p/+b/2//j/+3/3v/w//f/+P8AAPf//v8FAP3/6//o//n//P8NAAIA8f/v/+T/7//k/+f//v/3/+7/7v/z/+n/4P/f/+z/7f/i/93/6f8BAPH/8v8GAAoAEAAEAP//5//Y/87/2f/d/+//+P/3/+//7v/+//T/6//s/wwAFAAIAPL/6f/p/w4ADAAIAP7/7v/9//P/BgD3//f/+v/5//7/AAAHAAUAGgASABAAEQAWABMAIwASACgAEAASAA0ACwAGAAkAEQAKABIAAwAEAP7/+v/7/wIACgAHAP7/EQAPAAsACgACAP7/9P/y/+7/AQADAA8ABgD5//v/+f/z//H/6//5/+3/7//w////BwD6//b/+f8JABUAIgAnAB0ADgAFABcADAANAAwADwAQABcAKQAfACoAKwAlABoAHgA0ADAAMQAqADsAOQA+ACkALgA0AD0AOQA+ADYALwAnACEAHAAXAA4ADQAWABIACwAQABQACwAZABQAJQAdAA0ABAD///z/6P/x//7/AQD8/wUADQAZABoADAAVAP3/BAD6/+7/9f/5//n//v8KAAMA9f/8/wYADgANAAIABgD4//H/3f/r/+L/4//p//T/+f////v/9f/z/+X/4//Y/+j/3//0//T/8//x/wAABgAJAPT/6v/j/+v/9f/6//3/+v/9//r/8v/w//j/5v/n/9v/1P/n//L//P/x/+z/9v/1/+r/9P/3//X/8f8EAAwAFAATAAYAAwDz/wAA+v8WABsAKAAyADIAGwATAAsADgATABYAFAA0ADUA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8f/3/wcAGAARAPr/9P/s//f/6v/r/+r/9f/r//n/+v/l/+P/2P/a/+j/8//y/+7/7//t/+D/5v/a/+f/9P/8/x0ADgAHAP3//f8XABIAFgAXAA8ACAAMABMACgAcACUALAAuACgANwA5ADkANwAoACkALwAjADcARgBZAFcATgBPAEQAVwBKAE0AOwA2ADkANAA3ADIALQAmAB8AJQArADoAPQA0ADcAHgAkAB8ALAAnACIAJgAtACEAGwAcABEADQAIAPz/DQAAAPb/CQD3////+P/6//P/AgAEAAEA9/8AAP7/8P/q/9f/5P/W/9//0v/L/8v/2/++/8z/0v/S/+L/1P/b/93/5v/q//L/6v/n/+b/6P/p/93/4f/W/8z/wv/W/9T/6//u//3/6P/l/+X/1P/Y/8j/uf/l/9v/1//p/+D/8v/s//H/6v/m/9z/6f/g/+v/3P/s/+T/7v/t/+P/8//t////9v8AAOX/5P/l/+v//v/n/+T/5//q/+j/8P/R/+X/4f/j/+f/8P/q//D/7f/g/+n/4P/5/+j/BAD4/wAA+v8GAAsACwD//+v//P/3/wMA9P/0//v/9f/4//z/9P/p/+X/4v/p/+H/4f/L/87/3P/V/+H/7f/v/+r/3P/n/+L/7v/z//H/9P/x/wIA/P/p//j/+v/r//T/6P/r/87/6P/s/+P/7v/h//L/4v/t/+n/9P/b/83/3//l/wcA//8IAP7/CwAGAP3/9v/m//D/9v8KAPD/7f/n//n/8P/3//T/EwAGAA4AFAAQABwAEwATABUAIgAeABIAFgAQAAcABgAPAAYAEQAdACoAKAApABIAGAAYAAcAGAAQACYAJwAgABIADQAOAA8AGAAYABMAAQARAAQAAgD9//r////t//j/7v/3/wgABQAbACUAJQAPAAUACAALAB4AHQArACsAJwAZACEAIgA3AEIAOQBCADkANQAyAC4AOAArACgAQAA5ADMALQA5ADYAMgAuACYAOgApADQAKgA1ADIAPQAwADkALAAqACAADgAgABoAFwADAAgA8v/5/+//8P/2//n/8f/x//3//P/v/+L/zP/b/+b/5P/t/+X/4v/o/+X/3//1//P/AgDq/+T/4v/Y/9P/1P/k/+v/8P/q//r/9v/x//D/9/////T/+v/w//v/CwALAAEA7v/z/wAADgADAAMAEwAdAB0ACgAVACMADAARACQAFgAZAA0AGQASABYABwAPACQAFgAOAAYACgABAPP/+v8NAAQAEwAVACwAGwAXAA4AEgAQABEACgARAAIA9f8LAAkABgD//wgAFQAAAPn/AgAYAAsA+P/t//z/+v/4/wUAAAATAAcABwAHAAUA8v/x/+v/6//p//H/DwAMAPT/4f/X/+z/5P/f/+3/9P/r/+P/3f/j/+n/3//v//j/BgAAAAAA8v/f/9f/0P/j/+f/3//U/9b/5P/J/8r/1P/N/8T/tf+8/8L/xP+4/8b/xv+1/6X/r//L/9j/yv/Y/9n/5P+//8X/3v/M/8P/xP/n//H/7v/p/+z/6v/X/9D/5f/S/+r/+v/b/+X/6P/r/9///f/8/wAAAQAAAAQABAAUAA8AKAAkACIAGwAaABkAKwAxADsANQA6AD4ANwAvADQANAAuACoAFQAdABcAIgAWAB4AIgASAA4A//8GAPz/+v8GABUABgD6//3/+v8IABEAAgAFAPr/9P/q/+7/9//z/+r/6v/s/+b/7v/3/+f/3P/g/+z/9f/5//z/9v/3/+7/6//5/93/4P/5/wYAAQAKAPr//P/9//L//v8BAP3//v/2/+f//////wQA6//h//z/9P/r//f/BAADAPT/6/8KAP3/AwACACMAFwAMAA0AGgAKABAACwD4/+b/9P/6/wMADgAXABkACgAGAAUAFgAVAAgAEwAZABIAEgAZAAwAGwAbABcAJAApADcALgA7ADoAMQAkACMALwAwADEAMwAvAEkAUgA0AC4AMgA+ADMALAAvADcANwA1ADEALwA7ADoAJAAjAC0AKQAhAB4AKgAwACoAGgAQAAAACQASAAwAEwAPAA4ACgD//wgADQACAOr/5v/s//T/8//z//j/7v/t/+j/7//1//P/4P/a/+X/6//r/9X/6P/Z/9v/0f/T/9n/z//D/8j/y//P/9X/5P/4/+j/6f/s//L/8f/+//3/BQAJAAIA+f/7/+//7P/1//b//v/p/wAA+v/0//j/+v///wgADgAUABEAEQAXAB4AJQAcABQAJAAiACwAJAAVABIABgARAAoAGAAUACMAJQAYABMAEgARAAcADwAFABIADgAPAA4AGAAIABAAEgANAPr/AAAYABUAFQAUABQAFQAKAPn//v/3/x0AFwASABcADwALABIABQAMAAIAAAAQAA8ABgD4/xIADAAjABQAEQAKAAMAAQDv/+r/6P/v/+3/9P/t/+H/6P/f/9f/2f/k/9v/1P/h//b/+v/5/+//4//v/+X/3P/U/8r/0P++/8P/t/+//7L/s/+t/63/u/+x/8j/wP+z/8H/qP+0/7f/wP/D/8P/xv/V/87/yv/W/9P/2//L/+f/6v/n/wAA/f/9/+P/3//l//r/+/8BAPb/BQDt//H/8v/v/wgABAAEAAAACQAVAB4AHAArACgALgAsACUAHQArACcAJQAmACgAIQAmABoAFAAMAA8ABwAKABIAEwANAAgAIQAkADIAIAAkACMAFgAhABoALAArACUAFgAUABIAEwAPABEADAAOAAkA8//9/wEAAgAKACIAHAAYAAUADwAKAAIABwAMAAoAAQABAPr/BwAFAA4ADQARAAoAEAAAAPH/+P/z//f/9P/4//n//v8FAP7/9//0/+v/5v/h/+3/6v/n/+L/1//f/+X/5P/Y/+v/3v/W/9r/3//j/+D/2v/b/9b/3f/u//z/CwAXAAwACAD+//v/9P/e/+T/5P/s//D/6v/d/8//2P/f/97/6////wgAGAAUABIAIAAoAB8AJgAmADQAKwA3ADcAMgAvACcAHAAUABUAEAAbABwAHAAnACEAGwAnACYAIgAiAB0AEAAQACgAIwAlACkAOQA6ADYALAAbAAMA/v/9/w8AEQAMAAoADwAbABgAHgASABoAJQAWABcAGQAUAA8ABQAEAAUA8//o/+L/8//w//r/AQAYAA4ABgD1//X/+//3/wUADgAWAB0AHwAcABYACwAQAAcAAQD+/xEABAANAPz/7/8CAOr/5v/U/9X/2f/S/9//8v/y/+r/3v/o//b/7f/7/wUABgD4/wAA+P8IAPn/AAD9//T/9//0/wAA9P/t/+7/6v/v/+v/8P8BAAMAFgAbABoAFQAPABcAHAAcAB4ACwAJAAYACAAUAAwAEAAGAAIABgACAP7/BwAUAA0ACAASAB8ADQD//wIADgAMAP//FwAjAB8AFQAGAAkADQAMABgADQAJAP7//f/9//v/8f/w/+D/7f/g/+r/9v/x////+f/z/+f/3//a/9//5P/l/9r/3//p/93/4v/i/+n/8v/9//3//v/+//P/7f/7/+r/6P/p//H/+P/7//v/5v/o/+P/4P/i/+b/9P/z//n/4f/J/9D/0f/T/9X/2v/q/+3//P/9/wEAAwAEABEADAAEAAYAAwABAAAABgD9//X/BQAGAAQAAAD6//P//f/+/wYAAgDu//T/+f/6//f/AQAJAPX/9f/9//T/8f/3/+f/7f/m//r/DwALAA0ABQD+/wQABgAVABMABwAFAP7/9P/3/+v/8f/u/+7/5//p//H/7v/s/+j/5//4/wkACgAWAP3/AwD2//n/AwAOAAsACAABAPn/DgAJAA4AAwD+//j/7//v//v/7f/2//L/7/8MAAkAEAD5//D/3P/r/+X/1f/N/8X/wv+9/8r/xv/D/7r/tP+5/73/xP/N/9f/3v/m/+H/7f/9//T/6//u//D/7f/u/+v/5//k/+b/3//y/wEA9f/7//T/BwD3//b/7P/5//r/8/8DAAoAFwAQAA8AFQATABkAEQAaACYAJwArACUANQAyACcALgA0ADkAQgAuACgAJgA9ACgALwA4ADAAOwA+AD8AQAA/ADwANgAxADAAOAA8ADAANgA7AC4AMgA3AD0ANAAxADsAMQA5ACsAJwAfACsAMAAyADIANwApABQAHwArACsAIAAkACcAIgAgACMAEgATABAACgAKAA4AJQAmADoAMgAyACsAHgASABIABQAJAA4ACgAIAAUA/v8BAP7/8v/5/+v/5P/k//X/7//0//X/8v/q/97/2//s/+H/6P/X/+H/3v/j/+X/4f/c/+r/6//j/+n/6P/d/+P/2//i/+v/4v/c/+X/5f/8//r/BwADAAgABwABAP//BAANAPr/AAAAAAsACgAHAA8AAAASAPX///8EAP3/EQAFAAMABAAMAB8AFQAPABgAFAAQAAQAEAAoAB8AGgAPABsADAD//wsAFAAYAAEA/v/u//j/7v/p//b/6P/l/9r/7//v/wIA8P/z//L/5v/q/+//9P/n//T/7f/n/+j/9//x/wIA+/8AAPr/9P/k//L/7P/4//b/7v/i/9L/0//U/9j/1v/d/8b/1//P/9X/yP/J/8L/xv/R/8v/2f/g/9X/2P/Z/9L/yv/G/8z/1v/T/9L/0//W/9r/3P/e/+r/8//k/9//7P/p/+n/3v/R/9H/4//q//j/6v/u/+b/7//w//v//P8EAAMA9P/x//H//f8MAAcAEQAXABUAFAAJAAsACwAMAA4A/P/1/wMABgAaAA8AEgAWABIAGAAMAAIAFQAUAAwAFAAUACAAIgAkABwAGAAOAAEABQALABUALgAfABgADgAJABAAFgAUABAADAAaAB4AIQAkABsAGQD8/+7/6v/y/wAABQDz//D/6P/u/+7/7P8AAP7/FwADAAkABwAFAAQA/P//////BgAGABUADAALAAsA+P/9/wQA/f8FAP7/8v/7/wMADgAIABIAFgAOAAoA7f/w//j/BgAGAPj//P/2/wEAAQABABUABQADAPr/FQAbAB4AKQAcAB4AFwAeABwAGAAYACgADAAXACUAIQAyACUAKwAdADoALQA2ABoACgAJAAwAEQAlACsAFwATAAUADQAJAA8AFQAMACoAEAAZAAQABQARAAwABAD6//7/6v/s/+f/4//U/9v/9P8BAA4AGwArACoAKgAtAB8ADgAFAA8AFAAMAAoAEAD///r/+v8EAPz//P8HABkAGgAMAAcADQAJAAUAEAANAAIAAwD7//z/+f/2/wIAAgANAAMABgD//woAAgD4//T/6v/4//3/8v/z//b/9//8/xcAEgAMAP3/CgAEAAEACgD+//n/8v/x//r/CAD9//7/BQAJAAoACwD8/wEACwAMAPv/+//4/wcA/f8GAAcA//8KAAYABwAKABkAGAAXAB0AIgAGAAkA///z//f/+P/0//v/BQAEAPv/+//v/+H/5v/3/+n/5f/i/9n/4P/p/+j/3//e/9z/5P/t//f/9f/w//r/7v/o/+X/6f/7/wEA+P/2/wEA/f8JAAwADAAEAAAA9v/w//f/7f/h/+T/8P/q//P/7f/k/9f/4//o/9//8P8BAP3//P8DAAUA3//N/+f/5//V/9L/4f////D/3P/R//T/6P/p/9L/2P/x/wUA+v/u//r/9P/k/93/7v8UAPL/3f/A/9j/xv+5/7X/qv/A/7H/uf+y/6r/wP/H/8H/vv/S/8X/wP/N/9r/2v/h//b/9/8DAAIA9f8JAA0ACAD///7/BgALAAoAJAAqADkAMwAwAEUAWABZAFUAXABIAEoASQBOAGcAZQBYAE8AVgBSAFgAZQBmAFsAYwBdAGgAcgBdAGoAUgBXAEkASQBGAEgAUgBKAE0ARQA7AC8ALwAgABsAAwALAAoA+P/5//X/+//2/+7/5v/V/+X/1v/V/97/0//M/7r/qf+x/6r/oP+r/67/nP+h/5D/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AQADAPr//f8ZABkAFwAJAB8ALgAqABkAEQAWAC4AOAAzACYAIQAcABEAAwDK/7r/q//N/+D/yf+7/6T/sf+y/8D/rf+f/4f/mv+n/7v/wP/E/+X/9f8EAAQAGQAaABcAHgAhACkANAArABQAJQA6ACIACQD7//P/0P/F/7v/s/+P/47/qv+p/7j/mP+p/67/x//N//b/DgANAAMACAAAAPX/IAArADwAJQATABUAHAAbAAcA/P/z//3/CQD7//b/5//A/8H/xP/P/9D/zv/r/9r/2f/l//H/5P/X/93/8v/y/+3/+/8RABwALAAuADsANAAlADQAPQA0ABcACgADABcAFAAGAAgAHAAjACIAGQD//+X/5f/s/wEACgAGAAIAAwArACwAGADz/+z/8P/5/+f/2f/j//H/6P/p//v//v8BAOn/6P/r//v/+v8SACgAEwAZABEADgAAAOD/BAD+/+3//P8BAAUADgD7//j/3P/t/+7/4v/g/8z/6f/3//3/9f/0//j/+P/7//b/6v/r//r/EQAzADYAOAAoACQAIQBDAD8AMQA5ADYAMgAxAD0AOQAvABYACAACAPL//P8UACMAJQAmABMAHAAbABcAJAAIAPL/4v/8/wAA/v/6/wIAAQDy/+r/8v/4/8//w//V//D/1//I/9f/6P/z/w4AEAD6////HAAUABUADwA2ADUAJgAnADAAHwAUACUAMAAvABQACgAjACoAJgA5ACkALwAiABAA/f8CAAUAHAAJAPb/DwAIAPj///8IAPr/3//d/+//2v/K/+T/9v/k/+z/6P/n/+v/5//2//P/9P8LAAIAAgADAB4AMQAYABEAFQARABwALwBRAGIATQBJAEYAMQAxACsAJgAMAPr/+f/6/+b/6f/g/9v/5f/c/83/wv++/7L/wf/Y/+D/8f/u//n/8P/l/+v/2P/V/8b/yf/H/93/7f/6/wIAFwAjABUA///0/+b/7f8JACcALwAoADUAIwAlAC8ALQAjAAEA//8PAAwADwAKABQAGAACAAEA7f/0//b/6//l//L/8v/1//b/CAAEAPH/8/8JAAQA9v/z//n/+f/s//3/FgAbAAIAEgAhAB8ACwATABYAIAAMAAkAGQAbAAEA//////r/+P/f/+//3P/z//f/8v/y/+7/6v/z/+n/9v/9/w0AFAAWAPf/4//v//r/EAD7//L/9//v/+L/0//G/8L/uf/N/9H/yf/M/9X/zv/M/7r/xP/m/+P/4f/x//7/8v/v//P/9f/m/9//4v/i/+T/9f8QAAsA6f/g/9//4//e/8f/w/+6/9D/y//e/+X/2//d/9j/5P/l/9z/6P/4/w8ADAAGAAQA7v/0/wsAEAAMABAAFgATAAgA/f/z/wUA8v/w//r////y/+n/3v/o/+n/6v/x/+f/9//7//v//f8PAP3/AgAFAA4AEwAQAAsAAgAYABQACQANABMAKwAxADsAQAA7AEAAOwBYAFYAUwBIAEgAOABKAFgAWwBkAHAAaQB1AHYAbQBjAGgAWAA8ACkANQA6AC4ACwAJABMAEAD7/+7/3f/J/87/2f/P/7v/xP/N/9//6//j/9b/3//k/+X/1//z//7/5//5/w0AAQDq//z//f/b/7f/vf/J/7j/oP+f/5//kv+Y/57/pP+Y/6P/lP9x/4P/sf+t/63/yf/T/93/+f8DAAQAMgBKAFcATgBKAFwAWgBzAG8AWABSAFcAVwBKAF4AawBgAF8ASABEADQADgARAAYABwAFAAoAFgAMAAMABgD2/wMAFQAUAAsADwARABYAIAAgADYANgAyACUAIwAvADgAKQAtAA4A9P/3//z//P/1//L/+/8MAAEACwAEAAEA9v/x//j/7v/t/w4AFQD1//3/LwAwABQABgASAAwA+v/2//3/7//e//b/3v/L/9r/2P/Y/8L/xf/U/8P/vP+2/8z/x//X/73/t//v/wAA6f/U/+T/zv/P/9j/BwD7//b/JwAaABEAHQAxADMAKgA6AEYALAAmAEUANwAuAFQARgAbACcAKAADABQAOgA3ACAAIAARAAUA9P/q/+//2P/j/wsAHADC/5v/v/+t/5X/o//I/8b/t/+v/8b/3v/o/9b/7//4/wAALwAbACMAMgA8AEwANQAuACkARwBNAA4A/v8XABEABgACAPr/EAAMAAoAGwAkABoAHwA/ADMABAAcADcA4////0AAIQD8/xwACgD2/9H/p/+//9//rv+i/7D/tv+k/5H/pf/D/57/if+k/77/h/+R/8P/tv+k/8r/5v/d/+H/4f/o//r/+f/+/wwA/v8HABAADAALAC4AGgD8/x8AAQDK/wwAJgDv//r/MAAeAO//AwA2AP//2P/9/x4AJQD+/w4ALAAdADYA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HQAOAAkAEQAgAA4A//8FAPr/7v/l/+//9f/2//v/DAARABIAEAAXAAEAAAAPACUAAwDo/wIAFwAEAOr/BwAKAAQA5//m/93/2P/W/+3/+f/v//f/7f/k/+X/EAAdABgA+f///wQA3v/b//j/EgAcABYAEwABAAEABAD5/9n/5P/1//7/6v/6/ysAKwAYABQAGQAFAPz///8GAP//CAAMAAkA/v/1//z//P/5//b/DAAFAPb/+//9/+///P8LAAwAEwABAPv/+f/j/9f/2f/m/97/4//q/+f/6P/g/+r/8//2//z/CADs/+D/8f/0//H///8ZACMA/f/6/xEAHgAWACMAKwAbABAADgAPABIAEwAcACUAKwA0ABgAAAACAPD/6f/0//H/9v/r/woACgDk/9n/5//4/wMAAgAHAP//4f8CAAgAGQAPAA8AAAADAAkADAARABQA+//8/+f/5//m/+P/2f/Y/97/3f/X/7v/y//J/8z/xf/Y/9L/zf/X/8b/y//L/8j/1f/N/8L/wf+9/9X/3//k/+r/4v/Y/87/1//l//P/6//z/wYABAAIAAYAEQANAAEA8P/i/9n/7//9/+r/4f/Z//X/+//8/+z//v8CAAMA/v/k/+H/9v/9/+f/9P/k/+r/6//6/xUA/f/h/+v/7f/x//X/7P/1//v/9v/x//f/+/8FAAcA/v8FAAsABwALAPv///8GAB8ACgANAAMABgAPAA4ABQD8/xgAHgAFAAQAKQAsABYAEwAkACQAIwAiACEANQA5ADIAIgAWACUAIwAVABkAJAAqABkAIQAOAAcABwAUAA8AEQAgACMAFgADAP3/JQA9ABkADwAMAB8ANQAeAA8AIwAaAPT/1P/w/w4AFgAGAAsAHAAaAPP/4//g/+j/+/8PAAgA/f8GABIAHgAGAAkABQAEAAYACwAPAB8AHgAWAAgADAA3ACsAIwArAEMASAAsACgAIQAgAB0AIwAqAB8AIAAdACkAIAAoABoAGAASABUACwAKAAUA/P8EAAgADwATABMAHwAYAAAAz//X//D/AwD0/+b/9/8HAPP/z//F/+L/9P/7/wMAAQABAP7/9P/o/+7/AgAQABkAGwAbABYAHwAaAB8AIgAmAAgABgAHAP3/AgATABAADgABAAAA+v/w/wIA+//k/+j/8v/6/+z/8f/0//7/7v/g/9b/6P/j/+r/5f/i/97/5v/k/+j/8//0/wQAAQD1//3/EgD8/9r/0//u/+b/5//a/9r/6//p/9D/1//U/9L/4v/k/7j/x//g/9v/v/+4/8r/u/+//83/2P/X/+r/+v/4/+v/6//l/+//2v/o//n/3v/v//7/BgANAPn/EwARABcAIwAnACsALQAnABoAJwAtACUAEQAyABwAJAAbABgADAD1/+z/5P/x/+X/6v/4//L/BgD9/+v/7P/o/9r/1//K/9r/1//g//L/9v/7//v/6v/h/9//6P/0//n/AAAMAAwA/v/y//L//f8RABsAGAAWAAcAEwAUABcAHQAcACEAHQAgADIALgAPAB4ALQA3ABIACAD///T/8v/s//L/8v/r/+f/3P/Y/+X/9P/s//T/8P/8//3/+f////7/AgAUAAIACAAFAP3/BQAKABQADAD+////+P/z/+f/9P8JAPX/7v/m/+P/0f/d/97/5P/e/+H/7P/f/87/4v/o/+T/6f/n//j/8//v//r/7P/x/wwAGQAbABQAEQAcACUAJgAZAA0ABgALAB4AEwARAB0AKwAuACoAMgAnADMALQAxACUALQAoABsACAAbADIAKQAqADYANwAdACQAJwAmABEAGwAVAAMADQAUABgACgAMAAAABAACAPT/6P/s//H//v/+/+7/5P/r/wYA9//8/wMAHAARAAwAAwAEABkAIAAZABIABQACAA4ADQD9/+7/9v/x//n/+P/2//f//P8FAAsABgAMAAsABAAJAAMACgAMAAAA//8DAAsAEAAgACAAFwAXAAgA+v////7/+v/w/+n///8EAAQA/P8BAAAA9f/8//X/6v/6//j/3//Y/8r/0v/X/+D/2P/o//f/AgALAAsAAQD8//j//f8QABIABQAMAA0ADAAAABEAFwAcAB8AGgAkAB4AGAAGAPj/+v8VABEA+f8HAAYAEQAHAAQADAASAA4AHQARABIAAwAHABYAAgD6//7/7P/j/+P/8/8EAAcA+f/5//D/8P/w/+X/6v/o/+n/5v/r//D/9v/t/wAA+v///wgA9f/6//z/CQAEAPP/8P/r/+X/4//r/+P/zv/S/+7/9v/5//n/5P/a/9b/3v/Z/9j/3//2//j/7P/p/9n/6P/a/97/0P/c/+L/2//k/+n/9v/+/////P/y/wMABgASACcAIgAPAAEACQAQAAYAAQD3////+f/v//P/5//q/+L/0f/R/+P/9f/1//L/9//z/+P/7//u/+//9//7/wAA8P////r/GgAXAA0ADQAAAOj/5f/q/+D/7f/Z//L/CQATAAwADAAPABcABQAFAAYABQAgACEAIAANAP3/BQAeACIAEQAVABwAJAAfABwACgABAAYA+P/1//r/DQD9//b/8//1//H/6P/0//r/9P/q//L/9P/k/+v/9//r//n/8/8BAAcAAQAAAA0ACQALAP//BQAKAAsABgDz//v/9v8EAPj/BQD2//j/AwAFAAAA+f/3/wIA9P/m/+j/5P/w/wIA/f/+//7////5/wAAAQD5/+z/AgATAAoADQAKAAYA+v/4/wgAEQAUACQAIgAjACYAIgAkAB0AJgAeAA4AIwAkACgAMQAgACcAJAAjABwAIAAnACUACwASAAIAEgAWAAsAEAAEAAkAAwAEAAAADAAbAB0AEgADAAsACAD9//D/9P/u/+7/+/8PAAsAEgAJAPf/+P8GAP//9/8XABwAIAAVABMAGgAXACQAJAAjACIABQAGABAADQALAAcADQD9//n/BgACAP3/7//s//3/CwAKAAwA/f8JAPv//P/+//b/+v/6//j/6P/n/+7/8/8BAAUABwABAAsABAAJAP//GAAjABIADgASABEAFQALABUAFQAYAAsABgAFAPb/8f/p/+j/4//t//P/7f8AAAIA/f8DAAIA/P/t/+v/6//0/+3/5f/j/+H/1f/V/9X/1//l/+T/+f/x/+r/6P/m//D/8v8FAAQAAAD//xMAEAAAAP7/DAADAA8A+//7//r//v/6//v//v/4/wIA+v/x/+3/8f/j/+v/6//5/+v/7//o/+7/6//m/+X/5v8GAAEADADw/+X/0//J/9j/0P/l/+7/6P/o/+f/3P/h/+L/7f/y//f/+P/9/wUA+//3/wYAEQARAA4AEwACAPn/7f/d/+f/5//z/97/9P////r/BQD2/wUA/P/5//b/+v/8//3/CQAfAB8AFQAlABkAJgAuACoAHwALABQAGQALAAcACgAUAAsADQAQAB4AIgAlACQAHgAUABgADwD7/wkABQD8//j/9P8AAPr/+f/y//r/+//9//z/CAD4//v/+f/2//L/8P/0/+3/7//g//D/+//z//r/+P/3//D/6v/q//3/CwD9/wcAGQATABYAGAD5////AwAIAAEA9v8JAPj/8v/q//P/7v/1//H/7P/0/+7/+P8BAP7/9f/w/wEA/v/5/wMABwAEAAcAAAD2//T/8/8CAAAACwAFAPz////5//b/+f/1//X/8//9/wMAAAACAAUA9f/+//3/CQANACIAGwAQABYAFwAVAAUACQD/////CQAFABoACAAGABMAEwAbAA8ACwAJAAgAFAAZAAsADwAKAAAADwD8/wsAEAAMAAgACQAFAAMA+/8GAAUACQALAAAABgAGAPb/8v/k/8//yv/b/9H/1f/e/9v/4P/m//H/8P8BAPT/+//z/+3/8f/y//3/5/8EAAUADwAfABIAEQAXAA8AHAAOAP3//P/7/wMA//8JAAcACgD1/wUAFAADAA4AEAAKAAwA9v/q/+//8/8BAAsACgAMAAIAAQALAAcAAQAQABUAFgAOACMAHwAtACgAIgAnACwAJgAnABgAGgAbACMAHgAjAA0ADwANAAMAAgADAAcABwAUABMABgAIABAADgAHAAEA/v8BAPf/AAABAAoAFgAJAPj//P8HAAIABQD7/wIA///8//n/8P/j/+H/6//f/93/3P/W/+r/4P/6//P/9//4/woA/P8FAAQA+v8IABEAEwASABoACAAOAAkACgD2/+//7//7/wEADQD2//H/+f/r/+7/6P/5/+f/6f/k/+P/4//e/+X/7P/q/+//8f/z/w0ACQAfABIAHAAWAB0AFAAEAPv/GgAaABoADQAEAAQABgD4/+f/6v/y/+7/6v/1//z/AwDo/+n/8v8HAPr/AwASAAYADwAXAA0AAgD//xEADQACAAMAEAADABgAHQASAAwADwD8/wkABQDv//H/9v/i//H/8//4//f/+/8JAPj/8//w//D/4f/R/8X/yf/I/77/xP/G/83/wv/M/8P/uf+y/7L/vP+1/7z/uP+7/7H/xv/F/8v/wv/H/9D/tv+z/8b/u/+2/+H/5P/m//P/8//h/+r/7P/7//j/BQAUABsADwAPABkAFAAXAA8AHgAsAB8AIwApACIAJAAnAC0AKwAxADgAMwAtAEAAMgA8AEYAUgBXAEwAUQBTAFgASABKAF4AWgA8AEIARwBKAEMAUQBSAEwARQBSAEoARwBRAFcARQBCADkAPAA9AD4ANAAmAB8AGAAaABsADgAGAO//6//y/+D/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egB6AIQAbgBfAFUALAANAAoADQAPACMAHwAVACsASABRAC4ACQAAAO7/1//n/+T/zf/W/9P/3f/1/wIADwD//wEA8f/+/+//6f/i/9//4v/W/+n/AgASAAsAAADw/9H/u//R/7n/wP/C/7P/wv/c/wcA7/8DAA4AIgAKAAYACQAIAAEAyv/f//X/8//4/+7/DQD1/+b/0//g/8//of+e/2T/bv9j/3b/a/+P/7X/wP/V/+j/FwAOAB0APQA5AF0AZgBeAEUAEwA9ACoAOAAjACMAEQAXABEA///7//z/DQD3/+z/CQALAO3////X/+L/xv+z/+r/1f/O/9n/+P8AABgAIgAoADMAFABQADEADgAXAAsACADw/wIA8P8IAP7//P/v/+X/5//n//b/5v/p//D/BADZ/+D/z//Z/93/4//v//b/EwAeADEALQAbABQACQAOAAUA3P/6/+T/7P/U/7H/0//P/8T/yv/h/8j/vv/S/+H/3P/f/+j/9P8OAAYAGQAOABIAKAAkAD4AHAAWABcAHwA1ACYAFQD6//z/BwDb/9b/3f+6/5T/sP/L/7D/0P/h//b/7P/o/wkABwAhABIAFAASACsASwBEAEIAUgBnAFcATgBHAC4AFgAXANL/4f/M/6X/sf+x/8P/u/++/+j/+f///wEABwAoAB4AHwATAB8ADAAkAAsABAAeABgARABeAIEAegCJAG0AXgBtAHMAZgBEACgARgAfAP7//v8DAAsAAwAQAOj/9v/3/wIA4f/9/wIAAQD5/9//CQDb/wQA+//8/w0ACgALABgABgDn/+j/6P/U/7v/s/+7/8b/rv/X/+L/3P/j/9r/0//u//H/6//o//P/CAD2/wgAAAACABUAOAA2ADwASQBEAD8AIQAjABgAAgDy/wgA7f/l/wYA+/8OABEANAA8ADUAVwBQAEwANgAjADsANQArABMAIgAkABgANgBJADoARQAwACQARQAoABwA6f/e/7v/tP+t/5n/sf+r/4n/sf+5/8f/wv/T/83/x//Z/9n/y//H/9v/8P8SABkAQABAAGIAewBwAIkAcgBiAGMAfgBmAGIAQwBIADMAGgADAPT/CAACANv//v/9/+7/4P/S/+f/0P/O/83/zv/D/+X/3f/Q//z/9P/z/9L/wP/I/+D/yv/B/9b/1/+7/7v/xP/g/8H/yP/r/+T/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tP/p//H/0f/9//r/BgD6/wYALgAxADsAHgBIADAANACJAH0AZAA5AEIAKADq/7j/x/+t/6z/pf+l/6H/1v8RAAwABABnAH0AVQBkAHYAggAqAD0ATAAVABkALAAcAP//2//v/+f/x/+6/7X/y//W/+r/7v8GACEAOABJAFQAFwAWADsALwARAAcA7P/p/+r/1f/y/9f/0//T/wcA8v/g/9r/+//1/wQAEwAtAFkANQBAACsAMQA8ACcA/v/j//L/CwDS/97/6//j//b/AgAXABIABwAHAAoA/P/l/xEAQAA0AAcACgApAD0AHwAbADMA///t/xUAJwD8/wUAOgBlACwA9/8SAEYAJAD3/+r/2//l/w4ACADU//v/MQBJACMACAAPAFMANwAAAGIAVAAeACkAOgAJAAwAUQAtAM//7f/8/ywAJwAAAPz/BgAvAPX/CAD+/zQARAAiAP3/FwAuABIAEQDc/xgADADg/+7/5v/d/9//7P/e/7b/p//L/8P/uf/g/yAAGQD7/+D//f8fADkAKgAJAOr/5/8KAOb/3v/b/9f/4v/V/+L//f/r/77/kf+8/+r/w//H/6f/sP/j//v/uf+V/8f/6f/0/+H/5P8tAB8Aw//E//f/CgDz/+//0v/F/97/6P/j/+v/GAAwAC8AFgADABYA6P/L/7P/4//M/5//wf/r/+z/4P8UACYARwATAAEAOAA7AAsAxf/g/+z/7f/U/8v/4P/g//T/5//E/7D/1f/i/+3/vv/H/9v///8FAPD/NgD6/w4AQwA0APT/zv/p/+n/xP+U/73/BwAQAM3/rf/x/zkAQwAcAA0AGgAoACEAFwAPABMA8f8VABYA8P/z/yoAAgDR/+D/HABIAAUACAAeABoABwAPAAoADAANAC8AEAD0/wkAGQAPAPz/EQAVAPr/+P/6//j/4f8KACEADgAEABYADgAFAAcABwACAP7/+P8AAP//8P/p/9j/6P8GAP7//v/t/+b/4f/l//f/IQAlAB4AKgBCACAA//8FAAAA4v/k/wwAJwAdAPv/AgAbABEADQAkAB0AJgAcAAEAAwAJABUADwAtAAwACQAmADMAFwAwAFcAPQApAB0AGwD3/wIAAADw/97/2v/3/wAA/P/m/9v/9P8FAAYAIgATABYACAAGABUAKAAqACEAHAANAAEACwAxABIAyf/c/9n/5f/f/8D/1//L/8r/x//m//b/BAAEACEAPAAzACMAKwAlAC8AIwAiABEABwDj/wcAKwAWACQACQAbAPn/IwAqAAcAEAD7//j/HQA/ACUAHgAKABwAKQAYAA8A9v8OAAkA2//p/9r/+f/q/9X////o//D/7P/9/wkA5f/3/yQAEwAMAAAACAAmAB8AKQAwABwAEQAJAAkAFwAuACsACwDl/+D/w//K/+D/7P/l/+D/6f/p/+7/+P8UAOb/EgASABIAJQAhADQAJgArAAcAFwAoACYAAQAEAPX/9f/P/9T/5f/U/+L/CwAOAOn/9v/z/yoAGAARABUAGQAlADYALgAsAB0ADgAGAA8AFQAAAN7/zv/G/8b/u//D/9z/x/+9/8T/7P/v/+n/3f/a/93/DwD8/wYAEQDw//T/8v/5/+f/4f/a/9v/3v/v/+P/9v/p/+j/3//4/wAA+v8BABcAHQAWAA0ADAAMAPf//f///+//5f/b/9n/6f/2/+P/6P/q//H/+v/u/+7/4f/r/87/5f/y/+b/7v/4/xEADwAFAPv/8v8RAAkA1v/v/+n/1v/I/9L/5v/q/+3/8/8FAPH/EgAhAC8AHAAUAA0AEgAeAA0AEAAVAAYAEgD3//D/5v/f//X/9f8WAAMADgAeAP//BAAaAB4AJwAlACcAIwANAP7//f/1//b/+f/s//D/6P/i//z/AwD4//r/7f/n/+z/3v/a/+//4//x//b//P8PABkAJwAMAAoABwAKAAAAEwAgAPn/9v/s//P/5P/i/+//7v/f////7P/q/9n/5v/e/+b/+//h/wsADwAWAPX/6f/q/+j/7f/m/wQAAgDu//f/8f8AAO7/+v/9/wgAHAAJAAUA+/8DAA0ABgAGAAMAFwADABIAIAAYACwAHAAhABIAFgAXAAsA8/////T/DwANABYADwAPAP//+f8LAP3/BQADACUAEwAbAAAACwABABQAKwATAAgACAAKAA0ACAD0/wEA8/8WABsAIwAFABUAIgAeACIAFQAbABYAKwAJAPz/9//9//7/AADw/wMAAQATAAYACwAWABYAFAALAP7/7//s/wIADgAKAAYA+f8RABEAAAAJAPD/DgAYABsAIQAZABUAFwAMAAgA+//1/9r/2P/o/+//CgADABYACAD8/wgACAARAAoAEwAWABQAGgD8/wsA/f8FAAsAGQAXABgAGQAUAAIA+P/7//j/DQAEABsADAABAAcABgABABoAFwApABoA///m//r/AAD5//L/5v/w/+H/9P/z/+//3P/m/9//9//+/+n/6f/v//H/3//8/wEACgACAA0AEADx//7/BwD8//r////5//j/7f/v//3//P8JAPr/+v/n/+b/6//g/97/9v/0////AAD5/wUA7v8AAPP/9f/x//X/BADv//j/BwADAP//8v8GABAADQAaAAgAEQAOABYACgAcACAA8//9/wkAJAAXAOb/5f/X//X/FgD7//v/8v8BAP7/CgD///D/5//x/xIAHAADAPb/9v8JAAwA/P/6/wQAFQD1/+n/9v/z/+H/z//X/9j/5P/q//b/9P/Q/+X/2//y/+v/5P/a/9v/8v/t/wsAAAAAAPX/AAABAOT/8v8CAPL/8P8CAPL/AQAJABkACADz//7/8P/u//L/9P8GAP3/GQAHABEACQALAAAAAgDu//P/7//r//n//f/3/wAAHgAdABcAFQAZAAgADAAqABEAFgAKAB4AJgAeACEADAABAAsAFwAPAA0A+v/8//7/8f8BAO//8f/9/xQA9//w/+L/9/8CAAoADgAYAPz/8P8FAP7/DgAAAAYADQAHAAEACAACAAkADAD3/wEA+f8CAAIACAAaAP3/AwAKAAwA+f/q//z/AgD+/w4A+//Y/+D/+P/5//f//P/7/w4AFAAiACAAFwAOAPL/CQATACgADgAFABYAAgAXAO7/6v/y//3/DgAJAB8ADQAFAPv/AAAJAAcABQAJAAsABAARAPz/9//w/+n/9f/1/wIA8//t/+b/6f/c/+z/2f/Z/+P/4P///+z/7P/y//T/8f/v/+v//f8MAPf/BwAGAPr/+/8FAAsAEwAXABwAHgAOAAIACQARABAA/f8DAA4AAQDx//b/CQD2/+3/5v/x/wQAEwAqABYADAD5/wwAFwAOAB4ACQADAAYAEwAMAP3/CQAJABgAHwADAPz/CAAaAP7/+f/t/+3/AAAYADQALgAoACoARQAuAB8ALgAeADEANwBAADsAPgBKAEcANgA9AEEASgA8ADgANgAfACoAFwAFAPX/9/8AAPz//P/Y/9H/zP/V/8v/2v/0//L//P/7/+7/6P/u//L/BADh/9T/2//g/9H/y/+6/7v/tv+5/7r/vP/M/73/yf/C/8X/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AQD7/wgABgAUABYAGQAoACMALwAyADMAPQA/AEUARAA/ADoAKwAwACIAEwATAAYABgD3//3/CgAIAA0A+//+//j/+P/2//j/9f/r/+X/+f/p//H/7//w/93/0//a/9D/2v/E/87/yP/U/8H/w//J/8L/vf/C/8H/x//C/7j/vP/C/87/yv/I/7//xP/K/7v/w/+6/9D/0P/Z/9H/8f/w//X/4//x//X//v8bABYAIQAnACEAJAAtACwANAArAEQAUwByAHEAawBnAG8AbgBkAF4AYwBpAGcAXABVAFUAWABgAFwAWgBTAFcAVABSAD4ANgAwABkADQD5////9//u/+j/3f/Z/9f/1v/N/8f/w//L/7n/uP/A/8r/tf+3/7T/vf/S/9//8/8DAAMA7//7//f/EwAYAB0AFQAiABkADwAbACIAOAAyADsAPwBFAEYARABAADUAMAA5AC8AJQAuACQAJAAYAB0AEAANAAUADQAKABUADQALAAoA/v/2/+v/7f/z//X//f/z////+//5//7///8UABkADwAPAPj/CAADAPH/8P/v//r/AwD9/wQACAAGAPn/5P/T/97/3P/c/+H/4P/w//f/9v/3/wYA/P8HAAYAAgD9//r/9f/2//f/6f/0//X/AQAKAAcAEwAhACgAIwAQABgAEAAgABUAEgARABMAEwAjACcAJgAzADkANQAXAB0AGwAJAAoADwASABoADwADAP3//f8LAAYABgAJAAUA+//k/+P/2v/b/8r/vf/E/8b/uv/M/9//6P/n/97/z//K/83/v//R/9L/6P/g/9//4P/r//T/AQAMAPn/BQD3//f/9v/s//X/4//x/+z/5v/s//j/+P/1/wEA+//5//D/5//c/+H/3f/l/+D/4v/a/+H/4//n//D/7//1//T/8//w/+n/6//W/+L/2f/p/+f/8v/x/+z/8f/q/+//7v/m/+3/5v/j//b/6f/w//v/6P/p/+T/+f8AAAwAAAD///H///8PAAIABgD3//X/9P/7//X/9P/1/wMAAQATAPj/BAD///z/AgD0//n/AAABAPv/AgD8/wEA//8CAAEADwAZABQAGAAOABMAEQAJABMAAAAJAAMACgAEAPP/8v/1//X/7f/0/+P/7f/l/+D/4v/y/+j/6//r/+P/5P/h//H/5P/z/+//8v/3/+3/9f/w//f/BADv//P/5v/2/+T/9v/t//3//v/8//3/BwAUACQALgAxAC8AKgAvAB8AJwAZADQAJwAeACMAJAAlAC8AKwAkADQAKgAiACMANQAdADEAJAAsACsAKAAbAAUA+v/z/wcA9//5//v/7P/z//X/+P/7/w4AFwAEAA0AEwAeACkAJAASAAgA//8IAAcAEgARACAAIQAlACkAIgAiACcAGAAaABgAHwAeAB0AKQAuACwAHQAWAAcACwASABsAFAAYAA8AEQAKAAwADAANABgAFwAhACUAJAAuABQAHgANABMACAANABMAEgAaABgAFAAVABEAFAAJABMAFQAcABkADAANAAEADQAIAAwACQAUABIADgAEAAAA/P/5/+7/7P/x//r/BgADAAAA9P/x/+r/5P/a/9j/3v/i/9f/1//S/8//0v/S/+b/5P/q/+j/7v/t//n/+P8GAAoAFQAhACcAIQAeABQAFgAeAB8AKAAsACwANwA1ADMAJgAaAA0AEgAJABkAEgANABAADgD///r/+P/7//f/5v/u/9r/zP/L/9P/zv/Z/9v/6//j/9n/3//V/83/zv/G/8//yv/S/9j/2//g/+P/3P/j//L/8//4//7/+//3//7/7//p/9//5P/d/9L/4P/k/93/2v/s//H/+//2//b/8P/i/+v/8f/u//j/+P/y/+X/8v/7//b/2v/t/97/yP/R/93/4f/r/+7/8P8BAOn/7v/4//f/BgDu/9z/7P/m/+D/7P/c/9n/5f/l/+v/9v8NACQADgD7/+z//f/z//D/7v/0/+L/7//w/+v/6//s//7/+f/g/+n/4f/U/+v/2//S/+D/xP/M/+H/3P/V/+D/8v/7/wIA/v/+//T/BAD8/+n/+f/7/wgADwANAB0AJQAaABUAGAAYAAUACQABAPj/9/8EAAYADAAZABAADgAJABUAGAAUAAUADwASAB4AGwAUAA0AAQAdABcACgAZAAwACgAbAAcAAAAZAAUADgAJAPz/BgAgACUALAA3ACkANAA2ADIAFwAsACkAIQAjACQALAAYADAAIgAhACkAHgAlAA8AHwAbADIASAA1ADAALwAjAD4ABwAjABIACgAjACYAHgAJAAsA/v/v//T//f/x//D/6v/6/wQA8/8IAPz/CwAiAAcAFQAPAA0AGgAFACkA+f/6/xEABQAZAAwAKgBZAIEA1QDOALL/kf7r/hUAhACVAMv/MP95/9z/4P/B/7L/lv/p/8n/EgDHALsAaQDx/4z/HACNAKAAtf9M/xb/s/9tAAn/ev/I/13/ef/k/qn/nwAb/3X/pv9AAK4AVv8/AIoA0gA+AGn/cgCzAdMBYAFmAB//if+wAn8B8/4Y/wv/RgCTACoAbP54/qUBAQKw/3b8NP/rA2wAwv7//tz/OgFqAQwAZv2V/hED+QC2/ToAIwAnAPz/WAECAGX+IQF3A6X+j/usAYQC7gAxAS/+4PvjAGMFTwD0+gL/awGQA0QCsPnR/MsCfQXNAK74Gf5xA0YC0wGe/bv6hwCwBW8B5/oX/7UBCAKJAFD+U/7k/esEAAGU/uYAbP36ASL/6v6FAtz+e/4x/qEBUwLX/qL92PozAowG3P+6+dz6ZQOKBCUCQPxs+ecBNwQ8ASkAP/tF/EEEbwXJ/k/7PP3pAbcD5QED/vP6BgD5A1wBxP2d/TkAiAB3AZsBYv0a/E4AcARM/yr86AC8/rv+jQHqAVABVfn6/NQEpQRP/rf5WP8DBPkEif0g+3oCDQEvAPECBfyT/z8D0f+9/xb96QKIAr/7ggEiAg//Jf9F/P4CjQKv/UcAiv19ANUDpf9Z/tj/kP89AmL/af68Aa4AxwAZ/5D/9AJzARH7V/5nBlwCZP6++2P+8gVvAef85PvjA98C8P3O/T0AYAUo/VL+lAAAALgBUP8Z/qACrQIz/e38SwB+AT8BmgH//tv6mP4TCWEBPfjD/acFrgMl/kX+x/7/AKP/ugKtAxP8S/kuARAIdATO+/b3aPxWBpIIE/wq+Hf+OwMwBhkCFfm5+qsD7QdyAKb2PwADBx0AKv5Z/3YCPP9c/+YAVABDAqT+xgC//m3+VAOv/zX9+v6EAo0DJvxu/DMBIASv/v38QQKP/7H+H/4FBN8AmvyJ/gAC4wHg/rn+lf7G/ikCgAW3+1H6pv9dBnUE+fsn+Zf/EwYnAi3/qfvk/2UCTADgATH9h/wgBakBl/58/XP96wNKAScAdv/7/CwBrwINAMX+q/7G/6UA+wK7/8n8tP+JA4f/S/ziASoBVv5O/0wCBQK1/aL+MQBb/fwDXwFC/iQASf3x/08CCQKt/Nv84AO3Bsj85vhN/t0BvwbMAHT6pf3D/eMFkAbY+G76SgE6BJwCe/3R/aX9PwJQB5z9w/mL/SMCMwd8Adj6QPssA2EGWv3h+mQD5QPB/n/7j/+pB2P/AvuaAiUB0PyhAQQDdQA5/Bn9dAZOBK36t/d8AdIL9wRZ9WH4QwQdCIkD9/el+sIC/gW6AIH7FP7/AB4FMAEE+1j6kgBLBr4Dr/vl/IT/ngIiBCT96PuAAA8DAQCk/4D9nP+UAnQDRv82+vj9lQNFA0/9N/1R/qgDsALg/DX7awCpBikAL/uI/BkAAANbBOr90/lEAAkD+gCcAPP+wv4G/bD+OAWy/m//Gv2S/nsGUP+r/uL+Pv18/14CJwOJAID48/2iB8kC3f7s+wv+WwEnBAwEB/0h+V4BUgfmAqf44/wLBrL+PgSmAMD0yf4kCl0Ei/3I+RL+YgTy/2kAyPuu/0kFeAAR/9T8nv4+Abv/3AAkAZD+tv+mATf/Ev5A/8/+DQN1AOn+JAEO/iEBM/74/hIEqf/Y/6D/y/7ZAh8Dcv1/+mMCWwZYAVkAj/1g/RYBz//dAukAA/xP/5UCUwO+/Gn8+AA0AZsFRQFB+8j9YgDRAQgBZQHX/rn7KgFfBPcA2f3w+8b+dQLKATv/h/zbAJoHJ/9G+eT/tf6I+2AAuQdhA+H9N/zp+8AE5AO2+hj8ZwEdASYD2AGt+4P9LAIDAkEAXvyr/NwCigGSBPQA4PnHACb+Dv2/BKEDk/5Q/fQADv6J/K8E9wGr/qn/LgHU/YP/EAQj+9P9pgE6BNoB4fv//6r/DwP1BAH8CPen/pkGdwWcAq79xPhG/oUCjQZB/+T3GwF3AQIEpv+F+hL/yQM5BKsBgwE4+hn+gwJCALMF1v/f/Hz85vygByQFr/+6+uP7RgV8Ab/7SPsTAsoH/QDc/fL9DQDb/7v57/w2Bi8FJ//T/H37GgW7CnX8s/Ui/D//tAaOBZT/NPgk/G0NpwH49YH87QAzAPoGMAYS+rX0iP30ClYI5f8H9qf7cANuBt4BFvsr+zoAWAfkAlD9mPuTADADqwKJ/uP9CPrf/n0I5gMYAC/9NAJU/c36wAS+A5P9ovoVASYJOACX+s39mAP8Ay378PsY++0DSAZO//D/bQCL/wn7WP7SAZ8Cm/7o/5D9if2ABev/H/50/zUAPQLXAi77Sfg/AgYIxAPU/KX9ef3z/soE4gUF+hL5vgOtAg8Au/7Y/58BvAEF/oH73v6SAAYBfACQ/8QDVP+U+wX/rf92AVcC3QFV+537cAQHBTL/q/1E/vn+YgCMAD7/ov1S/vYD3wX0/FX5pf74BqUGZ/sD+Uf+RQIdB3X/6/kZ/8IDQgYq/nH8z/yg/HYFvAUq+uv58QEPB7cCn/6Y/Rr8WwD3/q0C2/9t/V0BngCBANgClf59+4UB6QEaATj+v/vY/jME7wA9ABEBUgFCAvP9U/7R/PP8NgO2Ba4CYgFn/hz9eAGq/q756P60A64F0wIS/VX+3PzM/vgAUQB3/xEABQH0/1sEuwG1+gv8Ff88BF4EK/0z/cwAEgKhAVb8rfoUA1UErADw/1D/RP8x/sr/fwAv/dD+5QJ8AOr8FAIQBOf99P5//+b7hf57AT0CkwIBAsYBeP5W/mr+/v2x/lIA8AMgAez+HgP6/1/9eAH1++H5zwBWA0METwPO/poCVwEM+1j7zf3GAiQCJQJFA0j/vv4TAAz8awEXBHH8D/3kAs8FQv6C/uoA8vxL/80DawKX/DX/jwS0/578QP7d/q0AzAJJBJD+Wv+E/8/9QABp/qD/tgJ0/jwAJwR2/zEAgwACAGv6jvuHAWEBgQFJAqwDGgDr/8r/3fq2/NYB6gMPBJX9M/xAAcMFJAH0+BMAvQHE/ZcBUQB6/TUCyQOO//b7P/5iAuECgP4T/REDugE9/ir9zPxfA94EvP2M/Fj+UQH0AjABj/xQ+xoDJQOnAO/9ffshAlIE8AIT/vn7/P5BAgkCwf2yALb/V/6gAZkBTf4g/1UCiP7v+1b/6wCJAvwABv59AfgBVP3F/T8BAgBBAn8Cp/zg+0X//v9lAtYDKAHm/hkBsgC//ND95v46Am8DTP/k/7cAiAB6ABT/NP/V/Bb9ewAuA14E3gG8AJsBBgDk/Cj8fgCu/5f/vwIcASsAjf+v/0gA5v88AJ3/vf4mAW//mv9qAPz/9v95/4ABFQB7AQYAFvof/EwBGAExANIBGwQjAhb/+vtq+yL/IAIDA2X/x/7WAEABngHJASb+2f56ALT+C/1R/0UDLwOPAgYB3P80/db/NwDd/oP+EQBXA2UAFf9TAGsADAPi/23+sv00/DsAHABi/xb/IQPAA1UAuf2j/bMAOwNkAM38pv4PAQoBvgCBADD/KQP2Ar3/tv0h/I3+4AALAIb+Wf+eABkCqQHJ/9P/Tf89/hj/W/1c/U4DGwW+AYr+t/2cAfwBxv4A/j39+f5iAUwBWALLAqgAcP5U/n7/8/0X//H/cf5QAvoB/P61/3v/dAANAbz///2X/pD/oP8v/nH+TQFpA68BXf26/igBXQEO/d/7vwCFAiMAtgD+AFYB1QC7AO0A2fw3/ZX8Sf9lAuoBSAGoAPkA7wEyAKn7I/vU/pkA7QBNApgAnQEXAC//7f9U/mv+Hv+dACsBhgE3AOj+FABNAfgC2gDn+kf9RADoAUUCpv/8/qf+gQGyAVL/aQCT/0f/dADQ/ln+Tf/CAcwCVgLLAFMBcv9k/af/x/1b/SL/pQGIAYgBHgQAAhH/yf1M/ZX+f/6t/l4BywF0BPICxf31/T0A8P+3/eL/ev99APoCJgKH/5z9Fv64/kD/jP/H/2IB2ALnAKr/N/7d/df+2v6lAHkCBwGFAbMDjwBv/dr9cP5E/t/+0QFCAzwBnQD3/wn9pvxx/yMBOgJMAe4AvwFvAAIAbf4R/tj+6wD2AXYB+wFzARoA+P/+/Rj8HP6w/igB3AELAg0CIgAS/ef9VQDY/WL+OQDdAVcD7ALD/3r/jP+v/n//cf5x/ssA1QG/AjkDjf6a/dT+Kf+s/zT/9f/MAJoCYwFz/rX90v4wADcAfQCAAOT//v9vAMcASv9h/rj/zQBMAi0CdQBEANb/OgCB/zP+O/84AGQBFwFTAfcAMACE/+392P5EAFz/SP7eAOoB3QHZAMT/M//f/vb+3f5d/yL/0QAgAWIBaP+w////Rv+8/rz+JAHG/+7+JgBMATwARwCs/zD+yP4k/7n/yf/n/sr/rwCaAF4Abf/T//UAJgBS/+//PwB6/yH/7wCbAGIAJgCN/+cAdgBB/wgA1ADT/7X/MQA1APP/GgDmAAABTQCR/yX/RP+//nMAywH4/4v/6P8YAIX/rf80/2f/AQHsAGAAaf+F/xgAPwBPAEgAkf5a/5QBQgAjAB8ASwAWAMsAlABrAKT/5v9bARwAZv8N/xoApgCvAFL/sv82ACz/Hf7i/uf/fADVAJb/2f+z//j/5gCT/57++gAJAev/YABbAAcBFQFPAM//h/+C/yEA0ABeAIAA7ADD/3b/lgD1AAYA6f9LAFwAhQA6AOT/NQCwAAUAev+EAFEAq//o/2MAuwCp/xf/cP96ABcAj/8cAKP/AACaAHD/gv57/00A//+9/1D/vf+HAA4A5/+Y/5D/ff9B/zD/mf5u/zEAg/85/4r/Uv+4/sv+LP/t/on+Nf5k/73/E//g/m/+bP9S//b+Df8b/7f/dv9N/xX/Vf9y/8L/3v+U/5IAMABw/wIAPgD5APX/sf8GAcEB4wHUAJ4AxgAIASEBeABXAacBTwHcAQACgQFKAUIBIwAqAdsB0wDUAJgAAAI3A3ABWgCtAPUBIQG0AKcAqwBjAS4BtQEaARQBZQEeAaAB3wLvAfAA0QHfAucCrAFNAXEC5gLtAWgCfQGwAF8BTAFBAOz/OAE+AL//6AAf/0T/gP/4/W/9jP3+/Uj9WvzE+6/8Kfx4+yP79Pks+gf65/mH+JD4b/ld+QX6Svl3+FL5D/pz+Un6gPpK++z78vux/EH8/PxG/kr/TP9KAAsBMQHZAe4BmAH1AZcD4wOEA28EpQSzBNQEWQSKBLEEewXBBM0EtgSLBLsEqgQsBEsD0ANZA8ECzAI/A2wCQwEUAkEDZAIVAWMBJQVNCe0JXwdeCBIMkQwrCFoElQZzCBwJ5gmUCxYLwgqfC6YJvQW3Aa3/NQCyAXIB/AAIAdf/8f5c/bD53fZd9QT0SPTQ9WXza/I/8wPz0/HK8PzwlPHd8ZrwnfH08d7wlvC68KTxN/Qi9tP12/ZG+Ar4Dvnw+Gb3qPdi+bP7xf4qAacBMQKIAv4DnwPgAcgBwQLPBBAGTgYsBo0GRAbnBVAFXgQtA+YCHwPDAusD0gKGAVYCzAEfAXsBpQG5AcQAZQDRAA0Bn/90/3cAzQAXAToCqgN7CvkXXBI2C1wSnBb8D0gJOAr+DDkTDRXHFm8ZAxbnEy4X9hI2CQIGyQMQBbEMRQjDA3QEwwBJ/uD7Uvb78ojyT++I8ZvxaevG6AfsF+lA5eDnmui+6IPoxua46GzqKOdZ5j7nsemQ7+r0SffK96D3ffi2+r77p/iC+AD9jQJkB1QJKgnhCFQJAAojC9kIpwaaCF4L3QwnDbYMDwu2CUAJtggFCZkGbQVXBSsFIQSlAVP/Y/74/RH8tfyK/9n+B/wm/Jb8vfyg+nr6pvoy/RQB0wNwB6wOOhKLDX8Mtw9RES4N/go0DKURuhWEFr8XRRZIEogSeRLHDWUKUQfwBVQJBwr1BRMD5f+p/bz7BPqn9+z1CfMP8k7zOPF77JbqXupV6Q3qCeun7G7tA+z66hXsZusj6qzpdevl7QTy8fXL9xj5JvmJ+Uj7ovus+jj9GQCOAokEgQY7B4wGrQV6BtMHyQgwCR8JEQlMCPkIMAlSBw4FaQT2BLYFkAX0AxQBIwD4/vz8OfvL+Z356Pq2/Pb81fzG++v70/tV+2f8tf3C/1ACvwhZDnAOYw0lDjkPnw5sDeMMhQ8OEvQS7xTWFNgSVRHxD94NYQyvCm8IeQk6CdEGRQSGAYD+EfwX+v34Evkz97r14vW39BHxqu4r7bHrw+pO66ztQPBE8MruSu8t70fug+7n7rfvivJn9Rz3c/lY+rj6SvzF/BX/CwGXAGkBawUmBz8GdgWeBBUGbQj3CUMKGgohClELJQvxB+YFAAbXBH4EdgTHA2sCeAETAPL9//u9+Vn4dvgQ+ZH5BvoT+qL69foJ+ur5p/ut+/f9fgIjB+sImAn4CncL8gsQC80KBQtaDbIPyhFcEk4RvhCLD04OZQ1TC+II+AjSCusJkgeKBAQBCf8B/dv7IvuW+jz5j/lC+bX2SvMF8MDua+417nXunfDb8dfxK/Jr8hTxpu977zHwS/GN8yf3Hfks+bz5K/yZ/Tv+bv4l/7IBEQSGBD0EsQQoBQ4GwAVtBeYGQgjMCV0KHwmpB7QG4QUEBPQCDwK2AnwD4AGZ/3X+Lf7j+9D6iPkL+or6Mvp3+6b8gfx9+hr7RvxB/UcATwW8CPYJAwt9C7gMXgyNCqYJFQpQDe8QWBK6EWYRuhHaD64NPAt8CHAHbAl1CvcILgbtArQB1/8c/kb8evpa+RL5lPlN+E/1UPI48ELvVu/T7orv7PCc8fzxEPJa8bLvcu4P77jwgfKS9FD2XPiT+TD6s/uU+1T8x/48/2IAZAMTBTcEgAMzA0sDOQR1BcgG4Qe6CPUIRwk9CB8GQAS1ApoCngJoAmMBkv/N/tj+Cv4y/KT6APtC/Hb8Af2r/ID75PvT+/D8IwAxA5sGogmGC/IMzQ3sDD4LjglUCaAL4g0KD2kPRhDdEMwQNA9JDAgKKQhICNoIEgjxBVYDIQHj/wP+E/y2+pv5Ovok+uv4tPcg9TzyTfAe7+Luxu4771bwYvFF8hnzRfK08ADwa/Ak8vLzVPUP9iX3TPjW+YP78fuh/eX/IwDDARcEXwRmA1AD8QO+BBwF5QWuBvsGRwj1CbsJYQfsBMkDSQN8AoYBKgAW/1v+rf4g/s/8C/w0++T6GPtk+1T8zvym/Cn+Nf9iAUUFmgZjBzMJ1QpgDBYNTQufCiIMJw09DkMO+Qz1DH8Opw6dDQUMDgoMCXEJiQmPBz0EMwLtAPX+cv25+zv6y/k2+pD6Qvnn9pr1//Pt8fzwivDo7wnwufDW8TrzbPNK807zdvOG83T0lvUK9/z37fdz+ab7u/sN/Nj+//8+ALgCfAQaBIQDaQNyBN0EAQRGBK8EVgWwBhcHhgZ3BWAEywOSA58CBQGF/1P+af6n/b37Qvv0+/L7A/zY/A/95fxO/aP/TQDnABcEggZ2B7oIbAr0CocLPAuHC4sLhQulDZoOFQ6bDYIN8AxWDC8LIwk4CMoHaQd6BmQEPgJ5AEb/Tf62/LD6rfmi+TT5bviW9jr1vPO08pnybPJG8n/xevEv8mrzHfMY8tPyIfQX9U72a/f59674ffll+6H8W/x2/Xn/v/+dAOoCLgNRAsACZgP1AyIEEQQ8BFwE6ATRBRgGFgVsAzgDuANCA74BIwBA/3v+H/5H/UH8W/to+/T7yvyf/Qv+4v23/iMCyATjBY4GRAfICDoLegtsChEKbArtC2AN7A2UDc4MAg1sDVMN+wu0CeoIEwlcCX4IvAUcA8kBlgCV//j94fvG+qf6lPqp+Sb4Pvak9NHz8fKg8nzygvHF8DjxKfIV8ujx9vFo8mfzjfSv9dj2K/dK96f4c/qR+gv7W/1J/rb+2AAAA98CvQE5AowDzQPmA5IEnQS1BG0FUAapBkwFnQOcA3wEHgRoAs0Az/+F/97+Dv6G/Mf7LPye/Gj9Vv7C/sf+CgG9A+YF2AZbBgQI8AoXCxQKPwo7CrwKewzjDHoMFA0ZDSgNqw20DEwLiQrOCcYJxAiTBqQEwQIYAev/Bf9A/Un7EPvg+sz5zvhn95X1dvSQ88jykPLa8ZXw5fC38bXx//EO8jXy4/Iv9Oj1PPcm9xX3ZviB+WX6o/uB/Kv8Iv7kAK8CxAG+APkBPQPlAyYEgAPYAgcE6QXQBTkEsQLDApQDoAO6Am8BNADc/zoAb/8i/af75Pto/Oz85vwX/av9ev/WArwFNgfoBsQHEwsiDA8LpQrlCmsLewwlDVUN1AxFDBwNxg0/DSgMeAvPCuEK6gr6CF0G/QOxAXkAwP8s/oj8dvtO+4j76Ppv+Uv3nvXk9Gj0gvPH8uXxZ/Ee8S3xpPGy8VHxMPJ08xr0hPVQ9oz2H/fT+OD5f/qJ+/j7Tvxp/pUA2wByAOwAcgIzA1gDsgMMBOEDkwRhBTAFswPJAj8DVgOkArQB5gAcAP3/sP8S/gr99vyk/IP81PyB/fH9A/9hAf8Dowb3Br8Gvwk3C+gKwQpQCqMKGAyGDE0M6guYCyoM4wz7DEsLpwo+C5wLJQuuCVQHUgUlBFUCdgAF/9L9+vy7/D380frU+bD4OPc59gj1oPSE9C/z0/Hz8afxj/Gh8dXwTPF18sfzX/Vf9e/0VfYz+O748Pnv+kr6Tvv4/ff+Ff9u/or+3AD5AbMBswHpAYUC1QO3BIEEQwNkAnIDJgT7Aj8B7/9B/7r/Ef+k/cH97/0V/Rv+Af98/0MABwGnA8wGfQdABs4IlgsNC20KFAuVCzIMEg2wDBUMJAx/DDsN8AyVC2kLCQz3CyUL9AnWB6oGpQUBBMYBwP85/lv9lP38/Pz6xvm8+RH5zfd+9rb1e/Xh9MHz//JV8jLyXfLp8c7xEPL98mj0EvVZ9Wj2M/jf+AX5Lfrx+vb6x/s3/Vb+W/7V/UL+U/84AMcAJQHeAOYAcALJA/oDQwIDAccBbQKfAen/Wf4g/mD+if6J/kb9yfx0/fv+uADQAIcB3gP7Bq0JFQnFCTUMbwxNDJgM0gzqDBUNog2wDc4Mdgz3DHkNkgwnCxILMwujC40KZgfbBbIEJgOIAYv/v/2E/Bj8ePwP+zz52/ji91P3tvbw9XT1m/Tw887zWfNx8lXybvJY8o3yf/OK9OL1V/Z/9hz42fjO+Un7QPtd+6z87f0A//3+7P01/lv/OQAzAD0AWAALAXMCoQJVApsBVQBtADIBDwBG/pb9ov0R/VT8PvxV/L779/vs/Vz/kgDSApwFnQg4CcgJ/QzqDTQNcA3qDWQOIA+PDjEOkQ7+DdMNNA4oDuwMIQxRDCINeQxCCRgHDAaVBIICpwA5/iz8P/tJ+2P6w/et9nL27vVd9bn07vOM80Dzt/LJ8hfy4fCP8BXxNfG48aTy8/NJ9Rn2T/fU+OP5a/uC/Lr8ZP3o/ur/2P87/0f/6P+/APoA7gAZAbEBZQNkA9ACQwMIAtUABAG0ALT/P/49/d38Mvx8/MT77PpZ+5n8r/4oALkCBwYICPwHtwpuDRUNFQ2HDcsNFQ7nDiMOdw1UDRUNtg3rDXUNogxeDBENKg78DIoJzwfWBs8EfAKdAA7+BfyZ+9/64Pg29yH2w/V79ZX0BvSD8zjzpfN28xzyL/Eh8dDwI/C38CTxtfHW8zD1hPWn9q74avon+xz8tP2F/kP/9f+Q/7z+G/+6/+7/v//A/8kAaALfAtUCGQNzAgsCBgKfAZYAVf/L/lH+BP0z/A/8BPtk++f8mv2t/0MDRgegCGUIsQyQD70O4Q74DgIPBBDoECwQmg5QDUoObA8sD8cNmQxwDQwPkhBPDt8Krwl1CIYG2APoAIn+Wvzx++v63/cx9j/1i/TO8zXzX/NK82vyYPKp8sHx2fDg7/ju5u6O747vh/CL8lLyFPOO9qX3ePd/+Vj78vwR/jz+L//8/tn+AQDs/6X+Xv/7AJsBZwGiAekC+AINAukAywBCAfv/hP8G/27+aP14/N78Zvw2/f/9bQBDBFoIugciCdAOABDJD7cPARDIEI8SmBItEocQbw4uDzgPLg5sDNcLTQ0xDyoQzw2ACz8KBAlgBwQF/wFF/2D+cf0S+0n4ZvZ79MXzgfKu8eHyAvMt8pfyvvJI8Qjw1e/97ivu3O5U8JrxdfGN8Xrzq/Sk9UH3a/jw+Wn7Vf2+/sH+Ff7W/Vz+xP3i/ST/Jv8V/w4A1ADHAIQAVP+H/wAARAAqAJ7/+v+i/sb++v7A/q7+Tf9eAvMGAQnzB+ML2Q4KD8QPMxC4EBUR+hEcElMSChDrDXYOzQ0SDAsLqApIC2oNJw3OCz8K6AdmBqwEzgILAH79ef1+/Nz5Fvgz9g/0//Lp8QbyWPLu8avyuvNu87XyUvJR8Rnxy/Du8UXzTPSH9Tn1vPXk9gT4QvgU+eX6PvzQ/Ev+Zv8O/oP9kv27/f/95/2P/uj+xv5D/+H/vv4p/XL9MP3x/aL/Yf85/qP+AwDgALwAXQHjA6kHjwkDC0YOog/vD8EQYBEUEWERnhG5EbwR/RBYEIsPxA7tDDILBQsJDO4MzAqSCOoH6QbEBO8BJP+o/P37ovuu+VL34vUa9W709fKM8SjxDPJi8nHyofJB8rTxSfF28aPxzfG98ZD04fY+9Vb24fiW+Nf4Cvr5+vj79/xs/pD/Uv4J/mP/0v6m/bX9Cf/t/rX+8f5v/rr+X/5i/YD8yv24/u/9tv6f/7D/EgFKArQDpgb1B2MJxgwaDx4QmBDpEAsSZRLCEUsRthGTEXEQkRAXENAOJQ5eDTkNdQ3tDPEKaAn2B8MFSASyAnT/ofwZ/F/7iPma90H2fvUz9JbyRvId8sTxyvHX8drxTPGB8LrvJfBd8Abw3/Ep86ryHfSH9nr2vvZk+Br5vPl7+gD8Of0D/Yv9nP70/Y39yP5J/9D+2v5c/8P/+P/D/7X+4P10/+3/Vv/7/4MADQFWAy8FEAckCi8LvAvwDmkRMxGWEeARfBI9E6MSnhGgEQMRaxDvEGoPfA0iDUoN7QztDIQLuwh2B8gGlATFAZb/Vv3P+6f66Pgb9wb2S/Xj9ODzQPKM8YHxY/FW8d3wyu+q74HwgvDq78PwcvKF8uXyMfQb9ZP1dvbN9574t/iB+Zj6rPpG+0n8W/xp/Mr8MP0W/kr+ev60/sf+8/5x/xD/k/6c//7/3//CAHgBEQKMA+8FvghKC2gMTw2sEKISWBKMEuwSNxMcFCUUBRPOEhsSOhJ2Ek0RmA+wDkQPYA9MDhUMZQn0B68GTAPKAMj+dfz9+lP60PhU9vr0j/QU9LvyJvFO8LLwTPD275fvAu7E7Tnu0O3m7YfvXPAN8bryHfSZ9Eb1RfZg93X4Y/iA+EP5aPq/+/77v/sR/IL8eP3h/d/9k/0p/VX+IP+Z/rT9I/5g/rz+gf8SAJkAbQE7BCkISgtMC80LBA/EEXYS6xFfETESixMfFIITzBKUEn8SxRKzErcRvxDgEPQQMRGjD5kMMwpMCCwGaAPnAJv+Lv2u/E77Bfmc94v2p/V/9LTyjfEF8SnwAfCW79ntuexm7fLtae0p71rw3PDv8tfzWfSg9AP04fRF9tL2uPeL99b3G/r9+qb6jvpk+438mP3w/k3+EP4E/0X/0f4G/u799v4b/1MAmgEKAlAENAYTCfMMkA1cDeQP4hGMEv0RhRCkELMRxBLKEp4SPhJQEngT/BKKEW0QWA9DD0IPNA2nCVgHtwUNBMsBWv/J/aD84vx+/K36dfge98v2XfWD88TxGfHB8Jbwyu9w7vjtSe7Q7uLv0/G08QjyVfQd9QH1rvTU80n0JPW29en2xPYJ99X5G/s9+2L7iPsx/EX9W/6C/dr8Cf1Y/Z/97/wu/RP+bf5EAMIC2gIRBGUHRwqiDUAO9wxdD9URjBJBElMR2BEjE2cUhBSSFPgTJBQrFccUXxM3EWYQJxA1D94M0QlvB2oFcgSTAjgAu/4y/Wv8BvwI+o/3OfbE9I7z+/H/74TvYu/L7qLufe4o7mLvg++c76vyvfLZ8F7yy/NY8x3zhvM19CX1LvbV9+L4MPnp+h78afwp/PL7ePws/eP9TP2k/P78TP0Q/rP9B/4L/1D+CADmARICzgKDBPEHhQs8DA0L5ww2DzIQKhBaDxwQPhFfEjET8hOpE20SURMtEzoSAhEWD64PQhB4DtsLtwm4B/IGeAXpAo8Byv/C/r3+Rf1r+kj4yvZR9enzZPJK8QLxz/Dk8K7wQO/B7qbvTe/27wPyG/Ea8VjyJfOt8w7zwfLN88f0pfXZ9tf2EPhR+tD6Cfsq+9366vs0/Xr9Af3b/CX9RP7s/rD95/4rAJ///wBkAuwCEQT4BQwJNgxRDAcLkQ29DyIQzw+RDk8P6BA1EmUSEhNzEo0R9hHvEDIQCw+aDaYNnA3PC1wJtAdJBtwESgMaAjUBT//Q/iP/Gv6T+035J/jJ9in12vPI8wv0hPMW8wXz1PGF8aHx1PGM8n/ypPJq8wL07vM79Dv0TfS99KD1yPZT9xb4rfiW+eL50/gc+ab5P/qD+9P7U/sk+8j7qPxE/eD8sPwZ/qf/FQA9ABwBdAKvBKYGqAjmC/UMKQyADlcQGRDsDnwOWxBIEnsTQBRIFYAUnxNkE/IRlxB5D3gOqw3aDYsM7wkvCCYGtQR/AvAAkwC8/vz9Of4E/T/6Afg99n/1kvRk86rzu/NN8x7ztPJs8eHw0fAE8ZDyefM/83j1ofYC9dL0LPUb9Tz1TfW49vH41Ph2+az62vlf+cL5EPqT+m37jPy2/PD7U/t5/DD9PPzz+8z7jf1V/zv/Dv8ZAGABRgMGBrAHwgo2C3cKNQ2pDvoNzQwADSUPMRKbE7QTbhQtFJIT6hK0EacQ5Q+gD2cPXhDHDuML8gleBw0GDgQjAq4B4QALAHQA+f6j+7L5ZPdY9kX2pfRl9OD0i/Se9NLzhvFY8H7wGvBE8gD0dPOu9P71VvWh9Bn0afPk8wv1G/cW+bL45fjk+VX5cfga+Ff4qvlT+2789vy+/Ij7jftD/LX7Cvvi+jX8E/9MAKv+rP5//1MAZwLjA58Gago6C9MJjAsGDSYMaQuoC7UO6hG2EiMTshRsEwEROxBED2UPiA83D1kQ8RHoELANLgrmBt0EGwONAs4DKgTUAiECBwGY/ZD5j/Y+9cf1i/Z+93j42fcs9tX0nvIW8ITvtu+k8VD0vfU/93P3L/Um8+PxXvGC8uPzB/aa+b/6Qfpw+Uf3nPUJ9ef1cvcs+cn7s/0I/n/8TPq5+ML3VvhG+tX7wf1q/xcAQQAE/2z9z/2f/7kCDAfLCawNJw5hC4sLfwvaC7sMVw4nEb4UXRY7Fg4VsRE7D2sOnA6pD7gRNxPCEt4S0xD6CyQIhgThA7sE9wS5BsEGjgRNAnP/zPrK96/2r/Y1+Bz5CPrN+SH4A/W18RDwMO8A8Hrxj/Me9qn2d/bk9RfzIfFH8c/xaPNm9mL4Zfl++fP4Q/i79QP0rvRG9tb4qvu7/Ev8A/w8+xv6Afn79034ovn3+7P+4/5T/ej7xPuz+4v7K/3J/joB/QS+B5sJhwpOCLwFDgd1CckMug4AD28RShNREy0SNhA3Dj0Niw5eECISCBP/EXkQ+Q5QDdAKSAjjBWIGmgfcB2IIKgbgAnQAvP5h/WH7tPkN+pb7Cfzq+p35efdH9S70A/Oy8v/zxvRw9Yv2fvaQ9p31wfO09K31xPXl9YH2DfnS+uj5BPm/+Pv3D/ii+Jf4RflD+1H9v/2v/Dr7HPod+lH66fro+vb6lfwb/s3+A/65+wL6tfoN/f79mP4GAIUBrAMcBbkFpgYUBw4FrQZuCt4MNA7sDHINNQ+6D08OBg06DK0M8A36DnIQWBALD/AMhgsECzAJugfIBkkGtgY8BtAFfQQEAl//t/0Q/Yr8gPuO+nr77Ps4+2/5mPeT9mD1vvQr9a31Tvbj9pT32/cd94z2fPYj9972Gvd5+NP5BPoU+qf6VfoT+qf5+PnI+kX7i/s1/ML9gf6a/Vz8e/t9+zP8tvzA/KX8X/37/bz9f/xt/K38bPyI/M78tv5iAAAA+P/4AAkCBwO5A1UELgdpCH4GNwcfCXkLVQwIC8QKLwzCDJAMSw3gDIEMrgzFDKMNLQ0JC+kI4AhxCY0IaQeQBSIFOQV/A40CdgGN/xD+5/3O/cX9mfy5+pX6BPoT+r/5lfjU94/3Dfiy+Bf5wfhF+IP40Pjl+LT4o/gj+SX6zfoD+1f77Prb+sb6wPqa+3j8gvzT+/j77vxn/fn8JvyG+7b7v/wY/Rz9B/3x/AP9a/yT/BL90Pwo/P/7a/2C/gf+of1+/WL+L/9v/8j/rQCtAXIDggXJBRwH0gaoBWQGRQiACroKuQmvCUIL9wvqCwsLmglfCT8KrQqhCmkKFgmRB9QGsQYoBowEegKMAvkCTwLxAdYAev/8/Wv9hv07/Vj8P/t3+9X7Kfzd+376sflj+cL5ePoS++76lvrs+jr7Yvvs+qH66/qx+ln7VPxH/FD8DPwf/AD8Tvsl+6X7lvue+zb8LPxh/Hn79vpk+7L7lvuO+6X7/vvB/PP83vyK/Hn8Sfy8/Pr87fzR/ZL++/7E/6r/YP++/4z/OABYAbUCHgTeBAUF3AWBBy0HsQUiBvcH9whCCc4IJAkbCpoJWQkJCdoHuQfFB6wHbwh7CJIHRAbLBcgFQwV6A80ByAHTATkCfgKAAe//hv/W/5L/lP5C/Sr98v1B/hj+sv2//Hv8F/wp+7H7Mfy8+8j7Rfyb/JT8r/ue+pL6ivrr+kX7kPpU+k37lvth+gz6svkS+mn66flr+hH7vfsQ/DX7Lfp9+lT7xfsO/CL8ivyI/Vf+av7b/X/97P2Z/gb/Lf8a/zr/+P9BAL7/y/9LAJEA+AAcAQcC5gI7A9cDiQTRBSMGegW7A4oEVwfdCJkIbgaeBoAIWQmnCPoHeAe2B4EI9gg4CSgIJgd9BogGYAYtBv4EZQMvA8sDKQR3A3QCtAA2AJwApwDF/3z+If6i/gb/cv7E/ej8Evy8+6T72/v++9H7Jfvk+nf7pvsx+735OfkR+rT6H/u3+kD6TPoM+9z72foJ+TP5zvrQ+5P74foN+1f7uPux+yv7SPsn/KL86Pzc/B79mv1c/Tb9Ov1T/ZP9MP52/gT/2f4o/jD+Tv9VAHj/o/7+/tcAhgEFAZsAGwEiAo8DewQBBKkDygMSBg8HgwagBjAHQQhvCAcIuAdgCFkIzAjhCDEIIggFCP4HwgdjB5cG9AXFBYwFTgX2BBsEBQNyAlgCSQKPAWcA2f/i/1T/Lf+v/n/9Yv2j/bf9Bv3z+8H78vvV+7n7kPvC+lD6sfr2+vX6Mvqr+af52/k8+jj6tvkW+cP5tPqA+k36Uvo0+or60/od+1f78/pg+0v8Tfxq/Ij8VPzT/Fn9A/5B/gz+g/65/tz+KP9F/4b/i/+M/7r/+v81ANP/KP9s/2MAJQGIALb/8/+YAKsAowDCAEIBVALKApAD+gOTBOkECgSGBBkGXAddB5cGVQeqCI8IxAexB50H/QdNCEsIPwjSB+oHXwenBlMG0wUmBcYDAAO9A/IDzgLgAXEA5f+BACoAQP/F/Sf96/2j/s79qfy4+0T7pftt+2L7N/v1+pn6fvow+yf7ifrL+bn5BvpU+rP6mfor+vz5sfqj+vr5ffkY+k77jvvF+zT89fv0+1f8Uvyr/OP8Kv1C/Wv9Wv5Y//T+6/1W/n//AgBn/zT/8/8SAVsB9wC2AGwAnQDmABABDQHpACAB3AH5AWcBIAGhAdcB7gBoAO0AAQI9AjoCmwJ0A1YETAUXBI8BigO9BhQI3ga9BBIGVAhLB14GSAZqBSsGrwb1BgEHVgaZBdEEYgWWBXgECQLUAFgCWwS6A6MBHgCc/k//hgCc/+39bvyP/Lf+T/+l/RL8yvrj+jL8Ofze+3v7DfvS+5j8tvy1+xL6xPl7+7r81/wy/Bv77frB+5r81PuV+mP6IfsO/Lj8jPyn/ML8mvyf/Tn9avyD/an+1P67/sf+qf/k/xMATgAc/7T+MADtAaoBIgDd/00B7gE8AW8A1v80ADkB/wGbAYYAef+N/3UBWwISAMr9l/6WAEUBbwAP/83/TgCc/+8A6QBMAREESQWWAf3+UgJhBu0HeQTZAWIEAgdOBzgHIQVPAwUFGgfOB4YGkwSzA1IFNwd1B+cE3wC8AD8EQgZUBMsBQADDAFID2wNrAXj+9P1hAD8C3QCe/t39t/2r/sn+9vzq+/T7rvz4/Ln8yfyQ/Fn73vqj+yP7IvqS+pn6F/qd+of68Pls+Rn5JflB+SX58/ms+hv6Ofpo+vj61fsH/Vb8+flP+in9dP/5/jL9If1d/kf/BwCL/3j+TP8ZAcwB3wD5/ykA3wAoARoBDwEvAX8BGgHVAFoB2wGEAWMAEwApAaIB/QDaAHYAJgBKAE8AGAHzAAcBtwHoAsAFnAisBIL+BAIBCpUNFQhwAeIEhQweDUYJ4gRoA/gHegt7C0sIbQUhBbsGlQnGCfEFZgBq/0UEpwjUBbkA/v7o/qEB9wKc/2b8L/ux/MsAuAB+/F76Xvnp+pL81vpZ+ZD4QvkD+h/7AfuL+Zj3ivZ5+N75+fhG95X3M/gT+Xr5A/i49j72L/f3+FX5b/it+HL5P/rD+vj5wfkC+938sP0A/E/8EP/8/4//Bf8D/9sAOQJNAl4CRwEsAkkE7gRbBNgC6AInBA4GbgY2BDoD9gN+BcEFUgSYAuEBYAO3BFEEHAKfAMIBFANPAoIA1gCwAa8ByADzAHsBogEQAmkD6wjDB/P+6v33BQ0NZwpgAREBvgmoDJ4HjwPUAhUGvQkKCacGHwU5BHkEtAYBCNMF1QA+/vIA1QVSBWcA7f6V/hP/6ABu/2v8//qr+wr/BQCF/Gr6V/rR+iL7Hvop+tT6cPr8+KX5HvsC+1b5xvaS94H5Q/nf+EH5wfhC+PX33/eq+CT4nvbP9kL5k/pw+v74kPec+J/66fso+4X6G/sG/lH/rv0o/u7/ZABo/xr/XAHCBPADDQKkAbgD8QbFBUgC0QDXAxUIgwi3BDgBiQIaBmsGPQN7AKwASwP+A9kCywElAPH+hAAIAgoA6f6C/vT+NwE0ATP/pf6V/goAMQH+AMID0AdHBt79uf5nCIwOQgrj/xIBKA3NEfYKdgNZAhcKSA9CDPsHnQWbBt0IEwvKCm0HAAPU//kDiAj0BWwAgf75ABcDHwKX/Vr7Efyu/H7+Uf9J/Hz5lfhP+Qz89fpu93P2NPhN+Yv4tPe19tv2fPbo9YL1CPVO9Vf3SveL9WL1fvVA9i32zfUs9fn1+/i9+Wn4jfdO+Bn6Zfqs+9f8Hvtd+vz9IQIHAnb/qP7iAcECvQI+BBAE4wNcBVAG8QYOB7sEkwMyBcsG+QeMBx0FVwRNBe8FcQaeBPwAXQGxBIQFrwOyAa0AHwExAgUCSgCa/hT/IQLnAjoBJQBq/0sA9AGjApQB0gFACPgL7gKB/IUCQQ2BDzsEZf7SB5kQxw1uBjQBUwTDCysNHQndBJIEbQbxCFMKqwYFAZb/jAEMBX8En/6D/pYBNADk/ub8bPrj+pv64vo3+0v7W/oW+HL2r/YN+CD3mvVu9sn34/WH9dn2Kvds9jX1qvT18w71TffP+DX2qfPo9c74kfhC9iv1j/aB+f77nfyv+pX4pPg8+xv/QgCC/WP7gP2AA7gF5QLr/ycAXgTjB4cHkgTGA4QF9Ag6CgMIggXPBLoGJwg1CRsIewV1BYsGKgajBS8E9QF7Ah8DWQOnAzIBwf7B/dP+EAHg/zT9Xvzy/UsARgGT/YP6lfze/9cA9P6o/hkDOAs7B936Pf0CCEUNHQmNAG8DYxB1EXEI4QNwA9QIzg55DdkH6AUICH8JwwuNCnAFWwJ4Ag8EpAXBA9QAPQNAA0z/Vf+9/oT7mvn7+CD8gf9U/Er4Kfen9tr2DfaK9A71HPaJ9Vv0RPV09bTzBvPD8r/y5/Iv8oHzBPYH9W/zFPS29d31GvT98gL1avl8/K77Ivhj90j7UP60/Tv8X/5NAXAA0QHbBSYGzQHPALYFRArLCEsEMgOdBYcKYAxrCU8DPQGCBuIKYAnoBMECrQS5CJYHKAK9/wwClQN7AsgCggM4AZr9Vv6gAJoB1v52/D3/RQA6AKoByQBg/8T+Jf93AmIEMgLJADwGRhIhD9n83frFCK0UABEpAoADFRNfFlsNzARNApMKIxFSDi0K8AiGCWIIiAkhC6oHzAJ/AAgBYwRRA6YAcwLN/+n7m/1E/RH5AfXZ87T5HP6W+y/2pfLz8SHy9PJJ8lbxRfPS8t7wuPL38jfxae8h7p3vBvE78b/yWPPT8anxEPRe9dbzl/GU8az14vlf/Oj7s/lE+cv6Rf2J////gv/VAGoExAefB78FgQV7B3gILQnWCgELFwqWCnwMqQ2UDN8IugaSB0cKXwxVC4IIQgaFBmwH7gUVAyEBigGkA4cEwQIqAFz+G/7U/j3+jv3r/OH8Rf70/v/9L/5T/if+Vv0m/AL//gApAW4A6QNPErMQRPtJ9zQGUxSmEoYCLAHmEjMZDBC9BF7/8QZlEC0RUQtlB70IzAfGCG4LwAbRART/qf1iApQD7P/qAHr+9fqj/Tz9m/eh8UzxOviY/oj97Pb98VHx+PHg8u/wtu8J9DP1hPNt9FH08vLM8Gbv3/AY8n/yZfSQ9pD0q/J79Yf3lfYK81jxjvaa+4f8v/xo/e39gfsI+8/+NwPvAiP/HgGiCHwN2wvcBScCWQWECgMPHw3dBr0HJw8MEw4OTgXjArAH1guDC4sIOQYnBucGGAbtA7MB1v/w/mH/PgGJAfb/Pf4S+3n6m/w5/bb6kPgp+kz/av8X/Tn80Ptw/Sb+bv+k/qP+r/8QAsYJ+xm/ELr2rvk5DDYaLhElAD8Iuh2FHn4QZgTSAeUKLxNlFE0NowudDGcJswsODWYGBQKF/2//MASgAUD/aQBa/cf6hPyu++7zz+tQ7W32GPxv+W3xFe+B7iXt+uyk6gTrle8X8bDwg/GJ8CDvEu0G7GTt8+6G7ynymPQr89LzrvUi9TP0zvL982T3xvnl/A4ALAGx/nb9WP+TARcECQOtAKkFLw04EHENHAe4BTwJFg08DtYLcQq6DAIRvhJTDncHQQV4CAYMYwuWCHwHygcTCOYHOgX7Ae7+/P5vAdoBFAHA/+7+uf1Z/Lb7gfuW+hj5OvpH/r4Ayf44+/D5xPvw/bf+RP1j/Wb/YQBFA/0HphHsEXn93vYjCEoVURG2A9cD7BY5IOgUigQo/fQENBCrE9gORQp4DdMM2ghaCVUG/gDZ/tH+CQIgAkP+Y/6K/Xr6JPof+r71suxb6vfwg/c7+ZnzOO+J76LtcOod5wzn8+xj8E3w7vBq8ZXvJ+xb6/nrxOxT7lPylPcw97L0gPWM9gP4+/fy9X72XPrJACEEwQM2AqUBpgR2BZQFIQbFBIoGZwy8EbMTzA9PCtsIZQpeDRkOeQzEC+gNvRFHEWwL7QWpAqkEuQgOCcEG+QNWA6EEfwMxABr9TfqM+kX86/0M/kP8EvrU+RD7RPoB+ST3Qvfb+6H/h/6r+m370f2v/iD9Zv1XAGcAHgDFAoUJQxKpF8wILPvrBHgSoBQxCiQGqhO6IYkdow0BAjADhAwHFDUTugyrDXwP9gvSCnMHBQLb/qL9EwDOAJD+g/xe+1D6ffc790v1WO2L5wzqBvAP9bnz4e5L7JfpVOiN5l/kYeVA6absXe7c7yDvoOx06q/ogumL6yjvHPXe9Rn1J/e1+DH6sPhF9vL3X/sIAdAFEAbCBmIHqgnECjkJ5wpKDZkNjwzzEDga6RrUESMMSg+nFeYV5w6qCeALTxUYGDkQMwdbA3gGCQjfBEsBpP8DAXkD2wGS/fP47vau9Qj1YPdu+NX36PQT9HH3nvjv9cDyg/Hx9Kr4tPpX+8v6TPzk/G7/4gFM/5X8ofzPAbQLphckHogN0P2hB28Wbxg2DCsE4BNqKBEniBblByIHxQ64Fm0W3w3KDe0PwA2eDmMM4gXT/wH9uP9uABj+tvmF9wD5bPiv+Zf3je2S5crl7upw75fufusW6lHqr+rB5iTje+CI4frm/ukD7iXwDu276jLqL+rR6gfsHvC78hn1Ovmf+u77cvt8+WX6kvz9/xwEBAfQCBgJVwqADdwPUxKcDwoLbg+AFpEXSRWhFrwXmxWKEzYTHBMyD6QKCgw/EBsRxw3oB1kCQQFtBM8C+ftl+BL62v1lACr77/IH8evzAfYE9NnyFvOR9K/2P/aR9ZL0FfPq9Kr3T/n7+gH80Pv5/K4A7QHjALYBBQMwBIcGsgdZClgQuRtZHP4LNweKEAwZ5xaEDHgPXCCEKIYfwQ9tCNoL7BB9FAUQcAuoD5kPuw30CosDzf27+hz7e/so+Xn3NfYK9njzlu/574XsbOSy4AHiL+bt6DHo5uWs5O3lWeT64OzewN+o42HlM+ie7YTvu+4T7WHspO037qDx//TM9gL8xP85Ag8EYQJEARwBewNwCLIMgQ82EA8R5BKKFJsXIBf2FVAWYBUoGbMchBscGTUWeRUoGBsY7RNEDAIHggiMDB8OYQccABz+7P+IAAj7N/J+7UnwRfaB90Xzq+5I69Pss+417XnrCetq7QHxvfTZ9BHx0u/z8fL1e/ks+hX7k/z6/bQCzwXYAxgEZQWdCPULsQxkDMAMWBHEGwglWh01DvwN1BmbHt0XDhLmFt0jgSdRGx8OzgmeCp8NjA0QChcLtgzPCVgGeQNJ/p34YvWB9BX1IPbL81vwze6l7Lvsz+yc5vLfY99W4V3kx+fS5oHjneQ85hDmOeR24aLieeem65PuovFV9JD1g/Wj9Rr1m/bX+rP9PwD8AyYIIQu9C3oKYwklCggMfQ2pDxURFxSdFkkWvxbqFr4VRBVBFpQVaRbfF7oWvxP3EToRfxBTD8MKEAd6BHwCIgJZALb7jvcY9zL4Cvg59KjthupC7R/vqe2s68PqQOwL71vwce7w7FDuMfEz9Ub3QfZ49kb30vli/hgARf+R/2MChwbNCB0JrwgcCecLWQ3ODj8Qzw61DikSXxdoHnUjyhyzEEAQ5RiUG5MVCBBUFTshVyHFFOQImQQVBiQInganArwCBgWRA/EAKv219h/y6/DS7/3tPe3562Hryutq6gLp4eff49nfxN9b4vrk8eWw5avmvOkb6/DpGOmj6DXqP+4D8RD0Gfho+rP8K/+CALb/qv7WANEEHAncCwgNUg/HEd4R5hBOEIwPkRDuEcQSnxQqFvgVtxUoFjUVIRT9EKINfw9HERYO1woKC/ULZQs0COUC6P1r++v5Y/i+9RfzEfTH9bj0zPGM7VzpSeh26SHqaOsn7fzt6e/D8jzy2+/w7rnwcvRm+Dj66Pou/XX/ZQLWA/YBegFbAxYGSwm9CjILhQx9DXwOKRBrEK4OLA7fDloOxBBDFaAY3R5FIG4W8Q98EgAU+xDADfIOFRdDHdkWggvYBUQDDwKZAen8qfvuAFQBof28+lD2XPEk7oTr0ujY5wPo8Oi765nrWuii5xbmfuPu4SPidORm5+7pKupL7TzxWfFo8TXxUfHw9Cf3k/eW+wIB3gTRB28I9ganB2QJNwgpCHIMFRB6ErITJRPkE/kTWBEaD6sOdg7ADsQPLBBLD3sPdxCrDwQOKwlMBfQGoAa9AfP9DACtArsBPv9e+m72JPUZ8yjwUuz06hrwT/Qh80HwW+6g7dLr+Otk7cLt3fAt9UT4w/oZ+4D6aPoy+yP8rP15ACADlwX7B1cKkQrGCLIHrgh5CucK3QtsDWsNqw5uEbgRwQ+XDV0MDA22DKkL3w0fE14Y6Rx1GlcPEgr5DOgNuQm9B+0L+RLrFEUO2geyBRQBDvx6+S73LPl2/YT9Wvoy9+vztO+n62jos+U95VbmlOkr7IjqI+nE6VnpWOdg5V3lIOeP6iftHu6m8b718/eH+FX4s/jl+gP8wvwsAEAFEQlFC8AMzgy6DLEMigsqC8UMwA2+DpYQPxI+E4US3A/MDbYM5ApQCEIINwksCSYJrQnzCTkIMAXXAugA4P7r/t780/lI++H+Ef4W+lr37/X69NvyH++u7bHvAfMr9u30T/Ia8y71f/Re8hbyVPOb9iL7//3o/6sAlgC/ALQBJwNSA2cCgwNjBxkLgwyoC1oKAwo+CkYKvAkACTQKXAs+DeMNTA0LDQQLggnPBzAHEQgjCnUPeRY5GS4RJQj/CAsMXgunBkIF4AvnEh4REwnNBJEDUgEZ/Uj3DfeZ/QUAWPzS+LD2CPXi8oruL+rJ6IbpmOsq7jTuwuvY6xftFexo6pbpgupE7DHtFe6+8bP2I/mn+GP33feo+7H+9/1f/cH/vAQZCIkJYgkUCuYLXAsWCnEJugkWCiMLawz+Dc0OPQ0mC5cJKQg5BigFggSNA/YDzgRsBNEDkAIkAVgAP/5H/WH87PlH+YH5PPpq+oX67vkS9xb2NfYZ9cTyCfHR8nz2ofgY+ez4Cvnx+aP6z/kH+Mv4M/0gAq4DsAN2BCEG1QYrBWEEjwT7BWYHwghrCnEKCQnZCL0JeAmkB8cFOwYJCK4JLwmYB+IGPgi8CFUGaARxBPcGFwi2Ct4PwxTIEtMHJAWBCQ4MsQqmBisIFw41EWEMxwZ2BeIDfwAY++f4mf3uAfL+ePs4+sv3o/Wf8Y/tZuy27JzsdO1S7+Xu1exH7H3spOzL7Knrhusw7B7tuO9I9Oj3SPiu9xL3bPlX/W/+UfzC+2T/SwPjBlIInQixCXUKvAmIBz4H8QeDCLAJwwrbCxwMkAtACs8I6gcFBhwEIgNjAtwB+gETArcCXQOuAk8A9/2R/FD7Y/rR+Xz57/hO+XP6zPs++5z4Uvfz9gL20vQ99SX3mPkg/KH9mP1U/cz9uv2R/dn9IP+JAK0BTgQQB8wH/QauBugGcQZfBb8EcQUnBuYFpAVLBTQG4gdiB/cEHwRoBaEEzgKgAqECeQQTB50H1AbbBOkESgfTB6IJiA9MFFMQWQlDCksOAg+lDIMK+QzKD70OgwzjCsMJageHAjv9z/uHANwD4f6B+TP4avjt9tfxLO7H7CfsjezV7ObspOub6trq/+oh7Ojsyutm67zrruth7Szx2PQT9sn1bfep+ob9BP4l/dT9Y/9mARUDyAQZCCkLMwtXCaIIfAgnCMUH/QahB7AJ+go1C7UK6wifBjsFJAT7ApUC8gFlAVkCygIQAnwBQACI/pL9nP1Z/v79tft6+Vz63/yi/FX7Pvsr/LL8SvtJ+cf4CfoB+9f7YP3D/rH/RgAYAPn/VQFhAowBxwAtAsUEkgbaBlUGKgbvBSoFzAPHAjcCowK/AxUEqgOXAk4DMwRdA9QBsgAdAY0B9AFCAnoD+QTLBDYEZQMWBEYFRgdACxQSHBdCEm4M2guGDTEOPQs7CgQN4BCNEDcNqwyHDAAJ6QFR+jf5kf3Y/eL6s/mn+Xf4rvOo7Yrqy+nI6Ffnl+gb6iDpIenq6ODo3und6a7pFerx60LtPO6W8G/zRPXB9Xb37vqP/v7/fgAAAnUD+APtA1QFzggpDHoMDQtsC9INGA6aC3MJfgkgC6QLowqHCkoLXgoUCEIGrgXLBDwDFwIVAbcA9wAbAfoAqP9L/p39Ov3I/CP7dPgb98v4fvsS+0v5kPk1+8P7z/ri+Sz64foW++f7zv1B/xMAowGGAnADlAQXBO0ClQL9A+kE4ARIBQYGJwcWB48F9ASMBCsDYAISAqgBrQHGAt0DjAMrA2ED7wImAisBLwBhAdUCnwO/BI0E8ASaBjQHmQiDDf4UHBbTDzIN+Q3ADs4M8QjFCVgNEhBID30MjwtCC5wHWv+m9/j28/ka+VH39vb29nz1UPEH7VTqF+i15efk8OUb6AnpWukC6m7qsuuQ63LrIe3Q7unv0/CH8wT4Rfou+nb7t/4IAyUFqwUSB7QI1AlsCZ8IIQrbDLIN5wzCDHwOig+BDtsM2QrrCGkHpAYfBwAHZgVuBLgDXAO0Ah4B3P6r/JP8Bv1L/Mr6WPrV+un6hPrP+bj5Ifkh+L/3bfha+b/56fkg+tr72f2o/tz+a/8SABIACwBIAKwBFAR+BZQGhQi3CTkJ8wfZBrUGvgWcBHwEowTYBQIHrQaSBZMEqgNNAvIA8f/6/sj+n/83AXcCYAGkALEBHQENAeMB8AF1ATgC7gMdBdcHFAx/ElEWlRLWDucOmA/2DXEJswd1CaQMVA1iC6UKYwmjBxYDS/uD9r71dvRN85nySvGR8OXuHO3564PpueUz44rj5+T55GjlouZ06LPqeOu77FnuQPC98UryDfQr92r6a/zQ/S3+mwCBBLAHOQpKC9kLkQxPDb4MbgxqDOMLLgxQDQ8Osw5fD+AOBw1aCtYH1AV7BBID5wEMAU8BBwI8An8Bnv+S/Q38VPvM+T34S/j2+ED5CPlV+Un6xfrN+SL5nPks+u76Mfut+978m/6yADYCagLuAhUEcgSOBKUEwAUlBwgIHwk9CUEJUgltCI0HoQZQBjMG0QScA+4CcgINAlUB+QDv/7j+iP7e/sD+qf4d/4z+EP/e/8cAwQHEAXEBRAFNAvcD+AUGCDgMexIGFsoTThHIEEUQEA6+CRwIfQkfDCAMpAvrCxEKwwc2A4X8P/di8/zwD/GI8Wzxtu/57cHtEu2V6lvlteFO4tTjQeSz5JnmtOnp63Xsne1s753xovIq82P1mPiS+xr+agC0AjYFtAaSCMALMg7tDrIOgQ5WDzEQeA+tDUgNEg42DgsOvg3BDd4MHQtcCLoFEQNDAKL+6v33/e/94f0Q/r/9YPz7+k/5kvaP9Dj0FfUK9mr2PPe2+H/6QPuq+vf5VvqI++v7sPvn/Pj/1QL2BAgGyAY1Bw8IBQl7COAH8AcYCeEJ2gmvCfsJ4AmMCNgGkwVuBMYClgHUACIBegH3/z7+P/1j/Rb+uP10/L38rf24/joAkwEgAiQC6wLQAdsCWgVpBr0JYhGxFnIUyxOtE3YScBGoDQ4J5QfiCYkKjwowDBwM9AnaBrMACvuh9lHw1+sS7Jrt9+1K7HHrQ+yl7P3p/OSS4gLiqeGD4jzj5eRP6FzsQ/Cr8vf0nPUc9iX44PoX/bH+EwHmA1YHjgnQCvgMjQ/DEfQSAxOREusRqhDYDu8N1gxLC7gK5wpwC/QKrgklCDsHbAUQAo/9//j89gD3Z/e392P4Kfmo+er4Jfeo9fLzzPGD8NnwwfIS9TP3S/lD+wT93/1h/qX9y/wa/RT+hAC3AyMHkQntCsYLjwvkCm8KCwojCRgI5weGCEcJMQkHCfUHsgalBCwCNQCp/uj+cv4Z/R789fwV/vP97f36/Zv/r/9k/5v/7v9KASgC/wM1A7gE7gkOD0gVGBaBFVcWBBUBFeESmw6DCbwGJghpCVILnwyrCgsI7gMb/177evZh8PzrWelv6MjoUeoA7F/rxupC6OXl5uSf49bjh+Nm5OrluOhM7b3xDvYq+Rv6Jvrt++n+ZAHaAngDTQUSCDoL1g3qDzUSTxKEEooSEhKIEmER3A/uDb8LcgraCCgIkwfaBjgGjwT7Al8Bvv4J/Bz6J/hE9kT02/PZ9D71GfZW9rH24fWn9AD0HPNL8/Xz8fM89LD2C/pD/a/++v4YAMMBUQK0ApID3gN3BNoG4gglCscLiQy3DHYMBgzzCnUJMghwB4oH3QZXBWIEmQNjA8ED8QKLAPn+if6c/UX9O/5h//j/TwAdAWICdQIeA5YC1QHgAokDfwjZD3kUVhWxFiQYjxZdFuQS9Aq9BeMEYAXzBSgIFwp/CgcJ4AOE/pH6YfTS7fXo8+R64wLlJ+gY67jreup26DDnA+Zt5P3ibuKL4wXnZev97vjyyvcX/Dn9s/yT/d7/4QL8BcgHxwkRDLwOaRGSEvQS7BHvEOYQBxJuEmERGhHTEA4QEQ7LChQHLwRLAjsAoP4t/nb+xf09/IT6DPn991/1V/La7+TuyO+C8WjzU/MB9Hr1JPbY9s32l/Um9cL2lfjc+br7pf4UAj8E3QQDBgMH2AaHBqoH7wivCScKNAq8CiMMQQw8C/wJEgjGBrcFVQRyA54DZAMCAgoB3ACH/8n+GP4S/tf/ugBmAdoBjAMIBCIEZQUdBLMEVwWXBrYLDxJtFQMVuBevGKkXrRaZEHIJggXlBFkEGASgBf8GCggOB3sDQP81+ij02e5t6Xrky+HB4oDm6+na69TrMusQ6xvrpulz5krklOR85vXpSe4g83/4yfwCADkC0wMXBeEFOgacBo8HkwnaC0IOlhCEEXMSERPcEtYRARCpDlgNKAz3CkIJpwaEA1YB/f+b/jz95fwP/Pn63fpv+iv5pvab9EPzUfFH787uhO9O8E7y5fTv9bn2Sfhi+Rn5I/jg9174XfmS+qj9/QFgBR4IHgpdCsUJygn7CXUJfwiPCNUI5AieCfMKfQs9C30KhghWBjUEvgIjAp4BxgDi/l3+1/6e/xMAnABQAZQAdACMAlIEVQRVBcAF2QWLCbUP5BLYEbsTtxYKF4sX3xQ6D1IKfAhdB1kF4ASTBAMFhAQ1AjcBEf+++nj1jfCs64fmD+UJ5sHmoeeW5/PnM+l46pfrTutw6QboE+hr6RDrPO6V8hT2cPkI/VAAGQPVBUMIDQryCkoL6QsiDZkOoQ84EIAQyxDPEdMR5BDvD/oOMg1AC4UJYAehBJ4Bv/81/u37BvrX+P/3OfgW+UX5I/g39gP0OPKJ8ZjwfO9O79TvtPE69Af2Uvf5+En6Hvuf+2v72Ppf+zj9mv8oAnQEhAYECFEJ3wqRC00LrgoFCn4JaQjXB+gHVgd5B1IHCQeuBvoFQgTSAnMCZgCw/qX+nP6j/yEBUQJ7BFMF6gQsBeYEJgWiBecH/Ax6ELkRGhShF8wY1RidF50RWwuyCJwHdwaTBS4GlAa8BlkGKwWlA6/+lvh0863uEurK5h/mB+cY6N7oCek36ezpXeoq6o3oo+Ym5h3nIOmv6+ruCfKF9Vf5Rvya/sYAwALiBIMGgAfCCN0KXw1sDhwPJBBzEJoQDRBkD4MO8Q0hDhMNvwtdCnEItwYZBbgCQAAM/uX7nvqq+kT6pfl7+jj6gvhS91n2lfTW8oPxzfBO8e/x3/Iw9Mv1KfhI+nz7Uful+738F/3K/Qz/WQAZAjwE1QYTCU8KkQoXCp4JxwgrCIQH2AZABgMGyQbyBgQG8gSIA00C6QFCAeL/cP/z/yoBJQM/BNkDRQQpBeUEBgXoBcoI+w1ZEAERMBRFFqsWLxcbFO4NkwnBBxoGwQQ4BNMEDgZEBswFMgUzA0b/sPqS9ZLv/uqB6Zrp2+kL6jvqmOv+7Rbvb+4A7X7rVeq26bPpjerE7Jfvx/LN9f/3VvqC/SEAkAEWA/wDiQTpBewHMAmYCfEJaQr+C8kMqwxyDFkMNAzyC6oLwwqBCdkHLwb6BHgDzgHd/2H+Mv6l/Rb9d/0N/VD8zfsf+g74xvbZ9U/0hfOF80/zbvRu9kT4Yfqn+/37pvt8+5j7C/we/UP+ef+KAVYDCAXcBrQHwwcpB3EGPgWLBH0EDgW8BYQF2QSSBJsENATuA68CwgAvACkB+wHBAgEERwXlBksH+QYUB+UHAgs9EKsQSA/TEu0UcBXlFcMToA6YCtQI5gX+A1sE3ASBBBMESwMgAgABeP7q+i33k/Ez7AzqJupN6+DrROtq68DtoO8L8C7w6e4O7rLt7Oxi7X7vGvLj9H/34Plu/Ez/GwFGApcDowRcBSkGRwc9CHEIogg8CWAJ/ggmCBsIOgmiCfAIIwhZB7gGfgV9A7cBOQCm/hT9Ivys+xX8jf0l/vr9Jv7k/Zj7lvmw+NP2aPVc9XH1p/ad+Cf6SvyL/pv/FP88/tD9x/1t/hn/AQCsAVUDFgUzB9EH2gf3B9AGewUPBYoEiAPFAo8CygKXAn8C3gGPAb0BEwHyAGkBHgK6AkgD8gQ2BRkFdAbbBZEGJQpLD3IQ/w9yEwkUgBVbFvgR5gxFCYoGTwMAAy0DuAKEA1cDIgLGAKn/qfzm+Hb1RfBL7Pzqqesw7Wrt5Oyf7cDv5PAC8ZPw1O/t7yzwGfB88SX0CvfG+bH7yPzT/d//FwJrBPcFTgbKBhoIlQmZCc0IvgdrB+QHfAdvBisG2AZ1B3kHcQZuBVcEYALA/8b9LPxm+uj5+Pmh+Vb6ePuy+yv8j/ui+br3kPZn9aD0w/QJ9S/2IvgR+rb7qv2f/gX/fP8p/1f/cACwAdcCiAQPBhYHwgi+CVQJIQmgCHEHEAfzBgoG5wTjBLIE4gOSA5ECxQE4AawAWQCZAKQBCAKyAlQDRgM3A+ECggOdBEIImQ08DmQOfxBeEpMTIRJwDe0InAafA28BCQIZA88DAwT/ArUBJgGt/8z7J/fe8hvv0Oyk7Fbtsu5Y76TuVu+28HLwovAU8ebwIvH48MrxHPQD93f56voe/Hr9Xv/ZAZcEiAYzCD8JMwqAC8ALzgpRChEKwQkjCQoI2QfUCCcJtAhWCIAHPwZGBHcBd/40/MT69/kt+uz6vfpZ+u36pPpo+Un3evQ18u7wvPBR8Yzy6vO89AH2cPel+D35TPm1+ZH6zPtW/Un/nwGTAyoFdQYtBx4IfgiZCOAIdglICucKsQruCTcJLwl9CIQG+wQyBBcE3QP/A10E5ATKBUIGAQYEBfIDdwOuA8oExQgHDkcQPA+cD8MRwBLpEBUM+gbRAhAAEgARAisEPwUgBRID2P+J/dv7/fjF9JTwH+1u633s8e5J8Ajw/u677ubuwu0a7ajuBPGW8fjwe/H388n2+PhF+gv7a/zE/RMAvAPxBlkJ3go2C1sLZAuVCnoJwwl1CpsKJwv6CxsNhg0MDTQMeQqrB4YEoAG+/7D+uP6V/1UAEwCP/kr9GP3q+/f4/vVb80/xffD08DTyBPQ39ar0uPNh8zT0T/Xo9Yv2ave0+G36avw7/l//vQC1ArUDtgMNBDMFPAfSCIgI0Qf7BmkGkQerCCYIJQdeBz0IKQguCFwIxQhdCHUHgwdZB7EH5ge4B9oI2gquDnMUPxUgElwSYRPzEZ0OvQqZB0oFSgNyAhEEAgYNBuMDkgDI/BH6j/io9QLy5u+B7VHrtOvA7OTsguxi62zriOs/6tbq9+3274HvoO587oPvZ/LG9Rz4ufnQ+6j+xgHPBLkGQQj8CCAIDQhMCJkI/wmrC/wMug1xDlQPVA+EDhIN6wuWClUIqgWnBHUERgStBUkGbANIAT8Bvv96/Rj7JPmK93P1fPRQ9Jbz/vLQ80f00PKU8YTyCvRt9MP0UfXO9Xv3lfn5+l/8pf0w/xoBeAGNAekC2wMSBCIEqgTRBH0EaAV/Bq4GzwaXBmsGmQYvBuMGRQheB/kGvAfTB7QIUAlVCaMJ6gmlCxgQahXlFN0RnxIvE1YRwg3fCn0JxwfyBX4F0AfeCQkI4gSwAKH85/rc+Yr3D/X68hPw7+6175PvdO7e7M3rnuv46kXqYuun7pXvPO0Y7Izs3u0l8K7y/fSG96v5RPvv/ZIAQALsAqACowKqA+gFsggNC6wMRw1+DQ0OrA57Dj8NFQx5C3ALbwrICGsIIgmZCqUKSQfJBKsEYwPfAMb+S/0O+wb5EPgB+OL3WPYi9Sr1/vMr8mXyOfMj8z/zAvSl9AX25/b591X6Bf19/v7+oP/QAFEC6wK+ApQDYgToA2oEYAYHCCEI2we2B2wHcwalBVEGygajBqYGHgbjBXEG+QaUB0cHTAdpCM8J4QtvECkTtQ+5DfwNTg2ODFYKogkmCjIIPgaLBo0IJgmuBj0Ddf9o/cj8YfvT+GD33vUj88LxTvE68Snx4+8+7+fuge2/7NHtle/O7tPsAOzM7Q7wrfEX9Gn2Ofhc+Bv46PlK/OX+VwAZAJ4ARAK3BIgGdgdYCGEJygmyCZwKkgvLC6YLnwuuCl0JxQjFCYsLaQsRCtMIlAfxBmQFrgP5Aav/MP5N/dH8Yfww+575Dfi89nH1GvWx9PfzJvNH85j0X/Wg9Y31bPbY+In60fuR/CT9oP69/3AARwGLAr4C2AK1BEMGZgflB5EHWQe2BvsGxAefBwUH8AZDBwUHVQbnBuYHogfgBo0GYwbUBT4GtAbMB18Ljg00C3gIeAcVCXMK7Ag/By4GtAS+AusCMQUFBrgDMwB2/Sz9Kv56/vX8PfvJ+FP2HPWo8+XzXvQj9HzzBfOu8pDxo/Hn8m/zzfJa8NDvufGu80718/Wz9gP3SvdN+I36Jv2A/pv+lP4Q/4n/igCtAeECKgR1BScGrQauB2UIfAjcCMIIWAjOCJAJlwrICXIIIwnGCXYItwYFBscFDAX/A5MCJQGq/2z9KfzR+wX7KPqo+bf4W/ji94X2oPW+9f/1cfZu9+D4Nvrz+gv8eP22/s79f/2//tMAcgMRA40BVAKnAiYEHwbuBWgFIQUvBscF0wVDB+EHNQchBZAERwa0BsUGyQbyBUwGNAaeBQoFSQP9Ak8EnwRaBG0GvggiCHsGNgQUBD0GvgYDBjIELQJrAFUAtQIqBJYDqwB2/v79GP9hAFP/AP7h+6z5pfiG+AD6Nfow+UX4wPer+Nv3s/Z79r72t/aJ9Zb1GPZe9nn25/bs9yL4+fcO+Nr4uvob/Hr8UvxD/Jv8Of00/hn/xQDVAQkC8AGbAl8DJgPUA4AEbQSJA3gDKwTqBOYFLAa/BQAFnQP+Av0DggVVBYkCNgDy/wIBEAJYAjgBz/9u//n+Xv7t/jr/If7N/Q79sfyq/oP/gf8S/y/+Sf6l/8gAcwCU/jL/BQD7/4IBbAFZAdQAvAAIAwAEIgSJBEsDdALpApMEoAS3AwID7AOhBDADAwS8A08DfAMiA7wBMgH9AcABkQHTALn/tv89/6H/EQGjAIYAzf/v/moACALMAgoCRQH5/7QAkAKLAisDRAJWAZMA7AAeA70D7wKNAdf/HABTASwBtADC//j+Nv/C/sn9Hf6k/cr8dPzG+yf7fPot+gb6OfoM+uL4e/gJ+K734Pd/+Pn4OPnu+HX40PjU+YL6jPul/Nj7gftB/Bb9Gf6b/3X/I/8y/5f/MAB3AAoB1gG3AmsC6gGlAWkC2wPLA50DygLLATACjQJQA+gC9wFxAfsAygAIAjcBSgEVAnQAHQAUACwBTQJ9AH3/HwA5AOoB4AAL/1cBSwOSAX8BBgKEAQ8DPAM3AgsCaQLHAkUCxgIOBKwDTwPhA8EDHgMoBDwC0QF7A2kCCQPJAY4AFAJ9AnwCegGr/1X/tgD+AFoALP+c/Tn+rP/U/4j+EP1X/dj+Sf+1/gr+1v3T/WL/ngABAJ//xv7M/2ABzgIQBNoCKAK1AmwDLQRmBGID7wJsAhECnAJ/AkADAgOuAUUBRQHZABkAPf8l/un92v2c/JD7OftI+yr74fq4+gX6cPll+Z74KfgG+fP4jPik+Dv5p/ky+tX6Kfs5+377SvtD/MT9wfzL/YH+9f26/kn+zf7y/zsAmgB9ALT/BwD/AN0AQgAxAC4AlP9eANQAaP8DAHcAIADOALf/Pf/D/0P/PQDH/3b/FgCV/x0AWQAlAb8BuQDgAEgCLALWAS4CqQKFAvwCigPLAwEE9gPXA9ACiARxBXkDsQJ8Aj0DXgT/A2MClwF9ArcC1QKoAlkAYwC/AIwACgJPAX8AtP/n/9QAQAHdAFL/agCTAdwAawDFAJkACwFrAWUBNgI+AicCDQOsAp8CXgOVAhADqAIKAl8DCgNhAisCiALgAtcBUQEBARUB2wDd/+7/hv+4/zIAr/4G/xD/X/5X/5X+7/3H/T79w/3s/eT9fP2b/Br9av2J/Zv9g/0P/ZP8ev13/rb9F/0h/bX8Sf3N/fn9Ev1l/I/9Pv4R/sT9qPwf/S3+Of6J/fb8OP2O/Tv9B/2I/cv9vfzP/P/9C/13/R7+Yv0W/sz9E/0M/mP9af1j/5f/Bf6w/Sr/4//fABkBuP7a//oAfwGDAgABkgBgAfsC3gI/Ah8CtwF2At0D0wIcAuABLAFsAikCOAIvAvkAsAG1ARsBmwLGARsAXAFlAe4BlAGb/y4AewFNAvsBPwGVAdwCpwJyAlECZAKNAn0C5QJvAVsChAPmAp0DJwM1AroD5gNOA70C0AF3AjsDRAKBAH8AFAEHAiQCrf+//3L/o/9IAGr+8v6L/t79A/+//4P/I/4p/v7+6v40/+3+g/7w/Wj+nv8h/9b+lf4J/93+4v5o/5L+1/92/0X+NQDQ/7v/vv9k/+H/Uv/7/7n/gf5X/17/wf9t/9D99f5N/5v+pv79/bf9o/6a/q7+//6X/Y393P6u/k3+5f2S/bv9D/6m/jr+Vv1Q/qL+Z/63/rD9Mf1O/l//dv5h/sH+ZP6N/g3/2P5l/gT/+P4f/n/+z/4w/5j/nv6Q/sP+1v7I/z8AGv+B/qr/QwBvADAAn//LAG0BAwHFALQA3wBCAcABOQIBAuEAFgEBAhUDPQNbAbkAVAIkAi4CDwK5AJYBOQLJAb8BzwEzAXwAugHnAX0ArQCN/3v/cgFeAQYBKQAF/5cAFAFLABYAyP5a/40AgADw/7z/EgGXADYA4f+O/40A0gBqAc7/yf44AYwB5gDLAUcAlADjAZUAdACBAKsA0gFiATYADgGaApsB4gDx/5oAEQJfAJEAeQChANgAGwG3ALX/tACoAAYA1/8b/97/NQFw/5MARABF/88AEP+w/mj/XABy/5X9K/8G/23/Yv8m/v39LP9//9j+w/6F/U/+Rf81/xr/1f20/fb+KP+R/zL/G/4M/9r/zP+q/3T/DwCk/33/+v+M/+3/FgFtAPP/5gDoAH8BAwCQ/zIBYQCnAE4AaP+NAFIAOQD0/9P/aQB/AJT/yP7P/8v/U/9l/13+Bv5n/iT/y/83/gD+/f6Q/iL/lf/H/cL9ZP9p/+z+Zv74/r//tv8x/+j+Q//q/7sAUgDP/9P/LgDSAJ3/Ov8vAFQA5v/BADUBmQAEAAEBgQFnALL/MgDHAUsA4ADXAAkAPQERAA4BggLAAMD+AQAaAu4BawFC/yIAdQJ6ARUBCgHI/3wBFQROANv/SABcAM4CXQK4/7H/hAIKAQUCawCV/bMAkgTvAln9Zv1WAiMEaQDY/y7+lv47AdABkQGS/YT9TQHpAh8BE/6h/SABywM4AYr9hv7HABMDZAJd/pz/jQEwAfABLQCv/84AzQC/AEQAQv/jAMEAMf8wAh8A9/7G/+3/aADJ/2P+NwALAoIAHQHB/rP/hQEMAGMAp/4m/Xn/5v/A/wX/V/1h/1cApP9u/iz9bf3O/pv/YP2p/BT+df5N/qL9vv0L/pb97f6P/Xn8r/z3/QkAs/0p/CP88/58ADj+X/zC/KP+gf7p/uj+2v3q/l7/A/+R/ZD9HgCtALT+/vsu/xkC/wD2/sv9+/8IAhUBmf88/8AA3AEcAk8Bt/4LAJQB3wGFAfP/7f9rAiADfgA/AAYCAQGcAsUDdgBiAPsBsgFeApcCuf+E/1b/2gGPA5EALgAeABr/jgG8Ain/Uv03ATEDswPfAI/9tQLfAXkD3wM7/NIAzQR0AsMDCf9tADUFFQJyAKD/ewGfA5IDhAF//qj/BwM1BIwAhf5QADgBSQOX/5X/nf/b/3UDC/7O+50AZwCVAKgBcv2i/UP/yACJABb+l/7OAK0E1ATbAC//rgH7BDkEQwHy/yABcwH9AAcBvQB3AT0AWQA+AIv+EP6I/i3/3P62/U/7GPpz+ij8Rvwe+0L7d/sk/PL6WPry+jH7fPpf+pT6fPp2+qz6vfxY/uX9pftv+/P8YP6x/4z+6v0X/3D+r/61/zP/wP+LAGkATwF3AkMBUQD6AUMDegJxAVwAiAEyA0MELwQ6A+UCvwJqA+MC3gEyAg8DVgJFAd//SAFrAcUABAEa/8j/VwD0//r/Jv/5/soAef8c/p3+Z/90AWgBmv/C//kAKQH2ADwBsgASAAQCpwJQAD8AkwKRAnACqAArAkgCoP8TAdoB4wESAtEBKgENAfkAjQJsAysDUgAL/pABUQSVAcr/MQGdAW4CSwFD/x8BRgFRAfAB0f7k/9gA1ACUAhQEcwf5B3QE/gS+BRQFbgW2BAEFQALJ/7wAOwOcBN8CtwEVAtQAdv+Z/Tf7Ufu4/GD8N/kM9sD1Z/e790/5HvoS+Av26fVh98X3wfbr9WL1A/aR9jj2IvhB+0D9kv7j/YP8Nv03/gf/9f9hAFYAbQD3//AAxgOhBa4FqgTFBNUD+AIZBEwEpQN8AvoB0wFGAawBIAOIA7ACcwI6Ae//Xv8o/7v/NAA1/wX+Pv2G/T3/bv84/yYA7f6E/K/8Jv51/kz++/0t/f79Cv4+/tr/jACm/7T/UwAOAEv/gv+GAGYBkQJBAskBmAFpAuADbAQKBPwB2P+dAd4DgAMVAnECuAP/AqIByQCOAUMD+QMFAv4AFQEoAssC5QJxAhQCtgLdARACfwM+AzcCSwJiAnQBywERA6MH3g1OC6EHTwdCCEUMdgo2Bg4HqwUsBDUEhAXKBwwEoQGmALH/cv7E+bn5svxd/Fj5kfOO8FzzbfWU9NfzmPS780vyzvG38232WvRP8WPxPfQH9uf1F/ix+u38/vxV+038//3Z/4UBSwKNAlIDgQMfA0AEJQaTBxkH6QbjBksGtwVRBWkFRQSgAdgA7QEBAoQCzgJPAnkBp/+p/j3+cP0//VT9fP3t/OX8Xf0J/Q39hv3V/Wv+A/75/MP9Ev6S/jH/nP6g/nD/hv+1AAACsgIDAwECaQKbAo0BpgFKA90E4wS5A1AD7wMoBOADOQMzA9QCGQLbAS8CdgE3AaAB1QBeAXkAgf8gAB8A5QBZAI3/2P8+/xcAhwBWAGgBbwHeAVMBWQEOAqICgAKfAjsDiQO0BHcFYAx1EGIMUAkPCDsMgQ+ECnEIZgddBkwGdwVwBy4HlQTnAYoAxf/A/uD5H/gH+XT5B/hg8QfvwfFd9I/zqvKq8lnyg/DU7rDwBvNx8uXwo/D18lf1OfdT+dL5Ufvx+8z7Lfz6/OT9LgCxAH0BwQPXA7UEbAWgBs0HVwitCOUHwgXsBHYEZgUMBhgEFQSkA0QDbAS/BHYDaQGg/4D+bf3C/NT89Pxc/In7Jvxu/QP9RPw1/Mz8m/01/Wn8nvzO/Z/+RP8B/9//BwK5AjkCjwJGA7AD2gPdA44DbQN2AxIE1AWtBYkEeQMWAzsDiAMGA9YBawFHAfgAOwCC/7f/PgCI/7v+5/7j/gD/Df8F/oT9Uv7P/gX/Cf8W/+T/OADoAI0BjwEXAcgALwHZApoC4gJOBJ4DpATRBSEFawZZC6UOvQ5XCg4I+gkkDFUKeQjJB/QF5AUdBswIDAiJBZ4Bsf6j/gT+Jfvl94D2A/gh+aX15fGb8HjyZvIr8tHxDvIm8Ynvx+7+7zLxZPEM8g7yqfMa9eX3Zflj+ur68Po/+4b7DP2d/8QBogIdBJUE/gQTBiYHkgcFCEAI8wdbB0YG8QU2B4YHxQYYB1kHTAd+Bo0FywRZBIIDQgHq/+//+v8NAKv/Ef/t/mb+U/2t/Ff8dPzU/G78Cvy8+xT8ZPyK/Ff9Hf50/k3//v9zAKUAUACwAAABHAFuAfoBqQLeA3YETwS+AzcEBATLA9YDcwODA9sCbwIvA/cDIAPCAtgBCAJUAqIB1gBZAFoA9v+q/1f/RQCWAF//R/82/2j/vQAdABQAEQDW/1gARQBUAKEASwFBASoBtgH1ATMCVwKzAfgB8AAaAeABxAJoBgIIGAe7BvsFygX4BnYFYASMA+UBXAI/A+QDSAMMAk8A1P7L/lP+Z/1u+9v5XPn8+MP4Z/eb9pL29fWn9j/3dfdG9+z1s/Sn9Dz1wPXS9Wr2cvfd9+j4kvkk+3T8Bvy6+wj83Pxo/pb/vv9kAJ0A+AADAu0CtgMhBAQE4QP5A0oEOgSMAw4D4gJfA0wEdwRNBEYEugNEAx8DXwLiAYYBAwH8AAsBLgFgAV0B0ACuAHAAWgAjAO7/HwARAO3/j//J/zUAaAA+AAgAQgAIAXYBRAEAAX0AKwBHAJMArQCZAGIA1QBrAVABzwC5AKsAKADh/4wAzABfAKsA9wBWAS8BngCYANoAAQGDAKMAigCrAB4BfQAbAAAAwf9oALAAxgBfAWEBiQGoAYcBoAFoAWcBtgFoAWYBmwG0AdgBlgFCAZsB2QGZAXkBJQHGAJMAYAAaAPD/sP9X/17/bv/E/4IAdABjAHgAIQAQAJL/Xf9L/9T+sP6v/r/+1/7f/tz+yf6K/l7+Sf4c/gr+5P3k/bf9c/04/Uv9LP0e/Sf9J/1Z/Vb9Qv0K/dz8DP0C/b/8u/zp/BT9R/1F/UP9o/3R/eP97P0d/nr+rv65/tr+xv7g/iH/H/8x/3T/nv+r/9X/xf/d/xUASACgALEA3AAsAWQBrwHZAf0B8QEAAh0CCwISAkACPgIwAkACUAJyAloCPQIlAhAC+AGlAYUBnwF6AUsBIAEwAUoBQwFTATcBDgHvAP8AxgBpAE8AIQBYAHoAhwCxAJgAywAKASABDQHUAKoArwDwAOEA9gAXASkBQwFNAYQBjwE8ATUBOQFCASkB8QDDANEA8ADhALoAsQCCAGsAfABkAJMAhAA4ABMA8v8OAPj/3v+2/7D/mv+F/4L/ff9Y/0T/Pv9E/0r/B//X/jf/Wf8s/xT/Lv9U/zn/JP9F/3r/V//6/t/+A/8S/x//Tv9x/5n/7P8iADQAHQAxAFwAlgCbALIAigCFAK8A6AADAaUAigDlABQB9gDXALkAxACcAF8AKQAlABsAyP+j/5f/3v/Q/2r/KP/1/tf+xv6a/lD+L/4T/uv94v3s/dX9r/15/Sv97vy5/K78BP00/fr8uPyR/K38z/zs/A795fzd/O38QP20/Qf+Xf6X/s/+1f4D/1H/nv8IAEMAeADrAPkACgFPAbYBKwJmAmoCbgKCApkC0AIZAzIDHwM0AygDPANpA1IDMQMjA1ADWAMoA9sCvQLUAsYCowJhAgoCAQIFAvcBBALBAaUB0wHZAbMBcwExAQ8B7wDPAKQAagBDAA0A7v/T/5r/sP/V/9v/sP9r/3T/mP98/17/T/9m/23/UP9H/03/jf+X/5L/hf9v/3L/Xv9Z/0P/P/8Y/y//ef9n/1j/iP+K/53/p/+h/5H/h/99/3j/eP9+/3r/ff+X/8H/1v+x/6X/tf/P/7r/wP+5/7z/qP+s/6f/o/+n/6z/tP95/1f/Uv9k/0//KP8u/0X/OP9T/zn/Kf9u/6r/sf+d/4L/mf/g//3/8f/W/xoAYAA6APX/xf/U/xYALgAUAOf/5v8XAAEA5P/b/9T/xP/C/5H/dv9Y/y7/Pf8k/wL/9/7W/tD+uv6e/of+Zv4q/vf97v0n/lP+S/5k/nT+df5d/kr+SP5Z/oT+pP61/t/++/76/h//Tf9q/5z/wP+i/9T/AAA2AGUAcgCcAK0AxwD6AC0BTQGGAZcBkQGQAboB+AETAv0B6AG2AaIBxgHHAc8BtgHNAasBqwGoAZsBsQG3AY4BZwE0AfsADgH2AAoBCAEYAQUB0QDKANIA2ACuAI4AdQByALIAywDMAK8AtQCYAHwAmACaAKEApQCZAIcAVQAkABEAAgAsADUAGAABAPX/7//S/7r/xf+3/2//T/9b/3H/bP9f/1D/Wf9Y/0T/Wf9Q/2X/a/9y/1r/Kf9Q/1n/cv9Z/z//ZP9q/4X/Zv9v/3j/kP+G/5X/wf/g/+b/0v/A/8X/+v8IAPv/7f8FABgA/f/1/+b/8v/v/+b/4//I/8L///83ACkAAADs//3/IQAwAP//AQAUAE8ASgAyABwAFQBEACsA8v/v//L/EAD1/9T/7P/f/7H/mf9x/4P/dP9w/4D/Yf9Y/zT/Df8G/9H+qP6g/pz+qP5s/mj+Y/5p/mP+TP4p/ib+Tf5e/lT+Uv5c/nz+pf66/sz+zf7k/g7/Kf9i/4b/mf+3/5f/ov/a/xcAPABcAIkAmACnAM4A+wAfAT4BLQElAR8BSwGLAasBpQGsAasBrwG/AcsBxwHQAcIBmQFyAV8BdAGkAbUBrwFqATcBTAFJAVUBPAEtAQIB9gACAQgBBAH5AOkA4gDkANoAxADKALcAsQCsAJUAcABmAIQAegBOADsANgBoAGcAegBlAE8AKwAmADQAJQAZAPb/5v/n/wcADQD4/8n/tP+p/6X/n/+J/1X/Nv8h/xX/I/8n/yr/DP8F/wf/8/7f/sL+tP6K/o7+q/7D/r3+kv6d/qz+1/7T/tD+uf67/tf+6P7y/gT/Jv9J/2H/b/9z/43/xP/O/+H/xf/k/xkACAD3//7/FAAsADoAWgA5ACoALwAoAC4AJwA8AB4AKQAWACMARQBaAFgALwAEAO7/GgAsACIA4/++/73/4v8FAP3/8P/8//7/8v/m/+7/8/8AAPX/+//2//7/FwAWAAkAIgAqAPv/1v+q/6f/sf+G/4X/kf+F/6j/oP+Z/6X/lP+C/3j/eP97/3n/m/+W/6P/l/9S/1H/Zf+O/5P/jP+N/5z/xP/J/8j/1P/p/xcAFQDy/9X/5v8oAEgAPAAuAB4ANABgAE0AXQBnAGEAZgBTAEQASABnAIUAggCRAH4AiwCSAGwAaQCAAHMAaQBuAHEAhACJAJ8AsQCnAJYAlQCNAJwAuwC0ALoAvQDAALgAwwDuAAcB+gACAf0AEwEdATUBYgFGAQkBFwEhASABMAEbAQwBEAEdAQEB2wDfANAAvgClAKEAkQBqAGQAXwBmAEYAIADt/+//DwAIAMj/xf/Y/8T/m/9v/4z/nv+Q/4L/V/9e/0j/Rv9w/2H/SP8v/zH/Rf87/yv/GP8y/y7/Wv9p/17/Zv9X/2z/Yf+U/6b/gf9O/1T/iv+R/4v/e/+G/7P/zP/N/8L/1f/p/9v/xv/N/8//4v/y/xIAHQApACEALwA2ACYA5P/G/8P/wP+2/5//iP+e/6r/jv+f/7n/rf+P/4T/jf+m/5L/sv+v/7D/2f/W/8//0P/l/+v/1P+9/6X/qv+r/7P/u//H/+j/3f/K/+D/+P8EAO3/wv+1/9f/1/+6/7L/x//W/97/x/+m/6//yv/F/6b/fP+C/5b/wf/k/+b/1//V/wcAQQBeAF8AUQBSAEQALwA4AFUAZQB7AIQAeACGAJIAlgCkAHwAVgBWAFcAYQBWAD8ARwBZAD8AJgAHAAoAHgDq/+T/zP+4/6D/lv+f/7//u/+X/6P/w//D/8f/zP/P//j/BwAOABsAOgBOAGEAdgCHAKsAyQC8ALoAtAC7ALsApwCrAMEA4wD1AOMAyAC8AMkAswCCAIUAgACHAKsAqgCkAH4AZABSAEYANwAzADYAKwAyAB0AFQAYABQAIgD8//z/DwAcAAgA7v/g/wMA2f+7/9v/6v/q//L/9f/1//H/uf/O/7v/v//W/+b/wv+h/7j/1f/a/8j/zv/I/8z/qv/R/9L/u/+e/7r/tP+j/6f/sv+7/5//m/+c/6T/sf+3/5//sv+u/77/sP+0/6//wv/u/+P/zv/f//H/BAACAPL/1//u/wQA5/+2/4j/e/+R/53/l/+E/3L/gv+B/3H/a/9s/2r/U/9E/zv/Sf9K/0X/Wv9Q/0//Rv9Q/2//g/+e/77/vf/T/+j/BAAbABMAEgAKACMA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\\\" type=\\\"audio/x-wav\\\" />\\n\",\n       \"                    Your browser does not support the audio element.\\n\",\n       \"                </audio>\\n\",\n       \"              \"\n      ],\n      \"text/plain\": [\n       \"<IPython.lib.display.Audio object>\"\n      ]\n     },\n     \"execution_count\": 3,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Tortoise will attempt to mimic voices you provide. It comes pre-packaged\\n\",\n    \"# with some voices you might recognize.\\n\",\n    \"\\n\",\n    \"# Let's list all the voices available. These are just some random clips I've gathered\\n\",\n    \"# from the internet as well as a few voices from the training dataset.\\n\",\n    \"# Feel free to add your own clips to the voices/ folder.\\n\",\n    \"%ls tortoise/voices\\n\",\n    \"\\n\",\n    \"IPython.display.Audio('tortoise/voices/tom/1.wav')\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 4,\n   \"metadata\": {\n    \"id\": \"KEXOKjIvn6NW\"\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Generating autoregressive samples..\\n\"\n     ]\n    },\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"  0%|          | 0/16 [00:00<?, ?it/s]\"\n     ]\n    },\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"torch.Size([1, 74])\\n\",\n      \"------------------------------------------------------\\n\",\n      \"Free memory : 2.864563 (GigaBytes)  \\n\",\n      \"Total memory: 5.805298 (GigaBytes)  \\n\",\n      \"Requested memory: 0.421875 (GigaBytes) \\n\",\n      \"Setting maximum total tokens (input + output) to 1024 \\n\",\n      \"------------------------------------------------------\\n\",\n      \"torch.Size([1, 75])\\n\",\n      \"torch.Size([1, 76])\\n\",\n      \"torch.Size([1, 77])\\n\",\n      \"torch.Size([1, 78])\\n\",\n      \"torch.Size([1, 79])\\n\",\n      \"torch.Size([1, 80])\\n\",\n      \"torch.Size([1, 81])\\n\",\n      \"torch.Size([1, 82])\\n\",\n      \"torch.Size([1, 83])\\n\",\n      \"torch.Size([1, 84])\\n\",\n      \"torch.Size([1, 85])\\n\",\n      \"torch.Size([1, 86])\\n\",\n      \"torch.Size([1, 87])\\n\",\n      \"torch.Size([1, 88])\\n\",\n      \"torch.Size([1, 89])\\n\",\n      \"torch.Size([1, 90])\\n\",\n      \"torch.Size([1, 91])\\n\",\n      \"torch.Size([1, 92])\\n\",\n      \"torch.Size([1, 93])\\n\",\n      \"torch.Size([1, 94])\\n\",\n      \"torch.Size([1, 95])\\n\",\n      \"torch.Size([1, 96])\\n\",\n      \"torch.Size([1, 97])\\n\",\n      \"torch.Size([1, 98])\\n\",\n      \"torch.Size([1, 99])\\n\",\n      \"torch.Size([1, 100])\\n\",\n      \"torch.Size([1, 101])\\n\",\n      \"torch.Size([1, 102])\\n\",\n      \"torch.Size([1, 103])\\n\",\n      \"torch.Size([1, 104])\\n\",\n      \"torch.Size([1, 105])\\n\",\n      \"torch.Size([1, 106])\\n\",\n      \"torch.Size([1, 107])\\n\",\n      \"torch.Size([1, 108])\\n\",\n      \"torch.Size([1, 109])\\n\",\n      \"torch.Size([1, 110])\\n\",\n      \"torch.Size([1, 111])\\n\",\n      \"torch.Size([1, 112])\\n\",\n      \"torch.Size([1, 113])\\n\",\n      \"torch.Size([1, 114])\\n\",\n      \"torch.Size([1, 115])\\n\",\n      \"torch.Size([1, 116])\\n\",\n      \"torch.Size([1, 117])\\n\",\n      \"torch.Size([1, 118])\\n\",\n      \"torch.Size([1, 119])\\n\",\n      \"torch.Size([1, 120])\\n\",\n      \"torch.Size([1, 121])\\n\",\n      \"torch.Size([1, 122])\\n\",\n      \"torch.Size([1, 123])\\n\",\n      \"torch.Size([1, 124])\\n\",\n      \"torch.Size([1, 125])\\n\",\n      \"torch.Size([1, 126])\\n\",\n      \"torch.Size([1, 127])\\n\",\n      \"torch.Size([1, 128])\\n\",\n      \"torch.Size([1, 129])\\n\",\n      \"torch.Size([1, 130])\\n\",\n      \"torch.Size([1, 131])\\n\",\n      \"torch.Size([1, 132])\\n\",\n      \"torch.Size([1, 133])\\n\",\n      \"torch.Size([1, 134])\\n\",\n      \"torch.Size([1, 135])\\n\",\n      \"torch.Size([1, 136])\\n\",\n      \"torch.Size([1, 137])\\n\",\n      \"torch.Size([1, 138])\\n\",\n      \"torch.Size([1, 139])\\n\",\n      \"torch.Size([1, 140])\\n\",\n      \"torch.Size([1, 141])\\n\",\n      \"torch.Size([1, 142])\\n\",\n      \"torch.Size([1, 143])\\n\",\n      \"torch.Size([1, 144])\\n\",\n      \"torch.Size([1, 145])\\n\",\n      \"torch.Size([1, 146])\\n\",\n      \"torch.Size([1, 147])\\n\",\n      \"torch.Size([1, 148])\\n\",\n      \"torch.Size([1, 149])\\n\",\n      \"torch.Size([1, 150])\\n\",\n      \"torch.Size([1, 151])\\n\",\n      \"torch.Size([1, 152])\\n\",\n      \"torch.Size([1, 153])\\n\",\n      \"torch.Size([1, 154])\\n\",\n      \"torch.Size([1, 155])\\n\",\n      \"torch.Size([1, 156])\\n\",\n      \"torch.Size([1, 157])\\n\",\n      \"torch.Size([1, 158])\\n\",\n      \"torch.Size([1, 159])\\n\",\n      \"torch.Size([1, 160])\\n\",\n      \"torch.Size([1, 161])\\n\",\n      \"torch.Size([1, 162])\\n\",\n      \"torch.Size([1, 163])\\n\",\n      \"torch.Size([1, 164])\\n\",\n      \"torch.Size([1, 165])\\n\",\n      \"torch.Size([1, 166])\\n\",\n      \"torch.Size([1, 167])\\n\",\n      \"torch.Size([1, 168])\\n\",\n      \"torch.Size([1, 169])\\n\",\n      \"torch.Size([1, 170])\\n\",\n      \"torch.Size([1, 171])\\n\",\n      \"torch.Size([1, 172])\\n\",\n      \"torch.Size([1, 173])\\n\",\n      \"torch.Size([1, 174])\\n\"\n     ]\n    },\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"  0%|          | 0/16 [00:30<?, ?it/s]\\n\"\n     ]\n    },\n    {\n     \"ename\": \"KeyboardInterrupt\",\n     \"evalue\": \"\",\n     \"output_type\": \"error\",\n     \"traceback\": [\n      \"\\u001b[0;31m---------------------------------------------------------------------------\\u001b[0m\",\n      \"\\u001b[0;31mKeyboardInterrupt\\u001b[0m                         Traceback (most recent call last)\",\n      \"Cell \\u001b[0;32mIn[4], line 6\\u001b[0m\\n\\u001b[1;32m      4\\u001b[0m \\u001b[39m# Load it and send it through Tortoise.\\u001b[39;00m\\n\\u001b[1;32m      5\\u001b[0m voice_samples, conditioning_latents \\u001b[39m=\\u001b[39m load_voice(voice)\\n\\u001b[0;32m----> 6\\u001b[0m gen \\u001b[39m=\\u001b[39m tts\\u001b[39m.\\u001b[39;49mtts_with_preset(text, voice_samples\\u001b[39m=\\u001b[39;49mvoice_samples, conditioning_latents\\u001b[39m=\\u001b[39;49mconditioning_latents, \\n\\u001b[1;32m      7\\u001b[0m                           preset\\u001b[39m=\\u001b[39;49mpreset)\\n\\u001b[1;32m      8\\u001b[0m torchaudio\\u001b[39m.\\u001b[39msave(\\u001b[39m'\\u001b[39m\\u001b[39mgenerated.wav\\u001b[39m\\u001b[39m'\\u001b[39m, gen\\u001b[39m.\\u001b[39msqueeze(\\u001b[39m0\\u001b[39m)\\u001b[39m.\\u001b[39mcpu(), \\u001b[39m24000\\u001b[39m)\\n\\u001b[1;32m      9\\u001b[0m IPython\\u001b[39m.\\u001b[39mdisplay\\u001b[39m.\\u001b[39mAudio(\\u001b[39m'\\u001b[39m\\u001b[39mgenerated.wav\\u001b[39m\\u001b[39m'\\u001b[39m)\\n\",\n      \"File \\u001b[0;32m/data/speech_synth/tortoise-tts/tortoise/api.py:329\\u001b[0m, in \\u001b[0;36mTextToSpeech.tts_with_preset\\u001b[0;34m(self, text, preset, **kwargs)\\u001b[0m\\n\\u001b[1;32m    327\\u001b[0m settings\\u001b[39m.\\u001b[39mupdate(presets[preset])\\n\\u001b[1;32m    328\\u001b[0m settings\\u001b[39m.\\u001b[39mupdate(kwargs) \\u001b[39m# allow overriding of preset settings with kwargs\\u001b[39;00m\\n\\u001b[0;32m--> 329\\u001b[0m \\u001b[39mreturn\\u001b[39;00m \\u001b[39mself\\u001b[39;49m\\u001b[39m.\\u001b[39;49mtts(text, \\u001b[39m*\\u001b[39;49m\\u001b[39m*\\u001b[39;49msettings)\\n\",\n      \"File \\u001b[0;32m/data/speech_synth/tortoise-tts/tortoise/api.py:412\\u001b[0m, in \\u001b[0;36mTextToSpeech.tts\\u001b[0;34m(self, text, voice_samples, conditioning_latents, k, verbose, use_deterministic_seed, return_deterministic_state, num_autoregressive_samples, temperature, length_penalty, repetition_penalty, top_p, max_mel_tokens, cvvp_amount, diffusion_iterations, cond_free, cond_free_k, diffusion_temperature, **hf_generate_kwargs)\\u001b[0m\\n\\u001b[1;32m    410\\u001b[0m     \\u001b[39mprint\\u001b[39m(\\u001b[39m\\\"\\u001b[39m\\u001b[39mGenerating autoregressive samples..\\u001b[39m\\u001b[39m\\\"\\u001b[39m)\\n\\u001b[1;32m    411\\u001b[0m \\u001b[39mfor\\u001b[39;00m b \\u001b[39min\\u001b[39;00m tqdm(\\u001b[39mrange\\u001b[39m(num_batches), disable\\u001b[39m=\\u001b[39m\\u001b[39mnot\\u001b[39;00m verbose):\\n\\u001b[0;32m--> 412\\u001b[0m     codes \\u001b[39m=\\u001b[39m \\u001b[39mself\\u001b[39;49m\\u001b[39m.\\u001b[39;49mautoregressive\\u001b[39m.\\u001b[39;49minference_speech(auto_conditioning, text_tokens,\\n\\u001b[1;32m    413\\u001b[0m                                                  do_sample\\u001b[39m=\\u001b[39;49m\\u001b[39mTrue\\u001b[39;49;00m,\\n\\u001b[1;32m    414\\u001b[0m                                                  top_p\\u001b[39m=\\u001b[39;49mtop_p,\\n\\u001b[1;32m    415\\u001b[0m                                                  temperature\\u001b[39m=\\u001b[39;49mtemperature,\\n\\u001b[1;32m    416\\u001b[0m                                                  num_return_sequences\\u001b[39m=\\u001b[39;49m\\u001b[39mself\\u001b[39;49m\\u001b[39m.\\u001b[39;49mautoregressive_batch_size,\\n\\u001b[1;32m    417\\u001b[0m                                                  length_penalty\\u001b[39m=\\u001b[39;49mlength_penalty,\\n\\u001b[1;32m    418\\u001b[0m                                                  repetition_penalty\\u001b[39m=\\u001b[39;49mrepetition_penalty,\\n\\u001b[1;32m    419\\u001b[0m                                                  max_generate_length\\u001b[39m=\\u001b[39;49mmax_mel_tokens,\\n\\u001b[1;32m    420\\u001b[0m                                                  \\u001b[39m*\\u001b[39;49m\\u001b[39m*\\u001b[39;49mhf_generate_kwargs)\\n\\u001b[1;32m    421\\u001b[0m     padding_needed \\u001b[39m=\\u001b[39m max_mel_tokens \\u001b[39m-\\u001b[39m codes\\u001b[39m.\\u001b[39mshape[\\u001b[39m1\\u001b[39m]\\n\\u001b[1;32m    422\\u001b[0m     codes \\u001b[39m=\\u001b[39m F\\u001b[39m.\\u001b[39mpad(codes, (\\u001b[39m0\\u001b[39m, padding_needed), value\\u001b[39m=\\u001b[39mstop_mel_token)\\n\",\n      \"File \\u001b[0;32m/data/speech_synth/tortoise-tts/tortoise/models/autoregressive.py:490\\u001b[0m, in \\u001b[0;36mUnifiedVoice.inference_speech\\u001b[0;34m(self, speech_conditioning_latent, text_inputs, input_tokens, num_return_sequences, max_generate_length, typical_sampling, typical_mass, **hf_generate_kwargs)\\u001b[0m\\n\\u001b[1;32m    488\\u001b[0m logits_processor \\u001b[39m=\\u001b[39m LogitsProcessorList([TypicalLogitsWarper(mass\\u001b[39m=\\u001b[39mtypical_mass)]) \\u001b[39mif\\u001b[39;00m typical_sampling \\u001b[39melse\\u001b[39;00m LogitsProcessorList()\\n\\u001b[1;32m    489\\u001b[0m max_length \\u001b[39m=\\u001b[39m trunc_index \\u001b[39m+\\u001b[39m \\u001b[39mself\\u001b[39m\\u001b[39m.\\u001b[39mmax_mel_tokens \\u001b[39m-\\u001b[39m \\u001b[39m1\\u001b[39m  \\u001b[39mif\\u001b[39;00m max_generate_length \\u001b[39mis\\u001b[39;00m \\u001b[39mNone\\u001b[39;00m \\u001b[39melse\\u001b[39;00m trunc_index \\u001b[39m+\\u001b[39m max_generate_length\\n\\u001b[0;32m--> 490\\u001b[0m gen \\u001b[39m=\\u001b[39m \\u001b[39mself\\u001b[39;49m\\u001b[39m.\\u001b[39;49minference_model\\u001b[39m.\\u001b[39;49mgenerate(inputs, bos_token_id\\u001b[39m=\\u001b[39;49m\\u001b[39mself\\u001b[39;49m\\u001b[39m.\\u001b[39;49mstart_mel_token, pad_token_id\\u001b[39m=\\u001b[39;49m\\u001b[39mself\\u001b[39;49m\\u001b[39m.\\u001b[39;49mstop_mel_token, eos_token_id\\u001b[39m=\\u001b[39;49m\\u001b[39mself\\u001b[39;49m\\u001b[39m.\\u001b[39;49mstop_mel_token,\\n\\u001b[1;32m    491\\u001b[0m                                     max_length\\u001b[39m=\\u001b[39;49mmax_length, logits_processor\\u001b[39m=\\u001b[39;49mlogits_processor,\\n\\u001b[1;32m    492\\u001b[0m                                     num_return_sequences\\u001b[39m=\\u001b[39;49mnum_return_sequences, \\u001b[39m*\\u001b[39;49m\\u001b[39m*\\u001b[39;49mhf_generate_kwargs)\\n\\u001b[1;32m    493\\u001b[0m \\u001b[39mreturn\\u001b[39;00m gen[:, trunc_index:]\\n\",\n      \"File \\u001b[0;32m~/anaconda3/envs/tortoise/lib/python3.9/site-packages/torch/utils/_contextlib.py:115\\u001b[0m, in \\u001b[0;36mcontext_decorator.<locals>.decorate_context\\u001b[0;34m(*args, **kwargs)\\u001b[0m\\n\\u001b[1;32m    112\\u001b[0m \\u001b[39m@functools\\u001b[39m\\u001b[39m.\\u001b[39mwraps(func)\\n\\u001b[1;32m    113\\u001b[0m \\u001b[39mdef\\u001b[39;00m \\u001b[39mdecorate_context\\u001b[39m(\\u001b[39m*\\u001b[39margs, \\u001b[39m*\\u001b[39m\\u001b[39m*\\u001b[39mkwargs):\\n\\u001b[1;32m    114\\u001b[0m     \\u001b[39mwith\\u001b[39;00m ctx_factory():\\n\\u001b[0;32m--> 115\\u001b[0m         \\u001b[39mreturn\\u001b[39;00m func(\\u001b[39m*\\u001b[39;49margs, \\u001b[39m*\\u001b[39;49m\\u001b[39m*\\u001b[39;49mkwargs)\\n\",\n      \"File \\u001b[0;32m~/anaconda3/envs/tortoise/lib/python3.9/site-packages/transformers/generation_utils.py:1310\\u001b[0m, in \\u001b[0;36mGenerationMixin.generate\\u001b[0;34m(self, inputs, max_length, min_length, do_sample, early_stopping, num_beams, temperature, top_k, top_p, typical_p, repetition_penalty, bad_words_ids, force_words_ids, bos_token_id, pad_token_id, eos_token_id, length_penalty, no_repeat_ngram_size, encoder_no_repeat_ngram_size, num_return_sequences, max_time, max_new_tokens, decoder_start_token_id, use_cache, num_beam_groups, diversity_penalty, prefix_allowed_tokens_fn, logits_processor, renormalize_logits, stopping_criteria, constraints, output_attentions, output_hidden_states, output_scores, return_dict_in_generate, forced_bos_token_id, forced_eos_token_id, remove_invalid_values, synced_gpus, exponential_decay_length_penalty, **model_kwargs)\\u001b[0m\\n\\u001b[1;32m   1302\\u001b[0m     input_ids, model_kwargs \\u001b[39m=\\u001b[39m \\u001b[39mself\\u001b[39m\\u001b[39m.\\u001b[39m_expand_inputs_for_generation(\\n\\u001b[1;32m   1303\\u001b[0m         input_ids,\\n\\u001b[1;32m   1304\\u001b[0m         expand_size\\u001b[39m=\\u001b[39mnum_return_sequences,\\n\\u001b[1;32m   1305\\u001b[0m         is_encoder_decoder\\u001b[39m=\\u001b[39m\\u001b[39mself\\u001b[39m\\u001b[39m.\\u001b[39mconfig\\u001b[39m.\\u001b[39mis_encoder_decoder,\\n\\u001b[1;32m   1306\\u001b[0m         \\u001b[39m*\\u001b[39m\\u001b[39m*\\u001b[39mmodel_kwargs,\\n\\u001b[1;32m   1307\\u001b[0m     )\\n\\u001b[1;32m   1309\\u001b[0m     \\u001b[39m# 12. run sample\\u001b[39;00m\\n\\u001b[0;32m-> 1310\\u001b[0m     \\u001b[39mreturn\\u001b[39;00m \\u001b[39mself\\u001b[39;49m\\u001b[39m.\\u001b[39;49msample(\\n\\u001b[1;32m   1311\\u001b[0m         input_ids,\\n\\u001b[1;32m   1312\\u001b[0m         logits_processor\\u001b[39m=\\u001b[39;49mlogits_processor,\\n\\u001b[1;32m   1313\\u001b[0m         logits_warper\\u001b[39m=\\u001b[39;49mlogits_warper,\\n\\u001b[1;32m   1314\\u001b[0m         stopping_criteria\\u001b[39m=\\u001b[39;49mstopping_criteria,\\n\\u001b[1;32m   1315\\u001b[0m         pad_token_id\\u001b[39m=\\u001b[39;49mpad_token_id,\\n\\u001b[1;32m   1316\\u001b[0m         eos_token_id\\u001b[39m=\\u001b[39;49meos_token_id,\\n\\u001b[1;32m   1317\\u001b[0m         output_scores\\u001b[39m=\\u001b[39;49moutput_scores,\\n\\u001b[1;32m   1318\\u001b[0m         return_dict_in_generate\\u001b[39m=\\u001b[39;49mreturn_dict_in_generate,\\n\\u001b[1;32m   1319\\u001b[0m         synced_gpus\\u001b[39m=\\u001b[39;49msynced_gpus,\\n\\u001b[1;32m   1320\\u001b[0m         \\u001b[39m*\\u001b[39;49m\\u001b[39m*\\u001b[39;49mmodel_kwargs,\\n\\u001b[1;32m   1321\\u001b[0m     )\\n\\u001b[1;32m   1323\\u001b[0m \\u001b[39melif\\u001b[39;00m is_beam_gen_mode:\\n\\u001b[1;32m   1324\\u001b[0m     \\u001b[39mif\\u001b[39;00m num_return_sequences \\u001b[39m>\\u001b[39m num_beams:\\n\",\n      \"File \\u001b[0;32m~/anaconda3/envs/tortoise/lib/python3.9/site-packages/transformers/generation_utils.py:1963\\u001b[0m, in \\u001b[0;36mGenerationMixin.sample\\u001b[0;34m(self, input_ids, logits_processor, stopping_criteria, logits_warper, max_length, pad_token_id, eos_token_id, output_attentions, output_hidden_states, output_scores, return_dict_in_generate, synced_gpus, **model_kwargs)\\u001b[0m\\n\\u001b[1;32m   1961\\u001b[0m \\u001b[39m# sample\\u001b[39;00m\\n\\u001b[1;32m   1962\\u001b[0m probs \\u001b[39m=\\u001b[39m nn\\u001b[39m.\\u001b[39mfunctional\\u001b[39m.\\u001b[39msoftmax(next_token_scores, dim\\u001b[39m=\\u001b[39m\\u001b[39m-\\u001b[39m\\u001b[39m1\\u001b[39m)\\n\\u001b[0;32m-> 1963\\u001b[0m next_tokens \\u001b[39m=\\u001b[39m torch\\u001b[39m.\\u001b[39;49mmultinomial(probs, num_samples\\u001b[39m=\\u001b[39;49m\\u001b[39m1\\u001b[39;49m)\\u001b[39m.\\u001b[39msqueeze(\\u001b[39m1\\u001b[39m)\\n\\u001b[1;32m   1965\\u001b[0m \\u001b[39m# finished sentences should have their next token be a padding token\\u001b[39;00m\\n\\u001b[1;32m   1966\\u001b[0m \\u001b[39mif\\u001b[39;00m eos_token_id \\u001b[39mis\\u001b[39;00m \\u001b[39mnot\\u001b[39;00m \\u001b[39mNone\\u001b[39;00m:\\n\",\n      \"\\u001b[0;31mKeyboardInterrupt\\u001b[0m: \"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# Pick one of the voices from the output above\\n\",\n    \"voice = 'tom'\\n\",\n    \"\\n\",\n    \"# Load it and send it through Tortoise.\\n\",\n    \"voice_samples, conditioning_latents = load_voice(voice)\\n\",\n    \"gen = tts.tts_with_preset(text, voice_samples=voice_samples, conditioning_latents=conditioning_latents, \\n\",\n    \"                          preset=preset)\\n\",\n    \"torchaudio.save('generated.wav', gen.squeeze(0).cpu(), 24000)\\n\",\n    \"IPython.display.Audio('generated.wav')\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"id\": \"16Xs2SSC3BXa\"\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"# Tortoise can also generate speech using a random voice. The voice changes each time you execute this!\\n\",\n    \"# (Note: random voices can be prone to strange utterances)\\n\",\n    \"gen = tts.tts_with_preset(text, voice_samples=None, conditioning_latents=None, preset=preset)\\n\",\n    \"torchaudio.save('generated.wav', gen.squeeze(0).cpu(), 24000)\\n\",\n    \"IPython.display.Audio('generated.wav')\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"id\": \"fYTk8KUezUr5\"\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"# You can also combine conditioning voices. Combining voices produces a new voice\\n\",\n    \"# with traits from all the parents.\\n\",\n    \"#\\n\",\n    \"# Lets see what it would sound like if Picard and Kirk had a kid with a penchant for philosophy:\\n\",\n    \"voice_samples, conditioning_latents = load_voices(['pat', 'william'])\\n\",\n    \"\\n\",\n    \"gen = tts.tts_with_preset(\\\"They used to say that if man was meant to fly, he’d have wings. But he did fly. He discovered he had to.\\\", \\n\",\n    \"                          voice_samples=None, conditioning_latents=None, preset=preset)\\n\",\n    \"torchaudio.save('captain_kirkard.wav', gen.squeeze(0).cpu(), 24000)\\n\",\n    \"IPython.display.Audio('captain_kirkard.wav')\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"id\": \"t66yqWgu68KL\"\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"del tts  # Will break other cells, but necessary to conserve RAM if you want to run this cell.\\n\",\n    \"\\n\",\n    \"# Tortoise comes with some scripts that does a lot of the lifting for you. For example,\\n\",\n    \"# read.py will read a text file for you.\\n\",\n    \"!python3 tortoise/read.py --voice=train_atkins --textfile=tortoise/data/riding_hood.txt --preset=ultra_fast --output_path=.\\n\",\n    \"\\n\",\n    \"IPython.display.Audio('train_atkins/combined.wav')\\n\",\n    \"# This will take awhile..\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"accelerator\": \"GPU\",\n  \"colab\": {\n   \"collapsed_sections\": [],\n   \"name\": \"tortoise-tts.ipynb\",\n   \"provenance\": []\n  },\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.9.16\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 4\n}\n"
  },
  {
    "path": "tortoise_v2_examples.html",
    "content": "<html><head><meta charset=\"UTF-8\"><title>TorToiSe - These words were never spoken.</title></head>\n<body>\n<h1>Introduction 🐢 </h1>\n<p>TorToiSe is a text-to-speech program built in April 2022 by jbetker@. TorToiSe is open source, with trained model weights\navailable at <a href=\"https://github.com/neonbjb/tortoise-tts\">https://github.com/neonbjb/tortoise-tts</a></p>\n\n<p>This page demonstrates some of the results of TorToiSe.</p>\n\n<h1>Handpicked results 🐢 </h1>\n<p>Following are several particularly good results generated by the model.</p>\n\n<h2>Short-form</h2>\n<audio controls=\"\" style=\"width: 600px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/favorites/atkins_mha.mp3\" type=\"audio/mp3\"></audio><br>\n<audio controls=\"\" style=\"width: 600px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/favorites/atkins_omicron.mp3\" type=\"audio/mp3\"></audio><br>\n<audio controls=\"\" style=\"width: 600px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/favorites/atkins_value.mp3\" type=\"audio/mp3\"></audio><br>\n<audio controls=\"\" style=\"width: 600px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/favorites/daniel_craig_dumbledore.mp3\" type=\"audio/mp3\"></audio><br>\n<audio controls=\"\" style=\"width: 600px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/favorites/daniel_craig_training_ethics.mp3\" type=\"audio/mp3\"></audio><br>\n<audio controls=\"\" style=\"width: 600px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/favorites/dotrice_stop_for_death.mp3\" type=\"audio/mp3\"></audio><br>\n<audio controls=\"\" style=\"width: 600px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/favorites/emma_stone_courage.mp3\" type=\"audio/mp3\"></audio><br>\n<audio controls=\"\" style=\"width: 600px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/favorites/emma_stone_training_ethics.mp3\" type=\"audio/mp3\"></audio><br>\n<audio controls=\"\" style=\"width: 600px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/favorites/halle_barry_dumbledore.mp3\" type=\"audio/mp3\"></audio><br>\n<audio controls=\"\" style=\"width: 600px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/favorites/halle_barry_oar_to_oar.mp3\" type=\"audio/mp3\"></audio><br>\n<audio controls=\"\" style=\"width: 600px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/favorites/henry_cavill_metallic_hydrogen.mp3\" type=\"audio/mp3\"></audio><br>\n<audio controls=\"\" style=\"width: 600px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/favorites/kennard_road_not_taken.mp3\" type=\"audio/mp3\"></audio><br>\n<audio controls=\"\" style=\"width: 600px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/favorites/morgan_freeman_metallic_hydrogen.mp3\" type=\"audio/mp3\"></audio><br>\n<audio controls=\"\" style=\"width: 600px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/favorites/myself_gatsby.mp3\" type=\"audio/mp3\"></audio><br>\n<audio controls=\"\" style=\"width: 600px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/favorites/patrick_stewart_omicron.mp3\" type=\"audio/mp3\"></audio><br>\n<audio controls=\"\" style=\"width: 600px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/favorites/patrick_stewart_secret_of_life.mp3\" type=\"audio/mp3\"></audio><br>\n<audio controls=\"\" style=\"width: 600px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/favorites/robert_deniro_review.mp3\" type=\"audio/mp3\"></audio><br>\n<audio controls=\"\" style=\"width: 600px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/favorites/william_shatner_spacecraft_interview.mp3\" type=\"audio/mp3\"></audio><br>\n\n<h2>Long-form</h2>\n<audio controls=\"\" style=\"width: 600px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/favorite_riding_hood.mp3\" type=\"audio/mp3\"></audio><br>\n\n<h1>Comparisons (with the LJSpeech voice): 🐢 </h1>\n<p>LJSpeech is a popular dataset used to train small-scale TTS models. TorToiSe is a multi-voice model, following is how\nit renders the LJSpeech voice with and without fine-tuning, compared with results for the same text from the popular Tacotron2\nmodel paired with the Waveglow vocoder.</p>\n<table><th>Tacotron2+Waveglow</th><th>TorToiSe</th><th>TorToiSe Finetuned</th><tr>\n    <td><audio controls=\"\" style=\"width: 300px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/tacotron_comparison/2-tacotron2.mp3\" type=\"audio/mp3\"></audio><br>\n</td>\n    <td><audio controls=\"\" style=\"width: 300px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/tacotron_comparison/2-tortoise.mp3\" type=\"audio/mp3\"></audio><br></td>\n    <td><audio controls=\"\" style=\"width: 300px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/finetuned/lj/2.mp3\" type=\"audio/mp3\"></audio><br></td>\n</tr><tr><td><audio controls=\"\" style=\"width: 300px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/tacotron_comparison/3-tacotron2.mp3\" type=\"audio/mp3\"></audio><br></td>\n    <td><audio controls=\"\" style=\"width: 300px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/tacotron_comparison/3-tortoise.mp3\" type=\"audio/mp3\"></audio><br></td>\n\n    <td><audio controls=\"\" style=\"width: 300px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/finetuned/lj/3.mp3\" type=\"audio/mp3\"></audio><br></td>\n</tr><tr><td><audio controls=\"\" style=\"width: 300px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/tacotron_comparison/4-tacotron2.mp3\" type=\"audio/mp3\"></audio><br>\n</td><td><audio controls=\"\" style=\"width: 300px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/tacotron_comparison/4-tortoise.mp3\" type=\"audio/mp3\"></audio><br></td>\n\n    <td><audio controls=\"\" style=\"width: 300px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/finetuned/lj/4.mp3\" type=\"audio/mp3\"></audio><br></td>\n</tr></table>\n<p>NaturalVoice is a SOTA TTS engine developed by Microsoft Research Asia in May 2022. It features realistic prosody\nand end-to-end generation with no need for a vocoder. While not much has actually been released about this model other\nthan five samples, those samples are quite good and I would consider this the most competitive TTS engine out there\nright now.</p>\n<table><th>Natural Voice</th><th>TorToiSe Finetuned</th>\n<tr><td><audio controls=\"\" style=\"width: 300px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/naturalspeech_comparison/lax/naturalspeech.mp3\" type=\"audio/mp3\"></audio><br></td>\n<td><audio controls=\"\" style=\"width: 300px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/naturalspeech_comparison/lax/tortoise.mp3\" type=\"audio/mp3\"></audio><br></td>\n</tr><tr><td><audio controls=\"\" style=\"width: 300px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/naturalspeech_comparison/maltby/naturalspeech.mp3\" type=\"audio/mp3\"></audio><br></td>\n<td><audio controls=\"\" style=\"width: 300px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/naturalspeech_comparison/maltby/tortoise.mp3\" type=\"audio/mp3\"></audio><br></td>\n</tr><tr><td><audio controls=\"\" style=\"width: 300px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/naturalspeech_comparison/fibers/naturalspeech.mp3\" type=\"audio/mp3\"></audio><br>\n</td><td><audio controls=\"\" style=\"width: 300px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/naturalspeech_comparison/fibers/tortoise.mp3\" type=\"audio/mp3\"></audio><br></td>\n</tr></table>\n<p>It is important to note that it is not actually fair to compare any of these models: Tortoise is a multi-voice probabilistic\nmodel trained on millions of hours of speech with an exceptionally slow inference time. Tacotron and NaturalVoice are efficient,\nfast, single-voice models trained on 24 hours of speech. Unfortunately, there isn't much in the way of actually comparable\nresearch to Tortoise.</p>\n\n<h1>All Results 🐢</h1>\n<p>    Following are all the results from which the hand-picked results were drawn from. Also included is the reference\n    audio that the program is trying to mimic. This will give you a better sense of how TorToiSe really performs.</p>\n\n<h2>Short-form</h2>\n<table><th>text</th><th>angie</th><th>daniel</th><th>deniro</th><th>emma</th><th>freeman</th><th>geralt</th><th>halle</th><th>jlaw</th><th>lj</th><th>myself</th><th>pat</th><th>snakes</th><th>tom</th><th>train_atkins</th><th>train_dotrice</th><th>train_kennard</th><th>weaver</th><th>william</th>\n<tr><td>reference clip</td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/tortoise/voices/angie/1.wav\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/tortoise/voices/daniel/1.wav\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/tortoise/voices/deniro/1.wav\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/tortoise/voices/emma/1.wav\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/tortoise/voices/freeman/1.wav\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/tortoise/voices/geralt/1.wav\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/tortoise/voices/halle/1.wav\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/tortoise/voices/jlaw/1.wav\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/tortoise/voices/lj/1.wav\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/tortoise/voices/myself/1.wav\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/tortoise/voices/pat/1.wav\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/tortoise/voices/snakes/1.wav\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/tortoise/voices/tom/1.wav\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/tortoise/voices/train_atkins/1.wav\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/tortoise/voices/train_dotrice/1.wav\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/tortoise/voices/train_kennard/1.wav\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/tortoise/voices/weaver/1.wav\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/tortoise/voices/william/1.wav\" type=\"audio/mp3\"></audio></td></tr>\n<tr><td>autoregressive_ml</td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/autoregressive_ml/angie.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/autoregressive_ml/daniel.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/autoregressive_ml/deniro.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/autoregressive_ml/emma.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/autoregressive_ml/freeman.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/autoregressive_ml/geralt.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/autoregressive_ml/halle.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/autoregressive_ml/jlaw.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/autoregressive_ml/lj.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/autoregressive_ml/myself.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/autoregressive_ml/pat.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/autoregressive_ml/snakes.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/autoregressive_ml/tom.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/autoregressive_ml/train_atkins.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/autoregressive_ml/train_dotrice.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/autoregressive_ml/train_kennard.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/autoregressive_ml/weaver.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/autoregressive_ml/william.mp3\" type=\"audio/mp3\"></audio></td></tr>\n<tr><td>bengio_it_needs_to_know_what_is_bad</td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/bengio_it_needs_to_know_what_is_bad/angie.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/bengio_it_needs_to_know_what_is_bad/daniel.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/bengio_it_needs_to_know_what_is_bad/deniro.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/bengio_it_needs_to_know_what_is_bad/emma.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/bengio_it_needs_to_know_what_is_bad/freeman.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/bengio_it_needs_to_know_what_is_bad/geralt.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/bengio_it_needs_to_know_what_is_bad/halle.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/bengio_it_needs_to_know_what_is_bad/jlaw.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/bengio_it_needs_to_know_what_is_bad/lj.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/bengio_it_needs_to_know_what_is_bad/myself.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/bengio_it_needs_to_know_what_is_bad/pat.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/bengio_it_needs_to_know_what_is_bad/snakes.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/bengio_it_needs_to_know_what_is_bad/tom.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/bengio_it_needs_to_know_what_is_bad/train_atkins.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/bengio_it_needs_to_know_what_is_bad/train_dotrice.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/bengio_it_needs_to_know_what_is_bad/train_kennard.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/bengio_it_needs_to_know_what_is_bad/weaver.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/bengio_it_needs_to_know_what_is_bad/william.mp3\" type=\"audio/mp3\"></audio></td></tr>\n<tr><td>dickinson_stop_for_death</td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/dickinson_stop_for_death/angie.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/dickinson_stop_for_death/daniel.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/dickinson_stop_for_death/deniro.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/dickinson_stop_for_death/emma.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/dickinson_stop_for_death/freeman.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/dickinson_stop_for_death/geralt.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/dickinson_stop_for_death/halle.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/dickinson_stop_for_death/jlaw.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/dickinson_stop_for_death/lj.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/dickinson_stop_for_death/myself.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/dickinson_stop_for_death/pat.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/dickinson_stop_for_death/snakes.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/dickinson_stop_for_death/tom.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/dickinson_stop_for_death/train_atkins.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/dickinson_stop_for_death/train_dotrice.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/dickinson_stop_for_death/train_kennard.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/dickinson_stop_for_death/weaver.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/dickinson_stop_for_death/william.mp3\" type=\"audio/mp3\"></audio></td></tr>\n<tr><td>espn_basketball</td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/espn_basketball/angie.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/espn_basketball/daniel.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/espn_basketball/deniro.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/espn_basketball/emma.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/espn_basketball/freeman.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/espn_basketball/geralt.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/espn_basketball/halle.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/espn_basketball/jlaw.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/espn_basketball/lj.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/espn_basketball/myself.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/espn_basketball/pat.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/espn_basketball/snakes.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/espn_basketball/tom.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/espn_basketball/train_atkins.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/espn_basketball/train_dotrice.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/espn_basketball/train_kennard.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/espn_basketball/weaver.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/espn_basketball/william.mp3\" type=\"audio/mp3\"></audio></td></tr>\n<tr><td>frost_oar_to_oar</td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/frost_oar_to_oar/angie.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/frost_oar_to_oar/daniel.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/frost_oar_to_oar/deniro.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/frost_oar_to_oar/emma.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/frost_oar_to_oar/freeman.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/frost_oar_to_oar/geralt.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/frost_oar_to_oar/halle.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/frost_oar_to_oar/jlaw.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/frost_oar_to_oar/lj.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/frost_oar_to_oar/myself.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/frost_oar_to_oar/pat.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/frost_oar_to_oar/snakes.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/frost_oar_to_oar/tom.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/frost_oar_to_oar/train_atkins.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/frost_oar_to_oar/train_dotrice.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/frost_oar_to_oar/train_kennard.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/frost_oar_to_oar/weaver.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/frost_oar_to_oar/william.mp3\" type=\"audio/mp3\"></audio></td></tr>\n<tr><td>frost_road_not_taken</td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/frost_road_not_taken/angie.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/frost_road_not_taken/daniel.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/frost_road_not_taken/deniro.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/frost_road_not_taken/emma.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/frost_road_not_taken/freeman.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/frost_road_not_taken/geralt.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/frost_road_not_taken/halle.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/frost_road_not_taken/jlaw.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/frost_road_not_taken/lj.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/frost_road_not_taken/myself.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/frost_road_not_taken/pat.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/frost_road_not_taken/snakes.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/frost_road_not_taken/tom.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/frost_road_not_taken/train_atkins.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/frost_road_not_taken/train_dotrice.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/frost_road_not_taken/train_kennard.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/frost_road_not_taken/weaver.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/frost_road_not_taken/william.mp3\" type=\"audio/mp3\"></audio></td></tr>\n<tr><td>gatsby_and_so_we_beat_on</td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/gatsby_and_so_we_beat_on/angie.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/gatsby_and_so_we_beat_on/daniel.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/gatsby_and_so_we_beat_on/deniro.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/gatsby_and_so_we_beat_on/emma.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/gatsby_and_so_we_beat_on/freeman.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/gatsby_and_so_we_beat_on/geralt.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/gatsby_and_so_we_beat_on/halle.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/gatsby_and_so_we_beat_on/jlaw.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/gatsby_and_so_we_beat_on/lj.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/gatsby_and_so_we_beat_on/myself.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/gatsby_and_so_we_beat_on/pat.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/gatsby_and_so_we_beat_on/snakes.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/gatsby_and_so_we_beat_on/tom.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/gatsby_and_so_we_beat_on/train_atkins.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/gatsby_and_so_we_beat_on/train_dotrice.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/gatsby_and_so_we_beat_on/train_kennard.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/gatsby_and_so_we_beat_on/weaver.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/gatsby_and_so_we_beat_on/william.mp3\" type=\"audio/mp3\"></audio></td></tr>\n<tr><td>harrypotter_differences_of_habit_and_language</td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/harrypotter_differences_of_habit_and_language/angie.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/harrypotter_differences_of_habit_and_language/daniel.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/harrypotter_differences_of_habit_and_language/deniro.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/harrypotter_differences_of_habit_and_language/emma.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/harrypotter_differences_of_habit_and_language/freeman.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/harrypotter_differences_of_habit_and_language/geralt.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/harrypotter_differences_of_habit_and_language/halle.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/harrypotter_differences_of_habit_and_language/jlaw.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/harrypotter_differences_of_habit_and_language/lj.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/harrypotter_differences_of_habit_and_language/myself.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/harrypotter_differences_of_habit_and_language/pat.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/harrypotter_differences_of_habit_and_language/snakes.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/harrypotter_differences_of_habit_and_language/tom.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/harrypotter_differences_of_habit_and_language/train_atkins.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/harrypotter_differences_of_habit_and_language/train_dotrice.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/harrypotter_differences_of_habit_and_language/train_kennard.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/harrypotter_differences_of_habit_and_language/weaver.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/harrypotter_differences_of_habit_and_language/william.mp3\" type=\"audio/mp3\"></audio></td></tr>\n<tr><td>i_am_a_language_model</td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/i_am_a_language_model/angie.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/i_am_a_language_model/daniel.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/i_am_a_language_model/deniro.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/i_am_a_language_model/emma.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/i_am_a_language_model/freeman.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/i_am_a_language_model/geralt.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/i_am_a_language_model/halle.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/i_am_a_language_model/jlaw.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/i_am_a_language_model/lj.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/i_am_a_language_model/myself.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/i_am_a_language_model/pat.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/i_am_a_language_model/snakes.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/i_am_a_language_model/tom.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/i_am_a_language_model/train_atkins.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/i_am_a_language_model/train_dotrice.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/i_am_a_language_model/train_kennard.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/i_am_a_language_model/weaver.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/i_am_a_language_model/william.mp3\" type=\"audio/mp3\"></audio></td></tr>\n<tr><td>melodie_kao</td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/melodie_kao/angie.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/melodie_kao/daniel.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/melodie_kao/deniro.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/melodie_kao/emma.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/melodie_kao/freeman.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/melodie_kao/geralt.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/melodie_kao/halle.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/melodie_kao/jlaw.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/melodie_kao/lj.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/melodie_kao/myself.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/melodie_kao/pat.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/melodie_kao/snakes.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/melodie_kao/tom.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/melodie_kao/train_atkins.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/melodie_kao/train_dotrice.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/melodie_kao/train_kennard.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/melodie_kao/weaver.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/melodie_kao/william.mp3\" type=\"audio/mp3\"></audio></td></tr>\n<tr><td>nyt_covid</td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/nyt_covid/angie.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/nyt_covid/daniel.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/nyt_covid/deniro.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/nyt_covid/emma.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/nyt_covid/freeman.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/nyt_covid/geralt.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/nyt_covid/halle.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/nyt_covid/jlaw.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/nyt_covid/lj.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/nyt_covid/myself.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/nyt_covid/pat.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/nyt_covid/snakes.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/nyt_covid/tom.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/nyt_covid/train_atkins.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/nyt_covid/train_dotrice.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/nyt_covid/train_kennard.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/nyt_covid/weaver.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/nyt_covid/william.mp3\" type=\"audio/mp3\"></audio></td></tr>\n<tr><td>real_courage_is_when_you_know_your_licked</td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/real_courage_is_when_you_know_your_licked/angie.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/real_courage_is_when_you_know_your_licked/daniel.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/real_courage_is_when_you_know_your_licked/deniro.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/real_courage_is_when_you_know_your_licked/emma.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/real_courage_is_when_you_know_your_licked/freeman.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/real_courage_is_when_you_know_your_licked/geralt.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/real_courage_is_when_you_know_your_licked/halle.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/real_courage_is_when_you_know_your_licked/jlaw.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/real_courage_is_when_you_know_your_licked/lj.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/real_courage_is_when_you_know_your_licked/myself.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/real_courage_is_when_you_know_your_licked/pat.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/real_courage_is_when_you_know_your_licked/snakes.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/real_courage_is_when_you_know_your_licked/tom.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/real_courage_is_when_you_know_your_licked/train_atkins.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/real_courage_is_when_you_know_your_licked/train_dotrice.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/real_courage_is_when_you_know_your_licked/train_kennard.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/real_courage_is_when_you_know_your_licked/weaver.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/real_courage_is_when_you_know_your_licked/william.mp3\" type=\"audio/mp3\"></audio></td></tr>\n<tr><td>rolling_stone_review</td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/rolling_stone_review/angie.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/rolling_stone_review/daniel.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/rolling_stone_review/deniro.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/rolling_stone_review/emma.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/rolling_stone_review/freeman.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/rolling_stone_review/geralt.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/rolling_stone_review/halle.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/rolling_stone_review/jlaw.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/rolling_stone_review/lj.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/rolling_stone_review/myself.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/rolling_stone_review/pat.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/rolling_stone_review/snakes.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/rolling_stone_review/tom.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/rolling_stone_review/train_atkins.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/rolling_stone_review/train_dotrice.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/rolling_stone_review/train_kennard.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/rolling_stone_review/weaver.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/rolling_stone_review/william.mp3\" type=\"audio/mp3\"></audio></td></tr>\n<tr><td>spacecraft_interview</td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/spacecraft_interview/angie.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/spacecraft_interview/daniel.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/spacecraft_interview/deniro.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/spacecraft_interview/emma.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/spacecraft_interview/freeman.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/spacecraft_interview/geralt.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/spacecraft_interview/halle.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/spacecraft_interview/jlaw.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/spacecraft_interview/lj.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/spacecraft_interview/myself.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/spacecraft_interview/pat.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/spacecraft_interview/snakes.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/spacecraft_interview/tom.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/spacecraft_interview/train_atkins.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/spacecraft_interview/train_dotrice.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/spacecraft_interview/train_kennard.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/spacecraft_interview/weaver.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/spacecraft_interview/william.mp3\" type=\"audio/mp3\"></audio></td></tr>\n<tr><td>tacotron2_sample1</td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample1/angie.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample1/daniel.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample1/deniro.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample1/emma.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample1/freeman.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample1/geralt.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample1/halle.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample1/jlaw.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample1/lj.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample1/myself.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample1/pat.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample1/snakes.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample1/tom.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample1/train_atkins.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample1/train_dotrice.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample1/train_kennard.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample1/weaver.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample1/william.mp3\" type=\"audio/mp3\"></audio></td></tr>\n<tr><td>tacotron2_sample2</td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample2/angie.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample2/daniel.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample2/deniro.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample2/emma.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample2/freeman.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample2/geralt.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample2/halle.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample2/jlaw.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample2/lj.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample2/myself.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample2/pat.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample2/snakes.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample2/tom.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample2/train_atkins.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample2/train_dotrice.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample2/train_kennard.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample2/weaver.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample2/william.mp3\" type=\"audio/mp3\"></audio></td></tr>\n<tr><td>tacotron2_sample3</td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample3/angie.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample3/daniel.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample3/deniro.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample3/emma.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample3/freeman.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample3/geralt.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample3/halle.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample3/jlaw.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample3/lj.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample3/myself.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample3/pat.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample3/snakes.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample3/tom.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample3/train_atkins.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample3/train_dotrice.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample3/train_kennard.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample3/weaver.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample3/william.mp3\" type=\"audio/mp3\"></audio></td></tr>\n<tr><td>tacotron2_sample4</td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample4/angie.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample4/daniel.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample4/deniro.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample4/emma.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample4/freeman.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample4/geralt.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample4/halle.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample4/jlaw.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample4/lj.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample4/myself.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample4/pat.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample4/snakes.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample4/tom.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample4/train_atkins.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample4/train_dotrice.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample4/train_kennard.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample4/weaver.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/tacotron2_sample4/william.mp3\" type=\"audio/mp3\"></audio></td></tr>\n<tr><td>watts_this_is_the_real_secret_of_life</td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/watts_this_is_the_real_secret_of_life/angie.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/watts_this_is_the_real_secret_of_life/daniel.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/watts_this_is_the_real_secret_of_life/deniro.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/watts_this_is_the_real_secret_of_life/emma.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/watts_this_is_the_real_secret_of_life/freeman.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/watts_this_is_the_real_secret_of_life/geralt.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/watts_this_is_the_real_secret_of_life/halle.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/watts_this_is_the_real_secret_of_life/jlaw.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/watts_this_is_the_real_secret_of_life/lj.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/watts_this_is_the_real_secret_of_life/myself.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/watts_this_is_the_real_secret_of_life/pat.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/watts_this_is_the_real_secret_of_life/snakes.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/watts_this_is_the_real_secret_of_life/tom.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/watts_this_is_the_real_secret_of_life/train_atkins.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/watts_this_is_the_real_secret_of_life/train_dotrice.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/watts_this_is_the_real_secret_of_life/train_kennard.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/watts_this_is_the_real_secret_of_life/weaver.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/watts_this_is_the_real_secret_of_life/william.mp3\" type=\"audio/mp3\"></audio></td></tr>\n<tr><td>wilde_nowadays_people_know_the_price</td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/wilde_nowadays_people_know_the_price/angie.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/wilde_nowadays_people_know_the_price/daniel.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/wilde_nowadays_people_know_the_price/deniro.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/wilde_nowadays_people_know_the_price/emma.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/wilde_nowadays_people_know_the_price/freeman.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/wilde_nowadays_people_know_the_price/geralt.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/wilde_nowadays_people_know_the_price/halle.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/wilde_nowadays_people_know_the_price/jlaw.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/wilde_nowadays_people_know_the_price/lj.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/wilde_nowadays_people_know_the_price/myself.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/wilde_nowadays_people_know_the_price/pat.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/wilde_nowadays_people_know_the_price/snakes.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/wilde_nowadays_people_know_the_price/tom.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/wilde_nowadays_people_know_the_price/train_atkins.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/wilde_nowadays_people_know_the_price/train_dotrice.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/wilde_nowadays_people_know_the_price/train_kennard.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/wilde_nowadays_people_know_the_price/weaver.mp3\" type=\"audio/mp3\"></audio></td><td><audio controls=\"\" style=\"width: 150px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/various/wilde_nowadays_people_know_the_price/william.mp3\" type=\"audio/mp3\"></audio></td></tr></table>\n\n<h2>Long-form</h2>\n<b>Angelina:</b> <audio controls=\"\" style=\"width: 600px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/riding_hood/angelina.mp3\" type=\"audio/mp3\"></audio><br>\n<b>Craig:</b><audio controls=\"\" style=\"width: 600px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/riding_hood/craig.mp3\" type=\"audio/mp3\"></audio><br>\n<b>Deniro:</b><audio controls=\"\" style=\"width: 600px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/riding_hood/deniro.mp3\" type=\"audio/mp3\"></audio><br>\n<b>Emma:</b><audio controls=\"\" style=\"width: 600px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/riding_hood/emma.mp3\" type=\"audio/mp3\"></audio><br>\n<b>Freeman:</b><audio controls=\"\" style=\"width: 600px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/riding_hood/freeman.mp3\" type=\"audio/mp3\"></audio><br>\n<b>Geralt:</b><audio controls=\"\" style=\"width: 600px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/riding_hood/geralt.mp3\" type=\"audio/mp3\"></audio><br>\n<b>Halle:</b><audio controls=\"\" style=\"width: 600px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/riding_hood/halle.mp3\" type=\"audio/mp3\"></audio><br>\n<b>Jlaw:</b><audio controls=\"\" style=\"width: 600px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/riding_hood/jlaw.mp3\" type=\"audio/mp3\"></audio><br>\n<b>LJ:</b><audio controls=\"\" style=\"width: 600px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/riding_hood/lj.mp3\" type=\"audio/mp3\"></audio><br>\n<b>Myself:</b><audio controls=\"\" style=\"width: 600px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/riding_hood/myself.mp3\" type=\"audio/mp3\"></audio><br>\n<b>Pat:</b><audio controls=\"\" style=\"width: 600px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/riding_hood/pat.mp3\" type=\"audio/mp3\"></audio><br>\n<b>Snakes:</b><audio controls=\"\" style=\"width: 600px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/riding_hood/snakes.mp3\" type=\"audio/mp3\"></audio><br>\n<b>Tom:</b><audio controls=\"\" style=\"width: 600px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/riding_hood/tom.mp3\" type=\"audio/mp3\"></audio><br>\n<b>Weaver:</b><audio controls=\"\" style=\"width: 600px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/riding_hood/weaver.mp3\" type=\"audio/mp3\"></audio><br>\n<b>William:</b><audio controls=\"\" style=\"width: 600px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/riding_hood/william.mp3\" type=\"audio/mp3\"></audio><br>\n\n<h1>Prompt Engineering 🐢</h1>\n<p>Tortoise is capable of \"prompt-engineering\" in that tone and prosody is affected by the emotions inflected in the words\nfed to the program. For example, prompting the model with \"[I am so angry,] I went to the park and threw a ball\" will\nresult in it outputting \"I went to the park and threw the ball\" with an angry tone.</p>\n\n<p>Following are a few examples of different prompts. The effect is subtle, but is definitely there. Many voices are\nless effected by this.</p>\n\n<b>Angry:</b> <audio controls=\"\" style=\"width: 600px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/prompting/angry.mp3\" type=\"audio/mp3\"></audio><br>\n<b>Sad:</b><audio controls=\"\" style=\"width: 600px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/prompting/sad.mp3\" type=\"audio/mp3\"></audio><br>\n<b>Happy:</b><audio controls=\"\" style=\"width: 600px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/prompting/happy.mp3\" type=\"audio/mp3\"></audio><br>\n<b>Scared:</b><audio controls=\"\" style=\"width: 600px;\"><source src=\"https://github.com/neonbjb/tortoise-tts/raw/main/examples/prompting/scared.mp3\" type=\"audio/mp3\"></audio><br>\n\n</body></html>\n"
  },
  {
    "path": "voice_customization_guide.md",
    "content": "## Voice Customization Guide\n\nTortoise was specifically trained to be a multi-speaker model. It accomplishes this by consulting reference clips.\n\nThese reference clips are recordings of a speaker that you provide to guide speech generation. These clips are used to determine many properties of the output, such as the pitch and tone of the voice, speaking speed, and even speaking defects like a lisp or stuttering. The reference clip is also used to determine non-voice related aspects of the audio output like volume, background noise, recording quality and reverb.\n\n### Provided voices\n\nThis repo comes with several pre-packaged voices. Voices prepended with \"train_\" came from the training set and perform\nfar better than the others. If your goal is high quality speech, I recommend you pick one of them. If you want to see\nwhat Tortoise can do for zero-shot mimicking, take a look at the others.\n\n### Adding a new voice\n\nTo add new voices to Tortoise, you will need to do the following:\n\n1. Gather audio clips of your speaker(s). Good sources are YouTube interviews (you can use youtube-dl to fetch the audio), audiobooks or podcasts. Guidelines for good clips are in the next section.\n2. Cut your clips into ~10 second segments. You want at least 3 clips. More is better, but I only experimented with up to 5 in my testing.\n3. Save the clips as a WAV file with floating point format and a 22,050 sample rate.\n4. Create a subdirectory in voices/\n5. Put your clips in that subdirectory.\n6. Run tortoise utilities with --voice=<your_subdirectory_name>.\n\n### Picking good reference clips\n\nAs mentioned above, your reference clips have a profound impact on the output of Tortoise. Following are some tips for picking\ngood clips:\n\n1. Avoid clips with background music, noise or reverb. These clips were removed from the training dataset. Tortoise is unlikely to do well with them.\n2. Avoid speeches. These generally have distortion caused by the amplification system.\n3. Avoid clips from phone calls.\n4. Avoid clips that have excessive stuttering, stammering or words like \"uh\" or \"like\" in them.\n5. Try to find clips that are spoken in such a way as you wish your output to sound like. For example, if you want to hear your target voice read an audiobook, try to find clips of them reading a book.\n6. The text being spoken in the clips does not matter, but diverse text does seem to perform better.\n"
  }
]