From 2e78985355cd3b7d2c200b3089c0f3cd5e82c761 Mon Sep 17 00:00:00 2001 From: luopingyi Date: Wed, 20 Aug 2025 16:10:23 +0800 Subject: [PATCH] update --- bi_v100-f5-tts/Dockerfile_f5 | 9 +- bi_v100-f5-tts/F5-TTS/.gitignore | 171 ++ bi_v100-f5-tts/F5-TTS/.gitmodules | 3 + bi_v100-f5-tts/F5-TTS/.pre-commit-config.yaml | 17 + bi_v100-f5-tts/F5-TTS/Dockerfile | 30 + bi_v100-f5-tts/F5-TTS/LICENSE | 21 + bi_v100-f5-tts/F5-TTS/README.md | 261 ++ bi_v100-f5-tts/F5-TTS/pyproject.toml | 63 + bi_v100-f5-tts/F5-TTS/ruff.toml | 10 + bi_v100-f5-tts/F5-TTS/src/f5_tts/api.py | 164 ++ .../F5-TTS/src/f5_tts/configs/E2TTS_Base.yaml | 49 + .../src/f5_tts/configs/E2TTS_Small.yaml | 49 + .../F5-TTS/src/f5_tts/configs/F5TTS_Base.yaml | 54 + .../src/f5_tts/configs/F5TTS_Small.yaml | 54 + .../src/f5_tts/configs/F5TTS_v1_Base.yaml | 55 + .../F5-TTS/src/f5_tts/eval/README.md | 52 + .../F5-TTS/src/f5_tts/eval/ecapa_tdnn.py | 331 +++ .../src/f5_tts/eval/eval_infer_batch.py | 210 ++ .../src/f5_tts/eval/eval_infer_batch.sh | 18 + .../eval/eval_librispeech_test_clean.py | 89 + .../src/f5_tts/eval/eval_seedtts_testset.py | 88 + .../F5-TTS/src/f5_tts/eval/eval_utmos.py | 42 + .../F5-TTS/src/f5_tts/eval/utils_eval.py | 419 +++ .../F5-TTS/src/f5_tts/infer/README.md | 177 ++ .../F5-TTS/src/f5_tts/infer/SHARED.md | 193 ++ .../f5_tts/infer/examples/basic/basic.toml | 11 + .../infer/examples/basic/basic_ref_en.wav | Bin 0 -> 256018 bytes .../infer/examples/basic/basic_ref_zh.wav | Bin 0 -> 324558 bytes .../f5_tts/infer/examples/multi/country.flac | Bin 0 -> 180321 bytes .../src/f5_tts/infer/examples/multi/main.flac | Bin 0 -> 279219 bytes .../f5_tts/infer/examples/multi/story.toml | 20 + .../src/f5_tts/infer/examples/multi/story.txt | 1 + .../src/f5_tts/infer/examples/multi/town.flac | Bin 0 -> 229383 bytes .../src/f5_tts/infer/examples/vocab.txt | 2545 +++++++++++++++++ .../F5-TTS/src/f5_tts/infer/infer_cli.py | 368 +++ .../F5-TTS/src/f5_tts/infer/infer_gradio.py | 1121 ++++++++ .../F5-TTS/src/f5_tts/infer/speech_edit.py | 205 ++ .../F5-TTS/src/f5_tts/infer/utils_infer.py | 610 ++++ .../F5-TTS/src/f5_tts/model/__init__.py | 8 + .../src/f5_tts/model/backbones/README.md | 20 + .../F5-TTS/src/f5_tts/model/backbones/dit.py | 259 ++ .../src/f5_tts/model/backbones/mmdit.py | 212 ++ .../src/f5_tts/model/backbones/unett.py | 273 ++ bi_v100-f5-tts/F5-TTS/src/f5_tts/model/cfm.py | 302 ++ .../F5-TTS/src/f5_tts/model/dataset.py | 330 +++ .../F5-TTS/src/f5_tts/model/modules.py | 784 +++++ .../F5-TTS/src/f5_tts/model/trainer.py | 439 +++ .../F5-TTS/src/f5_tts/model/utils.py | 220 ++ .../runtime/triton_trtllm/Dockerfile.server | 3 + .../f5_tts/runtime/triton_trtllm/README.md | 69 + .../f5_tts/runtime/triton_trtllm/benchmark.py | 560 ++++ .../runtime/triton_trtllm/client_grpc.py | 470 +++ .../runtime/triton_trtllm/client_http.py | 143 + .../runtime/triton_trtllm/docker-compose.yml | 20 + .../f5_tts/1/f5_tts_trtllm.py | 430 +++ .../model_repo_f5_tts/f5_tts/1/model.py | 278 ++ .../model_repo_f5_tts/f5_tts/config.pbtxt | 81 + .../model_repo_f5_tts/vocoder/1/.gitkeep | 0 .../model_repo_f5_tts/vocoder/config.pbtxt | 32 + .../runtime/triton_trtllm/patch/__init__.py | 199 ++ .../triton_trtllm/patch/f5tts/model.py | 222 ++ .../triton_trtllm/patch/f5tts/modules.py | 412 +++ .../triton_trtllm/requirements-pytorch.txt | 24 + .../src/f5_tts/runtime/triton_trtllm/run.sh | 110 + .../triton_trtllm/scripts/conv_stft.py | 248 ++ .../scripts/convert_checkpoint.py | 358 +++ .../scripts/export_vocoder_to_onnx.py | 138 + .../triton_trtllm/scripts/export_vocos_trt.sh | 43 + .../triton_trtllm/scripts/fill_template.py | 36 + .../src/f5_tts/scripts/count_max_epoch.py | 33 + .../src/f5_tts/scripts/count_params_gflops.py | 40 + .../F5-TTS/src/f5_tts/socket_client.py | 63 + .../F5-TTS/src/f5_tts/socket_server.py | 268 ++ .../F5-TTS/src/f5_tts/train/README.md | 92 + .../f5_tts/train/datasets/prepare_csv_wavs.py | 283 ++ .../f5_tts/train/datasets/prepare_emilia.py | 228 ++ .../train/datasets/prepare_emilia_v2.py | 94 + .../f5_tts/train/datasets/prepare_libritts.py | 94 + .../f5_tts/train/datasets/prepare_ljspeech.py | 67 + .../train/datasets/prepare_wenetspeech4tts.py | 126 + .../F5-TTS/src/f5_tts/train/finetune_cli.py | 214 ++ .../src/f5_tts/train/finetune_gradio.py | 1904 ++++++++++++ .../F5-TTS/src/f5_tts/train/train.py | 77 + .../charactr/vocos-mel-24khz/.gitattributes | 34 + .../charactr/vocos-mel-24khz/README.md | 71 + .../charactr/vocos-mel-24khz/config.yaml | 24 + .../vocos-mel-24khz/pytorch_model.bin | 3 + bi_v100-f5-tts/constraints_f5.txt | 3 +- bi_v100-f5-tts/f5_server.py | 274 +- bi_v100-f5-tts/ref_audio.wav | Bin 0 -> 497324 bytes bi_v100-f5-tts/ref_text.txt | 1 + bi_v100-f5-tts/requirements_f5.txt | 3 +- 92 files changed, 18189 insertions(+), 40 deletions(-) create mode 100644 bi_v100-f5-tts/F5-TTS/.gitignore create mode 100644 bi_v100-f5-tts/F5-TTS/.gitmodules create mode 100644 bi_v100-f5-tts/F5-TTS/.pre-commit-config.yaml create mode 100644 bi_v100-f5-tts/F5-TTS/Dockerfile create mode 100644 bi_v100-f5-tts/F5-TTS/LICENSE create mode 100644 bi_v100-f5-tts/F5-TTS/README.md create mode 100644 bi_v100-f5-tts/F5-TTS/pyproject.toml create mode 100644 bi_v100-f5-tts/F5-TTS/ruff.toml create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/api.py create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/configs/E2TTS_Base.yaml create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/configs/E2TTS_Small.yaml create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/configs/F5TTS_Base.yaml create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/configs/F5TTS_Small.yaml create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/configs/F5TTS_v1_Base.yaml create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/eval/README.md create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/eval/ecapa_tdnn.py create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/eval/eval_infer_batch.py create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/eval/eval_infer_batch.sh create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/eval/eval_librispeech_test_clean.py create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/eval/eval_seedtts_testset.py create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/eval/eval_utmos.py create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/eval/utils_eval.py create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/infer/README.md create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/infer/SHARED.md create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/infer/examples/basic/basic.toml create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/infer/examples/basic/basic_ref_en.wav create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/infer/examples/basic/basic_ref_zh.wav create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/infer/examples/multi/country.flac create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/infer/examples/multi/main.flac create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/infer/examples/multi/story.toml create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/infer/examples/multi/story.txt create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/infer/examples/multi/town.flac create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/infer/examples/vocab.txt create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/infer/infer_cli.py create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/infer/infer_gradio.py create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/infer/speech_edit.py create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/infer/utils_infer.py create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/model/__init__.py create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/model/backbones/README.md create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/model/backbones/dit.py create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/model/backbones/mmdit.py create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/model/backbones/unett.py create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/model/cfm.py create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/model/dataset.py create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/model/modules.py create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/model/trainer.py create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/model/utils.py create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/Dockerfile.server create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/README.md create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/benchmark.py create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/client_grpc.py create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/client_http.py create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/docker-compose.yml create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/model_repo_f5_tts/f5_tts/1/f5_tts_trtllm.py create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/model_repo_f5_tts/f5_tts/1/model.py create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/model_repo_f5_tts/f5_tts/config.pbtxt create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/model_repo_f5_tts/vocoder/1/.gitkeep create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/model_repo_f5_tts/vocoder/config.pbtxt create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/patch/__init__.py create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/patch/f5tts/model.py create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/patch/f5tts/modules.py create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/requirements-pytorch.txt create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/run.sh create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/scripts/conv_stft.py create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/scripts/convert_checkpoint.py create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/scripts/export_vocoder_to_onnx.py create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/scripts/export_vocos_trt.sh create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/scripts/fill_template.py create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/scripts/count_max_epoch.py create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/scripts/count_params_gflops.py create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/socket_client.py create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/socket_server.py create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/train/README.md create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/train/datasets/prepare_csv_wavs.py create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/train/datasets/prepare_emilia.py create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/train/datasets/prepare_emilia_v2.py create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/train/datasets/prepare_libritts.py create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/train/datasets/prepare_ljspeech.py create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/train/datasets/prepare_wenetspeech4tts.py create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/train/finetune_cli.py create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/train/finetune_gradio.py create mode 100644 bi_v100-f5-tts/F5-TTS/src/f5_tts/train/train.py create mode 100644 bi_v100-f5-tts/charactr/vocos-mel-24khz/.gitattributes create mode 100644 bi_v100-f5-tts/charactr/vocos-mel-24khz/README.md create mode 100644 bi_v100-f5-tts/charactr/vocos-mel-24khz/config.yaml create mode 100644 bi_v100-f5-tts/charactr/vocos-mel-24khz/pytorch_model.bin create mode 100644 bi_v100-f5-tts/ref_audio.wav create mode 100644 bi_v100-f5-tts/ref_text.txt diff --git a/bi_v100-f5-tts/Dockerfile_f5 b/bi_v100-f5-tts/Dockerfile_f5 index b566f9f..747c444 100644 --- a/bi_v100-f5-tts/Dockerfile_f5 +++ b/bi_v100-f5-tts/Dockerfile_f5 @@ -1,7 +1,8 @@ FROM corex:3.2.1 WORKDIR /workspace -COPY requirements_f5.txt constraints_f5.txt f5_server.py launch_f5.sh /workspace/ -RUN pip install -r requirements_f5.txt -c constraints_f5.txt - -ENTRYPOINT ["/bin/bash", "launch_f5.sh"] +COPY . /workspace/ +#COPY requirements_f5.txt constraints_f5.txt f5_server.py launch_f5.sh /workspace/ +RUN pip install -r requirements_f5.txt -c constraints_f5.txt -i https://nexus.4pd.io/repository/pypi-all/simple +RUN cd F5-TTS && pip install -e . -c ../constraints_f5.txt -i https://nexus.4pd.io/repository/pypi-all/simple +#ENTRYPOINT ["/bin/bash", "launch_f5.sh"] diff --git a/bi_v100-f5-tts/F5-TTS/.gitignore b/bi_v100-f5-tts/F5-TTS/.gitignore new file mode 100644 index 0000000..fac2555 --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/.gitignore @@ -0,0 +1,171 @@ +# Customed +.vscode/ +tests/ +runs/ +data/ +ckpts/ +wandb/ +results/ + +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/latest/usage/project/#working-with-version-control +.pdm.toml +.pdm-python +.pdm-build/ + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ diff --git a/bi_v100-f5-tts/F5-TTS/.gitmodules b/bi_v100-f5-tts/F5-TTS/.gitmodules new file mode 100644 index 0000000..1f572cc --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/.gitmodules @@ -0,0 +1,3 @@ +[submodule "src/third_party/BigVGAN"] + path = src/third_party/BigVGAN + url = https://github.com/NVIDIA/BigVGAN.git diff --git a/bi_v100-f5-tts/F5-TTS/.pre-commit-config.yaml b/bi_v100-f5-tts/F5-TTS/.pre-commit-config.yaml new file mode 100644 index 0000000..ffc3183 --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/.pre-commit-config.yaml @@ -0,0 +1,17 @@ +repos: + - repo: https://github.com/astral-sh/ruff-pre-commit + # Ruff version. + rev: v0.11.2 + hooks: + - id: ruff + name: ruff linter + args: [--fix] + - id: ruff-format + name: ruff formatter + - id: ruff + name: ruff sorter + args: [--select, I, --fix] + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v5.0.0 + hooks: + - id: check-yaml diff --git a/bi_v100-f5-tts/F5-TTS/Dockerfile b/bi_v100-f5-tts/F5-TTS/Dockerfile new file mode 100644 index 0000000..069b76d --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/Dockerfile @@ -0,0 +1,30 @@ +FROM pytorch/pytorch:2.4.0-cuda12.4-cudnn9-devel + +USER root + +ARG DEBIAN_FRONTEND=noninteractive + +LABEL github_repo="https://github.com/SWivid/F5-TTS" + +RUN set -x \ + && apt-get update \ + && apt-get -y install wget curl man git less openssl libssl-dev unzip unar build-essential aria2 tmux vim \ + && apt-get install -y openssh-server sox libsox-fmt-all libsox-fmt-mp3 libsndfile1-dev ffmpeg \ + && apt-get install -y librdmacm1 libibumad3 librdmacm-dev libibverbs1 libibverbs-dev ibverbs-utils ibverbs-providers \ + && rm -rf /var/lib/apt/lists/* \ + && apt-get clean + +WORKDIR /workspace + +RUN git clone https://github.com/SWivid/F5-TTS.git \ + && cd F5-TTS \ + && git submodule update --init --recursive \ + && pip install -e . --no-cache-dir + +ENV SHELL=/bin/bash + +VOLUME /root/.cache/huggingface/hub/ + +EXPOSE 7860 + +WORKDIR /workspace/F5-TTS diff --git a/bi_v100-f5-tts/F5-TTS/LICENSE b/bi_v100-f5-tts/F5-TTS/LICENSE new file mode 100644 index 0000000..9823050 --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Yushen CHEN + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/bi_v100-f5-tts/F5-TTS/README.md b/bi_v100-f5-tts/F5-TTS/README.md new file mode 100644 index 0000000..96a226d --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/README.md @@ -0,0 +1,261 @@ +# F5-TTS: A Fairytaler that Fakes Fluent and Faithful Speech with Flow Matching + +[![python](https://img.shields.io/badge/Python-3.10-brightgreen)](https://github.com/SWivid/F5-TTS) +[![arXiv](https://img.shields.io/badge/arXiv-2410.06885-b31b1b.svg?logo=arXiv)](https://arxiv.org/abs/2410.06885) +[![demo](https://img.shields.io/badge/GitHub-Demo%20page-orange.svg)](https://swivid.github.io/F5-TTS/) +[![hfspace](https://img.shields.io/badge/🤗-Space%20demo-yellow)](https://huggingface.co/spaces/mrfakename/E2-F5-TTS) +[![msspace](https://img.shields.io/badge/🤖-Space%20demo-blue)](https://modelscope.cn/studios/modelscope/E2-F5-TTS) +[![lab](https://img.shields.io/badge/X--LANCE-Lab-grey?labelColor=lightgrey)](https://x-lance.sjtu.edu.cn/) +[![lab](https://img.shields.io/badge/Peng%20Cheng-Lab-grey?labelColor=lightgrey)](https://www.pcl.ac.cn) + + +**F5-TTS**: Diffusion Transformer with ConvNeXt V2, faster trained and inference. + +**E2 TTS**: Flat-UNet Transformer, closest reproduction from [paper](https://arxiv.org/abs/2406.18009). + +**Sway Sampling**: Inference-time flow step sampling strategy, greatly improves performance + +### Thanks to all the contributors ! + +## News +- **2025/03/12**: 🔥 F5-TTS v1 base model with better training and inference performance. [Few demo](https://swivid.github.io/F5-TTS_updates). +- **2024/10/08**: F5-TTS & E2 TTS base models on [🤗 Hugging Face](https://huggingface.co/SWivid/F5-TTS), [🤖 Model Scope](https://www.modelscope.cn/models/SWivid/F5-TTS_Emilia-ZH-EN), [🟣 Wisemodel](https://wisemodel.cn/models/SJTU_X-LANCE/F5-TTS_Emilia-ZH-EN). + +## Installation + +### Create a separate environment if needed + +```bash +# Create a python 3.10 conda env (you could also use virtualenv) +conda create -n f5-tts python=3.10 +conda activate f5-tts +``` + +### Install PyTorch with matched device + +
+NVIDIA GPU + +> ```bash +> # Install pytorch with your CUDA version, e.g. +> pip install torch==2.4.0+cu124 torchaudio==2.4.0+cu124 --extra-index-url https://download.pytorch.org/whl/cu124 +> ``` + +
+ +
+AMD GPU + +> ```bash +> # Install pytorch with your ROCm version (Linux only), e.g. +> pip install torch==2.5.1+rocm6.2 torchaudio==2.5.1+rocm6.2 --extra-index-url https://download.pytorch.org/whl/rocm6.2 +> ``` + +
+ +
+Intel GPU + +> ```bash +> # Install pytorch with your XPU version, e.g. +> # Intel® Deep Learning Essentials or Intel® oneAPI Base Toolkit must be installed +> pip install torch torchaudio --index-url https://download.pytorch.org/whl/test/xpu +> +> # Intel GPU support is also available through IPEX (Intel® Extension for PyTorch) +> # IPEX does not require the Intel® Deep Learning Essentials or Intel® oneAPI Base Toolkit +> # See: https://pytorch-extension.intel.com/installation?request=platform +> ``` + +
+ +
+Apple Silicon + +> ```bash +> # Install the stable pytorch, e.g. +> pip install torch torchaudio +> ``` + +
+ +### Then you can choose one from below: + +> ### 1. As a pip package (if just for inference) +> +> ```bash +> pip install f5-tts +> ``` +> +> ### 2. Local editable (if also do training, finetuning) +> +> ```bash +> git clone https://github.com/SWivid/F5-TTS.git +> cd F5-TTS +> # git submodule update --init --recursive # (optional, if use bigvgan as vocoder) +> pip install -e . +> ``` + +### Docker usage also available +```bash +# Build from Dockerfile +docker build -t f5tts:v1 . + +# Run from GitHub Container Registry +docker container run --rm -it --gpus=all --mount 'type=volume,source=f5-tts,target=/root/.cache/huggingface/hub/' -p 7860:7860 ghcr.io/swivid/f5-tts:main + +# Quickstart if you want to just run the web interface (not CLI) +docker container run --rm -it --gpus=all --mount 'type=volume,source=f5-tts,target=/root/.cache/huggingface/hub/' -p 7860:7860 ghcr.io/swivid/f5-tts:main f5-tts_infer-gradio --host 0.0.0.0 +``` + +### Runtime + +Deployment solution with Triton and TensorRT-LLM. + +#### Benchmark Results +Decoding on a single L20 GPU, using 26 different prompt_audio & target_text pairs, 16 NFE. + +| Model | Concurrency | Avg Latency | RTF | Mode | +|---------------------|----------------|-------------|--------|-----------------| +| F5-TTS Base (Vocos) | 2 | 253 ms | 0.0394 | Client-Server | +| F5-TTS Base (Vocos) | 1 (Batch_size) | - | 0.0402 | Offline TRT-LLM | +| F5-TTS Base (Vocos) | 1 (Batch_size) | - | 0.1467 | Offline Pytorch | + +See [detailed instructions](src/f5_tts/runtime/triton_trtllm/README.md) for more information. + + +## Inference + +- In order to achieve desired performance, take a moment to read [detailed guidance](src/f5_tts/infer). +- By properly searching the keywords of problem encountered, [issues](https://github.com/SWivid/F5-TTS/issues?q=is%3Aissue) are very helpful. + +### 1. Gradio App + +Currently supported features: + +- Basic TTS with Chunk Inference +- Multi-Style / Multi-Speaker Generation +- Voice Chat powered by Qwen2.5-3B-Instruct +- [Custom inference with more language support](src/f5_tts/infer/SHARED.md) + +```bash +# Launch a Gradio app (web interface) +f5-tts_infer-gradio + +# Specify the port/host +f5-tts_infer-gradio --port 7860 --host 0.0.0.0 + +# Launch a share link +f5-tts_infer-gradio --share +``` + +
+NVIDIA device docker compose file example + +```yaml +services: + f5-tts: + image: ghcr.io/swivid/f5-tts:main + ports: + - "7860:7860" + environment: + GRADIO_SERVER_PORT: 7860 + entrypoint: ["f5-tts_infer-gradio", "--port", "7860", "--host", "0.0.0.0"] + deploy: + resources: + reservations: + devices: + - driver: nvidia + count: 1 + capabilities: [gpu] + +volumes: + f5-tts: + driver: local +``` + +
+ +### 2. CLI Inference + +```bash +# Run with flags +# Leave --ref_text "" will have ASR model transcribe (extra GPU memory usage) +f5-tts_infer-cli --model F5TTS_v1_Base \ +--ref_audio "provide_prompt_wav_path_here.wav" \ +--ref_text "The content, subtitle or transcription of reference audio." \ +--gen_text "Some text you want TTS model generate for you." + +# Run with default setting. src/f5_tts/infer/examples/basic/basic.toml +f5-tts_infer-cli +# Or with your own .toml file +f5-tts_infer-cli -c custom.toml + +# Multi voice. See src/f5_tts/infer/README.md +f5-tts_infer-cli -c src/f5_tts/infer/examples/multi/story.toml +``` + + +## Training + +### 1. With Hugging Face Accelerate + +Refer to [training & finetuning guidance](src/f5_tts/train) for best practice. + +### 2. With Gradio App + +```bash +# Quick start with Gradio web interface +f5-tts_finetune-gradio +``` + +Read [training & finetuning guidance](src/f5_tts/train) for more instructions. + + +## [Evaluation](src/f5_tts/eval) + + +## Development + +Use pre-commit to ensure code quality (will run linters and formatters automatically): + +```bash +pip install pre-commit +pre-commit install +``` + +When making a pull request, before each commit, run: + +```bash +pre-commit run --all-files +``` + +Note: Some model components have linting exceptions for E722 to accommodate tensor notation. + + +## Acknowledgements + +- [E2-TTS](https://arxiv.org/abs/2406.18009) brilliant work, simple and effective +- [Emilia](https://arxiv.org/abs/2407.05361), [WenetSpeech4TTS](https://arxiv.org/abs/2406.05763), [LibriTTS](https://arxiv.org/abs/1904.02882), [LJSpeech](https://keithito.com/LJ-Speech-Dataset/) valuable datasets +- [lucidrains](https://github.com/lucidrains) initial CFM structure with also [bfs18](https://github.com/bfs18) for discussion +- [SD3](https://arxiv.org/abs/2403.03206) & [Hugging Face diffusers](https://github.com/huggingface/diffusers) DiT and MMDiT code structure +- [torchdiffeq](https://github.com/rtqichen/torchdiffeq) as ODE solver, [Vocos](https://huggingface.co/charactr/vocos-mel-24khz) and [BigVGAN](https://github.com/NVIDIA/BigVGAN) as vocoder +- [FunASR](https://github.com/modelscope/FunASR), [faster-whisper](https://github.com/SYSTRAN/faster-whisper), [UniSpeech](https://github.com/microsoft/UniSpeech), [SpeechMOS](https://github.com/tarepan/SpeechMOS) for evaluation tools +- [ctc-forced-aligner](https://github.com/MahmoudAshraf97/ctc-forced-aligner) for speech edit test +- [mrfakename](https://x.com/realmrfakename) huggingface space demo ~ +- [f5-tts-mlx](https://github.com/lucasnewman/f5-tts-mlx/tree/main) Implementation with MLX framework by [Lucas Newman](https://github.com/lucasnewman) +- [F5-TTS-ONNX](https://github.com/DakeQQ/F5-TTS-ONNX) ONNX Runtime version by [DakeQQ](https://github.com/DakeQQ) +- [Yuekai Zhang](https://github.com/yuekaizhang) Triton and TensorRT-LLM support ~ + +## Citation +If our work and codebase is useful for you, please cite as: +``` +@article{chen-etal-2024-f5tts, + title={F5-TTS: A Fairytaler that Fakes Fluent and Faithful Speech with Flow Matching}, + author={Yushen Chen and Zhikang Niu and Ziyang Ma and Keqi Deng and Chunhui Wang and Jian Zhao and Kai Yu and Xie Chen}, + journal={arXiv preprint arXiv:2410.06885}, + year={2024}, +} +``` +## License + +Our code is released under MIT License. The pre-trained models are licensed under the CC-BY-NC license due to the training data Emilia, which is an in-the-wild dataset. Sorry for any inconvenience this may cause. diff --git a/bi_v100-f5-tts/F5-TTS/pyproject.toml b/bi_v100-f5-tts/F5-TTS/pyproject.toml new file mode 100644 index 0000000..69e4c9c --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/pyproject.toml @@ -0,0 +1,63 @@ +[build-system] +requires = ["setuptools >= 61.0", "setuptools-scm>=8.0"] +build-backend = "setuptools.build_meta" + +[project] +name = "f5-tts" +version = "1.1.5" +description = "F5-TTS: A Fairytaler that Fakes Fluent and Faithful Speech with Flow Matching" +readme = "README.md" +license = {text = "MIT License"} +classifiers = [ + "License :: OSI Approved :: MIT License", + "Operating System :: OS Independent", + "Programming Language :: Python :: 3", +] +dependencies = [ + "accelerate>=0.33.0,!=1.7.0", + "bitsandbytes>0.37.0; platform_machine != 'arm64' and platform_system != 'Darwin'", + "cached_path", + "click", + "datasets", + "ema_pytorch>=0.5.2", + "gradio>=3.45.2", + "hydra-core>=1.3.0", + "jieba", + "librosa", + "matplotlib", + "numpy<=1.26.4", + "pydantic<=2.10.6", + "pydub", + "pypinyin", + "safetensors", + "soundfile", + "tomli", + "torch>=2.0.0", + "torchaudio>=2.0.0", + "torchdiffeq", + "tqdm>=4.65.0", + "transformers", + "transformers_stream_generator", + "vocos", + "wandb", + "x_transformers>=1.31.14", +] + +[project.optional-dependencies] +eval = [ + "faster_whisper==0.10.1", + "funasr", + "jiwer", + "modelscope", + "zhconv", + "zhon", +] + +[project.urls] +Homepage = "https://github.com/SWivid/F5-TTS" + +[project.scripts] +"f5-tts_infer-cli" = "f5_tts.infer.infer_cli:main" +"f5-tts_infer-gradio" = "f5_tts.infer.infer_gradio:main" +"f5-tts_finetune-cli" = "f5_tts.train.finetune_cli:main" +"f5-tts_finetune-gradio" = "f5_tts.train.finetune_gradio:main" diff --git a/bi_v100-f5-tts/F5-TTS/ruff.toml b/bi_v100-f5-tts/F5-TTS/ruff.toml new file mode 100644 index 0000000..d2288bf --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/ruff.toml @@ -0,0 +1,10 @@ +line-length = 120 +target-version = "py310" + +[lint] +# Only ignore variables with names starting with "_". +dummy-variable-rgx = "^_.*$" + +[lint.isort] +force-single-line = false +lines-after-imports = 2 diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/api.py b/bi_v100-f5-tts/F5-TTS/src/f5_tts/api.py new file mode 100644 index 0000000..d73ee1b --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/api.py @@ -0,0 +1,164 @@ +import random +import sys +from importlib.resources import files + +import soundfile as sf +import tqdm +from cached_path import cached_path +from hydra.utils import get_class +from omegaconf import OmegaConf + +from f5_tts.infer.utils_infer import ( + infer_process, + load_model, + load_vocoder, + preprocess_ref_audio_text, + remove_silence_for_generated_wav, + save_spectrogram, + transcribe, +) +from f5_tts.model.utils import seed_everything + + +class F5TTS: + def __init__( + self, + model="F5TTS_v1_Base", + ckpt_file="", + vocab_file="", + ode_method="euler", + use_ema=True, + vocoder_local_path=None, + device=None, + hf_cache_dir=None, + ): + model_cfg = OmegaConf.load(str(files("f5_tts").joinpath(f"configs/{model}.yaml"))) + model_cls = get_class(f"f5_tts.model.{model_cfg.model.backbone}") + model_arc = model_cfg.model.arch + + self.mel_spec_type = model_cfg.model.mel_spec.mel_spec_type + self.target_sample_rate = model_cfg.model.mel_spec.target_sample_rate + + self.ode_method = ode_method + self.use_ema = use_ema + + if device is not None: + self.device = device + else: + import torch + + self.device = ( + "cuda" + if torch.cuda.is_available() + else "xpu" + if torch.xpu.is_available() + else "mps" + if torch.backends.mps.is_available() + else "cpu" + ) + + # Load models + self.vocoder = load_vocoder( + self.mel_spec_type, vocoder_local_path is not None, vocoder_local_path, self.device, hf_cache_dir + ) + + repo_name, ckpt_step, ckpt_type = "F5-TTS", 1250000, "safetensors" + + # override for previous models + if model == "F5TTS_Base": + if self.mel_spec_type == "vocos": + ckpt_step = 1200000 + elif self.mel_spec_type == "bigvgan": + model = "F5TTS_Base_bigvgan" + ckpt_type = "pt" + elif model == "E2TTS_Base": + repo_name = "E2-TTS" + ckpt_step = 1200000 + + if not ckpt_file: + ckpt_file = str( + cached_path(f"hf://SWivid/{repo_name}/{model}/model_{ckpt_step}.{ckpt_type}", cache_dir=hf_cache_dir) + ) + self.ema_model = load_model( + model_cls, model_arc, ckpt_file, self.mel_spec_type, vocab_file, self.ode_method, self.use_ema, self.device + ) + + def transcribe(self, ref_audio, language=None): + return transcribe(ref_audio, language) + + def export_wav(self, wav, file_wave, remove_silence=False): + sf.write(file_wave, wav, self.target_sample_rate) + + if remove_silence: + remove_silence_for_generated_wav(file_wave) + + def export_spectrogram(self, spec, file_spec): + save_spectrogram(spec, file_spec) + + def infer( + self, + ref_file, + ref_text, + gen_text, + show_info=print, + progress=tqdm, + target_rms=0.1, + cross_fade_duration=0.15, + sway_sampling_coef=-1, + cfg_strength=2, + nfe_step=32, + speed=1.0, + fix_duration=None, + remove_silence=False, + file_wave=None, + file_spec=None, + seed=None, + ): + if seed is None: + seed = random.randint(0, sys.maxsize) + seed_everything(seed) + self.seed = seed + + ref_file, ref_text = preprocess_ref_audio_text(ref_file, ref_text) + + wav, sr, spec = infer_process( + ref_file, + ref_text, + gen_text, + self.ema_model, + self.vocoder, + self.mel_spec_type, + show_info=show_info, + progress=progress, + target_rms=target_rms, + cross_fade_duration=cross_fade_duration, + nfe_step=nfe_step, + cfg_strength=cfg_strength, + sway_sampling_coef=sway_sampling_coef, + speed=speed, + fix_duration=fix_duration, + device=self.device, + ) + + if file_wave is not None: + self.export_wav(wav, file_wave, remove_silence) + + if file_spec is not None: + self.export_spectrogram(spec, file_spec) + + return wav, sr, spec + + +if __name__ == "__main__": + f5tts = F5TTS() + + wav, sr, spec = f5tts.infer( + ref_file=str(files("f5_tts").joinpath("infer/examples/basic/basic_ref_en.wav")), + ref_text="some call me nature, others call me mother nature.", + gen_text="""I don't really care what you call me. I've been a silent spectator, watching species evolve, empires rise and fall. But always remember, I am mighty and enduring. Respect me and I'll nurture you; ignore me and you shall face the consequences.""", + file_wave=str(files("f5_tts").joinpath("../../tests/api_out.wav")), + file_spec=str(files("f5_tts").joinpath("../../tests/api_out.png")), + seed=None, + ) + + print("seed :", f5tts.seed) diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/configs/E2TTS_Base.yaml b/bi_v100-f5-tts/F5-TTS/src/f5_tts/configs/E2TTS_Base.yaml new file mode 100644 index 0000000..ee70182 --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/configs/E2TTS_Base.yaml @@ -0,0 +1,49 @@ +hydra: + run: + dir: ckpts/${model.name}_${model.mel_spec.mel_spec_type}_${model.tokenizer}_${datasets.name}/${now:%Y-%m-%d}/${now:%H-%M-%S} + +datasets: + name: Emilia_ZH_EN # dataset name + batch_size_per_gpu: 38400 # 8 GPUs, 8 * 38400 = 307200 + batch_size_type: frame # frame | sample + max_samples: 64 # max sequences per batch if use frame-wise batch_size. we set 32 for small models, 64 for base models + num_workers: 16 + +optim: + epochs: 11 + learning_rate: 7.5e-5 + num_warmup_updates: 20000 # warmup updates + grad_accumulation_steps: 1 # note: updates = steps / grad_accumulation_steps + max_grad_norm: 1.0 # gradient clipping + bnb_optimizer: False # use bnb 8bit AdamW optimizer or not + +model: + name: E2TTS_Base + tokenizer: pinyin + tokenizer_path: null # if 'custom' tokenizer, define the path want to use (should be vocab.txt) + backbone: UNetT + arch: + dim: 1024 + depth: 24 + heads: 16 + ff_mult: 4 + text_mask_padding: False + pe_attn_head: 1 + mel_spec: + target_sample_rate: 24000 + n_mel_channels: 100 + hop_length: 256 + win_length: 1024 + n_fft: 1024 + mel_spec_type: vocos # vocos | bigvgan + vocoder: + is_local: False # use local offline ckpt or not + local_path: null # local vocoder path + +ckpts: + logger: wandb # wandb | tensorboard | null + log_samples: True # infer random sample per save checkpoint. wip, normal to fail with extra long samples + save_per_updates: 50000 # save checkpoint per updates + keep_last_n_checkpoints: -1 # -1 to keep all, 0 to not save intermediate, > 0 to keep last N checkpoints + last_per_updates: 5000 # save last checkpoint per updates + save_dir: ckpts/${model.name}_${model.mel_spec.mel_spec_type}_${model.tokenizer}_${datasets.name} \ No newline at end of file diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/configs/E2TTS_Small.yaml b/bi_v100-f5-tts/F5-TTS/src/f5_tts/configs/E2TTS_Small.yaml new file mode 100644 index 0000000..cbb1f44 --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/configs/E2TTS_Small.yaml @@ -0,0 +1,49 @@ +hydra: + run: + dir: ckpts/${model.name}_${model.mel_spec.mel_spec_type}_${model.tokenizer}_${datasets.name}/${now:%Y-%m-%d}/${now:%H-%M-%S} + +datasets: + name: Emilia_ZH_EN + batch_size_per_gpu: 38400 # 8 GPUs, 8 * 38400 = 307200 + batch_size_type: frame # frame | sample + max_samples: 64 # max sequences per batch if use frame-wise batch_size. we set 32 for small models, 64 for base models + num_workers: 16 + +optim: + epochs: 11 + learning_rate: 7.5e-5 + num_warmup_updates: 20000 # warmup updates + grad_accumulation_steps: 1 # note: updates = steps / grad_accumulation_steps + max_grad_norm: 1.0 + bnb_optimizer: False + +model: + name: E2TTS_Small + tokenizer: pinyin + tokenizer_path: null # if 'custom' tokenizer, define the path want to use (should be vocab.txt) + backbone: UNetT + arch: + dim: 768 + depth: 20 + heads: 12 + ff_mult: 4 + text_mask_padding: False + pe_attn_head: 1 + mel_spec: + target_sample_rate: 24000 + n_mel_channels: 100 + hop_length: 256 + win_length: 1024 + n_fft: 1024 + mel_spec_type: vocos # vocos | bigvgan + vocoder: + is_local: False # use local offline ckpt or not + local_path: null # local vocoder path + +ckpts: + logger: wandb # wandb | tensorboard | null + log_samples: True # infer random sample per save checkpoint. wip, normal to fail with extra long samples + save_per_updates: 50000 # save checkpoint per updates + keep_last_n_checkpoints: -1 # -1 to keep all, 0 to not save intermediate, > 0 to keep last N checkpoints + last_per_updates: 5000 # save last checkpoint per updates + save_dir: ckpts/${model.name}_${model.mel_spec.mel_spec_type}_${model.tokenizer}_${datasets.name} \ No newline at end of file diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/configs/F5TTS_Base.yaml b/bi_v100-f5-tts/F5-TTS/src/f5_tts/configs/F5TTS_Base.yaml new file mode 100644 index 0000000..d177674 --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/configs/F5TTS_Base.yaml @@ -0,0 +1,54 @@ +hydra: + run: + dir: ckpts/${model.name}_${model.mel_spec.mel_spec_type}_${model.tokenizer}_${datasets.name}/${now:%Y-%m-%d}/${now:%H-%M-%S} + +datasets: + name: Emilia_ZH_EN # dataset name + batch_size_per_gpu: 38400 # 8 GPUs, 8 * 38400 = 307200 + batch_size_type: frame # frame | sample + max_samples: 64 # max sequences per batch if use frame-wise batch_size. we set 32 for small models, 64 for base models + num_workers: 16 + +optim: + epochs: 11 + learning_rate: 7.5e-5 + num_warmup_updates: 20000 # warmup updates + grad_accumulation_steps: 1 # note: updates = steps / grad_accumulation_steps + max_grad_norm: 1.0 # gradient clipping + bnb_optimizer: False # use bnb 8bit AdamW optimizer or not + +model: + name: F5TTS_Base # model name + tokenizer: pinyin # tokenizer type + tokenizer_path: null # if 'custom' tokenizer, define the path want to use (should be vocab.txt) + backbone: DiT + arch: + dim: 1024 + depth: 22 + heads: 16 + ff_mult: 2 + text_dim: 512 + text_mask_padding: False + conv_layers: 4 + pe_attn_head: 1 + attn_backend: torch # torch | flash_attn + attn_mask_enabled: False + checkpoint_activations: False # recompute activations and save memory for extra compute + mel_spec: + target_sample_rate: 24000 + n_mel_channels: 100 + hop_length: 256 + win_length: 1024 + n_fft: 1024 + mel_spec_type: vocos # vocos | bigvgan + vocoder: + is_local: False # use local offline ckpt or not + local_path: null # local vocoder path + +ckpts: + logger: wandb # wandb | tensorboard | null + log_samples: True # infer random sample per save checkpoint. wip, normal to fail with extra long samples + save_per_updates: 50000 # save checkpoint per updates + keep_last_n_checkpoints: -1 # -1 to keep all, 0 to not save intermediate, > 0 to keep last N checkpoints + last_per_updates: 5000 # save last checkpoint per updates + save_dir: ckpts/${model.name}_${model.mel_spec.mel_spec_type}_${model.tokenizer}_${datasets.name} \ No newline at end of file diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/configs/F5TTS_Small.yaml b/bi_v100-f5-tts/F5-TTS/src/f5_tts/configs/F5TTS_Small.yaml new file mode 100644 index 0000000..396f389 --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/configs/F5TTS_Small.yaml @@ -0,0 +1,54 @@ +hydra: + run: + dir: ckpts/${model.name}_${model.mel_spec.mel_spec_type}_${model.tokenizer}_${datasets.name}/${now:%Y-%m-%d}/${now:%H-%M-%S} + +datasets: + name: Emilia_ZH_EN + batch_size_per_gpu: 38400 # 8 GPUs, 8 * 38400 = 307200 + batch_size_type: frame # frame | sample + max_samples: 64 # max sequences per batch if use frame-wise batch_size. we set 32 for small models, 64 for base models + num_workers: 16 + +optim: + epochs: 11 # only suitable for Emilia, if you want to train it on LibriTTS, set epoch 686 + learning_rate: 7.5e-5 + num_warmup_updates: 20000 # warmup updates + grad_accumulation_steps: 1 # note: updates = steps / grad_accumulation_steps + max_grad_norm: 1.0 # gradient clipping + bnb_optimizer: False # use bnb 8bit AdamW optimizer or not + +model: + name: F5TTS_Small + tokenizer: pinyin + tokenizer_path: null # if 'custom' tokenizer, define the path want to use (should be vocab.txt) + backbone: DiT + arch: + dim: 768 + depth: 18 + heads: 12 + ff_mult: 2 + text_dim: 512 + text_mask_padding: False + conv_layers: 4 + pe_attn_head: 1 + attn_backend: torch # torch | flash_attn + attn_mask_enabled: False + checkpoint_activations: False # recompute activations and save memory for extra compute + mel_spec: + target_sample_rate: 24000 + n_mel_channels: 100 + hop_length: 256 + win_length: 1024 + n_fft: 1024 + mel_spec_type: vocos # vocos | bigvgan + vocoder: + is_local: False # use local offline ckpt or not + local_path: null # local vocoder path + +ckpts: + logger: wandb # wandb | tensorboard | null + log_samples: True # infer random sample per save checkpoint. wip, normal to fail with extra long samples + save_per_updates: 50000 # save checkpoint per updates + keep_last_n_checkpoints: -1 # -1 to keep all, 0 to not save intermediate, > 0 to keep last N checkpoints + last_per_updates: 5000 # save last checkpoint per updates + save_dir: ckpts/${model.name}_${model.mel_spec.mel_spec_type}_${model.tokenizer}_${datasets.name} diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/configs/F5TTS_v1_Base.yaml b/bi_v100-f5-tts/F5-TTS/src/f5_tts/configs/F5TTS_v1_Base.yaml new file mode 100644 index 0000000..3386e07 --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/configs/F5TTS_v1_Base.yaml @@ -0,0 +1,55 @@ +hydra: + run: + dir: ckpts/${model.name}_${model.mel_spec.mel_spec_type}_${model.tokenizer}_${datasets.name}/${now:%Y-%m-%d}/${now:%H-%M-%S} + +datasets: + name: Emilia_ZH_EN # dataset name + batch_size_per_gpu: 38400 # 8 GPUs, 8 * 38400 = 307200 + batch_size_type: frame # frame | sample + max_samples: 64 # max sequences per batch if use frame-wise batch_size. we set 32 for small models, 64 for base models + num_workers: 16 + +optim: + epochs: 11 + learning_rate: 7.5e-5 + num_warmup_updates: 20000 # warmup updates + grad_accumulation_steps: 1 # note: updates = steps / grad_accumulation_steps + max_grad_norm: 1.0 # gradient clipping + bnb_optimizer: False # use bnb 8bit AdamW optimizer or not + +model: + name: F5TTS_v1_Base # model name + tokenizer: pinyin # tokenizer type + tokenizer_path: null # if 'custom' tokenizer, define the path want to use (should be vocab.txt) + backbone: DiT + arch: + dim: 1024 + depth: 22 + heads: 16 + ff_mult: 2 + text_dim: 512 + text_mask_padding: True + qk_norm: null # null | rms_norm + conv_layers: 4 + pe_attn_head: null + attn_backend: flash_attn # torch | flash_attn + attn_mask_enabled: False + checkpoint_activations: False # recompute activations and save memory for extra compute + mel_spec: + target_sample_rate: 24000 + n_mel_channels: 100 + hop_length: 256 + win_length: 1024 + n_fft: 1024 + mel_spec_type: vocos # vocos | bigvgan + vocoder: + is_local: False # use local offline ckpt or not + local_path: null # local vocoder path + +ckpts: + logger: wandb # wandb | tensorboard | null + log_samples: True # infer random sample per save checkpoint. wip, normal to fail with extra long samples + save_per_updates: 50000 # save checkpoint per updates + keep_last_n_checkpoints: -1 # -1 to keep all, 0 to not save intermediate, > 0 to keep last N checkpoints + last_per_updates: 5000 # save last checkpoint per updates + save_dir: ckpts/${model.name}_${model.mel_spec.mel_spec_type}_${model.tokenizer}_${datasets.name} \ No newline at end of file diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/eval/README.md b/bi_v100-f5-tts/F5-TTS/src/f5_tts/eval/README.md new file mode 100644 index 0000000..c33ef92 --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/eval/README.md @@ -0,0 +1,52 @@ + +# Evaluation + +Install packages for evaluation: + +```bash +pip install -e .[eval] +``` + +## Generating Samples for Evaluation + +### Prepare Test Datasets + +1. *Seed-TTS testset*: Download from [seed-tts-eval](https://github.com/BytedanceSpeech/seed-tts-eval). +2. *LibriSpeech test-clean*: Download from [OpenSLR](http://www.openslr.org/12/). +3. Unzip the downloaded datasets and place them in the `data/` directory. +4. Update the path for *LibriSpeech test-clean* data in `src/f5_tts/eval/eval_infer_batch.py` +5. Our filtered LibriSpeech-PC 4-10s subset: `data/librispeech_pc_test_clean_cross_sentence.lst` + +### Batch Inference for Test Set + +To run batch inference for evaluations, execute the following commands: + +```bash +# batch inference for evaluations +accelerate config # if not set before +bash src/f5_tts/eval/eval_infer_batch.sh +``` + +## Objective Evaluation on Generated Results + +### Download Evaluation Model Checkpoints + +1. Chinese ASR Model: [Paraformer-zh](https://huggingface.co/funasr/paraformer-zh) +2. English ASR Model: [Faster-Whisper](https://huggingface.co/Systran/faster-whisper-large-v3) +3. WavLM Model: Download from [Google Drive](https://drive.google.com/file/d/1-aE1NfzpRCLxA4GUxX9ITI3F9LlbtEGP/view). + +Then update in the following scripts with the paths you put evaluation model ckpts to. + +### Objective Evaluation + +Update the path with your batch-inferenced results, and carry out WER / SIM / UTMOS evaluations: +```bash +# Evaluation [WER] for Seed-TTS test [ZH] set +python src/f5_tts/eval/eval_seedtts_testset.py --eval_task wer --lang zh --gen_wav_dir --gpu_nums 8 + +# Evaluation [SIM] for LibriSpeech-PC test-clean (cross-sentence) +python src/f5_tts/eval/eval_librispeech_test_clean.py --eval_task sim --gen_wav_dir --librispeech_test_clean_path + +# Evaluation [UTMOS]. --ext: Audio extension +python src/f5_tts/eval/eval_utmos.py --audio_dir --ext wav +``` diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/eval/ecapa_tdnn.py b/bi_v100-f5-tts/F5-TTS/src/f5_tts/eval/ecapa_tdnn.py new file mode 100644 index 0000000..f0e4c9c --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/eval/ecapa_tdnn.py @@ -0,0 +1,331 @@ +# just for speaker similarity evaluation, third-party code + +# From https://github.com/microsoft/UniSpeech/blob/main/downstreams/speaker_verification/models/ +# part of the code is borrowed from https://github.com/lawlict/ECAPA-TDNN + +import os + +import torch +import torch.nn as nn +import torch.nn.functional as F + + +""" Res2Conv1d + BatchNorm1d + ReLU +""" + + +class Res2Conv1dReluBn(nn.Module): + """ + in_channels == out_channels == channels + """ + + def __init__(self, channels, kernel_size=1, stride=1, padding=0, dilation=1, bias=True, scale=4): + super().__init__() + assert channels % scale == 0, "{} % {} != 0".format(channels, scale) + self.scale = scale + self.width = channels // scale + self.nums = scale if scale == 1 else scale - 1 + + self.convs = [] + self.bns = [] + for i in range(self.nums): + self.convs.append(nn.Conv1d(self.width, self.width, kernel_size, stride, padding, dilation, bias=bias)) + self.bns.append(nn.BatchNorm1d(self.width)) + self.convs = nn.ModuleList(self.convs) + self.bns = nn.ModuleList(self.bns) + + def forward(self, x): + out = [] + spx = torch.split(x, self.width, 1) + for i in range(self.nums): + if i == 0: + sp = spx[i] + else: + sp = sp + spx[i] + # Order: conv -> relu -> bn + sp = self.convs[i](sp) + sp = self.bns[i](F.relu(sp)) + out.append(sp) + if self.scale != 1: + out.append(spx[self.nums]) + out = torch.cat(out, dim=1) + + return out + + +""" Conv1d + BatchNorm1d + ReLU +""" + + +class Conv1dReluBn(nn.Module): + def __init__(self, in_channels, out_channels, kernel_size=1, stride=1, padding=0, dilation=1, bias=True): + super().__init__() + self.conv = nn.Conv1d(in_channels, out_channels, kernel_size, stride, padding, dilation, bias=bias) + self.bn = nn.BatchNorm1d(out_channels) + + def forward(self, x): + return self.bn(F.relu(self.conv(x))) + + +""" The SE connection of 1D case. +""" + + +class SE_Connect(nn.Module): + def __init__(self, channels, se_bottleneck_dim=128): + super().__init__() + self.linear1 = nn.Linear(channels, se_bottleneck_dim) + self.linear2 = nn.Linear(se_bottleneck_dim, channels) + + def forward(self, x): + out = x.mean(dim=2) + out = F.relu(self.linear1(out)) + out = torch.sigmoid(self.linear2(out)) + out = x * out.unsqueeze(2) + + return out + + +""" SE-Res2Block of the ECAPA-TDNN architecture. +""" + +# def SE_Res2Block(channels, kernel_size, stride, padding, dilation, scale): +# return nn.Sequential( +# Conv1dReluBn(channels, 512, kernel_size=1, stride=1, padding=0), +# Res2Conv1dReluBn(512, kernel_size, stride, padding, dilation, scale=scale), +# Conv1dReluBn(512, channels, kernel_size=1, stride=1, padding=0), +# SE_Connect(channels) +# ) + + +class SE_Res2Block(nn.Module): + def __init__(self, in_channels, out_channels, kernel_size, stride, padding, dilation, scale, se_bottleneck_dim): + super().__init__() + self.Conv1dReluBn1 = Conv1dReluBn(in_channels, out_channels, kernel_size=1, stride=1, padding=0) + self.Res2Conv1dReluBn = Res2Conv1dReluBn(out_channels, kernel_size, stride, padding, dilation, scale=scale) + self.Conv1dReluBn2 = Conv1dReluBn(out_channels, out_channels, kernel_size=1, stride=1, padding=0) + self.SE_Connect = SE_Connect(out_channels, se_bottleneck_dim) + + self.shortcut = None + if in_channels != out_channels: + self.shortcut = nn.Conv1d( + in_channels=in_channels, + out_channels=out_channels, + kernel_size=1, + ) + + def forward(self, x): + residual = x + if self.shortcut: + residual = self.shortcut(x) + + x = self.Conv1dReluBn1(x) + x = self.Res2Conv1dReluBn(x) + x = self.Conv1dReluBn2(x) + x = self.SE_Connect(x) + + return x + residual + + +""" Attentive weighted mean and standard deviation pooling. +""" + + +class AttentiveStatsPool(nn.Module): + def __init__(self, in_dim, attention_channels=128, global_context_att=False): + super().__init__() + self.global_context_att = global_context_att + + # Use Conv1d with stride == 1 rather than Linear, then we don't need to transpose inputs. + if global_context_att: + self.linear1 = nn.Conv1d(in_dim * 3, attention_channels, kernel_size=1) # equals W and b in the paper + else: + self.linear1 = nn.Conv1d(in_dim, attention_channels, kernel_size=1) # equals W and b in the paper + self.linear2 = nn.Conv1d(attention_channels, in_dim, kernel_size=1) # equals V and k in the paper + + def forward(self, x): + if self.global_context_att: + context_mean = torch.mean(x, dim=-1, keepdim=True).expand_as(x) + context_std = torch.sqrt(torch.var(x, dim=-1, keepdim=True) + 1e-10).expand_as(x) + x_in = torch.cat((x, context_mean, context_std), dim=1) + else: + x_in = x + + # DON'T use ReLU here! In experiments, I find ReLU hard to converge. + alpha = torch.tanh(self.linear1(x_in)) + # alpha = F.relu(self.linear1(x_in)) + alpha = torch.softmax(self.linear2(alpha), dim=2) + mean = torch.sum(alpha * x, dim=2) + residuals = torch.sum(alpha * (x**2), dim=2) - mean**2 + std = torch.sqrt(residuals.clamp(min=1e-9)) + return torch.cat([mean, std], dim=1) + + +class ECAPA_TDNN(nn.Module): + def __init__( + self, + feat_dim=80, + channels=512, + emb_dim=192, + global_context_att=False, + feat_type="wavlm_large", + sr=16000, + feature_selection="hidden_states", + update_extract=False, + config_path=None, + ): + super().__init__() + + self.feat_type = feat_type + self.feature_selection = feature_selection + self.update_extract = update_extract + self.sr = sr + + torch.hub._validate_not_a_forked_repo = lambda a, b, c: True + try: + local_s3prl_path = os.path.expanduser("~/.cache/torch/hub/s3prl_s3prl_main") + self.feature_extract = torch.hub.load(local_s3prl_path, feat_type, source="local", config_path=config_path) + except: # noqa: E722 + self.feature_extract = torch.hub.load("s3prl/s3prl", feat_type) + + if len(self.feature_extract.model.encoder.layers) == 24 and hasattr( + self.feature_extract.model.encoder.layers[23].self_attn, "fp32_attention" + ): + self.feature_extract.model.encoder.layers[23].self_attn.fp32_attention = False + if len(self.feature_extract.model.encoder.layers) == 24 and hasattr( + self.feature_extract.model.encoder.layers[11].self_attn, "fp32_attention" + ): + self.feature_extract.model.encoder.layers[11].self_attn.fp32_attention = False + + self.feat_num = self.get_feat_num() + self.feature_weight = nn.Parameter(torch.zeros(self.feat_num)) + + if feat_type != "fbank" and feat_type != "mfcc": + freeze_list = ["final_proj", "label_embs_concat", "mask_emb", "project_q", "quantizer"] + for name, param in self.feature_extract.named_parameters(): + for freeze_val in freeze_list: + if freeze_val in name: + param.requires_grad = False + break + + if not self.update_extract: + for param in self.feature_extract.parameters(): + param.requires_grad = False + + self.instance_norm = nn.InstanceNorm1d(feat_dim) + # self.channels = [channels] * 4 + [channels * 3] + self.channels = [channels] * 4 + [1536] + + self.layer1 = Conv1dReluBn(feat_dim, self.channels[0], kernel_size=5, padding=2) + self.layer2 = SE_Res2Block( + self.channels[0], + self.channels[1], + kernel_size=3, + stride=1, + padding=2, + dilation=2, + scale=8, + se_bottleneck_dim=128, + ) + self.layer3 = SE_Res2Block( + self.channels[1], + self.channels[2], + kernel_size=3, + stride=1, + padding=3, + dilation=3, + scale=8, + se_bottleneck_dim=128, + ) + self.layer4 = SE_Res2Block( + self.channels[2], + self.channels[3], + kernel_size=3, + stride=1, + padding=4, + dilation=4, + scale=8, + se_bottleneck_dim=128, + ) + + # self.conv = nn.Conv1d(self.channels[-1], self.channels[-1], kernel_size=1) + cat_channels = channels * 3 + self.conv = nn.Conv1d(cat_channels, self.channels[-1], kernel_size=1) + self.pooling = AttentiveStatsPool( + self.channels[-1], attention_channels=128, global_context_att=global_context_att + ) + self.bn = nn.BatchNorm1d(self.channels[-1] * 2) + self.linear = nn.Linear(self.channels[-1] * 2, emb_dim) + + def get_feat_num(self): + self.feature_extract.eval() + wav = [torch.randn(self.sr).to(next(self.feature_extract.parameters()).device)] + with torch.no_grad(): + features = self.feature_extract(wav) + select_feature = features[self.feature_selection] + if isinstance(select_feature, (list, tuple)): + return len(select_feature) + else: + return 1 + + def get_feat(self, x): + if self.update_extract: + x = self.feature_extract([sample for sample in x]) + else: + with torch.no_grad(): + if self.feat_type == "fbank" or self.feat_type == "mfcc": + x = self.feature_extract(x) + 1e-6 # B x feat_dim x time_len + else: + x = self.feature_extract([sample for sample in x]) + + if self.feat_type == "fbank": + x = x.log() + + if self.feat_type != "fbank" and self.feat_type != "mfcc": + x = x[self.feature_selection] + if isinstance(x, (list, tuple)): + x = torch.stack(x, dim=0) + else: + x = x.unsqueeze(0) + norm_weights = F.softmax(self.feature_weight, dim=-1).unsqueeze(-1).unsqueeze(-1).unsqueeze(-1) + x = (norm_weights * x).sum(dim=0) + x = torch.transpose(x, 1, 2) + 1e-6 + + x = self.instance_norm(x) + return x + + def forward(self, x): + x = self.get_feat(x) + + out1 = self.layer1(x) + out2 = self.layer2(out1) + out3 = self.layer3(out2) + out4 = self.layer4(out3) + + out = torch.cat([out2, out3, out4], dim=1) + out = F.relu(self.conv(out)) + out = self.bn(self.pooling(out)) + out = self.linear(out) + + return out + + +def ECAPA_TDNN_SMALL( + feat_dim, + emb_dim=256, + feat_type="wavlm_large", + sr=16000, + feature_selection="hidden_states", + update_extract=False, + config_path=None, +): + return ECAPA_TDNN( + feat_dim=feat_dim, + channels=512, + emb_dim=emb_dim, + feat_type=feat_type, + sr=sr, + feature_selection=feature_selection, + update_extract=update_extract, + config_path=config_path, + ) diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/eval/eval_infer_batch.py b/bi_v100-f5-tts/F5-TTS/src/f5_tts/eval/eval_infer_batch.py new file mode 100644 index 0000000..cea5b7a --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/eval/eval_infer_batch.py @@ -0,0 +1,210 @@ +import os +import sys + + +sys.path.append(os.getcwd()) + +import argparse +import time +from importlib.resources import files + +import torch +import torchaudio +from accelerate import Accelerator +from hydra.utils import get_class +from omegaconf import OmegaConf +from tqdm import tqdm + +from f5_tts.eval.utils_eval import ( + get_inference_prompt, + get_librispeech_test_clean_metainfo, + get_seedtts_testset_metainfo, +) +from f5_tts.infer.utils_infer import load_checkpoint, load_vocoder +from f5_tts.model import CFM +from f5_tts.model.utils import get_tokenizer + + +accelerator = Accelerator() +device = f"cuda:{accelerator.process_index}" + + +use_ema = True +target_rms = 0.1 + + +rel_path = str(files("f5_tts").joinpath("../../")) + + +def main(): + parser = argparse.ArgumentParser(description="batch inference") + + parser.add_argument("-s", "--seed", default=None, type=int) + parser.add_argument("-n", "--expname", required=True) + parser.add_argument("-c", "--ckptstep", default=1250000, type=int) + + parser.add_argument("-nfe", "--nfestep", default=32, type=int) + parser.add_argument("-o", "--odemethod", default="euler") + parser.add_argument("-ss", "--swaysampling", default=-1, type=float) + + parser.add_argument("-t", "--testset", required=True) + + args = parser.parse_args() + + seed = args.seed + exp_name = args.expname + ckpt_step = args.ckptstep + + nfe_step = args.nfestep + ode_method = args.odemethod + sway_sampling_coef = args.swaysampling + + testset = args.testset + + infer_batch_size = 1 # max frames. 1 for ddp single inference (recommended) + cfg_strength = 2.0 + speed = 1.0 + use_truth_duration = False + no_ref_audio = False + + model_cfg = OmegaConf.load(str(files("f5_tts").joinpath(f"configs/{exp_name}.yaml"))) + model_cls = get_class(f"f5_tts.model.{model_cfg.model.backbone}") + model_arc = model_cfg.model.arch + + dataset_name = model_cfg.datasets.name + tokenizer = model_cfg.model.tokenizer + + mel_spec_type = model_cfg.model.mel_spec.mel_spec_type + target_sample_rate = model_cfg.model.mel_spec.target_sample_rate + n_mel_channels = model_cfg.model.mel_spec.n_mel_channels + hop_length = model_cfg.model.mel_spec.hop_length + win_length = model_cfg.model.mel_spec.win_length + n_fft = model_cfg.model.mel_spec.n_fft + + if testset == "ls_pc_test_clean": + metalst = rel_path + "/data/librispeech_pc_test_clean_cross_sentence.lst" + librispeech_test_clean_path = "/LibriSpeech/test-clean" # test-clean path + metainfo = get_librispeech_test_clean_metainfo(metalst, librispeech_test_clean_path) + + elif testset == "seedtts_test_zh": + metalst = rel_path + "/data/seedtts_testset/zh/meta.lst" + metainfo = get_seedtts_testset_metainfo(metalst) + + elif testset == "seedtts_test_en": + metalst = rel_path + "/data/seedtts_testset/en/meta.lst" + metainfo = get_seedtts_testset_metainfo(metalst) + + # path to save genereted wavs + output_dir = ( + f"{rel_path}/" + f"results/{exp_name}_{ckpt_step}/{testset}/" + f"seed{seed}_{ode_method}_nfe{nfe_step}_{mel_spec_type}" + f"{f'_ss{sway_sampling_coef}' if sway_sampling_coef else ''}" + f"_cfg{cfg_strength}_speed{speed}" + f"{'_gt-dur' if use_truth_duration else ''}" + f"{'_no-ref-audio' if no_ref_audio else ''}" + ) + + # -------------------------------------------------# + + prompts_all = get_inference_prompt( + metainfo, + speed=speed, + tokenizer=tokenizer, + target_sample_rate=target_sample_rate, + n_mel_channels=n_mel_channels, + hop_length=hop_length, + mel_spec_type=mel_spec_type, + target_rms=target_rms, + use_truth_duration=use_truth_duration, + infer_batch_size=infer_batch_size, + ) + + # Vocoder model + local = False + if mel_spec_type == "vocos": + vocoder_local_path = "../checkpoints/charactr/vocos-mel-24khz" + elif mel_spec_type == "bigvgan": + vocoder_local_path = "../checkpoints/bigvgan_v2_24khz_100band_256x" + vocoder = load_vocoder(vocoder_name=mel_spec_type, is_local=local, local_path=vocoder_local_path) + + # Tokenizer + vocab_char_map, vocab_size = get_tokenizer(dataset_name, tokenizer) + + # Model + model = CFM( + transformer=model_cls(**model_arc, text_num_embeds=vocab_size, mel_dim=n_mel_channels), + mel_spec_kwargs=dict( + n_fft=n_fft, + hop_length=hop_length, + win_length=win_length, + n_mel_channels=n_mel_channels, + target_sample_rate=target_sample_rate, + mel_spec_type=mel_spec_type, + ), + odeint_kwargs=dict( + method=ode_method, + ), + vocab_char_map=vocab_char_map, + ).to(device) + + ckpt_prefix = rel_path + f"/ckpts/{exp_name}/model_{ckpt_step}" + if os.path.exists(ckpt_prefix + ".pt"): + ckpt_path = ckpt_prefix + ".pt" + elif os.path.exists(ckpt_prefix + ".safetensors"): + ckpt_path = ckpt_prefix + ".safetensors" + else: + print("Loading from self-organized training checkpoints rather than released pretrained.") + ckpt_path = rel_path + f"/{model_cfg.ckpts.save_dir}/model_{ckpt_step}.pt" + + dtype = torch.float32 if mel_spec_type == "bigvgan" else None + model = load_checkpoint(model, ckpt_path, device, dtype=dtype, use_ema=use_ema) + + if not os.path.exists(output_dir) and accelerator.is_main_process: + os.makedirs(output_dir) + + # start batch inference + accelerator.wait_for_everyone() + start = time.time() + + with accelerator.split_between_processes(prompts_all) as prompts: + for prompt in tqdm(prompts, disable=not accelerator.is_local_main_process): + utts, ref_rms_list, ref_mels, ref_mel_lens, total_mel_lens, final_text_list = prompt + ref_mels = ref_mels.to(device) + ref_mel_lens = torch.tensor(ref_mel_lens, dtype=torch.long).to(device) + total_mel_lens = torch.tensor(total_mel_lens, dtype=torch.long).to(device) + + # Inference + with torch.inference_mode(): + generated, _ = model.sample( + cond=ref_mels, + text=final_text_list, + duration=total_mel_lens, + lens=ref_mel_lens, + steps=nfe_step, + cfg_strength=cfg_strength, + sway_sampling_coef=sway_sampling_coef, + no_ref_audio=no_ref_audio, + seed=seed, + ) + # Final result + for i, gen in enumerate(generated): + gen = gen[ref_mel_lens[i] : total_mel_lens[i], :].unsqueeze(0) + gen_mel_spec = gen.permute(0, 2, 1).to(torch.float32) + if mel_spec_type == "vocos": + generated_wave = vocoder.decode(gen_mel_spec).cpu() + elif mel_spec_type == "bigvgan": + generated_wave = vocoder(gen_mel_spec).squeeze(0).cpu() + + if ref_rms_list[i] < target_rms: + generated_wave = generated_wave * ref_rms_list[i] / target_rms + torchaudio.save(f"{output_dir}/{utts[i]}.wav", generated_wave, target_sample_rate) + + accelerator.wait_for_everyone() + if accelerator.is_main_process: + timediff = time.time() - start + print(f"Done batch inference in {timediff / 60:.2f} minutes.") + + +if __name__ == "__main__": + main() diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/eval/eval_infer_batch.sh b/bi_v100-f5-tts/F5-TTS/src/f5_tts/eval/eval_infer_batch.sh new file mode 100644 index 0000000..a5b4f63 --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/eval/eval_infer_batch.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +# e.g. F5-TTS, 16 NFE +accelerate launch src/f5_tts/eval/eval_infer_batch.py -s 0 -n "F5TTS_v1_Base" -t "seedtts_test_zh" -nfe 16 +accelerate launch src/f5_tts/eval/eval_infer_batch.py -s 0 -n "F5TTS_v1_Base" -t "seedtts_test_en" -nfe 16 +accelerate launch src/f5_tts/eval/eval_infer_batch.py -s 0 -n "F5TTS_v1_Base" -t "ls_pc_test_clean" -nfe 16 + +# e.g. Vanilla E2 TTS, 32 NFE +accelerate launch src/f5_tts/eval/eval_infer_batch.py -s 0 -n "E2TTS_Base" -c 1200000 -t "seedtts_test_zh" -o "midpoint" -ss 0 +accelerate launch src/f5_tts/eval/eval_infer_batch.py -s 0 -n "E2TTS_Base" -c 1200000 -t "seedtts_test_en" -o "midpoint" -ss 0 +accelerate launch src/f5_tts/eval/eval_infer_batch.py -s 0 -n "E2TTS_Base" -c 1200000 -t "ls_pc_test_clean" -o "midpoint" -ss 0 + +# e.g. evaluate F5-TTS 16 NFE result on Seed-TTS test-zh +python src/f5_tts/eval/eval_seedtts_testset.py -e wer -l zh --gen_wav_dir results/F5TTS_v1_Base_1250000/seedtts_test_zh/seed0_euler_nfe32_vocos_ss-1_cfg2.0_speed1.0 --gpu_nums 8 +python src/f5_tts/eval/eval_seedtts_testset.py -e sim -l zh --gen_wav_dir results/F5TTS_v1_Base_1250000/seedtts_test_zh/seed0_euler_nfe32_vocos_ss-1_cfg2.0_speed1.0 --gpu_nums 8 +python src/f5_tts/eval/eval_utmos.py --audio_dir results/F5TTS_v1_Base_1250000/seedtts_test_zh/seed0_euler_nfe32_vocos_ss-1_cfg2.0_speed1.0 + +# etc. diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/eval/eval_librispeech_test_clean.py b/bi_v100-f5-tts/F5-TTS/src/f5_tts/eval/eval_librispeech_test_clean.py new file mode 100644 index 0000000..0fef801 --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/eval/eval_librispeech_test_clean.py @@ -0,0 +1,89 @@ +# Evaluate with Librispeech test-clean, ~3s prompt to generate 4-10s audio (the way of valle/voicebox evaluation) + +import argparse +import json +import os +import sys + + +sys.path.append(os.getcwd()) + +import multiprocessing as mp +from importlib.resources import files + +import numpy as np + +from f5_tts.eval.utils_eval import get_librispeech_test, run_asr_wer, run_sim + + +rel_path = str(files("f5_tts").joinpath("../../")) + + +def get_args(): + parser = argparse.ArgumentParser() + parser.add_argument("-e", "--eval_task", type=str, default="wer", choices=["sim", "wer"]) + parser.add_argument("-l", "--lang", type=str, default="en") + parser.add_argument("-g", "--gen_wav_dir", type=str, required=True) + parser.add_argument("-p", "--librispeech_test_clean_path", type=str, required=True) + parser.add_argument("-n", "--gpu_nums", type=int, default=8, help="Number of GPUs to use") + parser.add_argument("--local", action="store_true", help="Use local custom checkpoint directory") + return parser.parse_args() + + +def main(): + args = get_args() + eval_task = args.eval_task + lang = args.lang + librispeech_test_clean_path = args.librispeech_test_clean_path # test-clean path + gen_wav_dir = args.gen_wav_dir + metalst = rel_path + "/data/librispeech_pc_test_clean_cross_sentence.lst" + + gpus = list(range(args.gpu_nums)) + test_set = get_librispeech_test(metalst, gen_wav_dir, gpus, librispeech_test_clean_path) + + ## In LibriSpeech, some speakers utilized varying voice characteristics for different characters in the book, + ## leading to a low similarity for the ground truth in some cases. + # test_set = get_librispeech_test(metalst, gen_wav_dir, gpus, librispeech_test_clean_path, eval_ground_truth = True) # eval ground truth + + local = args.local + if local: # use local custom checkpoint dir + asr_ckpt_dir = "../checkpoints/Systran/faster-whisper-large-v3" + else: + asr_ckpt_dir = "" # auto download to cache dir + wavlm_ckpt_dir = "../checkpoints/UniSpeech/wavlm_large_finetune.pth" + + # -------------------------------------------------------------------------- + + full_results = [] + metrics = [] + + if eval_task == "wer": + with mp.Pool(processes=len(gpus)) as pool: + args = [(rank, lang, sub_test_set, asr_ckpt_dir) for (rank, sub_test_set) in test_set] + results = pool.map(run_asr_wer, args) + for r in results: + full_results.extend(r) + elif eval_task == "sim": + with mp.Pool(processes=len(gpus)) as pool: + args = [(rank, sub_test_set, wavlm_ckpt_dir) for (rank, sub_test_set) in test_set] + results = pool.map(run_sim, args) + for r in results: + full_results.extend(r) + else: + raise ValueError(f"Unknown metric type: {eval_task}") + + result_path = f"{gen_wav_dir}/_{eval_task}_results.jsonl" + with open(result_path, "w") as f: + for line in full_results: + metrics.append(line[eval_task]) + f.write(json.dumps(line, ensure_ascii=False) + "\n") + metric = round(np.mean(metrics), 5) + f.write(f"\n{eval_task.upper()}: {metric}\n") + + print(f"\nTotal {len(metrics)} samples") + print(f"{eval_task.upper()}: {metric}") + print(f"{eval_task.upper()} results saved to {result_path}") + + +if __name__ == "__main__": + main() diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/eval/eval_seedtts_testset.py b/bi_v100-f5-tts/F5-TTS/src/f5_tts/eval/eval_seedtts_testset.py new file mode 100644 index 0000000..158a3dd --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/eval/eval_seedtts_testset.py @@ -0,0 +1,88 @@ +# Evaluate with Seed-TTS testset + +import argparse +import json +import os +import sys + + +sys.path.append(os.getcwd()) + +import multiprocessing as mp +from importlib.resources import files + +import numpy as np + +from f5_tts.eval.utils_eval import get_seed_tts_test, run_asr_wer, run_sim + + +rel_path = str(files("f5_tts").joinpath("../../")) + + +def get_args(): + parser = argparse.ArgumentParser() + parser.add_argument("-e", "--eval_task", type=str, default="wer", choices=["sim", "wer"]) + parser.add_argument("-l", "--lang", type=str, default="en", choices=["zh", "en"]) + parser.add_argument("-g", "--gen_wav_dir", type=str, required=True) + parser.add_argument("-n", "--gpu_nums", type=int, default=8, help="Number of GPUs to use") + parser.add_argument("--local", action="store_true", help="Use local custom checkpoint directory") + return parser.parse_args() + + +def main(): + args = get_args() + eval_task = args.eval_task + lang = args.lang + gen_wav_dir = args.gen_wav_dir + metalst = rel_path + f"/data/seedtts_testset/{lang}/meta.lst" # seed-tts testset + + # NOTE. paraformer-zh result will be slightly different according to the number of gpus, cuz batchsize is different + # zh 1.254 seems a result of 4 workers wer_seed_tts + gpus = list(range(args.gpu_nums)) + test_set = get_seed_tts_test(metalst, gen_wav_dir, gpus) + + local = args.local + if local: # use local custom checkpoint dir + if lang == "zh": + asr_ckpt_dir = "../checkpoints/funasr" # paraformer-zh dir under funasr + elif lang == "en": + asr_ckpt_dir = "../checkpoints/Systran/faster-whisper-large-v3" + else: + asr_ckpt_dir = "" # auto download to cache dir + wavlm_ckpt_dir = "../checkpoints/UniSpeech/wavlm_large_finetune.pth" + + # -------------------------------------------------------------------------- + + full_results = [] + metrics = [] + + if eval_task == "wer": + with mp.Pool(processes=len(gpus)) as pool: + args = [(rank, lang, sub_test_set, asr_ckpt_dir) for (rank, sub_test_set) in test_set] + results = pool.map(run_asr_wer, args) + for r in results: + full_results.extend(r) + elif eval_task == "sim": + with mp.Pool(processes=len(gpus)) as pool: + args = [(rank, sub_test_set, wavlm_ckpt_dir) for (rank, sub_test_set) in test_set] + results = pool.map(run_sim, args) + for r in results: + full_results.extend(r) + else: + raise ValueError(f"Unknown metric type: {eval_task}") + + result_path = f"{gen_wav_dir}/_{eval_task}_results.jsonl" + with open(result_path, "w") as f: + for line in full_results: + metrics.append(line[eval_task]) + f.write(json.dumps(line, ensure_ascii=False) + "\n") + metric = round(np.mean(metrics), 5) + f.write(f"\n{eval_task.upper()}: {metric}\n") + + print(f"\nTotal {len(metrics)} samples") + print(f"{eval_task.upper()}: {metric}") + print(f"{eval_task.upper()} results saved to {result_path}") + + +if __name__ == "__main__": + main() diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/eval/eval_utmos.py b/bi_v100-f5-tts/F5-TTS/src/f5_tts/eval/eval_utmos.py new file mode 100644 index 0000000..b6166e8 --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/eval/eval_utmos.py @@ -0,0 +1,42 @@ +import argparse +import json +from pathlib import Path + +import librosa +import torch +from tqdm import tqdm + + +def main(): + parser = argparse.ArgumentParser(description="UTMOS Evaluation") + parser.add_argument("--audio_dir", type=str, required=True, help="Audio file path.") + parser.add_argument("--ext", type=str, default="wav", help="Audio extension.") + args = parser.parse_args() + + device = "cuda" if torch.cuda.is_available() else "xpu" if torch.xpu.is_available() else "cpu" + + predictor = torch.hub.load("tarepan/SpeechMOS:v1.2.0", "utmos22_strong", trust_repo=True) + predictor = predictor.to(device) + + audio_paths = list(Path(args.audio_dir).rglob(f"*.{args.ext}")) + utmos_score = 0 + + utmos_result_path = Path(args.audio_dir) / "_utmos_results.jsonl" + with open(utmos_result_path, "w", encoding="utf-8") as f: + for audio_path in tqdm(audio_paths, desc="Processing"): + wav, sr = librosa.load(audio_path, sr=None, mono=True) + wav_tensor = torch.from_numpy(wav).to(device).unsqueeze(0) + score = predictor(wav_tensor, sr) + line = {} + line["wav"], line["utmos"] = str(audio_path.stem), score.item() + utmos_score += score.item() + f.write(json.dumps(line, ensure_ascii=False) + "\n") + avg_score = utmos_score / len(audio_paths) if len(audio_paths) > 0 else 0 + f.write(f"\nUTMOS: {avg_score:.4f}\n") + + print(f"UTMOS: {avg_score:.4f}") + print(f"UTMOS results saved to {utmos_result_path}") + + +if __name__ == "__main__": + main() diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/eval/utils_eval.py b/bi_v100-f5-tts/F5-TTS/src/f5_tts/eval/utils_eval.py new file mode 100644 index 0000000..c5ac834 --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/eval/utils_eval.py @@ -0,0 +1,419 @@ +import math +import os +import random +import string +from pathlib import Path + +import torch +import torch.nn.functional as F +import torchaudio +from tqdm import tqdm + +from f5_tts.eval.ecapa_tdnn import ECAPA_TDNN_SMALL +from f5_tts.model.modules import MelSpec +from f5_tts.model.utils import convert_char_to_pinyin + + +# seedtts testset metainfo: utt, prompt_text, prompt_wav, gt_text, gt_wav +def get_seedtts_testset_metainfo(metalst): + f = open(metalst) + lines = f.readlines() + f.close() + metainfo = [] + for line in lines: + if len(line.strip().split("|")) == 5: + utt, prompt_text, prompt_wav, gt_text, gt_wav = line.strip().split("|") + elif len(line.strip().split("|")) == 4: + utt, prompt_text, prompt_wav, gt_text = line.strip().split("|") + gt_wav = os.path.join(os.path.dirname(metalst), "wavs", utt + ".wav") + if not os.path.isabs(prompt_wav): + prompt_wav = os.path.join(os.path.dirname(metalst), prompt_wav) + metainfo.append((utt, prompt_text, prompt_wav, gt_text, gt_wav)) + return metainfo + + +# librispeech test-clean metainfo: gen_utt, ref_txt, ref_wav, gen_txt, gen_wav +def get_librispeech_test_clean_metainfo(metalst, librispeech_test_clean_path): + f = open(metalst) + lines = f.readlines() + f.close() + metainfo = [] + for line in lines: + ref_utt, ref_dur, ref_txt, gen_utt, gen_dur, gen_txt = line.strip().split("\t") + + # ref_txt = ref_txt[0] + ref_txt[1:].lower() + '.' # if use librispeech test-clean (no-pc) + ref_spk_id, ref_chaptr_id, _ = ref_utt.split("-") + ref_wav = os.path.join(librispeech_test_clean_path, ref_spk_id, ref_chaptr_id, ref_utt + ".flac") + + # gen_txt = gen_txt[0] + gen_txt[1:].lower() + '.' # if use librispeech test-clean (no-pc) + gen_spk_id, gen_chaptr_id, _ = gen_utt.split("-") + gen_wav = os.path.join(librispeech_test_clean_path, gen_spk_id, gen_chaptr_id, gen_utt + ".flac") + + metainfo.append((gen_utt, ref_txt, ref_wav, " " + gen_txt, gen_wav)) + + return metainfo + + +# padded to max length mel batch +def padded_mel_batch(ref_mels): + max_mel_length = torch.LongTensor([mel.shape[-1] for mel in ref_mels]).amax() + padded_ref_mels = [] + for mel in ref_mels: + padded_ref_mel = F.pad(mel, (0, max_mel_length - mel.shape[-1]), value=0) + padded_ref_mels.append(padded_ref_mel) + padded_ref_mels = torch.stack(padded_ref_mels) + padded_ref_mels = padded_ref_mels.permute(0, 2, 1) + return padded_ref_mels + + +# get prompts from metainfo containing: utt, prompt_text, prompt_wav, gt_text, gt_wav + + +def get_inference_prompt( + metainfo, + speed=1.0, + tokenizer="pinyin", + polyphone=True, + target_sample_rate=24000, + n_fft=1024, + win_length=1024, + n_mel_channels=100, + hop_length=256, + mel_spec_type="vocos", + target_rms=0.1, + use_truth_duration=False, + infer_batch_size=1, + num_buckets=200, + min_secs=3, + max_secs=40, +): + prompts_all = [] + + min_tokens = min_secs * target_sample_rate // hop_length + max_tokens = max_secs * target_sample_rate // hop_length + + batch_accum = [0] * num_buckets + utts, ref_rms_list, ref_mels, ref_mel_lens, total_mel_lens, final_text_list = ( + [[] for _ in range(num_buckets)] for _ in range(6) + ) + + mel_spectrogram = MelSpec( + n_fft=n_fft, + hop_length=hop_length, + win_length=win_length, + n_mel_channels=n_mel_channels, + target_sample_rate=target_sample_rate, + mel_spec_type=mel_spec_type, + ) + + for utt, prompt_text, prompt_wav, gt_text, gt_wav in tqdm(metainfo, desc="Processing prompts..."): + # Audio + ref_audio, ref_sr = torchaudio.load(prompt_wav) + ref_rms = torch.sqrt(torch.mean(torch.square(ref_audio))) + if ref_rms < target_rms: + ref_audio = ref_audio * target_rms / ref_rms + assert ref_audio.shape[-1] > 5000, f"Empty prompt wav: {prompt_wav}, or torchaudio backend issue." + if ref_sr != target_sample_rate: + resampler = torchaudio.transforms.Resample(ref_sr, target_sample_rate) + ref_audio = resampler(ref_audio) + + # Text + if len(prompt_text[-1].encode("utf-8")) == 1: + prompt_text = prompt_text + " " + text = [prompt_text + gt_text] + if tokenizer == "pinyin": + text_list = convert_char_to_pinyin(text, polyphone=polyphone) + else: + text_list = text + + # to mel spectrogram + ref_mel = mel_spectrogram(ref_audio) + ref_mel = ref_mel.squeeze(0) + + # Duration, mel frame length + ref_mel_len = ref_mel.shape[-1] + + if use_truth_duration: + gt_audio, gt_sr = torchaudio.load(gt_wav) + if gt_sr != target_sample_rate: + resampler = torchaudio.transforms.Resample(gt_sr, target_sample_rate) + gt_audio = resampler(gt_audio) + total_mel_len = ref_mel_len + int(gt_audio.shape[-1] / hop_length / speed) + + # # test vocoder resynthesis + # ref_audio = gt_audio + else: + ref_text_len = len(prompt_text.encode("utf-8")) + gen_text_len = len(gt_text.encode("utf-8")) + total_mel_len = ref_mel_len + int(ref_mel_len / ref_text_len * gen_text_len / speed) + + # deal with batch + assert infer_batch_size > 0, "infer_batch_size should be greater than 0." + assert min_tokens <= total_mel_len <= max_tokens, ( + f"Audio {utt} has duration {total_mel_len * hop_length // target_sample_rate}s out of range [{min_secs}, {max_secs}]." + ) + bucket_i = math.floor((total_mel_len - min_tokens) / (max_tokens - min_tokens + 1) * num_buckets) + + utts[bucket_i].append(utt) + ref_rms_list[bucket_i].append(ref_rms) + ref_mels[bucket_i].append(ref_mel) + ref_mel_lens[bucket_i].append(ref_mel_len) + total_mel_lens[bucket_i].append(total_mel_len) + final_text_list[bucket_i].extend(text_list) + + batch_accum[bucket_i] += total_mel_len + + if batch_accum[bucket_i] >= infer_batch_size: + # print(f"\n{len(ref_mels[bucket_i][0][0])}\n{ref_mel_lens[bucket_i]}\n{total_mel_lens[bucket_i]}") + prompts_all.append( + ( + utts[bucket_i], + ref_rms_list[bucket_i], + padded_mel_batch(ref_mels[bucket_i]), + ref_mel_lens[bucket_i], + total_mel_lens[bucket_i], + final_text_list[bucket_i], + ) + ) + batch_accum[bucket_i] = 0 + ( + utts[bucket_i], + ref_rms_list[bucket_i], + ref_mels[bucket_i], + ref_mel_lens[bucket_i], + total_mel_lens[bucket_i], + final_text_list[bucket_i], + ) = [], [], [], [], [], [] + + # add residual + for bucket_i, bucket_frames in enumerate(batch_accum): + if bucket_frames > 0: + prompts_all.append( + ( + utts[bucket_i], + ref_rms_list[bucket_i], + padded_mel_batch(ref_mels[bucket_i]), + ref_mel_lens[bucket_i], + total_mel_lens[bucket_i], + final_text_list[bucket_i], + ) + ) + # not only leave easy work for last workers + random.seed(666) + random.shuffle(prompts_all) + + return prompts_all + + +# get wav_res_ref_text of seed-tts test metalst +# https://github.com/BytedanceSpeech/seed-tts-eval + + +def get_seed_tts_test(metalst, gen_wav_dir, gpus): + f = open(metalst) + lines = f.readlines() + f.close() + + test_set_ = [] + for line in tqdm(lines): + if len(line.strip().split("|")) == 5: + utt, prompt_text, prompt_wav, gt_text, gt_wav = line.strip().split("|") + elif len(line.strip().split("|")) == 4: + utt, prompt_text, prompt_wav, gt_text = line.strip().split("|") + + if not os.path.exists(os.path.join(gen_wav_dir, utt + ".wav")): + continue + gen_wav = os.path.join(gen_wav_dir, utt + ".wav") + if not os.path.isabs(prompt_wav): + prompt_wav = os.path.join(os.path.dirname(metalst), prompt_wav) + + test_set_.append((gen_wav, prompt_wav, gt_text)) + + num_jobs = len(gpus) + if num_jobs == 1: + return [(gpus[0], test_set_)] + + wav_per_job = len(test_set_) // num_jobs + 1 + test_set = [] + for i in range(num_jobs): + test_set.append((gpus[i], test_set_[i * wav_per_job : (i + 1) * wav_per_job])) + + return test_set + + +# get librispeech test-clean cross sentence test + + +def get_librispeech_test(metalst, gen_wav_dir, gpus, librispeech_test_clean_path, eval_ground_truth=False): + f = open(metalst) + lines = f.readlines() + f.close() + + test_set_ = [] + for line in tqdm(lines): + ref_utt, ref_dur, ref_txt, gen_utt, gen_dur, gen_txt = line.strip().split("\t") + + if eval_ground_truth: + gen_spk_id, gen_chaptr_id, _ = gen_utt.split("-") + gen_wav = os.path.join(librispeech_test_clean_path, gen_spk_id, gen_chaptr_id, gen_utt + ".flac") + else: + if not os.path.exists(os.path.join(gen_wav_dir, gen_utt + ".wav")): + raise FileNotFoundError(f"Generated wav not found: {gen_utt}") + gen_wav = os.path.join(gen_wav_dir, gen_utt + ".wav") + + ref_spk_id, ref_chaptr_id, _ = ref_utt.split("-") + ref_wav = os.path.join(librispeech_test_clean_path, ref_spk_id, ref_chaptr_id, ref_utt + ".flac") + + test_set_.append((gen_wav, ref_wav, gen_txt)) + + num_jobs = len(gpus) + if num_jobs == 1: + return [(gpus[0], test_set_)] + + wav_per_job = len(test_set_) // num_jobs + 1 + test_set = [] + for i in range(num_jobs): + test_set.append((gpus[i], test_set_[i * wav_per_job : (i + 1) * wav_per_job])) + + return test_set + + +# load asr model + + +def load_asr_model(lang, ckpt_dir=""): + if lang == "zh": + from funasr import AutoModel + + model = AutoModel( + model=os.path.join(ckpt_dir, "paraformer-zh"), + # vad_model = os.path.join(ckpt_dir, "fsmn-vad"), + # punc_model = os.path.join(ckpt_dir, "ct-punc"), + # spk_model = os.path.join(ckpt_dir, "cam++"), + disable_update=True, + ) # following seed-tts setting + elif lang == "en": + from faster_whisper import WhisperModel + + model_size = "large-v3" if ckpt_dir == "" else ckpt_dir + model = WhisperModel(model_size, device="cuda", compute_type="float16") + return model + + +# WER Evaluation, the way Seed-TTS does + + +def run_asr_wer(args): + rank, lang, test_set, ckpt_dir = args + + if lang == "zh": + import zhconv + + torch.cuda.set_device(rank) + elif lang == "en": + os.environ["CUDA_VISIBLE_DEVICES"] = str(rank) + else: + raise NotImplementedError( + "lang support only 'zh' (funasr paraformer-zh), 'en' (faster-whisper-large-v3), for now." + ) + + asr_model = load_asr_model(lang, ckpt_dir=ckpt_dir) + + from zhon.hanzi import punctuation + + punctuation_all = punctuation + string.punctuation + wer_results = [] + + from jiwer import compute_measures + + for gen_wav, prompt_wav, truth in tqdm(test_set): + if lang == "zh": + res = asr_model.generate(input=gen_wav, batch_size_s=300, disable_pbar=True) + hypo = res[0]["text"] + hypo = zhconv.convert(hypo, "zh-cn") + elif lang == "en": + segments, _ = asr_model.transcribe(gen_wav, beam_size=5, language="en") + hypo = "" + for segment in segments: + hypo = hypo + " " + segment.text + + raw_truth = truth + raw_hypo = hypo + + for x in punctuation_all: + truth = truth.replace(x, "") + hypo = hypo.replace(x, "") + + truth = truth.replace(" ", " ") + hypo = hypo.replace(" ", " ") + + if lang == "zh": + truth = " ".join([x for x in truth]) + hypo = " ".join([x for x in hypo]) + elif lang == "en": + truth = truth.lower() + hypo = hypo.lower() + + measures = compute_measures(truth, hypo) + wer = measures["wer"] + + # ref_list = truth.split(" ") + # subs = measures["substitutions"] / len(ref_list) + # dele = measures["deletions"] / len(ref_list) + # inse = measures["insertions"] / len(ref_list) + + wer_results.append( + { + "wav": Path(gen_wav).stem, + "truth": raw_truth, + "hypo": raw_hypo, + "wer": wer, + } + ) + + return wer_results + + +# SIM Evaluation + + +def run_sim(args): + rank, test_set, ckpt_dir = args + device = f"cuda:{rank}" + + model = ECAPA_TDNN_SMALL(feat_dim=1024, feat_type="wavlm_large", config_path=None) + state_dict = torch.load(ckpt_dir, weights_only=True, map_location=lambda storage, loc: storage) + model.load_state_dict(state_dict["model"], strict=False) + + use_gpu = True if torch.cuda.is_available() else False + if use_gpu: + model = model.cuda(device) + model.eval() + + sim_results = [] + for gen_wav, prompt_wav, truth in tqdm(test_set): + wav1, sr1 = torchaudio.load(gen_wav) + wav2, sr2 = torchaudio.load(prompt_wav) + + resample1 = torchaudio.transforms.Resample(orig_freq=sr1, new_freq=16000) + resample2 = torchaudio.transforms.Resample(orig_freq=sr2, new_freq=16000) + wav1 = resample1(wav1) + wav2 = resample2(wav2) + + if use_gpu: + wav1 = wav1.cuda(device) + wav2 = wav2.cuda(device) + with torch.no_grad(): + emb1 = model(wav1) + emb2 = model(wav2) + + sim = F.cosine_similarity(emb1, emb2)[0].item() + # print(f"VSim score between two audios: {sim:.4f} (-1.0, 1.0).") + sim_results.append( + { + "wav": Path(gen_wav).stem, + "sim": sim, + } + ) + + return sim_results diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/infer/README.md b/bi_v100-f5-tts/F5-TTS/src/f5_tts/infer/README.md new file mode 100644 index 0000000..9de47aa --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/infer/README.md @@ -0,0 +1,177 @@ +# Inference + +The pretrained model checkpoints can be reached at [🤗 Hugging Face](https://huggingface.co/SWivid/F5-TTS) and [🤖 Model Scope](https://www.modelscope.cn/models/SWivid/F5-TTS_Emilia-ZH-EN), or will be automatically downloaded when running inference scripts. + +**More checkpoints with whole community efforts can be found in [SHARED.md](SHARED.md), supporting more languages.** + +Currently support **30s for a single** generation, which is the **total length** (same logic if `fix_duration`) including both prompt and output audio. However, `infer_cli` and `infer_gradio` will automatically do chunk generation for longer text. Long reference audio will be **clip short to ~12s**. + +To avoid possible inference failures, make sure you have seen through the following instructions. + +- Use reference audio <12s and leave proper silence space (e.g. 1s) at the end. Otherwise there is a risk of truncating in the middle of word, leading to suboptimal generation. +- Uppercased letters (best with form like K.F.C.) will be uttered letter by letter, and lowercased letters used for common words. +- Add some spaces (blank: " ") or punctuations (e.g. "," ".") to explicitly introduce some pauses. +- If English punctuation marks the end of a sentence, make sure there is a space " " after it. Otherwise not regarded as when chunk. +- Preprocess numbers to Chinese letters if you want to have them read in Chinese, otherwise in English. +- If the generation output is blank (pure silence), check for FFmpeg installation. +- Try turn off `use_ema` if using an early-stage finetuned checkpoint (which goes just few updates). + + +## Gradio App + +Currently supported features: + +- Basic TTS with Chunk Inference +- Multi-Style / Multi-Speaker Generation +- Voice Chat powered by Qwen2.5-3B-Instruct +- [Custom inference with more language support](SHARED.md) + +The cli command `f5-tts_infer-gradio` equals to `python src/f5_tts/infer/infer_gradio.py`, which launches a Gradio APP (web interface) for inference. + +The script will load model checkpoints from Huggingface. You can also manually download files and update the path to `load_model()` in `infer_gradio.py`. Currently only load TTS models first, will load ASR model to do transcription if `ref_text` not provided, will load LLM model if use Voice Chat. + +More flags options: + +```bash +# Automatically launch the interface in the default web browser +f5-tts_infer-gradio --inbrowser + +# Set the root path of the application, if it's not served from the root ("/") of the domain +# For example, if the application is served at "https://example.com/myapp" +f5-tts_infer-gradio --root_path "/myapp" +``` + +Could also be used as a component for larger application: +```python +import gradio as gr +from f5_tts.infer.infer_gradio import app + +with gr.Blocks() as main_app: + gr.Markdown("# This is an example of using F5-TTS within a bigger Gradio app") + + # ... other Gradio components + + app.render() + +main_app.launch() +``` + + +## CLI Inference + +The cli command `f5-tts_infer-cli` equals to `python src/f5_tts/infer/infer_cli.py`, which is a command line tool for inference. + +The script will load model checkpoints from Huggingface. You can also manually download files and use `--ckpt_file` to specify the model you want to load, or directly update in `infer_cli.py`. + +For change vocab.txt use `--vocab_file` to provide your `vocab.txt` file. + +Basically you can inference with flags: +```bash +# Leave --ref_text "" will have ASR model transcribe (extra GPU memory usage) +f5-tts_infer-cli \ +--model F5TTS_v1_Base \ +--ref_audio "ref_audio.wav" \ +--ref_text "The content, subtitle or transcription of reference audio." \ +--gen_text "Some text you want TTS model generate for you." + +# Use BigVGAN as vocoder. Currently only support F5TTS_Base. +f5-tts_infer-cli --model F5TTS_Base --vocoder_name bigvgan --load_vocoder_from_local + +# Use custom path checkpoint, e.g. +f5-tts_infer-cli --ckpt_file ckpts/F5TTS_v1_Base/model_1250000.safetensors + +# More instructions +f5-tts_infer-cli --help +``` + +And a `.toml` file would help with more flexible usage. + +```bash +f5-tts_infer-cli -c custom.toml +``` + +For example, you can use `.toml` to pass in variables, refer to `src/f5_tts/infer/examples/basic/basic.toml`: + +```toml +# F5TTS_v1_Base | E2TTS_Base +model = "F5TTS_v1_Base" +ref_audio = "infer/examples/basic/basic_ref_en.wav" +# If an empty "", transcribes the reference audio automatically. +ref_text = "Some call me nature, others call me mother nature." +gen_text = "I don't really care what you call me. I've been a silent spectator, watching species evolve, empires rise and fall. But always remember, I am mighty and enduring." +# File with text to generate. Ignores the text above. +gen_file = "" +remove_silence = false +output_dir = "tests" +``` + +You can also leverage `.toml` file to do multi-style generation, refer to `src/f5_tts/infer/examples/multi/story.toml`. + +```toml +# F5TTS_v1_Base | E2TTS_Base +model = "F5TTS_v1_Base" +ref_audio = "infer/examples/multi/main.flac" +# If an empty "", transcribes the reference audio automatically. +ref_text = "" +gen_text = "" +# File with text to generate. Ignores the text above. +gen_file = "infer/examples/multi/story.txt" +remove_silence = true +output_dir = "tests" + +[voices.town] +ref_audio = "infer/examples/multi/town.flac" +ref_text = "" + +[voices.country] +ref_audio = "infer/examples/multi/country.flac" +ref_text = "" +``` +You should mark the voice with `[main]` `[town]` `[country]` whenever you want to change voice, refer to `src/f5_tts/infer/examples/multi/story.txt`. + +## API Usage + +```python +from importlib.resources import files +from f5_tts.api import F5TTS + +f5tts = F5TTS() +wav, sr, spec = f5tts.infer( + ref_file=str(files("f5_tts").joinpath("infer/examples/basic/basic_ref_en.wav")), + ref_text="some call me nature, others call me mother nature.", + gen_text="""I don't really care what you call me. I've been a silent spectator, watching species evolve, empires rise and fall. But always remember, I am mighty and enduring. Respect me and I'll nurture you; ignore me and you shall face the consequences.""", + file_wave=str(files("f5_tts").joinpath("../../tests/api_out.wav")), + file_spec=str(files("f5_tts").joinpath("../../tests/api_out.png")), + seed=None, +) +``` +Check [api.py](../api.py) for more details. + +## TensorRT-LLM Deployment + +See [detailed instructions](../runtime/triton_trtllm/README.md) for more information. + +## Socket Real-time Service + +Real-time voice output with chunk stream: + +```bash +# Start socket server +python src/f5_tts/socket_server.py + +# If PyAudio not installed +sudo apt-get install portaudio19-dev +pip install pyaudio + +# Communicate with socket client +python src/f5_tts/socket_client.py +``` + +## Speech Editing + +To test speech editing capabilities, use the following command: + +```bash +python src/f5_tts/infer/speech_edit.py +``` + diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/infer/SHARED.md b/bi_v100-f5-tts/F5-TTS/src/f5_tts/infer/SHARED.md new file mode 100644 index 0000000..e731619 --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/infer/SHARED.md @@ -0,0 +1,193 @@ + +# Shared Model Cards + + +### **Prerequisites of using** +- This document is serving as a quick lookup table for the community training/finetuning result, with various language support. +- The models in this repository are open source and are based on voluntary contributions from contributors. +- The use of models must be conditioned on respect for the respective creators. The convenience brought comes from their efforts. + + +### **Welcome to share here** +- Have a pretrained/finetuned result: model checkpoint (pruned best to facilitate inference, i.e. leave only `ema_model_state_dict`) and corresponding vocab file (for tokenization). +- Host a public [huggingface model repository](https://huggingface.co/new) and upload the model related files. +- Make a pull request adding a model card to the current page, i.e. `src\f5_tts\infer\SHARED.md`. + + +### Supported Languages +- [Multilingual](#multilingual) + - [F5-TTS v1 v0 Base @ zh \& en @ F5-TTS](#f5-tts-v1-v0-base--zh--en--f5-tts) +- [English](#english) +- [Finnish](#finnish) + - [F5-TTS Base @ fi @ AsmoKoskinen](#f5-tts-base--fi--asmokoskinen) +- [French](#french) + - [F5-TTS Base @ fr @ RASPIAUDIO](#f5-tts-base--fr--raspiaudio) +- [German](#german) + - [F5-TTS Base @ de @ hvoss-techfak](#f5-tts-base--de--hvoss-techfak) +- [Hindi](#hindi) + - [F5-TTS Small @ hi @ SPRINGLab](#f5-tts-small--hi--springlab) +- [Italian](#italian) + - [F5-TTS Base @ it @ alien79](#f5-tts-base--it--alien79) +- [Japanese](#japanese) + - [F5-TTS Base @ ja @ Jmica](#f5-tts-base--ja--jmica) +- [Mandarin](#mandarin) +- [Russian](#russian) + - [F5-TTS Base @ ru @ HotDro4illa](#f5-tts-base--ru--hotdro4illa) +- [Spanish](#spanish) + - [F5-TTS Base @ es @ jpgallegoar](#f5-tts-base--es--jpgallegoar) + + +## Multilingual + +#### F5-TTS v1 v0 Base @ zh & en @ F5-TTS +|Model|🤗Hugging Face|Data (Hours)|Model License| +|:---:|:------------:|:-----------:|:-------------:| +|F5-TTS v1 Base|[ckpt & vocab](https://huggingface.co/SWivid/F5-TTS/tree/main/F5TTS_v1_Base)|[Emilia 95K zh&en](https://huggingface.co/datasets/amphion/Emilia-Dataset/tree/fc71e07)|cc-by-nc-4.0| + +```bash +Model: hf://SWivid/F5-TTS/F5TTS_v1_Base/model_1250000.safetensors +# A Variant Model: hf://SWivid/F5-TTS/F5TTS_v1_Base_no_zero_init/model_1250000.safetensors +Vocab: hf://SWivid/F5-TTS/F5TTS_v1_Base/vocab.txt +Config: {"dim": 1024, "depth": 22, "heads": 16, "ff_mult": 2, "text_dim": 512, "conv_layers": 4} +``` + +|Model|🤗Hugging Face|Data (Hours)|Model License| +|:---:|:------------:|:-----------:|:-------------:| +|F5-TTS Base|[ckpt & vocab](https://huggingface.co/SWivid/F5-TTS/tree/main/F5TTS_Base)|[Emilia 95K zh&en](https://huggingface.co/datasets/amphion/Emilia-Dataset/tree/fc71e07)|cc-by-nc-4.0| + +```bash +Model: hf://SWivid/F5-TTS/F5TTS_Base/model_1200000.safetensors +Vocab: hf://SWivid/F5-TTS/F5TTS_Base/vocab.txt +Config: {"dim": 1024, "depth": 22, "heads": 16, "ff_mult": 2, "text_dim": 512, "text_mask_padding": False, "conv_layers": 4, "pe_attn_head": 1} +``` + +*Other infos, e.g. Author info, Github repo, Link to some sampled results, Usage instruction, Tutorial (Blog, Video, etc.) ...* + + +## English + + +## Finnish + +#### F5-TTS Base @ fi @ AsmoKoskinen +|Model|🤗Hugging Face|Data|Model License| +|:---:|:------------:|:-----------:|:-------------:| +|F5-TTS Base|[ckpt & vocab](https://huggingface.co/AsmoKoskinen/F5-TTS_Finnish_Model)|[Common Voice](https://huggingface.co/datasets/mozilla-foundation/common_voice_17_0), [Vox Populi](https://huggingface.co/datasets/facebook/voxpopuli)|cc-by-nc-4.0| + +```bash +Model: hf://AsmoKoskinen/F5-TTS_Finnish_Model/model_common_voice_fi_vox_populi_fi_20241206.safetensors +Vocab: hf://AsmoKoskinen/F5-TTS_Finnish_Model/vocab.txt +Config: {"dim": 1024, "depth": 22, "heads": 16, "ff_mult": 2, "text_dim": 512, "text_mask_padding": False, "conv_layers": 4, "pe_attn_head": 1} +``` + + +## French + +#### F5-TTS Base @ fr @ RASPIAUDIO +|Model|🤗Hugging Face|Data (Hours)|Model License| +|:---:|:------------:|:-----------:|:-------------:| +|F5-TTS Base|[ckpt & vocab](https://huggingface.co/RASPIAUDIO/F5-French-MixedSpeakers-reduced)|[LibriVox](https://librivox.org/)|cc-by-nc-4.0| + +```bash +Model: hf://RASPIAUDIO/F5-French-MixedSpeakers-reduced/model_last_reduced.pt +Vocab: hf://RASPIAUDIO/F5-French-MixedSpeakers-reduced/vocab.txt +Config: {"dim": 1024, "depth": 22, "heads": 16, "ff_mult": 2, "text_dim": 512, "text_mask_padding": False, "conv_layers": 4, "pe_attn_head": 1} +``` + +- [Online Inference with Hugging Face Space](https://huggingface.co/spaces/RASPIAUDIO/f5-tts_french). +- [Tutorial video to train a new language model](https://www.youtube.com/watch?v=UO4usaOojys). +- [Discussion about this training can be found here](https://github.com/SWivid/F5-TTS/issues/434). + + +## German + +#### F5-TTS Base @ de @ hvoss-techfak +|Model|🤗Hugging Face|Data (Hours)|Model License| +|:---:|:------------:|:-----------:|:-------------:| +|F5-TTS Base|[ckpt & vocab](https://huggingface.co/hvoss-techfak/F5-TTS-German)|[Mozilla Common Voice 19.0](https://commonvoice.mozilla.org/en/datasets) & 800 hours Crowdsourced |cc-by-nc-4.0| + +```bash +Model: hf://hvoss-techfak/F5-TTS-German/model_f5tts_german.pt +Vocab: hf://hvoss-techfak/F5-TTS-German/vocab.txt +Config: {"dim": 1024, "depth": 22, "heads": 16, "ff_mult": 2, "text_dim": 512, "text_mask_padding": False, "conv_layers": 4, "pe_attn_head": 1} +``` + +- Finetuned by [@hvoss-techfak](https://github.com/hvoss-techfak) + + +## Hindi + +#### F5-TTS Small @ hi @ SPRINGLab +|Model|🤗Hugging Face|Data (Hours)|Model License| +|:---:|:------------:|:-----------:|:-------------:| +|F5-TTS Small|[ckpt & vocab](https://huggingface.co/SPRINGLab/F5-Hindi-24KHz)|[IndicTTS Hi](https://huggingface.co/datasets/SPRINGLab/IndicTTS-Hindi) & [IndicVoices-R Hi](https://huggingface.co/datasets/SPRINGLab/IndicVoices-R_Hindi) |cc-by-4.0| + +```bash +Model: hf://SPRINGLab/F5-Hindi-24KHz/model_2500000.safetensors +Vocab: hf://SPRINGLab/F5-Hindi-24KHz/vocab.txt +Config: {"dim": 768, "depth": 18, "heads": 12, "ff_mult": 2, "text_dim": 512, "text_mask_padding": False, "conv_layers": 4, "pe_attn_head": 1} +``` + +- Authors: SPRING Lab, Indian Institute of Technology, Madras +- Website: https://asr.iitm.ac.in/ + + +## Italian + +#### F5-TTS Base @ it @ alien79 +|Model|🤗Hugging Face|Data|Model License| +|:---:|:------------:|:-----------:|:-------------:| +|F5-TTS Base|[ckpt & vocab](https://huggingface.co/alien79/F5-TTS-italian)|[ylacombe/cml-tts](https://huggingface.co/datasets/ylacombe/cml-tts) |cc-by-nc-4.0| + +```bash +Model: hf://alien79/F5-TTS-italian/model_159600.safetensors +Vocab: hf://alien79/F5-TTS-italian/vocab.txt +Config: {"dim": 1024, "depth": 22, "heads": 16, "ff_mult": 2, "text_dim": 512, "text_mask_padding": False, "conv_layers": 4, "pe_attn_head": 1} +``` + +- Trained by [Mithril Man](https://github.com/MithrilMan) +- Model details on [hf project home](https://huggingface.co/alien79/F5-TTS-italian) +- Open to collaborations to further improve the model + + +## Japanese + +#### F5-TTS Base @ ja @ Jmica +|Model|🤗Hugging Face|Data (Hours)|Model License| +|:---:|:------------:|:-----------:|:-------------:| +|F5-TTS Base|[ckpt & vocab](https://huggingface.co/Jmica/F5TTS/tree/main/JA_21999120)|[Emilia 1.7k JA](https://huggingface.co/datasets/amphion/Emilia-Dataset/tree/fc71e07) & [Galgame Dataset 5.4k](https://huggingface.co/datasets/OOPPEENN/Galgame_Dataset)|cc-by-nc-4.0| + +```bash +Model: hf://Jmica/F5TTS/JA_21999120/model_21999120.pt +Vocab: hf://Jmica/F5TTS/JA_21999120/vocab_japanese.txt +Config: {"dim": 1024, "depth": 22, "heads": 16, "ff_mult": 2, "text_dim": 512, "text_mask_padding": False, "conv_layers": 4, "pe_attn_head": 1} +``` + + +## Mandarin + + +## Russian + +#### F5-TTS Base @ ru @ HotDro4illa +|Model|🤗Hugging Face|Data (Hours)|Model License| +|:---:|:------------:|:-----------:|:-------------:| +|F5-TTS Base|[ckpt & vocab](https://huggingface.co/hotstone228/F5-TTS-Russian)|[Common voice](https://huggingface.co/datasets/mozilla-foundation/common_voice_17_0)|cc-by-nc-4.0| + +```bash +Model: hf://hotstone228/F5-TTS-Russian/model_last.safetensors +Vocab: hf://hotstone228/F5-TTS-Russian/vocab.txt +Config: {"dim": 1024, "depth": 22, "heads": 16, "ff_mult": 2, "text_dim": 512, "text_mask_padding": False, "conv_layers": 4, "pe_attn_head": 1} +``` +- Finetuned by [HotDro4illa](https://github.com/HotDro4illa) +- Any improvements are welcome + + +## Spanish + +#### F5-TTS Base @ es @ jpgallegoar +|Model|🤗Hugging Face|Data (Hours)|Model License| +|:---:|:------------:|:-----------:|:-------------:| +|F5-TTS Base|[ckpt & vocab](https://huggingface.co/jpgallegoar/F5-Spanish)|[Voxpopuli](https://huggingface.co/datasets/facebook/voxpopuli) & Crowdsourced & TEDx, 218 hours|cc0-1.0| + +- @jpgallegoar [GitHub repo](https://github.com/jpgallegoar/Spanish-F5), Jupyter Notebook and Gradio usage for Spanish model. diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/infer/examples/basic/basic.toml b/bi_v100-f5-tts/F5-TTS/src/f5_tts/infer/examples/basic/basic.toml new file mode 100644 index 0000000..bc3ebb4 --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/infer/examples/basic/basic.toml @@ -0,0 +1,11 @@ +# F5TTS_v1_Base | E2TTS_Base +model = "F5TTS_v1_Base" +ref_audio = "infer/examples/basic/basic_ref_en.wav" +# If an empty "", transcribes the reference audio automatically. +ref_text = "Some call me nature, others call me mother nature." +gen_text = "I don't really care what you call me. I've been a silent spectator, watching species evolve, empires rise and fall. But always remember, I am mighty and enduring." +# File with text to generate. Ignores the text above. +gen_file = "" +remove_silence = false +output_dir = "tests" +output_file = "infer_cli_basic.wav" diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/infer/examples/basic/basic_ref_en.wav b/bi_v100-f5-tts/F5-TTS/src/f5_tts/infer/examples/basic/basic_ref_en.wav new file mode 100644 index 0000000000000000000000000000000000000000..3c593c3cfe1528432e29f355bb8fd9ec1dd9847c GIT binary patch literal 256018 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¥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 EAEbnQNB{r; literal 0 HcmV?d00001 diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/infer/examples/basic/basic_ref_zh.wav b/bi_v100-f5-tts/F5-TTS/src/f5_tts/infer/examples/basic/basic_ref_zh.wav new file mode 100644 index 0000000000000000000000000000000000000000..8cc055ede333a6778b7cdd5f7665a5db0e87ecd7 GIT binary patch literal 324558 zcmdSB1$Z0B)-b%gVrG_^?KsSwHq6Y-=un%aNgBo`X~WoX(qO~P%x0F%3}U9;{a4l1 zE8B74-uJuz_k2E&_u!yr&di)0X>hOZ-QO7Tz=$rxyG@_>Qy?1v01$&`;{agILjZsP zHqf`%kfBmc-m8E20lkKFAIik&zLSDGP=9H`@)Hr_nk zw%-HJfAaKLdei>DfxWH!@7C5^%D;>4s2d#rJUx^*2eoezKC%=$lL1^+WUJx_0r?m6$JzaP8n|Gn1U629bJytVS_ zzn!zM&OWOCRK8rlOu2o1O@Cj%W&OUhKIympb3F?j;9cR|I`?Ym#lDrXHua^|^xN{< z`FuYI{cDwWm*Cz#cy^@5KHeROrv_iP^Ju=k^QgNY!2|djdlWb4<~{iP zp9J9lUmya+ZY z+AVSO9{lZmzQ>~O9IiX>zs7q{CvI=zwsZRy@AK>FzU803rT2Kb`k!u(@ALZqxc={Y zxK|ptq5J8jJ(O<^s&9p=U*=u~Jy8D&_-$$JHTc{1buB#UzqO{ymDNt+=IU#MN9Nlbew}jfFFkwIns&8!tv=4XC-?1#-8vulJ(MrE z`ly<=g+J2`MK|>zRR_K!{}S3dFxjb*X-H4 zw0BJZr=!!CpD!n$>|2zlmL98`HTKfqYV9{VtA^ThuBjpTUywCx<*sSnKcB=yd0X=( z{5605tseYucn^=i^!ZX>89qmij$vhwfWPto1@B_XK{=l~&00{V| zP2D_dmgla6yDo0<)U0m3y>0ShcROo?r}gevM3AIxo<$QTT0e zkJh?SGY;+1)s)m1ldc(WCe`wPwY`YXD|o1yzM&@VSsm(n3m@;EgFc_(p=xUD>b$($ z#xsBGUtN7U)h@x4uBP^L+FQndj%$}vyN3UHuJxs?e|O^ZuU^Vy=jA@fZlCD&#b3wX z=u>U0n*O^s?epeds;*b}_~)8F+vmyMHw3)@-aU71TzlVM`z+x*eR(MpS{ID}NZe0j z4KSeffgbgM;a}Lxd$A7vI%xk#@20f>K;0A`Y0akwtqp2aT}$HT+%h+)K7(qseyBpf z1(oRcf;%U-?U!<_uBGwR=S#L#U#M^OXD$1@t=?Yn_CrnHNB=vNujjpe?oREKewot# zV^#BW{5D;8EO^J24|_-6=cCj3uMz7W#fBOq**mJ;Hj_K_CVegUfPSjav%2D z`ebz}U;TUP}ChxYYyj@onnsz3?Tix97b0+vT_|YS-=SedKAAul4`w zZJe5Y{UzFW`=+)<&3^UOq^9)Sv~Tp(?4!DE_x6rEKM!5g`ah@Zjs+j@E$Kha+ndw3 z^6~bNuN<$We(bZWOZnz-&DfFK$~_8w+AojE+8QtC#dXW`1OeYtwQcTJtQ7T<&Gum9&M zeg6GxIHv6+bg>{pU18lWBNMniAmA^CvN4XJkc(% z)-CnMzdTgkIM?TV?Q%cAo9RyBt?}pDZ{7T?sjuA=?s7d6FZTA0*RH08r`7&Q*t0CTb2xtI=z#pNmgtT}89lm6k{BZcr! z%$|brc#I-oabyzqPsGy5foMPs-UlxNOr#Cc9T0*B;3aqoje{4U3!u)F`D8L$=(vt? zt56g-gis1}cFuP^1VZq|;5OhkH~`#(`-w&+%TNRS5_RBF$O^25)Mzi4++_nSz&nrt zv_wWDJCRjDTVygShTp;6ph9#GFcpb(?RJiKG=pC`N5BPep7X3L&@~k}4J-xrq7jH5 zIS8|WroeXKEppxU-br+vN0$Tr;E8Yyas}xRhTt{>1l+ICF5pMp3tTj=GblvNa0js3 zmG10`7#tyR37ig$!R-fFPy#L$mkMry7JvryH(-wIj!OY7gl{=-qHXz zZE@pq+2AH<0B#sq3TyzT00fW-&W2h;0nh>5416!bHR4448@z>p;%*Z=5>MiKf#(4l z+7!5s8xPC{7olm$2IOb>FxnS61sB>&9Y&|qdCA`0cFw9Yx3{&${@Yof8aA1djX3iV zQ$ynpLx7=^VXY1}PBCrM_0yhJJyB25cGCfRsv*Gm%J7Hzp|zX6yCd3Vfls3rs6W0E zZ^XADXb9U#t*H}eYiPsh_ZjWjalA{yjS{i!SJ`a&RDZSqH2>#*Z21q;W|BUl!-8~P zV@@$sPhU$XGM>_JQQK0Qkzv9v{B@iaEJgUPEsoiCq0MYgFggs`hWmPfzM1ZYlGFG;$EU1XC__=g=$>5TOC3i}?luN#V0dYGK-lY`EdRTHvjV0BF7zvs>=pGD?%@aW2lF8IV!D$&hFn4(N!~-Cf;-?Q zj!K)*-rqLCa@NS#|Dm0xgLR8^B;85vOKm6J9Q|m6K_8(Ts3}*MtD`hB%>ebz>h_hN z%KMf-DSuoRToPQgHJ_fFri@fZX7|hZB|RnGn7z5ENmZCO&0sY@w3uumXb)mOP0F}J z+es^7^kF?_&ExdtzF_OvTLn91bA!{uriI1@4+~ipPKYAJ7B>uQ@HC=t$fqE32rr}} z;Fdf47Jl2`CW^J&pw~nsOss5#6Vi}?Aaanok>*78|FA7|FD|2{aMYuDocg1>S}em>acpLnxR3p68&0zwZ4sB zr~O+a(1dB)YqqI)l}E}Jl{PM2UScU)S2(j^c%DXaGi!C`(2R(*mnr^f1F{YmkSZ2d zkI_srl$-uESKA3t56Wu#ahiaZ$=Jl|gN>gS+^PJN{FTC^vTeZ|BmN5C68dA9DIzl} zCpsebR>O*ztgxp+h9Fz;!N5iGF4EJIIigj9O@c_lC|(%56{9P?A!8@)1u+fe!~N{< zEQd^o3>S4h)Xgh1$`oa@%73m%sO(j>uX?5Wh<1<8rCqO`to>2DLBrMDQirKFS9C7v zT{O37TVY(@6D3bEIqP+npK+h{oITB10*a_8Q^yFW z2Q&X*v)MZ4kL;Pek;2#FgYsp;yCW7xJP$n|Ru)B#{V8@!?6}z3G3M|a!No!SgYkh% zSszI^ah7n1K*&*?F4O^cA~Dc_PuIz)%*%|$*h8@xwCV|DylPPrs7kIlcWiRPp*&Y z3A0oCD2JAARkhTOG^UzYTf*%i=%n;yCNlBN^9+#jjNX#9hj&%T6ipT1lH)>TQR^G5 zX|O9MGe*^5M8n^j{M9_X>DK7U!IFTufNcSS0I6S^WIF#WD~ffS(~qCct7dOtjHQ)R z(n)&>sn8sxv2B1+s|(T{)dW-rmG3N;6p4zjm))=GtsbapttnDZ(q!ot8Yi1(8}@7I z>X54BvUSDt3RQWV6{FL8r8G|NocQh|?ZdQ>j}ls^-O71YwpV>mcfw#ZEwK^NiKHWp zo2*XEAL$lqDJ_&alQWLT=I!LUgk${9h47n39@dkgO(?+yDo;}`lfdS`}^evOieZ->mb4YjZ>JxmU*zH)v^ zbYXBIzT~%x3DtwEL#r~Xrm3rSai$`3q3N#vpk|ONzUo13d;Zs}jYTKd=r19PdFocG)yR%5!0x}MgZah5%Ro4`KKD&|}l z&kJNl9F6K8)i!EE%!0=2T5{V>Z8N87S=7tW+aaApgF^2FUXV`ZUZ;f5L09I!_t7l>jiy^ua<2nA6lj=xmYrztanvQ zZKdw8#$H9KXjt~Bq($+g{5jdvl4&2#zrOS`@a2h@TV8K|uSrT!^eP@vHA;We`p`we zI~iL9C&VX2cli07;T$t3le?7{&fUcB#_1>6DBTsfBXnw5UU=geQ1JasAkF>M>U6`l-Q(0xde^S$MX z_G-nhk^{wqOL~`vmn=z@5(Kfi!Xj&6-qqK+t z0mb6cf{T2ZH<-PL+KJE>{27ITQ_yj6FZvc9<7xuGL0bW*V2XXW@n`K8%|VS`-A#3@ z{CeTfd86_)d6EKhVNCuDWqCGBabB@O5tp?j?R4VwkGA(~KPDusOWlzrQ=U}z$bVn9 zRWra+g=Uho86Q~OjBPR}vs%vEM(?aUCT_f7AaK}=te%#IKLkn}$L)B4l` z#k%|r`N8?Uin>&;G*ZzV@@vK|W+`JeYl&cnd_drafU$D5WRjHQCkPxE>vg zYZcllrd1Jg}c4u3$~$^kvOqRIq*%b@Tre_&7izOA;*= z|K*n#^hZdKpdK>2c)MS4*u|LOhO(H8p>2ZXA;pmk8y#tUEIKuCm$(TtU0s~1mZLhlDztjP`nvYC=2_)|!uLw4;;wRQUVNTV zS(Mg2X=K9w#I7kFli^R--`{w5_~V~xs|xgG9m~d-k}7&=Dr}pHvpH=97r0{PT;@c< zUHPKG#eu1^#=k`D-C1rPNfAQlUkh*!&5fk05CUkmXg$0RoY7!WqY<%N!iwd35l?tb+*b0O-=F>(>JHC!o`=UEqg;<{kBmok z9rdy19hP0DYdV>lQ@y|H=jtQXrz_E-Y~_k9arR2Zob2%$ULfl?PQVwNs48Y#ZUngk1I^QGu8yH1S&t&WjKFW%_URlSzsMRDM&;n_iPt zN_vZF;!x=3}=3d{37UI_qhh&N9ptX1Jxjr7l->SGB8}P;M%g7w*jOn71g0r8H*? zGKp!&QyQc+O>UdiENMZ)mH6%nvgCxUkNN4vt;*h3XX-zgUO1-`mCV`PLA>t#eWK&C zHS*2!6@G2~wn-mL&P$7>)zV-oQBo>)$d36>2}}>!7uqzmD6~sNR`l5h;)c^2#786q zFZHkVTkZEu0`l(D|0ZpO`l4y@Dc2Imd~22IoXKTwZ)sp2ZQ5sSWN4?KrW>JUsU?-O zOZOFJ=V#=Il*1JCOfcnc!qj-(r)BZI62>O9OL!gsCTVQ;+@gi$ZL0p({$TEH=L7dB zc+MFff%l0sp1(|dPf{U1EQ%3M=1<_A;|&#z7hM)L5)Kr;kf`PJ18;_I4<8-gA^gwC zTQM7B-#2tNP)C#mh5K*uOOv0Lgz!$$qezo+k*g z)YN!J|GQSKHdeeWu@?@(>RG1fm%SllUh4KFb^;PVCTT$O!^G){>cllE=B$|oC8f(N zOH`1qmFc~65`GEwDRyB|$Q;9A39blFh^j?{F|ULQCJGyh9*EWA>7r($F%m@PAFwIt zb+9D#ZfIQC?-8!(F0qfX+21!r5x6N}wf}9|O5sBGIqEXvEBr8=0_ccrcOJBDvZ z@`?pE@lttKz~bPBq3gr$g&QLEG0_d@#IBBP9r8n9NB>~?ZgDey3R6Rh!ik_D=ozpB zS?qe~xa){>{Qx&}U2{CJWm-0yFBzZeyJ-EZgUfLxM++iy$0%8f16do>nZDm>5 z4$d{+CH~+1Tm0PuqiCblD3=D_5B?Z(J>)~EIec4cgal_$!Ym)eyMHwNvNYSdYKda;Q{ml0*3>Oz4Nejl#?5F7CnT=WbtXrH# zoFyzZBa{)&B(rhcYR&{sG6&#Cio3|I{yzk+5854kHPjV8F|uP+cEqMoY7pN4gDhV% zNpz7{z^tZ9$%lw}ga!CZ&Od7nnNRTY%F@E{cl$8?^=V zA}gQG;1T()xu@7;*|XWn>?fSYoN&%zj+z7Ua`|HMYv~#}BJbrtBydCUy|B`-kHO6Y z5BX2>8z;Lgc_uo`Md>rhe9{Dx4sQWZq7K(==UA7~wbi-8{?aLZbcuv1s`%3+` zYFl}6Sy9QK#b9w*!RWm1Ig^y^oU4i)MQl!2MP_DF_Tqv$rB!7wDg!i8x(vO^77DE- zy(i5l6X?sBQua8moFB-Oa5}Latbwc+EF24D#xXW9K-LcSer|%GSln5rk{|MK8$=2F z6wxr^V5ncnp`g?Le0f)Cr4YxNPsNcY5r^UTg1gYx@EgZ*hs~MpJZr*$S_s!6zzsQ`Md$MqR2~c%R_lxO? zCDQd5&PJI`4`D`g?s6cGiSv@Tg7=cM13Ss((}Ng+jQ8{{jG2tq%;D_qymO+Dl76yI z{*ggZ!7oGhgzpXy4jCE94(K8uCcY#%z&*zdrd-B%!i%A)=zWBQTylju!<=26F%GFc z*IH^mW8AC%OFK~WQ*~TLQCY9zXN5@xw!E&nKPyv|$%?YzomQ;pU zuhNE^M_Q$h>sWO3M^abPddg9{lre)ok#UrHlDUZqGsujc^nr{>rj9w7#bj?{2V&l} zs}K=|Nczi4vCsXPzdA@8G{=9Ue29Fl%pz_rY|o#?zE8VOX-c_IYD8Fpi-qD)HSEB? zthUM#ZJlqn7+&i-=wdbfs~?mPEaQ}ZEG#XUSD?wQ%HEa5Ry0;fv%6&-&3c@1o>PE(Noq&Vq!5@T>>oK44v8z^p61Ns4(HO@1g4(Rl@-D6%RbI- z$8N*1@ifAIlIhYxvL^CK|5<_JprU}^`~u`MX}GwzD2G3kt)l)(VqvHLyU;=44+MnM zo&B91osss(7O8osag3pZu3GJ=URsHi-z(c*!YXQ)kIR+i?8=#u(^FBBm6yfO?x+6g|yW&g)h^(M(W&vzFa}={bE0FEa;d9TkuQC?UZ!%#aQKe+R^no--Hpj2A|2993OfG#b_7@QaO}KH)N3=tfA!H%x3jPq34a@<4 z0Jfmb5T}D-yKZS^xnru(pU?zV|51@q_O4V?(xEUpx4&|}@>I^@9Ex&b_PFd}3Zs%% zxW6o?yiY|{^%7$j`&nlrvLyYN#`3PP_c0(^9QjYu@5HCL>rh*W z3z0$WV@4XoH=IA%7h40(D-FA~JF0)H;FoPE2`tj)iE{fXZzzr{$1D3ObP6cPnlrzk zeHpL1k!qj%o#BSdp=u*V!Tw^_C%+_z!HdD>1kd(G6CKin>XqVR}=dB_|K~WA?4$raV#N^nOmkLWN zgVa{_BwdubnSG~gHe@43QM*xI(z>zta~5#gagsO^P7G%x?;wxF9mu-Ge9u;J265kV z&aqpw53^wokIxlu5S-)A;o=2%1ckiOoH49VjA`^}S{b%mON7QkE@&Tg2iy)az#s&I zHSl2AVt--|GlKfpnv7~@C8IR4Fr=`1{+pZxMNj45%7KdM%BXq8_WcEjc~dJkAI1ST3I9WQ(v!-$Tv?-V5GBZZ77> zU$J@IANgW_BxeTuHYbeZV76dfr_ZAeruL@JrCcJKalhc~*!ziJaBpxRv=LFd9y=ZO zY1UUpzHX$dqOxyAS&5|Zc3yDq2<6D^DcR2zj_l1@+UyEt%UnuP+p6{&t9p-qfL(!X z1RVHSx&vGDe&n1H^bma#v=h7$+!o9fTo67H#`Cf`D4WmKaUotb?-J(_JA%z)x8vOB zp63!dNvs*{eAYXLk+zIBoO+yGLaHKa@D;!ibRN(Q=!W({PQWf_neC-jXw5P8(YMe9 zsGd}gE$?0Odm$q~J10Z2G<&{ct}-vXJnM9JwsKiPNcl;1v39!tjAbdT14j`i(|WKA zuz4EFheeM>Ed>MlVf^O&Gkm(Rn_xe8DW{tA18)KUv;Zgkogctk!|l$y#@F+Da(i-m zaz?V*Od9=n>Kn=(a&Iz7mJwm73wRWa1DgP+(O1ZPSAo5?ZJni|v90!CHMeqMSz__5 z!l1k(iXK^wGCO3<%T#8)&wQEDG&4F|kax3`tlFu5tw}e%bNveD*NJ8ewbjf`+5qo_mGPnzD^r^a2*zoFqol)90nV5>OG`4hzxBsWA_!Cw9p zeztI)WUqLZkS>f6@x^N;Y}pWLp!l4~CejFp3J~5n&LrmVjB3Vn8ikxs{6I`5SP0ii z2&n_%I&M9ofVhkJ0RIRYhMJtq92DD2!vR&hih|;y1(LiOId8L8r#X`^CM`++BlSw! zmDJ&>>a;_O@Zz_Xt5xZ0v!T0VGcbd2irS3HVeMv9_&3Ea$x9JKI7dJdwUREBEs`u2 zJrNBSFOrl=`^rd?i&!mq8w^z)%UTrU3Z~_*Qxs-!Q_GU1Npn-A8L!gYr)^5Tlw~M7 zQiZ5{XzuFA*xI8Z_?hHh^dS0OdOS0nhZjv3hVUymY1~i3$C&RQE7~ZuiMB~LVyCDj zl3Bu5{JmT=_XPJITgb4Jn^9WPchM!3o5Wv87bwqZBnF?sqZN~1QQlMkpk5*$COFW| z*y=yoYBw~hK2!2X;fwr_xrxdfSu4|cDT3sODdRFU8FA@psS`3o3kOvWSMOAJ*WI%? zVH&Iu%3#s~d^9c=|A7=nyG+|oo=<#2UP&vWGL`9f;=Hd5WpM5na}%Cyjqqci4`6ZEEld93#IoZW`UL6g!vca2y+i(DzzD54?yFTtX|R`*Yh0?~C>crwT^# z9Rj8FmfsxtCCM1EQ>YS#NWvsGUOIzJTT4YKtH_;+a%?1@2HruhadYu^@dxmyh%mJQ zvmZlGsh||mgtVpP9)!Wb1$%Gv1H&gx3mXlPHoSD8S>#AaY zZek(1;*ffep{q5+X#xJi$CF|iq1;~F7M!cxHG&VK-r~oifub_uF7X@L1UW}Wk#3UA z5nDym#H)qvIKydc$<4_Uk{+KA>X9YzeK;49f)jC9a1ZcTNw;Vd8NKKg)M2z#8k;(T zR1KYTHM7joJc1F3*A`QSX&@x;3tRZ%JB99!pk99rCEa3&HkaG;nvoS^xWfD`aeOG_RO$B}oXkaH~NGdFl{2N*tq| ztKcvo3Ob8BLokt(X}#!GR2emlnoNzQtj5iON7~kyXfR>xTIWMe5!iBHqbEKOz0_z}K%^t{|EvOW|m0Xns%3At030NJp zCivHoil8R}Qv;^^TcvyK46jme7|M#9B~ug zb7m%`5+4P=!FHeH9lzKj?K7QQU9Vv!FdbS>xJGVBYr=RzJ4`!6yFk4{c|?lE??d+5 zqs@Qn5~>5s4irww8>6_D@h~+cxliJz#3RYosq-=?A>BWWY_<5bhu5~tu6Lq~ye@KXod z@x=Kfe8DviSqDaVZt)ROMgAYcy|-BI{vSKb(kqobd;zfZssSpFe=VU9d=aLvm8uR{BAn z6VNWWY0&Y&y+JJlMSk;TQb{SNEme*WMt^jzcU^SaEZt3XYqqmJb|z~J>hMblPl-J! zan#O~v!r6;FU0-C3Zeo^bv1MBwB9s~R(GiUP^u{ymGei|nzU0%V1g<^pL8VkLRPcf zs*(iFY4dt#5ONrDQlnW8&O!btK{9_R-^70@x*)^L*URw%gkWaqrjYg_4})&_x0EX- zT?Ip#Lr4TL+%?|*+};Meg>cQ8b~1^NW~yYZayWBG39*a9j105wRvB4%|+PgfX8Z z5IO~7K?1J}_P)DZvPgbkzC9o&v^<;>zCElYOdb;IpCC1fMsd=~W5JWoKDMQ{KK6OG zO6vprC76PJV{{_akXS-GO?Hy-q+f}>@itHd(eeB62)GroI&a&~m~ynSRrJ!Ff{)4u z>1g7UkG%K0KSakLOtxp_<(5}cj3qXIbS$ozJeyw49M4uK z#qYuP;#U9;xE=ZmOY!ZYAPk9V!Mss@P9(X@EZsxKqr!ft_RkF$M8{Ge8{@6%ibj z7WN?gc4TT;r+^Yswm`)zU~!m@X;+CGpfTuZ@G<@%P6<@O5_mA8fqOf**?QR{owt$q z*qL((#30_Mc4SmC!dcn$!K7Qb*XU@wRIe$2RM;qgeBOYZ(#(x%4N{k^K$!B`+Elh_9f$(Ygh&BILs?w^Xn4yF>p_C=isv;0pZQV^FkWPdy0ZY zy9Lj5Rm*p&2`}UMl+MT**x-h^t7{oi_|K54B}G zdqOuzUFlO5PdI_6q$0@Z(2 zno36&FDSa4-#&L}PB&#I1uwftwp|gI6PJ55_j<_@^)tgv$6VwpC?bJWKcF)kUufm}v=O4n1ll+`4Zu#=F9d5OCwiDp^V_{xzL-15bx-AXqMm{@`8^c>HN)UIEH1bOf zmWB@x8xWG}Un*WHc);7rnaxNcXA+MQqlk3kN75PMQK$eKiED(*0N)}v;dAJ9unOFO z3nk=`=2BZRVA>MWB4TUe5_~$i6L{bVGXAM8RHv$ts__-8%Z+96r45RQ^Aou* zS(6!^nIEv-N)~G~T}3kBGr@yEDcTa~3h|&hxO+GUFc7?e;}DxsdNVFD3DggSRBRtG zkldOym%M^t0^YiMTf68@*cUH1YO2)DR1K;Yl?4}>^9Cy(WX;Kn%IujvF;khrQ#2`L zs@qv^A{jtq^dlT+8)*3rZbItGBnqebUG&#W2TBjiTl9HKPJO9CYP_%OuNqyxtmtVGJ3lCEUiO&`L*}ZisMNFRb2CR5 zq-ic%sPGR+wmrbsQ!mxrasEX*!ZpjT_)7xXigxqciQh|#{Z|B>m#q=s6$}-i{5Zi) zQIrIfL<*KL8W0~t@lX{QiLau*X5M8vnZxLTn`Ru!xR?oL z6%^W4sfH)!MP|VAyCqiN#Z&@hFwRQ_0Y!fI#X1hixg)qJ{mp+?(3!wx{ygb&@mBFu z;S$jV5m$JNW2RM61k@$8^$Z$YhrP?U(x=iE5uXDa;D?}<2vhDd)-ekh5wuUFzJwp} z2MGfS`)~u$9D7@ishwXk@7Lj56r)r4;c!^5Y}tPb@EkQ1$Y5Ei+@4fNaZj((N9rg3C|%u zE(*U1uYv9Y3*aqwoOQ9~l;vlO*>qNaLH&E>qVfx+y-Grh#}pRkZB}+wzRmuWy)o-a zx;g!av?*EI!oFID^-t@5>ulp11H-V=G7vh!9504txso;f=lm4GOmV*KiOk^#%IVV9 zvORK*-zfQZX|kxF-~o3Bvn|8H^kbi8LoA4iG9S^0PvObr%_P;Bs(38&oLOov z>RQ0d8JHWEmzwi9w_)Cr!d-c`+-*e(C4xKWA67 z<}pH<_=7kAi^$r^e#oq# z_M>oVN(PNN47>Zbkh+aD6GsEa04UU!uoiy;S^+jhRygdI$EHoD@y0a65MyK0Y12x> zd(B>zv}$SjUu6Tzx|JuCQA_)kt|@w(PcCd)Ffl(oFD!p%Y1gVl+Kt9bhGF_$I;VD~ z;fk#ZSWc4BTd)q${-zwK&86>R9bq5kH4%0cz880rR>`7eE5+M{6v2H#tl+k=Oe&J^ zl?sI%o`b{X&^d>hhnY)R@r?EKC|YBB3hg4f8Fpsr2`z@$&?~4Dj*P>Dc(~Ldu}v`N zn^KJrO%Ke&&2sY{Lo?kNwY=&w%rb|XkD6%a@uqFYCdOv^)|%DTXR7Q~7gSv|Q?-*dTPrsf zFD`@&xrG;sGKxl(94~_N*`>S7udBQ0=jkN6C+f$Ve%eaYGh_v>lz5Q*D?y7F5#Eu; z(Dlr=!gFGU_>uU$2#~ZFZn!iS;G$@hsIMqQbVGPTs+Y}^RmuxwsnV5_ zYm#VrwseYQo#+5RhW97;J(td7a2d>pl-(p7$w;D;P7*s4oVY*0j|g^~45lC(TzL*1 z_M;l@ZMUroONqIeIop(I+-F>C>T4pI=ti+&f!P&ZX~s+wEgvr1pF zxu{=}s`x_*uJ~ce-Kw9e*Q!_Oe$$kxs#WQlMusESslZ+QacnoV4!<5xBU~YGr|soL zV>cy(L=%Lcg!2Rwxr+rdX*d6Q{>P=QB-PlhqN{=yLbJF)v|Lck?aCU)Y{x2N{lwbI zJV+ZvK1z%yJ|v|P#CSaZ8t!j!3Yv~AK?0FMaJjRw^SOiQ_|4YS($kEXsOD2UW3$S|~CEDc%mtmVx zZuHa7&>0O`)>lXY?h2ud(4Qc{-vrIj4$^7b3w9Xa#UIP-#K~ocFkdq?oE*VC$&d1- z*o`!%pqzV*Gn+eHXcxB?$BSkO;@GnoDh8f8kD0_o>5XYlGJ_<-ldzpl0Tc_ZeyD9h4H#^pXruqps}xUiSe*;lSykjW^QB>8^&Qb z$~PIh8pjzN*d4$dDoRy&C4lvLl4gu*ri!TPqitg}8-Fp5GBz^~HBGe4!oE+U1C3B` zXdloTScQK;K2AN%ptFv#UbDAhH!idc6RR`#99Jex7IhM@6Xpx9^W!-o*n1=%??>(r z+~>TP+-@8q^Br{__U1uJ=}J99rBLHZI|wo02=p=P0tQ0ez#f1B`y`G#itQ~Nn;i~E zI|tc*)w;o2X1!*O#J>Bn#e%bpw2ZQrSZ$TgExUe8)V+8o-{#8^t?=-Hf@#UdwFBxXd8e7{ ztTl7%u zF8+CXZyJNTfvhAE$=xaGWC7_AAp^VV(;JM#eq*f!^+(GQ2OI>?bX~_HV+?1ZAEq@*x5MFn5S=`AF4m9zo@4erkJ8k9AlAT zv*{vsuW*7r94qC8Gau{Wr!E`X4pQMd69(cfxDA9e#EIkt%28@VY7q4fbp&-c4aX#~ zo-+q9l4(0=`)KL3v9!}P4!r@5P1{3D!(!zJu(v{+i6@ByvW!|z`2$;jQXmLA1V!Sk zxV`ua+z04)&S(@We5A|NozXwnKQbP(%rd3wE&6DEU*k^8VVem{xyioUcE)PR|)v4S>}ybGU$;}Dh;h(sl!31K7tCukk|4jG01ib7}>0-yoN2xKclg=wyZ zuA%T-SPfg?I0Qz7s1^={c}P6cA6Shl8e)aJz}2n;&JK>Tj(o>r=OVa=%j#I@cx@}Ue6-B7kGC(hg*)>cSIrx- zpU`P$giM>Q=WW|9L~Eeswce;>U>-fndJmgpw=FX*G*>5AZ)YfygvA_N!;wH9uoUV? zIE+67`QsIY1%&;?CVZnNY^LlT6uU+fVap)(cBXS5C0go$1TF;V7D)Gfj_~1P$@1AcLy2{j>djf?h=p>egr|N9h3_OV^P2{kN|oM z#)Hej8K4RrhC7B&#z~;=U>-<;CV@QgJ-7lY2Wj8|paOV;{RZPqv^UxpZ4Yz=^U*a3 z0&hh+BN6b=ScH*=(BK4DA{N7scQuE{I7=L{u3oMs&bf|E$9m^2XO?rSQ-n!i*DlvK zXDin=cs+6!M&Oa?Mxx#T4Tce*iDXx*upWq7E1;2+6AU~kLB5#rBC=nQr zy-m!;uOkj8d<4@_CGZ+&ARHqfqb$U}cNl_$ajl72+ z2HRlY&y9p;;80u@ZY*vvC<0o5C!lutEL>A45D;P`S`KAkH&{4eIPe6aB5SaF9&|7a zNXLFUhlt?e0GJOG;Med8q%{g5=Uf?1igTSa9E$_K!|nhsagA_}a;|WxU3!6?a|GM9z6|~gG-P+y_)W>xuKJW1_RfsdhDmrKk#vto{y5ohsK2EVl{Z zK=2(lb9%scQ3RL*a&QvdM{pw82>Z739n5#U$4!MAVwg`jiN!+OL;oLf?*U&$@%;_Y z?B1K6&^x3jBtSy%MG!%xsURqV0)m1Fq9ProBZ7!XM|zRok=}cUgcb-bln@|55>oHo zoq4|J&TrovQ2)>Gc|Xtld9$C~-JP9s=Co;N&e-)VZK39;H`OcHXWHB8Re3X3kFSK? z&p|E7_EKM_-C!*w#w+|C?Q^XkZ;d)NWVLy3ZIyOX`v7}`XRw;=W9^nc&$iPRZIika z)>eJA1G=AmzkQbNBlKMFYCH8d(CRUIFD*d3!h^JQUQX+(Jz)pseAycF)-B~BIZpPL zW5g|UlkvUrlR4HbCT^JX%#p@$XGLdy=ThTGvx#`aeA77XeB!KRPB%XmJwzT_rX9jh zR)j~ruh<0HM*JW~$wO=dr0Pe$pIw!8(V|_G&G;eiK#TSee)9q_ZY&HP?k|_i&S<~m zWf-e2yNL^Cp6M@Q(UOl517%mV?axFrF-s&1A^sG*WDwfNW%5JzRK}u|Eo>M2foP5Sd~T2I(%XT#fQU-7v-C#&*Lcz^blj5CAe z1MKi_hBjrkyko{2EsSC&Gb@|Fo0UXmv#YVe>1n($nt=nQ(aPL!d}F4Fo8klWqLFL1 zFqfj8{#`zl<7JWzll|lb_C4Rk-r~1dCM&IN#d>vlt+>8SF9CWt&`xXf_2K$4?Y_Pr z^x3XuYE$&Z`ZWEd{!Dv`(7t*UdIe$n1ua86t3T3HvEOBr-bi~-+YjDYsh8D*^{QGe zt%SZ`+sof$X>tZz#XT{Lw2<8uW6gQSPBTK@mfmb5G>(rs!1%#<3drvn-Ob(RZL^X2 z#K?tKT5jw#elQzh6xL3(K!2&JSRpb*3(&8vTrCqI6M3=+`kZgEV|X^$Iq=CjUY@sR zO_(?L*B)zEw57ZjGv#46gZI_;XbF5edoKIn>sa1}4`iRCH7bo!O8}mna*X^^E|d4< z9GQaFeui*}X4sMcqiim3iAB&{H}F0{Hb8H#fgC7H$Y0R@&lA1mNcjj}e=A7hpUyH* z^pi{E9WjeNWP+uFZ<@%aB0*k}yVxImGo*VS`;7e|OUr)Hh1=LZ-b(+S$FW`5kKa^#;J#eSmS~ss?wIjg&4c(^F0^m;bbX#a8g2h< z?S*z+dt0xm4*{1H(>v=Yw9R}Oyc6u?JGIt&RXs$T#omXM9FbXUDR0AXv+XPz+M+8o z>>J_}ktD{-vw&%a7-vS9eav^zip@kDv=&%zDr<^i=0l^j`3qp|2b#PM&38*25?94O zaajB=#)`X;m^a}2_$%2%WWxHe7IN$$dq8e(i&f}v_{sv1?pcU`T?C>W2Xw$twoeWh z?Lo!zGDWUr)p-o`;VICOL84E|G3eO@Xm|K%-kZ&qgV4@4M7=-Jo@s-$-8_`fVpG{> z77qQfl#FEkdMeHA^-Z{#F+?_7?RomuEZ3E*q5>>@vtXXFa3KhNcxfstX**dNK= zSW8+7Ie81RpCW@mCr@@(c4zPKZ~1ms3q0@7J_Qaspcgm?E2MMeuQG&9WJ}ra(B?ha zYT(5t--j>TiD=J**(ljZHU^xxR`_;&~Cu_|P z$d1rNKgmk$GWr_r;j!dAG?f=L!U1r^7_{C^SS!|ty~DPn_P*>BwwGODv!TfKUgbEvI*!HC8B548F}oL7r|qd0mrxCt0pWGGCmQQ9R)p{Bzv)W2unt( z9nmhVlQqzXn#lU0?QIWE_(h%uJ?DTH#Bm+LGgn-6F2R16CFM2I6#a;^@;-WI%fZie zWO&hTgjU8Yt*hZd>C%P_b(9RWBD`c=Yg8`fIpQ_;6-LB zqWdyg#>qvH$%XPD zxG)}}KY$$6Y*~X@;YeG2FRJvC|>X@pAH=ELd!PF{uqfONCKV+Zgp7;=(;^40=tGv#{7RWwS; z1}xiA&M{~(9aQ}hvX&)}<2nM!YOyY?C94FDbQ^wsGm*<EEI{RC|6l6RqDy#Zq);tj609=XSuPX>Y1c-}+I^N)D8|ICUBG==nO(<&&ZYc^JT?S<9Al>PxW0}rcacLbw8}%o+apgxvpxYNkH9JWU69|y^Hcc%@23!Q1RS3Notg#AC!sFK z0s8~wM&8S^fT^31mvbm3M;3(~`T$EOQIFN2Y?dqxeVKw3>wxoJDD5g>Ig6+5_`U#R z^SPkF3OxS_+>Zwye@4h+{QoM)f{sJMt5XnbDYVE+#GDE0j6=vW;O>gNgHpF6bgA43 zIB((oHu67)ZzlkGJg^amx)MgN1I8OjaT%p2;<}Fe9n>)e*F)g#6k3Aoz+)EhWdb+% zQNQQF58>MrHNdttaC{(6I4A{uS(-(#%B%)_B*n5Q7S2L&(MblO(D!B0k_RA-#th)Y z0mrH)ehpBOgKk;K`w8SH7a?dd5ib{|CIONcz^4bOYzNIVf#(!J@EG@}_(Fb>U*PR7 zYC*M3#xwb_PI1*B8Q}?_&{fnv86kI3lQ>Y|2(W$%|A#@r-JtS5{Qd<@tpT>zfm8pI zJ0Km~p?$XDA`Q14F^B>{Rb70sDd1#O>h8%rCy%L~b8PKs9o{NB5WkA(X z=+aQ!OXFQ##a!nz6oiH&FJK=3frfk|GEj(46w5=oS+06z0v_dkSiNVtV6o!lAf|yD z(b=j7U{+^=P;Kaq(vkOS@=~0QT4Vq-FF;%JWlmnpNw$-L`FptTgAR{yr681WNEjwR z?&(NJrC1o0Xfw#)AMq}EZX+LN0pK=uk_ff<>TC-4oz9m~=TTrm8gZ4kGdg#K&WRwM zrF{4K;*HK7DS$8j_$B<61TIUteoKSKYI#q<~ zThs+9{T4ZfW)HKdbJh-(S2bg6q;SFKfTNe5A_ ztt$i^O&AFK&s||79GZ)+Nc_9MP|OI|KZPn;P+=4|93d)i>sv7NTrluzo%o_C?mo-K zeU6Jd%Y~?~E}|H6HBH9E(7KuNI76hfj zk2(iOaVAm0eOc5{^|!R3!l+eCx~p7?2Nm_{SMeUzTwPYZ-FF3HmpC1r#gs*zP+Ra=X?)S9WY zl87@cF12W_xSIIck~&MGNGrLYEopSeQZit11f{ohnRS!2! ztS5_W)ZGfTYM)=vDBWjqp3;Nvaug3x`HB^`>ccr7LwWG@_@1LNs(yA8Ls)6;U>PBz$q(W6c zL;YHHx3Fp5U&W((qj3?n#`LRt66#lZeWi9=`Q)~Ksdw?JM`9IXg}c2NTk+f>))Rdp z58(OJsFEnex~R9HdJpPXy;B%L>h4ciu~dllOSxFjuipRt3&nHySFAFuo{Y*xrM6)F zJ0?_Y^o#O5F(q z7EY`ub$XYDJJ&!4Kd+wO;Xd<2ji1!$;?)yK=o}FWpe+-rC)%@ILxle3S<4gCuI}SZ5 zSgo+X$D;h*UtcXv!RCgLprbQsEGS<;pGKW~<396-#=I0}omlkx8AsNcV6UH}q(;%! zcv_9BtzR_)x87clqekYh|5CZ`uuQaPuAW2><+QgTR2tls9!gH>NFuYW$1hUH}(AYR90?Qy{%H*rM~)PLFmS% z`$^S_ey#J~)RRR8_5Hu6NPbudPJ-n1`>W8sUK{J(eYf(+Ph0iX!VukG4WYOExFksa zp57`$rMJqla#fI1Dl6WrcXz2)xRrydp<9~hy9#svT4@wy)|-{5g2DRDUl%Kk?n=6? zr&p!ll6<=7*J(;`7rB?a;Q!IB$`Af?m(<;fz>!0rK{N1rt9_pN}SDz`2+H-2z)sqTQ@2@}8`~S%w z<(dD_ovR9^_y6Y4-T$B``pbW}o?j1D?^fFU_rLc5t$vUDZuN;&&(IxiJ-N>{wQ{B} z*0cL=#sB9!#k0P+)2OG{F+-uR{;7A1Zm)i`-d@LaetOU|@k9PU_uK1V^2efd^k@D4 z&v9Q(X}wtx=D)v=12=XoEakty-hZ|F{#G3NZau5}-$P#gPH%sQ;qREY>hSM(3y(_P z{`bF1mMPvpN%h~u{@Zx@Q(C!G+JA#c)rh|S&wsDS_~-clR?6SQ|L4;Fo3F2G8w);F zl1l&gQvdr9!sGvhxBNN1K0dO(sXVN=f4lz^#qx*!-*~1L&z+Ce{<%ZcC@cTF^{n{r zpJ9KMO8?9e`Quo*SkzJaghCYtt+?u)-c$+|&w5kkSb62YyHn&3{qLXuE+vG8|CS40 zjj2-pd)W$B`gPY`#a3aj{^r-2|MvW<9&@*b{}$gJu2Q<+-7PDHy_)YozvWN+_h)w- zZat|u|D4zVo6!7Po!St09{Iog|Nl&ISWr&9mNlp9o?~{;>Z&j`yQ`jQUi$x=OU-%zpX6;p_ut+X2L9XF|7|?V zRpC&j_&c6e2+_^@=BA;dRsL^Q9J>EgxRp!(Jo2acr)PKEzdu>=t$eL_y8lyH{_n3o z{}aZDo>sW^lt0YPTW&1Anyd9ju(+ZByOg*k%Kh|D`pMF1|Ev|Qae;NGSow9STi?I_ zL@f=4{dMR&UMf*}3m( zzQg_d>Jz=aepz!Yuiw=SwVIQ0f3xOj+#&QtdAdVhFG0=SsPFD?)@;q|;q>kaXXoi?T?g-lFPhl0_Hg!O;ug|FILJREjrj-D66b5@ks}6)!l_x<$a8Ugf)MRN# z?Jl+4HkS-r9IhdZG?EA6tGuXY6w{7)gg>gSq9sE(>2}R!+BEHRAp1*# zjssQ|i!>bNtGIzI1ASfbl%$hQpM`%NDQGR)4<$(CLUx9Ju&XGIb#xDw1KYbNsGlA7 z5T#)e;e*nj!&WZ?vHTH(&iN$VG8f#6j~H^KRda7(hwLStfRk)B{1KBZDLt^BUL33M zcG%OBU0)vTu#3T_qY%o=Lr5xO5jDt?(Lg=PGSwIF21iO zh+ilc=`XSyCaYA%Tgom{A~jiJW}@z7d+OohEG092k1$C97p0)ZnqpM)5hgQ3E_wF11V=YC>E~wyb%uDKF;22iYg5BAjB9 zm7+J|0eBbwsO6IQMz*3H_Lvq6i8qn*&g9B;qBV52nIT*PFBIjh-CMUYEQPM>X2l7k>mS|Rsv>MSs z0#^k9*;7~)C!-939Sme0?9HCIY>vrNx-c+N4k7npLwglDXehNJ{vE*Ad4!~4$4?np zC6z>OWXt{tbs@V%57^${M4XqvGw~AH(!aphY}AX!2MiFNhE?x#67E3jcckNO3mTpiL#I~s1lvc4*yEdPb;L{iQNISz>Q(79WWMznxBWI^$wKq9OXp=@1;S-Y~b&ZyaTF- z1D;Ui>qO}fKo_zq6tK450|?_lMY8U`hARvDgW5d8KoU5zB5G3}uv|l3HXvqUoS4uQ z_Ds)_HW|E}4LVXSP9X;E&!`S6=60l&e4!WlR zdr$u(m#N6>Dqua2FddK=1J5~ui{pUqB=YeAegc4Ff{fBoFO%A(qNrCD*u!~Y$HZCW za22o=Wc3ghi2q7}ayIsTO@y7ff!!({QSwW0ZFlUsItU4T?vf(Xy1|HD7JJxMU|-r{ zNeV}H;l_6=~k61#{t%IesC z<^U&9P3s}g1M*w!`%A!%$HmwyQy5&g6nhjNVlQtH%DoFL*FfsGU1?Th|3DHXcN^$U zZAmKNdjKi;9eB`?)(dcu&6@*sNWuP%SUerTK7<9}goCm%+sGDzHws{{@M75uyBO9X zG*@=O&Z(Zz0_oV15C<8*3XGnIBxtY(tPHH~#om*Zz`GN&*MPkXie-R{PC$+pf##PG zcPqH>6nL>3X#c(|r^DcdJ%DTqcK4*os;oP(&=)itg57QN0CQ{9c02agti-OgNbEQ( z2f< zkn5X}k6=jfXQ0Y@>>V19+@2#&D5P>Zb`$@OdNg4ja5VrQuLVUsQSw*dcf$My$Wtfm z?W%|!Vuw(#Tdo$?1fG7y{;d1hE!H1<`~+&f0sKvr845jhA-sa}cR- z%PN357(4j(00!)x!;a5pfN~!&90IN21?aB>;uD~8X~35RKB$IWBsz9z&0zZ=$G7FX zvK)4D3HcrNq78tiqMZ#DAmig8MYFMU=r?GY06;$jRBa`Luyb%RN+vq)2LGDilb6s5 z2KJ>)0Nzdll62V_yRyCn?%x4ym$A3#G)f=Hrl8)H*d6RV8VTuN%AD*HN@)!GFTwuR zDd-mju&vlpbP3!!1{$;-c8<=#&diU&Wuvg8uOPm)U~{pza4BT#2keY|2fJb(Vi)RU zc-Pzjyxf-cu@BZ1!?B4G?v~ z&X7RVe*p0PGjQqz41b`e3!p=4VYk{sz~30$br^Bq#U8SG;D@ek2})T4`QL-kM%aP> z1UqDpV~5)Npx8^ukpN#@f>t=?(qlz{4eBFA0xz9F^X9J3hE?^ zme8nk07Yd;ct80S^lS)ZsxI2Jhp54RWb(xg$?=lLtN`eNv=1n@+lt6x|RIR}Eb%Ce)7(F3Sy3+%UD0C`_0 zLu6%Wk{Iy9?`%GFTL^adCd={Iv3mhDtjxZ^p2-RFeUvmCcsT_=Sq_Q5gZ-nkpuzWo zi(|n>`)I>0V+N^D!r1nLZB^K4*j1UUUySxeS{Jl=6p;TSltC@2{$J%P)qEQELBh4>rn9l2MuLl0mY zaMl{Fz##1J%EX@WYv9SbfVVlY#n6uZ2roj@0n-TVRgGf3q!W8zf5$G(W8nR|;J0@2 zO<=zn_~jP#!wK~NOz5({*p1p4T3|ogw=}dc10WmN4G+w&#!k^^;J&NkplFR+1IM7_ z*Zc|ibgujy*IaPrI{02;tQ~eVehKNB2wgc9oDqStKyTNc$|j)b4eY#afSsdbP(n-K z&H=701t`k^dtD(Po53ZW*>Kcv8{}ml+TV-V!8a1}aJ(~=F9=ds_u753=&hHsbV*zbPPTp-Fb zZ*4gImppRSE>-*iPYMxyH}KF18ssG~FcfXfK4{!y;PfRd82g>y!k+q2&^ie<{SC1F z3Qp_+?%D)>`XRJ^d+gs`1l_h!R>2uU-9e)!*nc?&`^jrS9;t8S1U-5JvYx=xP_#}T zBbQpx5Y%tXfOcI4zRd+Mv_^~20kXXT=??><+GzF1LYr=5AMvZ;{?_oJmniOujdC9A z$XoFy>>^tF80?2!0?N)un>7&n6KxQ1RTVpb|AKZOj+T8i@Yxi)dl7i<9$JqO@I?IvJ^DXcJvPqzze_-(5Mmiv#vqkYCI(6 zC}i+E(0UKboC}Nvv#H?gw$RJB4lR^}wSZTW z&e-FA82!*Gz)hTt08XX>JA1Ite6`3FXP`-Sb_8W#hh&!Eb$L8=XhGelc;MO=!$)ixtgHFx7ewDTWk{?)at-`^O^h_ zTCO0}I0$-frtAVqo&XLQ&;0oslrtCl_G9)K6kZFxG=%L(>n-E}Xrx8p@DAq`*XdXkBYK5jLQnLB#_tKu=*_1>3uTBmAy>EIm!QP2LfDO26db~^6Fdex=l_zkSwB7n`~J^@gVMxQ^pCD$Z+Qh^VI_EJ6JBe|oS|yevGf zv}B{PQ~ghP@HhrNd=Gjg6#igFKtjs!ameYCXpFv2f*c6n{Ut%mjgToFvi3XrBwbh> zwCa5Hth-?!@gcN`4WOUm(31Cs#_b^2ipSzA{8}W!>q2F;1GG>0T}bU^XuvJtv=?|= z2MLRTbS*(^@DbX*Pob+y@e_!j0ZrQ+I%6{WjP;?-e}X5hHz8#^F*-EB|L;QUrpnQ1 zgA>6a3m{|u@IexTURfA)$|aOD7d4v(Ea!q2@3B?bWB(TVuocm=+0hnWmnTrt5cs@E zfbW8?kg@l%*L|V%gSPz)y`vuh!+z-N73gs;0Hp?_1vm+Ax(c5KI!dgM7QGU7j=#+= zKpumjm1aW%y&<0~p_5iXldNM~&^j-JEDb}NG2qdWkQI3F;(I}vl7Ll+DZp(fq`U_$ zHy62gf_|%wHg*W4Z3EtVfy3ScBtOY!;FGhgJUm8Vudm!7ilP5L3ccD*pvZE_?%TjR z&0iG&M?`_!W??)&4|PeAJ6QwnM9lT5$sS1l=g^E>(Bt|UTDdVwD+unp3kahjmxIvW zM*+GK=tq{o=!f=j)BMy0&}$27bszom-jMNg2%{OLXW-*fkkf{sy(c6;88lps(a14; zUyk|)q29HiVLD;_`!QPfgOJxzXocoLOO`;JxB!%F%2vSZ)LF>uOX!&e@I~|j{qy6H zsk-3kiR^p$CRl*HCSfQ1XXsTh`1%V#N!?M`IP{+11b!v@e(Rx?%c3ukh7v0P7w6DI zjsP{Pu|LtmpF~N2K+3v7T2>(RH?$iA;ZI{Gu!}Po&_jU#aKL>QEy4G|`(GHh+!B@1 zrfz{$^>B?yFMvviF}B$XZ9Ne*Y70zwv8wV95r(-K2Ruy$^1^7>ABjbBF1rt2{uq3G z8T!i(za_UI=Y_!SWuXViGt+ly3k(*>mxKBP(Pydz96P|DH!vpp8rM$rlV?KW%R^(I z0fnfCHwBa)g?{f1w1fx1LFpn%{)kq9!~e%DaN4`*pC1Lsd<1P!i4B53lRM&tI0*fF z4LWHXa85hCXUVFdLkWyQ)<9e3BHvNy;rW4=tD~QA9FU#_Y#OBaIdnw?`j_9}YK6Z1 z99a+J_+F5({%F}Ni@K=!o2W%~{xeGzVennESssUfr8)3Xav8LL58A#WWP1nvX!K)A zfM7hJ>jzrp0@wFYuVm264%vE!@$3yqr6*e3KA3^pg#JlI)S?K+2>sB8JVorb=%N1( zzTJ#A@-Afj3+Sv=mtTlt=sA;5spjZQorJ%RPgrgEKx&U3+IW_R{{3>aTCKr#i;&|r zVEZ7v**ruoTAS+o4+*K~l=X zgO49_PDg$6F#f6q%p8Z0#ZBN{@&eEpJRJ;eu@D@S4aoXI4<3X+liJXO?LohW(7s7% zM<&U4fcHkg@*ZGzH(KTQfbZwv&Oy*Cp^(M`@VN38=yMi*qil@E8$w3+U_|5#KO$S; z-K9MweGuBCjTkwUfp+{6Ih12-5Mqa1dSVRT5`H$8VB~WOHC~6_MkGcW_dxa2;JAm- zn8P6tS0P;s&@=1}S_}b{(de~%B5pdg_ZHykI(TF#QX~O)W1#idf!i`M+tD4Gsx-!` z-$U-l;!1{Ih(Z6h81D+rI2mJ-9AKj&B%uoY2hD|~Mnji|@mSs%vdZA0Dh{&J5xw~L z&|4@14!r=aRUbY2Rgljw0IR?VVi8(~CE)500AD)zpb5A`Ln;j^#-eq81|I1KxT~_q z>W58V#eZ6-ui*N$9 zYl)FjDM)Qy_6KxCTeO7dp=Bn*+r|{sXBITYSn%ovK(-Sj;0=(Z9?&_}&~qb?6mNrH z`hYIw5mprWT}GNhpcixl@+trx+65WghcysclOxa%B`tOrJVw&?CZsSB5_cK&Y6L2Fg$54*7rq5;UdE+YC!lWU(au!|R3x(- zzy&3s?-GG4TImsJ4bDR^{|xR=!dUS!X0W@Vo!SB2Uk`Ij>EMXDm_?}u{0-i4b19u?BH-H6Nt+8WlcLTK-NJ+DW-H`j2 zm|gl1ocIti8Da#Z2EnK`&9XY7$0FdjZ!dK94UDRTz$aaiq9V$x3L0di%%Z^68hoWS zqcEiO1b5y9CdnhuQNVZ`Qgt7A2}7Qx05u1c1;JS*LAmmH@_4>=Y=N*`C7S`L^m zj`#tfW)xbz3Xq0GQ0yXV>y3I|MV)QnF`A2~nXDxA4(?%|CLT3Thkl^7P!rr3fLzG` zg$`3(2Dit<^<<L9Hn zlYNU1N-6-#kVlGOP|_cm%L9}&1MTgCi0Vgc>9juh0C^}Xzl(5aQg(fB2P9ZbOOUX2yr_+Iiq$@ zaNR=*^hDlSXuXJ5X{o1{hS;?G?m1GDUl&?Qr4@Fv8YFxw`vu}ATAijfclxHh1kqYF zt-Er>1bJNeQt2tGvj+PdY+WN!Gq8imO5>M_L)By+h=O$MOV3-|4dUW~m)nlt#g) zeyK#N73m}Lbwj^&DbF{LTvU4i%F$XGU61~sIJCx0-(SD1u!o?}UDtIBl5-OhorvEX z;L9tJ+>2;gXl>;vt|QPkhj1N03%D13fZh2ndf$cjz4&?r+T{#VUV(O2dEUaPF%DWU z9{0O|nSAjO7ZBZP?U{I)w1XWqr!_NLO(**WMeTH?A&*rLQKy^8_p0kX0rxwA^D0Uq zUrRS}T|;?yT+k;#a-O1u$1a>uiO+#gg+;OhcnSGXmL$YO#7)FoB)240qzy2cP1QwV%7#kW#*$SD z?b)Y`^a}aDAx{O$$BX4-!t&En3R*z&ov@ zgk+t3QILkFJ9$K*=hDzzKTSRol_Qw-xBD((pr2qXrOAK8vPbQ%S}E#$U{zf zKt*kr@&r-=?;$9=BJSle;)}sk6n-n=PI0PWbQ^>JSp3G~q8L^2Pd!swAC3A?nu@Lz z?=<;EF^l!U3&$ zE6*y*n~CL#$?||g)T5Y0yAb3^t0s!3gwGI^M7!SOOzHTOZQj=vo|B`(# z*Q4bOKo6gE$3u*~KEnv46Vk<^6@Bb#iOZlL-xa-ml48kKs0YYVQH!GZ9tl1ui&UZDj*_n0hk<*_;GNn(@)A-SsmWh3aaT!v zA#W?hL*#FV_>5u%BfJRS%i@_hnSLo3`c-^b#+8=7D1Rx+GYQRd6Mu#v2ZEB)D8D{L z>vDjdcrg%plhx5P)RDOO6T}S0NS35rU~Ehtl&Yg9(Wp1&L4LQWPe52FZY2&PZ-XTf zRva-DCzJ;c$eT?VAP7Mjfrv-6RbGimzQSG5L?cF&D>MpmENT+2iCYOmvaC_Q@d*Ex z)RI3K%VUsRj)_CbgAwtD@<~NG(L42$g7HgvT0F1vBAzEsB5tK`>YZeRxXO}NDuZAl z*-`0;%P5rcq%_Ji6UhLjA=*=lXoQEjLP)wPRwU{Z0$C=y#DdPTh*t{XL9X11QiL6n zLFMy?aN_p(6M|5pA!!h*tI}YKzElf}NjVYDDIda8Fz`pXqGzSk$j=~gisBRE3rj~5 z2N8b}w+2FE2cZT*ple}Qsmcou@kvRS?hOZTklv#bC=c?@MPAy-(-w}Xa$UrMWTisC z%Ig|^B@b97@lNrSXCdMqm5#J2Su;^yluL0}j+8I8D9WFX$P~NY-J>tcw%gi)V1-!W z?i^K_DqoexZ40jK#@*$-n%WAdRO;EC>#Je;%dl#o^0I1T<&ZxnJzKWuDi!r7RH*VP zL#4Vgq2iKltBRwZ++JS(Zn5s}lURFj)SbeqAExYSm8TZ+kVyR&>p#Eky7la~J5?c8 z-$vc3f9`%#≦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 z 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 z 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⁣bc27bN`P#wVln_0K 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≈%YSAe!}M?NfK<{PEfEXC2L| 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

ajQ2fD8Vy!^Kb?}1>K6D2x&rd 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 z

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

pE*q*r?;RB^#Etjb(EXBLLLQ6*iYOd zp5r`Jf#{8%?<-pegWpEir$6Dr8gbn|XO9CbbG1F%UIljHY`cNYpbHpfe*x~8#OGDk z9BYlWz?zIMMkVkBGF$%u?|u@U+AZcx;F%YiE6il`g?S1Lj5ISHk6-B5{zShe!YX79 z2S;`>@bk;S!#IqO-qt9qJ$ORBt(I0}tAkb6V!=l^k5_7AmIt@&myrZ4+%oiZDxs@m z>tFPjm^ttCbzl}R(EH)vQ~Hg+y<$Vtvm3p@RlaT%!#%re)<%^r4N-9vIM|BBQKCN3 z6_qd&`N7}cME}7|>&2V`Q!^(!1X?!-*w-w9GyX4DX5X<7**j1V*vf8TN3zw~(&&`< zm>bMqW-?Qh(dd`-8B|lI(7ot7bU2+%9ik>sO{u&TK?TWg_$$ZB6=V-G3;6{ZZVfR4 zIPM-qG$EqDz7nkA>Yz8g2cC8X#-b6%&u3mSH<*jfDd6oiG%JI9O`D3LqQ;#SRf(o% zd$S+_;|Bs~U?9&{IsXni2K^3o=iOkD)y za~#zUm9ShG*`MIPZX+jv=~Ic6pb_wp*h$R6{-_aA2wXfFDBrX87JG)>*{*EowME-& zeYT!jx6#KrXl=HZShLU}9cm4-23URZc`V-ld@J5M3e@FE>!x)JRJH5uyZ9ny5}xCF($rqXjVx3KMgPwZukZA2bpYP$&OD1PKF5Fxe4rQDiQ3ZA)N; zS_3E0oor9GA?uU%$Xa9#{QDo+udje*Sq;2rHZmH0!=GTw-iFd+e_}k*3xBB`#xjZs zCun5IoA!BR(z*5$Usu?nJWkgpaF!VavJ@C^Jh=B1xmT$Ia+PlE_-iI7~ z9$53I$gEGnq`Qxd{1OPK5B6((eh8-g9s8nv+CF0Mwl~^q@yscB{l9VA18n-1c;)(t z;TrfG_3%|g#Bm!uI@-PQ8$;|d_B3e!Y(nlnV_(H9J;STMhib#2eF-|c_#GYk4Un=z7SF-A{_*BC(`p%Mg1ktEb6 zaLh+^W=7PxNfZ~MVyr?><|o$W`@|(YE1p;he8_05NNq8mMTuO`@c zY{0CEL#z$9`@x;31CS|g5HEipt?^ZR#A6q`C*lO^(DqowR2(9At-a0Ok7xhA`oHt+ zDX#yk{l`{p60aXlWG1o!=aU!XRuqhqio|~y&-zdiZ-IB!8duT=AMNl}YoZk*sWA{t zH8I|0ali9nq%#pt%oGh;B;PQ~PyTnMCvc@(uy!s+WKYL6*GIOWfT(VcD;tRzuaB>) zA-3D&>+#41Q~o#Jarph6c%M)3jzbt-0V{EK+|vd`Phu1?1MA01V*CH1G?93VNc;ts zb^zn+hmNC(2jGLGhFJZE|4l+>OvF97L>z<0!g4%&1ny8HyuX}?BY`l$Vt9_ca~yGY z2=nL;M&&lHd5S#{b8H-9<1A+I35?x%jOAcNNIZU$fVe(}uU6o_?Z#+6$L{JQ&gw~c z{$0GnCyWA1L=rL3Z^(jwqlm1)d{x9qc1LDuhWVHm5n2Pgjs=L5Mc_p=$MSCB#T@UMdh%kp&t+Q-CM;L03LAu5}DD4a=P|}~y}br|s_l4BH!yCua0lXX=hq-#oI<8d zLWJH$c07qlxP>wOiIo6tNknS~{-y9YbKsgwBmPR@qYB2WAtJOB@>(~1?nHD!HtLCM z>Wke*cjUXqc+|(WRm8n7it&e~Bf%0D?$nq6-Mgo_rn|_+2QZ2oG1ph)u@ob=(4P0d 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 CiCf+P literal 0 HcmV?d00001 diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/infer/examples/multi/country.flac b/bi_v100-f5-tts/F5-TTS/src/f5_tts/infer/examples/multi/country.flac new file mode 100644 index 0000000000000000000000000000000000000000..ad6985b710ec754b0d40e79be6cc3563b32abf15 GIT binary patch literal 180321 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%0DC*2<6hXnC8GEd#34OF1d)m}!f3^x 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

6Sg z7D+fT_%6m)L6b36R#zzL1m26^NWO>#Re=Hsi!bCsYp~N0RGd1l9_qHWoq@P#&MhLT ze}r94rulBWZ5%wI82CxZrfs)fiz2s_0$(|)y95A3B~T?JcXfuEXUJ44<&GcO=#&9y zPP|#OeIru^MC!`W#n4WQYGNwlIxp3B6IjeU!5_G3Dqu$EjQIGm`WPgr7 zGtIHSyv$X^H$!i??lS5wv2~7da#m9+ZJMe2Hf`xmZR2jz(jin9x>&+@!zJ+Uqyi$W zaL5;^nuz|Ae8LuLi3FJ!u&8Rp>F3m(cg%uLOOw;d8Me+%;Fppa%A8&#(N<<%j&JIH z7%6~S5^zBf$gPntfZBhGG;+ z+z*L<%2$65@U-bR;E~+Jx)bG8l!7dgdENv^Y*SXfB$7a%wp!h!*37c0q$KZ_q{@Da z1+Z8;hc4vhwqbnju2n%kcH&mbmgJu7!y8mFsZ{X?>UHzf9~Qh<`vj6{#!k-@Fcs|p zHj4ax6$wm)6wGZN+^l_rKIsUXMJb6-pbmO)dpPb8Ujl z-H9uUGfr!%eUB)%Z{H;O?{CD0u23U3hDLr})(myP;qN?wOX$I8_*D&)YuwHE#z$F_ z9RD1Ql&+L22v)tU_mG;&Y+|B?yB6KQi!b?Kaa~S`by>9y<^th_WQl7j@Ku`c+9p>& zb?j?i4Hvv$&n%TnmTtG4Nn~QxATwK3H!4ZBKlP`R+4gMQm1Skxd8oT-7L0$}JURuj zX5>!u({5wIYi*Uq$doZkpsYG-`DBgEx5Y-DGWq98H(`UBs_1Gfy^kq&wygHJN*&p9 z7)YpQ$u3Cd_e#v6SGs*>)MUktIy4%@lY9!oCh{xNk#!crNHPdks({iOFOrmtuSS=w zrQ$*u-7bLDlGRJ{zA(lG%fO^Y`x0atx7$S}QDfYMsMPNnb0B?er!B}?9qJ->7mJnn zC9s-9wF2=20R{FII80-GbG9;TP?7w%b;eJ?!X?bXQzA?OF&{UiprqRpWU!Q(L6CYW zEYU){9JXzVuL-GB5v;O*q%ylJ;^{T32Q#BRIOCWRkfkK-Alv+t#Ki@* zzs1-y$=3_0WU~PnIMIi~5Iomscr&54%aBylAe!LI#zZ%nKZ#sGcWQG-L~}Ppa93n% z7K3i50C;BXb@qj0wE|TIg;t8;6B1b69aH*LJ-1)Y;K^Qg(Go`a3Z4oU4e}3?4^|A4 z2m(L&q$PDASs=<%Tk~_5q>b)s*{q_S^`<<<>JE>V?^hJQ2R9N5eSjwjg? zo!PyZ=}3@~MYylF{R`52Gm&^_bv8>=at|AnF;bM3G0`bfPZRJTW9N9zyS_Rnv93$f zlw`Z5$1j;X-_^%n?3CrJGZ}D6dgAJbw8E^5x#~AX*EH0&7JS)RL73 zlO*6X&U5re8^+1VPp61^H8o`2KanZVpbyj1BVk0OP% zWCWs;_gBAIR*PZKG{gyF)Lb$hfH4{W_(upo4^9A(0Gj}(0PF!20NVg|0Bq(fRI|18 zRNLozjb&woe4LEHm!u~+%JBNQxOHq|5Xue5zFxbtBKr}RVy-;YVinevjnM1#QZLL9 zm-)PD%X&)$chL%IT!GPFhvat0=O1ayGtQ0HI@hn+f=j^|z`^g{tyIdPY_AtF3R*fR zA-#`?ROPx-;t=gc1}#vdJJPUAbSA4^!%2$S%}~IsuZ#tLuu?vIR;$!J2&7jT=pZL*+|vN6C{^h>jaKFgP(Gaz-x}Cv+n`J|bXt9|=%J zAe{59ot>4DX%j}ETVuXNsV>kUG~*-W?@RGBl23ba##ism36V!tNX&F2h9{*nnDbPp zr){Aab|~H(&RC1981j#I0ua$+Er9n#185r|x&%Wh!yPVURs`7^B_>4bksZ>*N~)>W z|JV>0IWrw7Jud`gU%HAxBTZ9)&xbvl4DAyODnyIe-1JOAi88cF`KxS1<)V5+Qyhb& zMIw_%OjL%hKnaam$D?ti;=CTjxSBe@DHqqKe z1eG&I(m}XQrBolt4uB4f%btDwX)qxK6(_Bp~B=`MKZ7}Pw zdwrzBAm-U_tp!vkZ_?HQCDm>HV)knb3pi51rFw+1EZoOD&P>*E-Rert>d$F)7^V5U zBF%9yWn*%bL`4?x5Go~s5SUdPpUJB}<9q(jOc?WLyw79IqFl5imw*(GB?# z0BA%~D_2M^M=B6H55&&~C*in|M}U_6>|}hifkZ$sMBMak#=$G-QYh)j6OHkxmtjK2 z`x35t)V`H<9Q6GgT~CIa^o2cLtgnMA>LC>ckg7$HmoCfy^GQFt-&#@qe@|sl)!QjA zOV%P17IO*<2{ws0<+A0G2WZgPVUxa}a-=I!o)T`9r&UBDkHh40myUi$4fJu~nL9Hi z9MGt%WMz36HLJ^>370Y4Uck*kTlOipi3`L+fiV#9-t5@KxFcNxvN7_ItrpJka)MrV z^l&qL31FS&$v{Nu>7|=rdQ8zLE|h}|x+u^uC?f#gsgxzIWZT6Zyp6^!r}CutT#0=T zD|TxZ&djHqRh}=UGQAh)dZi|HU7{Y-K1PY9uO>(2V0p0tIWObK3b2jDqR|kX;+5US z>|H6A?P(IQI*8_$)4eznf1h}yG1s_oWC(~qGqj^i=#6y+2(%`8EN#k%rV8pC?6x|| z3k}%GoUFtmC4mXMTy8Bwib|ESm{LR+#h5`MofO*T0lDyLJ2OBus9oZ$;Ra|-ILSXI z>zS$W7JRIf22u;&o#MD>T|{_+=rTEhKzCiQ&vs9a>==Q0r8psV^Ne znk=@ZF{yiqZ1;EEJzp6B;%qS%c?rE>$&19Dse zPhiIzvmi)tUQ?jg;oY^dYd{wLyNSqv7sjYuBN!Ur5)4hh!(7|VW_&&&3YpBggx7LSxks~f%uzCpEsKwS`*Jl4PN9eo z4#t9^QL+b(beVe#h=0_wb%&>qVh>Jdqop;7l~AtBNfzq9ap#e%A_(jg`J_PO;*%gu z%=P@=t0byQTAjxtv_)SO z0@V2td=e8HHfGF0IyZF7(V?n^08^FXl$hgkzB;%z$3%P7JD^Pn6+ZN~mreXlb{d7Q z(cECFZ(0%7iYP=uXsR*I8H`r%Cz$`HEfPpHE09N>RKYqTa7BpdusmcgSH4d9x_^Y; z)~Hf*>b*Y)A4b31MCtaDSWZ0J%mp5e3G76TUd#27WPhkq;857s!k$#o(5w10@=oM! zF-f*ArqCk|MbC}n8PuxtYLOxL4RlZciJf#3`M#{a2p+~m$n4<)31+eruit&hXPawa zb=;Uzj4f|2{9@!tNnCiDK;!ua^j@h|71?dXf=YNpwUVEL{x#wjEYvpn9z?;T zOj8>fir-;iTiU`C0h?hRZFOSC*V|SVMevaAZ?{dM3*d(0)F%qT7TIr zSSh5fymI|?wM(^O-H}~j?|S5tBW-TC0~p@EGy#4=KTi`gu(rq$ZTWPCXSN4z0m^cc zvH?K&@3BOJD^4Cl+Nx$ASO3p??OCSixVj7oMgYT0QJ;r%JVvSj<%P_R%jFcxTwNd^)%0X)!b72AlVR_& zpD@KPlKU3jdobC=!8c5IM*`^@%2}hL<;dX+FDfpBgeS>hw2TQnJ!AuAYbOzrZT}gZ zs#Fy-&Zo`EjVHus%IE$dD>uTSJE>`yWMVN(YE>v#Hs_cMk9>q0cuxqiwd@G+sr3K& zM+iW5P7lly9uyN4vK4C<_!yZQl;$mRp6Ep2C^&;mPKH^0K8-BP^JdJ7c=d@L|AL`N zp#TIySGtk1ueB`biZecnS4||W?BX7%BN+WpS>wpcu>afo^_pNFF~cjm**S)Cyf@VL z)R6{`^=F!~wO`7U)*uM5<#KhlXQh4Lds10YPY>*3<;iZ=P1mmrR+Mrg#* zr{txJtS4`CpeQ}oEahg)p^7R>wZ1_qS*zYnq;jR;SfeoBa2lm>oyL|kO$W*JS@oYW_p277acrCUqx0mjoO~JWFtZ~gfq+RX%VvdG_;e z?^C69(=CRGkJ8R5e9fgS&Gm(KwykVA6xg#Lj^UtP8fDmZhTJhhY*uz3I@_UFLLDNs zY+!R@2AS)h`uHU+CiYZh|2(_{3Qsy zckAk^o81+A>`~2->6e*8FgMFW4}H_dt%b79LMy~rD_a6sis`0JKg_a~h4=8)N42sJ z5k!o>sj%v@cVUqS(1`)ml9=DzJ+x(zRHxfev^sz@1H^VRkz~h&ty@$C!3M!obQ%oJ z$?%>|P1T&2PShkp=(2eNJU~Z!fKs1jcmb!7fb;tFFT}w?73s6A@`5HTXp0i6?~f_gz{Zb#tv1o5Axlv;{qXEL-!)e-)bl?e6;`U#Toz(HsVP}`)9ggC0Q z-OLhwB2vsIi09_A_GHOmL)M`_ySOB%-*b+kJXB~WKl_aEbbvHNj<|!pBmIOxmn^1# ziXP4tJs{V$p0~{PM)x@BL|2MH*(I;E1*QN5iqQf(@qtQd~RM6RhoeA3n6@eOP72y}MlZ?02 zK@`;`x{@h{!)o^PRL5lnN=2GdM^F=zm=eUV^1UdP3bZPXuQZAD zuW*XjK@;*Kc#O#@G!1+BUr{aZUlLGR#srTH>wW#HBI;>MDJ6k*Rl0DDy>A5NX_Wi0 zUG&Lq^~h3P47&SVMY4=tEqV%3XsprR;o&V&n) z)Iv}S>Eco}o<^vsdy96s1*9qC%FP07pc*mvM^T`YM{!*4+N_PlkG5r!+5PbhcnZ_H z;lw)Wq9FLctNlF$t9JABZX%fmNqp)n0S!R|D$w#MtwyVNE+$G&?4z8&Bn6|QbaqmV zGMr<)0W}bl5tre`Jvn-1%ut$45J5}0sAmTQ{6jF4D&E%j9_9e1Mnp)WGZJpOAsJV3 z0eCK5983czYAg$pjz*7QS*)33m{5wEeK4jQCuU=qr6pREaxkoV<~5dkkl(^jKA0CF zM@;0&5oT1ehoe z_z9f&DQ}RfrASg`9nhV zZtPISXAiUPN~MgwGzyYj?6&b!QWo%~GW8?nepbxvqou4x5zyG&S~TH+)#bPPUZ{$_ zF(FminfG>*?2 z$&m&A-#ivgV6ILjcSAL6{?(&E=fSBXl65ouGZ=R-v;GAe-eoaj#w;<6s-@FxIhCN( zg%#&=McO74YN_pgN81rIB?(YUK2_REf@H$!Ff6ReXu*x6v1zzxA~Whm$+fZEPfaEh zL=a;9(bJn5>O>6c7GYENle^C`cSrjT#1u#|)}LZfmo*tf10|B-X%kNNbv^6;#vb;@ zUc@<}7yoM{&gL;aoZ_-MC6UIX1r=NdL*AHy;x{;~mJ%_E>OlGs>CdT#g~}t&b#LgJ zbexL&Aju%aDH1DzF#sO2I!A!G8o-~;qd6lel+||SZF=>O!$-&o^SphBDrqj1pW;Ge^&= zc%2byG^GQii?Lw|Aw;_f3GIlGe%F_}cl zHs&Bv72f1*uAXM;Oq=i-RqMayIBv$Q66whvlJSvue@fOM!LB z3+vCxbyWou>}d;>O~S|yhdS3+7}s#*+MpAXqJ1W1It=9)4M(y7`W<-4Tknv{`3hl3iMf>z^3&s{j)*#4wOk~?`818eiA%^?6bX>e3J(heSs{>c zK0KYaTt--RtH;HK5GJ?WFdsqlQjHqkh^Yy&lokK^VHyiKPFc}t=vVFtTCP6EHN6kz z_Yke}ygU88C{&fbsD^ueeB}1`;}@?)=>Ljxc4VnhlBZ_GmYN#PdX;Qbw@Q!OE7uh1 zP^0A!s@Is(N2FNrNbt~2fF342w;+37B(rU)B|K_h7i6SMVJtTd`3aKkXve6w!E*u0 zDGTP6h=!0_Xj&*+$a}~oh$Tfllh$!XkZ}ea(~CJG%p^f%y!2XA#T;qJw4+HV(uEK( zqYW*`ypAlx2^8ZVSuQl9+;ImGS!5LRm}#vjS#L1H9$CZ|AhHTMg%(i;6j22bNre<+ z$|QqJAj1Y>2MBS596^N`aEBP zh7pmF5>UyM2JAy630o4H8)k&0=u3!`jcP#(jIxmC&zzW^*!;Mgn!LN~xI6&!4gsJ7 z7(izz0VC1`+6qYoG)0>xje6uP=Ut;uSoMj2$*0P?T3#&jR!`lbJEVh1oV} zxHjK+Z?(0eb?aaMu3M!0+LiiJyEdhMZls@0zgJ}2TV%n!*X^~dU5mqS%eSPNEV*ju z+p8_YB_>?Gsj>4S$+e!HX(@Y8TVA%L|1ZS&vV2^hqF(VS8j&qLzZ>VY z@=Y|cWS&Tsyd`I&X|ju~qUvd~o2;(OEVhYO(REU2x=oc|CY!Ie%Vkq+s_(w*?3HEL z-6Gp%S1MHd?!Mb>zL|4sg*tV6qyL|O_q2VhMui_K(f8^fe@oglXwawq8XtZ28Z;@= z`i(#QtL+}^P@zZazkgTn=zskhpHlvX-y&U;B*>R^sTWMXRno4NBI~b{CQZ_S$D|d1Q*DNxr+JQ*7VaZC(6`o#;M} z*CW-+_UW7N({F5|i*;SSri*+2+s{bossbi}R8cWk1XbWG1p^qTv1)Um^w}LOUlH=r zNN4nl)irB-Z|+0_p9 zwc%^`i|ACqk^ys`1W_jJ%Ec%X@od~Rwi+#{mA8Kb-gpj~wag_N# z2*_@}DK4(E7LSZ4LrA#TU}o|h40#b81PA!mv5|vfdA7UGxsWn66BzmOHf)1I?6ula zC9Wz|Yd{&As9k_OSe$44@E>+L?W*uP)E3weiYP5MLtyE zNjG&Kk%gkd@c{|(y7XdjQA6qaflxi~YfrfQ9HAPmc?)f4x}zBcz~M06Il^HG&4x2^*uz??N#!3!_sqUZW6Kp($;2nsf+U^cZL`rs^LJ5br z!hJF5MJJeuo2DQS+!kME`t^8JH)0DKr5bW8a!ldv1w~H8koZ_jDvP+wisCgzu^7o@ zD379=ltwOkc*cK}A_@u>8XCj+Ck3KVW5W60OQBfT1ZwaYMP;%=6Or5?mbAEcasz5< z?L&Jope5+?c0Y)XY6R`K)0ScvGWOo4XOwmeQ7yhd$wHX-H7@)!bmei%!yWM1$^dWhk{RPl9pMRFq1@D!mYTj47o1vaXW4B~a^Bl$=SPX5m9NTQYZ* zg*>ptD@N-8dkmd%C_}I7!^p3c#@8$ldW#78nW<<7%=<#3rj=;BFBCXjuXU$*gbB5A zb$a1Nt*uC9{NvnSOpqvMLr&U(7Yu}^*@1#j9JQL9+7;b-iNj8^cfXk&p~-Dk5uyqO z{>vZ@;6c0#>Vp??q{4E>j!61Ao}Q%yj2EF;k1O_q^o062+15Hvo1dfCGlY`LJ|y_EV$FhQ*r^v_lfCu zHYxtMVc=PSM69c63AOr|r$8nw*Wbd*#0B|KvNN$Gk{9jCdSSiEb+IPAVpCnF+AD>l zJlvR7i=tyPrkK08vnX|=&l*=JK2$xQguly&@>C9KSm!0nH9ykG&&%}*>!pW#zdG_j zfks&!^KuG$bFvC=O3Er&imXTrbNyf1p)qZ1Dnsl?275ko$Wmce6}_^PK^lO8t2w2; zRO;uaK@f%HzmJ18prNQr96u`FvAB3Fxx`+dxKK-GuZ@1<2#T8ju#=t(*`DfE&kW$Dc7OFku3sk7Ij z_Yju^a0f%x-!r_aUkp?>7rIpEG7ojrYIiPwI!WNRd#SCX*NJH+A-M#;{DzJozIIIF z+L$u^B6#k!fmQ{ZPx@F+0$2H@f_MuE%adS?rxFm(itP5Jnw4dQzce_UhH9lJ`BUV2yUemdR_l!~*-yV}GJXQ=o#&)!M96~9% zO0|amX>&pxgwrWc43kA>v5uHkxawIRA)f^Z@eL3dxpI}oc{|0dRFFb*5Tudqq;1+w zZzW+LYlI%owIQ)9nhk|fNM?%O`J#3lP z=739RupTQllTw~ray%lV>zm8!4k##`tIVX!2;DYQLv5R1 zEJ#B+jv;XgeNUA z8AkBFrTF@pwUr^OFe{A-v5ldq)ViV!z9bLB}C<>D_r8;%T(wsVAUO` z6}XKozE7<<&>?7kWjjrF%5rB3H+)7wm16&g`tx;IG>x+IZ5~HN>NI_BdXTJ#!lVX7 zkH+7a1)m%u%w35lmAo?qAg=#(~wZPBo%}h3Ot}e7UMRda3>G#U6G3Ydz~OKPE)bu&l_rA_mk{ zTl4csp07#S5DJ_&QNu$j`9?w~H5QwatNbIqyJgL$B6zrxeHid5wAMM&v%W-x1;&{P zCVkWAyBwi6{VKi7X-*>iBv9R}p;F|DGEDfWu@cl2^k#}ixnUVg!9pR+9Y%uMG^dS3rG_Y+gZ!3X|}Lcdtc&0FBLLwYB30nkdXW3 z@7`Q_NF)+nm0U6sEK`9aCf#Zcl0_Pu1bJcC!lF}hHPcbmq zqd`}@F%V@iq_kEmtZPm*7QU!pSlFVaje%o=#?|#XS!+a-^1@ZLV&eqlX}=RHYTI$u z#u+h{0Ki`)a$`>LKqOFRmHbxHsLm9@tTojsvV}gzfN~}l9A1hCXe+7DrN$aVNH?PY zF%{50jKI9CX0q(;HDkQqfH|B(IAuGa#rulxrlA2@;z3e@A|hMaY?50wv7yc*PN`|| zOcD&s8; za^#Ip^}>vFTm96WB^pVma|x)#H9Zl_St2)U?)7@(%lEjYkFi6z`cZO99CsTQsW?OGe`1VLZS=EeZ<8MwFWB-r-SR*15-`(W_}nk_ySC4sm&IOJESMKN*1Os(3Bov z#xXns=qmS(cKB5l>JXU@wvj*hZuBe&cQLZME)pdn%IGEIHF*DG3>);K1;xPG&l%;^ zX+Bj7pH0;I>Gu|x9B4r+c$jF2!Pb?cy-hSp%0~P!gI!Zs-4ZdLsYa7Gi04nCVB3d^ zQSJ~c zn2JgjoXSGl8dCYtRnu6W+P4-PEF=y#b##X=fw+(Nb)dG~cg}_1`3g1FWN6@^f>qeBz&9dye6>RpLdak$j z$iZL`qP&|J^-WophJ=8O)!#5Pe6di~-R>)TN<59p5{QC9GYI_cRHHEuS2rHWfrC1h zKAjM8n~4N@55ko8U4dN1b-o@c&{|mLda~lsolef5>gJ>2i%#eU3fFg4zlIW zE+Bn)C2*lq?XEuMkxHV zpGorpDcu8=YNaB01%tPK%2Jn+Yd=IP!yqhLY*GlMApoN$NmP4Co2itTSrKK&`IQLa zypbJlZ+3DIwHH9Bo~DovoEL9bfRKC}5i-U!|BTHvScJQ$w9BO7TMHVgYCvLKq#~Mm z+NL56!)aC6NFfZ(lLrtpEj^tRwH@n;R9b}~ml5?^c#sdorB=41ZKA~^?ws-%T%Ndr z8Vd@=67!Jh&9U(z8C}v*scm=k25BkN-{@kzZ3(*WP5m9=aSYob_sj0xSzAP(g?eM1ZtVuCQTsI8YaIXeV&akyps-IBji~ zSAlRPN;bJeR^5IQaTNhVYyyC?#2bBG6eXu^dqiQflD#YhtzS^+Sk4fXO}^5y#KwFU zq;GA7Qw=dYnz?@HV6XMecdZ-AKwgp#Si_K{Tz)1U8S0WR&+wt5T)*n*C@yz;6T8

zB)i5Wz+wI}Q6;q~w!O{6<08F<9cmjCAJzplF%M=M+NjQJYvOI@|CCjxd}ywWAJ#HL zwVQ7lN#~-mrecJm=hxb#X03dRySpKRaS7*?Wn38105+93zjJW5d8&DNVltF)ryeQr zjH>See(ekV)coS6Q+Hh(`crFV%Q3I@Zm@pTBF&knliO}t8b6CeIBorL#@s?i(ug+9 zDDlfV2_4wIIl@DDWspfpZ+#_muw$05w;PhOUCr^G={`fFmXl{ch6P)GaP7OSze zN}}DDbTPkD?zOA55J+xt$MHeXROG zS~^DviA$+ABvtB~=7I~g9(3%{AdtqX+un(a6p2gxv}{uE5WmVR4@VQu?UTTg@!_{; zGN!NacgQt~D^yC-gBVK`Bd$qGL)HHqvV8|Bp}5SE1fIOs5PQi(31I04gu9OOfRLOK zmewhB$`X3d1(+I>`S4(}NpmMh6{s{QCbbwY=AL*$`U6cQn70;44G5~vR8qeQ&mnfa z;@|2;84ZFL>s*tz2J-IoD*(1o2lsJBAup4?BJ)A9)08~YISFN<^?4Yb@pX`Cbsy{| zwKE!t56R*WeRAH$@zlElk50r$B4-Tkq18-x@~4`-smh>$z-zk7-hZU!L<(_35;7)Y zB)f;(1i;&65(6o?LSd_G9Bm!b3c?eiKyevOwLZ&Df^ygBhNMPthcZD~!Y%Z+4o`I;p$m;jH+ot?X#6;nWUR zg=)|gg-(_(*>$&uWg)0nIc>-_;33;FEb3T%zLREsp9m0NB5mrt}|vXvb$SODcI63EU!Bqdf^MGyRGnIW5bK?!;%^@m)s24@wpIJ zqp!RqEfuQ~&1SRo{^l2NNi}4B{1T%<1$@v z;|S86myy@UR^XhqNUq_Tei`{hiH1k_3g_`%G&Ejai>a#D5PC=i9L&jN5XBpg|#mwLl0_lBCQPQ znS}u)f=8ZM!A8lcL(_7>5QO-gsJzrpI0(hU!Eo6d+W1on>}Xz-m9vRupE2^abgC86 zkCQ}~G4x4YT5Pv%XLeS@vp0(mmYkEXBdPPawOX>7k3*Jr_iJ9xe?xC5+-Nd1A6RNL z7?ZEU$T`j|tBQrEWzI5Ib|Dd|x2+V!mlx7(6$n8lOJa}lM!C^)lA|)hc24WF7xbV3-0g;eG91Miv2$3hd2qlLM7)k_t*rOx= zM0J>=dfjrM;J{d{oEDDv=gPLvxw?ZDju(iRWI{I^t$%k~V~(g-kgae3_$TjvWvN3f zFhY-ujh|Fi+U0cdBMuG=aTy&5qfNSl2^KgEAV5$&)~Y3J(45pnB|Q<7E>cc#Hwy!S z_^3i9TWckP2&+th%<0&cJeXQu_%f3#%X}grjjN#?vplHekKWCBA|a8|B}EMh%9;yy zXrw69FUO;h|4X`njBfXqKQG?_5U6a)2#gYx>k7>1Q#|VcGxh)YM+gs}O#BA?GyG=! zru_8%T>aGMDqpk!ABXT6TYT^W8OBH7>NH;}P>LEI3!^aGyebd>q{e&V?51=D)tIO& z76DXd__`O)73K`Wg>cba94V4Z9z60GQy9~jTbmsl2`^-(0vQqAEBj2Q~9HDw8)9 zl9AUWys>t6@trX(q{i#knvJ?o(XrGc5KG;HCoS#eqLMD%s*{qswkQu|4$z^71!4yB z03Db}66SECrO0=d28}IH`xl82OfI)%%UD37^br_dGe|oE*&t0Huo0lT+X=Adz(A5f zgQ4eOPw43IxQ-K681!i9Oc$R6=U5VSJnwK+*UoKZa;GqQa}R=@@t?=j7H^wv=49I# zx*_8$1_I#y8g=?!u4JwxaMQUsnq2tr8!4fm7=V1RV?|aLjo#Z;Q%SK`rJPA;7vVtD zlu)GdsE|}a0@=*%4S&ONa9ehH6zEWu@i!^I=@icnA`TU~O>|rBs4QIa1j5yKsOVg0 zx93P@3@k3!I{hYGmT)zx;voIHMafIYuEn{pm=j9TVue_hgQ;p>w?MX-22i`x0lNOc zVZ(S({+J;vLAL^;A|dV#Y{pPIXx0^cz$(J`n?%Iqxp(L;?li_CSydEoxT{Ow38A$A zOB?L@Q7vqC29u2yagfS9#a)6Vr*n5B?glTbYqn*q?-xI!-Hfx$D|ShOpp@e#xJMY^ z2$t$%s!0}w?ZF_3?Ds;|a5kF40y#LGV-5vN@+S#-bae^m zwdw_YDDq^*=8+i_0x(ie*xzXY3XNVJ9aa6H#jDnlaL-jk6%$lr#P0xpjd_j zvU?UJ3U#y4PW+eq$z1b7m=>q;6|^4$UDLT|+4*Y~+=6R`ahNBk^OW5BEa-+spD83MeHG}CzZ=kqNRtkD3J^v-_dZ^%r%lzSwb>x>bU0EE6uw%-vum)*guDcp zF`=c_#vLuC&=R;g%7OiMwF$en|Gaqi83Z6m4!Lw&mTNjYgIvAwICX2)2$Ezw3PwR* z!=^69BuqCgA{T-$=CQb)YNE~cnXV#k^T-l)q_T@6ph?G@4>|j}&u;p3Q6!{a6^F35Dafvy*)y|BDcKWyC`JiEOsecLBb@RX1{%r)wK?aV@_Y`pm~q7z z@AG^78`)FIn6xlb)*?=HQEvNi<{4x)AQ}?V@@bI5wTF{=tf*ii<|UOH zx0RMKvdnGgNj4!aHWw{EvV5aw&Dy8nHMc|B04n)sNjWp%zBNS z(Lj?SpNJ%jiTFj6PKAPIssULCB}}d>BAQu-6)yAw0Bl)8BtxSK=kst7E6$R7DkOx1 z@Wv`FYy9M-LdLv^S}h`_!`C3~-1f2SMO4BU%py3vT6Q2b zX!&{dqii2d67ZD*v!#wHW$|>WWd5X^ zb)%|51IF}E4>T~aspDBC(ot9P^qUn#h+d#>8?5YF#zS1^u5^i~T$YX z!WAkB5l!iBvS;jW9Q0I{5ZM?O1ZN})nMI)1kEVKkT#BnZ-J0sgo1--{`NFY|p7^T; zRS%I|#RRpWlN&8#9;i`i>4^YD;&J5}r`$b)T0*PH`!*0y_~eczkmZxDeuc7s2cFD6 zPwZAA&NF%=RgxCA8YvqhS1Z(%TlD(ymai(>;YGCgDU>F(oG38%nF~gEkajhwBnH~e zxJjenc}3`(NLg4qu^H_D-C0H=HF*1})zfgVq7Bs(^dM)n&l&dvzu(X|g5!F=m6;W+ zP8Pk5F|Cgg>5}y)kflvA4h>MTWN(FbYfK!@cT@UC=3E`I^EsacFNg6%z{|PhqTpfr zD^*^JHL2`t@-c-vV`C`&9?E>8o&88rgyBMmZ9MlY$)3+v42Ake+=e@g-4(%kKCx*n z70yuz_AyVQdbti^MSe*$@>5M1ZwnQrQwyJ1&l%ZCWkah?LhCvUu)5O3wpI3^UDp*~ zY~OWMRJFK)lr-DeQwkKPs*^uu6OCRcC1i)Qb^x{$+u62GB+f9Xuj{ zoOKlq&jePcYIatOSU*D=){1JEoL=D1c3SAI6#`K? z;T1yc%odUt_Lm(9l~vrxMO7%sSGn#MV7!MB+le~vLd0y8r%x)|UF1Xo+j5w8i7SOF z_zOdWv{RO%7M3Gp-P;auy9~_G!Cwg5|n5cUj3^)}F zLta7$vv6Mz5!0EB>4ohiq+v=cHlLJ@3}$G>N*mEWxqSOUN+zVF4Oj1}ExdfoPyN>T zsZrEJE0%d=gP2H>f^>rf922|bqSNu{isF?-?g#iv^w3IpukT8RV!V@?e~|SdJT|KZ z13aDDL)h7bL@MU4Y*R`nTeE`{wJm~f{wYLzj67Gg=*47?9F>9)UGhLLeSJ>kdY?(f zem9FdRt-9|s8-SIBNp)9D~u%mruzXdh{jU-D8>+_Ze3fkIAaY0sL_%+i|Z!>v|<5K zNQ~O_$dwt{7X}X`M^eNp`wG}1w@9{qkdhF2(Pu5HY=q+yxh)FgL%gdoDJCQk*03a! zb}}g_1+2@pEFw-E!A{Upu^1*FWK$fF5ZKRRmFKgR!V8f%8KjG~iEr^~K zYEJ|?L`N51^9s@df8Xsv%gWp8Ld>9hEb96es3bl@XqzIBw2?q7&gKjr(XR53l=jiS z)g#Nwr;n%Ie0_<4J0ui{MvvcS99g$|pHhaIYgOoztaCgz3|F zK}6&}7WdIU2p^N-!-9jQ{rkqou`J4>E=TJs@yfzyGJ<)kF>lk!*#3>Umd|yHZwQu= zX}n^)FJ=-g4xi}Lq3ut4`S}^qt*(?#FD9xwh@c+kjS!yV0sSm>OL1cpUlTSTe|atA z(RYjOP3WBoG2BX8aQo?n?c3IoHIq2t^7n?fCzZ@jf~(6B*=%!Ts?^Alt4WbR}=0o^CU`WnXzUgT)#D=kz41%2x#P~qDDDj#5zbh z{qb^`)Mr48I4lB+GO*+v-V7ErQyPOml{9We6ebsP>FM&(yT^wt;Lr=IKk3K2-%FP@oOS*qt{CNZF^}gtpL9%{`%k zziii-^L910W`|fvC=pW4i9b?Rkbbx;p)8bB{w>*QC@7A+a5kqPhxXN|VtA#;ket3-*slT?$KfL3D8a#xOve-N4e zSg^xl(`Fgc(JPPAA<#xoeYaVP`C*qdInx_SWnD@YqvKO6JkG(K>u0U(BJzvNd`2Tq zPz7SaBEbw{9!cvfSxJsjpxnwO#vz+u_lxJ0vi{Yb%x&UZDZi7%h6UuqBkJ6=eDK?~ zUQT|N^uU<9RiF)|cE|(=VcXrZ1YYsdTNWb*k5*MI%Vmm=6^@9MDW};MZv>+F08~J$ zzuBF>SPmRC`eMS!jb{ps0ed^9@ysO~!BUIOZc;u9 zzXzjsyCi$Is-%i?#NxPX7UTRMqO?M%4-beD%50wNn@5HfN2gER+zWq8M-~euE3=&3 z3V^P0fT&EJyz{-*Q`LexxAnv$e* z?)n>Y(@_a&o&?$ztfUtUGd+heRF7h~7u=YtQ{^E5oGHczUE`Ir)A+RrF?TQ)Qliy5 zlsIGhoE$?DUMn^Oimq2l2rXovUI1r># zv~5IOsjhk}K_2oT7-Z@-!rDel_0aMsXe-BiwlWWuL;BZ||L#%TEs#lxsTI;Pl*}&D ztFkL)%w<_9nmp^ajmfWZ2;SuQ^5<07%eM-lMXkok5N}q_L{1fLKK}}NTa3Fe;wEXe zs0z9ntz^jxtNJ30Q$VA>Yz07CHx|tSvx)&$c^3nG)yzn4Vx3Ijw8=o*0pC@;+)M5) z`p4S0B32`GT9@55>txDSMlNE>QnCZ2zsXMr9xZoH-sqnFyS`B`VjOhJNm1rZ*|P@U zH_W-D9j11#U6{6*w(xye^%m1w-_nK(F@H{kLSW@1F0TV3c}OzLLVp}#1;C9LiB}bo z!`5c=sE&FYz_9=C__~z3L-j2tRFSKwLkvMPo;F2&r_&!t=3F3ME)o=)Ru~6G4oxlU z+Vz}|NVCqm)hTGqOKg)SDPLNUzGE@RoNUYdQS2xL!UYT||K0LT@H86Ce*Q|9bOsx! z=4|D}0<0iT_ED~Rp`I`SNekVfj%e4^%%oC4-wcDn4 zsGPE_3b?)|oWzIv@}~TFi<`~r&EmJOqfo%aS7A~8M%~hT{JGL~S_DFw0JUhn&(&_s zhcy0FT=?=9K8Kru6i)iT8uCRm*yIS(rNXm5yN3lsPf#t-!_{d;RBB8uI4E^v&t#M)(L`4%A!NYn>pi^nPdjqZsnhni0;jY<1SWR!%cA zFDci`^3bX+D)zGV+Syas4ybE4I|Uf-agy$#%=el2UnGgMVMAnDQ}{WgzUa3>7$YB)p` zQ3#N*nR47d#h}%WGN%JGUa!Q&9K^MMtgJ0}A}%*kh13k$wPf@5NT~c~t-qSJ@mV3% z`X=%66FrnKXMVXIl71{CLfuh;34nJ^_WE_1keF;o2t*wnSC^XaCRc22)UlIK zF0n6`d#Ntk9IyKMMSCRw?p#qVHIU<4vz&d0bi@w{yFQ|JR!T$i_^~C$9&uMhk1J++ zP5;QTKb`r@)o!GI;M!|1RQO7>-KX-c~_jnGTiJ5HcgAI8Y<7vEKw`ezaftz+v(P&=<} zW!p87ud?FO3PVot=S;&shs`H-6qjU$6B80r4>^e%;wE(o6S&tPi?UX_qidK@=IUxf ztdjC}c}wWSg!CXLTyWOYDvO}6nlegXbNAoZ+LNu(?s16mK1vJ3Ed_y;AcmQmGsL)% zH{Ru0T0^smMDSFO4<#>4)pgy^?OXhig7AWMr;7L%q=qbO7_pxtDi~7GR$_H$ zEuZ>40lIc2WHXT%#h~Y0qAxC+DW`-3JSKdtEt(sFdC9eH#blDX zW<<2FrTmM-RX*!Cb^XfYhLS+J#Av2?IU`s~p(=44WF6;`TEMDHw!v&H4Ay5_lxBpD zaBwKO3W9~9ogxy(ZHp6p*b%d=kF23eTg&Ld4a7)dYrfW@QxEE&=7)M^b*NzILl!AI zu1!B&xns%}(?nAj^gAPwU4$Qw&5{E6XOClQK+T^d)BNV3LmU?H_p5>sMRIRfw$1S> zqMM<*fBs^I#i0HlnfHChMk0;hA9ep4-s4c2!k70*VSVPX&o11m-7Y=gQx)ek1#n0g zg@Y*xfm6*xnPV8XZp(xlkBq6YA7wa!6=4(BB~O+5RfZ_e)|UndFSHrhZbg_&JT52Q0;9c@xy^depeU z#CrwWE&vuH1-X=HcfGj^k!s>#ZA8Tey8=TUX#c=?NS*b5CVva5o0jbfGVC912!Rm$ zPWwV1AjAZ57d*=$B4pS!sEeRfC^N{C9Ko+*5-~8R{%!MW$Bh$_eNhn`)vzz>*HA$5 z^!r+YW?(v(+nuI<$vA5ZgV>xJhjxtO@j0;KaW9$Ft}B*FR^{DR@`^ma)kvpik}q&O z$K0{=8q`fRP-m@;YNnR_y(u(Mr)=0HE4>Jd6iJtXXA?>qnT|X}2_;Mwa)g+(lT311 zSG0z)b`cF@TZ<;sIfl4^9~Bz;A#?CDP~l?B0+SW6@P?W%Kt$z#vxJ(VFxys9YlH|V zf=+SDSsQO0hu<-bu*DZo#*%`{tcz*lu;U}#Hw5^1h}okgR)s?U&5nA+Bi<&FalGF_ zMZJL*w(ZbQ>CUSnUFcdBWr-4gix%0V_Q;<$zn@f~@elfQEqk+2Tm?ZqWK}V>oaqLU ztlTV$!~2s)L4!=6Nu;AA*}5vf5wVG{3izg@DSYO+|T`y8!=QT-!timXMaS^_<- zB-Agw3n>8FLW`lHC{t3cCs^O5#BD}%TowJzMV;pTO|dNz{cBqCnDaZ#q$Ys#LjPe- zBAO2aATd%P0JPhAyBqL`RaYF`!@NZ0|1VE0QCvOX5pdc#fB@}BF3L>izw1vrW998*4 zIIIP0PE8}O`M*zs8dXa%r+MI(OM>;8#=vPq*-T4>9o&*(V7Mxztlw{y*}gV>a6O3C zUFMe>A>*5>$_2eqrIp3*+lZA@*6>r&DIj3KqzyvA{$K4i(om&^z{pbDBDPl4oo1N8 zGG^|E-`ZooX6&MpSHHuSle;#SMvsV{x?M6Hp%!8j-h!gR3qh;8^4g|jA%uZ3^ z%yoP@u2PTkaa+2b{eL5;Bw4}xuxHXL@@*(0J)JvkB}pI~kYR{s4eSNykDgZCFNBG|RBBR&blx<+JI=|M*fQdP!4jdnyKz5G zS;Ij#US^jmUU3Aos@`xNO zA;VwZ-FP=pgo;VZic^)YOBFStob4$FTJT>?$Hik4waGh9Y$6r(u5Bw+K@*bjid5wB zViGiv_o+r58!0ZiM+nB&ScfhnVY@sz@}NL_Z_v0_sSP7`kAp=`=E^Ug9Q@|B@YdWD zzuj34>zt+q09>sJ?%a3^@Pj<%-2{9u4qsttTh!9wu15h(z`2#Mlvs@%JdRycO?h#t~UQFN?8pZSaO+UHKKX4g!;-GyNQYZ z;>>ipltSFJ<@DthYgQ4awpXN8BwkwYDBCa_bop5LPnAq6n2#?Y+)g@ax1?I56rv=| znpZ&4^+=H^OB0~&Fhs#EpefVfRMnwacBS=%kdy@ME-^@iY&5ZKNnl(^w+tvz=8j-b zY^oe2ou>!U3#~^Q%LCqE{5ct`K{%_QCP247358GFF8+;ERYX#qgqMu7WtU3f?M=Gb z0G2Y)X+okwT8zbs>{QblT$&L;z9#4@qo}IZHLeirz1-5krVM{EiWcf81^NLp)n-+} zTRB!fX`}nX=0$JnTT$p_HG9~Bjci0QrH%wWh7(yuAGUD_o2XIY2syhSWiTmM;f!+# zL&#+5ej=H@Kct0$S%~=EnFhdG^4c@Tae;_%rRCXwVWbF83YmcvMU!* ziWQBg7GMf_Jh-?n5jQC7iE3SEi|NsSOc|h0@P*WrmmY2l9LWy;9Fg1|0=Bns?Yl!G zAokQEO*9tMs7EPN$YT}|Pa@EK?M+g$kPWw*#jr;`sIs5JVXZp+fZ00D&uSRp%9T9a; zSl(EHy^N{kip;E_w49HEuFW}Ij@U?ABY6f%{dURMtstq|?qnq`RV1eyS^@ci0Qic-cir^6qBu#`5`-_4gz%yxs09JxaRGD?W^#;GQ=t`M z2t6|CJ>{k0khtwshPiHWs?=g@zt7F}=M($uE;n7~zOzLk0^;1ET=R<&gd&@C@S9fy zKXUQXL_Nhu4q=1RJhHhdigc+IB=odK-bDcvv2<nnGA%D6DHFzwDiO^6woR#mQ;P`%(X`8^K~?66@hGR#L^H1 zh;v7`+Eq*}f^4MoB3{;!Is`T$V%C%_gau~$lT^Edg)BhvP$DO+>lzq83SV2@W0!~J8oN7uvlN~V<%qwLo#Ddv55_bp;ZFTyMVNpVF|Fvcth zA=|4gtu{%%*rI9r83~3F>7pz^j7tFIR#*hY0SK>UMt<0Q$j*a9f5%7Rn$?2s+k$I? z7h^#b?9?Jd<0V^VRO-y5Kx+2r&*UOFGcin#weBvQgNeWC8D1-zL8|JE%h2;%LZZkQ zx$@>-I zwv_^a4GRSW0nQ4IMNslUMBSI1Pto_y{t|hb5&)dn%%+Odbnr;(|9mH6u!sU%WO`+= zskVf2z{JTjRg=kbXllKG-y%z~A1V7mkHLR-HE&Gfw*)5*zs->8FQSolCj?+Y77g|m z2B%fDyj&LY?QA1QuzQQ(=@em1N(Gt)vU_pUp~jS3wr3%;DBIOOxNwjZmL}H4&_pP{ z31HJ9WYomMi}f@ND!>LhN|u*CZpOL@XXnrxeH0TMDiq#*)Lhb z(j*DJ7m6w%UK;w9yKAR9RR-YtO1PiUJ}m1VDuji_6Dh=aMTpTPX;>(lhU!jM`c2#V zgr}Gj^)MWkgiuWFh*KOes3FK!ZW=?AxzqDjRjU7@uLyZ$S%G2_u6Pt^MlfWBIMAU= zMI1u0MM$KO9ANGvhhV2^_!0D=(?d>_ueF}ECQ^P}0b0e!SY|tqXX7`u2cnr=Pr^Ax zyeu?${r%bpcvgZCX%tX=2~nkji&5@|;>HURIRbDWgsH0{89UKv&NZ`Y`sR0pjuKJh zlB#Q-mOqmnYV!$k9MsYY*wAXE;6sc|2%>5ku-FoffFYU)lZ*)gg@FwaioGh-_+pgB z@w&;P-dV76<~;?KEGy0=BG`@Hvay%;@~)F(cr4tRT{mm!+NsQrC5b5vc?o7o4MSA( z?_Vv@+AWV|C4x#{F5)84_B`dgZVB?GX=0g1cCf%uARG|vA$*M7LZ>^b#%ni~W-Q8+ zo;be7ganKd6w%r%b&o*@%4gcy2TUfnzIf?`e3m^(W_zUXscJOpdGbfi8RLD{NKM6f zzqZuWM#$PV^XwlmM6;$d@oCnRbdr+oYA29M4~XYKH{;RPL5jymtMG7w$yo;wDTNKy z1qceudMQsxrYXHQWH>M=#U|L_3Nc74Iii^l2rh~&V6&$x(OEF6%53M)5>nNgLUZ*+ktJh^ppGK6iOA#>M{Ptn z7*lQt3J67s*vAN|ke6dSN^i4-C>U^>5TJ*4NAyVvb)%y(5apP)RjWKfp+iS4SeE1e z_(up6%T5BZ0;~e10-yqw0*?ZQ0)6HzhOG)UpO{h9&1T?$fbL9kV}fo>kSAWKoGuEcKPlI(K=m2Lz>cD{6(h3S!Y@ zMFD8CvciaHr}gmfG|jksZeVf~*cps#R*b@1urPL)#V39> z?2ww7Ee2A6gm*lgaq&z>|mkxeSgO>qh)Jw#WTs}LuIsIapZ z^+mAh76?1$$dGX=2O(J+xo-}(mAvm>Q`|3iV5gL!g0eT}50yBTAR}|0%)oo>Da;E3?!hQkALF9i&VSgc|1d``S z`VZa>Cm}Z57WgW;jn1Y*0aCMbCmd+_dGCaSbIsovs%rexy(jH0h#=bD6*ynu3QX%*yp!Y21 zi`=mqD&onNEnTjgNr$7bQaoKF)oq*UQXJ}A2*aUpBm@q{i1B>$F_}#+CY2SW<&n{d zh4g=?apx$OXBl(_*kp;C1x;NAC6xl(@YcMl+bM8FMj9$SYHUK@+JfqC!@K$>#h#k3 z>$a*>!2ev!#D?iGjM!oruT$9lk|R_ojtw}Qav{t#ITWsaAabPwc7Q!3%6`LA&XK7P z``puzGQh17wu1Ms$iZCRq#PJc==9;d!NsE7p#M^v3`MQ3O{6_ZS$j zI&d5Xfh#gORQC6N!xOUO6A_9Aq41U4atznjGOF)gdnq#|U_^>hAcYYPq{h1wDvwDG z$gSB4Kezv?_h72RI4UDB4A^=kDYBeUjklfZRL&+Y=7kWaou-Q~FX?SL$O&JsQQb>q ztBUHrxgEH6emhtzSRfaokOYv)UNRKSC2~NsMW7Rfizl#trMZHZ5c_&V9unb8<>!bTTwvtbX#@{kgcL z@p%jVR8dWIe-Om?8U+Fa7eb9PN;#FqHMOPKW%#&WBXTw$`+j@l29u2G(L6mDvdDm@ zul~r>O5=LXHkFlevZ}q6a<9LfI!~dhc;s}|g-Zt?#0ynHGLw~XtaOwYqgVWj^dvM7 zRRzvau3Ym{S^YIsxOE7;>8=)?r-6ida4RU$k>AsOF*#n8tn>I06A2LZ5*ml2A?KOC3=_ zG7iI27h1{pS-ohM*sXeGEHx5}k|QIxs@Hp4rbELT_Ar2mOD>p4F>h<1e6G^uHYq6# z-H2{#D)X3T9-JrOFk$4m42xlmj-k()0OX?6Y7@&ddq=EcC*>qL$OX%S-I5|^)dYK6 zOO%+3k;be?jI4wq2v`-?fx;&?C30N`M2qrU$m@lFyO!xIj^ehkJ9D(!OYS$ju?ZwN z_o*07FpfVLqVzb)9^FFi20rMMr;zY;dK1gmaiEX(hgFoYz3Zdku4N^vknm~LtA<}? zpKA>+dJ;P+Y#@#!D4s>PZ`rTCvY>oEeulz*Usu%d%-py}erE!K5}MUJxmRQ4DOs%5 zUOr8UAq9*0?n|KFC!0E|>u_NkO9~#b7v5e1Q;)$yD@GG{XvNGO2HoIAA^?*oa4qCt zVF7_N8S_>4sj+}<()i}CYQH(l8kf-n(~E_3Gdn=={U~w>S4oya)Ie(=rU_{5le4D* zu$-g#fYG*2ngT*0O>h4$Gi2q4E!`&*8edl#y^(t;iL0(qqb6#YBaUY@9m>?Equ==1 zLDok_3WM;fLSsLF;|LTz>YCHT@&3zhlepe_9KzXj1e!m^vCg&^5m6nrqi3QP`cw_{ zrB1(WgzpQYR5XVJjrw1UI}QjgMT50{wGTgAWEw1&^XQC9wRu~8xxG~prf1^ z?{qrKFhvZbsHnK>2)DRYh*DO6BN_D?pR;*}4C2I{F3A^5=BpL(-h9bhx|KMj;|MujD!VU>>itKp76qXlGu4-WuQJdri z_5~V3h}Xjjg8+O;sP%@o6Y`lTm0c+-_7&x+N`mD$r2l4G?vE<4z>w$CpIymN_SE-c zUr=yv+4?8n&}#-0VbGO575kMVB3Ez(6e6mSa7vhsj`*1-O+$2ZiVkY}p{nQp>0ojUWF@Bq9l+4E)xSa1`D92+@x3Q?l67ekVE$!egoCNo+;D z#T4KdvMUl1w#>$#708u|dQJz0W(6z{>zk*~QnJd zVEI>`ouKr)4TOvq_xv>fn;5Zai@^jx{sIerdF2ryr?ZnZ`W7inLZ4h|U^q5IRK z`dXAj9DWPooh)0zZJ7J~DV5Mf3qwf|l}nR1d+FS?KU^aT6zI@dlq|I@HY?}8OE_*q zFs5)(_pL~kYTq6{DLCjL2+gfFdd)KlVHXV{?7n9yF&Lwj^}S;qkF+E>1VgbYjD{V? zRa<;IIzT{dSHf*QtB5IHWkF?2EDy1FmOqu+J^ZZkg9fERDit<{L>Tgm828w0CDpWL--2HKqvACje$}ArO zZ3H+|IW~S@KBi83oR;EeBM|ZlowOM%;+Lj*84Ltr!{CM@oaWUma=RuI0U(WwD^8SL z8)3A&@1*cha>tzN*2cWcJPw}?j+0Jy?fzC6ONa9KnfBT-PS%xs-}-8b5=j*ue6Q`V zUeZE@wTrg8bfGE2Do}jsxErcR#!CFy$@yS$0vjC@8!Kg+deq!)s6tIC2^B`!5(ov3 zA+Zwc&d&%G5O8U@uT%*M7$F)UfZ_)@h!nABn6W_suq451*EqH*&vTJ%T=|rL%#~!R zlRHiK>3a6A3=l=MEF@jF){;+3%{)nFkfF{B9sV|a>ad)Q1~CF6T*Dk9lA%Vej1&=g zoI)l;SR&>?Lh`DQhYSjQFJ2}^!1M`~m+Lm+@+QXC=jSKl+h;S1hgy@|qOlRoL$IY7 z#3@{d5MfSYEhW9?Jkkj?!pP70VL@OE_vR-@{868FMFz}{8;FL1kbp)E!y5uJYt}={QLS^@!P?|>3i4E#lPQTwKdttqwfL8;vi*2$ z3sdT2p_s$8H!%iK%TlR{Fp*z`Zf!D3c!t)cNirHZ@k^W&&0vFEq&xD$)y>Q+ZgQq!D*5i*~t!-_hU5nQfShZhAXD4j8a5N9&l!V?4`0#ik8 z8XpW&Ac;)mSYD`%tXsYz{peCU+#6N7_Y+& zZ2(dA07(KI0@x;1w0;DO6~b4;rFHi_o3PIrkzXEUFzQI?UbO{`F^o*j6k^BdKWqnC(IaUyPLk7)7WO!nO}vC9Bjd&87SDqB~ zJw^;J|M;j8mp7V*maL!%S*;=)R8RtkR&lGi`0*;dXnDFKi*rZuQZMHz4~BIYmBGmkCu zRkj*GB-InDr(jSieyZZKzQ|52|CZB7WG))8%w-ikLU!YlRB}FUu_Y<>F6a<30(VW2 z$*c_ofPY0YMACJ_I>;;n_!c~igy>68?@ApGJs9coSb0s%{=$}MS+D7`m62YZLiF2Ur@Ue<23xOXHzHg1Hd)J6Z zvjbUNeVQsk^yvx`zvpveBbi3AV;J5gIHj&+@h_@q@$SS!q=V;ExRG6`yBnE_; zD+r8suvIP-MuLqC8%B+O^H)(!Nn?->52_{XsEejMDsLi;MYm?L*6 z7J_kBMVr)93bc9Th{SE?MB*aDbq`)wYHYgde*Gg)&9c>Ex7YIIgp^x#=0;T;NX;~v zV|VWIMR;4|G#muBRpSnB>ZGYr7aZQDEF(mrPXqj38nI)AS9Np{RsZ3%HLg19*?`SFDh6g36ge`IIPryUuriS7hcJjsfLGfgKZ zojb*@iMSU1amd=vtp@-2M+g9Q-5vi~UOd&gLV#-51l`AULH@Oaiz61q4cY zBuZ;S{GgEuSugkOgouT^#l!b?wj(Aef*2~lH3q_<;59g>hLK;8=yC)IDA3VqSJ??K|HZgzd-37wq+& z*;_^`z1GuGWT)@;i-8WceC#W!K6BN{j%q$Ti^a~YQC>PqOqD`KNEt4$t3_1NCY5K( zS`}R8YH@B)|N7=aBhKOo&~5(so6=VmS|FVpe*pIJp{ zO#2BRY@}qhWWhVM3hP_CS=k=K^94T12wP#KU_?fyuK*#2kUWWLf^ZQ6GgF9T8_wpM z+A@;Hu!_t-2SG^_a~i5%rld={P3?3<0MHeLZ<5yj;mu+S**&JpAt|G@RJ{J{%Z<#c zO?&65Bj(Ljp;4_meVc!K$X-nJty?A()T&7`popwG@hOP}AltJ*Og{Xj;Yl*U(rT($ z(q&1*-kc8-Rekd{RX5YqEZIr8K$B7lzV7IeB-Ro=2CJ_v?KPz#t_m1f(;CK8zZhGK zB_!f)HTBO$m~t83~v~5s1cgVoo4uA+d3s+rlbriXxG%$ej}<8z@ZV z4P4NLB3%)4b`>JkrQe?vD{)x=`oU3it+27`KJjWDm+a_0ix+^c2&5DgMFfih7(rN| z6bu0@NG2gzBvMdBF#&9dR750Io3m~riQ1Dy$c|?9A)Y4Yc2vnKN|{WlqLCe{d`E0i zoP{Q5NXjC?7MP-CB~~M*NQhD-q;Q2sPnzN`Cg$j6h}$@fDAb<}7F-J!kro6DO2lB0 zFcz3gV4N$3MA4p@A4C zmO^+-iIFr*L||EnNMQm7DN+-WCW|4mU_p^GLNpPfc@q&Bl!=hK0vZAaBC^P%1hOPB zMGSO2sql5YJ!BSA#o6_EQ=TvaR?YA z5ror07{O)gL}Wt(8YT!d2y#XfCQ}u#M!7U28cJ}JVh~|5GSWj8K>)xJ*g=pGYFHq} z;IW`sz=lfjOu&N+lu(}HT0)KfYe?vl>94{(Cz+iLD?(s)iu#OT^j0| z?a+lynbA9P1)vkS;s78HRG=V04sd{+I~g@QLF;ZD#m+3tmHz6pHZar z=OFS@5J)T51Uw7CDR6rcOs$I*9lkD}KDvxYNUWS&Y{Q%OKeBw(|oh?yC)SQIN4@$(0 zlLeJ#=&Cb0a+GO`=&)Ji$`R@OO*TDwSDLiI?&9H@Ph{YA3BkZ2i6em6IMkk;BsTx} zM+g?sP5@2-LI3Fg$N$d%$^bL~XyzjJ&~67zCJ)z-oq^K+K?=xZtVM>Kg$YGkLayKzQLM-?qagHP5sc$%OA;ZXGSP1n$Qt**DF`yYc?SQsy7zDoy=X4VJ4)tKC>7fA-16_ie7}flzy~PD6=nC-M%!E0(yqA zEV=*CfnmnWZ$(6Ef=o8Jved3p+(-S#b2VfYTL=zf=I3~bQsp8bR4l`*QjTrhQl=AF zE^31jA(e8wNS|WO6H3sroH+3nb!Sg=GqvLOLveY>h<-S%CFnY zk`ba7WFR6}hV4_UEvF@gNd49BZt=@HIi(|No6-|sw`k0J-lP!Mre!30qh(Phqc8|w z+t`b!ND1vV}4@-(=mH%8;8$Pr$I}>y2+OP3S=D0iDriG)XZL9<~VZq zGW9yXCn8lSLPNq@G`X?4u>o|||v`IM@Tcs?FBb=Sda9nLmqQ9WC>{N4+ z%{L7BorLOJUABbi>MPk0Znr<;7`krCB4l0mOyveU5?0`)iml5f8)+RZnUw#5C^LGw zY3yt8ArHBROULpU7=_4*iLQ z{4Io02uZX^fny5lp@Mi5#M;DGEVQyN1=XF`vIY04+~r7(!4`F!1Q`8foP`OePRU!4 zN7zBHj6n)(z^SR%zYbEB5lg6g5($u8%qtv6?s;{--cbaK zt$H}RP_$yswq34J{YYdAos`I_%;h2>ZwO8=c0w~x?2bIdYBOQ$YTSAg8i~9u1{CwO z<)k1k5B~rPK{N_%@6GPd6eT~N1nEwEPGD*_1i!VtRP_?z!nFXg#TE3UbJu;=jf8 zz&O=Hcl96;u`-RLWmS{c9Ag-`&B_*v2@=CjUd7Nb(MasZU2i4+jR)KkP0SJ#iw2^z!*eL*TtiVVAS9K9 zhmc>lr5>n~8^N@_P*n)70WvK=lA2Ok?jqJ-y{Tv@4`Y5{R%(>4B)Wj$?t|f#Pem%Sq zM(wFS`VUImBbAhY`IyJ4xj0>*ee8f2$t~hAlW3C^4Fhsdx}@UXbw5?dj! ziZ+{ZKT=tHT2muQ$ifcdQklAm9J~k1Av$8G(2jKF|3vl!AxcLS#~Ij*H|HEr0_`%OXqNGO&FXuPf8R%FZ$?AsvFO8LwdQC)UzT#3O6uInvRl;thch) zxVpDDsz|03*%1itExS&I4XHdxiS6_<@PSHo!c45AMD+!l1epqxpOwSruW5CJj^~^RK$HLL^g#s`Gww)fo5Yko2@9 zeFNsnFufNfmbk0@Yr8%~Y`a({iuLxMda52QBF$_>wA!XoTqX+AjTDe#VUh|plCeN| zX=mLz_DZ)zD{WTw^;xgTuz^8ww;IefSqo((LMVxc6Okz1Yh4Kl8_q?sxP)>tu<$eY zP#k-jEOcvKM@dWSnJ`oB_+01133jl;nl&$B6t+rUC`n92H3UN5^I|we>olxNlIk^p zk76C|wBuRWt4sA6iXe`~0Zjw9!U3H+q8ub57)*_tP&B8#BPB8AHsN=kunG}Y5d@H( zD_PU2d9^aplo?7oMX2#Oc`B-i(7}C#i2Fl?JDnn>z572zm|cdselSw3wQ8^S`A~Ql z#B#FIm5r=L2|}1|1fb3c;jHRrLgm-k)YD*3;z{xTz0MMJK%1mlF8yo2%6K*m%gu1! z(mz~&Nwe^pd<#X>Lt$wKvg}S6oH!+_cegZ+sgu3$UYeu{h?x zBxPKc9|cu|fT&ax!lBr46AGiDV3sPMz=4$i_(upA*G?Ok9Qq#pAxa}iC1xj8D8A+? zmb#1)94A0mKFQ&qKGqF0HT$Dx_I2%v{|J>0h2tj3e&`btlgXM;PPDc`l)T8@3(O^> zjX`cMfT&i`N3G2~3YnrHfh&>;Ud${_a8Vd#jqNZft!AMKX;Cy6I^Zc=%i#rG+=UUY ziY>H}bH3WbFdfMA(10p<(Z&UgE8=k8)bJCgMk#U$g{ zfHtnVVQ6JcJ-qD~6N}G#Fl+`SkCJiyM_dz`6pzSB?SgoaFAgQ703lXHovGK0zTs~1 zVa7Cq94Ng=nO#e!*4@^#Sgzj39Z&@wP7<*L;0SI#Rn;nhYc^UVl_19i$V!?_h>Eo* zmnDMdOJ`}?&*IEF&`3*qL(w!x{WHs5Q<^-HP-mBj*A2p~WwvmR0ib1YPhI0D8Bn?8 zsV7qyPZiu!$^Cm@kLVORs&Bt%(ND$^6tb1vd$6>%o?GiQ8XcJubP!7KMfFSckSdlZ z1+1Rzf@`}26}r~V7fE}*&PR6N4N_q{1&X5Mpls4r5V5OG*omjsi29;t7jy`gYrF*8)WM<5MyR6FKZbd(T5At=KeNp0gxJU+dOA)sYDh zj6i|dxXsHv%6%9_8FqQ$4{q`kn{oOSCUiwqjjkS&EK`!43OG z-otg`Op{vpNvt#sMInnnR#ijYV1E8t0VQ;l)Qycgwq=%dY<)*H1$?6uTr9#CZEJ~@ z$7o1@xXEIUuE`(RQZ1y0{a-9iP}y>CWl|`aGQM+2a?7RiC*W-5CqS^+(x>ak3$+Nmuq^=}nbc-wKk6poc|`(--mTa&SC zh~Wb9jaf%1-IW=Rlag>p`)yjsQK_iJH)TB*4ORr0ga(ExvE^y4#F$~A zxt3lgbk6!3jb$c_-ZU4BNUW~Q6AV$2CR3hE19^90fonx}7mEp{X?a1ahS(}n;fgpc zw)|Gx>Mbj_RT8A6S;;Q?jhLt8Pnmi%o2pc^9KX>t!47IkvdW@K(`PuB&(xX!FNVew z9A)f9<&@uZ*1EFcgZU0vh=(PVmk?r6sp;*f<}YH3QwSE4#0@P%o;8LIB}9P(#E%eL zFhPR8&Ee`RRazGM+L@?9h=#XHjq6+!bHdJJ^#p|*OqY0 z47Mq)t*fTm15nf)Bs$4!#b$MyXhDo(yk5Yg*j}13xh5sQX+;)pvUZ5p>JxXQ5AM{_ z4awyr@#p($&RarCSC#e^N+>R-nJPq~GG>@XfHb&3Ou{WbT^_v>J*ca>U3rI#ls0T8 z(i5v8qju#ruNkka@Sc>}-E~>H@PkA4TZ{6MfjsgVrbZyb1Q4!6;4M4`1FvJLQL?!g z^Fw5emHpmBZecwIjhhTj(*nR|8-(Y|frgNm;=M)wU`XMsfw4Z7%FZT?J%T+s&xAe3 z!<&jhCpLx&xzv&CI+Q8~Z+2tMUEsuyl@J#`r$`+qV^GnNIas_1@CK%gfN<;@Ich-skfAs@ZPx zjJ-KTD6<%&>>$EaCCB*VaegRH(~QF`%5pXS?{2eLE0p?;5{*Fn{rLR+qtNK|U;m%K zY6Sv|PsV3QtJLH2HyWJoPX~ugtXQrh0Fo+<6Ex&J#7LkRBUpa~$XW*Yc7iYzfVu_} z^CLL3+flW9Vz(=RxMP_*E2}%}%Dr3Yzp)5NdPfpNlFXOH#wXc2iW*RoiWHQmgjU=Q zS9f(z4btu;PBB7ggb0%j(2pFZDSowntzRsel5LXrU6AFSgZGUi#*52WFWU5`v^tNKT;JbCeT0y zE=F%~tx8D8$uySC#E*;gkP0Bi3nak`Jm3q+y~`-S%>b{Cts+nrke3AXSVm+@4Ty#v zf^=EU`^rKID~7(dXtr;l^>#1StTs#N=4nnl*IKVi^;@iyX)Tve0xz}aqP>)U>R`3A z9G1SBkrBvlL?*DmgvUYAh8AU3nd3tCn)elF+zk3P{#`|8w_-5-P2 zF6L*%46HHn5B$0TU97mGvrXh{?8k*GQ!pbW>!11ZETkfaiI=i_@ugfqnZQ z$|)F4#iX_0)rqGdLFZbO!T)>&b@4P}wBTy^kC53NV(Oq;EX5W}fN@ z-gHaf9+SE2wck|3laW}m#K)qK9Ya9y&Aee7z50H{!gU&}1Ym5G)}cp_FnSz5DS7K6 zsxs1T73Ok@Pi+e6$6zP9AaKee;mP1v!_iMudd(X6^AA@M_7Lb!gQ=!WjDF03KHj6v z-C|Y>b(AfFZi9`a5pp)9r`fj8t}WBd*@Or|NW=c9!8+1wy&>Zx_WyaM7GRGe>1%wV z+8h^dHL5doS9I+K>&BlNohh9lDVpfxUPZzNB#q!v`beeQ@U3GZx?9CN6^Q|# zMS7ieRZo1Nn`pYU4$03>JdO9o8-ubWTP24O7|SscB9k;_mx{&xMj#RxIFs_j2$ zzogU~Y+Oh(tk#vOdlZ|gSc~dkJqP7{tJ=th!f7fdd5e<3lN#9uN%>fx5<%{coS!E- zNcfl%oSW1nmxRaW1|t+_MPXIC{Y8Q64Y+rf@B7q-q7%Sk(FDjUy%fS# z61Xg7v6;;}xx<7=H55R2w3<~WC&i6YEmNh1~^)(ndEYh{$`2vOB^Yq$So>?7c| z@NZ5`{aylCSH_*=(ol#>ry0IhscSoUst&%wMVuXiihf=R@zp)+Ja-MDJD4IXjLQpbH3)*}RU!oX6=;XdD! zBSq*I^hs=AH1&q0GUY*zIf(gtT4j#!ZMCdJhWLb|J==T{fSr^E?AOW6gXu@~%cZw6 zWw2+&F_2Gpt|RVokg^hiuA)3VWq4VinxsG*T!R+74Ch7d>%6JoJ3n@R~l&@m7g zn~wVeSO^d-0U~&ys7}F3^Jb`|J;9wS%z&71AT>&U%W3qh@6nW9t&@`&H06^Q8r!%N zLilGi;;aN=(mByla4_NQ3O`IlXZ6d57`2}&feNqErjxDJCPXS{c9NZj!CJc2doQ*h z`ZZ&E@e*X2(oX%cU1*nazIWnUs~Q(?I&Jb@lV$2J4}R+IpGId@w%cO8TCy?n6g9gv zwl0CuZoSwnd>tL$b-G{22His6BFOgI&4TlEzgm2$H9GBf*G&ANciHT!Wh9EGm-E>z z#G1FoH`+?Sl-;*;^W(2wdb?0iYxAEU$`6$phFO+TAf`x#!H`5$iaSqhsG^$5F%c3g z*2y(4NF9)nsb;xy_RL&AB|0-LG%YPDGczwLJ2EvoHaI>#Ix$d;NGCEiF)lMcHxY=0 zN8&@%p#ibU(V3~afx+m2NGB5rL?@?5^z{7xMk5i3q*6%~kV7F62qYpAAc99Dkx0Z+ z5g>*|BoQCqo}V8KM0j*?W^!8a`|>MCj~YHF&gE9$GOE2``3Yila1t14?Ot1N75Ypg83#@5cxw!W&avc|H` zy2{4R#?HpR!oJ4B%F4>l&c@EZ%DTqOE9+~kE2}GO>Z|K(>g($2t7>biYbt80>MH7L zD(Y$KDyZu0nx2}Xo}!|jqL!YPo|>ALnv#-=j*fz*tcHIdiCnpt5%(AlrDU!Qsl^!ebQ@@bfQn`pBMi5bjBHnY)DDw_1^A9vhrB+&+nFyl@v^Nc*hj1XbQfYK!Y_(upC{Z0TJ z0384w02}}w02}}s037BcmB~CXgVgXKzbisuJ_w3ljB%XKMmS+cD2kJI+|Ejr&LK_7 zTf!?Orc`HSQe9Fc#oA`NlhaE~;wvMXwwj2Wa$7z6|xkwk%djjM9>=gcOYcSXQeLY;fW-- zR{4=noUikNPrk0=p1Vwci0wXxkxo;y79LO=hr_TSzeKM*>Ru*es%wfl260+y6i<`@ zqcI7j@->tMdmP~11K42x&{vA0H54s<5Ez8a;yDFGv}>MZWhr!1n*q;ea5FZFvtX?i z!X7fP#XE`-B{^HHli7MNnBy2VbN*Ig(CgfK#u+7d$s%ZmM+k#k2sa25!nII{F2Oi| z;Oy6#&LVDkN|R3&;!z>LhYu56L=r6_b5J9;+b)Npi~dTA4kc2&rWZRF?Xuvx1(7zm zY`XEHFG4t$a4K#z?39-6$&)=vRin|=%raW+NsBuR#WsMU;@8hDf(XqS`cQ0TL{|fdr}ruYr_5K^xP$>$Bns}pk}I=cEq!iuzT{0$3KfWqkBYI&61qs|1=+Ln*m{D zMU(Uz(e9!>p}4Z33bVojZ+%~*)tH2yz?J?fQs#5ais8d7?hJ2&U7BopA}z_)8)I_2 z9Ob_q6wq8N8N`HxDfZm#r0k}939ksKQ7I3-rby7Vf9kPFsZ{SGI(-q-HNlaq%bPhW zlVwWuOJ(J{sJf|`>BBu=bgE1-66k!7$2UIZx)qD;i`sK8>F8JyBX7B{-a7#gIm7?j zDfC8$VoD1wdWMxH_f_fWD`KWs2XY&PUn;fJQDdUSEM|IROK^=5jl`P|g-+;c6EQAe z*5Taab(iV(>i3Cx1LD*i4!0V_R>Kz~Ix-0=sLQLd9)0w!ED-sl4(i> z0*u`zLzK3x=aA->oe`>CL(w@2I}#TBE^K2>D_2k+ zwWzO*4wWOYM8s$4eiogI$a9)cOma}RSs0^sj!~Iglq($&TsY08zpy*>#nPj%D2NBF zsx)D}MsNiErDCkqlN8$1aSVy|<2&8hh3y?YPEgAQY}PHU<=2x44igZ@fS7}_Q-Clg zHV+_OCl{rc49&}tyHNv6AwknXay>}oRI{1lVw+ODL z5t9S(OHe+1iM=jcY&Qf6nr-19Dzd+*S5_d6-i(_HKFoyN424Y;e1xp0{uK0fBx2_C zYKfQL)KC>XrSP*cxyj=t<_v(hKOspO6n7Oa5jVAQ3p?D_MW$Qa?U2kOcUF{nNS0zv zeN7Etk>$Rj#$F3RsXGDkg{uaWgjWq5>APQ%vm&O!LS@wEocc~nhBFB0yp)NqdA6w{ z%Vb}UQuAY(Z_Wy-*9z)}n$xWPSa$8RLh62t!7>tLppWK-+e@AqcyKa8SWKuOGnJ3t zNM@fZ=5j(odvd2jPnq_8v=`LTwxItKCfp8o$M8sw1_SSpNR3LcgP~wtfLWNNHd*Fc zoK)^w^%WM1*da|2eDf4x$(XZBEMWwYp@*Jefg%MA2^uWZ31DI#$%UFZqefC81Xjq5 z6)T}MKi*RCwC26wzvNb3?Jp~-9LY0t6Fm(Ql1oEEc>+*dNCwet2_CEz2?htajkt06 zzgh;`KNE@6CR*`wqiDWWZ>pM5(Exg=R{{dE;xgh^n(E=&guXFkjysj$ih{8tJ`f|a z@(2A)tuk$O^6Mg+&YCY>pOK=krASP>e3ixvq2b5q4HXcGN=`gLv%^bT!UTvU!O>0- zAyAP!h*GPlXDjc5>~;H;B9&uRVQRC_)x=`qpH3^q*(Pmc-w1nmv!rJ4C!xKr4#k2p zaYhKz?L{#*V?^1sFLliKC6;I)p2ae(IV>w=o^(ZGL5U~#vQG~#5Z;F(WnW(N_<>q# zTH8Rmns;L1Ikzg)G!Vul5sw4#kj&^KA3%Cs^i(qu3_@ahAj*o}e&j%OC5<>-zq6ux z7a05q{BaV8N;(yb4yI&-B;5*##FbF#o>W1ojvSp($*^NyGYtuNG+`FY~Cix`Dg8rln zeo_LEJc1+-ezFL^>;1bcnzg$Zu4=oj8o8^wsH*zItqRSm%BrY3X`%W6`d)9^{2x`! zd-hp-V_@nPH}*e$hd00w6p0o=S7m{7O&C?Zk5E;1aX@8SH#yNDqyUtYf?z>Oc{L*> z(5V<=#%Yb{iXV{^J_0l@q6Q>_f;B^CKcRFCfO~_o31BIppn}>7h%BJ1gANP`GyuYb z9<kiqCOa-UR7xOAl2DRJ zl*F|q$uS9xNkS=*0p}dGr5F8PQ|THIvm^5pH}rQ%^&ez61Bm%|v%9<0z8~}G5kQ(4 z(8iC{CZT`$esAe%*WW$m-&BQU@hAyF%0g6h`b$Qf&U1gw~m(z09(3Ahn5%p|0Q+8iU4ASF;h1w>2A(d{qh z1iF>e?0pC?c_}{I&vyPXpOugZCPY=|XZNp>o zGR9i#9A6#nKQSy$`#|cfq}G2%L&WYMeJLbw=9k%RSbbSHu|U}!to1)jWTHl99AoDX z!#*uq$XiY<-WOTIp*ID5_+pCKJr;uiTNfsXQ;#ID6av0HobHgaJ*7%G;&sMO2wB#6 zol=3zb_R4w3bkeIVxn(3I>w&`vw-AlQe{X5;F_l@2sCA!orBx zcO->>GZgv2@5&KTX9a0`qD9ZtV+y(_upz#+>;*)6iu??^f}y{u_a;F&E`5m1n6j_( z?+A{HQ2`*!Gbnb|`#{m7!AnCM6CT#AufiY^A0p>DLvT!Tp4PneK?(mE4aH1%7wDN} zMNrU_2rEOn5QaQ#o9iSEFcPrjNFm+}V3*<|Spa)sol60h20cKrV<9G{Tej=9DJ zw0Vh{hjxm4-~v*;8*&7}xJ>Ih8NhGY2%*sTP)P!k^U55*-iz4w5~LRcsCT#a)cXo} zF0Rv~97P5sqvRUH))wf2QX^pj5Q51htC?erAO9hDYbkZrAa6{8Ykve3<&w~@FL}`h zM#&9bU}9Q;^oW5jMipGC6=})C4x?Go(+VU?PhPDi^hJSyPEeJq8^ZT!suv z9jd%s)HXdZ&=o$r=Ri2qqy!bCLXytkP)MkHK|s+5K5!#Lc$6b`vnk`_fEAD7mr za!{QSs%0N?Rv``HQlVi@`dhL0BUS2hmKva{s~BRI(-xP{xe@g!K^(iX!fPx(>Q!jl z0iz<)tR)F&d4FQS#`6qIj6hUE96u#;gzraAf*#(a&+FjAFAZ=&(XlKCJ?siYFDh(O zA=dsD`@}9leDi`h-x6O@!WY+&S#n3Qm#s|vT4fN|J@-&Wvy2=3+kroI?bFsvC z{l)3MsQdKZ30hld_1lbR6jfuLcyi?gy?xGngfCm$HJ{hl^jd}H!N?58k84}>7$3k- zoTr*3H0?y*DGgKeQB}-Ltrsv=9Slw{llZbo zO_MN&xr|#ZnPYm+KM6+DrP|U+L1=KsI8E3~C|j^Pz$qAYj;ijkr0kR}NxSRf`IA(1 zV5(*kAD)Oo!AEeU-yUNDl_z5iA)ZLD(&`D)d$P7_IXH~`=UR!75IAtCMi!EiY+LNwBx_oP0^DC-FWs2QU8A$f$vSvx>Cf2fJuttqyBK4RIK61iM+Hd)x4;3Es;u3x*}R^ zl)hrKNhI!;+re6q@%AK_=0eML^N}+hbz9Anf_}XMlW9npkga0V7261S=`FcI_e(vs zcaNuO7{p8j#i|{5OR5-kpp_W+K|>{rU%I&?@H7Xk{vA z{_R#^SNlnu?*EYOwbdgpWk~#Fhie&m;}Sx-XYYBB1y)iDmOpn2^muPRPibfHv>~D> zL5C)3bO|0tFsYVQYwz3aeg6R$`(NOHu0YTxR1GnhT4(($lDOp1rvP}f6_XyZqJ+Yv zc0NtDfll0p;hfJMNTtXb50!N$ZfLGSnMiW^U}Ho>#g@SLNvU87Fo6u_@U+%zGlGrJ_qQ2cM6)G{|6g^ZE=AG7(#L z8-$6y;J@a$_g&K2>Qo+Df)3s^aDoqlhwK&FN1}w*Bg83jcl)ZI z9uSQTV1x?7AiV%65ly+sf%1}3(I)lf<&f&Jvp*lh(!}To^6OD9*i^+q!9&*8S1g~S zM0CKB1e~-@R$xRJoQZ@9i*5!J=?gf<&b;~s4S*3Hme9J}er|K9qdU&WbX+$ZX!Vdc zn3u4Wy)*Ju(p~mRKIxh4;_1u8AAOm47D>bqb^q|%iqb9G^fz=uT6RKNuMe0soMR+p z3JXI^ht6~av){8JyP$~H+NA2J{X|a3CXZ`{v^5xcH%gXZVv$i3@8;JB>Do3mOLhr| zscI7`N_A*@za2_2XbaRSkR~s%fA~mI>)Edzlv}+(69pC`5+PnQjS$rfztvLHiEEv! ztShVk9(U&htFs!7ntOpvDk8m6BYUA~MhgO_%kb!i|M*7;8}m;4!Tq=cWC1JwGXMwx z>;A^(pbgG~j2DM-WS$h@4?Xe=RdFXC#*}yO{rmE1E+2g%^pSZRr5x6ZrYR7nu`3S} zvcna=M0rVmyXsXsaGFn7gdNL z&L{f8S4m{^v|fX?16G^*Aj9;u0rZ1wf7#TQ?zKqrMiE?urVHXNv=?+d zfd!apPS+#9r|M!W=@uERv_e6dDFMwAf z{o53g(d25m#*9k1(io9zpj-MM3+lkNOXgmI#nph)B34OdJ!BDi2tPBcAvZ&-20=?f zAA@tZrxeVJhLz?JBf_?( za3$!^#|xC`8OaN`QJ!-7$A8+8S0?*iTgrZ2P1QB-eSkqGk+I2)aum&Ema9SD_@VfU zNp7)Du1riWbabJT=Oh=-*eGU^>zP9ubEcBf3TyXotd~mvEWI8Qe!v4 zmCzBY$hG0(mC;}ALy8m@@YzR_Q?w5m_|7>^9X6oD{u$q=%pIXx@S8b{7%R$Oc;sub z-nDhDp$qHl^>RXJlAGtXDHW1dgP;nIGhu(!c|4bmCe{0?cDqv}>$7Ql_M;^BY3C8G zxB))}(`N5M=HU&?dM0o7LeR77>OzcuyM5dXOlk^#JWUX zRdG8XVIzhh-Ttc zpc;yM#gWj8NB=2QG@;bO%Ai}14K{x*fML^|9E6aTP0vfnHTZN!Tf{5OE6BHpgYVdX zPG*dqOY&k1_YfBT=i=-7CDJsRhF^8ZsMJvgDtI z);iYpKh!tUF1e>{FLflcm_O~jLA12vLU z&Tr&HcA{>dc@iw1p!{*q(rrEQ?|gY6wM+jKj)3jHKtqqK*ol_`>&A<|*b-Q!RP+kowQ>o2r{ibKRph_ybGWLOV1{#J8~DXYA!|*UVv}@wsQ0YF6{OASJ~M0%w9J%HWVn%`WX|tEM_}}vyVaJSZ3;0a ztO5fr;uK@VmJIuI*MWS`&XaVr?xw!HpY?)v@=6eEd( z*l46l5TA*cXC{JRJrvq-ooaqbBjEucBoPIxcGR>9tfeb6C6y}Rdw`!rJ_|Z6Q>R|H zjw}#0q~?yCt;tKFyY@1Y%^~3%+Y{3&N2h4k*8li~p#y6XVrwA2DC;ezV@+T2|Ia$4 z%Id~_7oZr!;<2@Zo!E5RlsaQ=TaG0Mmh$fJ!%qr}8!i;wzHP}_t4!F2<0VXl`{+by zy0=7Czy3sqPbIl0O5CtsfkZw%Sf<3tu969n$nSzNV+I$tQtTr;&*m(4AszTQFe4BQ za}^7#i<{pS0^m_{>mXF=Eg*&txI-`af4y+3KF0(oV382tAx^bf$ruM+(T-ClZb}ke_diJ$)eyr{klt15<%dN?fiks3A~gt3a&kAua=U) zToq(~Uwjc6qe!TD?WY77DbHY8S+|0^1bA(7CEWRY1Z>b!-uPaz+m)ZgFel<-NsMM) zz*%u71kR%d@sywn$hm@iQ56FM;>q01|!oX5;@}ZdO zf(Ikwr{Q)}u*GcW=YFL@y;Z=@K?gXM5Y*OR4tCyCsC4v*o3wA*6(}m(<4#9gsvy z?zOTiS;;x&J-d@rI#B7vg*ULhJ#^(?QdOOQ<{eR&CD0y?Rp~C~teT^BdlVMaC9J2g z354F}ddCJ%pH!A)p;$LWpvD=^iNu7ucmoRQ|Jy zadD)=U#C)2Ef)PtjiG)|OMF713WQELGx2?U{2z~R5PBgY()BKuzuV|Dyh#DUx+ew8 zY@F7e7e&7+gF|#qfZvMI%_!;nFH&uN$f|u7L9;o^yOAnX*n4+o?dUD9yGe8nm1HFZx1E`pj))w=OsVlZ<tCkQa~T+N*rD!aQS%nN!clq6(h6yRyGq1I4uXInd4n zR3F*4Eaq`y7E@l|^Bui&TM!Ax7+EJbrTB(bud=Q?1FnjP?pk*;GgnCH*2>kXd0Ni8 zZ}P3IZbgsSD^X?X(LD9)H>~Qrq+eyp_m-r=I{opJu~j9>O9=#!%)E+xnn67i0hSYU z6v?!;&c#BGr?y3ax`@ z1YQ;uvx$W@98=ha@{H2^nK1)9lcj$cjb+tg8nh>Pz1o4+2(Z0AxND^jsx(0B;=Yvm zJf7~f7FVYh`RADgi%eqD%#d-TRk;q4dr5eAw7zrjy(5aTlXabBhtB}58R5+iH^@&B z#?3aM@jJXGB4KXm4WZL@kz3u3)O{ZQKCP>C!5W(B+nNLFM)W&mmiJ%%-$j$*=!q1` z8Zs*De~+%~oo&6kr&Zrr+flIQPL@=khp4+wx$89jIJdZz*+)6V7{|R{?B;P|ehMRs zeXM&8uj3lEa~`upVK|dAuq!JqgA=stmN~O>y(9J!u)@X7ESWam;j>bq$Y$h==@kxQ zd}g2EA8;D%B~pcs=?ei14HAOnoFk4q+o2dlybjFnjf|0~!N-(&vHY`BgGwFbR51vy z3StSyv->}*g2|yTbc+<~!r#<1S<(&2S@J16YcDL?VJ7!Y&;p`0tfyaf;@J_-ek7@| z*!AnBK!{~M+>~@8!zSn;>-snXlBmas)1s&pc<(LP+Aap>?bgL-Z7x}*$<(Z@t5)lV z*gx(v1HTLYcQZwiaZXf=tXIG$&_1~I>vQZeQ#9qGHm`;r>Ex8088S-r^_h8+8MJB=?EgBm zZzksYoiB}SC=rA-a`cD_HCURjOF`9e%7SMbp`0XgPPdxq?YQ4PB_#c_uzx!xV)iN4 z)RE{q<0S_x3#jhBxckMzC4vW5_2+q)9aNkH3TXA})t(dBd0>gD|M*7;9Og>@2mkN^ zodd@O&<8-~A|biDWD|*ChR?}kR!G2GlUP+P^sC+(7Pm*%Or>~I%Y?s-P>Yur|Zkkc*Rt6Mr^zO>&X(Zl3T9od5sdWeO*`El2FJ#nS|3QscW&& zN!3a;$x|dy4Z-je1F%RhT(tEWv(+gFkewhW(B+V$VaFHI860PROnF)26M8+?c7g@0 zX%5Ad1wCX|E2{%?CRzX^#~tE)p_8cKyFKHzOLdXKa(Jc1laKyU{2aBh(22(bU83h! zNbIC6vpHgEFD=$?kzzG2l2s2=h|0z5%93-XKh*F_=$N&6LuD=BwaI$UEJQ~m%S%~p zAI(R_eciy&cQG7W#P{Q&T*O;_G`b0;ab*582uCD~hXGu&Ary{gvhjh%nO6aiUx&l0 zkyyN0u5v_^B+1v=Ciix|-7ObYr%-8swW~F*(PpgH=+!z6I-OIjSu9qYox1mQkgr#( zC5nww`J&V+5Qn2t`CHZX%a@-lTv$LrM4?9+Xpy65%$6)r!6Sl(Otg&A`O%rsv_v%& z3Qk1lhhkHaScpa<5FM8n7nzh6l#!DX6Bi#lTQgH58&b=AE3wtC&+8}f(cPKen*Y~+c#84&?tNolc(xp|?f;FL@@7mUVdRW26{CGy!IkmkzD zl9HRTx7p3>`9`f*EVipXy8CpIEw@VLW}iy2EP~?F?!rlRd3jrNQ)^#oTUTjeaU_z= zCDRFn!c8f?w6dzIrK!tvl&n+R&5@`;@zHYv#tfV$T$y)-TqwfMAo8rRY8A3p;j4lN zQ<Zn^j5AEI@N5HHYE^ zN!H%Iy)=HQRf3=yZlQ4sxrxS_V?0mjIs2XBe|?8KMG#zYoLCREo5NAgq%I*syDF=@e56 ze7RRhPvuIX-`aKLM};`kBdJ;%;hS6Q<0n^sZoC7Bd1`-d`6*xgsk5Y`ja~Kql_{iZ zb~OC>WjWfBYh=}SWUx(lq*`

?PWY4QlJaNW)CIEw!g-E`wj&*CL%R-OS$m#Q}0f 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∋qnuwW@kjgBOKR(MH49ika8Mg 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%0A)VfYD2oeGZ+`bzO32)7eMo=N#eeVX=ecLqc7#)y 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

;(IS4FBm8Wf?05P$zG52A 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%0DJ&R07>R5u&_8obBLje&PpEP!c>hJnN=6eOH+b1 zE-Gh4b`=E7Md-R< z^YKn46Kjt_6YVpji7OgLkG7CSYSu)0FEmXHhMA>-wTh(`V>8W&!YJuoW|-twQe7b; zv>KeN)g&}*nd0?0zhbon0p^W|b5?x2qiBRWa8(gvl?E~;1bH5P9}k0Iw7kx!KRX<2;aO-i^+WQ~;| zn7klOQ6Tz9%g3cGl|^f^^K*MluJ?I6O=}E1$s^fw33LroTX40u)dEfFGO_MKdgb!z zt3}sABbG1xoo|KuV_qw60zZ?)J>+xV_hdzuQ7&2vI!S`fEoQ8>coS4bMJ;DeKe;c# zJ3EEx4WqQRyS7rRgv3IAN&@{x^aHfHhO4f8kZr}{K!*)a8mSy7z=cv22hFW(#mtm* zUsiQb&*Y|EK-(@!Am;JplQQLTgeVPk%IgYdaj}aoOJ_nHqSI=%c?f$a7(}m+=mrfU ziAotQIxni0Ay!ab>4~ezl9i65ReqYBkaP==ti?uz@ldQw85y!*4;Y>b!sIPJ#aix8 zpmqO(Onf$ilo5q@ALx#9o~;*}oX6{qLDv5;P~2InV-l7ON+WSvOq$alvGkMEJ=VeF zp&)FIp$lHP&pJ@f{6yEgR^^%jCmH_>5Jgat^_8if2Z&4ppB5TbY1-S~3FH$Yfrif&@Ug0_nrabA_W z4iX&|e67gtFBb!SZoXpA(57QB>GN;2wv&FLO zJUd_A+bTXKIe1Xb^-PO^abHPUYNS7vI^>;0O6M94O6pJa5d6~eg{f*u>7m?WBv8P9 zd{1O~$;QhvMt>XHS+z~H%$ewhcVUy)V*}lI2+*?;!1EX6FuD$KMORxe2)DXZBX~Wv zOasLNW9E(WF*e6O7bvO2fj!*rMkt)CZO(f|&8M5zuWf^>%S@bsfgG?U322G-tgSQu zAm@8LyS%EPqJB0k7l}#42Sf!05hM2oa0X%%vDs-{aGOqa;_MQ3o+Ppu)+03+nuu24 zqcSEdB@wbPGmt4Zupwh5x(zC>>FI9eYA`-BM69I@0nCTTKY` zdHbKDK!^X5RdFDJm0xbXu4=BR`(`m#Mwh!V+&dyWXm%i6dgvllAUqu& z$i(8aqF`*7BmiG$6M=_M1@~aj$|Ss>y;sb1G`qvO^22Pp(AwGdiWtn?q6tWdtWH!a z8cD{N8#<$_+{jT9#L}tVPgftNRT&J6hc4az=Wc;>9D}~JYS?i6ZU0EaVHu->gzHQV zQSa+nX-7wYDZj0d?#iH#PPfd6%*oc5$Dd^f-?3Lz_DItGJYdN|XWtmpUF2aq@ECxs z+E4-zEn)LJS^}aG3{)X?A&7z#DKZ`i7YH(J zSSRu#Elw#4l?0DN1VJIe8|3ido-#NvBeW$rXuW84k!@x8*(D4Yf~B<`7loGkFwO0j zIKPD8^pL8D7&eGSXJG)6W~?5ILlKh^r3PLSF+@ic#<8xx#x@oA6?CI9aTDGAzYIXVHL z$D2oDW=y=bx0OUs>2gt4i#y~Y#U+s~yfGV+v>BfT$_FT-ViUHnF+QUZoOQ>_E>R-c zYbYZ?%T-nq>7wB91jxQZnL|$K@*b?)b7_K-c*?-7=Q5F*gh4ckf^;!5D3_Qo+|Fyo zKbthSebr?tRB$)x{|2SAB*xvRz~o%gPqv@;SE((yG*sO2>il;`M#55d_uM-9q2Ezh zLJ^pmouy)h>gR+6#1EM~HXvk~23yT!yXUHXbWE9a^C%+g=(Ht-l_^My%~ zE|Ni&F?rp2aDqora4E0XX?XR$MO~%}sKX7@pr>L~xnPZ_V^**NY(X(qdFaQNZ4CdJ z#;75wv=Nz+UJgu(h}`Yk4r@pTKb_33GG@ex^N$ww5nTCPAWK9eIha7_ zIh0joTrLiULT##u`k$n>_r=EOhR8CX3g}|NKEzQqKc&|6$s@3k%oU2a4OHwTulc8L z8JI*bjIg*yobbTc*OzE6Ebhm~h4dl_5XQN(bWZGt0VtG-Tt+Dqk`nYV@oCH5u&{F_ z1+WB=fWJ%7ffL!=TNwcQ8j;O569QsNiKhr>Xg6Dt;o@?^K>}74%<4xjlnO5EH_5Bn z7$;UmOItM&oaj0%5f?&01>mjw2QLnrDmjM+j34P6nO@qVIuPB+7_z(3d-KlRjSs%TS5pJ5N@)bW6M9 zWuKZo9vFxP0&=E`^XFtoz2(fCHf|}E%nt^NH3e_ZTIJ4;kFwZAHVvnjgdXxs5(x%_ z0!5k<^Ba7d_ns3))njHB)U_0(ktW%4EVtCmhE>JN7C{2X1&=60Treo7a#T-#$I(R? zsf;V0Ad*#l-T%6E_V;8fsNKTFju1{+3oUP6yVvW~|G6y>a`KO{s>1n=Rj7=oH_*TV z(ZGPc#H1)lT!RD{GNlC`7u$zu2nOJLi;Z#UvJBAJy0-8^9jbPX>Z_IO;%u+qX9|$= zt4Caxt`#YNh3vAwU6WeTZ|@gizhsFpYMhACjflD~MinS1+!Oiq8mL%cMgRrC1)-c`}{#WdfcKExe`k1xhO+>8+~LDq|C3?eF)MGT#p#Rv5Cu_$u+QnSHTVfWO6`o8RKz0 zh4niS#U+~UjcCDY%0zIAAmqvD$h-uASwqaL#F#okx)KutmMnc8k8Tn+F_zAf9A}W_ zl!})GK&B|kIUwA8*rIU=^phZ)LrZx%EM!t#jKwg}xFxv~khhwQ%239apvYDuBWt55 zfDn~k7z`G40S);`WD(r15aQFC3_pAgXHp_E@{}P^?_44HDY=&RhcrEEfl*zn4kb2c z;9|3w=%3p7kx-qCazb&P6%wvulQ|~DjG{Ta6*rKr3J3}%#;B-IyykgU#F0%?F&&BR zG5MDGou#DR8Yqh*3NcJrm6s!u<~g-?F1g*7xsKJIlUw0C#Exa{6444rH;QPcTZ~qO zD3eIknp0L*%}HpQk&YumjajTU#;j`uCdN()L^E?4qd^SJhGIbwgywS-C>i)?B9W3B zB{GPfMlv(B0|7G@6U1oj;9?xf$&rK@FJ%23P{2WoFccUINTgRr^hMN9kV3H>m5vgq zg>06Xf}>|dpC{Ek+SEZtUP7labZ%1Z=@um2oKLE0lcRlz`H@jH(h@@oHg+e(Q*nIjYgo6dLX)Aiu(kTkf<3fn3F1a2O&PqbGM`(p6QaPQe7BWMID_Wt193nC%p*s|u z3uF*5MB)*PB*L(aA%cbq;UfzvBLIU)UL?p@U_fF50gyvQlm?*Hxo?f>il?B{ls&@JtdLK1YLFry#E zL{s{xs;eoo%IvPXs;=7YuB&Xm`>nFN>Z|qDUDj1qG}m2LQB5?_MIY@R_j}%YYhUi} z@6V+^-M{s;mA3!VmZ$YTm9O6NNiD4;l1VM)nt9?yjS><(c<_*rknqs(@b<%(PJKK0 z>))?lo;!K>>({TIz5V;|-`{_Kef|IS1qb>%Dmq#!I!a1vI(k}KYKm%VifVd_dWw2_ zdYXEgy1L5B%G)llt*xx9si>!>rKqZ^tE#A}si>)`rl+Z>sHvu=q^G2(rKY5!q@tsx zrK6;xqNApysHUf!WMm{{q;JSeNXSTAwPxL$ zRjSmdPL)bkDb%4$`XAAwLZqa;{51ri8HTFpa7jT~xXhKlf2Dd}TG#(`@A-$}SaxHd zXu1wvjN-VKDVl6u7llKpFXu|Dr9b8JU1fn$77tdK(w*BKUl_!RnyFWc*3>?ON$qar zU11!BUOaR6D^ig&v2KjC)6(3{#%35x6?-XmvD6a>2_0HF{{tSHGsJ$40;wv${&9B- z^gbaR(D3#?RfWxU-WOzzoO9+<+JCw(UB<*w*S;YbJO#sbBWTL2MxMp{L?Muy`d4^b zgkuCavmza%oNo&R$cL4C@O6N607Q!v03>qA{2`(P>I^8Rr1l^G%qu`#!6*u8pC*aN zrMuQpqXax!QRAJe$@w!F=OKVM%B2?}B@osKfZP#u=tdv%=r$&-B>x>g-H{(Li z_8YbBk8oJVXea1A`>6z^C(a{kfp7v0lF){z!#u>R>zZZbdK36QY0ju2qMQ-N9U&|T zwFE|LDerfivP{#nHjyk%$pTHvdG!<8H02fMS5%Leawwxtl})}fYPq%d~QXt?Ul9u8<^S^rFgD zLW@rLLBSR=v~xblkJ#03@)AxH*U2i8!lgN!Rz@$o;)PcLC@f&Y@M#27?|qtT(V3(r zaY?B%50%S*rPUz>c?xoAzGQP~LxQF5Jyv>Zua8NkWlVTxFqT{ynyhN9e)cLqmF^+so2YLw zjG(@Lrb~`FPyVG|`|Ng`&E8_fwCPSp>4*(G*o!lPYjpC6##Wx7q^#_mie+scOV1P` zxTLi<#xHpJ4eV%`EukI0`>|cMC!cQ=%AZD5Gc-sjduuTmIsd?0q*$q{e?XGt?A0$K ztA*1O-AvIvwDUEQ|7wM)Br#j{ZvG825w5d^6RS|s6%iw9lSyqUT{h;J zoRd$>vFn$vY<6e=s(Dit-430Bq@9!7Lo2rv2D8pMZ(0;pidd!^WW@w6C`X1N_HCIW_>z}$ z_JZ)CeReKM!a^xRYwa{zAXy*W2S&Jssn~A5-Gw8&O-ML9sG-(E z(z02;qPmDba)7wUXk_h<*tIp2Q8ngBohj>!+@^KoJta)pRM2it1SYJ0ZfJc$B4+z1 z)0c_2vrYpw7E&k6SvLxcn+!9`p{#)MZ99;l8T@3bC#D5SL#fG!CsYfPX7fXJNQBKY z&Sla~2(L9+*os&uZJ5P#B8F^}+tpC9u?MOOqF#BEQ%IF!S>@++OEF(^+rr^8WWt>Y zso21hZ}y70iQ(7KJTRBOrV?=xPUnp0Z~4)X4>$cEqXu5O3PSk81mw;HnJZf>{P5Ec zRIIaV{duel;vZ>ApXT|s`i2H+ZFAlu(*kYS1k>BHzsAs^yuP|J5|NQnscJ}p(<%ai z{?+3LsbcM=U-=8v$_+~GMcwj{z#D7rXDe^zs)x+CaE7hdQy)Z_l?dA<0K??iPpq#XEp6x5|JH5_IrTW|Nku5mJyh~>%) zlC!^=`Y(NVd_6X^zM-~3LmNZ*N>4wnZH?^@uLkwsaj*)fctpBKINm5>Qx2Jg@5&2O z)It9Xh4`Aoh2dd9Pub-$?I$s03{Z@SjDJa!*;j=QtC{oKPINj_K_KayrY?f@VqDG4 zyAg`mYViIS&Us=%w8ThLZ8eSc@kcJR1olGd(=f4Tvm2X988E8r|IK7?bIhpJx21C(W?^$R}0iIV|Q-5UuS%rv8PT``o z*AV>57|l-bN#f5KIL}7BGa+q?tWctw7?|$@LknCvz)%3;fQv!n2V5%l-n07#3ZD+Y7(@p+Uey7E;(69?o887jB*yNJE&!Gs>>Je>B3Vj z=lqT;-cAz8x4sGHPNZHVgd0$|1Wawk(psi2W#!UI&T*JEf(I_Mx)F$j45hlOO68Lr zv7`@FT!#wdBw5O7=Jlo7qkfx=y5xy?Hs5G=Lt9kK`MbX*YZaZ{TS;vTuo8R>GA*(MOH$!$yVP9}8dvs#0^ea^LiAuhR5Hpz5$ zp-;9PiK6N8(jIQqOECzirccG@i}g`{`kNJ@mr~0G6B5 zCa$5_rhx63L-u}+nImS?L|q+G6om~5TD|(cXRW1lq`yrav=X}!2(ZOgd8HE1QIE=& zS~)7032VQ#-{I2qFxN=`_(up;9!~zB{^|ci|D*r~0Db`R0c_?hAF7-jTu%s;9Wp~Y ze&r1Eq|$vbhCpFhp3PGVlz>N)3kz&%HL_>JG=OCDSrSf{qmoa7<9G-`%LMHx16`GD zR)_tQ*fGiGKFHf+W-RYe)5^7mZC6}WYYBsauy9JfL|ULdG(p9 zVc|oMzrdX;6{+3I?Rr%vuV)*H?I8)+vsb6BBkjFJ>r7CZA@Q(^v6GEsCwdV!OP=2heQl03d;~m4=FFCRbt1zA=Z=jlXnu>SAH5$x(JP%WFHt6u;DmC zy@annofDc?pRE)Y?ZH4FM;O zG`N_L3^h=m(r|PVX^`1Su+m>zP;x!9PiY~xmhsQ%R(l7T;|m8Q44}a`w_- zyofPm%zPIHB7sECqmO|wPSI(VX7gMxWm2AhD9thbq*0mfHQwfu`)qX$NE7j`(VZf{ z8b}YsqBcsXapyESDPa?D7z!FV?pTv)L$33~BowJ~F%hlr)f=9gr(!)?qZ2fJphu}H zv5MCePKw1etWA|noO&R6Q)^HxED$i&bFT(dtgL+R`b$}7=}Z!sQ|%_U#+ycES(bH3 zic!PdUB!}7N@%$Pt8rbK^{tt4RWXTJSV-w?dUHr5ZNR<06Q>KjiQhQdxrC=Fc3yh`_5DP-`x79xPhz&s)!E+G~OI=Cn zbYn!Zsh@fEAIe?*s4S|C#>;RedTL(3_;RU(&XHTYy5%Ae3Q!{GH2k7!}cR=_}LGNR@2sF*2E*kneN8N*#%fr_m;`p!Cx##TeMI z`Z6Z?K-5wq+Q7YKiVn!Q?M+hHmC&u7Sb)N2fQ*PRW;hI2C_RQpSFA%pbS@X0uBH9Z zxdgadHA@4rzR8LTG8C!}^`{C&UYt+z*BS1YT*d4#pv-}IgFTf6RYg}{B{UMF9gly%9Qb3oD*EK7l;pkh18Sn%Xy9Mi;rRpX zjRS-uygu`_(}z{qD*tuq{}yi&QYSvioN6gjAz^84k(-d14R}8@N-H32g%`o^g1#yJ zXxdrM5YR%d2cj*CE-+rBq~_ExP7;3cb48(4+>JhXnbapq0|Y~*4+xs5-d1ujq1M-n z5;Gf(oq4KrB9tox%2dZ0qadXkjYAzrx)Uvz5Kyp0GVvpi!#iyNZx-Iml)$7g!Z_dT zyxm)}f2!hDMaR#TyBr|FQ!|*30;a(d^xLOlUbg(1kYbVrmP?9VIad zR2XigQ|kUUK!Gt46A1mzq=$kJy84986?ODDadu0SwF#kYglB^i@@F;SIFARR42P-Y z=tpu8NATafVHMc0k^bc=7<3c1PyK!=q;NG1m#o~Vo;MPUnjI3jV?a$RhR~rUt0XVl z+P|AE7N)3O)Fd*Ch=%SUpi?mhM)M(XrhFR(P)@5Dh>uAl=0B);7A++LLy1g$hHkIU zGwi3<@98E@J!arYd9z-IRgzNY(i~eNUg#p85??t8jt)3JvTkHVl&^UKJ^H(N1pBJ7DgMjD*C@iDORl<7Z5=NJUcp7TL7e!)jRRZ3TepSqunV2!bV)B zI>&5e%{#kfNNlNmn4?i~8gXK^2I%bx$khdi0`g*Ef-I3Nq=FgRhVml5>s`Y$J}zu^ zoi94XRtuTR3F%BDIW#%BhC~ztrtdT=YcZ3(*)jvT+$R8IK%BqAVw_E$WN|!5KTliD zak5kOI4$`lQ1dkdc{N3f$LS8lEXxW(Fva{LlirAiW!ljqsc+QPGe?F_wWUVL;U^qG zAW&&Z&SeV>DW?3H=u30CWJ4tZ_#G4jBh1gPV(k<-=Qg5_XF5K8%O|cs$t1rR-5@N? z<6~JU=DAXOGjyfJ@%57?1#Og|DNPw4e2mfKOdSU?;kXE)kRT3i1gZI)lO9}@iQ0&L zO{1AvEor4hD$3#+VM>mnK~BXZS*B2jBNTG18XC2F2z0o>2wZ+Plg)~(KXeE+r%g*{ zBALVSeGsA6(!1V<+^esk;?&8|mS4$KC~l8mj?kMSey^gxXu3hFO!;D2%NSwXbkogh zNKn;@63PaeHA^1D1c_BdpmD|%IU0n7*f7ZvfOew)_(up<7fb<70V)9d0LTE408{`L z<|M<)5+@tHz((L<-&6%cuPWDIy7%cK?l;cKY5EZl%>Ym!oQ=z8x#$r~A;lU5MCMSC zO^_Y4BWlcQv4Uy`T2Pyv0~b z=xWUAUB`{ftOz2tu~HbWf;p&Ny~3S}^rz?S5TYqt8~X|CqE_#dL#Cv*p4C`5@@y7) zg@`Hi2xVGcaaf2%%MTwHY{)M_2nZ7wTO%WhErJ+HxWgyIeflCrIagA8e4#wMs!l~W z3*X?+1Z{}*s-BysQ)*Ypx%oYg{6Qso?VeI(g-#PLr6u|DYzQ83(MurBEE5psBG(?3 zlDIk;^fbHAZn%`|OSDJ6p)pXHF^*boZYavPB%`Ioqa0Ev<6xv5YdI11Poj)H6&0hL z&K-;x9dZ~LDFy^NEDZ8|gb*k^ECXIa?*ImaP|QHUks-2s=P5$F@GxVpkvgDB0p`RA zFjF21sUZd>Hq(6vRet%G9ofA`NKpk^-V>H8l|0-?DT`2qP?#yzP=i@|ySzhanPQ(aY<3#gz zxom4G(#rn-zNoL)q|+e_;xMlHNW?r&sDh|8BZn9V3~?6m9q?XoV5T{oc{ox##0yb; zN3Idn^iY%#zg7B)QA2rxVM#$noi16LjYPUBTX8I5XLyf7DlwWvOnDJp@!fbTsM*SO zI}|~Ln8q_0k}{JIDO>jB76RHxB>+Y0ZwX445`Yv{nSuT(AW-uIl(5DRQDZGc5sELs zuH*s0AwtmXDLYpI1O7#$8mx-6AX6cn!?|W>F>t8sXM%oS{OIQA4o(ZHE6qw?9KX+n z-bK4S(ikKynVyk0i5FBseE+NyI)g$uEtEA>D36}|2yIO#E8O9NN+BjxAsl8DDB=ns z;a5ZraRs4On64{EG3HLf5Le0(uNn=oeFZAMg}9$c3lM~G(3TrfwxLqi(uWgCAvL@A zr8c&yM)K3}Xqn2kw{azl{d(asDVJ7s$%d!rb)In>+7)I+^aTS#s$5&G!pdVuE|s)Wa?aLaV50Gdl=6g(*hRq?sV}&=gvwD+ zBKH$mS<&+?Yq7lt666cdoOoMJt-@xlkbBsq$)QmQe1lRF^IP!&J~ys4Ehw z$1e0V*%8Wsj5x_JKMAfP8-5E;36~Hg<|_egC(P#>XHZZNpfe;9AqwnN&DNEz(Fpanr5_k^S3tUy+@Rk6Kx2AGB-QNc>4M|} z%F#cq>%<}LDI1X>6UGF4WdM#)X~dK&{EsjqYd93Sm=W>q_mj*=DAgbpjLz!>ezK0? z57&zU!W2{ZQgI?mm=UUu#Xf7TEmWgkZ96#hR;Fg+u%B*n2$HhR%)?nvuwLYHT7a@r z<;U%zb{iHL>GAHcu9!PBrkuAq1ddaxCQ&HYu)RQR8|R{Y_*%JKUN5%Uxa^^gVSnOv ztrjXxbxI(uw7RfLkkusCLFdgz)&F{TKvG0Zux7l~l1t_N`7ms*u~CV}{vv@6=P}7d z({gs_oBIv72ZC2SHK-utV`$JQV#D-wAbFH^>OjHq%(}kkZ(cUE>ntv%m-uPa8)(Vt zGa$~2Q;}qIqe``UfWzn5@ z`$asvKMeYw)V*Seq+_1JM69nHc!Zquzy=?83XVdMs29!xo{3|KXau%G7`QST#Ng5) zRSIhfC87p^r(J)N_7FJ@`Wxz@i61Gmg9%~Z@_1y1mNc^hBTe2cx+F|9JCgI78Pu?3 zBc7F|Sz9!$v_b_2b1&bel!^m|X>T@F__O+MCbmZE)&?Ne{BrI>upEQzwbwt z+)}8hR8E~9{|O!Ci4bG?l>RKvWrCxC+qbjddsgGs+&T%dCfI{gXLJydG{u@N^|J>< zb8!${2zYsR&PuWc0VOTe`ig^W#kwjvyugG1u=&jI%jMA0tFU0r2E>fRT{>ZDe?^fT zobJ3PjLKJ6u&Z|{udX3QQ%ubnH&UAAJLy!UnS7bVXl5&kK9}`HOnFqtXBigLL8&d_ zgPI&t@l7OHj|j)4uvKJ2HdAM4MHrmKzCPEv-kS7MLdZ$Bg+j{WeboYOE#&`9sA$5F zZX&jkh0f|l(g`6=$D2lKD5Xyvhz>pc)ah4j1hz8mldzRTVE}?tdwwN4)25cj|DnkE zxjVdgd(^zlOUvY2U^8IC$%RCqnUs#>9dvQTBRLZYFbvuh(b7EMV>aOIgf)p#}BC{$} zwe{6kyzqWh#}(#^6{Sf?swOoAJBY|zW$hL)!iI$5tllCg4_TdW0?wVrR7X0hSjtLM z6S&rvDu;s-0y#+MrC~5v1xZZSDl}VNCa|Bd)QDik0c&+M$Plp2X$$V999NW@2+8Ob z-o{IhiUr`=0IgzAt|=3xCbhJvw+smdZUP}df2;kEj?oJZ2G_P~1j50Y(<=4V)mEUO zA$cZq^jKPB!}D{HDv>%#?VK_rFmJr%LHN7c(*xEuiOO4{qv9dAD4RYS!MfQ z{+snDe%VZU*-~Y<;nM-X>OVT1VsFp2-EEfV;+r~Tv_5bq+NqA}uY4J?UQWoCf~fgx zb;<-7Ihq}q1Z&FHzFXMY@hYN(T#7>RSuu#QW9I2>T#5&Ug-dFLuSI3!vLZ!~2-XDe zkIm1-WP)-xhlRpZvAB>=&xC= z6;jKmPZt$5IyfMcBLRRYG&&t777T`hW1xVzAUrY+4}#&Ku#FjYt9(*2MlBpIS7%K}9B zR~^V~X!-H5%X^T|!+ibCxSD2XPD*fCjY8@lWp?ZPsY!|b0mXpIoGsQX%5B>LJZ-?ft z8W3e}_i;v@*xV&rk$Q%T8!cMta`Fa+h2;jMMI>csBqCBnV-jH@7(gu@9i5C$h3|&q z0gy)U7qktWiic)^y(AetgGYgoaDD|$!6^jEi}IQynUMr!o~6{kI06{70UT%_(1@bD zNL7XkdjUUq#zj4`jxbzj)peqmSI*|PZu)?lpq5^OXjIqn?k-csF_(%x}@F)#PExCc6Bm>qYm7|H={z`KTlM4%;z1oH78jFX>-^k@)mDd#cc zb*~K%p)VmGd3H$_3XXZid&OOa`2;y1a>M(RP6{$$L4bt~GP)!MN{Ecvovk!#LSRmK zN+vND2@Zx%K-pFQ_(up>Jx&G01;z#21?mO{20I3X2JPl3NW~T3Jd$W6-dkcNKB5fK z-XJ7Tbn_ZqY0z$BI7t?eN{zHd81HSQ3<-|cEu5rd-N5O^&*9t@<3PtYlju&{n#%ox zJpi}ls?e58WT&OIV(Zra5_SxQpn##en;yr3S&(8jM8g~qm!uC%gB2N4gPoAJKvzLG zU&Ox*8mT17mq@G}^hzavGFjMD#ZCw^g$$_*qJW&>>Y98hGBX>PH=^f-Mw&+g{}p6K zbkL>*j(Ajn>v&~|m`cior83 z3SfYkEVRX$aU!DU#*yxkCpTe0j2ib?eRtc~@WP z{2I2AkO=nMv(j$XOhMsE=9w86mv8ba*1cUFf$9fg%-&0E+_#wtasz&Xk7~SE4Atawq4{< zTdy}8tV2|nJm&eQN}9Bf8e=q><<4EP10xr3Oj5ZxyA>#$EOO~2$4V}eD6dBfGRsCE zqB^=Uff7t@aAG3RMCO=;q2Qzr4938PfI%q>Vw6zj819r2Tmj6ep4z~V+vr5QvDBK9 zk0HauLbR8UY&6uHmrx**21%iKd_Sn=ujR*CbcON!a*Jc1*a|USh3F<1CcEg0GB9|F z7DUPMHopg_xK92*Nc=~xq-vOXI!y@Vx6EWhSW>EJl@QQThRFphU8IS~ z*|u%%7o~M;8EfZU%509X+tkVq;#Lt8u$^o*t-zOnF&1KO;zUz}Ct@+F$vy+a;>@&K ziAftLkil2cd~lFkNPxPvd=dr$A}z(SQhXPK4J0iF{yr{WkReAZn3zn?(^W`Eq_k%G zKlvv&yw$ej@TtBr?=+FKnduZ4yPlQL6J;KY{p}M-v9me(^t*A?w38{QgkVo@;I$l@ zSHkeCE_tpR#1fl7C1MUH9eot z2nD?#p!z%em@Fnxyg0iYqQp_F@G3aQCZ{1NK3kCU4^a{dNoACSMlo6n5H=hO9V9`m zwnZpjShQ>0r8-nj_&elCKukl!E?_Xo49scWEVR3?P!)DJptjWXlEEUXh_=9-qS2K_ zYeW>uyy)V$*#&bhy!@ik?bIq4|3WVmS zpt5V?q|D(TrG-c&cMIhd5HCS!qc1Xutedesu9&*^P$Fex1FKr}SrhlF=Flvk3MNGe z(Zl7$Ag8Q?tCS1e8tSJDbeOR4WQb$f>4!ClteqylYZ_te0<7bd;^NW*D3fELkqk(v zQ39gP%2zFH88j$SfseSij3#y3kq_HDCm|i&plhN+rmgmGlKRm&zcP}iB8<}l9-)b0 zj*k1ap84NOQf|n?GLJq z_CW;bEWSk36qY(`0X0Oen0i_nL~c#C%J>l_ArBjV>`D9}+GNT>FfJ(wbjGO-{5B<; zp_Xo*FC^*sUR_-ZeSnB+o5NmMn3Z+T7eLif2bi9pZ zT>T`4?2lG$?A67*1mtXwwDPZYDg2H)$7mPFz-pD^5#P`9G@v*Mkq)dA8V5^6EI$Um zsm!fHAsV&ur#8yhQW2d@7Q4WTRESrz@?_5Tx|~l_#Kw6$XVT5W4Vqgcw9|dP#3CM^ zO`c9_Gvejdnt8hlYN1OTJ|Dh8e`Yy(24p@I0x{Cyyilgn1jV<=X~|j9O1?n7O0Bi; z5{E3Qojr&d?VtJ(7vnlE$BD7+p9nkG>8$e`)a^{BO2Bs3A`I5$0Jw%Y-6erQZTE0=r?GM~ehR`a4d|@ACqJ15N@|0%qnm&nSN{2Ox z+w&-U9^Sd_OKM6*EOkdbVMJ_CLY50iJ>a#3MD&<3K?pcgLLM|?mMbFCE8=!n+0-w0 z!9&&5&cAY~Uf8#VTbZGaffipRnpu2HQp=H*?uYm<23j^F;aNYv8-&f_JEz4Ttw!4u z5^Kp@Zb)5rhfhmy$|~1-S*3~TzYr7F+TsqNscHym>t|@IQZV&9R}HK84KM;+%t&`F zfh15coVrrP%?Kd2GDv&V(QkyI?k7~FXSXOCK!{}#eyPi$itt7PDP=e0pTIUoi{XAr zl=D|8X#yxWoeQ*&gApvwLLrZGQQ)!!ftr#PF;Q7v!CpAeQWb@rr<^94pn_Y}gV~PK zqVj@R(0Hh-gOv=I)bO1lb{%CC<`Y*`Mgy4BAf?ow&tAdsIY~2&ihKVpo^{eZj)vTx zx$OYeIa!vyAN`{=CrKvIrLY?_265A-tI(!fhVa%>lkl*YwU6eMfZ+--fJ` zW1+dR4RZagW6d2((zhWhN>zUbIMVoKxUFZd{;s^LQ#ERg2ur&!M;!>F7P7eOt6*}v zR0hr0L0(oEYLG0fN#BxlujuBBQ=7wU3g#>1PzgD)-VflpcP&u&T&%%QaEWebFmj(7 zLJ8r%N6>jPB=>5y9>nEy&=TV*T2ZKxa}tY^#wni7e}%;zD91p&T2$;ax<=1F8AvVz zWdcRml`+bum-U|JnI#S*th4q=Dg$gSTSzW_ce*6s&R6;@hm!R(*v*l&Hk_vtO|&N^ zvC&u%e$*i_q%X3Ha7EqiUE0T>(IPq&R+B!zCDWHtu|IA;FhhtW;i2=P zh<+=FZO)fkebi%@?7e_ZRM{!C9wzhVCbAKC-VtNqQK~YrYe~hn$Q%UY{$){o0lX;? z6M!eDgC(g%&fV)yzt4by@rQrk%Gw6)Fej46Ti3Kn8?%Kq`++q=Ub)`5p_S#H> zkvnRa*9oXrVTsywWL@~2WDw&jwI?Svl%Ep~hNTH0h|7G8 z1jTjK85-R#Xt0ns#HbDAA)n4nOsWZaWtKP@N!~6+)X`B9Do;5pNLg^F%>{|3fJ(~w zq1ur13B%f?3qzhx{&a~ox*Q@Yr? zojl9?%ET9bwH2s?%9NWLxGC*^mcZ$j2B7-SN|SiSpIcAABPhIb4Z3Ry7>x$h$i8p?{+`igu-0=q^r@>0X~aUHoYRQucR!Tb(;eBAOpPBlcC$NV33cnhD72+}N>g%U`Ze8YUhc7} zYJQQXeo9<9YMO?R%c%VISb_+jyGW&(1l9e;y-mw`R>)VL-yaPPh#CaP6;0tQ^=Q7* zs-?={>S0@K*oCRZt~1zzdpaU1)_NBVFCsMVv^qtaQH`1vm5;eUEE!@VO>Lwix5~d* zX>;Vhy5XdS@d$889r+hPugFG9%J|YYOhzq9l+SM0C7Ds;-mge}k~>~S)9y`Dkfo9) z?HG$J^Ev7=kuH>f&K{7=dz}=EC8N$)Q&OTwmv2+Wp@2i7N4JgIqT@|f(RpVa{iUh% zmgpMffxn}@5SuG|HtUGkkn^cAfibv7b(brDwN{@BPZ zN))k9>4R$?O_w|}gi(vXeo)Ml?qE zKpvEzShQNO$zjoIR52(a)M)Yne{obo+KW~Z%S5g)vk1cCXjq-ZLYw0ISSXTp7PpnT zx|Tm0XUeW|(I`R@jDESuGK*U4vah`1D)+Ere^PH*MU5i%mx z3am+;^Clcj45u?;y&%xaMV=8Bg4#Jqlo=5AL#S4>d;?+ z!6yvyRn({N5fXXnL@&ZsC=l5X;5XqIFrG=={Wax;oei$!V3 zMWgfx9rhrb5a{DGsVZ~QY$y}OC6h?dgpaSuq1Y6}`zS)Y$gDMIC$W64&zU%aW0M4- z9Pgn!OQof!oPXCPWAQb)i1#7`6tuqW8a_mwqI~;l;icwdljW`&?)R=TiO13BSxQ4> ziD^f3R1$P1&YY&3G^%CtHO}CSr!8D(ecl%&!uc)fyQ%pUxXMrYAzA`Sw%;rIb=2~l6cjKF@~IKq>cl+Np1)AA4*@#UgZdhEjf4akt5z9VdQ){(Hb*xU8RbL9G9NL$ui(?~plZe+a;`)|9|le&&aEs1sn(gcT!uI*%0 znpuw0$C`jecXrH7i;1<5GwwN;ucXC5k9U@jeAJSws3sDPHeqD;)Cv(#GE3}gaTV^e z?3+)*?RUA+SsTmrq>-7z7XgltDSYZ`O>uXK3z#AiC6(pntYXMI57K63#2>yuBWXru z|1mI+-P`EkJcUGt$=yPHjXpmz8bD~wcLPjHrSg=wMv>F@%>aRHWS>TYDM&)Iofmx{ zW6o^E@Hz~%D@n7zF+J7=QS@}XAKJGnY@N?@$rYNZouv_(VN_9VNbsdje7R?}`1 zWe1-a&`ch9erd$YbNev3>g#q%GaBk{VsV4j>+7Y)zjCh$HyaF7-ft?l!=JAxA)eiiaC+NrM@CqmP8PeN<>e{*{W+HLLi19$O*&Q6n)7USx@@o zd1^UEA+&Tk5t>i0V)Kwz*Tm*I$aL!j)e(xLx(AFCb642YGz}pb7KU=z+t5xg{MVWC z@}Jj@5ONF{-- zfkJHk<_jkgs5#a#Xlyohu z`PD5Jgqfas`DnjN1o#zgArosT(wKOt`A-yoCDATj@u)i$5>L>AkDs*(UeVbT4e;C= zx(Qug(*K(8>3<5^ncfP@lM`uRFB00Z8Ty+N)%vaBCZ6HfMhGr>0o2orPw1m-^647< zjWTLkfR`S!p#wx+!zT+DguL9L#ko;)TB+=^#Tr-R%W`h5e0u6bTr>V~)iAhQ-sQ%U z(a=_VHkSM&ZSg_YBy4hM>A$)tGXO!Sf?0OqfrlfkV^sC#miaQWBZNJM*pkb5@Oju0 zm*WLMS!(LU-s&Q;U;IxeU^HcdVjdVBC2(ydbw*oRbhxn}ZwE1A*f4`_1p4_=iU&Z0 zL=uD%-*B^TYtLpvFad%+wVZa{h_o1@Am%=a9|w}w;F+jDrrR<9$UY@veqQI9BhX1Q z(YfWK4SC9|L2vFSpXjkcP*|=;cRIyMJ3^Uv)?t5(V;+lI3^u_h4@n^dALyoM1uCZsG|K5e}(O_%z{_&0jKB;{?h zQEsNp%&YuDY9H-axQwU5_}QILO~o_eV;XoN)C*ylRERFBp|P%b!tt;8DU){{PvwQ zK6LF!c9u%iWU=liZ7ryLu7<*3U}Z6|ppA>Z3L6ASgaYUb$W;g(^gbCOteuu)g>I5a zlf%c*X|uHhM9$U39naFj<#nalnN;+`*WEaK>7`9^iG&bqclHk&wUlM4K%8O&VE}6U zEHN7hi&WklBwwg1T237o8^RP$l6X>tN~Fbfa*Z)kBP#STzxtPAjzaJ+BoD#Ez0os$ zFt$v>^8zt>8^q#F?xsPIrzIuq+gS4lLaN&{o-MgsEJo9lCz+(O)RmknWcQ9dmTu8s zrhJI1)h)-`Zk=VAuidNS4RbWKqEB>XL)LInl%~nzHs^Lh&P&?-k%@Ss(UqFMD)|$I z_-zEclDZOt1n?x{Tam;L^H_?E%tq)#WNMU#1767dLC4kUPWj~2{U%h;At2`70?MaGkx(T)&lS1DqiqT^F)>=sy5 zSxT=hDni;toI;qI-oypzB!seE1fDq1Edr1Zz~F;|intW6BpH&f5R{&~-SgrjHRscm zJ@gi}O6ahFu$Z97ZqP`r1wj{qKx2iZM}YD-GHgUeMg|TR>vgIpOomx_!DXtx|C4mM zcYw)ci8VBT-E=nDy--3T6!Pi)GlXOOq%^{J^m}{ABK4DN#+#CBmr^YD+^WyH{&G@I z_QNH-Nh>AZd$2h(k{ZDfLNgkwy0ezZDk8nZh*@#RtTI5krsax|8PI}Sm^4O2pd$z6 zq#>tCz6w(j=-nAi#I01dNTUtY(p8tlB_^`AZ1AX=5K%k8)lojdK_Hcx-H8;w&5EX; z78u8g{XE=NvD6kRNTMQvQpWsFqPXhBB!f7Q6WM&AkhU5+P*_%(*Dqm62$+v4GI~KK z7sHJ}d0k&Jk-d5{}<4G*sEFqQRKMIuuA9RA} z8M`0q1Mo;_Ed;@cncqSI`Mix!^;RV1l0KPu;H3DyIJQ(M5_DOBM6Zop68V|#(VJ0I zCh5kXY~IuWI&luA)Z;+u|0 z>69Af%0(&u0y-zH6_84?|npOl6x(jI}mg(n;>c$lfJ-Xtb(ToMF-|zb=e`Qc0af%3V>j z>Iu#O+(0)3U_1&;ojW=?N*My1@D}@u`nF~Z2IO2f`K^LmQ;=dLk%!bnO5&6h8~Q#d zhJ(je1O!bRBFk@!HsGQyOX>*e5xjmBrL}f5WbRCgCrx+AT6C=+PQo~iBLb7QIG3U< z-5yI^^cLQkyqANiSKG$BND0xiI28>D!16nSF;!bXb}z=Vq+&?xkD)bOC5{%SfIF4{ z_(up^G)@2>05Jea08#*60B`_%0F&mMI?s5EFZ1zC9udIFIeH4Ff}mJ97hIIQw3TW$ zyREaqpj;RP3Mg*mjqI2f7z>930xPR)vLuX?XNo;lI(g&qXspMshJqrgy$Qos7|!At zj$wD2lq3nl=cxpdRB;}~Qp!wKM?>(0d?hSE&d%=Y+oyBT#1sP{P7<6VC6Y=cbziYQ zG!~9U2X51Ry_C&na(b?w3XhLUi`Qpku-p@dV=`FKJS1?73e>khGaH?oqoAlrHW4<_ zd$V%4{>$@XqatDj2&Rkw+4`PLmJty$Q5Gx6#HQwLeXeA!BeEpOx6@_GuB%TtXs5j! z{uoH{V4&c`)Y9B>1%xDE@dkx1RTWvw9w10~g@2_Upwo~f&`S$NdM+kqW~*m?;W6f) zZ|XYxkG{kutomQfWM0w9QV`gE5kB~@4ZM7yR{?rRS$ zvYJW8|5bS~c=5*+_pR2|Mt78ddwO+r*;2o*HxlGgoGe`Y4A;WK!cSR3OFtz`7)wLJ z;A`7$ZCM3L)Hb=?g65B->{MdCDzFz#KOGz(t;-A%ak`2+sFO{jnG7)Qtglx(l&wdl zn|b=PlTtnP%4w$U3M$O!w+|3g-NYc`MwUT$Oywekm_yOudyEn=aHGmXx15lSH%Q`h zy=j`W^FJ>+6!uGtm>Lpauih==QBaDsJUT((otiEg~B1L=%G%QVImb^WbamwmGmPS3=H?d@HY@@ z1)4V!G9VAaL(!E-=^ZAiq^q(OEq;w)(AX}0L%_vMl?sWdx>Kxy=U-Xu6#DCJY9UD6Q43t~_7z2LG-q>h?Ek*5Y zvK@%auAvZ81kkUt97~2^lpPf^glCBHdgemWv6(dwh)CZt<-mNgA>FlIi>34j(9H|= zNS8bXCL1=>j#-D@pwCHN@}=d~{XQ7AX;> zH!qQk?G~a~Vg$L1oi-C9`pr&C;{eji73{?G>h=QEbY?iH3eDb#mN;sn;!5m(ng3K?93O(8-mT9p3*>p)Dh& z091j%#M1}H#Z%{!_%C;ELez~+jI)}xR1|>`6hv?J(j-x@Uk4~~K-D0$$04T>vUDLc zHa@*vsQU1GENppJl|PbQ-D}gewsd`~5{Rj)SjV{;4Uz_j+KSjBl0L7^E^%2q@cVD{xD8@P#ErnNc0rq#6UL<@gJ2=U9YGnTAMeG?-_3G5n^$m zml6Wn>{Z1*kh*m5Btn%TV65JB0^;Vnltb~UF8it98!Y&ON<3bU(miYMK9(qWE=k>d zkkUfkvn%_#@g`N|y#1e_d-2T<8QwHNLYwDfcsW%N7yd5cL!t3lHwZ2e#5NlT@856* zqCf@9UTwUhMNl1 zLoUmXsS$@P!aGR=V8C>#I&lsHa*;dI3y12}Xb~`t?nXVaJ-sNwMNba7PY<-p$&*+s zWVjVITY6BT9+EoVYlOJ*RoXK`O=2P3{FNJOFPg0{%Q7vQ2r#FSD`znVR}C5R?~Wl1 zD`0?z#uK-Pa5D;Hs3a)DRdmw8J27OMkmy;wJ9803`1Ys|VpoQ@V<4K0e5yCC>v6NjfO9PDJGC*VTmZ5FWB-f* zcL50i7Uyf;qk1qHPCH;j9EK@?d`HmIUt$o|+2^)^IT?DE>4Hl2*u!_^PmX^%on5}`}g@v({+LV!=_`WACqZF743s{Wz({P>c7D58O$UA=w1^F>xVZ7)Ty~mivD^h8-uXKU|LNP zgy%fwu_eWQ+}<_`?}-kiBZKCG1EC|V`h@A&Y$|YClP!Ml6wWOD5vY{rd`S}bzYt3G zkqmH@`Yp@n@?$#{Cp8D6p(@)qH4w=Htk*KM8lxR+zK-Dwtk1~OH0G2Xi* zsq4os?}oi!tNiq`GW}BO+*KRyFV!=!ctXRVGkM~W812m5CB*buBJ0FIqLj1K9r{dZ zJv=3>Sq%t`MK5pBOydzf+mO87haw}tgd{d0NnILpHJQXzjB@JhP{b$s+n&dUMY`kR zHx{Ijl425Hgw&(|;IgXl-&2t} zRX3l@={#CU7^^gp%H=R7q|}YpcG|sDZA`}FVY{KJEL{opz0dy@J&fZ@qPt(?nwgxL zLP-;ffonyB+CvD3fQ@nVF!VJw6k8Q=eAzTjfz8_MZ2Z47brGrAY(sHi|J9eYa#^Qgk!OYz13 z*VWQ3KS*kbXCvK~iGQW#Exy*eJ=%yR=8FM0^A^#Pgtf+ALSGXTT;Iaa1A^-$Am^c_ z3+yN*i)jO;x(brVHzhS_ zsadN!uwz$bLXeN(R`yx8b`Un(4F^*=Tllyt;r>>bMPq-z3##}R7cJMwP1+y-g~OtfJV zu(+t1{4~P>)6dMD%8Ow{RHF>PVy^iZ=S?G^4D@M#4P)Y`jVWz((o|o9i=GUh{Lw5B zor|+MZEV<6TH)x!;Ry%oF)pNaV2-zLTWiD==poO!Y=0 zUZGb7AGMYDcD=46;NX-IFmRXnDH90NjQjB5>lC*Pzi;T{B0>!j=*^#r+e56Qw#eeT zzdV(<`oydWl=_LdLd6wOGeyfwu=)SUrl{s{cDm}N%ueb;hI$VC^m7=DHT%yg9gwT; zw9!cpbg!~Xz5ISkX!mVw%(gYfznAsZE-IZGPORA<9fU>l#UnC%e<5;yG9`#RxuXh8 zWQ=Xmc^5+^6KQPXyKzU;=TVZ+0wp_Q^sS(3v{nzO%rtI zC*luLn_m&xxR!QwdO+Vuccyh73Wj9;GB3|Z5y1}{lrhM%y0!6D5Ve%F?>5{z9;7xV zBMGD+;aeRuCQ>pU`vb}yWRQC#Qb-v#2!+kDDHH`X3k?TJaLbe-xvXd)mnlZA1X`%3 zJZrq!mi02Ix~W%Z?u$~~gsISHAcWIj9$b>SMSGfY^%S42a_|#}P3kPbCmO6@Y>!wL zo-T!~M>825b;H)@B~a|&-sachg@Ks5-hD&Mcz2oS?A(dGbtAmQ8@CGYXArH(i%2~M zJ@KR{k`qvziOdOK>~j7RtB6YTzi>~Ys{~r2Nds#UT-@ala6G)nt5ra_Q6^1kqV&rY zM6v{{T+hNfIUCE!MT*a@7eDmPxL0E4@3XSM+#Zq)inl7NB$KyKd@D80lKF<5K{W;E zT~_TOKABW|m+h9fa(*nOj$m+SQx)0kH(NMJOD0c}O2N{FBIB009C!(g>;KaeDIp}l zhi?1o8y}0K0G4^3@Gqv-xUDAFbB@kZ)iUN!CMaa6Q+N=)ZXf#BHKtPf-4IPBsFS1b zRY24x7X4=Mf-*jqDD+cWm69RqZz^YKRM!`Fb3_Rz3_vs)FO{mfkqnMPpxxc1?c zVMenF0Z%gq(#m+nI+5P>(}ve}`UL^#LGR8BF1)z<0{}u6S1y<7a|*jC=6=*&dPE>f zYGcGi?~1y*B6D-(o48Ol1S6Va2(EYW`cajYOe^A6%q-B}S z7kOf>pxHpBotnxM$xRSLDCsuR$v>_iyyG^|$R?>(rb?Py<@?GZi%;(CY)qY?0&JIy76y`WIDB9QI=}H9s-uK0lga&yN55SZZpvBxwnl`TzZGPtV7ps*d*LpB z;2mFAyw&%cv^zl@ikPWu4D81E*EGj%3+bs+QsAY`Tnny-*(Nc63<~10b6|)vtL2uC zaUK!rT<@-L{A(AnDfq)OP((~SE|aN1{7^86vlZ((a3x2W*KodqKvzKKTEe4JG>k}& z`Cg(L*?P17VKE38p3iGy4|TBOLi4#17phqsVyD!ZiQ^YT|M*7;T_#NaN&dC}fdD=L z82;J*yyrVzoE~kL{V|#D7UG!%bWpr)&%jemyzbf1#)@NB-j!5JI?x1i{+|1Z3Wv`_ ziYFNVQXhoND3lNU$0IbM^Hx-yWLQ)nB+dC?B#qYe>4$yg>Q$h>9ldPrXt%6?lx-f{ ziUDt^>5g&cAUU~FY;08{KJl}(u2bL?bNKQwkj?5M7Q9XwdixAANgOI=pG6MaR+51Y zZIvd`KwC-B$D)M3+fdDGIR{Gmfnhm#(=H_9Ccsa)A_e>vIS!dKAAX~8({Ai5)Qb;> zKeSU8t-`p_Qw|k^aJ5_}(D=o0zetDz^uv_?)BX6sKuD0Pt5qB2-OE3~dD{ z$7&Raq5v?$c9YnTeFRQdb3$OTJxHd49}`f+e8XUZ=t@jigl&dSni>UBZjlr*k-+J^ zh@Q)6V19KT2ianp(J&^Hupl+PfMf_Sp&^8hS1A=klgN`IlKZ?2{S2a|9+@zYlpB?b zY3C#G*MqtdP_Gygy#HB^BXdZxPyxk$4ag+N7Sn5=J#$dsx%v+lJDzq!dg; zQHsnpC9N%1EG;T1ZZWNxmV%|6l{tzgEp4>DPVN^`1N+EI=fJ zH%An^2Vcp+2BeJpTlxBxGcuNZ^sZs?vs9V(V)5gUcJP8GFlIJhBY}&+txtTpOA?J~{s^ zw5^xsVH#=dKgpq6;{PX_Xs^2WLo`}<=DT;S?-?R{ojpCZ&8N|3y@P7{Ve}8p;ucBe%0IE|F;{Kb zqwD#PO&g2P?#Sj8c^*vNaDq-YyQya9hEIMh+;;!KnT1>a7)*KpP+|zr# z)Ru84cb;?CM$q_lxqh4W+y4rRnxC}forv*354yaQ!hPhCj`Py<=ihAG@I}zRz3@*j zDjYqJ-rnA?t6h~FGj->0Kw4-;>$Se`n%gt4brSD<+qSG?-lSC}G28w!Ki{|dKzfdG zT1ig1sNuk>$8Qcbdpb3NdCEza}9~-Je5W4ZHS)d zEbFd#cQCj9i|nx_!&i%iyQhwr!P2=RIZ<-y!%@Aj7v;%&9Ga3dFjxc zU-ISf7(1^MIC1D{XF=9G#bowdyH-lla(e29PjScgp57PycSRj{`QEg3l?PX^Dh=NI zpRALQw|}1VL*B*Zr*>A292_Y6er?*KKNY9L=|R;M^U*&v($C}euP4Mm!yWzdC-#)Z zX@e*4%@U(^>I-5~LAOU^>xeeTb-=72qAsr4{>^bg=XcEhjRUFq?={)0P8F+6L(76H z?HR@E;|84d1CRFnU`jF_J#~h9uYj2Q^*?L-e%zK_-b#P9Dy|1jI`Ze%&$y#SO&_1p ztet6i@!1ETB`q+eONdq1@BBIYE$f@#|2%l{30KiiaQ zLPpPBOS4U`pL_I8d#L)>{kX&14L@Y13-`<}|Ih8*D)YPSBOyE5S706M*7R0&TgQrJ zs|#{lrP(zNx`kPLep)th8y?^F*XIGgd9`1%!j`<)l=twVxeA$AIr_~l*;4B@*QsEB zy0Lk#qF{-wK)6S2dDOmlYOd&JMqpv*?bZ@(QqJ(?>aMGtTcb-1@GIwYBQFORywSd^ zsC{$J*slSG$x}GN+QBcQ zWtG^p@GaBHwuc>9=%K^cZ<$+rPj@$O8sE7oyR>bL?oEDm>Y~izn17xo>3dnNUlC(9 zB?-&lI_0aMYp5{JcF$p0x2yb<8<+OM zqHasCFXrW`_*y>a6dW|ag#i`_F@&=Y&r_ChQY zeVEe)`JwgOor9lV`F42p#XjgzdOWnd`J{gLbfCzz^C-pIk#&vfc=!8rhvt76 zA6s5YXdc{nF!05)+|mVuumAY|vSRJF@RzHNJFH2kp#sHVN>V>U7E5x zM~eQla_>IHkA^ilGd?&lbJuJ;)OClU-aoUpWy{fR>yGyt+diDJ6Rg@_;s`jEbv;Jb z0P&4m>mKtz*baYv{l|IB4BO1{BWF1Ni5;i&qb|Vr?NM)k7$^R(JZcZ0H+(w%vuPsV zSASge^w29dWqh)zWyQmqjvXAfsIX7tb-k{YZXjtftLIaO zBGzqbJT`Gu_gXzae2%JY)!r}TYIfBv@A_P|{;yJ#7EC_Py77K702H`_(yKp zfrnqkF77un#vhM7ot<8{qH{2cTI_PIpVDc znG=^DVx8}}gx*EVn9|Y%WS~a!Gi3R&;Jt4@`%`XmMx1|RQFp9NZ1k4gal8_4|UeB|1YZBBm3NdR~ z$T__Er+!GiQFL)q*Rz&#YUDy>%H=bgpEo^USuQ^4GVf>c=~a4D{Vn_! zdq};o_G~UwNV%5Bzw_?8MpX-Ez}&OiEd@{8V6h3J z_KP`RPJ&Vfmhs=5`PGKc=n=MQ-52&NE_*R`n6*Hg`)NMix0Q) zkk@x!Zj@x$r>W<4&R-H$1RlDy%014YMe87v572e+-K{%$SiY#<6H_C~6xn`${wv{W zAgW5Q+lQ}cSNA%9{nLIL=ia%Olr>Nk0-r;f)Z4#_`U_R;No>_MkXPqI+u2BOe;%h7 zuZm0w7vZ9MR-ZVhm9(2(JXWX5b?zv+%`cBaB2iqXGuMu z%MlgCunQ=hL4=CkN^JaTGbL_nQ#Oh>A489zu8KaO}}39SeYrkz|qKtcU{5JMm} zO4GIe7RzA+1Br4*g;kN%Av0luiAeMgh)#E+)yfvE)nGskLtu;E zGF`5o(?!&CuGhz*TVQyJRYvZBu_~=sK%43Yrc`uEz$IY~vE#@q!2770Z|#06 zL9$Vml!q~}RB-!jz%!RoPIZ&GQ|V0sZ~}GT^t~i_$cJ{Joo0hso}^QD=*uoEk+9(fNTGRYB;LZ~akFs9 zHyL!{Sq`OJ3y{mlY4JT`5dsz!vvw$`3ET`ydWBX#!#xW0F#_ZcB|YKr(BmUk#Dd`A zXg_`jQ5jG~`l`r`-nQ|Ss8!JjOzD6S#dwQXD4&5JPemC4#cYZ}Vv@s=q)_fgJ>TQi zv=#dKAbc89xkZCE7_HM*LL;+5TE~kwkh7)wAsUevv%(2YRSLvdM?9cP9waI;wWdd5 zJq|$Im#B-EMdB3%VZ1HU6Mvd{Al2+E_i_-)2no=rM_Nb(AEoS|9*5Sba&HnYEin)e~e@Yq8U%)m`T7SQ#Fy9e1D+TlPt8? z*%uU4ZGzbiG*Cv9QX7KuoRmyhPFhF=at8r8Y4Ff-IGZ$cAxg~+L|l0WK!-z(er6a4 zJW40!ni81$0xv`4JRPcZst|;qU{OA7rmMQ0j=>I}E(IErRLr$``m+oOZkqp~1)zIx z7bj3C4|6}jae|OS)Epl|SQH@6uQW9n=@S>8ge z9FmK}{!O^T`t*Qc|6E$Ye|^QjfB@j0(57iK5*U;){PgvsNpDvMGq}8gbm{OrU-7Tmh3;m=4i(964)59fE*zlu=T*liFEuwvsFqN*96v&IH=vDq|gw zJfyV7LJA*CS8vk=Fhl#%`vzML%x*%#SabPsCU4$sE=+%{bTvGIj`fl%U!0rCa!&w{ zQ&g!bD@-o{B2c14S#6>7fYiOv3SqS+KDdp}hrq2*ADp z9Bz@Np;=m3X>Fk&RSSX$@GDsr**5*s|)f|RO75j<9>{$Xy-WQ3zD8^ z5qSZHI@5U7h6rQm#414gxvgB#fHbP}c1i~|@ZO7CWYh&ZqaW3p9^Ac%0G#&}jN zPSXwpz&}91I})fH2+}tb>ULS8ouCL;fTldXN#BlI<&-SP&Jv&~waoz>Am7O_#)8W7fo_`K&5hJq8c#Pf@VbF= zNkci}^s>3TG%`L=p<(4gq`*Xra6>bI-FE|UQA?%H>HqR6!!8&onw$Z;A9L9r3WpFR zX#QBb@E}XcG@=q#a4jWu-xM?v1l>I2OKyc`z(YZu22_c=+@OmQO5x{8O;XE{Tscl2 zh{RQuTCzf+L@K^q@o&bNne>EZ!0D7K2BR-?qt(?4585PQ3buivU;+XcBGQlhue9ZT6%0uwbKigvJgq;TtVT zjn)ltE|U{rm_vOC?j6sI#0?%It!*MDOGP9JBB-GcnR`PV2rMPJ!RRA&_|=3yZ*;PR zkJy?S;)6vKxPoW4NL-3i161#yy9l_MmNDo&&n!Rvmsxz(N-Hytavg(e8_|cT;o!vt zL*Hd3FM2S*ZGX|zP?v<3nCA(BVcU*aJ=D=0^l4Urgi zO&+97!Xa-uIxH$@sQnE4h>k&YQp_7m0k2&iq1xCio3`;|r33f>JV8+=t3-4|t>v%up#mgOEAQWzrVTjy=#H)0j#zv{J29E$nM%;;d28SmO z_@vhqqY4dW`2b;H5JvD3C}#m!T@%fqBNv(8MiYgz zag7A)earW6b`|YOf4Sx5RzKeNgM3-}vg+Q^dGGzW*w_VG}9_rM%%fR+;G)R-)h5MZFrB8^I)p+%Zq71;sfo;!fQWW-ArNe7q_aWzh(s1U%s&}dX) zc`Sz>*N7mu%n~D_%t%0u0CUSU5?%|BbeEBuA=gSdii8gR0=D7=U1Lc!={ciecfGw1Ox$S~i6O+xB@mb}+ zaxFl*MjcCPB)7p>i`ZQuFslTJII|t7E_`1fnL{=CyRkjh8fjp?Es79!nE^9y)}l0m z8&QQZiwFwNNE?R73<;eKZOq6jabV(6JI&?D34qbqnN-U$^^Fsuo zD{ekAvX@xMQw~s?Flm0VRcSS_CW?*K28t49v7n|%OAU7EAz9!-n-iXGf0Qj|I3Mn4|+(l@$WHBxRQUWRr+`al$T zibykfG4WD(1#WGQk*)1Q&@0d=v>0ppOT(wR?CnUQRuR&RvK3t@BBqD>xH25;>(C(% zIq1J{zY>pW00WQL0PBpcFpQxyM`@XX#d(m`>arJ}06z%Q}z1F5xEjY!m#dwGCpj=tuPi4^siPzDc4T zI>=@4NDWj{3PyhZ=;fd90?UHms7d#0*x3K+*!atvevIEcwqSF&r|@D;_txWY^181C zz&f;FU@u%`kf17kv$Po@>2J|lus=5-RWXM`GSeGbMs+MK1nv_$hP_9jR8m#6ypBSq zu;t;@r+g)CizpG$2Vm?X%c!KiHD%R_dNXKuxLGEDiJgbDkpKKYicgf!gYfF zy@bv<5RUmps!Oz#c;zY|1WYM9rN0_~A_VZuz4g39VFc9gHH5KyoT!e~Phj4$yow4U z1J|(}vjjjYPCIB78K%LgohCfe;x|PnA+%nJiq>A4@01{~hN+wDwND^Te1pUk! z9@uX)BB3yjh%!W`3S;wSM9>99rszIQ)Uo!^phGA#6qz)TTIBBoJ3-1aZ|Wh(EJL*k zsWGt~N%Tm6R^M)~six54Hl(sNIvCc<2u+j|y~Y(vM`F~#2Vu)xx-h+-FWQ_Jo@FLY zUIXuv@j)8m)p6z0RLYd<4hxj(qlKu7FqTk&vBta(W! +? +@ +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +X +Y +Z +[ +\ +] +_ +a +a1 +ai1 +ai2 +ai3 +ai4 +an1 +an3 +an4 +ang1 +ang2 +ang4 +ao1 +ao2 +ao3 +ao4 +b +ba +ba1 +ba2 +ba3 +ba4 +bai1 +bai2 +bai3 +bai4 +ban1 +ban2 +ban3 +ban4 +bang1 +bang2 +bang3 +bang4 +bao1 +bao2 +bao3 +bao4 +bei +bei1 +bei2 +bei3 +bei4 +ben1 +ben2 +ben3 +ben4 +beng +beng1 +beng2 +beng3 +beng4 +bi1 +bi2 +bi3 +bi4 +bian1 +bian2 +bian3 +bian4 +biao1 +biao2 +biao3 +bie1 +bie2 +bie3 +bie4 +bin1 +bin4 +bing1 +bing2 +bing3 +bing4 +bo +bo1 +bo2 +bo3 +bo4 +bu2 +bu3 +bu4 +c +ca1 +cai1 +cai2 +cai3 +cai4 +can1 +can2 +can3 +can4 +cang1 +cang2 +cao1 +cao2 +cao3 +ce4 +cen1 +cen2 +ceng1 +ceng2 +ceng4 +cha1 +cha2 +cha3 +cha4 +chai1 +chai2 +chan1 +chan2 +chan3 +chan4 +chang1 +chang2 +chang3 +chang4 +chao1 +chao2 +chao3 +che1 +che2 +che3 +che4 +chen1 +chen2 +chen3 +chen4 +cheng1 +cheng2 +cheng3 +cheng4 +chi1 +chi2 +chi3 +chi4 +chong1 +chong2 +chong3 +chong4 +chou1 +chou2 +chou3 +chou4 +chu1 +chu2 +chu3 +chu4 +chua1 +chuai1 +chuai2 +chuai3 +chuai4 +chuan1 +chuan2 +chuan3 +chuan4 +chuang1 +chuang2 +chuang3 +chuang4 +chui1 +chui2 +chun1 +chun2 +chun3 +chuo1 +chuo4 +ci1 +ci2 +ci3 +ci4 +cong1 +cong2 +cou4 +cu1 +cu4 +cuan1 +cuan2 +cuan4 +cui1 +cui3 +cui4 +cun1 +cun2 +cun4 +cuo1 +cuo2 +cuo4 +d +da +da1 +da2 +da3 +da4 +dai1 +dai2 +dai3 +dai4 +dan1 +dan2 +dan3 +dan4 +dang1 +dang2 +dang3 +dang4 +dao1 +dao2 +dao3 +dao4 +de +de1 +de2 +dei3 +den4 +deng1 +deng2 +deng3 +deng4 +di1 +di2 +di3 +di4 +dia3 +dian1 +dian2 +dian3 +dian4 +diao1 +diao3 +diao4 +die1 +die2 +die4 +ding1 +ding2 +ding3 +ding4 +diu1 +dong1 +dong3 +dong4 +dou1 +dou2 +dou3 +dou4 +du1 +du2 +du3 +du4 +duan1 +duan2 +duan3 +duan4 +dui1 +dui4 +dun1 +dun3 +dun4 +duo1 +duo2 +duo3 +duo4 +e +e1 +e2 +e3 +e4 +ei2 +en1 +en4 +er +er2 +er3 +er4 +f +fa1 +fa2 +fa3 +fa4 +fan1 +fan2 +fan3 +fan4 +fang1 +fang2 +fang3 +fang4 +fei1 +fei2 +fei3 +fei4 +fen1 +fen2 +fen3 +fen4 +feng1 +feng2 +feng3 +feng4 +fo2 +fou2 +fou3 +fu1 +fu2 +fu3 +fu4 +g +ga1 +ga2 +ga3 +ga4 +gai1 +gai2 +gai3 +gai4 +gan1 +gan2 +gan3 +gan4 +gang1 +gang2 +gang3 +gang4 +gao1 +gao2 +gao3 +gao4 +ge1 +ge2 +ge3 +ge4 +gei2 +gei3 +gen1 +gen2 +gen3 +gen4 +geng1 +geng3 +geng4 +gong1 +gong3 +gong4 +gou1 +gou2 +gou3 +gou4 +gu +gu1 +gu2 +gu3 +gu4 +gua1 +gua2 +gua3 +gua4 +guai1 +guai2 +guai3 +guai4 +guan1 +guan2 +guan3 +guan4 +guang1 +guang2 +guang3 +guang4 +gui1 +gui2 +gui3 +gui4 +gun3 +gun4 +guo1 +guo2 +guo3 +guo4 +h +ha1 +ha2 +ha3 +hai1 +hai2 +hai3 +hai4 +han1 +han2 +han3 +han4 +hang1 +hang2 +hang4 +hao1 +hao2 +hao3 +hao4 +he1 +he2 +he4 +hei1 +hen2 +hen3 +hen4 +heng1 +heng2 +heng4 +hong1 +hong2 +hong3 +hong4 +hou1 +hou2 +hou3 +hou4 +hu1 +hu2 +hu3 +hu4 +hua1 +hua2 +hua4 +huai2 +huai4 +huan1 +huan2 +huan3 +huan4 +huang1 +huang2 +huang3 +huang4 +hui1 +hui2 +hui3 +hui4 +hun1 +hun2 +hun4 +huo +huo1 +huo2 +huo3 +huo4 +i +j +ji1 +ji2 +ji3 +ji4 +jia +jia1 +jia2 +jia3 +jia4 +jian1 +jian2 +jian3 +jian4 +jiang1 +jiang2 +jiang3 +jiang4 +jiao1 +jiao2 +jiao3 +jiao4 +jie1 +jie2 +jie3 +jie4 +jin1 +jin2 +jin3 +jin4 +jing1 +jing2 +jing3 +jing4 +jiong3 +jiu1 +jiu2 +jiu3 +jiu4 +ju1 +ju2 +ju3 +ju4 +juan1 +juan2 +juan3 +juan4 +jue1 +jue2 +jue4 +jun1 +jun4 +k +ka1 +ka2 +ka3 +kai1 +kai2 +kai3 +kai4 +kan1 +kan2 +kan3 +kan4 +kang1 +kang2 +kang4 +kao1 +kao2 +kao3 +kao4 +ke1 +ke2 +ke3 +ke4 +ken3 +keng1 +kong1 +kong3 +kong4 +kou1 +kou2 +kou3 +kou4 +ku1 +ku2 +ku3 +ku4 +kua1 +kua3 +kua4 +kuai3 +kuai4 +kuan1 +kuan2 +kuan3 +kuang1 +kuang2 +kuang4 +kui1 +kui2 +kui3 +kui4 +kun1 +kun3 +kun4 +kuo4 +l +la +la1 +la2 +la3 +la4 +lai2 +lai4 +lan2 +lan3 +lan4 +lang1 +lang2 +lang3 +lang4 +lao1 +lao2 +lao3 +lao4 +le +le1 +le4 +lei +lei1 +lei2 +lei3 +lei4 +leng1 +leng2 +leng3 +leng4 +li +li1 +li2 +li3 +li4 +lia3 +lian2 +lian3 +lian4 +liang2 +liang3 +liang4 +liao1 +liao2 +liao3 +liao4 +lie1 +lie2 +lie3 +lie4 +lin1 +lin2 +lin3 +lin4 +ling2 +ling3 +ling4 +liu1 +liu2 +liu3 +liu4 +long1 +long2 +long3 +long4 +lou1 +lou2 +lou3 +lou4 +lu1 +lu2 +lu3 +lu4 +luan2 +luan3 +luan4 +lun1 +lun2 +lun4 +luo1 +luo2 +luo3 +luo4 +lv2 +lv3 +lv4 +lve3 +lve4 +m +ma +ma1 +ma2 +ma3 +ma4 +mai2 +mai3 +mai4 +man1 +man2 +man3 +man4 +mang2 +mang3 +mao1 +mao2 +mao3 +mao4 +me +mei2 +mei3 +mei4 +men +men1 +men2 +men4 +meng +meng1 +meng2 +meng3 +meng4 +mi1 +mi2 +mi3 +mi4 +mian2 +mian3 +mian4 +miao1 +miao2 +miao3 +miao4 +mie1 +mie4 +min2 +min3 +ming2 +ming3 +ming4 +miu4 +mo1 +mo2 +mo3 +mo4 +mou1 +mou2 +mou3 +mu2 +mu3 +mu4 +n +n2 +na1 +na2 +na3 +na4 +nai2 +nai3 +nai4 +nan1 +nan2 +nan3 +nan4 +nang1 +nang2 +nang3 +nao1 +nao2 +nao3 +nao4 +ne +ne2 +ne4 +nei3 +nei4 +nen4 +neng2 +ni1 +ni2 +ni3 +ni4 +nian1 +nian2 +nian3 +nian4 +niang2 +niang4 +niao2 +niao3 +niao4 +nie1 +nie4 +nin2 +ning2 +ning3 +ning4 +niu1 +niu2 +niu3 +niu4 +nong2 +nong4 +nou4 +nu2 +nu3 +nu4 +nuan3 +nuo2 +nuo4 +nv2 +nv3 +nve4 +o +o1 +o2 +ou1 +ou2 +ou3 +ou4 +p +pa1 +pa2 +pa4 +pai1 +pai2 +pai3 +pai4 +pan1 +pan2 +pan4 +pang1 +pang2 +pang4 +pao1 +pao2 +pao3 +pao4 +pei1 +pei2 +pei4 +pen1 +pen2 +pen4 +peng1 +peng2 +peng3 +peng4 +pi1 +pi2 +pi3 +pi4 +pian1 +pian2 +pian4 +piao1 +piao2 +piao3 +piao4 +pie1 +pie2 +pie3 +pin1 +pin2 +pin3 +pin4 +ping1 +ping2 +po1 +po2 +po3 +po4 +pou1 +pu1 +pu2 +pu3 +pu4 +q +qi1 +qi2 +qi3 +qi4 +qia1 +qia3 +qia4 +qian1 +qian2 +qian3 +qian4 +qiang1 +qiang2 +qiang3 +qiang4 +qiao1 +qiao2 +qiao3 +qiao4 +qie1 +qie2 +qie3 +qie4 +qin1 +qin2 +qin3 +qin4 +qing1 +qing2 +qing3 +qing4 +qiong1 +qiong2 +qiu1 +qiu2 +qiu3 +qu1 +qu2 +qu3 +qu4 +quan1 +quan2 +quan3 +quan4 +que1 +que2 +que4 +qun2 +r +ran2 +ran3 +rang1 +rang2 +rang3 +rang4 +rao2 +rao3 +rao4 +re2 +re3 +re4 +ren2 +ren3 +ren4 +reng1 +reng2 +ri4 +rong1 +rong2 +rong3 +rou2 +rou4 +ru2 +ru3 +ru4 +ruan2 +ruan3 +rui3 +rui4 +run4 +ruo4 +s +sa1 +sa2 +sa3 +sa4 +sai1 +sai4 +san1 +san2 +san3 +san4 +sang1 +sang3 +sang4 +sao1 +sao2 +sao3 +sao4 +se4 +sen1 +seng1 +sha1 +sha2 +sha3 +sha4 +shai1 +shai2 +shai3 +shai4 +shan1 +shan3 +shan4 +shang +shang1 +shang3 +shang4 +shao1 +shao2 +shao3 +shao4 +she1 +she2 +she3 +she4 +shei2 +shen1 +shen2 +shen3 +shen4 +sheng1 +sheng2 +sheng3 +sheng4 +shi +shi1 +shi2 +shi3 +shi4 +shou1 +shou2 +shou3 +shou4 +shu1 +shu2 +shu3 +shu4 +shua1 +shua2 +shua3 +shua4 +shuai1 +shuai3 +shuai4 +shuan1 +shuan4 +shuang1 +shuang3 +shui2 +shui3 +shui4 +shun3 +shun4 +shuo1 +shuo4 +si1 +si2 +si3 +si4 +song1 +song3 +song4 +sou1 +sou3 +sou4 +su1 +su2 +su4 +suan1 +suan4 +sui1 +sui2 +sui3 +sui4 +sun1 +sun3 +suo +suo1 +suo2 +suo3 +t +ta1 +ta2 +ta3 +ta4 +tai1 +tai2 +tai4 +tan1 +tan2 +tan3 +tan4 +tang1 +tang2 +tang3 +tang4 +tao1 +tao2 +tao3 +tao4 +te4 +teng2 +ti1 +ti2 +ti3 +ti4 +tian1 +tian2 +tian3 +tiao1 +tiao2 +tiao3 +tiao4 +tie1 +tie2 +tie3 +tie4 +ting1 +ting2 +ting3 +tong1 +tong2 +tong3 +tong4 +tou +tou1 +tou2 +tou4 +tu1 +tu2 +tu3 +tu4 +tuan1 +tuan2 +tui1 +tui2 +tui3 +tui4 +tun1 +tun2 +tun4 +tuo1 +tuo2 +tuo3 +tuo4 +u +v +w +wa +wa1 +wa2 +wa3 +wa4 +wai1 +wai3 +wai4 +wan1 +wan2 +wan3 +wan4 +wang1 +wang2 +wang3 +wang4 +wei1 +wei2 +wei3 +wei4 +wen1 +wen2 +wen3 +wen4 +weng1 +weng4 +wo1 +wo2 +wo3 +wo4 +wu1 +wu2 +wu3 +wu4 +x +xi1 +xi2 +xi3 +xi4 +xia1 +xia2 +xia4 +xian1 +xian2 +xian3 +xian4 +xiang1 +xiang2 +xiang3 +xiang4 +xiao1 +xiao2 +xiao3 +xiao4 +xie1 +xie2 +xie3 +xie4 +xin1 +xin2 +xin4 +xing1 +xing2 +xing3 +xing4 +xiong1 +xiong2 +xiu1 +xiu3 +xiu4 +xu +xu1 +xu2 +xu3 +xu4 +xuan1 +xuan2 +xuan3 +xuan4 +xue1 +xue2 +xue3 +xue4 +xun1 +xun2 +xun4 +y +ya +ya1 +ya2 +ya3 +ya4 +yan1 +yan2 +yan3 +yan4 +yang1 +yang2 +yang3 +yang4 +yao1 +yao2 +yao3 +yao4 +ye1 +ye2 +ye3 +ye4 +yi +yi1 +yi2 +yi3 +yi4 +yin1 +yin2 +yin3 +yin4 +ying1 +ying2 +ying3 +ying4 +yo1 +yong1 +yong2 +yong3 +yong4 +you1 +you2 +you3 +you4 +yu1 +yu2 +yu3 +yu4 +yuan1 +yuan2 +yuan3 +yuan4 +yue1 +yue4 +yun1 +yun2 +yun3 +yun4 +z +za1 +za2 +za3 +zai1 +zai3 +zai4 +zan1 +zan2 +zan3 +zan4 +zang1 +zang4 +zao1 +zao2 +zao3 +zao4 +ze2 +ze4 +zei2 +zen3 +zeng1 +zeng4 +zha1 +zha2 +zha3 +zha4 +zhai1 +zhai2 +zhai3 +zhai4 +zhan1 +zhan2 +zhan3 +zhan4 +zhang1 +zhang2 +zhang3 +zhang4 +zhao1 +zhao2 +zhao3 +zhao4 +zhe +zhe1 +zhe2 +zhe3 +zhe4 +zhen1 +zhen2 +zhen3 +zhen4 +zheng1 +zheng2 +zheng3 +zheng4 +zhi1 +zhi2 +zhi3 +zhi4 +zhong1 +zhong2 +zhong3 +zhong4 +zhou1 +zhou2 +zhou3 +zhou4 +zhu1 +zhu2 +zhu3 +zhu4 +zhua1 +zhua2 +zhua3 +zhuai1 +zhuai3 +zhuai4 +zhuan1 +zhuan2 +zhuan3 +zhuan4 +zhuang1 +zhuang4 +zhui1 +zhui4 +zhun1 +zhun2 +zhun3 +zhuo1 +zhuo2 +zi +zi1 +zi2 +zi3 +zi4 +zong1 +zong2 +zong3 +zong4 +zou1 +zou2 +zou3 +zou4 +zu1 +zu2 +zu3 +zuan1 +zuan3 +zuan4 +zui2 +zui3 +zui4 +zun1 +zuo +zuo1 +zuo2 +zuo3 +zuo4 +{ +~ +¡ +¢ +£ +¥ +§ +¨ +© +« +® +¯ +° +± +² +³ +´ +µ +· +¹ +º +» +¼ +½ +¾ +¿ +À +Á + +à +Ä +Å +Æ +Ç +È +É +Ê +Í +Î +Ñ +Ó +Ö +× +Ø +Ú +Ü +Ý +Þ +ß +à +á +â +ã +ä +å +æ +ç +è +é +ê +ë +ì +í +î +ï +ð +ñ +ò +ó +ô +õ +ö +ø +ù +ú +û +ü +ý +Ā +ā +ă +ą +ć +Č +č +Đ +đ +ē +ė +ę +ě +ĝ +ğ +ħ +ī +į +İ +ı +Ł +ł +ń +ņ +ň +ŋ +Ō +ō +ő +œ +ř +Ś +ś +Ş +ş +Š +š +Ť +ť +ũ +ū +ź +Ż +ż +Ž +ž +ơ +ư +ǎ +ǐ +ǒ +ǔ +ǚ +ș +ț +ɑ +ɔ +ɕ +ə +ɛ +ɜ +ɡ +ɣ +ɪ +ɫ +ɴ +ɹ +ɾ +ʃ +ʊ +ʌ +ʒ +ʔ +ʰ +ʷ +ʻ +ʾ +ʿ +ˈ +ː +˙ +˜ +ˢ +́ +̅ +Α +Β +Δ +Ε +Θ +Κ +Λ +Μ +Ξ +Π +Σ +Τ +Φ +Χ +Ψ +Ω +ά +έ +ή +ί +α +β +γ +δ +ε +ζ +η +θ +ι +κ +λ +μ +ν +ξ +ο +π +ρ +ς +σ +τ +υ +φ +χ +ψ +ω +ϊ +ό +ύ +ώ +ϕ +ϵ +Ё +А +Б +В +Г +Д +Е +Ж +З +И +Й +К +Л +М +Н +О +П +Р +С +Т +У +Ф +Х +Ц +Ч +Ш +Щ +Ы +Ь +Э +Ю +Я +а +б +в +г +д +е +ж +з +и +й +к +л +м +н +о +п +р +с +т +у +ф +х +ц +ч +ш +щ +ъ +ы +ь +э +ю +я +ё +і +ְ +ִ +ֵ +ֶ +ַ +ָ +ֹ +ּ +־ +ׁ +א +ב +ג +ד +ה +ו +ז +ח +ט +י +כ +ל +ם +מ +ן +נ +ס +ע +פ +ק +ר +ש +ת +أ +ب +ة +ت +ج +ح +د +ر +ز +س +ص +ط +ع +ق +ك +ل +م +ن +ه +و +ي +َ +ُ +ِ +ْ +ก +ข +ง +จ +ต +ท +น +ป +ย +ร +ว +ส +ห +อ +ฮ +ั +า +ี +ึ +โ +ใ +ไ +่ +้ +์ +ḍ +Ḥ +ḥ +ṁ +ṃ +ṅ +ṇ +Ṛ +ṛ +Ṣ +ṣ +Ṭ +ṭ +ạ +ả +Ấ +ấ +ầ +ậ +ắ +ằ +ẻ +ẽ +ế +ề +ể +ễ +ệ +ị +ọ +ỏ +ố +ồ +ộ +ớ +ờ +ở +ụ +ủ +ứ +ữ +ἀ +ἁ +Ἀ +ἐ +ἔ +ἰ +ἱ +ὀ +ὁ +ὐ +ὲ +ὸ +ᾶ +᾽ +ῆ +ῇ +ῶ +‎ +‑ +‒ +– +— +― +‖ +† +‡ +• +… +‧ +‬ +′ +″ +⁄ +⁡ +⁰ +⁴ +⁵ +⁶ +⁷ +⁸ +⁹ +₁ +₂ +₃ +€ +₱ +₹ +₽ +℃ +ℏ +ℓ +№ +ℝ +™ +⅓ +⅔ +⅛ +→ +∂ +∈ +∑ +− +∗ +√ +∞ +∫ +≈ +≠ +≡ +≤ +≥ +⋅ +⋯ +█ +♪ +⟨ +⟩ +、 +。 +《 +》 +「 +」 +【 +】 +あ +う +え +お +か +が +き +ぎ +く +ぐ +け +げ +こ +ご +さ +し +じ +す +ず +せ +ぜ +そ +ぞ +た +だ +ち +っ +つ +で +と +ど +な +に +ね +の +は +ば +ひ +ぶ +へ +べ +ま +み +む +め +も +ゃ +や +ゆ +ょ +よ +ら +り +る +れ +ろ +わ +を +ん +ァ +ア +ィ +イ +ウ +ェ +エ +オ +カ +ガ +キ +ク +ケ +ゲ +コ +ゴ +サ +ザ +シ +ジ +ス +ズ +セ +ゾ +タ +ダ +チ +ッ +ツ +テ +デ +ト +ド +ナ +ニ +ネ +ノ +バ +パ +ビ +ピ +フ +プ +ヘ +ベ +ペ +ホ +ボ +ポ +マ +ミ +ム +メ +モ +ャ +ヤ +ュ +ユ +ョ +ヨ +ラ +リ +ル +レ +ロ +ワ +ン +・ +ー +ㄋ +ㄍ +ㄎ +ㄏ +ㄓ +ㄕ +ㄚ +ㄜ +ㄟ +ㄤ +ㄥ +ㄧ +ㄱ +ㄴ +ㄷ +ㄹ +ㅁ +ㅂ +ㅅ +ㅈ +ㅍ +ㅎ +ㅏ +ㅓ +ㅗ +ㅜ +ㅡ +ㅣ +㗎 +가 +각 +간 +갈 +감 +갑 +갓 +갔 +강 +같 +개 +거 +건 +걸 +겁 +것 +겉 +게 +겠 +겨 +결 +겼 +경 +계 +고 +곤 +골 +곱 +공 +과 +관 +광 +교 +구 +국 +굴 +귀 +귄 +그 +근 +글 +금 +기 +긴 +길 +까 +깍 +깔 +깜 +깨 +께 +꼬 +꼭 +꽃 +꾸 +꿔 +끔 +끗 +끝 +끼 +나 +난 +날 +남 +납 +내 +냐 +냥 +너 +넘 +넣 +네 +녁 +년 +녕 +노 +녹 +놀 +누 +눈 +느 +는 +늘 +니 +님 +닙 +다 +닥 +단 +달 +닭 +당 +대 +더 +덕 +던 +덥 +데 +도 +독 +동 +돼 +됐 +되 +된 +될 +두 +둑 +둥 +드 +들 +등 +디 +따 +딱 +딸 +땅 +때 +떤 +떨 +떻 +또 +똑 +뚱 +뛰 +뜻 +띠 +라 +락 +란 +람 +랍 +랑 +래 +랜 +러 +런 +럼 +렇 +레 +려 +력 +렵 +렸 +로 +록 +롬 +루 +르 +른 +를 +름 +릉 +리 +릴 +림 +마 +막 +만 +많 +말 +맑 +맙 +맛 +매 +머 +먹 +멍 +메 +면 +명 +몇 +모 +목 +몸 +못 +무 +문 +물 +뭐 +뭘 +미 +민 +밌 +밑 +바 +박 +밖 +반 +받 +발 +밤 +밥 +방 +배 +백 +밸 +뱀 +버 +번 +벌 +벚 +베 +벼 +벽 +별 +병 +보 +복 +본 +볼 +봐 +봤 +부 +분 +불 +비 +빔 +빛 +빠 +빨 +뼈 +뽀 +뿅 +쁘 +사 +산 +살 +삼 +샀 +상 +새 +색 +생 +서 +선 +설 +섭 +섰 +성 +세 +셔 +션 +셨 +소 +속 +손 +송 +수 +숙 +순 +술 +숫 +숭 +숲 +쉬 +쉽 +스 +슨 +습 +슷 +시 +식 +신 +실 +싫 +심 +십 +싶 +싸 +써 +쓰 +쓴 +씌 +씨 +씩 +씬 +아 +악 +안 +않 +알 +야 +약 +얀 +양 +얘 +어 +언 +얼 +엄 +업 +없 +었 +엉 +에 +여 +역 +연 +염 +엽 +영 +옆 +예 +옛 +오 +온 +올 +옷 +옹 +와 +왔 +왜 +요 +욕 +용 +우 +운 +울 +웃 +워 +원 +월 +웠 +위 +윙 +유 +육 +윤 +으 +은 +을 +음 +응 +의 +이 +익 +인 +일 +읽 +임 +입 +있 +자 +작 +잔 +잖 +잘 +잡 +잤 +장 +재 +저 +전 +점 +정 +제 +져 +졌 +조 +족 +좀 +종 +좋 +죠 +주 +준 +줄 +중 +줘 +즈 +즐 +즘 +지 +진 +집 +짜 +짝 +쩌 +쪼 +쪽 +쫌 +쭈 +쯔 +찌 +찍 +차 +착 +찾 +책 +처 +천 +철 +체 +쳐 +쳤 +초 +촌 +추 +출 +춤 +춥 +춰 +치 +친 +칠 +침 +칩 +칼 +커 +켓 +코 +콩 +쿠 +퀴 +크 +큰 +큽 +키 +킨 +타 +태 +터 +턴 +털 +테 +토 +통 +투 +트 +특 +튼 +틀 +티 +팀 +파 +팔 +패 +페 +펜 +펭 +평 +포 +폭 +표 +품 +풍 +프 +플 +피 +필 +하 +학 +한 +할 +함 +합 +항 +해 +햇 +했 +행 +허 +험 +형 +혜 +호 +혼 +홀 +화 +회 +획 +후 +휴 +흐 +흔 +희 +히 +힘 +ﷺ +ﷻ +! +, +? +� +𠮶 diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/infer/infer_cli.py b/bi_v100-f5-tts/F5-TTS/src/f5_tts/infer/infer_cli.py new file mode 100644 index 0000000..95800fd --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/infer/infer_cli.py @@ -0,0 +1,368 @@ +import argparse +import codecs +import os +import re +from datetime import datetime +from importlib.resources import files +from pathlib import Path + +import numpy as np +import soundfile as sf +import tomli +from cached_path import cached_path +from hydra.utils import get_class +from omegaconf import OmegaConf + +from f5_tts.infer.utils_infer import ( + cfg_strength, + cross_fade_duration, + device, + fix_duration, + infer_process, + load_model, + load_vocoder, + mel_spec_type, + nfe_step, + preprocess_ref_audio_text, + remove_silence_for_generated_wav, + speed, + sway_sampling_coef, + target_rms, +) + + +parser = argparse.ArgumentParser( + prog="python3 infer-cli.py", + description="Commandline interface for E2/F5 TTS with Advanced Batch Processing.", + epilog="Specify options above to override one or more settings from config.", +) +parser.add_argument( + "-c", + "--config", + type=str, + default=os.path.join(files("f5_tts").joinpath("infer/examples/basic"), "basic.toml"), + help="The configuration file, default see infer/examples/basic/basic.toml", +) + + +# Note. Not to provide default value here in order to read default from config file + +parser.add_argument( + "-m", + "--model", + type=str, + help="The model name: F5TTS_v1_Base | F5TTS_Base | E2TTS_Base | etc.", +) +parser.add_argument( + "-mc", + "--model_cfg", + type=str, + help="The path to F5-TTS model config file .yaml", +) +parser.add_argument( + "-p", + "--ckpt_file", + type=str, + help="The path to model checkpoint .pt, leave blank to use default", +) +parser.add_argument( + "-v", + "--vocab_file", + type=str, + help="The path to vocab file .txt, leave blank to use default", +) +parser.add_argument( + "-r", + "--ref_audio", + type=str, + help="The reference audio file.", +) +parser.add_argument( + "-s", + "--ref_text", + type=str, + help="The transcript/subtitle for the reference audio", +) +parser.add_argument( + "-t", + "--gen_text", + type=str, + help="The text to make model synthesize a speech", +) +parser.add_argument( + "-f", + "--gen_file", + type=str, + help="The file with text to generate, will ignore --gen_text", +) +parser.add_argument( + "-o", + "--output_dir", + type=str, + help="The path to output folder", +) +parser.add_argument( + "-w", + "--output_file", + type=str, + help="The name of output file", +) +parser.add_argument( + "--save_chunk", + action="store_true", + help="To save each audio chunks during inference", +) +parser.add_argument( + "--remove_silence", + action="store_true", + help="To remove long silence found in ouput", +) +parser.add_argument( + "--load_vocoder_from_local", + action="store_true", + help="To load vocoder from local dir, default to ../checkpoints/vocos-mel-24khz", +) +parser.add_argument( + "--vocoder_name", + type=str, + choices=["vocos", "bigvgan"], + help=f"Used vocoder name: vocos | bigvgan, default {mel_spec_type}", +) +parser.add_argument( + "--target_rms", + type=float, + help=f"Target output speech loudness normalization value, default {target_rms}", +) +parser.add_argument( + "--cross_fade_duration", + type=float, + help=f"Duration of cross-fade between audio segments in seconds, default {cross_fade_duration}", +) +parser.add_argument( + "--nfe_step", + type=int, + help=f"The number of function evaluation (denoising steps), default {nfe_step}", +) +parser.add_argument( + "--cfg_strength", + type=float, + help=f"Classifier-free guidance strength, default {cfg_strength}", +) +parser.add_argument( + "--sway_sampling_coef", + type=float, + help=f"Sway Sampling coefficient, default {sway_sampling_coef}", +) +parser.add_argument( + "--speed", + type=float, + help=f"The speed of the generated audio, default {speed}", +) +parser.add_argument( + "--fix_duration", + type=float, + help=f"Fix the total duration (ref and gen audios) in seconds, default {fix_duration}", +) +parser.add_argument( + "--device", + type=str, + help="Specify the device to run on", +) +args = parser.parse_args() + + +# config file + +config = tomli.load(open(args.config, "rb")) + + +# command-line interface parameters + +model = args.model or config.get("model", "F5TTS_v1_Base") +ckpt_file = args.ckpt_file or config.get("ckpt_file", "") +vocab_file = args.vocab_file or config.get("vocab_file", "") + +ref_audio = args.ref_audio or config.get("ref_audio", "infer/examples/basic/basic_ref_en.wav") +ref_text = ( + args.ref_text + if args.ref_text is not None + else config.get("ref_text", "Some call me nature, others call me mother nature.") +) +gen_text = args.gen_text or config.get("gen_text", "Here we generate something just for test.") +gen_file = args.gen_file or config.get("gen_file", "") + +output_dir = args.output_dir or config.get("output_dir", "tests") +output_file = args.output_file or config.get( + "output_file", f"infer_cli_{datetime.now().strftime(r'%Y%m%d_%H%M%S')}.wav" +) + +save_chunk = args.save_chunk or config.get("save_chunk", False) +remove_silence = args.remove_silence or config.get("remove_silence", False) +load_vocoder_from_local = args.load_vocoder_from_local or config.get("load_vocoder_from_local", False) + +vocoder_name = args.vocoder_name or config.get("vocoder_name", mel_spec_type) +target_rms = args.target_rms or config.get("target_rms", target_rms) +cross_fade_duration = args.cross_fade_duration or config.get("cross_fade_duration", cross_fade_duration) +nfe_step = args.nfe_step or config.get("nfe_step", nfe_step) +cfg_strength = args.cfg_strength or config.get("cfg_strength", cfg_strength) +sway_sampling_coef = args.sway_sampling_coef or config.get("sway_sampling_coef", sway_sampling_coef) +speed = args.speed or config.get("speed", speed) +fix_duration = args.fix_duration or config.get("fix_duration", fix_duration) +device = args.device or config.get("device", device) + + +# patches for pip pkg user +if "infer/examples/" in ref_audio: + ref_audio = str(files("f5_tts").joinpath(f"{ref_audio}")) +if "infer/examples/" in gen_file: + gen_file = str(files("f5_tts").joinpath(f"{gen_file}")) +if "voices" in config: + for voice in config["voices"]: + voice_ref_audio = config["voices"][voice]["ref_audio"] + if "infer/examples/" in voice_ref_audio: + config["voices"][voice]["ref_audio"] = str(files("f5_tts").joinpath(f"{voice_ref_audio}")) + + +# ignore gen_text if gen_file provided + +if gen_file: + gen_text = codecs.open(gen_file, "r", "utf-8").read() + + +# output path + +wave_path = Path(output_dir) / output_file +# spectrogram_path = Path(output_dir) / "infer_cli_out.png" +if save_chunk: + output_chunk_dir = os.path.join(output_dir, f"{Path(output_file).stem}_chunks") + if not os.path.exists(output_chunk_dir): + os.makedirs(output_chunk_dir) + + +# load vocoder + +if vocoder_name == "vocos": + vocoder_local_path = "../checkpoints/vocos-mel-24khz" +elif vocoder_name == "bigvgan": + vocoder_local_path = "../checkpoints/bigvgan_v2_24khz_100band_256x" + +vocoder = load_vocoder( + vocoder_name=vocoder_name, is_local=load_vocoder_from_local, local_path=vocoder_local_path, device=device +) + + +# load TTS model + +model_cfg = OmegaConf.load( + args.model_cfg or config.get("model_cfg", str(files("f5_tts").joinpath(f"configs/{model}.yaml"))) +) +model_cls = get_class(f"f5_tts.model.{model_cfg.model.backbone}") +model_arc = model_cfg.model.arch + +repo_name, ckpt_step, ckpt_type = "F5-TTS", 1250000, "safetensors" + +if model != "F5TTS_Base": + assert vocoder_name == model_cfg.model.mel_spec.mel_spec_type + +# override for previous models +if model == "F5TTS_Base": + if vocoder_name == "vocos": + ckpt_step = 1200000 + elif vocoder_name == "bigvgan": + model = "F5TTS_Base_bigvgan" + ckpt_type = "pt" +elif model == "E2TTS_Base": + repo_name = "E2-TTS" + ckpt_step = 1200000 + +if not ckpt_file: + ckpt_file = str(cached_path(f"hf://SWivid/{repo_name}/{model}/model_{ckpt_step}.{ckpt_type}")) + +print(f"Using {model}...") +ema_model = load_model( + model_cls, model_arc, ckpt_file, mel_spec_type=vocoder_name, vocab_file=vocab_file, device=device +) + + +# inference process + + +def main(): + main_voice = {"ref_audio": ref_audio, "ref_text": ref_text} + if "voices" not in config: + voices = {"main": main_voice} + else: + voices = config["voices"] + voices["main"] = main_voice + for voice in voices: + print("Voice:", voice) + print("ref_audio ", voices[voice]["ref_audio"]) + voices[voice]["ref_audio"], voices[voice]["ref_text"] = preprocess_ref_audio_text( + voices[voice]["ref_audio"], voices[voice]["ref_text"] + ) + print("ref_audio_", voices[voice]["ref_audio"], "\n\n") + + generated_audio_segments = [] + reg1 = r"(?=\[\w+\])" + chunks = re.split(reg1, gen_text) + reg2 = r"\[(\w+)\]" + for text in chunks: + if not text.strip(): + continue + match = re.match(reg2, text) + if match: + voice = match[1] + else: + print("No voice tag found, using main.") + voice = "main" + if voice not in voices: + print(f"Voice {voice} not found, using main.") + voice = "main" + text = re.sub(reg2, "", text) + ref_audio_ = voices[voice]["ref_audio"] + ref_text_ = voices[voice]["ref_text"] + gen_text_ = text.strip() + print(f"Voice: {voice}") + audio_segment, final_sample_rate, spectrogram = infer_process( + ref_audio_, + ref_text_, + gen_text_, + ema_model, + vocoder, + mel_spec_type=vocoder_name, + target_rms=target_rms, + cross_fade_duration=cross_fade_duration, + nfe_step=nfe_step, + cfg_strength=cfg_strength, + sway_sampling_coef=sway_sampling_coef, + speed=speed, + fix_duration=fix_duration, + device=device, + ) + generated_audio_segments.append(audio_segment) + + if save_chunk: + if len(gen_text_) > 200: + gen_text_ = gen_text_[:200] + " ... " + sf.write( + os.path.join(output_chunk_dir, f"{len(generated_audio_segments) - 1}_{gen_text_}.wav"), + audio_segment, + final_sample_rate, + ) + + if generated_audio_segments: + final_wave = np.concatenate(generated_audio_segments) + + if not os.path.exists(output_dir): + os.makedirs(output_dir) + + with open(wave_path, "wb") as f: + sf.write(f.name, final_wave, final_sample_rate) + # Remove silence + if remove_silence: + remove_silence_for_generated_wav(f.name) + print(f.name) + + +if __name__ == "__main__": + main() diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/infer/infer_gradio.py b/bi_v100-f5-tts/F5-TTS/src/f5_tts/infer/infer_gradio.py new file mode 100644 index 0000000..f4c3aef --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/infer/infer_gradio.py @@ -0,0 +1,1121 @@ +# ruff: noqa: E402 +# Above allows ruff to ignore E402: module level import not at top of file + +import gc +import json +import os +import re +import tempfile +from collections import OrderedDict +from functools import lru_cache +from importlib.resources import files + +import click +import gradio as gr +import numpy as np +import soundfile as sf +import torch +import torchaudio +from cached_path import cached_path +from transformers import AutoModelForCausalLM, AutoTokenizer + + +try: + import spaces + + USING_SPACES = True +except ImportError: + USING_SPACES = False + + +def gpu_decorator(func): + if USING_SPACES: + return spaces.GPU(func) + else: + return func + + +from f5_tts.infer.utils_infer import ( + infer_process, + load_model, + load_vocoder, + preprocess_ref_audio_text, + remove_silence_for_generated_wav, + save_spectrogram, + tempfile_kwargs, +) +from f5_tts.model import DiT, UNetT + + +DEFAULT_TTS_MODEL = "F5-TTS_v1" +tts_model_choice = DEFAULT_TTS_MODEL + +DEFAULT_TTS_MODEL_CFG = [ + "hf://SWivid/F5-TTS/F5TTS_v1_Base/model_1250000.safetensors", + "hf://SWivid/F5-TTS/F5TTS_v1_Base/vocab.txt", + json.dumps(dict(dim=1024, depth=22, heads=16, ff_mult=2, text_dim=512, conv_layers=4)), +] + + +# load models + +vocoder = load_vocoder() + + +def load_f5tts(): + ckpt_path = str(cached_path(DEFAULT_TTS_MODEL_CFG[0])) + F5TTS_model_cfg = json.loads(DEFAULT_TTS_MODEL_CFG[2]) + return load_model(DiT, F5TTS_model_cfg, ckpt_path) + + +def load_e2tts(): + ckpt_path = str(cached_path("hf://SWivid/E2-TTS/E2TTS_Base/model_1200000.safetensors")) + E2TTS_model_cfg = dict(dim=1024, depth=24, heads=16, ff_mult=4, text_mask_padding=False, pe_attn_head=1) + return load_model(UNetT, E2TTS_model_cfg, ckpt_path) + + +def load_custom(ckpt_path: str, vocab_path="", model_cfg=None): + ckpt_path, vocab_path = ckpt_path.strip(), vocab_path.strip() + if ckpt_path.startswith("hf://"): + ckpt_path = str(cached_path(ckpt_path)) + if vocab_path.startswith("hf://"): + vocab_path = str(cached_path(vocab_path)) + if model_cfg is None: + model_cfg = json.loads(DEFAULT_TTS_MODEL_CFG[2]) + elif isinstance(model_cfg, str): + model_cfg = json.loads(model_cfg) + return load_model(DiT, model_cfg, ckpt_path, vocab_file=vocab_path) + + +F5TTS_ema_model = load_f5tts() +E2TTS_ema_model = load_e2tts() if USING_SPACES else None +custom_ema_model, pre_custom_path = None, "" + +chat_model_state = None +chat_tokenizer_state = None + + +@gpu_decorator +def chat_model_inference(messages, model, tokenizer): + """Generate response using Qwen""" + text = tokenizer.apply_chat_template( + messages, + tokenize=False, + add_generation_prompt=True, + ) + + model_inputs = tokenizer([text], return_tensors="pt").to(model.device) + generated_ids = model.generate( + **model_inputs, + max_new_tokens=512, + temperature=0.7, + top_p=0.95, + ) + + generated_ids = [ + output_ids[len(input_ids) :] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids) + ] + return tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0] + + +@gpu_decorator +def load_text_from_file(file): + if file: + with open(file, "r", encoding="utf-8") as f: + text = f.read().strip() + else: + text = "" + return gr.update(value=text) + + +@lru_cache(maxsize=1000) # NOTE. need to ensure params of infer() hashable +@gpu_decorator +def infer( + ref_audio_orig, + ref_text, + gen_text, + model, + remove_silence, + seed, + cross_fade_duration=0.15, + nfe_step=32, + speed=1, + show_info=gr.Info, +): + if not ref_audio_orig: + gr.Warning("Please provide reference audio.") + return gr.update(), gr.update(), ref_text + + # Set inference seed + if seed < 0 or seed > 2**31 - 1: + gr.Warning("Seed must in range 0 ~ 2147483647. Using random seed instead.") + seed = np.random.randint(0, 2**31 - 1) + torch.manual_seed(seed) + used_seed = seed + + if not gen_text.strip(): + gr.Warning("Please enter text to generate or upload a text file.") + return gr.update(), gr.update(), ref_text + + ref_audio, ref_text = preprocess_ref_audio_text(ref_audio_orig, ref_text, show_info=show_info) + + if model == DEFAULT_TTS_MODEL: + ema_model = F5TTS_ema_model + elif model == "E2-TTS": + global E2TTS_ema_model + if E2TTS_ema_model is None: + show_info("Loading E2-TTS model...") + E2TTS_ema_model = load_e2tts() + ema_model = E2TTS_ema_model + elif isinstance(model, tuple) and model[0] == "Custom": + assert not USING_SPACES, "Only official checkpoints allowed in Spaces." + global custom_ema_model, pre_custom_path + if pre_custom_path != model[1]: + show_info("Loading Custom TTS model...") + custom_ema_model = load_custom(model[1], vocab_path=model[2], model_cfg=model[3]) + pre_custom_path = model[1] + ema_model = custom_ema_model + + final_wave, final_sample_rate, combined_spectrogram = infer_process( + ref_audio, + ref_text, + gen_text, + ema_model, + vocoder, + cross_fade_duration=cross_fade_duration, + nfe_step=nfe_step, + speed=speed, + show_info=show_info, + progress=gr.Progress(), + ) + + # Remove silence + if remove_silence: + with tempfile.NamedTemporaryFile(suffix=".wav", **tempfile_kwargs) as f: + temp_path = f.name + try: + sf.write(temp_path, final_wave, final_sample_rate) + remove_silence_for_generated_wav(f.name) + final_wave, _ = torchaudio.load(f.name) + finally: + os.unlink(temp_path) + final_wave = final_wave.squeeze().cpu().numpy() + + # Save the spectrogram + with tempfile.NamedTemporaryFile(suffix=".png", **tempfile_kwargs) as tmp_spectrogram: + spectrogram_path = tmp_spectrogram.name + save_spectrogram(combined_spectrogram, spectrogram_path) + + return (final_sample_rate, final_wave), spectrogram_path, ref_text, used_seed + + +with gr.Blocks() as app_tts: + gr.Markdown("# Batched TTS") + ref_audio_input = gr.Audio(label="Reference Audio", type="filepath") + with gr.Row(): + gen_text_input = gr.Textbox( + label="Text to Generate", + lines=10, + max_lines=40, + scale=4, + ) + gen_text_file = gr.File(label="Load Text to Generate from File (.txt)", file_types=[".txt"], scale=1) + generate_btn = gr.Button("Synthesize", variant="primary") + with gr.Accordion("Advanced Settings", open=False): + with gr.Row(): + ref_text_input = gr.Textbox( + label="Reference Text", + info="Leave blank to automatically transcribe the reference audio. If you enter text or upload a file, it will override automatic transcription.", + lines=2, + scale=4, + ) + ref_text_file = gr.File(label="Load Reference Text from File (.txt)", file_types=[".txt"], scale=1) + with gr.Row(): + randomize_seed = gr.Checkbox( + label="Randomize Seed", + info="Check to use a random seed for each generation. Uncheck to use the seed specified.", + value=True, + scale=3, + ) + seed_input = gr.Number(show_label=False, value=0, precision=0, scale=1) + with gr.Column(scale=4): + remove_silence = gr.Checkbox( + label="Remove Silences", + info="If undesired long silence(s) produced, turn on to automatically detect and crop.", + value=False, + ) + speed_slider = gr.Slider( + label="Speed", + minimum=0.3, + maximum=2.0, + value=1.0, + step=0.1, + info="Adjust the speed of the audio.", + ) + nfe_slider = gr.Slider( + label="NFE Steps", + minimum=4, + maximum=64, + value=32, + step=2, + info="Set the number of denoising steps.", + ) + cross_fade_duration_slider = gr.Slider( + label="Cross-Fade Duration (s)", + minimum=0.0, + maximum=1.0, + value=0.15, + step=0.01, + info="Set the duration of the cross-fade between audio clips.", + ) + + audio_output = gr.Audio(label="Synthesized Audio") + spectrogram_output = gr.Image(label="Spectrogram") + + @gpu_decorator + def basic_tts( + ref_audio_input, + ref_text_input, + gen_text_input, + remove_silence, + randomize_seed, + seed_input, + cross_fade_duration_slider, + nfe_slider, + speed_slider, + ): + if randomize_seed: + seed_input = np.random.randint(0, 2**31 - 1) + + audio_out, spectrogram_path, ref_text_out, used_seed = infer( + ref_audio_input, + ref_text_input, + gen_text_input, + tts_model_choice, + remove_silence, + seed=seed_input, + cross_fade_duration=cross_fade_duration_slider, + nfe_step=nfe_slider, + speed=speed_slider, + ) + return audio_out, spectrogram_path, ref_text_out, used_seed + + gen_text_file.upload( + load_text_from_file, + inputs=[gen_text_file], + outputs=[gen_text_input], + ) + + ref_text_file.upload( + load_text_from_file, + inputs=[ref_text_file], + outputs=[ref_text_input], + ) + + ref_audio_input.clear( + lambda: [None, None], + None, + [ref_text_input, ref_text_file], + ) + + generate_btn.click( + basic_tts, + inputs=[ + ref_audio_input, + ref_text_input, + gen_text_input, + remove_silence, + randomize_seed, + seed_input, + cross_fade_duration_slider, + nfe_slider, + speed_slider, + ], + outputs=[audio_output, spectrogram_output, ref_text_input, seed_input], + ) + + +def parse_speechtypes_text(gen_text): + # Pattern to find {str} or {"name": str, "seed": int, "speed": float} + pattern = r"(\{.*?\})" + + # Split the text by the pattern + tokens = re.split(pattern, gen_text) + + segments = [] + + current_type_dict = { + "name": "Regular", + "seed": -1, + "speed": 1.0, + } + + for i in range(len(tokens)): + if i % 2 == 0: + # This is text + text = tokens[i].strip() + if text: + current_type_dict["text"] = text + segments.append(current_type_dict) + else: + # This is type + type_str = tokens[i].strip() + try: # if type dict + current_type_dict = json.loads(type_str) + except json.decoder.JSONDecodeError: + type_str = type_str[1:-1] # remove brace {} + current_type_dict = {"name": type_str, "seed": -1, "speed": 1.0} + + return segments + + +with gr.Blocks() as app_multistyle: + # New section for multistyle generation + gr.Markdown( + """ + # Multiple Speech-Type Generation + + This section allows you to generate multiple speech types or multiple people's voices. Enter your text in the format shown below, or upload a .txt file with the same format. The system will generate speech using the appropriate type. If unspecified, the model will use the regular speech type. The current speech type will be used until the next speech type is specified. + """ + ) + + with gr.Row(): + gr.Markdown( + """ + **Example Input:**
+ {Regular} Hello, I'd like to order a sandwich please.
+ {Surprised} What do you mean you're out of bread?
+ {Sad} I really wanted a sandwich though...
+ {Angry} You know what, darn you and your little shop!
+ {Whisper} I'll just go back home and cry now.
+ {Shouting} Why me?! + """ + ) + + gr.Markdown( + """ + **Example Input 2:**
+ {"name": "Speaker1_Happy", "seed": -1, "speed": 1} Hello, I'd like to order a sandwich please.
+ {"name": "Speaker2_Regular", "seed": -1, "speed": 1} Sorry, we're out of bread.
+ {"name": "Speaker1_Sad", "seed": -1, "speed": 1} I really wanted a sandwich though...
+ {"name": "Speaker2_Whisper", "seed": -1, "speed": 1} I'll give you the last one I was hiding. + """ + ) + + gr.Markdown( + 'Upload different audio clips for each speech type. The first speech type is mandatory. You can add additional speech types by clicking the "Add Speech Type" button.' + ) + + # Regular speech type (mandatory) + with gr.Row(variant="compact") as regular_row: + with gr.Column(scale=1, min_width=160): + regular_name = gr.Textbox(value="Regular", label="Speech Type Name") + regular_insert = gr.Button("Insert Label", variant="secondary") + with gr.Column(scale=3): + regular_audio = gr.Audio(label="Regular Reference Audio", type="filepath") + with gr.Column(scale=3): + regular_ref_text = gr.Textbox(label="Reference Text (Regular)", lines=4) + with gr.Row(): + regular_seed_slider = gr.Slider( + show_label=False, minimum=-1, maximum=999, value=-1, step=1, info="Seed, -1 for random" + ) + regular_speed_slider = gr.Slider( + show_label=False, minimum=0.3, maximum=2.0, value=1.0, step=0.1, info="Adjust the speed" + ) + with gr.Column(scale=1, min_width=160): + regular_ref_text_file = gr.File(label="Load Reference Text from File (.txt)", file_types=[".txt"]) + + # Regular speech type (max 100) + max_speech_types = 100 + speech_type_rows = [regular_row] + speech_type_names = [regular_name] + speech_type_audios = [regular_audio] + speech_type_ref_texts = [regular_ref_text] + speech_type_ref_text_files = [regular_ref_text_file] + speech_type_seeds = [regular_seed_slider] + speech_type_speeds = [regular_speed_slider] + speech_type_delete_btns = [None] + speech_type_insert_btns = [regular_insert] + + # Additional speech types (99 more) + for i in range(max_speech_types - 1): + with gr.Row(variant="compact", visible=False) as row: + with gr.Column(scale=1, min_width=160): + name_input = gr.Textbox(label="Speech Type Name") + insert_btn = gr.Button("Insert Label", variant="secondary") + delete_btn = gr.Button("Delete Type", variant="stop") + with gr.Column(scale=3): + audio_input = gr.Audio(label="Reference Audio", type="filepath") + with gr.Column(scale=3): + ref_text_input = gr.Textbox(label="Reference Text", lines=4) + with gr.Row(): + seed_input = gr.Slider( + show_label=False, minimum=-1, maximum=999, value=-1, step=1, info="Seed. -1 for random" + ) + speed_input = gr.Slider( + show_label=False, minimum=0.3, maximum=2.0, value=1.0, step=0.1, info="Adjust the speed" + ) + with gr.Column(scale=1, min_width=160): + ref_text_file_input = gr.File(label="Load Reference Text from File (.txt)", file_types=[".txt"]) + speech_type_rows.append(row) + speech_type_names.append(name_input) + speech_type_audios.append(audio_input) + speech_type_ref_texts.append(ref_text_input) + speech_type_ref_text_files.append(ref_text_file_input) + speech_type_seeds.append(seed_input) + speech_type_speeds.append(speed_input) + speech_type_delete_btns.append(delete_btn) + speech_type_insert_btns.append(insert_btn) + + # Global logic for all speech types + for i in range(max_speech_types): + speech_type_audios[i].clear( + lambda: [None, None], + None, + [speech_type_ref_texts[i], speech_type_ref_text_files[i]], + ) + speech_type_ref_text_files[i].upload( + load_text_from_file, + inputs=[speech_type_ref_text_files[i]], + outputs=[speech_type_ref_texts[i]], + ) + + # Button to add speech type + add_speech_type_btn = gr.Button("Add Speech Type") + + # Keep track of autoincrement of speech types, no roll back + speech_type_count = 1 + + # Function to add a speech type + def add_speech_type_fn(): + row_updates = [gr.update() for _ in range(max_speech_types)] + global speech_type_count + if speech_type_count < max_speech_types: + row_updates[speech_type_count] = gr.update(visible=True) + speech_type_count += 1 + else: + gr.Warning("Exhausted maximum number of speech types. Consider restart the app.") + return row_updates + + add_speech_type_btn.click(add_speech_type_fn, outputs=speech_type_rows) + + # Function to delete a speech type + def delete_speech_type_fn(): + return gr.update(visible=False), None, None, None, None + + # Update delete button clicks and ref text file changes + for i in range(1, len(speech_type_delete_btns)): + speech_type_delete_btns[i].click( + delete_speech_type_fn, + outputs=[ + speech_type_rows[i], + speech_type_names[i], + speech_type_audios[i], + speech_type_ref_texts[i], + speech_type_ref_text_files[i], + ], + ) + + # Text input for the prompt + with gr.Row(): + gen_text_input_multistyle = gr.Textbox( + label="Text to Generate", + lines=10, + max_lines=40, + scale=4, + placeholder="Enter the script with speaker names (or emotion types) at the start of each block, e.g.:\n\n{Regular} Hello, I'd like to order a sandwich please.\n{Surprised} What do you mean you're out of bread?\n{Sad} I really wanted a sandwich though...\n{Angry} You know what, darn you and your little shop!\n{Whisper} I'll just go back home and cry now.\n{Shouting} Why me?!", + ) + gen_text_file_multistyle = gr.File(label="Load Text to Generate from File (.txt)", file_types=[".txt"], scale=1) + + def make_insert_speech_type_fn(index): + def insert_speech_type_fn(current_text, speech_type_name, speech_type_seed, speech_type_speed): + current_text = current_text or "" + if not speech_type_name: + gr.Warning("Please enter speech type name before insert.") + return current_text + speech_type_dict = { + "name": speech_type_name, + "seed": speech_type_seed, + "speed": speech_type_speed, + } + updated_text = current_text + json.dumps(speech_type_dict) + " " + return updated_text + + return insert_speech_type_fn + + for i, insert_btn in enumerate(speech_type_insert_btns): + insert_fn = make_insert_speech_type_fn(i) + insert_btn.click( + insert_fn, + inputs=[gen_text_input_multistyle, speech_type_names[i], speech_type_seeds[i], speech_type_speeds[i]], + outputs=gen_text_input_multistyle, + ) + + with gr.Accordion("Advanced Settings", open=True): + with gr.Row(): + with gr.Column(): + show_cherrypick_multistyle = gr.Checkbox( + label="Show Cherry-pick Interface", + info="Turn on to show interface, picking seeds from previous generations.", + value=False, + ) + with gr.Column(): + remove_silence_multistyle = gr.Checkbox( + label="Remove Silences", + info="Turn on to automatically detect and crop long silences.", + value=True, + ) + + # Generate button + generate_multistyle_btn = gr.Button("Generate Multi-Style Speech", variant="primary") + + # Output audio + audio_output_multistyle = gr.Audio(label="Synthesized Audio") + + # Used seed gallery + cherrypick_interface_multistyle = gr.Textbox( + label="Cherry-pick Interface", + lines=10, + max_lines=40, + show_copy_button=True, + interactive=False, + visible=False, + ) + + # Logic control to show/hide the cherrypick interface + show_cherrypick_multistyle.change( + lambda is_visible: gr.update(visible=is_visible), + show_cherrypick_multistyle, + cherrypick_interface_multistyle, + ) + + # Function to load text to generate from file + gen_text_file_multistyle.upload( + load_text_from_file, + inputs=[gen_text_file_multistyle], + outputs=[gen_text_input_multistyle], + ) + + @gpu_decorator + def generate_multistyle_speech( + gen_text, + *args, + ): + speech_type_names_list = args[:max_speech_types] + speech_type_audios_list = args[max_speech_types : 2 * max_speech_types] + speech_type_ref_texts_list = args[2 * max_speech_types : 3 * max_speech_types] + remove_silence = args[3 * max_speech_types] + # Collect the speech types and their audios into a dict + speech_types = OrderedDict() + + ref_text_idx = 0 + for name_input, audio_input, ref_text_input in zip( + speech_type_names_list, speech_type_audios_list, speech_type_ref_texts_list + ): + if name_input and audio_input: + speech_types[name_input] = {"audio": audio_input, "ref_text": ref_text_input} + else: + speech_types[f"@{ref_text_idx}@"] = {"audio": "", "ref_text": ""} + ref_text_idx += 1 + + # Parse the gen_text into segments + segments = parse_speechtypes_text(gen_text) + + # For each segment, generate speech + generated_audio_segments = [] + current_type_name = "Regular" + inference_meta_data = "" + + for segment in segments: + name = segment["name"] + seed_input = segment["seed"] + speed = segment["speed"] + text = segment["text"] + + if name in speech_types: + current_type_name = name + else: + gr.Warning(f"Type {name} is not available, will use Regular as default.") + current_type_name = "Regular" + + try: + ref_audio = speech_types[current_type_name]["audio"] + except KeyError: + gr.Warning(f"Please provide reference audio for type {current_type_name}.") + return [None] + [speech_types[name]["ref_text"] for name in speech_types] + [None] + ref_text = speech_types[current_type_name].get("ref_text", "") + + if seed_input == -1: + seed_input = np.random.randint(0, 2**31 - 1) + + # Generate or retrieve speech for this segment + audio_out, _, ref_text_out, used_seed = infer( + ref_audio, + ref_text, + text, + tts_model_choice, + remove_silence, + seed=seed_input, + cross_fade_duration=0, + speed=speed, + show_info=print, # no pull to top when generating + ) + sr, audio_data = audio_out + + generated_audio_segments.append(audio_data) + speech_types[current_type_name]["ref_text"] = ref_text_out + inference_meta_data += json.dumps(dict(name=name, seed=used_seed, speed=speed)) + f" {text}\n" + + # Concatenate all audio segments + if generated_audio_segments: + final_audio_data = np.concatenate(generated_audio_segments) + return ( + [(sr, final_audio_data)] + + [speech_types[name]["ref_text"] for name in speech_types] + + [inference_meta_data] + ) + else: + gr.Warning("No audio generated.") + return [None] + [speech_types[name]["ref_text"] for name in speech_types] + [None] + + generate_multistyle_btn.click( + generate_multistyle_speech, + inputs=[ + gen_text_input_multistyle, + ] + + speech_type_names + + speech_type_audios + + speech_type_ref_texts + + [ + remove_silence_multistyle, + ], + outputs=[audio_output_multistyle] + speech_type_ref_texts + [cherrypick_interface_multistyle], + ) + + # Validation function to disable Generate button if speech types are missing + def validate_speech_types(gen_text, regular_name, *args): + speech_type_names_list = args + + # Collect the speech types names + speech_types_available = set() + if regular_name: + speech_types_available.add(regular_name) + for name_input in speech_type_names_list: + if name_input: + speech_types_available.add(name_input) + + # Parse the gen_text to get the speech types used + segments = parse_speechtypes_text(gen_text) + speech_types_in_text = set(segment["name"] for segment in segments) + + # Check if all speech types in text are available + missing_speech_types = speech_types_in_text - speech_types_available + + if missing_speech_types: + # Disable the generate button + return gr.update(interactive=False) + else: + # Enable the generate button + return gr.update(interactive=True) + + gen_text_input_multistyle.change( + validate_speech_types, + inputs=[gen_text_input_multistyle, regular_name] + speech_type_names, + outputs=generate_multistyle_btn, + ) + + +with gr.Blocks() as app_chat: + gr.Markdown( + """ +# Voice Chat +Have a conversation with an AI using your reference voice! +1. Upload a reference audio clip and optionally its transcript (via text or .txt file). +2. Load the chat model. +3. Record your message through your microphone or type it. +4. The AI will respond using the reference voice. +""" + ) + + chat_model_name_list = [ + "Qwen/Qwen2.5-3B-Instruct", + "microsoft/Phi-4-mini-instruct", + ] + + @gpu_decorator + def load_chat_model(chat_model_name): + show_info = gr.Info + global chat_model_state, chat_tokenizer_state + if chat_model_state is not None: + chat_model_state = None + chat_tokenizer_state = None + gc.collect() + torch.cuda.empty_cache() + + show_info(f"Loading chat model: {chat_model_name}") + chat_model_state = AutoModelForCausalLM.from_pretrained(chat_model_name, torch_dtype="auto", device_map="auto") + chat_tokenizer_state = AutoTokenizer.from_pretrained(chat_model_name) + show_info(f"Chat model {chat_model_name} loaded successfully!") + + return gr.update(visible=False), gr.update(visible=True) + + if USING_SPACES: + load_chat_model(chat_model_name_list[0]) + + chat_model_name_input = gr.Dropdown( + choices=chat_model_name_list, + value=chat_model_name_list[0], + label="Chat Model Name", + info="Enter the name of a HuggingFace chat model", + allow_custom_value=not USING_SPACES, + ) + load_chat_model_btn = gr.Button("Load Chat Model", variant="primary", visible=not USING_SPACES) + chat_interface_container = gr.Column(visible=USING_SPACES) + + chat_model_name_input.change( + lambda: gr.update(visible=True), + None, + load_chat_model_btn, + show_progress="hidden", + ) + load_chat_model_btn.click( + load_chat_model, inputs=[chat_model_name_input], outputs=[load_chat_model_btn, chat_interface_container] + ) + + with chat_interface_container: + with gr.Row(): + with gr.Column(): + ref_audio_chat = gr.Audio(label="Reference Audio", type="filepath") + with gr.Column(): + with gr.Accordion("Advanced Settings", open=False): + with gr.Row(): + ref_text_chat = gr.Textbox( + label="Reference Text", + info="Optional: Leave blank to auto-transcribe", + lines=2, + scale=3, + ) + ref_text_file_chat = gr.File( + label="Load Reference Text from File (.txt)", file_types=[".txt"], scale=1 + ) + with gr.Row(): + randomize_seed_chat = gr.Checkbox( + label="Randomize Seed", + value=True, + info="Uncheck to use the seed specified.", + scale=3, + ) + seed_input_chat = gr.Number(show_label=False, value=0, precision=0, scale=1) + remove_silence_chat = gr.Checkbox( + label="Remove Silences", + value=True, + ) + system_prompt_chat = gr.Textbox( + label="System Prompt", + value="You are not an AI assistant, you are whoever the user says you are. You must stay in character. Keep your responses concise since they will be spoken out loud.", + lines=2, + ) + + chatbot_interface = gr.Chatbot(label="Conversation", type="messages") + + with gr.Row(): + with gr.Column(): + audio_input_chat = gr.Microphone( + label="Speak your message", + type="filepath", + ) + audio_output_chat = gr.Audio(autoplay=True) + with gr.Column(): + text_input_chat = gr.Textbox( + label="Type your message", + lines=1, + ) + send_btn_chat = gr.Button("Send Message") + clear_btn_chat = gr.Button("Clear Conversation") + + # Modify process_audio_input to generate user input + @gpu_decorator + def process_audio_input(conv_state, audio_path, text): + """Handle audio or text input from user""" + + if not audio_path and not text.strip(): + return conv_state + + if audio_path: + text = preprocess_ref_audio_text(audio_path, text)[1] + if not text.strip(): + return conv_state + + conv_state.append({"role": "user", "content": text}) + return conv_state + + # Use model and tokenizer from state to get text response + @gpu_decorator + def generate_text_response(conv_state, system_prompt): + """Generate text response from AI""" + + system_prompt_state = [{"role": "system", "content": system_prompt}] + response = chat_model_inference(system_prompt_state + conv_state, chat_model_state, chat_tokenizer_state) + + conv_state.append({"role": "assistant", "content": response}) + return conv_state + + @gpu_decorator + def generate_audio_response(conv_state, ref_audio, ref_text, remove_silence, randomize_seed, seed_input): + """Generate TTS audio for AI response""" + if not conv_state or not ref_audio: + return None, ref_text, seed_input + + last_ai_response = conv_state[-1]["content"] + if not last_ai_response or conv_state[-1]["role"] != "assistant": + return None, ref_text, seed_input + + if randomize_seed: + seed_input = np.random.randint(0, 2**31 - 1) + + audio_result, _, ref_text_out, used_seed = infer( + ref_audio, + ref_text, + last_ai_response, + tts_model_choice, + remove_silence, + seed=seed_input, + cross_fade_duration=0.15, + speed=1.0, + show_info=print, # show_info=print no pull to top when generating + ) + return audio_result, ref_text_out, used_seed + + def clear_conversation(): + """Reset the conversation""" + return [], None + + ref_text_file_chat.upload( + load_text_from_file, + inputs=[ref_text_file_chat], + outputs=[ref_text_chat], + ) + + for user_operation in [audio_input_chat.stop_recording, text_input_chat.submit, send_btn_chat.click]: + user_operation( + process_audio_input, + inputs=[chatbot_interface, audio_input_chat, text_input_chat], + outputs=[chatbot_interface], + ).then( + generate_text_response, + inputs=[chatbot_interface, system_prompt_chat], + outputs=[chatbot_interface], + ).then( + generate_audio_response, + inputs=[ + chatbot_interface, + ref_audio_chat, + ref_text_chat, + remove_silence_chat, + randomize_seed_chat, + seed_input_chat, + ], + outputs=[audio_output_chat, ref_text_chat, seed_input_chat], + ).then( + lambda: [None, None], + None, + [audio_input_chat, text_input_chat], + ) + + # Handle clear button or system prompt change and reset conversation + for user_operation in [clear_btn_chat.click, system_prompt_chat.change, chatbot_interface.clear]: + user_operation( + clear_conversation, + outputs=[chatbot_interface, audio_output_chat], + ) + + +with gr.Blocks() as app_credits: + gr.Markdown(""" +# Credits + +* [mrfakename](https://github.com/fakerybakery) for the original [online demo](https://huggingface.co/spaces/mrfakename/E2-F5-TTS) +* [RootingInLoad](https://github.com/RootingInLoad) for initial chunk generation and podcast app exploration +* [jpgallegoar](https://github.com/jpgallegoar) for multiple speech-type generation & voice chat +""") + + +with gr.Blocks() as app: + gr.Markdown( + f""" +# E2/F5 TTS + +This is {"a local web UI for [F5 TTS](https://github.com/SWivid/F5-TTS)" if not USING_SPACES else "an online demo for [F5-TTS](https://github.com/SWivid/F5-TTS)"} with advanced batch processing support. This app supports the following TTS models: + +* [F5-TTS](https://arxiv.org/abs/2410.06885) (A Fairytaler that Fakes Fluent and Faithful Speech with Flow Matching) +* [E2 TTS](https://arxiv.org/abs/2406.18009) (Embarrassingly Easy Fully Non-Autoregressive Zero-Shot TTS) + +The checkpoints currently support English and Chinese. + +If you're having issues, try converting your reference audio to WAV or MP3, clipping it to 12s with ✂ in the bottom right corner (otherwise might have non-optimal auto-trimmed result). + +**NOTE: Reference text will be automatically transcribed with Whisper if not provided. For best results, keep your reference clips short (<12s). Ensure the audio is fully uploaded before generating.** +""" + ) + + last_used_custom = files("f5_tts").joinpath("infer/.cache/last_used_custom_model_info_v1.txt") + + def load_last_used_custom(): + try: + custom = [] + with open(last_used_custom, "r", encoding="utf-8") as f: + for line in f: + custom.append(line.strip()) + return custom + except FileNotFoundError: + last_used_custom.parent.mkdir(parents=True, exist_ok=True) + return DEFAULT_TTS_MODEL_CFG + + def switch_tts_model(new_choice): + global tts_model_choice + if new_choice == "Custom": # override in case webpage is refreshed + custom_ckpt_path, custom_vocab_path, custom_model_cfg = load_last_used_custom() + tts_model_choice = ("Custom", custom_ckpt_path, custom_vocab_path, custom_model_cfg) + return ( + gr.update(visible=True, value=custom_ckpt_path), + gr.update(visible=True, value=custom_vocab_path), + gr.update(visible=True, value=custom_model_cfg), + ) + else: + tts_model_choice = new_choice + return gr.update(visible=False), gr.update(visible=False), gr.update(visible=False) + + def set_custom_model(custom_ckpt_path, custom_vocab_path, custom_model_cfg): + global tts_model_choice + tts_model_choice = ("Custom", custom_ckpt_path, custom_vocab_path, custom_model_cfg) + with open(last_used_custom, "w", encoding="utf-8") as f: + f.write(custom_ckpt_path + "\n" + custom_vocab_path + "\n" + custom_model_cfg + "\n") + + with gr.Row(): + if not USING_SPACES: + choose_tts_model = gr.Radio( + choices=[DEFAULT_TTS_MODEL, "E2-TTS", "Custom"], label="Choose TTS Model", value=DEFAULT_TTS_MODEL + ) + else: + choose_tts_model = gr.Radio( + choices=[DEFAULT_TTS_MODEL, "E2-TTS"], label="Choose TTS Model", value=DEFAULT_TTS_MODEL + ) + custom_ckpt_path = gr.Dropdown( + choices=[DEFAULT_TTS_MODEL_CFG[0]], + value=load_last_used_custom()[0], + allow_custom_value=True, + label="Model: local_path | hf://user_id/repo_id/model_ckpt", + visible=False, + ) + custom_vocab_path = gr.Dropdown( + choices=[DEFAULT_TTS_MODEL_CFG[1]], + value=load_last_used_custom()[1], + allow_custom_value=True, + label="Vocab: local_path | hf://user_id/repo_id/vocab_file", + visible=False, + ) + custom_model_cfg = gr.Dropdown( + choices=[ + DEFAULT_TTS_MODEL_CFG[2], + json.dumps( + dict( + dim=1024, + depth=22, + heads=16, + ff_mult=2, + text_dim=512, + text_mask_padding=False, + conv_layers=4, + pe_attn_head=1, + ) + ), + json.dumps( + dict( + dim=768, + depth=18, + heads=12, + ff_mult=2, + text_dim=512, + text_mask_padding=False, + conv_layers=4, + pe_attn_head=1, + ) + ), + ], + value=load_last_used_custom()[2], + allow_custom_value=True, + label="Config: in a dictionary form", + visible=False, + ) + + choose_tts_model.change( + switch_tts_model, + inputs=[choose_tts_model], + outputs=[custom_ckpt_path, custom_vocab_path, custom_model_cfg], + show_progress="hidden", + ) + custom_ckpt_path.change( + set_custom_model, + inputs=[custom_ckpt_path, custom_vocab_path, custom_model_cfg], + show_progress="hidden", + ) + custom_vocab_path.change( + set_custom_model, + inputs=[custom_ckpt_path, custom_vocab_path, custom_model_cfg], + show_progress="hidden", + ) + custom_model_cfg.change( + set_custom_model, + inputs=[custom_ckpt_path, custom_vocab_path, custom_model_cfg], + show_progress="hidden", + ) + + gr.TabbedInterface( + [app_tts, app_multistyle, app_chat, app_credits], + ["Basic-TTS", "Multi-Speech", "Voice-Chat", "Credits"], + ) + + +@click.command() +@click.option("--port", "-p", default=None, type=int, help="Port to run the app on") +@click.option("--host", "-H", default=None, help="Host to run the app on") +@click.option( + "--share", + "-s", + default=False, + is_flag=True, + help="Share the app via Gradio share link", +) +@click.option("--api", "-a", default=True, is_flag=True, help="Allow API access") +@click.option( + "--root_path", + "-r", + default=None, + type=str, + help='The root path (or "mount point") of the application, if it\'s not served from the root ("/") of the domain. Often used when the application is behind a reverse proxy that forwards requests to the application, e.g. set "/myapp" or full URL for application served at "https://example.com/myapp".', +) +@click.option( + "--inbrowser", + "-i", + is_flag=True, + default=False, + help="Automatically launch the interface in the default web browser", +) +def main(port, host, share, api, root_path, inbrowser): + global app + print("Starting app...") + app.queue(api_open=api).launch( + server_name=host, + server_port=port, + share=share, + show_api=api, + root_path=root_path, + inbrowser=inbrowser, + ) + + +if __name__ == "__main__": + if not USING_SPACES: + main() + else: + app.queue().launch() diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/infer/speech_edit.py b/bi_v100-f5-tts/F5-TTS/src/f5_tts/infer/speech_edit.py new file mode 100644 index 0000000..fdeda9f --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/infer/speech_edit.py @@ -0,0 +1,205 @@ +import os + + +os.environ["PYTORCH_ENABLE_MPS_FALLBACK"] = "1" # for MPS device compatibility + +from importlib.resources import files + +import torch +import torch.nn.functional as F +import torchaudio +from cached_path import cached_path +from hydra.utils import get_class +from omegaconf import OmegaConf + +from f5_tts.infer.utils_infer import load_checkpoint, load_vocoder, save_spectrogram +from f5_tts.model import CFM +from f5_tts.model.utils import convert_char_to_pinyin, get_tokenizer + + +device = ( + "cuda" + if torch.cuda.is_available() + else "xpu" + if torch.xpu.is_available() + else "mps" + if torch.backends.mps.is_available() + else "cpu" +) + + +# ---------------------- infer setting ---------------------- # + +seed = None # int | None + +exp_name = "F5TTS_v1_Base" # F5TTS_v1_Base | E2TTS_Base +ckpt_step = 1250000 + +nfe_step = 32 # 16, 32 +cfg_strength = 2.0 +ode_method = "euler" # euler | midpoint +sway_sampling_coef = -1.0 +speed = 1.0 +target_rms = 0.1 + + +model_cfg = OmegaConf.load(str(files("f5_tts").joinpath(f"configs/{exp_name}.yaml"))) +model_cls = get_class(f"f5_tts.model.{model_cfg.model.backbone}") +model_arc = model_cfg.model.arch + +dataset_name = model_cfg.datasets.name +tokenizer = model_cfg.model.tokenizer + +mel_spec_type = model_cfg.model.mel_spec.mel_spec_type +target_sample_rate = model_cfg.model.mel_spec.target_sample_rate +n_mel_channels = model_cfg.model.mel_spec.n_mel_channels +hop_length = model_cfg.model.mel_spec.hop_length +win_length = model_cfg.model.mel_spec.win_length +n_fft = model_cfg.model.mel_spec.n_fft + + +# ckpt_path = str(files("f5_tts").joinpath("../../")) + f"/ckpts/{exp_name}/model_{ckpt_step}.safetensors" +ckpt_path = str(cached_path(f"hf://SWivid/F5-TTS/{exp_name}/model_{ckpt_step}.safetensors")) +output_dir = "tests" + + +# [leverage https://github.com/MahmoudAshraf97/ctc-forced-aligner to get char level alignment] +# pip install git+https://github.com/MahmoudAshraf97/ctc-forced-aligner.git +# [write the origin_text into a file, e.g. tests/test_edit.txt] +# ctc-forced-aligner --audio_path "src/f5_tts/infer/examples/basic/basic_ref_en.wav" --text_path "tests/test_edit.txt" --language "zho" --romanize --split_size "char" +# [result will be saved at same path of audio file] +# [--language "zho" for Chinese, "eng" for English] +# [if local ckpt, set --alignment_model "../checkpoints/mms-300m-1130-forced-aligner"] + +audio_to_edit = str(files("f5_tts").joinpath("infer/examples/basic/basic_ref_en.wav")) +origin_text = "Some call me nature, others call me mother nature." +target_text = "Some call me optimist, others call me realist." +parts_to_edit = [ + [1.42, 2.44], + [4.04, 4.9], +] # stard_ends of "nature" & "mother nature", in seconds +fix_duration = [ + 1.2, + 1, +] # fix duration for "optimist" & "realist", in seconds + +# audio_to_edit = "src/f5_tts/infer/examples/basic/basic_ref_zh.wav" +# origin_text = "对,这就是我,万人敬仰的太乙真人。" +# target_text = "对,那就是你,万人敬仰的太白金星。" +# parts_to_edit = [[0.84, 1.4], [1.92, 2.4], [4.26, 6.26], ] +# fix_duration = None # use origin text duration + + +# -------------------------------------------------# + +use_ema = True + +if not os.path.exists(output_dir): + os.makedirs(output_dir) + +# Vocoder model +local = False +if mel_spec_type == "vocos": + vocoder_local_path = "../checkpoints/charactr/vocos-mel-24khz" +elif mel_spec_type == "bigvgan": + vocoder_local_path = "../checkpoints/bigvgan_v2_24khz_100band_256x" +vocoder = load_vocoder(vocoder_name=mel_spec_type, is_local=local, local_path=vocoder_local_path) + +# Tokenizer +vocab_char_map, vocab_size = get_tokenizer(dataset_name, tokenizer) + +# Model +model = CFM( + transformer=model_cls(**model_arc, text_num_embeds=vocab_size, mel_dim=n_mel_channels), + mel_spec_kwargs=dict( + n_fft=n_fft, + hop_length=hop_length, + win_length=win_length, + n_mel_channels=n_mel_channels, + target_sample_rate=target_sample_rate, + mel_spec_type=mel_spec_type, + ), + odeint_kwargs=dict( + method=ode_method, + ), + vocab_char_map=vocab_char_map, +).to(device) + +dtype = torch.float32 if mel_spec_type == "bigvgan" else None +model = load_checkpoint(model, ckpt_path, device, dtype=dtype, use_ema=use_ema) + +# Audio +audio, sr = torchaudio.load(audio_to_edit) +if audio.shape[0] > 1: + audio = torch.mean(audio, dim=0, keepdim=True) +rms = torch.sqrt(torch.mean(torch.square(audio))) +if rms < target_rms: + audio = audio * target_rms / rms +if sr != target_sample_rate: + resampler = torchaudio.transforms.Resample(sr, target_sample_rate) + audio = resampler(audio) +offset = 0 +audio_ = torch.zeros(1, 0) +edit_mask = torch.zeros(1, 0, dtype=torch.bool) +for part in parts_to_edit: + start, end = part + part_dur = end - start if fix_duration is None else fix_duration.pop(0) + part_dur = part_dur * target_sample_rate + start = start * target_sample_rate + audio_ = torch.cat((audio_, audio[:, round(offset) : round(start)], torch.zeros(1, round(part_dur))), dim=-1) + edit_mask = torch.cat( + ( + edit_mask, + torch.ones(1, round((start - offset) / hop_length), dtype=torch.bool), + torch.zeros(1, round(part_dur / hop_length), dtype=torch.bool), + ), + dim=-1, + ) + offset = end * target_sample_rate +audio = torch.cat((audio_, audio[:, round(offset) :]), dim=-1) +edit_mask = F.pad(edit_mask, (0, audio.shape[-1] // hop_length - edit_mask.shape[-1] + 1), value=True) +audio = audio.to(device) +edit_mask = edit_mask.to(device) + +# Text +text_list = [target_text] +if tokenizer == "pinyin": + final_text_list = convert_char_to_pinyin(text_list) +else: + final_text_list = [text_list] +print(f"text : {text_list}") +print(f"pinyin: {final_text_list}") + +# Duration +ref_audio_len = 0 +duration = audio.shape[-1] // hop_length + +# Inference +with torch.inference_mode(): + generated, trajectory = model.sample( + cond=audio, + text=final_text_list, + duration=duration, + steps=nfe_step, + cfg_strength=cfg_strength, + sway_sampling_coef=sway_sampling_coef, + seed=seed, + edit_mask=edit_mask, + ) + print(f"Generated mel: {generated.shape}") + + # Final result + generated = generated.to(torch.float32) + generated = generated[:, ref_audio_len:, :] + gen_mel_spec = generated.permute(0, 2, 1) + if mel_spec_type == "vocos": + generated_wave = vocoder.decode(gen_mel_spec).cpu() + elif mel_spec_type == "bigvgan": + generated_wave = vocoder(gen_mel_spec).squeeze(0).cpu() + + if rms < target_rms: + generated_wave = generated_wave * rms / target_rms + + save_spectrogram(gen_mel_spec[0].cpu().numpy(), f"{output_dir}/speech_edit_out.png") + torchaudio.save(f"{output_dir}/speech_edit_out.wav", generated_wave, target_sample_rate) + print(f"Generated wav: {generated_wave.shape}") diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/infer/utils_infer.py b/bi_v100-f5-tts/F5-TTS/src/f5_tts/infer/utils_infer.py new file mode 100644 index 0000000..4db1474 --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/infer/utils_infer.py @@ -0,0 +1,610 @@ +# A unified script for inference process +# Make adjustments inside functions, and consider both gradio and cli scripts if need to change func output format +import os +import sys +from concurrent.futures import ThreadPoolExecutor + + +os.environ["PYTORCH_ENABLE_MPS_FALLBACK"] = "1" # for MPS device compatibility +sys.path.append(f"{os.path.dirname(os.path.abspath(__file__))}/../../third_party/BigVGAN/") + +import hashlib +import re +import tempfile +from importlib.resources import files + +import matplotlib + + +matplotlib.use("Agg") + +import matplotlib.pylab as plt +import numpy as np +import torch +import torchaudio +import tqdm +from huggingface_hub import hf_hub_download +from pydub import AudioSegment, silence +from transformers import pipeline +from vocos import Vocos + +from f5_tts.model import CFM +from f5_tts.model.utils import convert_char_to_pinyin, get_tokenizer + + +_ref_audio_cache = {} +_ref_text_cache = {} + +device = ( + "cuda" + if torch.cuda.is_available() + else "xpu" + if torch.xpu.is_available() + else "mps" + if torch.backends.mps.is_available() + else "cpu" +) + +tempfile_kwargs = {"delete_on_close": False} if sys.version_info >= (3, 12) else {"delete": False} + +# ----------------------------------------- + +target_sample_rate = 24000 +n_mel_channels = 100 +hop_length = 256 +win_length = 1024 +n_fft = 1024 +mel_spec_type = "vocos" +target_rms = 0.1 +cross_fade_duration = 0.15 +ode_method = "euler" +nfe_step = 32 # 16, 32 +cfg_strength = 2.0 +sway_sampling_coef = -1.0 +speed = 1.0 +fix_duration = None + +# ----------------------------------------- + + +# chunk text into smaller pieces + + +def chunk_text(text, max_chars=135): + """ + Splits the input text into chunks, each with a maximum number of characters. + + Args: + text (str): The text to be split. + max_chars (int): The maximum number of characters per chunk. + + Returns: + List[str]: A list of text chunks. + """ + chunks = [] + current_chunk = "" + # Split the text into sentences based on punctuation followed by whitespace + sentences = re.split(r"(?<=[;:,.!?])\s+|(?<=[;:,。!?])", text) + + for sentence in sentences: + if len(current_chunk.encode("utf-8")) + len(sentence.encode("utf-8")) <= max_chars: + current_chunk += sentence + " " if sentence and len(sentence[-1].encode("utf-8")) == 1 else sentence + else: + if current_chunk: + chunks.append(current_chunk.strip()) + current_chunk = sentence + " " if sentence and len(sentence[-1].encode("utf-8")) == 1 else sentence + + if current_chunk: + chunks.append(current_chunk.strip()) + + return chunks + + +# load vocoder +def load_vocoder(vocoder_name="vocos", is_local=False, local_path="", device=device, hf_cache_dir=None): + if vocoder_name == "vocos": + # vocoder = Vocos.from_pretrained("charactr/vocos-mel-24khz").to(device) + if is_local: + print(f"Load vocos from local path {local_path}") + config_path = f"{local_path}/config.yaml" + model_path = f"{local_path}/pytorch_model.bin" + else: + print("Download Vocos from huggingface charactr/vocos-mel-24khz") + repo_id = "charactr/vocos-mel-24khz" + config_path = hf_hub_download(repo_id=repo_id, cache_dir=hf_cache_dir, filename="config.yaml") + model_path = hf_hub_download(repo_id=repo_id, cache_dir=hf_cache_dir, filename="pytorch_model.bin") + vocoder = Vocos.from_hparams(config_path) + state_dict = torch.load(model_path, map_location="cpu", weights_only=True) + from vocos.feature_extractors import EncodecFeatures + + if isinstance(vocoder.feature_extractor, EncodecFeatures): + encodec_parameters = { + "feature_extractor.encodec." + key: value + for key, value in vocoder.feature_extractor.encodec.state_dict().items() + } + state_dict.update(encodec_parameters) + vocoder.load_state_dict(state_dict) + vocoder = vocoder.eval().to(device) + elif vocoder_name == "bigvgan": + try: + from third_party.BigVGAN import bigvgan + except ImportError: + print("You need to follow the README to init submodule and change the BigVGAN source code.") + if is_local: + # download generator from https://huggingface.co/nvidia/bigvgan_v2_24khz_100band_256x/tree/main + vocoder = bigvgan.BigVGAN.from_pretrained(local_path, use_cuda_kernel=False) + else: + vocoder = bigvgan.BigVGAN.from_pretrained( + "nvidia/bigvgan_v2_24khz_100band_256x", use_cuda_kernel=False, cache_dir=hf_cache_dir + ) + + vocoder.remove_weight_norm() + vocoder = vocoder.eval().to(device) + return vocoder + + +# load asr pipeline + +asr_pipe = None + + +def initialize_asr_pipeline(device: str = device, dtype=None): + if dtype is None: + dtype = ( + torch.float16 + if "cuda" in device + and torch.cuda.get_device_properties(device).major >= 7 + and not torch.cuda.get_device_name().endswith("[ZLUDA]") + else torch.float32 + ) + global asr_pipe + asr_pipe = pipeline( + "automatic-speech-recognition", + model="openai/whisper-large-v3-turbo", + torch_dtype=dtype, + device=device, + ) + + +# transcribe + + +def transcribe(ref_audio, language=None): + global asr_pipe + if asr_pipe is None: + initialize_asr_pipeline(device=device) + return asr_pipe( + ref_audio, + chunk_length_s=30, + batch_size=128, + generate_kwargs={"task": "transcribe", "language": language} if language else {"task": "transcribe"}, + return_timestamps=False, + )["text"].strip() + + +# load model checkpoint for inference + + +def load_checkpoint(model, ckpt_path, device: str, dtype=None, use_ema=True): + if dtype is None: + print(f'device: {device}', flush=True) + try: + dtype = ( + torch.float16 + if "cuda" in device + and torch.cuda.get_device_properties(device).major >= 7 + and not torch.cuda.get_device_name().endswith("[ZLUDA]") + else torch.float32 + ) + except Exception as e: + # print(f"Error determining dtype: {e}", flush=True) + dtype = torch.float16 if "cuda" in device else torch.float32 + model = model.to(dtype) + + ckpt_type = ckpt_path.split(".")[-1] + if ckpt_type == "safetensors": + from safetensors.torch import load_file + + checkpoint = load_file(ckpt_path, device=device) + else: + checkpoint = torch.load(ckpt_path, map_location=device, weights_only=True) + + if use_ema: + if ckpt_type == "safetensors": + checkpoint = {"ema_model_state_dict": checkpoint} + checkpoint["model_state_dict"] = { + k.replace("ema_model.", ""): v + for k, v in checkpoint["ema_model_state_dict"].items() + if k not in ["initted", "step"] + } + + # patch for backward compatibility, 305e3ea + for key in ["mel_spec.mel_stft.mel_scale.fb", "mel_spec.mel_stft.spectrogram.window"]: + if key in checkpoint["model_state_dict"]: + del checkpoint["model_state_dict"][key] + + model.load_state_dict(checkpoint["model_state_dict"]) + else: + if ckpt_type == "safetensors": + checkpoint = {"model_state_dict": checkpoint} + model.load_state_dict(checkpoint["model_state_dict"]) + + del checkpoint + torch.cuda.empty_cache() + + return model.to(device) + + +# load model for inference + + +def load_model( + model_cls, + model_cfg, + ckpt_path, + mel_spec_type=mel_spec_type, + vocab_file="", + ode_method=ode_method, + use_ema=True, + device=device, +): + if vocab_file == "": + vocab_file = str(files("f5_tts").joinpath("infer/examples/vocab.txt")) + tokenizer = "custom" + + print("\nvocab : ", vocab_file) + print("token : ", tokenizer) + print("model : ", ckpt_path, "\n") + + vocab_char_map, vocab_size = get_tokenizer(vocab_file, tokenizer) + model = CFM( + transformer=model_cls(**model_cfg, text_num_embeds=vocab_size, mel_dim=n_mel_channels), + mel_spec_kwargs=dict( + n_fft=n_fft, + hop_length=hop_length, + win_length=win_length, + n_mel_channels=n_mel_channels, + target_sample_rate=target_sample_rate, + mel_spec_type=mel_spec_type, + ), + odeint_kwargs=dict( + method=ode_method, + ), + vocab_char_map=vocab_char_map, + ).to(device) + + dtype = torch.float32 if mel_spec_type == "bigvgan" else None + model = load_checkpoint(model, ckpt_path, device, dtype=dtype, use_ema=use_ema) + + return model + + +def remove_silence_edges(audio, silence_threshold=-42): + # Remove silence from the start + non_silent_start_idx = silence.detect_leading_silence(audio, silence_threshold=silence_threshold) + audio = audio[non_silent_start_idx:] + + # Remove silence from the end + non_silent_end_duration = audio.duration_seconds + for ms in reversed(audio): + if ms.dBFS > silence_threshold: + break + non_silent_end_duration -= 0.001 + trimmed_audio = audio[: int(non_silent_end_duration * 1000)] + + return trimmed_audio + + +# preprocess reference audio and text + + +def preprocess_ref_audio_text(ref_audio_orig, ref_text, show_info=print): + show_info("Converting audio...") + + # Compute a hash of the reference audio file + with open(ref_audio_orig, "rb") as audio_file: + audio_data = audio_file.read() + audio_hash = hashlib.md5(audio_data).hexdigest() + + global _ref_audio_cache + + if audio_hash in _ref_audio_cache: + show_info("Using cached preprocessed reference audio...") + ref_audio = _ref_audio_cache[audio_hash] + + else: # first pass, do preprocess + with tempfile.NamedTemporaryFile(suffix=".wav", **tempfile_kwargs) as f: + temp_path = f.name + + aseg = AudioSegment.from_file(ref_audio_orig) + + # 1. try to find long silence for clipping + non_silent_segs = silence.split_on_silence( + aseg, min_silence_len=1000, silence_thresh=-50, keep_silence=1000, seek_step=10 + ) + non_silent_wave = AudioSegment.silent(duration=0) + for non_silent_seg in non_silent_segs: + if len(non_silent_wave) > 6000 and len(non_silent_wave + non_silent_seg) > 12000: + show_info("Audio is over 12s, clipping short. (1)") + break + non_silent_wave += non_silent_seg + + # 2. try to find short silence for clipping if 1. failed + if len(non_silent_wave) > 12000: + non_silent_segs = silence.split_on_silence( + aseg, min_silence_len=100, silence_thresh=-40, keep_silence=1000, seek_step=10 + ) + non_silent_wave = AudioSegment.silent(duration=0) + for non_silent_seg in non_silent_segs: + if len(non_silent_wave) > 6000 and len(non_silent_wave + non_silent_seg) > 12000: + show_info("Audio is over 12s, clipping short. (2)") + break + non_silent_wave += non_silent_seg + + aseg = non_silent_wave + + # 3. if no proper silence found for clipping + if len(aseg) > 12000: + aseg = aseg[:12000] + show_info("Audio is over 12s, clipping short. (3)") + + aseg = remove_silence_edges(aseg) + AudioSegment.silent(duration=50) + aseg.export(temp_path, format="wav") + ref_audio = temp_path + + # Cache the processed reference audio + _ref_audio_cache[audio_hash] = ref_audio + + if not ref_text.strip(): + global _ref_text_cache + if audio_hash in _ref_text_cache: + # Use cached asr transcription + show_info("Using cached reference text...") + ref_text = _ref_text_cache[audio_hash] + else: + show_info("No reference text provided, transcribing reference audio...") + ref_text = transcribe(ref_audio) + # Cache the transcribed text (not caching custom ref_text, enabling users to do manual tweak) + _ref_text_cache[audio_hash] = ref_text + else: + show_info("Using custom reference text...") + + # Ensure ref_text ends with a proper sentence-ending punctuation + if not ref_text.endswith(". ") and not ref_text.endswith("。"): + if ref_text.endswith("."): + ref_text += " " + else: + ref_text += ". " + + print("\nref_text ", ref_text) + + return ref_audio, ref_text + + +# infer process: chunk text -> infer batches [i.e. infer_batch_process()] + + +def infer_process( + ref_audio, + ref_text, + gen_text, + model_obj, + vocoder, + mel_spec_type=mel_spec_type, + show_info=print, + progress=tqdm, + target_rms=target_rms, + cross_fade_duration=cross_fade_duration, + nfe_step=nfe_step, + cfg_strength=cfg_strength, + sway_sampling_coef=sway_sampling_coef, + speed=speed, + fix_duration=fix_duration, + device=device, +): + # Split the input text into batches + audio, sr = torchaudio.load(ref_audio) + max_chars = int(len(ref_text.encode("utf-8")) / (audio.shape[-1] / sr) * (22 - audio.shape[-1] / sr) * speed) + gen_text_batches = chunk_text(gen_text, max_chars=max_chars) + for i, gen_text in enumerate(gen_text_batches): + print(f"gen_text {i}", gen_text) + print("\n") + + show_info(f"Generating audio in {len(gen_text_batches)} batches...") + return next( + infer_batch_process( + (audio, sr), + ref_text, + gen_text_batches, + model_obj, + vocoder, + mel_spec_type=mel_spec_type, + progress=progress, + target_rms=target_rms, + cross_fade_duration=cross_fade_duration, + nfe_step=nfe_step, + cfg_strength=cfg_strength, + sway_sampling_coef=sway_sampling_coef, + speed=speed, + fix_duration=fix_duration, + device=device, + ) + ) + + +# infer batches + + +def infer_batch_process( + ref_audio, + ref_text, + gen_text_batches, + model_obj, + vocoder, + mel_spec_type="vocos", + progress=tqdm, + target_rms=0.1, + cross_fade_duration=0.15, + nfe_step=32, + cfg_strength=2.0, + sway_sampling_coef=-1, + speed=1, + fix_duration=None, + device=None, + streaming=False, + chunk_size=2048, +): + audio, sr = ref_audio + if audio.shape[0] > 1: + audio = torch.mean(audio, dim=0, keepdim=True) + + rms = torch.sqrt(torch.mean(torch.square(audio))) + if rms < target_rms: + audio = audio * target_rms / rms + if sr != target_sample_rate: + resampler = torchaudio.transforms.Resample(sr, target_sample_rate) + audio = resampler(audio) + audio = audio.to(device) + + generated_waves = [] + spectrograms = [] + + if len(ref_text[-1].encode("utf-8")) == 1: + ref_text = ref_text + " " + + def process_batch(gen_text): + local_speed = speed + if len(gen_text.encode("utf-8")) < 10: + local_speed = 0.3 + + # Prepare the text + text_list = [ref_text + gen_text] + final_text_list = convert_char_to_pinyin(text_list) + + ref_audio_len = audio.shape[-1] // hop_length + if fix_duration is not None: + duration = int(fix_duration * target_sample_rate / hop_length) + else: + # Calculate duration + ref_text_len = len(ref_text.encode("utf-8")) + gen_text_len = len(gen_text.encode("utf-8")) + duration = ref_audio_len + int(ref_audio_len / ref_text_len * gen_text_len / local_speed) + + # inference + with torch.inference_mode(): + generated, _ = model_obj.sample( + cond=audio, + text=final_text_list, + duration=duration, + steps=nfe_step, + cfg_strength=cfg_strength, + sway_sampling_coef=sway_sampling_coef, + ) + del _ + + generated = generated.to(torch.float32) # generated mel spectrogram + generated = generated[:, ref_audio_len:, :] + generated = generated.permute(0, 2, 1) + if mel_spec_type == "vocos": + generated_wave = vocoder.decode(generated) + elif mel_spec_type == "bigvgan": + generated_wave = vocoder(generated) + if rms < target_rms: + generated_wave = generated_wave * rms / target_rms + + # wav -> numpy + generated_wave = generated_wave.squeeze().cpu().numpy() + + if streaming: + for j in range(0, len(generated_wave), chunk_size): + yield generated_wave[j : j + chunk_size], target_sample_rate + else: + generated_cpu = generated[0].cpu().numpy() + del generated + yield generated_wave, generated_cpu + + if streaming: + for gen_text in progress.tqdm(gen_text_batches) if progress is not None else gen_text_batches: + for chunk in process_batch(gen_text): + yield chunk + else: + with ThreadPoolExecutor() as executor: + futures = [executor.submit(process_batch, gen_text) for gen_text in gen_text_batches] + for future in progress.tqdm(futures) if progress is not None else futures: + result = future.result() + if result: + generated_wave, generated_mel_spec = next(result) + generated_waves.append(generated_wave) + spectrograms.append(generated_mel_spec) + + if generated_waves: + if cross_fade_duration <= 0: + # Simply concatenate + final_wave = np.concatenate(generated_waves) + else: + # Combine all generated waves with cross-fading + final_wave = generated_waves[0] + for i in range(1, len(generated_waves)): + prev_wave = final_wave + next_wave = generated_waves[i] + + # Calculate cross-fade samples, ensuring it does not exceed wave lengths + cross_fade_samples = int(cross_fade_duration * target_sample_rate) + cross_fade_samples = min(cross_fade_samples, len(prev_wave), len(next_wave)) + + if cross_fade_samples <= 0: + # No overlap possible, concatenate + final_wave = np.concatenate([prev_wave, next_wave]) + continue + + # Overlapping parts + prev_overlap = prev_wave[-cross_fade_samples:] + next_overlap = next_wave[:cross_fade_samples] + + # Fade out and fade in + fade_out = np.linspace(1, 0, cross_fade_samples) + fade_in = np.linspace(0, 1, cross_fade_samples) + + # Cross-faded overlap + cross_faded_overlap = prev_overlap * fade_out + next_overlap * fade_in + + # Combine + new_wave = np.concatenate( + [prev_wave[:-cross_fade_samples], cross_faded_overlap, next_wave[cross_fade_samples:]] + ) + + final_wave = new_wave + + # Create a combined spectrogram + combined_spectrogram = np.concatenate(spectrograms, axis=1) + + yield final_wave, target_sample_rate, combined_spectrogram + + else: + yield None, target_sample_rate, None + + +# remove silence from generated wav + + +def remove_silence_for_generated_wav(filename): + aseg = AudioSegment.from_file(filename) + non_silent_segs = silence.split_on_silence( + aseg, min_silence_len=1000, silence_thresh=-50, keep_silence=500, seek_step=10 + ) + non_silent_wave = AudioSegment.silent(duration=0) + for non_silent_seg in non_silent_segs: + non_silent_wave += non_silent_seg + aseg = non_silent_wave + aseg.export(filename, format="wav") + + +# save spectrogram + + +def save_spectrogram(spectrogram, path): + plt.figure(figsize=(12, 4)) + plt.imshow(spectrogram, origin="lower", aspect="auto") + plt.colorbar() + plt.savefig(path) + plt.close() diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/model/__init__.py b/bi_v100-f5-tts/F5-TTS/src/f5_tts/model/__init__.py new file mode 100644 index 0000000..4a339fe --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/model/__init__.py @@ -0,0 +1,8 @@ +from f5_tts.model.backbones.dit import DiT +from f5_tts.model.backbones.mmdit import MMDiT +from f5_tts.model.backbones.unett import UNetT +from f5_tts.model.cfm import CFM +from f5_tts.model.trainer import Trainer + + +__all__ = ["CFM", "UNetT", "DiT", "MMDiT", "Trainer"] diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/model/backbones/README.md b/bi_v100-f5-tts/F5-TTS/src/f5_tts/model/backbones/README.md new file mode 100644 index 0000000..09bd4da --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/model/backbones/README.md @@ -0,0 +1,20 @@ +## Backbones quick introduction + + +### unett.py +- flat unet transformer +- structure same as in e2-tts & voicebox paper except using rotary pos emb +- possible abs pos emb & convnextv2 blocks for embedded text before concat + +### dit.py +- adaln-zero dit +- embedded timestep as condition +- concatted noised_input + masked_cond + embedded_text, linear proj in +- possible abs pos emb & convnextv2 blocks for embedded text before concat +- possible long skip connection (first layer to last layer) + +### mmdit.py +- stable diffusion 3 block structure +- timestep as condition +- left stream: text embedded and applied a abs pos emb +- right stream: masked_cond & noised_input concatted and with same conv pos emb as unett diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/model/backbones/dit.py b/bi_v100-f5-tts/F5-TTS/src/f5_tts/model/backbones/dit.py new file mode 100644 index 0000000..2af99a1 --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/model/backbones/dit.py @@ -0,0 +1,259 @@ +""" +ein notation: +b - batch +n - sequence +nt - text sequence +nw - raw wave length +d - dimension +""" + +from __future__ import annotations + +import torch +import torch.nn.functional as F +from torch import nn +from x_transformers.x_transformers import RotaryEmbedding + +from f5_tts.model.modules import ( + AdaLayerNorm_Final, + ConvNeXtV2Block, + ConvPositionEmbedding, + DiTBlock, + TimestepEmbedding, + get_pos_embed_indices, + precompute_freqs_cis, +) + + +# Text embedding + + +class TextEmbedding(nn.Module): + def __init__(self, text_num_embeds, text_dim, mask_padding=True, conv_layers=0, conv_mult=2): + super().__init__() + self.text_embed = nn.Embedding(text_num_embeds + 1, text_dim) # use 0 as filler token + + self.mask_padding = mask_padding # mask filler and batch padding tokens or not + + if conv_layers > 0: + self.extra_modeling = True + self.precompute_max_pos = 4096 # ~44s of 24khz audio + self.register_buffer("freqs_cis", precompute_freqs_cis(text_dim, self.precompute_max_pos), persistent=False) + self.text_blocks = nn.Sequential( + *[ConvNeXtV2Block(text_dim, text_dim * conv_mult) for _ in range(conv_layers)] + ) + else: + self.extra_modeling = False + + def forward(self, text: int["b nt"], seq_len, drop_text=False): # noqa: F722 + text = text + 1 # use 0 as filler token. preprocess of batch pad -1, see list_str_to_idx() + text = text[:, :seq_len] # curtail if character tokens are more than the mel spec tokens + batch, text_len = text.shape[0], text.shape[1] + text = F.pad(text, (0, seq_len - text_len), value=0) + if self.mask_padding: + text_mask = text == 0 + + if drop_text: # cfg for text + text = torch.zeros_like(text) + + text = self.text_embed(text) # b n -> b n d + + # possible extra modeling + if self.extra_modeling: + # sinus pos emb + batch_start = torch.zeros((batch,), dtype=torch.long) + pos_idx = get_pos_embed_indices(batch_start, seq_len, max_pos=self.precompute_max_pos) + text_pos_embed = self.freqs_cis[pos_idx] + text = text + text_pos_embed + + # convnextv2 blocks + if self.mask_padding: + text = text.masked_fill(text_mask.unsqueeze(-1).expand(-1, -1, text.size(-1)), 0.0) + for block in self.text_blocks: + text = block(text) + text = text.masked_fill(text_mask.unsqueeze(-1).expand(-1, -1, text.size(-1)), 0.0) + else: + text = self.text_blocks(text) + + return text + + +# noised input audio and context mixing embedding + + +class InputEmbedding(nn.Module): + def __init__(self, mel_dim, text_dim, out_dim): + super().__init__() + self.proj = nn.Linear(mel_dim * 2 + text_dim, out_dim) + self.conv_pos_embed = ConvPositionEmbedding(dim=out_dim) + + def forward(self, x: float["b n d"], cond: float["b n d"], text_embed: float["b n d"], drop_audio_cond=False): # noqa: F722 + if drop_audio_cond: # cfg for cond audio + cond = torch.zeros_like(cond) + + x = self.proj(torch.cat((x, cond, text_embed), dim=-1)) + x = self.conv_pos_embed(x) + x + return x + + +# Transformer backbone using DiT blocks + + +class DiT(nn.Module): + def __init__( + self, + *, + dim, + depth=8, + heads=8, + dim_head=64, + dropout=0.1, + ff_mult=4, + mel_dim=100, + text_num_embeds=256, + text_dim=None, + text_mask_padding=True, + qk_norm=None, + conv_layers=0, + pe_attn_head=None, + attn_backend="torch", # "torch" | "flash_attn" + attn_mask_enabled=False, + long_skip_connection=False, + checkpoint_activations=False, + ): + super().__init__() + + self.time_embed = TimestepEmbedding(dim) + if text_dim is None: + text_dim = mel_dim + self.text_embed = TextEmbedding( + text_num_embeds, text_dim, mask_padding=text_mask_padding, conv_layers=conv_layers + ) + self.text_cond, self.text_uncond = None, None # text cache + self.input_embed = InputEmbedding(mel_dim, text_dim, dim) + + self.rotary_embed = RotaryEmbedding(dim_head) + + self.dim = dim + self.depth = depth + + self.transformer_blocks = nn.ModuleList( + [ + DiTBlock( + dim=dim, + heads=heads, + dim_head=dim_head, + ff_mult=ff_mult, + dropout=dropout, + qk_norm=qk_norm, + pe_attn_head=pe_attn_head, + attn_backend=attn_backend, + attn_mask_enabled=attn_mask_enabled, + ) + for _ in range(depth) + ] + ) + self.long_skip_connection = nn.Linear(dim * 2, dim, bias=False) if long_skip_connection else None + + self.norm_out = AdaLayerNorm_Final(dim) # final modulation + self.proj_out = nn.Linear(dim, mel_dim) + + self.checkpoint_activations = checkpoint_activations + + self.initialize_weights() + + def initialize_weights(self): + # Zero-out AdaLN layers in DiT blocks: + for block in self.transformer_blocks: + nn.init.constant_(block.attn_norm.linear.weight, 0) + nn.init.constant_(block.attn_norm.linear.bias, 0) + + # Zero-out output layers: + nn.init.constant_(self.norm_out.linear.weight, 0) + nn.init.constant_(self.norm_out.linear.bias, 0) + nn.init.constant_(self.proj_out.weight, 0) + nn.init.constant_(self.proj_out.bias, 0) + + def ckpt_wrapper(self, module): + # https://github.com/chuanyangjin/fast-DiT/blob/main/models.py + def ckpt_forward(*inputs): + outputs = module(*inputs) + return outputs + + return ckpt_forward + + def get_input_embed( + self, + x, # b n d + cond, # b n d + text, # b nt + drop_audio_cond: bool = False, + drop_text: bool = False, + cache: bool = True, + ): + seq_len = x.shape[1] + if cache: + if drop_text: + if self.text_uncond is None: + self.text_uncond = self.text_embed(text, seq_len, drop_text=True) + text_embed = self.text_uncond + else: + if self.text_cond is None: + self.text_cond = self.text_embed(text, seq_len, drop_text=False) + text_embed = self.text_cond + else: + text_embed = self.text_embed(text, seq_len, drop_text=drop_text) + + x = self.input_embed(x, cond, text_embed, drop_audio_cond=drop_audio_cond) + + return x + + def clear_cache(self): + self.text_cond, self.text_uncond = None, None + + def forward( + self, + x: float["b n d"], # nosied input audio # noqa: F722 + cond: float["b n d"], # masked cond audio # noqa: F722 + text: int["b nt"], # text # noqa: F722 + time: float["b"] | float[""], # time step # noqa: F821 F722 + mask: bool["b n"] | None = None, # noqa: F722 + drop_audio_cond: bool = False, # cfg for cond audio + drop_text: bool = False, # cfg for text + cfg_infer: bool = False, # cfg inference, pack cond & uncond forward + cache: bool = False, + ): + batch, seq_len = x.shape[0], x.shape[1] + if time.ndim == 0: + time = time.repeat(batch) + + # t: conditioning time, text: text, x: noised audio + cond audio + text + t = self.time_embed(time) + if cfg_infer: # pack cond & uncond forward: b n d -> 2b n d + x_cond = self.get_input_embed(x, cond, text, drop_audio_cond=False, drop_text=False, cache=cache) + x_uncond = self.get_input_embed(x, cond, text, drop_audio_cond=True, drop_text=True, cache=cache) + x = torch.cat((x_cond, x_uncond), dim=0) + t = torch.cat((t, t), dim=0) + mask = torch.cat((mask, mask), dim=0) if mask is not None else None + else: + x = self.get_input_embed(x, cond, text, drop_audio_cond=drop_audio_cond, drop_text=drop_text, cache=cache) + + rope = self.rotary_embed.forward_from_seq_len(seq_len) + + if self.long_skip_connection is not None: + residual = x + + for block in self.transformer_blocks: + if self.checkpoint_activations: + # https://pytorch.org/docs/stable/checkpoint.html#torch.utils.checkpoint.checkpoint + x = torch.utils.checkpoint.checkpoint(self.ckpt_wrapper(block), x, t, mask, rope, use_reentrant=False) + else: + x = block(x, t, mask=mask, rope=rope) + + if self.long_skip_connection is not None: + x = self.long_skip_connection(torch.cat((x, residual), dim=-1)) + + x = self.norm_out(x, t) + output = self.proj_out(x) + + return output diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/model/backbones/mmdit.py b/bi_v100-f5-tts/F5-TTS/src/f5_tts/model/backbones/mmdit.py new file mode 100644 index 0000000..cd56de9 --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/model/backbones/mmdit.py @@ -0,0 +1,212 @@ +""" +ein notation: +b - batch +n - sequence +nt - text sequence +nw - raw wave length +d - dimension +""" + +from __future__ import annotations + +import torch +from torch import nn +from x_transformers.x_transformers import RotaryEmbedding + +from f5_tts.model.modules import ( + AdaLayerNorm_Final, + ConvPositionEmbedding, + MMDiTBlock, + TimestepEmbedding, + get_pos_embed_indices, + precompute_freqs_cis, +) + + +# text embedding + + +class TextEmbedding(nn.Module): + def __init__(self, out_dim, text_num_embeds, mask_padding=True): + super().__init__() + self.text_embed = nn.Embedding(text_num_embeds + 1, out_dim) # will use 0 as filler token + + self.mask_padding = mask_padding # mask filler and batch padding tokens or not + + self.precompute_max_pos = 1024 + self.register_buffer("freqs_cis", precompute_freqs_cis(out_dim, self.precompute_max_pos), persistent=False) + + def forward(self, text: int["b nt"], drop_text=False) -> int["b nt d"]: # noqa: F722 + text = text + 1 # use 0 as filler token. preprocess of batch pad -1, see list_str_to_idx() + if self.mask_padding: + text_mask = text == 0 + + if drop_text: # cfg for text + text = torch.zeros_like(text) + + text = self.text_embed(text) # b nt -> b nt d + + # sinus pos emb + batch_start = torch.zeros((text.shape[0],), dtype=torch.long) + batch_text_len = text.shape[1] + pos_idx = get_pos_embed_indices(batch_start, batch_text_len, max_pos=self.precompute_max_pos) + text_pos_embed = self.freqs_cis[pos_idx] + + text = text + text_pos_embed + + if self.mask_padding: + text = text.masked_fill(text_mask.unsqueeze(-1).expand(-1, -1, text.size(-1)), 0.0) + + return text + + +# noised input & masked cond audio embedding + + +class AudioEmbedding(nn.Module): + def __init__(self, in_dim, out_dim): + super().__init__() + self.linear = nn.Linear(2 * in_dim, out_dim) + self.conv_pos_embed = ConvPositionEmbedding(out_dim) + + def forward(self, x: float["b n d"], cond: float["b n d"], drop_audio_cond=False): # noqa: F722 + if drop_audio_cond: + cond = torch.zeros_like(cond) + x = torch.cat((x, cond), dim=-1) + x = self.linear(x) + x = self.conv_pos_embed(x) + x + return x + + +# Transformer backbone using MM-DiT blocks + + +class MMDiT(nn.Module): + def __init__( + self, + *, + dim, + depth=8, + heads=8, + dim_head=64, + dropout=0.1, + ff_mult=4, + mel_dim=100, + text_num_embeds=256, + text_mask_padding=True, + qk_norm=None, + ): + super().__init__() + + self.time_embed = TimestepEmbedding(dim) + self.text_embed = TextEmbedding(dim, text_num_embeds, mask_padding=text_mask_padding) + self.text_cond, self.text_uncond = None, None # text cache + self.audio_embed = AudioEmbedding(mel_dim, dim) + + self.rotary_embed = RotaryEmbedding(dim_head) + + self.dim = dim + self.depth = depth + + self.transformer_blocks = nn.ModuleList( + [ + MMDiTBlock( + dim=dim, + heads=heads, + dim_head=dim_head, + dropout=dropout, + ff_mult=ff_mult, + context_pre_only=i == depth - 1, + qk_norm=qk_norm, + ) + for i in range(depth) + ] + ) + self.norm_out = AdaLayerNorm_Final(dim) # final modulation + self.proj_out = nn.Linear(dim, mel_dim) + + self.initialize_weights() + + def initialize_weights(self): + # Zero-out AdaLN layers in MMDiT blocks: + for block in self.transformer_blocks: + nn.init.constant_(block.attn_norm_x.linear.weight, 0) + nn.init.constant_(block.attn_norm_x.linear.bias, 0) + nn.init.constant_(block.attn_norm_c.linear.weight, 0) + nn.init.constant_(block.attn_norm_c.linear.bias, 0) + + # Zero-out output layers: + nn.init.constant_(self.norm_out.linear.weight, 0) + nn.init.constant_(self.norm_out.linear.bias, 0) + nn.init.constant_(self.proj_out.weight, 0) + nn.init.constant_(self.proj_out.bias, 0) + + def get_input_embed( + self, + x, # b n d + cond, # b n d + text, # b nt + drop_audio_cond: bool = False, + drop_text: bool = False, + cache: bool = True, + ): + if cache: + if drop_text: + if self.text_uncond is None: + self.text_uncond = self.text_embed(text, drop_text=True) + c = self.text_uncond + else: + if self.text_cond is None: + self.text_cond = self.text_embed(text, drop_text=False) + c = self.text_cond + else: + c = self.text_embed(text, drop_text=drop_text) + x = self.audio_embed(x, cond, drop_audio_cond=drop_audio_cond) + + return x, c + + def clear_cache(self): + self.text_cond, self.text_uncond = None, None + + def forward( + self, + x: float["b n d"], # nosied input audio # noqa: F722 + cond: float["b n d"], # masked cond audio # noqa: F722 + text: int["b nt"], # text # noqa: F722 + time: float["b"] | float[""], # time step # noqa: F821 F722 + mask: bool["b n"] | None = None, # noqa: F722 + drop_audio_cond: bool = False, # cfg for cond audio + drop_text: bool = False, # cfg for text + cfg_infer: bool = False, # cfg inference, pack cond & uncond forward + cache: bool = False, + ): + batch = x.shape[0] + if time.ndim == 0: + time = time.repeat(batch) + + # t: conditioning (time), c: context (text + masked cond audio), x: noised input audio + t = self.time_embed(time) + if cfg_infer: # pack cond & uncond forward: b n d -> 2b n d + x_cond, c_cond = self.get_input_embed(x, cond, text, drop_audio_cond=False, drop_text=False, cache=cache) + x_uncond, c_uncond = self.get_input_embed(x, cond, text, drop_audio_cond=True, drop_text=True, cache=cache) + x = torch.cat((x_cond, x_uncond), dim=0) + c = torch.cat((c_cond, c_uncond), dim=0) + t = torch.cat((t, t), dim=0) + mask = torch.cat((mask, mask), dim=0) if mask is not None else None + else: + x, c = self.get_input_embed( + x, cond, text, drop_audio_cond=drop_audio_cond, drop_text=drop_text, cache=cache + ) + + seq_len = x.shape[1] + text_len = text.shape[1] + rope_audio = self.rotary_embed.forward_from_seq_len(seq_len) + rope_text = self.rotary_embed.forward_from_seq_len(text_len) + + for block in self.transformer_blocks: + c, x = block(x, c, t, mask=mask, rope=rope_audio, c_rope=rope_text) + + x = self.norm_out(x, t) + output = self.proj_out(x) + + return output diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/model/backbones/unett.py b/bi_v100-f5-tts/F5-TTS/src/f5_tts/model/backbones/unett.py new file mode 100644 index 0000000..7b63c6e --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/model/backbones/unett.py @@ -0,0 +1,273 @@ +""" +ein notation: +b - batch +n - sequence +nt - text sequence +nw - raw wave length +d - dimension +""" + +from __future__ import annotations + +from typing import Literal + +import torch +import torch.nn.functional as F +from torch import nn +from x_transformers import RMSNorm +from x_transformers.x_transformers import RotaryEmbedding + +from f5_tts.model.modules import ( + Attention, + AttnProcessor, + ConvNeXtV2Block, + ConvPositionEmbedding, + FeedForward, + TimestepEmbedding, + get_pos_embed_indices, + precompute_freqs_cis, +) + + +# Text embedding + + +class TextEmbedding(nn.Module): + def __init__(self, text_num_embeds, text_dim, mask_padding=True, conv_layers=0, conv_mult=2): + super().__init__() + self.text_embed = nn.Embedding(text_num_embeds + 1, text_dim) # use 0 as filler token + + self.mask_padding = mask_padding # mask filler and batch padding tokens or not + + if conv_layers > 0: + self.extra_modeling = True + self.precompute_max_pos = 4096 # ~44s of 24khz audio + self.register_buffer("freqs_cis", precompute_freqs_cis(text_dim, self.precompute_max_pos), persistent=False) + self.text_blocks = nn.Sequential( + *[ConvNeXtV2Block(text_dim, text_dim * conv_mult) for _ in range(conv_layers)] + ) + else: + self.extra_modeling = False + + def forward(self, text: int["b nt"], seq_len, drop_text=False): # noqa: F722 + text = text + 1 # use 0 as filler token. preprocess of batch pad -1, see list_str_to_idx() + text = text[:, :seq_len] # curtail if character tokens are more than the mel spec tokens + batch, text_len = text.shape[0], text.shape[1] + text = F.pad(text, (0, seq_len - text_len), value=0) + if self.mask_padding: + text_mask = text == 0 + + if drop_text: # cfg for text + text = torch.zeros_like(text) + + text = self.text_embed(text) # b n -> b n d + + # possible extra modeling + if self.extra_modeling: + # sinus pos emb + batch_start = torch.zeros((batch,), dtype=torch.long) + pos_idx = get_pos_embed_indices(batch_start, seq_len, max_pos=self.precompute_max_pos) + text_pos_embed = self.freqs_cis[pos_idx] + text = text + text_pos_embed + + # convnextv2 blocks + if self.mask_padding: + text = text.masked_fill(text_mask.unsqueeze(-1).expand(-1, -1, text.size(-1)), 0.0) + for block in self.text_blocks: + text = block(text) + text = text.masked_fill(text_mask.unsqueeze(-1).expand(-1, -1, text.size(-1)), 0.0) + else: + text = self.text_blocks(text) + + return text + + +# noised input audio and context mixing embedding + + +class InputEmbedding(nn.Module): + def __init__(self, mel_dim, text_dim, out_dim): + super().__init__() + self.proj = nn.Linear(mel_dim * 2 + text_dim, out_dim) + self.conv_pos_embed = ConvPositionEmbedding(dim=out_dim) + + def forward(self, x: float["b n d"], cond: float["b n d"], text_embed: float["b n d"], drop_audio_cond=False): # noqa: F722 + if drop_audio_cond: # cfg for cond audio + cond = torch.zeros_like(cond) + + x = self.proj(torch.cat((x, cond, text_embed), dim=-1)) + x = self.conv_pos_embed(x) + x + return x + + +# Flat UNet Transformer backbone + + +class UNetT(nn.Module): + def __init__( + self, + *, + dim, + depth=8, + heads=8, + dim_head=64, + dropout=0.1, + ff_mult=4, + mel_dim=100, + text_num_embeds=256, + text_dim=None, + text_mask_padding=True, + qk_norm=None, + conv_layers=0, + pe_attn_head=None, + skip_connect_type: Literal["add", "concat", "none"] = "concat", + ): + super().__init__() + assert depth % 2 == 0, "UNet-Transformer's depth should be even." + + self.time_embed = TimestepEmbedding(dim) + if text_dim is None: + text_dim = mel_dim + self.text_embed = TextEmbedding( + text_num_embeds, text_dim, mask_padding=text_mask_padding, conv_layers=conv_layers + ) + self.text_cond, self.text_uncond = None, None # text cache + self.input_embed = InputEmbedding(mel_dim, text_dim, dim) + + self.rotary_embed = RotaryEmbedding(dim_head) + + # transformer layers & skip connections + + self.dim = dim + self.skip_connect_type = skip_connect_type + needs_skip_proj = skip_connect_type == "concat" + + self.depth = depth + self.layers = nn.ModuleList([]) + + for idx in range(depth): + is_later_half = idx >= (depth // 2) + + attn_norm = RMSNorm(dim) + attn = Attention( + processor=AttnProcessor(pe_attn_head=pe_attn_head), + dim=dim, + heads=heads, + dim_head=dim_head, + dropout=dropout, + qk_norm=qk_norm, + ) + + ff_norm = RMSNorm(dim) + ff = FeedForward(dim=dim, mult=ff_mult, dropout=dropout, approximate="tanh") + + skip_proj = nn.Linear(dim * 2, dim, bias=False) if needs_skip_proj and is_later_half else None + + self.layers.append( + nn.ModuleList( + [ + skip_proj, + attn_norm, + attn, + ff_norm, + ff, + ] + ) + ) + + self.norm_out = RMSNorm(dim) + self.proj_out = nn.Linear(dim, mel_dim) + + def get_input_embed( + self, + x, # b n d + cond, # b n d + text, # b nt + drop_audio_cond: bool = False, + drop_text: bool = False, + cache: bool = True, + ): + seq_len = x.shape[1] + if cache: + if drop_text: + if self.text_uncond is None: + self.text_uncond = self.text_embed(text, seq_len, drop_text=True) + text_embed = self.text_uncond + else: + if self.text_cond is None: + self.text_cond = self.text_embed(text, seq_len, drop_text=False) + text_embed = self.text_cond + else: + text_embed = self.text_embed(text, seq_len, drop_text=drop_text) + + x = self.input_embed(x, cond, text_embed, drop_audio_cond=drop_audio_cond) + + return x + + def clear_cache(self): + self.text_cond, self.text_uncond = None, None + + def forward( + self, + x: float["b n d"], # nosied input audio # noqa: F722 + cond: float["b n d"], # masked cond audio # noqa: F722 + text: int["b nt"], # text # noqa: F722 + time: float["b"] | float[""], # time step # noqa: F821 F722 + mask: bool["b n"] | None = None, # noqa: F722 + drop_audio_cond: bool = False, # cfg for cond audio + drop_text: bool = False, # cfg for text + cfg_infer: bool = False, # cfg inference, pack cond & uncond forward + cache: bool = False, + ): + batch, seq_len = x.shape[0], x.shape[1] + if time.ndim == 0: + time = time.repeat(batch) + + # t: conditioning time, c: context (text + masked cond audio), x: noised input audio + t = self.time_embed(time) + if cfg_infer: # pack cond & uncond forward: b n d -> 2b n d + x_cond = self.get_input_embed(x, cond, text, drop_audio_cond=False, drop_text=False, cache=cache) + x_uncond = self.get_input_embed(x, cond, text, drop_audio_cond=True, drop_text=True, cache=cache) + x = torch.cat((x_cond, x_uncond), dim=0) + t = torch.cat((t, t), dim=0) + mask = torch.cat((mask, mask), dim=0) if mask is not None else None + else: + x = self.get_input_embed(x, cond, text, drop_audio_cond=drop_audio_cond, drop_text=drop_text, cache=cache) + + # postfix time t to input x, [b n d] -> [b n+1 d] + x = torch.cat([t.unsqueeze(1), x], dim=1) # pack t to x + if mask is not None: + mask = F.pad(mask, (1, 0), value=1) + + rope = self.rotary_embed.forward_from_seq_len(seq_len + 1) + + # flat unet transformer + skip_connect_type = self.skip_connect_type + skips = [] + for idx, (maybe_skip_proj, attn_norm, attn, ff_norm, ff) in enumerate(self.layers): + layer = idx + 1 + + # skip connection logic + is_first_half = layer <= (self.depth // 2) + is_later_half = not is_first_half + + if is_first_half: + skips.append(x) + + if is_later_half: + skip = skips.pop() + if skip_connect_type == "concat": + x = torch.cat((x, skip), dim=-1) + x = maybe_skip_proj(x) + elif skip_connect_type == "add": + x = x + skip + + # attention and feedforward blocks + x = attn(attn_norm(x), rope=rope, mask=mask) + x + x = ff(ff_norm(x)) + x + + assert len(skips) == 0 + + x = self.norm_out(x)[:, 1:, :] # unpack t from x + + return self.proj_out(x) diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/model/cfm.py b/bi_v100-f5-tts/F5-TTS/src/f5_tts/model/cfm.py new file mode 100644 index 0000000..ae06575 --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/model/cfm.py @@ -0,0 +1,302 @@ +""" +ein notation: +b - batch +n - sequence +nt - text sequence +nw - raw wave length +d - dimension +""" + +from __future__ import annotations + +from random import random +from typing import Callable + +import torch +import torch.nn.functional as F +from torch import nn +from torch.nn.utils.rnn import pad_sequence +from torchdiffeq import odeint + +from f5_tts.model.modules import MelSpec +from f5_tts.model.utils import ( + default, + exists, + get_epss_timesteps, + lens_to_mask, + list_str_to_idx, + list_str_to_tensor, + mask_from_frac_lengths, +) + + +class CFM(nn.Module): + def __init__( + self, + transformer: nn.Module, + sigma=0.0, + odeint_kwargs: dict = dict( + # atol = 1e-5, + # rtol = 1e-5, + method="euler" # 'midpoint' + ), + audio_drop_prob=0.3, + cond_drop_prob=0.2, + num_channels=None, + mel_spec_module: nn.Module | None = None, + mel_spec_kwargs: dict = dict(), + frac_lengths_mask: tuple[float, float] = (0.7, 1.0), + vocab_char_map: dict[str:int] | None = None, + ): + super().__init__() + + self.frac_lengths_mask = frac_lengths_mask + + # mel spec + self.mel_spec = default(mel_spec_module, MelSpec(**mel_spec_kwargs)) + num_channels = default(num_channels, self.mel_spec.n_mel_channels) + self.num_channels = num_channels + + # classifier-free guidance + self.audio_drop_prob = audio_drop_prob + self.cond_drop_prob = cond_drop_prob + + # transformer + self.transformer = transformer + dim = transformer.dim + self.dim = dim + + # conditional flow related + self.sigma = sigma + + # sampling related + self.odeint_kwargs = odeint_kwargs + + # vocab map for tokenization + self.vocab_char_map = vocab_char_map + + @property + def device(self): + return next(self.parameters()).device + + @torch.no_grad() + def sample( + self, + cond: float["b n d"] | float["b nw"], # noqa: F722 + text: int["b nt"] | list[str], # noqa: F722 + duration: int | int["b"], # noqa: F821 + *, + lens: int["b"] | None = None, # noqa: F821 + steps=32, + cfg_strength=1.0, + sway_sampling_coef=None, + seed: int | None = None, + max_duration=4096, + vocoder: Callable[[float["b d n"]], float["b nw"]] | None = None, # noqa: F722 + use_epss=True, + no_ref_audio=False, + duplicate_test=False, + t_inter=0.1, + edit_mask=None, + ): + self.eval() + # raw wave + + if cond.ndim == 2: + cond = self.mel_spec(cond) + cond = cond.permute(0, 2, 1) + assert cond.shape[-1] == self.num_channels + + cond = cond.to(next(self.parameters()).dtype) + + batch, cond_seq_len, device = *cond.shape[:2], cond.device + if not exists(lens): + lens = torch.full((batch,), cond_seq_len, device=device, dtype=torch.long) + + # text + + if isinstance(text, list): + if exists(self.vocab_char_map): + text = list_str_to_idx(text, self.vocab_char_map).to(device) + else: + text = list_str_to_tensor(text).to(device) + assert text.shape[0] == batch + + # duration + + cond_mask = lens_to_mask(lens) + if edit_mask is not None: + cond_mask = cond_mask & edit_mask + + if isinstance(duration, int): + duration = torch.full((batch,), duration, device=device, dtype=torch.long) + + duration = torch.maximum( + torch.maximum((text != -1).sum(dim=-1), lens) + 1, duration + ) # duration at least text/audio prompt length plus one token, so something is generated + duration = duration.clamp(max=max_duration) + max_duration = duration.amax() + + # duplicate test corner for inner time step oberservation + if duplicate_test: + test_cond = F.pad(cond, (0, 0, cond_seq_len, max_duration - 2 * cond_seq_len), value=0.0) + + cond = F.pad(cond, (0, 0, 0, max_duration - cond_seq_len), value=0.0) + if no_ref_audio: + cond = torch.zeros_like(cond) + + cond_mask = F.pad(cond_mask, (0, max_duration - cond_mask.shape[-1]), value=False) + cond_mask = cond_mask.unsqueeze(-1) + step_cond = torch.where( + cond_mask, cond, torch.zeros_like(cond) + ) # allow direct control (cut cond audio) with lens passed in + + if batch > 1: + mask = lens_to_mask(duration) + else: # save memory and speed up, as single inference need no mask currently + mask = None + + # neural ode + + def fn(t, x): + # at each step, conditioning is fixed + # step_cond = torch.where(cond_mask, cond, torch.zeros_like(cond)) + + # predict flow (cond) + if cfg_strength < 1e-5: + pred = self.transformer( + x=x, + cond=step_cond, + text=text, + time=t, + mask=mask, + drop_audio_cond=False, + drop_text=False, + cache=True, + ) + return pred + + # predict flow (cond and uncond), for classifier-free guidance + pred_cfg = self.transformer( + x=x, + cond=step_cond, + text=text, + time=t, + mask=mask, + cfg_infer=True, + cache=True, + ) + pred, null_pred = torch.chunk(pred_cfg, 2, dim=0) + return pred + (pred - null_pred) * cfg_strength + + # noise input + # to make sure batch inference result is same with different batch size, and for sure single inference + # still some difference maybe due to convolutional layers + y0 = [] + for dur in duration: + if exists(seed): + torch.manual_seed(seed) + y0.append(torch.randn(dur, self.num_channels, device=self.device, dtype=step_cond.dtype)) + y0 = pad_sequence(y0, padding_value=0, batch_first=True) + + t_start = 0 + + # duplicate test corner for inner time step oberservation + if duplicate_test: + t_start = t_inter + y0 = (1 - t_start) * y0 + t_start * test_cond + steps = int(steps * (1 - t_start)) + + if t_start == 0 and use_epss: # use Empirically Pruned Step Sampling for low NFE + t = get_epss_timesteps(steps, device=self.device, dtype=step_cond.dtype) + else: + t = torch.linspace(t_start, 1, steps + 1, device=self.device, dtype=step_cond.dtype) + if sway_sampling_coef is not None: + t = t + sway_sampling_coef * (torch.cos(torch.pi / 2 * t) - 1 + t) + + trajectory = odeint(fn, y0, t, **self.odeint_kwargs) + self.transformer.clear_cache() + + sampled = trajectory[-1] + out = sampled + out = torch.where(cond_mask, cond, out) + + if exists(vocoder): + out = out.permute(0, 2, 1) + out = vocoder(out) + + return out, trajectory + + def forward( + self, + inp: float["b n d"] | float["b nw"], # mel or raw wave # noqa: F722 + text: int["b nt"] | list[str], # noqa: F722 + *, + lens: int["b"] | None = None, # noqa: F821 + noise_scheduler: str | None = None, + ): + # handle raw wave + if inp.ndim == 2: + inp = self.mel_spec(inp) + inp = inp.permute(0, 2, 1) + assert inp.shape[-1] == self.num_channels + + batch, seq_len, dtype, device, _σ1 = *inp.shape[:2], inp.dtype, self.device, self.sigma + + # handle text as string + if isinstance(text, list): + if exists(self.vocab_char_map): + text = list_str_to_idx(text, self.vocab_char_map).to(device) + else: + text = list_str_to_tensor(text).to(device) + assert text.shape[0] == batch + + # lens and mask + if not exists(lens): + lens = torch.full((batch,), seq_len, device=device) + + mask = lens_to_mask(lens, length=seq_len) # useless here, as collate_fn will pad to max length in batch + + # get a random span to mask out for training conditionally + frac_lengths = torch.zeros((batch,), device=self.device).float().uniform_(*self.frac_lengths_mask) + rand_span_mask = mask_from_frac_lengths(lens, frac_lengths) + + if exists(mask): + rand_span_mask &= mask + + # mel is x1 + x1 = inp + + # x0 is gaussian noise + x0 = torch.randn_like(x1) + + # time step + time = torch.rand((batch,), dtype=dtype, device=self.device) + # TODO. noise_scheduler + + # sample xt (φ_t(x) in the paper) + t = time.unsqueeze(-1).unsqueeze(-1) + φ = (1 - t) * x0 + t * x1 + flow = x1 - x0 + + # only predict what is within the random mask span for infilling + cond = torch.where(rand_span_mask[..., None], torch.zeros_like(x1), x1) + + # transformer and cfg training with a drop rate + drop_audio_cond = random() < self.audio_drop_prob # p_drop in voicebox paper + if random() < self.cond_drop_prob: # p_uncond in voicebox paper + drop_audio_cond = True + drop_text = True + else: + drop_text = False + + # apply mask will use more memory; might adjust batchsize or batchsampler long sequence threshold + pred = self.transformer( + x=φ, cond=cond, text=text, time=time, drop_audio_cond=drop_audio_cond, drop_text=drop_text, mask=mask + ) + + # flow matching loss + loss = F.mse_loss(pred, flow, reduction="none") + loss = loss[rand_span_mask] + + return loss.mean(), cond, pred diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/model/dataset.py b/bi_v100-f5-tts/F5-TTS/src/f5_tts/model/dataset.py new file mode 100644 index 0000000..50448c3 --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/model/dataset.py @@ -0,0 +1,330 @@ +import json +from importlib.resources import files + +import torch +import torch.nn.functional as F +import torchaudio +from datasets import Dataset as Dataset_ +from datasets import load_from_disk +from torch import nn +from torch.utils.data import Dataset, Sampler +from tqdm import tqdm + +from f5_tts.model.modules import MelSpec +from f5_tts.model.utils import default + + +class HFDataset(Dataset): + def __init__( + self, + hf_dataset: Dataset, + target_sample_rate=24_000, + n_mel_channels=100, + hop_length=256, + n_fft=1024, + win_length=1024, + mel_spec_type="vocos", + ): + self.data = hf_dataset + self.target_sample_rate = target_sample_rate + self.hop_length = hop_length + + self.mel_spectrogram = MelSpec( + n_fft=n_fft, + hop_length=hop_length, + win_length=win_length, + n_mel_channels=n_mel_channels, + target_sample_rate=target_sample_rate, + mel_spec_type=mel_spec_type, + ) + + def get_frame_len(self, index): + row = self.data[index] + audio = row["audio"]["array"] + sample_rate = row["audio"]["sampling_rate"] + return audio.shape[-1] / sample_rate * self.target_sample_rate / self.hop_length + + def __len__(self): + return len(self.data) + + def __getitem__(self, index): + row = self.data[index] + audio = row["audio"]["array"] + + # logger.info(f"Audio shape: {audio.shape}") + + sample_rate = row["audio"]["sampling_rate"] + duration = audio.shape[-1] / sample_rate + + if duration > 30 or duration < 0.3: + return self.__getitem__((index + 1) % len(self.data)) + + audio_tensor = torch.from_numpy(audio).float() + + if sample_rate != self.target_sample_rate: + resampler = torchaudio.transforms.Resample(sample_rate, self.target_sample_rate) + audio_tensor = resampler(audio_tensor) + + audio_tensor = audio_tensor.unsqueeze(0) # 't -> 1 t') + + mel_spec = self.mel_spectrogram(audio_tensor) + + mel_spec = mel_spec.squeeze(0) # '1 d t -> d t' + + text = row["text"] + + return dict( + mel_spec=mel_spec, + text=text, + ) + + +class CustomDataset(Dataset): + def __init__( + self, + custom_dataset: Dataset, + durations=None, + target_sample_rate=24_000, + hop_length=256, + n_mel_channels=100, + n_fft=1024, + win_length=1024, + mel_spec_type="vocos", + preprocessed_mel=False, + mel_spec_module: nn.Module | None = None, + ): + self.data = custom_dataset + self.durations = durations + self.target_sample_rate = target_sample_rate + self.hop_length = hop_length + self.n_fft = n_fft + self.win_length = win_length + self.mel_spec_type = mel_spec_type + self.preprocessed_mel = preprocessed_mel + + if not preprocessed_mel: + self.mel_spectrogram = default( + mel_spec_module, + MelSpec( + n_fft=n_fft, + hop_length=hop_length, + win_length=win_length, + n_mel_channels=n_mel_channels, + target_sample_rate=target_sample_rate, + mel_spec_type=mel_spec_type, + ), + ) + + def get_frame_len(self, index): + if ( + self.durations is not None + ): # Please make sure the separately provided durations are correct, otherwise 99.99% OOM + return self.durations[index] * self.target_sample_rate / self.hop_length + return self.data[index]["duration"] * self.target_sample_rate / self.hop_length + + def __len__(self): + return len(self.data) + + def __getitem__(self, index): + while True: + row = self.data[index] + audio_path = row["audio_path"] + text = row["text"] + duration = row["duration"] + + # filter by given length + if 0.3 <= duration <= 30: + break # valid + + index = (index + 1) % len(self.data) + + if self.preprocessed_mel: + mel_spec = torch.tensor(row["mel_spec"]) + else: + audio, source_sample_rate = torchaudio.load(audio_path) + + # make sure mono input + if audio.shape[0] > 1: + audio = torch.mean(audio, dim=0, keepdim=True) + + # resample if necessary + if source_sample_rate != self.target_sample_rate: + resampler = torchaudio.transforms.Resample(source_sample_rate, self.target_sample_rate) + audio = resampler(audio) + + # to mel spectrogram + mel_spec = self.mel_spectrogram(audio) + mel_spec = mel_spec.squeeze(0) # '1 d t -> d t' + + return { + "mel_spec": mel_spec, + "text": text, + } + + +# Dynamic Batch Sampler +class DynamicBatchSampler(Sampler[list[int]]): + """Extension of Sampler that will do the following: + 1. Change the batch size (essentially number of sequences) + in a batch to ensure that the total number of frames are less + than a certain threshold. + 2. Make sure the padding efficiency in the batch is high. + 3. Shuffle batches each epoch while maintaining reproducibility. + """ + + def __init__( + self, sampler: Sampler[int], frames_threshold: int, max_samples=0, random_seed=None, drop_residual: bool = False + ): + self.sampler = sampler + self.frames_threshold = frames_threshold + self.max_samples = max_samples + self.random_seed = random_seed + self.epoch = 0 + + indices, batches = [], [] + data_source = self.sampler.data_source + + for idx in tqdm( + self.sampler, desc="Sorting with sampler... if slow, check whether dataset is provided with duration" + ): + indices.append((idx, data_source.get_frame_len(idx))) + indices.sort(key=lambda elem: elem[1]) + + batch = [] + batch_frames = 0 + for idx, frame_len in tqdm( + indices, desc=f"Creating dynamic batches with {frames_threshold} audio frames per gpu" + ): + if batch_frames + frame_len <= self.frames_threshold and (max_samples == 0 or len(batch) < max_samples): + batch.append(idx) + batch_frames += frame_len + else: + if len(batch) > 0: + batches.append(batch) + if frame_len <= self.frames_threshold: + batch = [idx] + batch_frames = frame_len + else: + batch = [] + batch_frames = 0 + + if not drop_residual and len(batch) > 0: + batches.append(batch) + + del indices + self.batches = batches + + # Ensure even batches with accelerate BatchSamplerShard cls under frame_per_batch setting + self.drop_last = True + + def set_epoch(self, epoch: int) -> None: + """Sets the epoch for this sampler.""" + self.epoch = epoch + + def __iter__(self): + # Use both random_seed and epoch for deterministic but different shuffling per epoch + if self.random_seed is not None: + g = torch.Generator() + g.manual_seed(self.random_seed + self.epoch) + # Use PyTorch's random permutation for better reproducibility across PyTorch versions + indices = torch.randperm(len(self.batches), generator=g).tolist() + batches = [self.batches[i] for i in indices] + else: + batches = self.batches + return iter(batches) + + def __len__(self): + return len(self.batches) + + +# Load dataset + + +def load_dataset( + dataset_name: str, + tokenizer: str = "pinyin", + dataset_type: str = "CustomDataset", + audio_type: str = "raw", + mel_spec_module: nn.Module | None = None, + mel_spec_kwargs: dict = dict(), +) -> CustomDataset | HFDataset: + """ + dataset_type - "CustomDataset" if you want to use tokenizer name and default data path to load for train_dataset + - "CustomDatasetPath" if you just want to pass the full path to a preprocessed dataset without relying on tokenizer + """ + + print("Loading dataset ...") + + if dataset_type == "CustomDataset": + rel_data_path = str(files("f5_tts").joinpath(f"../../data/{dataset_name}_{tokenizer}")) + if audio_type == "raw": + try: + train_dataset = load_from_disk(f"{rel_data_path}/raw") + except: # noqa: E722 + train_dataset = Dataset_.from_file(f"{rel_data_path}/raw.arrow") + preprocessed_mel = False + elif audio_type == "mel": + train_dataset = Dataset_.from_file(f"{rel_data_path}/mel.arrow") + preprocessed_mel = True + with open(f"{rel_data_path}/duration.json", "r", encoding="utf-8") as f: + data_dict = json.load(f) + durations = data_dict["duration"] + train_dataset = CustomDataset( + train_dataset, + durations=durations, + preprocessed_mel=preprocessed_mel, + mel_spec_module=mel_spec_module, + **mel_spec_kwargs, + ) + + elif dataset_type == "CustomDatasetPath": + try: + train_dataset = load_from_disk(f"{dataset_name}/raw") + except: # noqa: E722 + train_dataset = Dataset_.from_file(f"{dataset_name}/raw.arrow") + + with open(f"{dataset_name}/duration.json", "r", encoding="utf-8") as f: + data_dict = json.load(f) + durations = data_dict["duration"] + train_dataset = CustomDataset( + train_dataset, durations=durations, preprocessed_mel=preprocessed_mel, **mel_spec_kwargs + ) + + elif dataset_type == "HFDataset": + print( + "Should manually modify the path of huggingface dataset to your need.\n" + + "May also the corresponding script cuz different dataset may have different format." + ) + pre, post = dataset_name.split("_") + train_dataset = HFDataset( + load_dataset(f"{pre}/{pre}", split=f"train.{post}", cache_dir=str(files("f5_tts").joinpath("../../data"))), + ) + + return train_dataset + + +# collation + + +def collate_fn(batch): + mel_specs = [item["mel_spec"].squeeze(0) for item in batch] + mel_lengths = torch.LongTensor([spec.shape[-1] for spec in mel_specs]) + max_mel_length = mel_lengths.amax() + + padded_mel_specs = [] + for spec in mel_specs: + padding = (0, max_mel_length - spec.size(-1)) + padded_spec = F.pad(spec, padding, value=0) + padded_mel_specs.append(padded_spec) + + mel_specs = torch.stack(padded_mel_specs) + + text = [item["text"] for item in batch] + text_lengths = torch.LongTensor([len(item) for item in text]) + + return dict( + mel=mel_specs, + mel_lengths=mel_lengths, # records for padding mask + text=text, + text_lengths=text_lengths, + ) diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/model/modules.py b/bi_v100-f5-tts/F5-TTS/src/f5_tts/model/modules.py new file mode 100644 index 0000000..1e2ee4a --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/model/modules.py @@ -0,0 +1,784 @@ +""" +ein notation: +b - batch +n - sequence +nt - text sequence +nw - raw wave length +d - dimension +""" +# flake8: noqa + +from __future__ import annotations + +import math +from typing import Optional + +import torch +import torch.nn.functional as F +import torchaudio +from librosa.filters import mel as librosa_mel_fn +from torch import nn +from x_transformers.x_transformers import apply_rotary_pos_emb + +from f5_tts.model.utils import is_package_available + + +# raw wav to mel spec + + +mel_basis_cache = {} +hann_window_cache = {} + + +def get_bigvgan_mel_spectrogram( + waveform, + n_fft=1024, + n_mel_channels=100, + target_sample_rate=24000, + hop_length=256, + win_length=1024, + fmin=0, + fmax=None, + center=False, +): # Copy from https://github.com/NVIDIA/BigVGAN/tree/main + device = waveform.device + key = f"{n_fft}_{n_mel_channels}_{target_sample_rate}_{hop_length}_{win_length}_{fmin}_{fmax}_{device}" + + if key not in mel_basis_cache: + mel = librosa_mel_fn(sr=target_sample_rate, n_fft=n_fft, n_mels=n_mel_channels, fmin=fmin, fmax=fmax) + mel_basis_cache[key] = torch.from_numpy(mel).float().to(device) # TODO: why they need .float()? + hann_window_cache[key] = torch.hann_window(win_length).to(device) + + mel_basis = mel_basis_cache[key] + hann_window = hann_window_cache[key] + + padding = (n_fft - hop_length) // 2 + waveform = torch.nn.functional.pad(waveform.unsqueeze(1), (padding, padding), mode="reflect").squeeze(1) + + spec = torch.stft( + waveform, + n_fft, + hop_length=hop_length, + win_length=win_length, + window=hann_window, + center=center, + pad_mode="reflect", + normalized=False, + onesided=True, + return_complex=True, + ) + spec = torch.sqrt(torch.view_as_real(spec).pow(2).sum(-1) + 1e-9) + + mel_spec = torch.matmul(mel_basis, spec) + mel_spec = torch.log(torch.clamp(mel_spec, min=1e-5)) + + return mel_spec + + +def get_vocos_mel_spectrogram( + waveform, + n_fft=1024, + n_mel_channels=100, + target_sample_rate=24000, + hop_length=256, + win_length=1024, +): + mel_stft = torchaudio.transforms.MelSpectrogram( + sample_rate=target_sample_rate, + n_fft=n_fft, + win_length=win_length, + hop_length=hop_length, + n_mels=n_mel_channels, + power=1, + center=True, + normalized=False, + norm=None, + ).to(waveform.device) + if len(waveform.shape) == 3: + waveform = waveform.squeeze(1) # 'b 1 nw -> b nw' + + assert len(waveform.shape) == 2 + + mel = mel_stft(waveform) + mel = mel.clamp(min=1e-5).log() + return mel + + +class MelSpec(nn.Module): + def __init__( + self, + n_fft=1024, + hop_length=256, + win_length=1024, + n_mel_channels=100, + target_sample_rate=24_000, + mel_spec_type="vocos", + ): + super().__init__() + assert mel_spec_type in ["vocos", "bigvgan"], print("We only support two extract mel backend: vocos or bigvgan") + + self.n_fft = n_fft + self.hop_length = hop_length + self.win_length = win_length + self.n_mel_channels = n_mel_channels + self.target_sample_rate = target_sample_rate + + if mel_spec_type == "vocos": + self.extractor = get_vocos_mel_spectrogram + elif mel_spec_type == "bigvgan": + self.extractor = get_bigvgan_mel_spectrogram + + self.register_buffer("dummy", torch.tensor(0), persistent=False) + + def forward(self, wav): + if self.dummy.device != wav.device: + self.to(wav.device) + + mel = self.extractor( + waveform=wav, + n_fft=self.n_fft, + n_mel_channels=self.n_mel_channels, + target_sample_rate=self.target_sample_rate, + hop_length=self.hop_length, + win_length=self.win_length, + ) + + return mel + + +# sinusoidal position embedding + + +class SinusPositionEmbedding(nn.Module): + def __init__(self, dim): + super().__init__() + self.dim = dim + + def forward(self, x, scale=1000): + device = x.device + half_dim = self.dim // 2 + emb = math.log(10000) / (half_dim - 1) + emb = torch.exp(torch.arange(half_dim, device=device).float() * -emb) + emb = scale * x.unsqueeze(1) * emb.unsqueeze(0) + emb = torch.cat((emb.sin(), emb.cos()), dim=-1) + return emb + + +# convolutional position embedding + + +class ConvPositionEmbedding(nn.Module): + def __init__(self, dim, kernel_size=31, groups=16): + super().__init__() + assert kernel_size % 2 != 0 + self.conv1d = nn.Sequential( + nn.Conv1d(dim, dim, kernel_size, groups=groups, padding=kernel_size // 2), + nn.Mish(), + nn.Conv1d(dim, dim, kernel_size, groups=groups, padding=kernel_size // 2), + nn.Mish(), + ) + + def forward(self, x: float["b n d"], mask: bool["b n"] | None = None): + if mask is not None: + mask = mask[..., None] + x = x.masked_fill(~mask, 0.0) + + x = x.permute(0, 2, 1) + x = self.conv1d(x) + out = x.permute(0, 2, 1) + + if mask is not None: + out = out.masked_fill(~mask, 0.0) + + return out + + +# rotary positional embedding related + + +def precompute_freqs_cis(dim: int, end: int, theta: float = 10000.0, theta_rescale_factor=1.0): + # proposed by reddit user bloc97, to rescale rotary embeddings to longer sequence length without fine-tuning + # has some connection to NTK literature + # https://www.reddit.com/r/LocalLLaMA/comments/14lz7j5/ntkaware_scaled_rope_allows_llama_models_to_have/ + # https://github.com/lucidrains/rotary-embedding-torch/blob/main/rotary_embedding_torch/rotary_embedding_torch.py + theta *= theta_rescale_factor ** (dim / (dim - 2)) + freqs = 1.0 / (theta ** (torch.arange(0, dim, 2)[: (dim // 2)].float() / dim)) + t = torch.arange(end, device=freqs.device) # type: ignore + freqs = torch.outer(t, freqs).float() # type: ignore + freqs_cos = torch.cos(freqs) # real part + freqs_sin = torch.sin(freqs) # imaginary part + return torch.cat([freqs_cos, freqs_sin], dim=-1) + + +def get_pos_embed_indices(start, length, max_pos, scale=1.0): + # length = length if isinstance(length, int) else length.max() + scale = scale * torch.ones_like(start, dtype=torch.float32) # in case scale is a scalar + pos = ( + start.unsqueeze(1) + + (torch.arange(length, device=start.device, dtype=torch.float32).unsqueeze(0) * scale.unsqueeze(1)).long() + ) + # avoid extra long error. + pos = torch.where(pos < max_pos, pos, max_pos - 1) + return pos + + +# Global Response Normalization layer (Instance Normalization ?) + + +class GRN(nn.Module): + def __init__(self, dim): + super().__init__() + self.gamma = nn.Parameter(torch.zeros(1, 1, dim)) + self.beta = nn.Parameter(torch.zeros(1, 1, dim)) + + def forward(self, x): + Gx = torch.norm(x, p=2, dim=1, keepdim=True) + Nx = Gx / (Gx.mean(dim=-1, keepdim=True) + 1e-6) + return self.gamma * (x * Nx) + self.beta + x + + +# ConvNeXt-V2 Block https://github.com/facebookresearch/ConvNeXt-V2/blob/main/models/convnextv2.py +# ref: https://github.com/bfs18/e2_tts/blob/main/rfwave/modules.py#L108 + + +class ConvNeXtV2Block(nn.Module): + def __init__( + self, + dim: int, + intermediate_dim: int, + dilation: int = 1, + ): + super().__init__() + padding = (dilation * (7 - 1)) // 2 + self.dwconv = nn.Conv1d( + dim, dim, kernel_size=7, padding=padding, groups=dim, dilation=dilation + ) # depthwise conv + self.norm = nn.LayerNorm(dim, eps=1e-6) + self.pwconv1 = nn.Linear(dim, intermediate_dim) # pointwise/1x1 convs, implemented with linear layers + self.act = nn.GELU() + self.grn = GRN(intermediate_dim) + self.pwconv2 = nn.Linear(intermediate_dim, dim) + + def forward(self, x: torch.Tensor) -> torch.Tensor: + residual = x + x = x.transpose(1, 2) # b n d -> b d n + x = self.dwconv(x) + x = x.transpose(1, 2) # b d n -> b n d + x = self.norm(x) + x = self.pwconv1(x) + x = self.act(x) + x = self.grn(x) + x = self.pwconv2(x) + return residual + x + + +# RMSNorm + + +class RMSNorm(nn.Module): + def __init__(self, dim: int, eps: float): + super().__init__() + self.eps = eps + self.weight = nn.Parameter(torch.ones(dim)) + self.native_rms_norm = float(torch.__version__[:3]) >= 2.4 + + def forward(self, x): + if self.native_rms_norm: + if self.weight.dtype in [torch.float16, torch.bfloat16]: + x = x.to(self.weight.dtype) + x = F.rms_norm(x, normalized_shape=(x.shape[-1],), weight=self.weight, eps=self.eps) + else: + variance = x.to(torch.float32).pow(2).mean(-1, keepdim=True) + x = x * torch.rsqrt(variance + self.eps) + if self.weight.dtype in [torch.float16, torch.bfloat16]: + x = x.to(self.weight.dtype) + x = x * self.weight + + return x + + +# AdaLayerNorm +# return with modulated x for attn input, and params for later mlp modulation + + +class AdaLayerNorm(nn.Module): + def __init__(self, dim): + super().__init__() + + self.silu = nn.SiLU() + self.linear = nn.Linear(dim, dim * 6) + + self.norm = nn.LayerNorm(dim, elementwise_affine=False, eps=1e-6) + + def forward(self, x, emb=None): + emb = self.linear(self.silu(emb)) + shift_msa, scale_msa, gate_msa, shift_mlp, scale_mlp, gate_mlp = torch.chunk(emb, 6, dim=1) + + x = self.norm(x) * (1 + scale_msa[:, None]) + shift_msa[:, None] + return x, gate_msa, shift_mlp, scale_mlp, gate_mlp + + +# AdaLayerNorm for final layer +# return only with modulated x for attn input, cuz no more mlp modulation + + +class AdaLayerNorm_Final(nn.Module): + def __init__(self, dim): + super().__init__() + + self.silu = nn.SiLU() + self.linear = nn.Linear(dim, dim * 2) + + self.norm = nn.LayerNorm(dim, elementwise_affine=False, eps=1e-6) + + def forward(self, x, emb): + emb = self.linear(self.silu(emb)) + scale, shift = torch.chunk(emb, 2, dim=1) + + x = self.norm(x) * (1 + scale)[:, None, :] + shift[:, None, :] + return x + + +# FeedForward + + +class FeedForward(nn.Module): + def __init__(self, dim, dim_out=None, mult=4, dropout=0.0, approximate: str = "none"): + super().__init__() + inner_dim = int(dim * mult) + dim_out = dim_out if dim_out is not None else dim + + activation = nn.GELU(approximate=approximate) + project_in = nn.Sequential(nn.Linear(dim, inner_dim), activation) + self.ff = nn.Sequential(project_in, nn.Dropout(dropout), nn.Linear(inner_dim, dim_out)) + + def forward(self, x): + return self.ff(x) + + +# Attention with possible joint part +# modified from diffusers/src/diffusers/models/attention_processor.py + + +class Attention(nn.Module): + def __init__( + self, + processor: JointAttnProcessor | AttnProcessor, + dim: int, + heads: int = 8, + dim_head: int = 64, + dropout: float = 0.0, + context_dim: Optional[int] = None, # if not None -> joint attention + context_pre_only: bool = False, + qk_norm: Optional[str] = None, + ): + super().__init__() + + if not hasattr(F, "scaled_dot_product_attention"): + raise ImportError("Attention equires PyTorch 2.0, to use it, please upgrade PyTorch to 2.0.") + + self.processor = processor + + self.dim = dim + self.heads = heads + self.inner_dim = dim_head * heads + self.dropout = dropout + + self.context_dim = context_dim + self.context_pre_only = context_pre_only + + self.to_q = nn.Linear(dim, self.inner_dim) + self.to_k = nn.Linear(dim, self.inner_dim) + self.to_v = nn.Linear(dim, self.inner_dim) + + if qk_norm is None: + self.q_norm = None + self.k_norm = None + elif qk_norm == "rms_norm": + self.q_norm = RMSNorm(dim_head, eps=1e-6) + self.k_norm = RMSNorm(dim_head, eps=1e-6) + else: + raise ValueError(f"Unimplemented qk_norm: {qk_norm}") + + if self.context_dim is not None: + self.to_q_c = nn.Linear(context_dim, self.inner_dim) + self.to_k_c = nn.Linear(context_dim, self.inner_dim) + self.to_v_c = nn.Linear(context_dim, self.inner_dim) + if qk_norm is None: + self.c_q_norm = None + self.c_k_norm = None + elif qk_norm == "rms_norm": + self.c_q_norm = RMSNorm(dim_head, eps=1e-6) + self.c_k_norm = RMSNorm(dim_head, eps=1e-6) + + self.to_out = nn.ModuleList([]) + self.to_out.append(nn.Linear(self.inner_dim, dim)) + self.to_out.append(nn.Dropout(dropout)) + + if self.context_dim is not None and not self.context_pre_only: + self.to_out_c = nn.Linear(self.inner_dim, context_dim) + + def forward( + self, + x: float["b n d"], # noised input x + c: float["b n d"] = None, # context c + mask: bool["b n"] | None = None, + rope=None, # rotary position embedding for x + c_rope=None, # rotary position embedding for c + ) -> torch.Tensor: + if c is not None: + return self.processor(self, x, c=c, mask=mask, rope=rope, c_rope=c_rope) + else: + return self.processor(self, x, mask=mask, rope=rope) + + +# Attention processor + +if is_package_available("flash_attn"): + from flash_attn.bert_padding import pad_input, unpad_input + from flash_attn import flash_attn_varlen_func, flash_attn_func + + +class AttnProcessor: + def __init__( + self, + pe_attn_head: int | None = None, # number of attention head to apply rope, None for all + attn_backend: str = "torch", # "torch" or "flash_attn" + attn_mask_enabled: bool = True, + ): + if attn_backend == "flash_attn": + assert is_package_available("flash_attn"), "Please install flash-attn first." + + self.pe_attn_head = pe_attn_head + self.attn_backend = attn_backend + self.attn_mask_enabled = attn_mask_enabled + + def __call__( + self, + attn: Attention, + x: float["b n d"], # noised input x + mask: bool["b n"] | None = None, + rope=None, # rotary position embedding + ) -> torch.FloatTensor: + batch_size = x.shape[0] + + # `sample` projections + query = attn.to_q(x) + key = attn.to_k(x) + value = attn.to_v(x) + + # attention + inner_dim = key.shape[-1] + head_dim = inner_dim // attn.heads + query = query.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + key = key.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + value = value.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + + # qk norm + if attn.q_norm is not None: + query = attn.q_norm(query) + if attn.k_norm is not None: + key = attn.k_norm(key) + + # apply rotary position embedding + if rope is not None: + freqs, xpos_scale = rope + q_xpos_scale, k_xpos_scale = (xpos_scale, xpos_scale**-1.0) if xpos_scale is not None else (1.0, 1.0) + + if self.pe_attn_head is not None: + pn = self.pe_attn_head + query[:, :pn, :, :] = apply_rotary_pos_emb(query[:, :pn, :, :], freqs, q_xpos_scale) + key[:, :pn, :, :] = apply_rotary_pos_emb(key[:, :pn, :, :], freqs, k_xpos_scale) + else: + query = apply_rotary_pos_emb(query, freqs, q_xpos_scale) + key = apply_rotary_pos_emb(key, freqs, k_xpos_scale) + + if self.attn_backend == "torch": + # mask. e.g. inference got a batch with different target durations, mask out the padding + if self.attn_mask_enabled and mask is not None: + attn_mask = mask + attn_mask = attn_mask.unsqueeze(1).unsqueeze(1) # 'b n -> b 1 1 n' + attn_mask = attn_mask.expand(batch_size, attn.heads, query.shape[-2], key.shape[-2]) + else: + attn_mask = None + x = F.scaled_dot_product_attention(query, key, value, attn_mask=attn_mask, dropout_p=0.0, is_causal=False) + x = x.transpose(1, 2).reshape(batch_size, -1, attn.heads * head_dim) + + elif self.attn_backend == "flash_attn": + query = query.transpose(1, 2) # [b, h, n, d] -> [b, n, h, d] + key = key.transpose(1, 2) + value = value.transpose(1, 2) + if self.attn_mask_enabled and mask is not None: + query, indices, q_cu_seqlens, q_max_seqlen_in_batch, _ = unpad_input(query, mask) + key, _, k_cu_seqlens, k_max_seqlen_in_batch, _ = unpad_input(key, mask) + value, _, _, _, _ = unpad_input(value, mask) + x = flash_attn_varlen_func( + query, + key, + value, + q_cu_seqlens, + k_cu_seqlens, + q_max_seqlen_in_batch, + k_max_seqlen_in_batch, + ) + x = pad_input(x, indices, batch_size, q_max_seqlen_in_batch) + x = x.reshape(batch_size, -1, attn.heads * head_dim) + else: + x = flash_attn_func(query, key, value, dropout_p=0.0, causal=False) + x = x.reshape(batch_size, -1, attn.heads * head_dim) + + x = x.to(query.dtype) + + # linear proj + x = attn.to_out[0](x) + # dropout + x = attn.to_out[1](x) + + if mask is not None: + mask = mask.unsqueeze(-1) + x = x.masked_fill(~mask, 0.0) + + return x + + +# Joint Attention processor for MM-DiT +# modified from diffusers/src/diffusers/models/attention_processor.py + + +class JointAttnProcessor: + def __init__(self): + pass + + def __call__( + self, + attn: Attention, + x: float["b n d"], # noised input x + c: float["b nt d"] = None, # context c, here text + mask: bool["b n"] | None = None, + rope=None, # rotary position embedding for x + c_rope=None, # rotary position embedding for c + ) -> torch.FloatTensor: + residual = x + + batch_size = c.shape[0] + + # `sample` projections + query = attn.to_q(x) + key = attn.to_k(x) + value = attn.to_v(x) + + # `context` projections + c_query = attn.to_q_c(c) + c_key = attn.to_k_c(c) + c_value = attn.to_v_c(c) + + # attention + inner_dim = key.shape[-1] + head_dim = inner_dim // attn.heads + query = query.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + key = key.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + value = value.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + c_query = c_query.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + c_key = c_key.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + c_value = c_value.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + + # qk norm + if attn.q_norm is not None: + query = attn.q_norm(query) + if attn.k_norm is not None: + key = attn.k_norm(key) + if attn.c_q_norm is not None: + c_query = attn.c_q_norm(c_query) + if attn.c_k_norm is not None: + c_key = attn.c_k_norm(c_key) + + # apply rope for context and noised input independently + if rope is not None: + freqs, xpos_scale = rope + q_xpos_scale, k_xpos_scale = (xpos_scale, xpos_scale**-1.0) if xpos_scale is not None else (1.0, 1.0) + query = apply_rotary_pos_emb(query, freqs, q_xpos_scale) + key = apply_rotary_pos_emb(key, freqs, k_xpos_scale) + if c_rope is not None: + freqs, xpos_scale = c_rope + q_xpos_scale, k_xpos_scale = (xpos_scale, xpos_scale**-1.0) if xpos_scale is not None else (1.0, 1.0) + c_query = apply_rotary_pos_emb(c_query, freqs, q_xpos_scale) + c_key = apply_rotary_pos_emb(c_key, freqs, k_xpos_scale) + + # joint attention + query = torch.cat([query, c_query], dim=2) + key = torch.cat([key, c_key], dim=2) + value = torch.cat([value, c_value], dim=2) + + # mask. e.g. inference got a batch with different target durations, mask out the padding + if mask is not None: + attn_mask = F.pad(mask, (0, c.shape[1]), value=True) # no mask for c (text) + attn_mask = attn_mask.unsqueeze(1).unsqueeze(1) # 'b n -> b 1 1 n' + attn_mask = attn_mask.expand(batch_size, attn.heads, query.shape[-2], key.shape[-2]) + else: + attn_mask = None + + x = F.scaled_dot_product_attention(query, key, value, attn_mask=attn_mask, dropout_p=0.0, is_causal=False) + x = x.transpose(1, 2).reshape(batch_size, -1, attn.heads * head_dim) + x = x.to(query.dtype) + + # Split the attention outputs. + x, c = ( + x[:, : residual.shape[1]], + x[:, residual.shape[1] :], + ) + + # linear proj + x = attn.to_out[0](x) + # dropout + x = attn.to_out[1](x) + if not attn.context_pre_only: + c = attn.to_out_c(c) + + if mask is not None: + mask = mask.unsqueeze(-1) + x = x.masked_fill(~mask, 0.0) + # c = c.masked_fill(~mask, 0.) # no mask for c (text) + + return x, c + + +# DiT Block + + +class DiTBlock(nn.Module): + def __init__( + self, + dim, + heads, + dim_head, + ff_mult=4, + dropout=0.1, + qk_norm=None, + pe_attn_head=None, + attn_backend="torch", # "torch" or "flash_attn" + attn_mask_enabled=True, + ): + super().__init__() + + self.attn_norm = AdaLayerNorm(dim) + self.attn = Attention( + processor=AttnProcessor( + pe_attn_head=pe_attn_head, + attn_backend=attn_backend, + attn_mask_enabled=attn_mask_enabled, + ), + dim=dim, + heads=heads, + dim_head=dim_head, + dropout=dropout, + qk_norm=qk_norm, + ) + + self.ff_norm = nn.LayerNorm(dim, elementwise_affine=False, eps=1e-6) + self.ff = FeedForward(dim=dim, mult=ff_mult, dropout=dropout, approximate="tanh") + + def forward(self, x, t, mask=None, rope=None): # x: noised input, t: time embedding + # pre-norm & modulation for attention input + norm, gate_msa, shift_mlp, scale_mlp, gate_mlp = self.attn_norm(x, emb=t) + + # attention + attn_output = self.attn(x=norm, mask=mask, rope=rope) + + # process attention output for input x + x = x + gate_msa.unsqueeze(1) * attn_output + + norm = self.ff_norm(x) * (1 + scale_mlp[:, None]) + shift_mlp[:, None] + ff_output = self.ff(norm) + x = x + gate_mlp.unsqueeze(1) * ff_output + + return x + + +# MMDiT Block https://arxiv.org/abs/2403.03206 + + +class MMDiTBlock(nn.Module): + r""" + modified from diffusers/src/diffusers/models/attention.py + + notes. + _c: context related. text, cond, etc. (left part in sd3 fig2.b) + _x: noised input related. (right part) + context_pre_only: last layer only do prenorm + modulation cuz no more ffn + """ + + def __init__( + self, dim, heads, dim_head, ff_mult=4, dropout=0.1, context_dim=None, context_pre_only=False, qk_norm=None + ): + super().__init__() + if context_dim is None: + context_dim = dim + self.context_pre_only = context_pre_only + + self.attn_norm_c = AdaLayerNorm_Final(context_dim) if context_pre_only else AdaLayerNorm(context_dim) + self.attn_norm_x = AdaLayerNorm(dim) + self.attn = Attention( + processor=JointAttnProcessor(), + dim=dim, + heads=heads, + dim_head=dim_head, + dropout=dropout, + context_dim=context_dim, + context_pre_only=context_pre_only, + qk_norm=qk_norm, + ) + + if not context_pre_only: + self.ff_norm_c = nn.LayerNorm(context_dim, elementwise_affine=False, eps=1e-6) + self.ff_c = FeedForward(dim=context_dim, mult=ff_mult, dropout=dropout, approximate="tanh") + else: + self.ff_norm_c = None + self.ff_c = None + self.ff_norm_x = nn.LayerNorm(dim, elementwise_affine=False, eps=1e-6) + self.ff_x = FeedForward(dim=dim, mult=ff_mult, dropout=dropout, approximate="tanh") + + def forward(self, x, c, t, mask=None, rope=None, c_rope=None): # x: noised input, c: context, t: time embedding + # pre-norm & modulation for attention input + if self.context_pre_only: + norm_c = self.attn_norm_c(c, t) + else: + norm_c, c_gate_msa, c_shift_mlp, c_scale_mlp, c_gate_mlp = self.attn_norm_c(c, emb=t) + norm_x, x_gate_msa, x_shift_mlp, x_scale_mlp, x_gate_mlp = self.attn_norm_x(x, emb=t) + + # attention + x_attn_output, c_attn_output = self.attn(x=norm_x, c=norm_c, mask=mask, rope=rope, c_rope=c_rope) + + # process attention output for context c + if self.context_pre_only: + c = None + else: # if not last layer + c = c + c_gate_msa.unsqueeze(1) * c_attn_output + + norm_c = self.ff_norm_c(c) * (1 + c_scale_mlp[:, None]) + c_shift_mlp[:, None] + c_ff_output = self.ff_c(norm_c) + c = c + c_gate_mlp.unsqueeze(1) * c_ff_output + + # process attention output for input x + x = x + x_gate_msa.unsqueeze(1) * x_attn_output + + norm_x = self.ff_norm_x(x) * (1 + x_scale_mlp[:, None]) + x_shift_mlp[:, None] + x_ff_output = self.ff_x(norm_x) + x = x + x_gate_mlp.unsqueeze(1) * x_ff_output + + return c, x + + +# time step conditioning embedding + + +class TimestepEmbedding(nn.Module): + def __init__(self, dim, freq_embed_dim=256): + super().__init__() + self.time_embed = SinusPositionEmbedding(freq_embed_dim) + self.time_mlp = nn.Sequential(nn.Linear(freq_embed_dim, dim), nn.SiLU(), nn.Linear(dim, dim)) + + def forward(self, timestep: float["b"]): + time_hidden = self.time_embed(timestep) + time_hidden = time_hidden.to(timestep.dtype) + time = self.time_mlp(time_hidden) # b d + return time diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/model/trainer.py b/bi_v100-f5-tts/F5-TTS/src/f5_tts/model/trainer.py new file mode 100644 index 0000000..939df84 --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/model/trainer.py @@ -0,0 +1,439 @@ +from __future__ import annotations + +import gc +import math +import os + +import torch +import torchaudio +import wandb +from accelerate import Accelerator +from accelerate.utils import DistributedDataParallelKwargs +from ema_pytorch import EMA +from torch.optim import AdamW +from torch.optim.lr_scheduler import LinearLR, SequentialLR +from torch.utils.data import DataLoader, Dataset, SequentialSampler +from tqdm import tqdm + +from f5_tts.model import CFM +from f5_tts.model.dataset import DynamicBatchSampler, collate_fn +from f5_tts.model.utils import default, exists + + +# trainer + + +class Trainer: + def __init__( + self, + model: CFM, + epochs, + learning_rate, + num_warmup_updates=20000, + save_per_updates=1000, + keep_last_n_checkpoints: int = -1, # -1 to keep all, 0 to not save intermediate, > 0 to keep last N checkpoints + checkpoint_path=None, + batch_size_per_gpu=32, + batch_size_type: str = "sample", + max_samples=32, + grad_accumulation_steps=1, + max_grad_norm=1.0, + noise_scheduler: str | None = None, + duration_predictor: torch.nn.Module | None = None, + logger: str | None = "wandb", # "wandb" | "tensorboard" | None + wandb_project="test_f5-tts", + wandb_run_name="test_run", + wandb_resume_id: str = None, + log_samples: bool = False, + last_per_updates=None, + accelerate_kwargs: dict = dict(), + ema_kwargs: dict = dict(), + bnb_optimizer: bool = False, + mel_spec_type: str = "vocos", # "vocos" | "bigvgan" + is_local_vocoder: bool = False, # use local path vocoder + local_vocoder_path: str = "", # local vocoder path + model_cfg_dict: dict = dict(), # training config + ): + ddp_kwargs = DistributedDataParallelKwargs(find_unused_parameters=True) + + if logger == "wandb" and not wandb.api.api_key: + logger = None + self.log_samples = log_samples + + self.accelerator = Accelerator( + log_with=logger if logger == "wandb" else None, + kwargs_handlers=[ddp_kwargs], + gradient_accumulation_steps=grad_accumulation_steps, + **accelerate_kwargs, + ) + + self.logger = logger + if self.logger == "wandb": + if exists(wandb_resume_id): + init_kwargs = {"wandb": {"resume": "allow", "name": wandb_run_name, "id": wandb_resume_id}} + else: + init_kwargs = {"wandb": {"resume": "allow", "name": wandb_run_name}} + + if not model_cfg_dict: + model_cfg_dict = { + "epochs": epochs, + "learning_rate": learning_rate, + "num_warmup_updates": num_warmup_updates, + "batch_size_per_gpu": batch_size_per_gpu, + "batch_size_type": batch_size_type, + "max_samples": max_samples, + "grad_accumulation_steps": grad_accumulation_steps, + "max_grad_norm": max_grad_norm, + "noise_scheduler": noise_scheduler, + } + model_cfg_dict["gpus"] = self.accelerator.num_processes + self.accelerator.init_trackers( + project_name=wandb_project, + init_kwargs=init_kwargs, + config=model_cfg_dict, + ) + + elif self.logger == "tensorboard": + from torch.utils.tensorboard import SummaryWriter + + self.writer = SummaryWriter(log_dir=f"runs/{wandb_run_name}") + + self.model = model + + if self.is_main: + self.ema_model = EMA(model, include_online_model=False, **ema_kwargs) + self.ema_model.to(self.accelerator.device) + + print(f"Using logger: {logger}") + if grad_accumulation_steps > 1: + print( + "Gradient accumulation checkpointing with per_updates now, old logic per_steps used with before f992c4e" + ) + + self.epochs = epochs + self.num_warmup_updates = num_warmup_updates + self.save_per_updates = save_per_updates + self.keep_last_n_checkpoints = keep_last_n_checkpoints + self.last_per_updates = default(last_per_updates, save_per_updates) + self.checkpoint_path = default(checkpoint_path, "ckpts/test_f5-tts") + + self.batch_size_per_gpu = batch_size_per_gpu + self.batch_size_type = batch_size_type + self.max_samples = max_samples + self.grad_accumulation_steps = grad_accumulation_steps + self.max_grad_norm = max_grad_norm + + # mel vocoder config + self.vocoder_name = mel_spec_type + self.is_local_vocoder = is_local_vocoder + self.local_vocoder_path = local_vocoder_path + + self.noise_scheduler = noise_scheduler + + self.duration_predictor = duration_predictor + + if bnb_optimizer: + import bitsandbytes as bnb + + self.optimizer = bnb.optim.AdamW8bit(model.parameters(), lr=learning_rate) + else: + self.optimizer = AdamW(model.parameters(), lr=learning_rate) + self.model, self.optimizer = self.accelerator.prepare(self.model, self.optimizer) + + @property + def is_main(self): + return self.accelerator.is_main_process + + def save_checkpoint(self, update, last=False): + self.accelerator.wait_for_everyone() + if self.is_main: + checkpoint = dict( + model_state_dict=self.accelerator.unwrap_model(self.model).state_dict(), + optimizer_state_dict=self.accelerator.unwrap_model(self.optimizer).state_dict(), + ema_model_state_dict=self.ema_model.state_dict(), + scheduler_state_dict=self.scheduler.state_dict(), + update=update, + ) + if not os.path.exists(self.checkpoint_path): + os.makedirs(self.checkpoint_path) + if last: + self.accelerator.save(checkpoint, f"{self.checkpoint_path}/model_last.pt") + print(f"Saved last checkpoint at update {update}") + else: + if self.keep_last_n_checkpoints == 0: + return + self.accelerator.save(checkpoint, f"{self.checkpoint_path}/model_{update}.pt") + if self.keep_last_n_checkpoints > 0: + # Updated logic to exclude pretrained model from rotation + checkpoints = [ + f + for f in os.listdir(self.checkpoint_path) + if f.startswith("model_") + and not f.startswith("pretrained_") # Exclude pretrained models + and f.endswith(".pt") + and f != "model_last.pt" + ] + checkpoints.sort(key=lambda x: int(x.split("_")[1].split(".")[0])) + while len(checkpoints) > self.keep_last_n_checkpoints: + oldest_checkpoint = checkpoints.pop(0) + os.remove(os.path.join(self.checkpoint_path, oldest_checkpoint)) + print(f"Removed old checkpoint: {oldest_checkpoint}") + + def load_checkpoint(self): + if ( + not exists(self.checkpoint_path) + or not os.path.exists(self.checkpoint_path) + or not any(filename.endswith((".pt", ".safetensors")) for filename in os.listdir(self.checkpoint_path)) + ): + return 0 + + self.accelerator.wait_for_everyone() + if "model_last.pt" in os.listdir(self.checkpoint_path): + latest_checkpoint = "model_last.pt" + else: + # Updated to consider pretrained models for loading but prioritize training checkpoints + all_checkpoints = [ + f + for f in os.listdir(self.checkpoint_path) + if (f.startswith("model_") or f.startswith("pretrained_")) and f.endswith((".pt", ".safetensors")) + ] + + # First try to find regular training checkpoints + training_checkpoints = [f for f in all_checkpoints if f.startswith("model_") and f != "model_last.pt"] + if training_checkpoints: + latest_checkpoint = sorted( + training_checkpoints, + key=lambda x: int("".join(filter(str.isdigit, x))), + )[-1] + else: + # If no training checkpoints, use pretrained model + latest_checkpoint = next(f for f in all_checkpoints if f.startswith("pretrained_")) + + if latest_checkpoint.endswith(".safetensors"): # always a pretrained checkpoint + from safetensors.torch import load_file + + checkpoint = load_file(f"{self.checkpoint_path}/{latest_checkpoint}", device="cpu") + checkpoint = {"ema_model_state_dict": checkpoint} + elif latest_checkpoint.endswith(".pt"): + # checkpoint = torch.load(f"{self.checkpoint_path}/{latest_checkpoint}", map_location=self.accelerator.device) # rather use accelerator.load_state ಥ_ಥ + checkpoint = torch.load( + f"{self.checkpoint_path}/{latest_checkpoint}", weights_only=True, map_location="cpu" + ) + + # patch for backward compatibility, 305e3ea + for key in ["ema_model.mel_spec.mel_stft.mel_scale.fb", "ema_model.mel_spec.mel_stft.spectrogram.window"]: + if key in checkpoint["ema_model_state_dict"]: + del checkpoint["ema_model_state_dict"][key] + + if self.is_main: + self.ema_model.load_state_dict(checkpoint["ema_model_state_dict"]) + + if "update" in checkpoint or "step" in checkpoint: + # patch for backward compatibility, with before f992c4e + if "step" in checkpoint: + checkpoint["update"] = checkpoint["step"] // self.grad_accumulation_steps + if self.grad_accumulation_steps > 1 and self.is_main: + print( + "F5-TTS WARNING: Loading checkpoint saved with per_steps logic (before f992c4e), will convert to per_updates according to grad_accumulation_steps setting, may have unexpected behaviour." + ) + # patch for backward compatibility, 305e3ea + for key in ["mel_spec.mel_stft.mel_scale.fb", "mel_spec.mel_stft.spectrogram.window"]: + if key in checkpoint["model_state_dict"]: + del checkpoint["model_state_dict"][key] + + self.accelerator.unwrap_model(self.model).load_state_dict(checkpoint["model_state_dict"]) + self.accelerator.unwrap_model(self.optimizer).load_state_dict(checkpoint["optimizer_state_dict"]) + if self.scheduler: + self.scheduler.load_state_dict(checkpoint["scheduler_state_dict"]) + update = checkpoint["update"] + else: + checkpoint["model_state_dict"] = { + k.replace("ema_model.", ""): v + for k, v in checkpoint["ema_model_state_dict"].items() + if k not in ["initted", "update", "step"] + } + self.accelerator.unwrap_model(self.model).load_state_dict(checkpoint["model_state_dict"]) + update = 0 + + del checkpoint + gc.collect() + return update + + def train(self, train_dataset: Dataset, num_workers=16, resumable_with_seed: int = None): + if self.log_samples: + from f5_tts.infer.utils_infer import cfg_strength, load_vocoder, nfe_step, sway_sampling_coef + + vocoder = load_vocoder( + vocoder_name=self.vocoder_name, is_local=self.is_local_vocoder, local_path=self.local_vocoder_path + ) + target_sample_rate = self.accelerator.unwrap_model(self.model).mel_spec.target_sample_rate + log_samples_path = f"{self.checkpoint_path}/samples" + os.makedirs(log_samples_path, exist_ok=True) + + if exists(resumable_with_seed): + generator = torch.Generator() + generator.manual_seed(resumable_with_seed) + else: + generator = None + + if self.batch_size_type == "sample": + train_dataloader = DataLoader( + train_dataset, + collate_fn=collate_fn, + num_workers=num_workers, + pin_memory=True, + persistent_workers=True, + batch_size=self.batch_size_per_gpu, + shuffle=True, + generator=generator, + ) + elif self.batch_size_type == "frame": + self.accelerator.even_batches = False + sampler = SequentialSampler(train_dataset) + batch_sampler = DynamicBatchSampler( + sampler, + self.batch_size_per_gpu, + max_samples=self.max_samples, + random_seed=resumable_with_seed, # This enables reproducible shuffling + drop_residual=False, + ) + train_dataloader = DataLoader( + train_dataset, + collate_fn=collate_fn, + num_workers=num_workers, + pin_memory=True, + persistent_workers=True, + batch_sampler=batch_sampler, + ) + else: + raise ValueError(f"batch_size_type must be either 'sample' or 'frame', but received {self.batch_size_type}") + + # accelerator.prepare() dispatches batches to devices; + # which means the length of dataloader calculated before, should consider the number of devices + warmup_updates = ( + self.num_warmup_updates * self.accelerator.num_processes + ) # consider a fixed warmup steps while using accelerate multi-gpu ddp + # otherwise by default with split_batches=False, warmup steps change with num_processes + total_updates = math.ceil(len(train_dataloader) / self.grad_accumulation_steps) * self.epochs + decay_updates = total_updates - warmup_updates + warmup_scheduler = LinearLR(self.optimizer, start_factor=1e-8, end_factor=1.0, total_iters=warmup_updates) + decay_scheduler = LinearLR(self.optimizer, start_factor=1.0, end_factor=1e-8, total_iters=decay_updates) + self.scheduler = SequentialLR( + self.optimizer, schedulers=[warmup_scheduler, decay_scheduler], milestones=[warmup_updates] + ) + train_dataloader, self.scheduler = self.accelerator.prepare( + train_dataloader, self.scheduler + ) # actual multi_gpu updates = single_gpu updates / gpu nums + start_update = self.load_checkpoint() + global_update = start_update + + if exists(resumable_with_seed): + orig_epoch_step = len(train_dataloader) + start_step = start_update * self.grad_accumulation_steps + skipped_epoch = int(start_step // orig_epoch_step) + skipped_batch = start_step % orig_epoch_step + skipped_dataloader = self.accelerator.skip_first_batches(train_dataloader, num_batches=skipped_batch) + else: + skipped_epoch = 0 + + for epoch in range(skipped_epoch, self.epochs): + self.model.train() + if exists(resumable_with_seed) and epoch == skipped_epoch: + progress_bar_initial = math.ceil(skipped_batch / self.grad_accumulation_steps) + current_dataloader = skipped_dataloader + else: + progress_bar_initial = 0 + current_dataloader = train_dataloader + + # Set epoch for the batch sampler if it exists + if hasattr(train_dataloader, "batch_sampler") and hasattr(train_dataloader.batch_sampler, "set_epoch"): + train_dataloader.batch_sampler.set_epoch(epoch) + + progress_bar = tqdm( + range(math.ceil(len(train_dataloader) / self.grad_accumulation_steps)), + desc=f"Epoch {epoch + 1}/{self.epochs}", + unit="update", + disable=not self.accelerator.is_local_main_process, + initial=progress_bar_initial, + ) + + for batch in current_dataloader: + with self.accelerator.accumulate(self.model): + text_inputs = batch["text"] + mel_spec = batch["mel"].permute(0, 2, 1) + mel_lengths = batch["mel_lengths"] + + # TODO. add duration predictor training + if self.duration_predictor is not None and self.accelerator.is_local_main_process: + dur_loss = self.duration_predictor(mel_spec, lens=batch.get("durations")) + self.accelerator.log({"duration loss": dur_loss.item()}, step=global_update) + + loss, cond, pred = self.model( + mel_spec, text=text_inputs, lens=mel_lengths, noise_scheduler=self.noise_scheduler + ) + self.accelerator.backward(loss) + + if self.max_grad_norm > 0 and self.accelerator.sync_gradients: + self.accelerator.clip_grad_norm_(self.model.parameters(), self.max_grad_norm) + + self.optimizer.step() + self.scheduler.step() + self.optimizer.zero_grad() + + if self.accelerator.sync_gradients: + if self.is_main: + self.ema_model.update() + + global_update += 1 + progress_bar.update(1) + progress_bar.set_postfix(update=str(global_update), loss=loss.item()) + + if self.accelerator.is_local_main_process: + self.accelerator.log( + {"loss": loss.item(), "lr": self.scheduler.get_last_lr()[0]}, step=global_update + ) + if self.logger == "tensorboard": + self.writer.add_scalar("loss", loss.item(), global_update) + self.writer.add_scalar("lr", self.scheduler.get_last_lr()[0], global_update) + + if global_update % self.last_per_updates == 0 and self.accelerator.sync_gradients: + self.save_checkpoint(global_update, last=True) + + if global_update % self.save_per_updates == 0 and self.accelerator.sync_gradients: + self.save_checkpoint(global_update) + + if self.log_samples and self.accelerator.is_local_main_process: + ref_audio_len = mel_lengths[0] + infer_text = [ + text_inputs[0] + ([" "] if isinstance(text_inputs[0], list) else " ") + text_inputs[0] + ] + with torch.inference_mode(): + generated, _ = self.accelerator.unwrap_model(self.model).sample( + cond=mel_spec[0][:ref_audio_len].unsqueeze(0), + text=infer_text, + duration=ref_audio_len * 2, + steps=nfe_step, + cfg_strength=cfg_strength, + sway_sampling_coef=sway_sampling_coef, + ) + generated = generated.to(torch.float32) + gen_mel_spec = generated[:, ref_audio_len:, :].permute(0, 2, 1).to(self.accelerator.device) + ref_mel_spec = batch["mel"][0].unsqueeze(0) + if self.vocoder_name == "vocos": + gen_audio = vocoder.decode(gen_mel_spec).cpu() + ref_audio = vocoder.decode(ref_mel_spec).cpu() + elif self.vocoder_name == "bigvgan": + gen_audio = vocoder(gen_mel_spec).squeeze(0).cpu() + ref_audio = vocoder(ref_mel_spec).squeeze(0).cpu() + + torchaudio.save( + f"{log_samples_path}/update_{global_update}_gen.wav", gen_audio, target_sample_rate + ) + torchaudio.save( + f"{log_samples_path}/update_{global_update}_ref.wav", ref_audio, target_sample_rate + ) + self.model.train() + + self.save_checkpoint(global_update, last=True) + + self.accelerator.end_training() diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/model/utils.py b/bi_v100-f5-tts/F5-TTS/src/f5_tts/model/utils.py new file mode 100644 index 0000000..c5c3829 --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/model/utils.py @@ -0,0 +1,220 @@ +from __future__ import annotations + +import os +import random +from collections import defaultdict +from importlib.resources import files + +import jieba +import torch +from pypinyin import Style, lazy_pinyin +from torch.nn.utils.rnn import pad_sequence + + +# seed everything + + +def seed_everything(seed=0): + random.seed(seed) + os.environ["PYTHONHASHSEED"] = str(seed) + torch.manual_seed(seed) + torch.cuda.manual_seed(seed) + torch.cuda.manual_seed_all(seed) + torch.backends.cudnn.deterministic = True + torch.backends.cudnn.benchmark = False + + +# helpers + + +def exists(v): + return v is not None + + +def default(v, d): + return v if exists(v) else d + + +def is_package_available(package_name: str) -> bool: + try: + import importlib + + package_exists = importlib.util.find_spec(package_name) is not None + return package_exists + except Exception: + return False + + +# tensor helpers + + +def lens_to_mask(t: int["b"], length: int | None = None) -> bool["b n"]: # noqa: F722 F821 + if not exists(length): + length = t.amax() + + seq = torch.arange(length, device=t.device) + return seq[None, :] < t[:, None] + + +def mask_from_start_end_indices(seq_len: int["b"], start: int["b"], end: int["b"]): # noqa: F722 F821 + max_seq_len = seq_len.max().item() + seq = torch.arange(max_seq_len, device=start.device).long() + start_mask = seq[None, :] >= start[:, None] + end_mask = seq[None, :] < end[:, None] + return start_mask & end_mask + + +def mask_from_frac_lengths(seq_len: int["b"], frac_lengths: float["b"]): # noqa: F722 F821 + lengths = (frac_lengths * seq_len).long() + max_start = seq_len - lengths + + rand = torch.rand_like(frac_lengths) + start = (max_start * rand).long().clamp(min=0) + end = start + lengths + + return mask_from_start_end_indices(seq_len, start, end) + + +def maybe_masked_mean(t: float["b n d"], mask: bool["b n"] = None) -> float["b d"]: # noqa: F722 + if not exists(mask): + return t.mean(dim=1) + + t = torch.where(mask[:, :, None], t, torch.tensor(0.0, device=t.device)) + num = t.sum(dim=1) + den = mask.float().sum(dim=1) + + return num / den.clamp(min=1.0) + + +# simple utf-8 tokenizer, since paper went character based +def list_str_to_tensor(text: list[str], padding_value=-1) -> int["b nt"]: # noqa: F722 + list_tensors = [torch.tensor([*bytes(t, "UTF-8")]) for t in text] # ByT5 style + text = pad_sequence(list_tensors, padding_value=padding_value, batch_first=True) + return text + + +# char tokenizer, based on custom dataset's extracted .txt file +def list_str_to_idx( + text: list[str] | list[list[str]], + vocab_char_map: dict[str, int], # {char: idx} + padding_value=-1, +) -> int["b nt"]: # noqa: F722 + list_idx_tensors = [torch.tensor([vocab_char_map.get(c, 0) for c in t]) for t in text] # pinyin or char style + text = pad_sequence(list_idx_tensors, padding_value=padding_value, batch_first=True) + return text + + +# Get tokenizer + + +def get_tokenizer(dataset_name, tokenizer: str = "pinyin"): + """ + tokenizer - "pinyin" do g2p for only chinese characters, need .txt vocab_file + - "char" for char-wise tokenizer, need .txt vocab_file + - "byte" for utf-8 tokenizer + - "custom" if you're directly passing in a path to the vocab.txt you want to use + vocab_size - if use "pinyin", all available pinyin types, common alphabets (also those with accent) and symbols + - if use "char", derived from unfiltered character & symbol counts of custom dataset + - if use "byte", set to 256 (unicode byte range) + """ + if tokenizer in ["pinyin", "char"]: + tokenizer_path = os.path.join(files("f5_tts").joinpath("../../data"), f"{dataset_name}_{tokenizer}/vocab.txt") + with open(tokenizer_path, "r", encoding="utf-8") as f: + vocab_char_map = {} + for i, char in enumerate(f): + vocab_char_map[char[:-1]] = i + vocab_size = len(vocab_char_map) + assert vocab_char_map[" "] == 0, "make sure space is of idx 0 in vocab.txt, cuz 0 is used for unknown char" + + elif tokenizer == "byte": + vocab_char_map = None + vocab_size = 256 + + elif tokenizer == "custom": + with open(dataset_name, "r", encoding="utf-8") as f: + vocab_char_map = {} + for i, char in enumerate(f): + vocab_char_map[char[:-1]] = i + vocab_size = len(vocab_char_map) + + return vocab_char_map, vocab_size + + +# convert char to pinyin + + +def convert_char_to_pinyin(text_list, polyphone=True): + if jieba.dt.initialized is False: + jieba.default_logger.setLevel(50) # CRITICAL + jieba.initialize() + + final_text_list = [] + custom_trans = str.maketrans( + {";": ",", "“": '"', "”": '"', "‘": "'", "’": "'"} + ) # add custom trans here, to address oov + + def is_chinese(c): + return ( + "\u3100" <= c <= "\u9fff" # common chinese characters + ) + + for text in text_list: + char_list = [] + text = text.translate(custom_trans) + for seg in jieba.cut(text): + seg_byte_len = len(bytes(seg, "UTF-8")) + if seg_byte_len == len(seg): # if pure alphabets and symbols + if char_list and seg_byte_len > 1 and char_list[-1] not in " :'\"": + char_list.append(" ") + char_list.extend(seg) + elif polyphone and seg_byte_len == 3 * len(seg): # if pure east asian characters + seg_ = lazy_pinyin(seg, style=Style.TONE3, tone_sandhi=True) + for i, c in enumerate(seg): + if is_chinese(c): + char_list.append(" ") + char_list.append(seg_[i]) + else: # if mixed characters, alphabets and symbols + for c in seg: + if ord(c) < 256: + char_list.extend(c) + elif is_chinese(c): + char_list.append(" ") + char_list.extend(lazy_pinyin(c, style=Style.TONE3, tone_sandhi=True)) + else: + char_list.append(c) + final_text_list.append(char_list) + + return final_text_list + + +# filter func for dirty data with many repetitions + + +def repetition_found(text, length=2, tolerance=10): + pattern_count = defaultdict(int) + for i in range(len(text) - length + 1): + pattern = text[i : i + length] + pattern_count[pattern] += 1 + for pattern, count in pattern_count.items(): + if count > tolerance: + return True + return False + + +# get the empirically pruned step for sampling + + +def get_epss_timesteps(n, device, dtype): + dt = 1 / 32 + predefined_timesteps = { + 5: [0, 2, 4, 8, 16, 32], + 6: [0, 2, 4, 6, 8, 16, 32], + 7: [0, 2, 4, 6, 8, 16, 24, 32], + 10: [0, 2, 4, 6, 8, 12, 16, 20, 24, 28, 32], + 12: [0, 2, 4, 6, 8, 10, 12, 14, 16, 20, 24, 28, 32], + 16: [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 32], + } + t = predefined_timesteps.get(n, []) + if not t: + return torch.linspace(0, 1, n + 1, device=device, dtype=dtype) + return dt * torch.tensor(t, device=device, dtype=dtype) diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/Dockerfile.server b/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/Dockerfile.server new file mode 100644 index 0000000..861e266 --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/Dockerfile.server @@ -0,0 +1,3 @@ +FROM nvcr.io/nvidia/tritonserver:24.12-py3 +RUN pip install tritonclient[grpc] tensorrt-llm==0.16.0 torchaudio==2.5.1 jieba pypinyin librosa vocos +WORKDIR /workspace \ No newline at end of file diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/README.md b/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/README.md new file mode 100644 index 0000000..664bfe8 --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/README.md @@ -0,0 +1,69 @@ +## Triton Inference Serving Best Practice for F5-TTS + +### Quick Start +Directly launch the service using docker compose. +```sh +# TODO: support F5TTS_v1_Base +MODEL=F5TTS_Base docker compose up +``` + +### Build Image +Build the docker image from scratch. +```sh +docker build . -f Dockerfile.server -t soar97/triton-f5-tts:24.12 +``` + +### Create Docker Container +```sh +your_mount_dir=/mnt:/mnt +docker run -it --name "f5-server" --gpus all --net host -v $your_mount_dir --shm-size=2g soar97/triton-f5-tts:24.12 +``` + +### Export Models to TensorRT-LLM and Launch Server +Inside docker container, we would follow the official guide of TensorRT-LLM to build qwen and whisper TensorRT-LLM engines. See [here](https://github.com/NVIDIA/TensorRT-LLM/tree/main/examples/whisper). +```sh +bash run.sh 0 4 F5TTS_Base +``` + +### HTTP Client +```sh +python3 client_http.py +``` + +### Benchmark using Client-Server Mode +```sh +num_task=2 +python3 client_grpc.py --num-tasks $num_task --huggingface-dataset yuekai/seed_tts --split-name wenetspeech4tts +``` + +### Benchmark using Offline TRT-LLM Mode +```sh +batch_size=1 +split_name=wenetspeech4tts +backend_type=trt +log_dir=./log_benchmark_batch_size_${batch_size}_${split_name}_${backend_type} +rm -r $log_dir +ln -s model_repo_f5_tts/f5_tts/1/f5_tts_trtllm.py ./ +torchrun --nproc_per_node=1 \ +benchmark.py --output-dir $log_dir \ +--batch-size $batch_size \ +--enable-warmup \ +--split-name $split_name \ +--model-path $F5_TTS_HF_DOWNLOAD_PATH/$model/model_1200000.pt \ +--vocab-file $F5_TTS_HF_DOWNLOAD_PATH/$model/vocab.txt \ +--vocoder-trt-engine-path $vocoder_trt_engine_path \ +--backend-type $backend_type \ +--tllm-model-dir $F5_TTS_TRT_LLM_ENGINE_PATH || exit 1 +``` + +### Benchmark Results +Decoding on a single L20 GPU, using 26 different prompt_audio & target_text pairs, 16 NFE. + +| Model | Concurrency | Avg Latency | RTF | Mode | +|---------------------|----------------|-------------|--------|-----------------| +| F5-TTS Base (Vocos) | 2 | 253 ms | 0.0394 | Client-Server | +| F5-TTS Base (Vocos) | 1 (Batch_size) | - | 0.0402 | Offline TRT-LLM | +| F5-TTS Base (Vocos) | 1 (Batch_size) | - | 0.1467 | Offline Pytorch | + +### Credits +1. [F5-TTS-TRTLLM](https://github.com/Bigfishering/f5-tts-trtllm) diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/benchmark.py b/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/benchmark.py new file mode 100644 index 0000000..cb054ec --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/benchmark.py @@ -0,0 +1,560 @@ +# Copyright (c) 2024 Tsinghua Univ. (authors: Xingchen Song) +# 2025 (authors: Yuekai Zhang) +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# Modified from https://github.com/xingchensong/S3Tokenizer/blob/main/s3tokenizer/cli.py +""" Example Usage +torchrun --nproc_per_node=1 \ +benchmark.py --output-dir $log_dir \ +--batch-size $batch_size \ +--enable-warmup \ +--split-name $split_name \ +--model-path $F5_TTS_HF_DOWNLOAD_PATH/$model/model_1200000.pt \ +--vocab-file $F5_TTS_HF_DOWNLOAD_PATH/$model/vocab.txt \ +--vocoder-trt-engine-path $vocoder_trt_engine_path \ +--backend-type $backend_type \ +--tllm-model-dir $F5_TTS_TRT_LLM_ENGINE_PATH || exit 1 +""" + +import argparse +import json +import os +import time +from typing import Dict, List, Union + +import datasets +import jieba +import tensorrt as trt +import torch +import torch.distributed as dist +import torch.nn.functional as F +import torchaudio +from datasets import load_dataset +from f5_tts_trtllm import F5TTS +from huggingface_hub import hf_hub_download +from pypinyin import Style, lazy_pinyin +from tensorrt_llm._utils import trt_dtype_to_torch +from tensorrt_llm.logger import logger +from tensorrt_llm.runtime.session import Session, TensorInfo +from torch.nn.utils.rnn import pad_sequence +from torch.utils.data import DataLoader, DistributedSampler +from tqdm import tqdm +from vocos import Vocos + + +torch.manual_seed(0) + + +def get_args(): + parser = argparse.ArgumentParser(description="extract speech code") + parser.add_argument( + "--split-name", + type=str, + default="wenetspeech4tts", + choices=["wenetspeech4tts", "test_zh", "test_en", "test_hard"], + help="huggingface dataset split name", + ) + parser.add_argument("--output-dir", required=True, type=str, help="dir to save result") + parser.add_argument( + "--vocab-file", + required=True, + type=str, + help="vocab file", + ) + parser.add_argument( + "--model-path", + required=True, + type=str, + help="model path, to load text embedding", + ) + parser.add_argument( + "--tllm-model-dir", + required=True, + type=str, + help="tllm model dir", + ) + parser.add_argument( + "--batch-size", + required=True, + type=int, + help="batch size (per-device) for inference", + ) + parser.add_argument("--num-workers", type=int, default=0, help="workers for dataloader") + parser.add_argument("--prefetch", type=int, default=None, help="prefetch for dataloader") + parser.add_argument( + "--vocoder", + default="vocos", + type=str, + help="vocoder name", + ) + parser.add_argument( + "--vocoder-trt-engine-path", + default=None, + type=str, + help="vocoder trt engine path", + ) + parser.add_argument("--enable-warmup", action="store_true") + parser.add_argument("--remove-input-padding", action="store_true") + parser.add_argument("--use-perf", action="store_true", help="use nvtx to record performance") + parser.add_argument("--backend-type", type=str, default="triton", choices=["trt", "pytorch"], help="backend type") + args = parser.parse_args() + return args + + +def padded_mel_batch(ref_mels, max_seq_len): + padded_ref_mels = [] + for mel in ref_mels: + # pad along the last dimension + padded_ref_mel = F.pad(mel, (0, 0, 0, max_seq_len - mel.shape[0]), value=0) + padded_ref_mels.append(padded_ref_mel) + padded_ref_mels = torch.stack(padded_ref_mels) + return padded_ref_mels + + +def data_collator(batch, vocab_char_map, device="cuda", use_perf=False): + if use_perf: + torch.cuda.nvtx.range_push("data_collator") + target_sample_rate = 24000 + target_rms = 0.1 + ids, ref_mel_list, ref_mel_len_list, estimated_reference_target_mel_len, reference_target_texts_list = ( + [], + [], + [], + [], + [], + ) + for i, item in enumerate(batch): + item_id, prompt_text, target_text = ( + item["id"], + item["prompt_text"], + item["target_text"], + ) + ids.append(item_id) + reference_target_texts_list.append(prompt_text + target_text) + + ref_audio_org, ref_sr = ( + item["prompt_audio"]["array"], + item["prompt_audio"]["sampling_rate"], + ) + ref_audio_org = torch.from_numpy(ref_audio_org).unsqueeze(0).float() + ref_rms = torch.sqrt(torch.mean(torch.square(ref_audio_org))) + if ref_rms < target_rms: + ref_audio_org = ref_audio_org * target_rms / ref_rms + + if ref_sr != target_sample_rate: + resampler = torchaudio.transforms.Resample(ref_sr, target_sample_rate) + ref_audio = resampler(ref_audio_org) + else: + ref_audio = ref_audio_org + + if use_perf: + torch.cuda.nvtx.range_push(f"mel_spectrogram {i}") + ref_mel = mel_spectrogram(ref_audio, vocoder="vocos", device="cuda") + if use_perf: + torch.cuda.nvtx.range_pop() + ref_mel = ref_mel.squeeze() + ref_mel_len = ref_mel.shape[0] + assert ref_mel.shape[1] == 100 + + ref_mel_list.append(ref_mel) + ref_mel_len_list.append(ref_mel_len) + + estimated_reference_target_mel_len.append( + int(ref_mel.shape[0] * (1 + len(target_text.encode("utf-8")) / len(prompt_text.encode("utf-8")))) + ) + + max_seq_len = max(estimated_reference_target_mel_len) + ref_mel_batch = padded_mel_batch(ref_mel_list, max_seq_len) + ref_mel_len_batch = torch.LongTensor(ref_mel_len_list) + + pinyin_list = convert_char_to_pinyin(reference_target_texts_list, polyphone=True) + text_pad_sequence = list_str_to_idx(pinyin_list, vocab_char_map) + + for i, item in enumerate(text_pad_sequence): + text_pad_sequence[i] = F.pad( + item, (0, estimated_reference_target_mel_len[i] - len(item)), mode="constant", value=-1 + ) + text_pad_sequence[i] += 1 # WAR: 0 is reserved for padding token, hard coding in F5-TTS + text_pad_sequence = pad_sequence(text_pad_sequence, padding_value=-1, batch_first=True).to(device) + text_pad_sequence = F.pad( + text_pad_sequence, (0, max_seq_len - text_pad_sequence.shape[1]), mode="constant", value=-1 + ) + if use_perf: + torch.cuda.nvtx.range_pop() + return { + "ids": ids, + "ref_mel_batch": ref_mel_batch, + "ref_mel_len_batch": ref_mel_len_batch, + "text_pad_sequence": text_pad_sequence, + "estimated_reference_target_mel_len": estimated_reference_target_mel_len, + } + + +def init_distributed(): + world_size = int(os.environ.get("WORLD_SIZE", 1)) + local_rank = int(os.environ.get("LOCAL_RANK", 0)) + rank = int(os.environ.get("RANK", 0)) + print( + "Inference on multiple gpus, this gpu {}".format(local_rank) + + ", rank {}, world_size {}".format(rank, world_size) + ) + torch.cuda.set_device(local_rank) + # Initialize process group with explicit device IDs + dist.init_process_group( + "nccl", + ) + return world_size, local_rank, rank + + +def get_tokenizer(vocab_file_path: str): + """ + tokenizer - "pinyin" do g2p for only chinese characters, need .txt vocab_file + - "char" for char-wise tokenizer, need .txt vocab_file + - "byte" for utf-8 tokenizer + - "custom" if you're directly passing in a path to the vocab.txt you want to use + vocab_size - if use "pinyin", all available pinyin types, common alphabets (also those with accent) and symbols + - if use "char", derived from unfiltered character & symbol counts of custom dataset + - if use "byte", set to 256 (unicode byte range) + """ + with open(vocab_file_path, "r", encoding="utf-8") as f: + vocab_char_map = {} + for i, char in enumerate(f): + vocab_char_map[char[:-1]] = i + vocab_size = len(vocab_char_map) + return vocab_char_map, vocab_size + + +def convert_char_to_pinyin(reference_target_texts_list, polyphone=True): + final_reference_target_texts_list = [] + custom_trans = str.maketrans( + {";": ",", "“": '"', "”": '"', "‘": "'", "’": "'"} + ) # add custom trans here, to address oov + + def is_chinese(c): + return "\u3100" <= c <= "\u9fff" # common chinese characters + + for text in reference_target_texts_list: + char_list = [] + text = text.translate(custom_trans) + for seg in jieba.cut(text): + seg_byte_len = len(bytes(seg, "UTF-8")) + if seg_byte_len == len(seg): # if pure alphabets and symbols + if char_list and seg_byte_len > 1 and char_list[-1] not in " :'\"": + char_list.append(" ") + char_list.extend(seg) + elif polyphone and seg_byte_len == 3 * len(seg): # if pure east asian characters + seg_ = lazy_pinyin(seg, style=Style.TONE3, tone_sandhi=True) + for i, c in enumerate(seg): + if is_chinese(c): + char_list.append(" ") + char_list.append(seg_[i]) + else: # if mixed characters, alphabets and symbols + for c in seg: + if ord(c) < 256: + char_list.extend(c) + elif is_chinese(c): + char_list.append(" ") + char_list.extend(lazy_pinyin(c, style=Style.TONE3, tone_sandhi=True)) + else: + char_list.append(c) + final_reference_target_texts_list.append(char_list) + + return final_reference_target_texts_list + + +def list_str_to_idx( + text: Union[List[str], List[List[str]]], + vocab_char_map: Dict[str, int], # {char: idx} + padding_value=-1, +): + list_idx_tensors = [torch.tensor([vocab_char_map.get(c, 0) for c in t]) for t in text] # pinyin or char style + # text = pad_sequence(list_idx_tensors, padding_value=padding_value, batch_first=True) + return list_idx_tensors + + +def load_vocoder( + vocoder_name="vocos", is_local=False, local_path="", device="cuda", hf_cache_dir=None, vocoder_trt_engine_path=None +): + if vocoder_name == "vocos": + if vocoder_trt_engine_path is not None: + vocoder = VocosTensorRT(engine_path=vocoder_trt_engine_path) + else: + # vocoder = Vocos.from_pretrained("charactr/vocos-mel-24khz").to(device) + if is_local: + print(f"Load vocos from local path {local_path}") + config_path = f"{local_path}/config.yaml" + model_path = f"{local_path}/pytorch_model.bin" + else: + print("Download Vocos from huggingface charactr/vocos-mel-24khz") + repo_id = "charactr/vocos-mel-24khz" + config_path = hf_hub_download(repo_id=repo_id, cache_dir=hf_cache_dir, filename="config.yaml") + model_path = hf_hub_download(repo_id=repo_id, cache_dir=hf_cache_dir, filename="pytorch_model.bin") + vocoder = Vocos.from_hparams(config_path) + state_dict = torch.load(model_path, map_location="cpu", weights_only=True) + from vocos.feature_extractors import EncodecFeatures + + if isinstance(vocoder.feature_extractor, EncodecFeatures): + encodec_parameters = { + "feature_extractor.encodec." + key: value + for key, value in vocoder.feature_extractor.encodec.state_dict().items() + } + state_dict.update(encodec_parameters) + vocoder.load_state_dict(state_dict) + vocoder = vocoder.eval().to(device) + elif vocoder_name == "bigvgan": + raise NotImplementedError("BigVGAN is not implemented yet") + return vocoder + + +def mel_spectrogram(waveform, vocoder="vocos", device="cuda"): + if vocoder == "vocos": + mel_stft = torchaudio.transforms.MelSpectrogram( + sample_rate=24000, + n_fft=1024, + win_length=1024, + hop_length=256, + n_mels=100, + power=1, + center=True, + normalized=False, + norm=None, + ).to(device) + mel = mel_stft(waveform.to(device)) + mel = mel.clamp(min=1e-5).log() + return mel.transpose(1, 2) + + +class VocosTensorRT: + def __init__(self, engine_path="./vocos_vocoder.plan", stream=None): + TRT_LOGGER = trt.Logger(trt.Logger.WARNING) + trt.init_libnvinfer_plugins(TRT_LOGGER, namespace="") + logger.info(f"Loading vae engine from {engine_path}") + self.engine_path = engine_path + with open(engine_path, "rb") as f: + engine_buffer = f.read() + self.session = Session.from_serialized_engine(engine_buffer) + self.stream = stream if stream is not None else torch.cuda.current_stream().cuda_stream + + def decode(self, mels): + mels = mels.contiguous() + inputs = {"mel": mels} + output_info = self.session.infer_shapes([TensorInfo("mel", trt.DataType.FLOAT, mels.shape)]) + outputs = { + t.name: torch.empty(tuple(t.shape), dtype=trt_dtype_to_torch(t.dtype), device="cuda") for t in output_info + } + ok = self.session.run(inputs, outputs, self.stream) + + assert ok, "Runtime execution failed for vae session" + + samples = outputs["waveform"] + return samples + + +def main(): + args = get_args() + os.makedirs(args.output_dir, exist_ok=True) + + assert torch.cuda.is_available() + world_size, local_rank, rank = init_distributed() + device = torch.device(f"cuda:{local_rank}") + + vocab_char_map, vocab_size = get_tokenizer(args.vocab_file) + + tllm_model_dir = args.tllm_model_dir + config_file = os.path.join(tllm_model_dir, "config.json") + with open(config_file) as f: + config = json.load(f) + if args.backend_type == "trt": + model = F5TTS( + config, debug_mode=False, tllm_model_dir=tllm_model_dir, model_path=args.model_path, vocab_size=vocab_size + ) + elif args.backend_type == "pytorch": + import sys + + sys.path.append(f"{os.path.dirname(os.path.abspath(__file__))}/../../../../src/") + from f5_tts.infer.utils_infer import load_model + from f5_tts.model import DiT + + F5TTS_model_cfg = dict( + dim=1024, + depth=22, + heads=16, + ff_mult=2, + text_dim=512, + conv_layers=4, + pe_attn_head=1, + text_mask_padding=False, + ) + model = load_model(DiT, F5TTS_model_cfg, args.model_path) + + vocoder = load_vocoder( + vocoder_name=args.vocoder, device=device, vocoder_trt_engine_path=args.vocoder_trt_engine_path + ) + + dataset = load_dataset( + "yuekai/seed_tts", + split=args.split_name, + trust_remote_code=True, + ) + + def add_estimated_duration(example): + prompt_audio_len = example["prompt_audio"]["array"].shape[0] + scale_factor = 1 + len(example["target_text"]) / len(example["prompt_text"]) + estimated_duration = prompt_audio_len * scale_factor + example["estimated_duration"] = estimated_duration / example["prompt_audio"]["sampling_rate"] + return example + + dataset = dataset.map(add_estimated_duration) + dataset = dataset.sort("estimated_duration", reverse=True) + if args.use_perf: + # dataset_list = [dataset.select(range(1)) for i in range(16)] # seq_len 1000 + dataset_list_short = [dataset.select([24]) for i in range(8)] # seq_len 719 + # dataset_list_long = [dataset.select([23]) for i in range(8)] # seq_len 2002 + # dataset = datasets.concatenate_datasets(dataset_list_short + dataset_list_long) + dataset = datasets.concatenate_datasets(dataset_list_short) + if world_size > 1: + sampler = DistributedSampler(dataset, num_replicas=world_size, rank=rank) + else: + # This would disable shuffling + sampler = None + + dataloader = DataLoader( + dataset, + batch_size=args.batch_size, + sampler=sampler, + shuffle=False, + num_workers=args.num_workers, + prefetch_factor=args.prefetch, + collate_fn=lambda x: data_collator(x, vocab_char_map, use_perf=args.use_perf), + ) + + total_steps = len(dataset) + + if args.enable_warmup: + for batch in dataloader: + ref_mels, ref_mel_lens = batch["ref_mel_batch"].to(device), batch["ref_mel_len_batch"].to(device) + text_pad_seq = batch["text_pad_sequence"].to(device) + total_mel_lens = batch["estimated_reference_target_mel_len"] + if args.backend_type == "trt": + _ = model.sample( + text_pad_seq, ref_mels, ref_mel_lens, total_mel_lens, remove_input_padding=args.remove_input_padding + ) + elif args.backend_type == "pytorch": + with torch.inference_mode(): + text_pad_seq -= 1 + text_pad_seq[text_pad_seq == -2] = -1 + total_mel_lens = torch.tensor(total_mel_lens, device=device) + generated, _ = model.sample( + cond=ref_mels, + text=text_pad_seq, + duration=total_mel_lens, + steps=16, + cfg_strength=2.0, + sway_sampling_coef=-1, + ) + + if rank == 0: + progress_bar = tqdm(total=total_steps, desc="Processing", unit="wavs") + + decoding_time = 0 + vocoder_time = 0 + total_duration = 0 + if args.use_perf: + torch.cuda.cudart().cudaProfilerStart() + total_decoding_time = time.time() + for batch in dataloader: + if args.use_perf: + torch.cuda.nvtx.range_push("data sample") + ref_mels, ref_mel_lens = batch["ref_mel_batch"].to(device), batch["ref_mel_len_batch"].to(device) + text_pad_seq = batch["text_pad_sequence"].to(device) + total_mel_lens = batch["estimated_reference_target_mel_len"] + + if args.use_perf: + torch.cuda.nvtx.range_pop() + if args.backend_type == "trt": + generated, cost_time = model.sample( + text_pad_seq, + ref_mels, + ref_mel_lens, + total_mel_lens, + remove_input_padding=args.remove_input_padding, + use_perf=args.use_perf, + ) + elif args.backend_type == "pytorch": + total_mel_lens = torch.tensor(total_mel_lens, device=device) + with torch.inference_mode(): + start_time = time.time() + text_pad_seq -= 1 + text_pad_seq[text_pad_seq == -2] = -1 + generated, _ = model.sample( + cond=ref_mels, + text=text_pad_seq, + duration=total_mel_lens, + lens=ref_mel_lens, + steps=16, + cfg_strength=2.0, + sway_sampling_coef=-1, + ) + cost_time = time.time() - start_time + decoding_time += cost_time + vocoder_start_time = time.time() + for i, gen in enumerate(generated): + gen = gen[ref_mel_lens[i] : total_mel_lens[i], :].unsqueeze(0) + gen_mel_spec = gen.permute(0, 2, 1).to(torch.float32) + if args.vocoder == "vocos": + if args.use_perf: + torch.cuda.nvtx.range_push("vocoder decode") + generated_wave = vocoder.decode(gen_mel_spec).cpu() + if args.use_perf: + torch.cuda.nvtx.range_pop() + else: + generated_wave = vocoder(gen_mel_spec).squeeze(0).cpu() + target_rms = 0.1 + target_sample_rate = 24_000 + # if ref_rms_list[i] < target_rms: + # generated_wave = generated_wave * ref_rms_list[i] / target_rms + rms = torch.sqrt(torch.mean(torch.square(generated_wave))) + if rms < target_rms: + generated_wave = generated_wave * target_rms / rms + utt = batch["ids"][i] + torchaudio.save( + f"{args.output_dir}/{utt}.wav", + generated_wave, + target_sample_rate, + ) + total_duration += generated_wave.shape[1] / target_sample_rate + vocoder_time += time.time() - vocoder_start_time + if rank == 0: + progress_bar.update(world_size * len(batch["ids"])) + total_decoding_time = time.time() - total_decoding_time + if rank == 0: + progress_bar.close() + rtf = total_decoding_time / total_duration + s = f"RTF: {rtf:.4f}\n" + s += f"total_duration: {total_duration:.3f} seconds\n" + s += f"({total_duration / 3600:.2f} hours)\n" + s += f"DiT time: {decoding_time:.3f} seconds ({decoding_time / 3600:.2f} hours)\n" + s += f"Vocoder time: {vocoder_time:.3f} seconds ({vocoder_time / 3600:.2f} hours)\n" + s += f"total decoding time: {total_decoding_time:.3f} seconds ({total_decoding_time / 3600:.2f} hours)\n" + s += f"batch size: {args.batch_size}\n" + print(s) + + with open(f"{args.output_dir}/rtf.txt", "w") as f: + f.write(s) + + dist.barrier() + dist.destroy_process_group() + + +if __name__ == "__main__": + main() diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/client_grpc.py b/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/client_grpc.py new file mode 100644 index 0000000..1eb9b5b --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/client_grpc.py @@ -0,0 +1,470 @@ +#!/usr/bin/env python3 +# Copyright 2022 Xiaomi Corp. (authors: Fangjun Kuang) +# 2023 Nvidia (authors: Yuekai Zhang) +# 2023 Recurrent.ai (authors: Songtao Shi) +# See LICENSE for clarification regarding multiple authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +""" +This script supports to load dataset from huggingface and sends it to the server +for decoding, in parallel. + +Usage: +num_task=2 + +# For offline F5-TTS +python3 client_grpc.py \ + --server-addr localhost \ + --model-name f5_tts \ + --num-tasks $num_task \ + --huggingface-dataset yuekai/seed_tts \ + --split-name test_zh \ + --log-dir ./log_concurrent_tasks_${num_task} + +# For offline Spark-TTS-0.5B +python3 client_grpc.py \ + --server-addr localhost \ + --model-name spark_tts \ + --num-tasks $num_task \ + --huggingface-dataset yuekai/seed_tts \ + --split-name wenetspeech4tts \ + --log-dir ./log_concurrent_tasks_${num_task} +""" + +import argparse +import asyncio +import json +import os +import time +import types +from pathlib import Path + +import numpy as np +import soundfile as sf +import tritonclient +import tritonclient.grpc.aio as grpcclient +from tritonclient.utils import np_to_triton_dtype + + +def write_triton_stats(stats, summary_file): + with open(summary_file, "w") as summary_f: + model_stats = stats["model_stats"] + # write a note, the log is from triton_client.get_inference_statistics(), to better human readability + summary_f.write( + "The log is parsing from triton_client.get_inference_statistics(), to better human readability. \n" + ) + summary_f.write("To learn more about the log, please refer to: \n") + summary_f.write("1. https://github.com/triton-inference-server/server/blob/main/docs/user_guide/metrics.md \n") + summary_f.write("2. https://github.com/triton-inference-server/server/issues/5374 \n\n") + summary_f.write( + "To better improve throughput, we always would like let requests wait in the queue for a while, and then execute them with a larger batch size. \n" + ) + summary_f.write( + "However, there is a trade-off between the increased queue time and the increased batch size. \n" + ) + summary_f.write( + "You may change 'max_queue_delay_microseconds' and 'preferred_batch_size' in the model configuration file to achieve this. \n" + ) + summary_f.write( + "See https://github.com/triton-inference-server/server/blob/main/docs/user_guide/model_configuration.md#delayed-batching for more details. \n\n" + ) + for model_state in model_stats: + if "last_inference" not in model_state: + continue + summary_f.write(f"model name is {model_state['name']} \n") + model_inference_stats = model_state["inference_stats"] + total_queue_time_s = int(model_inference_stats["queue"]["ns"]) / 1e9 + total_infer_time_s = int(model_inference_stats["compute_infer"]["ns"]) / 1e9 + total_input_time_s = int(model_inference_stats["compute_input"]["ns"]) / 1e9 + total_output_time_s = int(model_inference_stats["compute_output"]["ns"]) / 1e9 + summary_f.write( + f"queue time {total_queue_time_s:<5.2f} s, compute infer time {total_infer_time_s:<5.2f} s, compute input time {total_input_time_s:<5.2f} s, compute output time {total_output_time_s:<5.2f} s \n" # noqa + ) + model_batch_stats = model_state["batch_stats"] + for batch in model_batch_stats: + batch_size = int(batch["batch_size"]) + compute_input = batch["compute_input"] + compute_output = batch["compute_output"] + compute_infer = batch["compute_infer"] + batch_count = int(compute_infer["count"]) + assert compute_infer["count"] == compute_output["count"] == compute_input["count"] + compute_infer_time_ms = int(compute_infer["ns"]) / 1e6 + compute_input_time_ms = int(compute_input["ns"]) / 1e6 + compute_output_time_ms = int(compute_output["ns"]) / 1e6 + summary_f.write( + f"execuate inference with batch_size {batch_size:<2} total {batch_count:<5} times, total_infer_time {compute_infer_time_ms:<9.2f} ms, avg_infer_time {compute_infer_time_ms:<9.2f}/{batch_count:<5}={compute_infer_time_ms / batch_count:.2f} ms, avg_infer_time_per_sample {compute_infer_time_ms:<9.2f}/{batch_count:<5}/{batch_size}={compute_infer_time_ms / batch_count / batch_size:.2f} ms \n" # noqa + ) + summary_f.write( + f"input {compute_input_time_ms:<9.2f} ms, avg {compute_input_time_ms / batch_count:.2f} ms, " # noqa + ) + summary_f.write( + f"output {compute_output_time_ms:<9.2f} ms, avg {compute_output_time_ms / batch_count:.2f} ms \n" # noqa + ) + + +def get_args(): + parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter) + + parser.add_argument( + "--server-addr", + type=str, + default="localhost", + help="Address of the server", + ) + + parser.add_argument( + "--server-port", + type=int, + default=8001, + help="Grpc port of the triton server, default is 8001", + ) + + parser.add_argument( + "--reference-audio", + type=str, + default=None, + help="Path to a single audio file. It can't be specified at the same time with --manifest-dir", + ) + + parser.add_argument( + "--reference-text", + type=str, + default="", + help="", + ) + + parser.add_argument( + "--target-text", + type=str, + default="", + help="", + ) + + parser.add_argument( + "--huggingface-dataset", + type=str, + default="yuekai/seed_tts", + help="dataset name in huggingface dataset hub", + ) + + parser.add_argument( + "--split-name", + type=str, + default="wenetspeech4tts", + choices=["wenetspeech4tts", "test_zh", "test_en", "test_hard"], + help="dataset split name, default is 'test'", + ) + + parser.add_argument( + "--manifest-path", + type=str, + default=None, + help="Path to the manifest dir which includes wav.scp trans.txt files.", + ) + + parser.add_argument( + "--model-name", + type=str, + default="f5_tts", + choices=["f5_tts", "spark_tts"], + help="triton model_repo module name to request: transducer for k2, attention_rescoring for wenet offline, streaming_wenet for wenet streaming, infer_pipeline for paraformer large offline", + ) + + parser.add_argument( + "--num-tasks", + type=int, + default=1, + help="Number of concurrent tasks for sending", + ) + + parser.add_argument( + "--log-interval", + type=int, + default=5, + help="Controls how frequently we print the log.", + ) + + parser.add_argument( + "--compute-wer", + action="store_true", + default=False, + help="""True to compute WER. + """, + ) + + parser.add_argument( + "--log-dir", + type=str, + required=False, + default="./tmp", + help="log directory", + ) + + parser.add_argument( + "--batch-size", + type=int, + default=1, + help="Inference batch_size per request for offline mode.", + ) + + return parser.parse_args() + + +def load_audio(wav_path, target_sample_rate=24000): + assert target_sample_rate == 24000, "hard coding in server" + if isinstance(wav_path, dict): + waveform = wav_path["array"] + sample_rate = wav_path["sampling_rate"] + else: + waveform, sample_rate = sf.read(wav_path) + if sample_rate != target_sample_rate: + from scipy.signal import resample + + num_samples = int(len(waveform) * (target_sample_rate / sample_rate)) + waveform = resample(waveform, num_samples) + return waveform, target_sample_rate + + +async def send( + manifest_item_list: list, + name: str, + triton_client: tritonclient.grpc.aio.InferenceServerClient, + protocol_client: types.ModuleType, + log_interval: int, + model_name: str, + padding_duration: int = None, + audio_save_dir: str = "./", + save_sample_rate: int = 24000, +): + total_duration = 0.0 + latency_data = [] + task_id = int(name[5:]) + + print(f"manifest_item_list: {manifest_item_list}") + for i, item in enumerate(manifest_item_list): + if i % log_interval == 0: + print(f"{name}: {i}/{len(manifest_item_list)}") + waveform, sample_rate = load_audio(item["audio_filepath"], target_sample_rate=24000) + duration = len(waveform) / sample_rate + lengths = np.array([[len(waveform)]], dtype=np.int32) + + reference_text, target_text = item["reference_text"], item["target_text"] + + estimated_target_duration = duration / len(reference_text) * len(target_text) + + if padding_duration: + # padding to nearset 10 seconds + samples = np.zeros( + ( + 1, + padding_duration + * sample_rate + * ((int(estimated_target_duration + duration) // padding_duration) + 1), + ), + dtype=np.float32, + ) + + samples[0, : len(waveform)] = waveform + else: + samples = waveform + + samples = samples.reshape(1, -1).astype(np.float32) + + inputs = [ + protocol_client.InferInput("reference_wav", samples.shape, np_to_triton_dtype(samples.dtype)), + protocol_client.InferInput("reference_wav_len", lengths.shape, np_to_triton_dtype(lengths.dtype)), + protocol_client.InferInput("reference_text", [1, 1], "BYTES"), + protocol_client.InferInput("target_text", [1, 1], "BYTES"), + ] + inputs[0].set_data_from_numpy(samples) + inputs[1].set_data_from_numpy(lengths) + + input_data_numpy = np.array([reference_text], dtype=object) + input_data_numpy = input_data_numpy.reshape((1, 1)) + inputs[2].set_data_from_numpy(input_data_numpy) + + input_data_numpy = np.array([target_text], dtype=object) + input_data_numpy = input_data_numpy.reshape((1, 1)) + inputs[3].set_data_from_numpy(input_data_numpy) + + outputs = [protocol_client.InferRequestedOutput("waveform")] + + sequence_id = 100000000 + i + task_id * 10 + start = time.time() + response = await triton_client.infer(model_name, inputs, request_id=str(sequence_id), outputs=outputs) + + audio = response.as_numpy("waveform").reshape(-1) + + end = time.time() - start + + audio_save_path = os.path.join(audio_save_dir, f"{item['target_audio_path']}.wav") + sf.write(audio_save_path, audio, save_sample_rate, "PCM_16") + + actual_duration = len(audio) / save_sample_rate + latency_data.append((end, actual_duration)) + total_duration += actual_duration + + return total_duration, latency_data + + +def load_manifests(manifest_path): + with open(manifest_path, "r") as f: + manifest_list = [] + for line in f: + assert len(line.strip().split("|")) == 4 + utt, prompt_text, prompt_wav, gt_text = line.strip().split("|") + utt = Path(utt).stem + # gt_wav = os.path.join(os.path.dirname(manifest_path), "wavs", utt + ".wav") + if not os.path.isabs(prompt_wav): + prompt_wav = os.path.join(os.path.dirname(manifest_path), prompt_wav) + manifest_list.append( + { + "audio_filepath": prompt_wav, + "reference_text": prompt_text, + "target_text": gt_text, + "target_audio_path": utt, + } + ) + return manifest_list + + +def split_data(data, k): + n = len(data) + if n < k: + print(f"Warning: the length of the input list ({n}) is less than k ({k}). Setting k to {n}.") + k = n + + quotient = n // k + remainder = n % k + + result = [] + start = 0 + for i in range(k): + if i < remainder: + end = start + quotient + 1 + else: + end = start + quotient + + result.append(data[start:end]) + start = end + + return result + + +async def main(): + args = get_args() + url = f"{args.server_addr}:{args.server_port}" + + triton_client = grpcclient.InferenceServerClient(url=url, verbose=False) + protocol_client = grpcclient + + if args.reference_audio: + args.num_tasks = 1 + args.log_interval = 1 + manifest_item_list = [ + { + "reference_text": args.reference_text, + "target_text": args.target_text, + "audio_filepath": args.reference_audio, + "target_audio_path": "test", + } + ] + elif args.huggingface_dataset: + import datasets + + dataset = datasets.load_dataset( + args.huggingface_dataset, + split=args.split_name, + trust_remote_code=True, + ) + manifest_item_list = [] + for i in range(len(dataset)): + manifest_item_list.append( + { + "audio_filepath": dataset[i]["prompt_audio"], + "reference_text": dataset[i]["prompt_text"], + "target_audio_path": dataset[i]["id"], + "target_text": dataset[i]["target_text"], + } + ) + else: + manifest_item_list = load_manifests(args.manifest_path) + + args.num_tasks = min(args.num_tasks, len(manifest_item_list)) + manifest_item_list = split_data(manifest_item_list, args.num_tasks) + + os.makedirs(args.log_dir, exist_ok=True) + tasks = [] + start_time = time.time() + for i in range(args.num_tasks): + task = asyncio.create_task( + send( + manifest_item_list[i], + name=f"task-{i}", + triton_client=triton_client, + protocol_client=protocol_client, + log_interval=args.log_interval, + model_name=args.model_name, + audio_save_dir=args.log_dir, + padding_duration=1, + save_sample_rate=24000, + ) + ) + tasks.append(task) + + ans_list = await asyncio.gather(*tasks) + + end_time = time.time() + elapsed = end_time - start_time + + total_duration = 0.0 + latency_data = [] + for ans in ans_list: + total_duration += ans[0] + latency_data += ans[1] + + rtf = elapsed / total_duration + + s = f"RTF: {rtf:.4f}\n" + s += f"total_duration: {total_duration:.3f} seconds\n" + s += f"({total_duration / 3600:.2f} hours)\n" + s += f"processing time: {elapsed:.3f} seconds ({elapsed / 3600:.2f} hours)\n" + + latency_list = [chunk_end for (chunk_end, chunk_duration) in latency_data] + latency_ms = sum(latency_list) / float(len(latency_list)) * 1000.0 + latency_variance = np.var(latency_list, dtype=np.float64) * 1000.0 + s += f"latency_variance: {latency_variance:.2f}\n" + s += f"latency_50_percentile_ms: {np.percentile(latency_list, 50) * 1000.0:.2f}\n" + s += f"latency_90_percentile_ms: {np.percentile(latency_list, 90) * 1000.0:.2f}\n" + s += f"latency_95_percentile_ms: {np.percentile(latency_list, 95) * 1000.0:.2f}\n" + s += f"latency_99_percentile_ms: {np.percentile(latency_list, 99) * 1000.0:.2f}\n" + s += f"average_latency_ms: {latency_ms:.2f}\n" + + print(s) + if args.manifest_path: + name = Path(args.manifest_path).stem + elif args.split_name: + name = args.split_name + with open(f"{args.log_dir}/rtf-{name}.txt", "w") as f: + f.write(s) + + stats = await triton_client.get_inference_statistics(model_name="", as_json=True) + write_triton_stats(stats, f"{args.log_dir}/stats_summary-{name}.txt") + + metadata = await triton_client.get_model_config(model_name=args.model_name, as_json=True) + with open(f"{args.log_dir}/model_config-{name}.json", "w") as f: + json.dump(metadata, f, indent=4) + + +if __name__ == "__main__": + asyncio.run(main()) diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/client_http.py b/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/client_http.py new file mode 100644 index 0000000..804ba5c --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/client_http.py @@ -0,0 +1,143 @@ +# Copyright 2025, NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of NVIDIA CORPORATION nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY +# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +import argparse + +import numpy as np +import requests +import soundfile as sf + + +def get_args(): + parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter) + + parser.add_argument( + "--server-url", + type=str, + default="localhost:8000", + help="Address of the server", + ) + + parser.add_argument( + "--reference-audio", + type=str, + default="../../infer/examples/basic/basic_ref_en.wav", + help="Path to a single audio file. It can't be specified at the same time with --manifest-dir", + ) + + parser.add_argument( + "--reference-text", + type=str, + default="Some call me nature, others call me mother nature.", + help="", + ) + + parser.add_argument( + "--target-text", + type=str, + default="I don't really care what you call me. I've been a silent spectator, watching species evolve, empires rise and fall. But always remember, I am mighty and enduring.", + help="", + ) + + parser.add_argument( + "--model-name", + type=str, + default="f5_tts", + choices=["f5_tts", "spark_tts"], + help="triton model_repo module name to request", + ) + + parser.add_argument( + "--output-audio", + type=str, + default="output.wav", + help="Path to save the output audio", + ) + return parser.parse_args() + + +def prepare_request( + samples, + reference_text, + target_text, + sample_rate=24000, + audio_save_dir: str = "./", +): + assert len(samples.shape) == 1, "samples should be 1D" + lengths = np.array([[len(samples)]], dtype=np.int32) + samples = samples.reshape(1, -1).astype(np.float32) + + data = { + "inputs": [ + {"name": "reference_wav", "shape": samples.shape, "datatype": "FP32", "data": samples.tolist()}, + { + "name": "reference_wav_len", + "shape": lengths.shape, + "datatype": "INT32", + "data": lengths.tolist(), + }, + {"name": "reference_text", "shape": [1, 1], "datatype": "BYTES", "data": [reference_text]}, + {"name": "target_text", "shape": [1, 1], "datatype": "BYTES", "data": [target_text]}, + ] + } + + return data + + +def load_audio(wav_path, target_sample_rate=24000): + assert target_sample_rate == 24000, "hard coding in server" + if isinstance(wav_path, dict): + samples = wav_path["array"] + sample_rate = wav_path["sampling_rate"] + else: + samples, sample_rate = sf.read(wav_path) + if sample_rate != target_sample_rate: + from scipy.signal import resample + + num_samples = int(len(samples) * (target_sample_rate / sample_rate)) + samples = resample(samples, num_samples) + return samples, target_sample_rate + + +if __name__ == "__main__": + args = get_args() + server_url = args.server_url + if not server_url.startswith(("http://", "https://")): + server_url = f"http://{server_url}" + + url = f"{server_url}/v2/models/{args.model_name}/infer" + samples, sr = load_audio(args.reference_audio) + assert sr == 24000, "sample rate hardcoded in server" + + samples = np.array(samples, dtype=np.float32) + data = prepare_request(samples, args.reference_text, args.target_text) + + rsp = requests.post( + url, headers={"Content-Type": "application/json"}, json=data, verify=False, params={"request_id": "0"} + ) + result = rsp.json() + audio = result["outputs"][0]["data"] + audio = np.array(audio, dtype=np.float32) + sf.write(args.output_audio, audio, 24000, "PCM_16") diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/docker-compose.yml b/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/docker-compose.yml new file mode 100644 index 0000000..1519591 --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/docker-compose.yml @@ -0,0 +1,20 @@ +services: + tts: + image: soar97/triton-f5-tts:24.12 + shm_size: '1gb' + ports: + - "8000:8000" + - "8001:8001" + - "8002:8002" + environment: + - PYTHONIOENCODING=utf-8 + - MODEL_ID=${MODEL_ID} + deploy: + resources: + reservations: + devices: + - driver: nvidia + device_ids: ['0'] + capabilities: [gpu] + command: > + /bin/bash -c "pip install vocos && rm -rf F5-TTS && git clone https://github.com/SWivid/F5-TTS.git && cd F5-TTS/src/f5_tts/runtime/triton_trtllm/ && bash run.sh 0 4 $MODEL" diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/model_repo_f5_tts/f5_tts/1/f5_tts_trtllm.py b/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/model_repo_f5_tts/f5_tts/1/f5_tts_trtllm.py new file mode 100644 index 0000000..cace219 --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/model_repo_f5_tts/f5_tts/1/f5_tts_trtllm.py @@ -0,0 +1,430 @@ +import math +import os +import time +from functools import wraps +from typing import List, Optional + +import tensorrt as trt +import tensorrt_llm +import torch +import torch.nn as nn +import torch.nn.functional as F +from tensorrt_llm._utils import str_dtype_to_torch, trt_dtype_to_torch +from tensorrt_llm.logger import logger +from tensorrt_llm.runtime.session import Session + + +def remove_tensor_padding(input_tensor, input_tensor_lengths=None): + # Audio tensor case: batch, seq_len, feature_len + # position_ids case: batch, seq_len + assert input_tensor_lengths is not None, "input_tensor_lengths must be provided for 3D input_tensor" + + # Initialize a list to collect valid sequences + valid_sequences = [] + + for i in range(input_tensor.shape[0]): + valid_length = input_tensor_lengths[i] + valid_sequences.append(input_tensor[i, :valid_length]) + + # Concatenate all valid sequences along the batch dimension + output_tensor = torch.cat(valid_sequences, dim=0).contiguous() + return output_tensor + + +class TextEmbedding(nn.Module): + def __init__(self, text_num_embeds, text_dim, conv_layers=0, conv_mult=2, precompute_max_pos=4096): + super().__init__() + self.text_embed = nn.Embedding(text_num_embeds + 1, text_dim) # use 0 as filler token + self.register_buffer("freqs_cis", precompute_freqs_cis(text_dim, precompute_max_pos), persistent=False) + self.text_blocks = nn.Sequential(*[ConvNeXtV2Block(text_dim, text_dim * conv_mult) for _ in range(conv_layers)]) + + def forward(self, text): + # only keep tensors with value not -1 + text_mask = text != -1 + text_pad_cut_off_index = text_mask.sum(dim=1).max() + + text = text[:, :text_pad_cut_off_index] + text = self.text_embed(text) + text = text + self.freqs_cis[: text.shape[1], :] + for block in self.text_blocks: + text = block(text) + # padding text to the original length + # text shape: B,seq_len,C + # pad at the second dimension + text = F.pad(text, (0, 0, 0, text_mask.shape[1] - text.shape[1], 0, 0), value=0) + return text + + +class GRN(nn.Module): + def __init__(self, dim): + super().__init__() + self.gamma = nn.Parameter(torch.zeros(1, 1, dim)) + self.beta = nn.Parameter(torch.zeros(1, 1, dim)) + + def forward(self, x): + Gx = torch.norm(x, p=2, dim=1, keepdim=True) + Nx = Gx / (Gx.mean(dim=-1, keepdim=True) + 1e-6) + return self.gamma * (x * Nx) + self.beta + x + + +class ConvNeXtV2Block(nn.Module): + def __init__( + self, + dim: int, + intermediate_dim: int, + dilation: int = 1, + ): + super().__init__() + padding = (dilation * (7 - 1)) // 2 + self.dwconv = nn.Conv1d( + dim, dim, kernel_size=7, padding=padding, groups=dim, dilation=dilation + ) # depthwise conv + self.norm = nn.LayerNorm(dim, eps=1e-6) + self.pwconv1 = nn.Linear(dim, intermediate_dim) # pointwise/1x1 convs, implemented with linear layers + self.act = nn.GELU() + self.grn = GRN(intermediate_dim) + self.pwconv2 = nn.Linear(intermediate_dim, dim) + + def forward(self, x: torch.Tensor) -> torch.Tensor: + residual = x + x = x.transpose(1, 2) # b n d -> b d n + x = self.dwconv(x) + x = x.transpose(1, 2) # b d n -> b n d + x = self.norm(x) + x = self.pwconv1(x) + x = self.act(x) + x = self.grn(x) + x = self.pwconv2(x) + return residual + x + + +def precompute_freqs_cis(dim: int, end: int, theta: float = 10000.0, theta_rescale_factor=1.0): + # proposed by reddit user bloc97, to rescale rotary embeddings to longer sequence length without fine-tuning + # has some connection to NTK literature + # https://www.reddit.com/r/LocalLLaMA/comments/14lz7j5/ntkaware_scaled_rope_allows_llama_models_to_have/ + # https://github.com/lucidrains/rotary-embedding-torch/blob/main/rotary_embedding_torch/rotary_embedding_torch.py + theta *= theta_rescale_factor ** (dim / (dim - 2)) + freqs = 1.0 / (theta ** (torch.arange(0, dim, 2)[: (dim // 2)].float() / dim)) + t = torch.arange(end, device=freqs.device) # type: ignore + freqs = torch.outer(t, freqs).float() # type: ignore + freqs_cos = torch.cos(freqs) # real part + freqs_sin = torch.sin(freqs) # imaginary part + return torch.cat([freqs_cos, freqs_sin], dim=-1) + + +def load_checkpoint(ckpt_path, use_ema=True): + checkpoint = torch.load(ckpt_path, weights_only=True) + if use_ema: + checkpoint["model_state_dict"] = { + k.replace("ema_model.", ""): v + for k, v in checkpoint["ema_model_state_dict"].items() + if k not in ["initted", "step"] + } + dict_state = checkpoint["model_state_dict"] + text_embed_dict = {} + for key in dict_state.keys(): + # transformer.text_embed.text_embed.weight -> text_embed.weight + if "text_embed" in key: + text_embed_dict[key.replace("transformer.text_embed.", "")] = dict_state[key] + return text_embed_dict + + +class F5TTS(object): + def __init__( + self, + config, + debug_mode=True, + stream: Optional[torch.cuda.Stream] = None, + tllm_model_dir: Optional[str] = None, + model_path: Optional[str] = None, + vocab_size: Optional[int] = None, + ): + self.dtype = config["pretrained_config"]["dtype"] + + rank = tensorrt_llm.mpi_rank() + world_size = config["pretrained_config"]["mapping"]["world_size"] + cp_size = config["pretrained_config"]["mapping"]["cp_size"] + tp_size = config["pretrained_config"]["mapping"]["tp_size"] + pp_size = config["pretrained_config"]["mapping"]["pp_size"] + assert pp_size == 1 + self.mapping = tensorrt_llm.Mapping( + world_size=world_size, rank=rank, cp_size=cp_size, tp_size=tp_size, pp_size=1, gpus_per_node=1 + ) + + local_rank = rank % self.mapping.gpus_per_node + self.device = torch.device(f"cuda:{local_rank}") + + torch.cuda.set_device(self.device) + + self.stream = stream + if self.stream is None: + self.stream = torch.cuda.Stream(self.device) + torch.cuda.set_stream(self.stream) + + engine_file = os.path.join(tllm_model_dir, f"rank{rank}.engine") + logger.info(f"Loading engine from {engine_file}") + with open(engine_file, "rb") as f: + engine_buffer = f.read() + + assert engine_buffer is not None + + self.session = Session.from_serialized_engine(engine_buffer) + + self.debug_mode = debug_mode + + self.inputs = {} + self.outputs = {} + self.buffer_allocated = False + + expected_tensor_names = ["noise", "cond", "time", "rope_cos", "rope_sin", "input_lengths", "denoised"] + + found_tensor_names = [self.session.engine.get_tensor_name(i) for i in range(self.session.engine.num_io_tensors)] + if not self.debug_mode and set(expected_tensor_names) != set(found_tensor_names): + logger.error( + f"The following expected tensors are not found: {set(expected_tensor_names).difference(set(found_tensor_names))}" + ) + logger.error( + f"Those tensors in engine are not expected: {set(found_tensor_names).difference(set(expected_tensor_names))}" + ) + logger.error(f"Expected tensor names: {expected_tensor_names}") + logger.error(f"Found tensor names: {found_tensor_names}") + raise RuntimeError("Tensor names in engine are not the same as expected.") + if self.debug_mode: + self.debug_tensors = list(set(found_tensor_names) - set(expected_tensor_names)) + + self.max_mel_len = 4096 + self.text_embedding = TextEmbedding( + text_num_embeds=vocab_size, text_dim=512, conv_layers=4, precompute_max_pos=self.max_mel_len + ).to(self.device) + self.text_embedding.load_state_dict(load_checkpoint(model_path), strict=True) + + self.target_audio_sample_rate = 24000 + self.target_rms = 0.15 # target rms for audio + self.n_fft = 1024 + self.win_length = 1024 + self.hop_length = 256 + self.n_mel_channels = 100 + # self.max_mel_len = 3000 + self.head_dim = 64 + self.base_rescale_factor = 1.0 + self.interpolation_factor = 1.0 + base = 10000.0 * self.base_rescale_factor ** (self.head_dim / (self.head_dim - 2)) + inv_freq = 1.0 / (base ** (torch.arange(0, self.head_dim, 2).float() / self.head_dim)) + freqs = torch.outer(torch.arange(self.max_mel_len, dtype=torch.float32), inv_freq) / self.interpolation_factor + self.freqs = freqs.repeat_interleave(2, dim=-1).unsqueeze(0) + self.rope_cos = self.freqs.cos().half() + self.rope_sin = self.freqs.sin().half() + self.nfe_steps = 16 + t = torch.linspace(0, 1, self.nfe_steps + 1, dtype=torch.float32) + time_step = t + (-1.0) * (torch.cos(torch.pi * 0.5 * t) - 1 + t) + delta_t = torch.diff(time_step) + # WAR: hard coding 256 here + tmp_dim = 256 + time_expand = torch.zeros((1, self.nfe_steps, tmp_dim), dtype=torch.float32) + half_dim = tmp_dim // 2 + emb_factor = math.log(10000) / (half_dim - 1) + emb_factor = 1000.0 * torch.exp(torch.arange(half_dim, dtype=torch.float32) * -emb_factor) + for i in range(self.nfe_steps): + emb = time_step[i] * emb_factor + time_expand[:, i, :] = torch.cat((emb.sin(), emb.cos()), dim=-1) + self.time_expand = time_expand.to(self.device) + self.delta_t = torch.cat((delta_t, delta_t), dim=0).contiguous().to(self.device) + + def _tensor_dtype(self, name): + # return torch dtype given tensor name for convenience + dtype = trt_dtype_to_torch(self.session.engine.get_tensor_dtype(name)) + return dtype + + def _setup(self, batch_size, seq_len): + for i in range(self.session.engine.num_io_tensors): + name = self.session.engine.get_tensor_name(i) + if self.session.engine.get_tensor_mode(name) == trt.TensorIOMode.OUTPUT: + shape = list(self.session.engine.get_tensor_shape(name)) + shape[0] = batch_size + shape[1] = seq_len + self.outputs[name] = torch.empty(shape, dtype=self._tensor_dtype(name), device=self.device) + + self.buffer_allocated = True + + def cuda_stream_guard(func): + """Sync external stream and set current stream to the one bound to the session. Reset on exit.""" + + @wraps(func) + def wrapper(self, *args, **kwargs): + external_stream = torch.cuda.current_stream() + if external_stream != self.stream: + external_stream.synchronize() + torch.cuda.set_stream(self.stream) + ret = func(self, *args, **kwargs) + if external_stream != self.stream: + self.stream.synchronize() + torch.cuda.set_stream(external_stream) + return ret + + return wrapper + + @cuda_stream_guard + def forward( + self, + noise: torch.Tensor, + cond: torch.Tensor, + time_expand: torch.Tensor, + rope_cos: torch.Tensor, + rope_sin: torch.Tensor, + input_lengths: torch.Tensor, + delta_t: torch.Tensor, + use_perf: bool = False, + ): + if use_perf: + torch.cuda.nvtx.range_push("flow matching") + cfg_strength = 2.0 + batch_size = noise.shape[0] + half_batch = batch_size // 2 + noise_half = noise[:half_batch] # Store the initial half of noise + + input_type = str_dtype_to_torch(self.dtype) + + # Keep a copy of the initial tensors + cond = cond.to(input_type) + rope_cos = rope_cos.to(input_type) + rope_sin = rope_sin.to(input_type) + input_lengths = input_lengths.to(str_dtype_to_torch("int32")) + + # Instead of iteratively updating noise within a single model context, + # we'll do a single forward pass for each iteration with fresh context setup + for i in range(self.nfe_steps): + # Re-setup the buffers for clean execution + self._setup(batch_size, noise.shape[1]) + if not self.buffer_allocated: + raise RuntimeError("Buffer not allocated, please call setup first!") + + # Re-create combined noises for this iteration + current_noise = torch.cat([noise_half, noise_half], dim=0).to(input_type) + + # Get time step for this iteration + current_time = time_expand[:, i].to(input_type) + + # Create fresh input dictionary for this iteration + current_inputs = { + "noise": current_noise, + "cond": cond, + "time": current_time, + "rope_cos": rope_cos, + "rope_sin": rope_sin, + "input_lengths": input_lengths, + } + + # Update inputs and set shapes + self.inputs.clear() # Clear previous inputs + self.inputs.update(**current_inputs) + self.session.set_shapes(self.inputs) + + if use_perf: + torch.cuda.nvtx.range_push(f"execute {i}") + ok = self.session.run(self.inputs, self.outputs, self.stream.cuda_stream) + assert ok, "Failed to execute model" + # self.session.context.execute_async_v3(self.stream.cuda_stream) + if use_perf: + torch.cuda.nvtx.range_pop() + # Process results + t_scale = delta_t[i].unsqueeze(0).to(input_type) + + # Extract predictions + pred_cond = self.outputs["denoised"][:half_batch] + pred_uncond = self.outputs["denoised"][half_batch:] + + # Apply classifier-free guidance with safeguards + guidance = pred_cond + (pred_cond - pred_uncond) * cfg_strength + # Calculate update for noise + noise_half = noise_half + guidance * t_scale + if use_perf: + torch.cuda.nvtx.range_pop() + return noise_half + + def sample( + self, + text_pad_sequence: torch.Tensor, + ref_mel_batch: torch.Tensor, + ref_mel_len_batch: torch.Tensor, + estimated_reference_target_mel_len: List[int], + remove_input_padding: bool = False, + use_perf: bool = False, + ): + if use_perf: + torch.cuda.nvtx.range_push("text embedding") + batch = text_pad_sequence.shape[0] + max_seq_len = ref_mel_batch.shape[1] + + text_pad_sequence_drop = torch.cat( + (text_pad_sequence, torch.zeros((1, text_pad_sequence.shape[1]), dtype=torch.int32).to(self.device)), dim=0 + ) + + text_embedding_drop_list = [] + for i in range(batch + 1): + text_embedding_drop_list.append(self.text_embedding(text_pad_sequence_drop[i].unsqueeze(0).to(self.device))) + text_embedding_drop_condition = torch.cat(text_embedding_drop_list, dim=0) + + text_embedding = text_embedding_drop_condition[:-1] + # text_embedding_drop B,T,C batch should be the same + text_embedding_drop = text_embedding_drop_condition[-1].unsqueeze(0).repeat(batch, 1, 1) + + noise = torch.randn_like(ref_mel_batch).to(self.device) + rope_cos = self.rope_cos[:, :max_seq_len, :].float().repeat(batch, 1, 1) + rope_sin = self.rope_sin[:, :max_seq_len, :].float().repeat(batch, 1, 1) + + cat_mel_text = torch.cat((ref_mel_batch, text_embedding), dim=-1) + cat_mel_text_drop = torch.cat( + ( + torch.zeros((batch, max_seq_len, self.n_mel_channels), dtype=torch.float32).to(self.device), + text_embedding_drop, + ), + dim=-1, + ) + + time_expand = self.time_expand.repeat(2 * batch, 1, 1).contiguous() + + # Convert estimated_reference_target_mel_len to tensor + input_lengths = torch.tensor(estimated_reference_target_mel_len, dtype=torch.int32) + + # combine above along the batch dimension + inputs = { + "noise": torch.cat((noise, noise), dim=0).contiguous(), + "cond": torch.cat((cat_mel_text, cat_mel_text_drop), dim=0).contiguous(), + "time_expand": time_expand, + "rope_cos": torch.cat((rope_cos, rope_cos), dim=0).contiguous(), + "rope_sin": torch.cat((rope_sin, rope_sin), dim=0).contiguous(), + "input_lengths": torch.cat((input_lengths, input_lengths), dim=0).contiguous(), + "delta_t": self.delta_t, + } + if use_perf and remove_input_padding: + torch.cuda.nvtx.range_push("remove input padding") + if remove_input_padding: + max_seq_len = inputs["cond"].shape[1] + inputs["noise"] = remove_tensor_padding(inputs["noise"], inputs["input_lengths"]) + inputs["cond"] = remove_tensor_padding(inputs["cond"], inputs["input_lengths"]) + # for time_expand, convert from B,D to B,T,D by repeat + inputs["time_expand"] = inputs["time_expand"].unsqueeze(1).repeat(1, max_seq_len, 1, 1) + inputs["time_expand"] = remove_tensor_padding(inputs["time_expand"], inputs["input_lengths"]) + inputs["rope_cos"] = remove_tensor_padding(inputs["rope_cos"], inputs["input_lengths"]) + inputs["rope_sin"] = remove_tensor_padding(inputs["rope_sin"], inputs["input_lengths"]) + if use_perf and remove_input_padding: + torch.cuda.nvtx.range_pop() + for key in inputs: + inputs[key] = inputs[key].to(self.device) + if use_perf: + torch.cuda.nvtx.range_pop() + start_time = time.time() + denoised = self.forward(**inputs, use_perf=use_perf) + cost_time = time.time() - start_time + if use_perf and remove_input_padding: + torch.cuda.nvtx.range_push("remove input padding output") + if remove_input_padding: + denoised_list = [] + start_idx = 0 + for i in range(batch): + denoised_list.append(denoised[start_idx : start_idx + inputs["input_lengths"][i]]) + start_idx += inputs["input_lengths"][i] + if use_perf and remove_input_padding: + torch.cuda.nvtx.range_pop() + return denoised_list, cost_time + return denoised, cost_time diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/model_repo_f5_tts/f5_tts/1/model.py b/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/model_repo_f5_tts/f5_tts/1/model.py new file mode 100644 index 0000000..6926d87 --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/model_repo_f5_tts/f5_tts/1/model.py @@ -0,0 +1,278 @@ +# Copyright 2025, NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of NVIDIA CORPORATION nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY +# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +import json +import os + +import jieba +import torch +import torch.nn.functional as F +import torchaudio +import triton_python_backend_utils as pb_utils +from f5_tts_trtllm import F5TTS +from pypinyin import Style, lazy_pinyin +from torch.nn.utils.rnn import pad_sequence +from torch.utils.dlpack import from_dlpack, to_dlpack + + +def get_tokenizer(vocab_file_path: str): + """ + tokenizer - "pinyin" do g2p for only chinese characters, need .txt vocab_file + - "char" for char-wise tokenizer, need .txt vocab_file + - "byte" for utf-8 tokenizer + - "custom" if you're directly passing in a path to the vocab.txt you want to use + vocab_size - if use "pinyin", all available pinyin types, common alphabets (also those with accent) and symbols + - if use "char", derived from unfiltered character & symbol counts of custom dataset + - if use "byte", set to 256 (unicode byte range) + """ + with open(vocab_file_path, "r", encoding="utf-8") as f: + vocab_char_map = {} + for i, char in enumerate(f): + vocab_char_map[char[:-1]] = i + vocab_size = len(vocab_char_map) + return vocab_char_map, vocab_size + + +def convert_char_to_pinyin(reference_target_texts_list, polyphone=True): + final_reference_target_texts_list = [] + custom_trans = str.maketrans( + {";": ",", "“": '"', "”": '"', "‘": "'", "’": "'"} + ) # add custom trans here, to address oov + + def is_chinese(c): + return "\u3100" <= c <= "\u9fff" # common chinese characters + + for text in reference_target_texts_list: + char_list = [] + text = text.translate(custom_trans) + for seg in jieba.cut(text): + seg_byte_len = len(bytes(seg, "UTF-8")) + if seg_byte_len == len(seg): # if pure alphabets and symbols + if char_list and seg_byte_len > 1 and char_list[-1] not in " :'\"": + char_list.append(" ") + char_list.extend(seg) + elif polyphone and seg_byte_len == 3 * len(seg): # if pure east asian characters + seg_ = lazy_pinyin(seg, style=Style.TONE3, tone_sandhi=True) + for i, c in enumerate(seg): + if is_chinese(c): + char_list.append(" ") + char_list.append(seg_[i]) + else: # if mixed characters, alphabets and symbols + for c in seg: + if ord(c) < 256: + char_list.extend(c) + elif is_chinese(c): + char_list.append(" ") + char_list.extend(lazy_pinyin(c, style=Style.TONE3, tone_sandhi=True)) + else: + char_list.append(c) + final_reference_target_texts_list.append(char_list) + + return final_reference_target_texts_list + + +def list_str_to_idx( + text: list[str] | list[list[str]], + vocab_char_map: dict[str, int], # {char: idx} + padding_value=-1, +): # noqa: F722 + list_idx_tensors = [torch.tensor([vocab_char_map.get(c, 0) for c in t]) for t in text] # pinyin or char style + return list_idx_tensors + + +class TritonPythonModel: + def initialize(self, args): + self.use_perf = True + self.device = torch.device("cuda") + self.target_audio_sample_rate = 24000 + self.target_rms = 0.15 # target rms for audio + self.n_fft = 1024 + self.win_length = 1024 + self.hop_length = 256 + self.n_mel_channels = 100 + self.max_mel_len = 3000 + self.head_dim = 64 + + parameters = json.loads(args["model_config"])["parameters"] + for key, value in parameters.items(): + parameters[key] = value["string_value"] + + self.vocab_char_map, self.vocab_size = get_tokenizer(parameters["vocab_file"]) + self.reference_sample_rate = int(parameters["reference_audio_sample_rate"]) + self.resampler = torchaudio.transforms.Resample(self.reference_sample_rate, self.target_audio_sample_rate) + + self.tllm_model_dir = parameters["tllm_model_dir"] + config_file = os.path.join(self.tllm_model_dir, "config.json") + with open(config_file) as f: + config = json.load(f) + self.model = F5TTS( + config, + debug_mode=False, + tllm_model_dir=self.tllm_model_dir, + model_path=parameters["model_path"], + vocab_size=self.vocab_size, + ) + + self.vocoder = parameters["vocoder"] + assert self.vocoder in ["vocos", "bigvgan"] + if self.vocoder == "vocos": + self.mel_stft = torchaudio.transforms.MelSpectrogram( + sample_rate=self.target_audio_sample_rate, + n_fft=self.n_fft, + win_length=self.win_length, + hop_length=self.hop_length, + n_mels=self.n_mel_channels, + power=1, + center=True, + normalized=False, + norm=None, + ).to(self.device) + self.compute_mel_fn = self.get_vocos_mel_spectrogram + elif self.vocoder == "bigvgan": + self.compute_mel_fn = self.get_bigvgan_mel_spectrogram + + def get_vocos_mel_spectrogram(self, waveform): + mel = self.mel_stft(waveform) + mel = mel.clamp(min=1e-5).log() + return mel.transpose(1, 2) + + def forward_vocoder(self, mel): + mel = mel.to(torch.float32).contiguous().cpu() + input_tensor_0 = pb_utils.Tensor.from_dlpack("mel", to_dlpack(mel)) + + inference_request = pb_utils.InferenceRequest( + model_name="vocoder", requested_output_names=["waveform"], inputs=[input_tensor_0] + ) + inference_response = inference_request.exec() + if inference_response.has_error(): + raise pb_utils.TritonModelException(inference_response.error().message()) + else: + waveform = pb_utils.get_output_tensor_by_name(inference_response, "waveform") + waveform = torch.utils.dlpack.from_dlpack(waveform.to_dlpack()).cpu() + + return waveform + + def execute(self, requests): + ( + reference_text_list, + target_text_list, + reference_target_texts_list, + estimated_reference_target_mel_len, + reference_mel_len, + ) = [], [], [], [], [] + mel_features_list = [] + if self.use_perf: + torch.cuda.nvtx.range_push("preprocess") + for request in requests: + wav_tensor = pb_utils.get_input_tensor_by_name(request, "reference_wav") + wav_lens = pb_utils.get_input_tensor_by_name(request, "reference_wav_len") + + reference_text = pb_utils.get_input_tensor_by_name(request, "reference_text").as_numpy() + reference_text = reference_text[0][0].decode("utf-8") + reference_text_list.append(reference_text) + target_text = pb_utils.get_input_tensor_by_name(request, "target_text").as_numpy() + target_text = target_text[0][0].decode("utf-8") + target_text_list.append(target_text) + + text = reference_text + target_text + reference_target_texts_list.append(text) + + wav = from_dlpack(wav_tensor.to_dlpack()) + wav_len = from_dlpack(wav_lens.to_dlpack()) + wav_len = wav_len.squeeze() + assert wav.shape[0] == 1, "Only support batch size 1 for now." + wav = wav[:, :wav_len] + + ref_rms = torch.sqrt(torch.mean(torch.square(wav))) + if ref_rms < self.target_rms: + wav = wav * self.target_rms / ref_rms + if self.reference_sample_rate != self.target_audio_sample_rate: + wav = self.resampler(wav) + wav = wav.to(self.device) + if self.use_perf: + torch.cuda.nvtx.range_push("compute_mel") + mel_features = self.compute_mel_fn(wav) + if self.use_perf: + torch.cuda.nvtx.range_pop() + mel_features_list.append(mel_features) + + reference_mel_len.append(mel_features.shape[1]) + estimated_reference_target_mel_len.append( + int( + mel_features.shape[1] * (1 + len(target_text.encode("utf-8")) / len(reference_text.encode("utf-8"))) + ) + ) + + max_seq_len = min(max(estimated_reference_target_mel_len), self.max_mel_len) + + batch = len(requests) + mel_features = torch.zeros((batch, max_seq_len, self.n_mel_channels), dtype=torch.float16).to(self.device) + for i, mel in enumerate(mel_features_list): + mel_features[i, : mel.shape[1], :] = mel + + reference_mel_len_tensor = torch.LongTensor(reference_mel_len).to(self.device) + + pinyin_list = convert_char_to_pinyin(reference_target_texts_list, polyphone=True) + text_pad_sequence = list_str_to_idx(pinyin_list, self.vocab_char_map) + + for i, item in enumerate(text_pad_sequence): + text_pad_sequence[i] = F.pad( + item, (0, estimated_reference_target_mel_len[i] - len(item)), mode="constant", value=-1 + ) + text_pad_sequence[i] += 1 # WAR: 0 is reserved for padding token, hard coding in F5-TTS + text_pad_sequence = pad_sequence(text_pad_sequence, padding_value=-1, batch_first=True).to(self.device) + text_pad_sequence = F.pad( + text_pad_sequence, (0, max_seq_len - text_pad_sequence.shape[1]), mode="constant", value=-1 + ) + if self.use_perf: + torch.cuda.nvtx.range_pop() + + denoised, cost_time = self.model.sample( + text_pad_sequence, + mel_features, + reference_mel_len_tensor, + estimated_reference_target_mel_len, + remove_input_padding=False, + use_perf=self.use_perf, + ) + if self.use_perf: + torch.cuda.nvtx.range_push("vocoder") + + responses = [] + for i in range(batch): + ref_me_len = reference_mel_len[i] + estimated_mel_len = estimated_reference_target_mel_len[i] + denoised_one_item = denoised[i, ref_me_len:estimated_mel_len, :].unsqueeze(0).transpose(1, 2) + audio = self.forward_vocoder(denoised_one_item) + rms = torch.sqrt(torch.mean(torch.square(audio))) + if rms < self.target_rms: + audio = audio * self.target_rms / rms + + audio = pb_utils.Tensor.from_dlpack("waveform", to_dlpack(audio)) + inference_response = pb_utils.InferenceResponse(output_tensors=[audio]) + responses.append(inference_response) + if self.use_perf: + torch.cuda.nvtx.range_pop() + return responses diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/model_repo_f5_tts/f5_tts/config.pbtxt b/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/model_repo_f5_tts/f5_tts/config.pbtxt new file mode 100644 index 0000000..07f0c78 --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/model_repo_f5_tts/f5_tts/config.pbtxt @@ -0,0 +1,81 @@ +# Copyright (c) 2025, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +name: "f5_tts" +backend: "python" +max_batch_size: 4 +dynamic_batching { + max_queue_delay_microseconds: 1000 +} +parameters [ + { + key: "vocab_file" + value: { string_value: "${vocab}"} + }, + { + key: "model_path", + value: {string_value:"${model}"} + }, + { + key: "tllm_model_dir", + value: {string_value:"${trtllm}"} + }, + { + key: "reference_audio_sample_rate", + value: {string_value:"24000"} + }, + { + key: "vocoder", + value: {string_value:"${vocoder}"} + } +] + +input [ + { + name: "reference_wav" + data_type: TYPE_FP32 + dims: [-1] + optional: True + }, + { + name: "reference_wav_len" + data_type: TYPE_INT32 + dims: [1] + optional: True + }, + { + name: "reference_text" + data_type: TYPE_STRING + dims: [1] + }, + { + name: "target_text" + data_type: TYPE_STRING + dims: [1] + } +] +output [ + { + name: "waveform" + data_type: TYPE_FP32 + dims: [ -1 ] + } +] + +instance_group [ + { + count: 1 + kind: KIND_GPU + } +] \ No newline at end of file diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/model_repo_f5_tts/vocoder/1/.gitkeep b/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/model_repo_f5_tts/vocoder/1/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/model_repo_f5_tts/vocoder/config.pbtxt b/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/model_repo_f5_tts/vocoder/config.pbtxt new file mode 100644 index 0000000..9a30b52 --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/model_repo_f5_tts/vocoder/config.pbtxt @@ -0,0 +1,32 @@ +name: "vocoder" +backend: "tensorrt" +default_model_filename: "vocoder.plan" +max_batch_size: 4 + +input [ + { + name: "mel" + data_type: TYPE_FP32 + dims: [ 100, -1 ] + } +] + +output [ + { + name: "waveform" + data_type: TYPE_FP32 + dims: [ -1 ] + } +] + +dynamic_batching { + preferred_batch_size: [1, 2, 4] + max_queue_delay_microseconds: 1 +} + +instance_group [ + { + count: 1 + kind: KIND_GPU + } +] \ No newline at end of file diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/patch/__init__.py b/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/patch/__init__.py new file mode 100644 index 0000000..ab19e9f --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/patch/__init__.py @@ -0,0 +1,199 @@ +# SPDX-FileCopyrightText: Copyright (c) 2022-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from .baichuan.model import BaichuanForCausalLM +from .bert.model import ( + BertForQuestionAnswering, + BertForSequenceClassification, + BertModel, + RobertaForQuestionAnswering, + RobertaForSequenceClassification, + RobertaModel, +) +from .bloom.model import BloomForCausalLM, BloomModel +from .chatglm.config import ChatGLMConfig +from .chatglm.model import ChatGLMForCausalLM, ChatGLMModel +from .cogvlm.config import CogVLMConfig +from .cogvlm.model import CogVLMForCausalLM +from .commandr.model import CohereForCausalLM +from .dbrx.config import DbrxConfig +from .dbrx.model import DbrxForCausalLM +from .deepseek_v1.model import DeepseekForCausalLM +from .deepseek_v2.model import DeepseekV2ForCausalLM +from .dit.model import DiT +from .eagle.model import EagleForCausalLM +from .enc_dec.model import DecoderModel, EncoderModel, WhisperEncoder +from .f5tts.model import F5TTS +from .falcon.config import FalconConfig +from .falcon.model import FalconForCausalLM, FalconModel +from .gemma.config import GEMMA2_ARCHITECTURE, GEMMA_ARCHITECTURE, GemmaConfig +from .gemma.model import GemmaForCausalLM +from .gpt.config import GPTConfig +from .gpt.model import GPTForCausalLM, GPTModel +from .gptj.config import GPTJConfig +from .gptj.model import GPTJForCausalLM, GPTJModel +from .gptneox.model import GPTNeoXForCausalLM, GPTNeoXModel +from .grok.model import GrokForCausalLM +from .llama.config import LLaMAConfig +from .llama.model import LLaMAForCausalLM, LLaMAModel +from .mamba.model import MambaForCausalLM +from .medusa.config import MedusaConfig +from .medusa.model import MedusaForCausalLm +from .mllama.model import MLLaMAModel +from .modeling_utils import PretrainedConfig, PretrainedModel, SpeculativeDecodingMode +from .mpt.model import MPTForCausalLM, MPTModel +from .nemotron_nas.model import DeciLMForCausalLM +from .opt.model import OPTForCausalLM, OPTModel +from .phi.model import PhiForCausalLM, PhiModel +from .phi3.model import Phi3ForCausalLM, Phi3Model +from .qwen.model import QWenForCausalLM +from .recurrentgemma.model import RecurrentGemmaForCausalLM +from .redrafter.model import ReDrafterForCausalLM + + +__all__ = [ + "BertModel", + "BertForQuestionAnswering", + "BertForSequenceClassification", + "RobertaModel", + "RobertaForQuestionAnswering", + "RobertaForSequenceClassification", + "BloomModel", + "BloomForCausalLM", + "DiT", + "DeepseekForCausalLM", + "FalconConfig", + "DeepseekV2ForCausalLM", + "FalconForCausalLM", + "FalconModel", + "GPTConfig", + "GPTModel", + "GPTForCausalLM", + "OPTForCausalLM", + "OPTModel", + "LLaMAConfig", + "LLaMAForCausalLM", + "LLaMAModel", + "MedusaConfig", + "MedusaForCausalLm", + "ReDrafterForCausalLM", + "GPTJConfig", + "GPTJModel", + "GPTJForCausalLM", + "GPTNeoXModel", + "GPTNeoXForCausalLM", + "PhiModel", + "PhiConfig", + "Phi3Model", + "Phi3Config", + "PhiForCausalLM", + "Phi3ForCausalLM", + "ChatGLMConfig", + "ChatGLMForCausalLM", + "ChatGLMModel", + "BaichuanForCausalLM", + "QWenConfigQWenForCausalLM", + "QWenModel", + "EncoderModel", + "DecoderModel", + "PretrainedConfig", + "PretrainedModel", + "WhisperEncoder", + "MambaForCausalLM", + "MambaConfig", + "MPTForCausalLM", + "MPTModel", + "SkyworkForCausalLM", + "GemmaConfig", + "GemmaForCausalLM", + "DbrxConfig", + "DbrxForCausalLM", + "RecurrentGemmaForCausalLM", + "CogVLMConfig", + "CogVLMForCausalLM", + "EagleForCausalLM", + "SpeculativeDecodingMode", + "CohereForCausalLM", + "MLLaMAModel", + "F5TTS", +] + +MODEL_MAP = { + "GPT2LMHeadModel": GPTForCausalLM, + "GPT2LMHeadCustomModel": GPTForCausalLM, + "GPTBigCodeForCausalLM": GPTForCausalLM, + "Starcoder2ForCausalLM": GPTForCausalLM, + "FuyuForCausalLM": GPTForCausalLM, + "Kosmos2ForConditionalGeneration": GPTForCausalLM, + "JAISLMHeadModel": GPTForCausalLM, + "GPTForCausalLM": GPTForCausalLM, + "NemotronForCausalLM": GPTForCausalLM, + "OPTForCausalLM": OPTForCausalLM, + "BloomForCausalLM": BloomForCausalLM, + "RWForCausalLM": FalconForCausalLM, + "FalconForCausalLM": FalconForCausalLM, + "PhiForCausalLM": PhiForCausalLM, + "Phi3ForCausalLM": Phi3ForCausalLM, + "Phi3VForCausalLM": Phi3ForCausalLM, + "Phi3SmallForCausalLM": Phi3ForCausalLM, + "PhiMoEForCausalLM": Phi3ForCausalLM, + "MambaForCausalLM": MambaForCausalLM, + "GPTNeoXForCausalLM": GPTNeoXForCausalLM, + "GPTJForCausalLM": GPTJForCausalLM, + "MPTForCausalLM": MPTForCausalLM, + "GLMModel": ChatGLMForCausalLM, + "ChatGLMModel": ChatGLMForCausalLM, + "ChatGLMForCausalLM": ChatGLMForCausalLM, + "LlamaForCausalLM": LLaMAForCausalLM, + "ExaoneForCausalLM": LLaMAForCausalLM, + "MistralForCausalLM": LLaMAForCausalLM, + "MixtralForCausalLM": LLaMAForCausalLM, + "ArcticForCausalLM": LLaMAForCausalLM, + "Grok1ModelForCausalLM": GrokForCausalLM, + "InternLMForCausalLM": LLaMAForCausalLM, + "InternLM2ForCausalLM": LLaMAForCausalLM, + "MedusaForCausalLM": MedusaForCausalLm, + "ReDrafterForCausalLM": ReDrafterForCausalLM, + "BaichuanForCausalLM": BaichuanForCausalLM, + "BaiChuanForCausalLM": BaichuanForCausalLM, + "SkyworkForCausalLM": LLaMAForCausalLM, + GEMMA_ARCHITECTURE: GemmaForCausalLM, + GEMMA2_ARCHITECTURE: GemmaForCausalLM, + "QWenLMHeadModel": QWenForCausalLM, + "QWenForCausalLM": QWenForCausalLM, + "Qwen2ForCausalLM": QWenForCausalLM, + "Qwen2MoeForCausalLM": QWenForCausalLM, + "Qwen2ForSequenceClassification": QWenForCausalLM, + "Qwen2VLForConditionalGeneration": QWenForCausalLM, + "WhisperEncoder": WhisperEncoder, + "EncoderModel": EncoderModel, + "DecoderModel": DecoderModel, + "DbrxForCausalLM": DbrxForCausalLM, + "RecurrentGemmaForCausalLM": RecurrentGemmaForCausalLM, + "CogVLMForCausalLM": CogVLMForCausalLM, + "DiT": DiT, + "DeepseekForCausalLM": DeepseekForCausalLM, + "DeciLMForCausalLM": DeciLMForCausalLM, + "DeepseekV2ForCausalLM": DeepseekV2ForCausalLM, + "EagleForCausalLM": EagleForCausalLM, + "CohereForCausalLM": CohereForCausalLM, + "MllamaForConditionalGeneration": MLLaMAModel, + "BertForQuestionAnswering": BertForQuestionAnswering, + "BertForSequenceClassification": BertForSequenceClassification, + "BertModel": BertModel, + "RobertaModel": RobertaModel, + "RobertaForQuestionAnswering": RobertaForQuestionAnswering, + "RobertaForSequenceClassification": RobertaForSequenceClassification, + "F5TTS": F5TTS, +} diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/patch/f5tts/model.py b/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/patch/f5tts/model.py new file mode 100644 index 0000000..2f8007f --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/patch/f5tts/model.py @@ -0,0 +1,222 @@ +from __future__ import annotations + +import os +import sys +from collections import OrderedDict + +import tensorrt as trt +from tensorrt_llm._common import default_net + +from ..._utils import str_dtype_to_trt +from ...functional import Tensor, concat +from ...layers import Linear +from ...module import Module, ModuleList +from ...plugin import current_all_reduce_helper +from ..modeling_utils import PretrainedConfig, PretrainedModel +from .modules import AdaLayerNormZero_Final, ConvPositionEmbedding, DiTBlock, TimestepEmbedding + + +current_file_path = os.path.abspath(__file__) +parent_dir = os.path.dirname(current_file_path) +sys.path.append(parent_dir) + + +class InputEmbedding(Module): + def __init__(self, mel_dim, text_dim, out_dim): + super().__init__() + self.proj = Linear(mel_dim * 2 + text_dim, out_dim) + self.conv_pos_embed = ConvPositionEmbedding(dim=out_dim) + + def forward(self, x, cond): + x = self.proj(concat([x, cond], dim=-1)) + return self.conv_pos_embed(x) + x + + +class F5TTS(PretrainedModel): + def __init__(self, config: PretrainedConfig): + super().__init__(config) + self.dtype = str_dtype_to_trt(config.dtype) + + self.time_embed = TimestepEmbedding(config.hidden_size) + self.input_embed = InputEmbedding(config.mel_dim, config.text_dim, config.hidden_size) + + self.dim = config.hidden_size + self.depth = config.num_hidden_layers + self.transformer_blocks = ModuleList( + [ + DiTBlock( + dim=self.dim, + heads=config.num_attention_heads, + dim_head=config.dim_head, + ff_mult=config.ff_mult, + dropout=config.dropout, + ) + for _ in range(self.depth) + ] + ) + + self.norm_out = AdaLayerNormZero_Final(config.hidden_size) # final modulation + self.proj_out = Linear(config.hidden_size, config.mel_dim) + + def forward( + self, + noise, # nosied input audio + cond, # masked cond audio + time, # time step + rope_cos, + rope_sin, + input_lengths, + scale=1.0, + ): + t = self.time_embed(time) + x = self.input_embed(noise, cond) + for block in self.transformer_blocks: + x = block(x, t, rope_cos=rope_cos, rope_sin=rope_sin, input_lengths=input_lengths, scale=scale) + denoise = self.proj_out(self.norm_out(x, t)) + denoise.mark_output("denoised", self.dtype) + return denoise + + def prepare_inputs(self, **kwargs): + max_batch_size = kwargs["max_batch_size"] + batch_size_range = [2, 2, max_batch_size] + mel_size = 100 + max_seq_len = 3000 + num_frames_range = [200, 2 * max_seq_len, max_seq_len * max_batch_size] + hidden_size = 512 + concat_feature_dim = mel_size + hidden_size + freq_embed_dim = 256 + head_dim = 64 + mapping = self.config.mapping + if mapping.tp_size > 1: + current_all_reduce_helper().set_workspace_tensor(mapping, 1) + if default_net().plugin_config.remove_input_padding: + noise = Tensor( + name="noise", + dtype=self.dtype, + shape=[-1, mel_size], + dim_range=OrderedDict( + [ + ("num_frames", [num_frames_range]), + ("n_mels", [mel_size]), + ] + ), + ) + cond = Tensor( + name="cond", + dtype=self.dtype, + shape=[-1, concat_feature_dim], + dim_range=OrderedDict( + [ + ("num_frames", [num_frames_range]), + ("embeded_length", [concat_feature_dim]), + ] + ), + ) + time = Tensor( + name="time", + dtype=self.dtype, + shape=[-1, freq_embed_dim], + dim_range=OrderedDict( + [ + ("num_frames", [num_frames_range]), + ("freq_dim", [freq_embed_dim]), + ] + ), + ) + rope_cos = Tensor( + name="rope_cos", + dtype=self.dtype, + shape=[-1, head_dim], + dim_range=OrderedDict( + [ + ("num_frames", [num_frames_range]), + ("head_dim", [head_dim]), + ] + ), + ) + rope_sin = Tensor( + name="rope_sin", + dtype=self.dtype, + shape=[-1, head_dim], + dim_range=OrderedDict( + [ + ("num_frames", [num_frames_range]), + ("head_dim", [head_dim]), + ] + ), + ) + + else: + noise = Tensor( + name="noise", + dtype=self.dtype, + shape=[-1, -1, mel_size], + dim_range=OrderedDict( + [ + ("batch_size", [batch_size_range]), + ("max_duratuion", [[100, max_seq_len // 2, max_seq_len]]), + ("n_mels", [mel_size]), + ] + ), + ) + cond = Tensor( + name="cond", + dtype=self.dtype, + shape=[-1, -1, concat_feature_dim], + dim_range=OrderedDict( + [ + ("batch_size", [batch_size_range]), + ("max_duratuion", [[100, max_seq_len // 2, max_seq_len]]), + ("embeded_length", [concat_feature_dim]), + ] + ), + ) + time = Tensor( + name="time", + dtype=self.dtype, + shape=[-1, freq_embed_dim], + dim_range=OrderedDict( + [ + ("batch_size", [batch_size_range]), + ("freq_dim", [freq_embed_dim]), + ] + ), + ) + rope_cos = Tensor( + name="rope_cos", + dtype=self.dtype, + shape=[-1, -1, head_dim], + dim_range=OrderedDict( + [ + ("batch_size", [batch_size_range]), + ("max_duratuion", [[100, max_seq_len // 2, max_seq_len]]), + ("head_dim", [head_dim]), + ] + ), + ) + rope_sin = Tensor( + name="rope_sin", + dtype=self.dtype, + shape=[-1, -1, head_dim], + dim_range=OrderedDict( + [ + ("batch_size", [batch_size_range]), + ("max_duratuion", [[100, max_seq_len // 2, max_seq_len]]), + ("head_dim", [head_dim]), + ] + ), + ) + input_lengths = Tensor( + name="input_lengths", + dtype=trt.int32, + shape=[-1], + dim_range=OrderedDict([("batch_size", [batch_size_range])]), + ) + return { + "noise": noise, + "cond": cond, + "time": time, + "rope_cos": rope_cos, + "rope_sin": rope_sin, + "input_lengths": input_lengths, + } diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/patch/f5tts/modules.py b/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/patch/f5tts/modules.py new file mode 100644 index 0000000..2121d28 --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/patch/f5tts/modules.py @@ -0,0 +1,412 @@ +from __future__ import annotations + +import math +from typing import Optional + +import numpy as np +import torch +import torch.nn.functional as F +from tensorrt_llm._common import default_net + +from ..._utils import str_dtype_to_trt, trt_dtype_to_np +from ...functional import ( + Tensor, + bert_attention, + cast, + chunk, + concat, + constant, + expand, + expand_dims, + expand_dims_like, + expand_mask, + gelu, + matmul, + permute, + shape, + silu, + slice, + softmax, + squeeze, + unsqueeze, + view, +) +from ...layers import ColumnLinear, Conv1d, LayerNorm, Linear, Mish, RowLinear +from ...module import Module + + +class FeedForward(Module): + def __init__(self, dim, dim_out=None, mult=4, dropout=0.0): + super().__init__() + inner_dim = int(dim * mult) + dim_out = dim_out if dim_out is not None else dim + + self.project_in = Linear(dim, inner_dim) + self.ff = Linear(inner_dim, dim_out) + + def forward(self, x): + return self.ff(gelu(self.project_in(x))) + + +class AdaLayerNormZero(Module): + def __init__(self, dim): + super().__init__() + + self.linear = Linear(dim, dim * 6) + self.norm = LayerNorm(dim, elementwise_affine=False, eps=1e-6) + + def forward(self, x, emb=None): + emb = self.linear(silu(emb)) + shift_msa, scale_msa, gate_msa, shift_mlp, scale_mlp, gate_mlp = chunk(emb, 6, dim=1) + x = self.norm(x) + ones = constant(np.ones(1, dtype=np.float32)).cast(x.dtype) + if default_net().plugin_config.remove_input_padding: + x = x * (ones + scale_msa) + shift_msa + else: + x = x * (ones + unsqueeze(scale_msa, 1)) + unsqueeze(shift_msa, 1) + return x, gate_msa, shift_mlp, scale_mlp, gate_mlp + + +class AdaLayerNormZero_Final(Module): + def __init__(self, dim): + super().__init__() + + self.linear = Linear(dim, dim * 2) + + self.norm = LayerNorm(dim, elementwise_affine=False, eps=1e-6) + + def forward(self, x, emb): + emb = self.linear(silu(emb)) + scale, shift = chunk(emb, 2, dim=1) + ones = constant(np.ones(1, dtype=np.float32)).cast(x.dtype) + if default_net().plugin_config.remove_input_padding: + x = self.norm(x) * (ones + scale) + shift + else: + x = self.norm(x) * unsqueeze((ones + scale), 1) + x = x + unsqueeze(shift, 1) + return x + + +class ConvPositionEmbedding(Module): + def __init__(self, dim, kernel_size=31, groups=16): + super().__init__() + assert kernel_size % 2 != 0 + self.conv1d1 = Conv1d(dim, dim, kernel_size, groups=groups, padding=kernel_size // 2) + self.conv1d2 = Conv1d(dim, dim, kernel_size, groups=groups, padding=kernel_size // 2) + self.mish = Mish() + + def forward(self, x, mask=None): # noqa: F722 + if default_net().plugin_config.remove_input_padding: + x = unsqueeze(x, 0) + x = permute(x, [0, 2, 1]) + x = self.mish(self.conv1d2(self.mish(self.conv1d1(x)))) + out = permute(x, [0, 2, 1]) + if default_net().plugin_config.remove_input_padding: + out = squeeze(out, 0) + return out + + +class Attention(Module): + def __init__( + self, + processor: AttnProcessor, + dim: int, + heads: int = 16, + dim_head: int = 64, + dropout: float = 0.0, + context_dim: Optional[int] = None, # if not None -> joint attention + context_pre_only=None, + ): + super().__init__() + + if not hasattr(F, "scaled_dot_product_attention"): + raise ImportError("Attention equires PyTorch 2.0, to use it, please upgrade PyTorch to 2.0.") + + self.processor = processor + + self.dim = dim # hidden_size + self.heads = heads + self.inner_dim = dim_head * heads + self.dropout = dropout + self.attention_head_size = dim_head + self.context_dim = context_dim + self.context_pre_only = context_pre_only + self.tp_size = 1 + self.num_attention_heads = heads // self.tp_size + self.num_attention_kv_heads = heads // self.tp_size # 8 + self.dtype = str_dtype_to_trt("float32") + self.attention_hidden_size = self.attention_head_size * self.num_attention_heads + self.to_q = ColumnLinear( + dim, + self.tp_size * self.num_attention_heads * self.attention_head_size, + bias=True, + dtype=self.dtype, + tp_group=None, + tp_size=self.tp_size, + ) + self.to_k = ColumnLinear( + dim, + self.tp_size * self.num_attention_heads * self.attention_head_size, + bias=True, + dtype=self.dtype, + tp_group=None, + tp_size=self.tp_size, + ) + self.to_v = ColumnLinear( + dim, + self.tp_size * self.num_attention_heads * self.attention_head_size, + bias=True, + dtype=self.dtype, + tp_group=None, + tp_size=self.tp_size, + ) + + if self.context_dim is not None: + self.to_k_c = Linear(context_dim, self.inner_dim) + self.to_v_c = Linear(context_dim, self.inner_dim) + if self.context_pre_only is not None: + self.to_q_c = Linear(context_dim, self.inner_dim) + + self.to_out = RowLinear( + self.tp_size * self.num_attention_heads * self.attention_head_size, + dim, + bias=True, + dtype=self.dtype, + tp_group=None, + tp_size=self.tp_size, + ) + + if self.context_pre_only is not None and not self.context_pre_only: + self.to_out_c = Linear(self.inner_dim, dim) + + def forward( + self, + x, # noised input x + rope_cos, + rope_sin, + input_lengths, + c=None, # context c + scale=1.0, + rope=None, + c_rope=None, # rotary position embedding for c + ) -> torch.Tensor: + if c is not None: + return self.processor(self, x, c=c, input_lengths=input_lengths, scale=scale, rope=rope, c_rope=c_rope) + else: + return self.processor( + self, x, rope_cos=rope_cos, rope_sin=rope_sin, input_lengths=input_lengths, scale=scale + ) + + +def rotate_every_two_3dim(tensor: Tensor) -> Tensor: + shape_tensor = concat( + [shape(tensor, i) / 2 if i == (tensor.ndim() - 1) else shape(tensor, i) for i in range(tensor.ndim())] + ) + if default_net().plugin_config.remove_input_padding: + assert tensor.ndim() == 2 + x1 = slice(tensor, [0, 0], shape_tensor, [1, 2]) + x2 = slice(tensor, [0, 1], shape_tensor, [1, 2]) + x1 = expand_dims(x1, 2) + x2 = expand_dims(x2, 2) + zero = constant(np.ascontiguousarray(np.zeros([1], dtype=trt_dtype_to_np(tensor.dtype)))) + x2 = zero - x2 + x = concat([x2, x1], 2) + out = view(x, concat([shape(x, 0), shape(x, 1) * 2])) + else: + assert tensor.ndim() == 3 + + x1 = slice(tensor, [0, 0, 0], shape_tensor, [1, 1, 2]) + x2 = slice(tensor, [0, 0, 1], shape_tensor, [1, 1, 2]) + x1 = expand_dims(x1, 3) + x2 = expand_dims(x2, 3) + zero = constant(np.ascontiguousarray(np.zeros([1], dtype=trt_dtype_to_np(tensor.dtype)))) + x2 = zero - x2 + x = concat([x2, x1], 3) + out = view(x, concat([shape(x, 0), shape(x, 1), shape(x, 2) * 2])) + + return out + + +def apply_rotary_pos_emb_3dim(x, rope_cos, rope_sin): + if default_net().plugin_config.remove_input_padding: + rot_dim = shape(rope_cos, -1) # 64 + new_t_shape = concat([shape(x, 0), rot_dim]) # (-1, 64) + x_ = slice(x, [0, 0], new_t_shape, [1, 1]) + end_dim = shape(x, -1) - shape(rope_cos, -1) + new_t_unrotated_shape = concat([shape(x, 0), end_dim]) # (2, -1, 960) + x_unrotated = slice(x, concat([0, rot_dim]), new_t_unrotated_shape, [1, 1]) + out = concat([x_ * rope_cos + rotate_every_two_3dim(x_) * rope_sin, x_unrotated], dim=-1) + else: + rot_dim = shape(rope_cos, 2) # 64 + new_t_shape = concat([shape(x, 0), shape(x, 1), rot_dim]) # (2, -1, 64) + x_ = slice(x, [0, 0, 0], new_t_shape, [1, 1, 1]) + end_dim = shape(x, 2) - shape(rope_cos, 2) + new_t_unrotated_shape = concat([shape(x, 0), shape(x, 1), end_dim]) # (2, -1, 960) + x_unrotated = slice(x, concat([0, 0, rot_dim]), new_t_unrotated_shape, [1, 1, 1]) + out = concat([x_ * rope_cos + rotate_every_two_3dim(x_) * rope_sin, x_unrotated], dim=-1) + return out + + +class AttnProcessor: + def __init__(self): + pass + + def __call__( + self, + attn, + x, # noised input x + rope_cos, + rope_sin, + input_lengths, + scale=1.0, + rope=None, + ) -> torch.FloatTensor: + query = attn.to_q(x) + key = attn.to_k(x) + value = attn.to_v(x) + # k,v,q all (2,1226,1024) + query = apply_rotary_pos_emb_3dim(query, rope_cos, rope_sin) + key = apply_rotary_pos_emb_3dim(key, rope_cos, rope_sin) + + # attention + inner_dim = key.shape[-1] + norm_factor = math.sqrt(attn.attention_head_size) + q_scaling = 1.0 / norm_factor + mask = None + if not default_net().plugin_config.remove_input_padding: + N = shape(x, 1) + B = shape(x, 0) + seq_len_2d = concat([1, N]) + max_position_embeddings = 4096 + # create position ids + position_ids_buffer = constant(np.expand_dims(np.arange(max_position_embeddings).astype(np.int32), 0)) + tmp_position_ids = slice(position_ids_buffer, starts=[0, 0], sizes=seq_len_2d) + tmp_position_ids = expand(tmp_position_ids, concat([B, N])) # BxL + tmp_input_lengths = unsqueeze(input_lengths, 1) # Bx1 + tmp_input_lengths = expand(tmp_input_lengths, concat([B, N])) # BxL + mask = tmp_position_ids < tmp_input_lengths # BxL + mask = mask.cast("int32") + + if default_net().plugin_config.bert_attention_plugin: + qkv = concat([query, key, value], dim=-1) + # TRT plugin mode + assert input_lengths is not None + if default_net().plugin_config.remove_input_padding: + qkv = qkv.view(concat([-1, 3 * inner_dim])) + max_input_length = constant( + np.zeros( + [ + 2048, + ], + dtype=np.int32, + ) + ) + else: + max_input_length = None + context = bert_attention( + qkv, + input_lengths, + attn.num_attention_heads, + attn.attention_head_size, + q_scaling=q_scaling, + max_input_length=max_input_length, + ) + else: + assert not default_net().plugin_config.remove_input_padding + + def transpose_for_scores(x): + new_x_shape = concat([shape(x, 0), shape(x, 1), attn.num_attention_heads, attn.attention_head_size]) + + y = x.view(new_x_shape) + y = y.transpose(1, 2) + return y + + def transpose_for_scores_k(x): + new_x_shape = concat([shape(x, 0), shape(x, 1), attn.num_attention_heads, attn.attention_head_size]) + + y = x.view(new_x_shape) + y = y.permute([0, 2, 3, 1]) + return y + + query = transpose_for_scores(query) + key = transpose_for_scores_k(key) + value = transpose_for_scores(value) + + attention_scores = matmul(query, key, use_fp32_acc=False) + + if mask is not None: + attention_mask = expand_mask(mask, shape(query, 2)) + attention_mask = cast(attention_mask, attention_scores.dtype) + attention_scores = attention_scores + attention_mask + + attention_probs = softmax(attention_scores, dim=-1) + + context = matmul(attention_probs, value, use_fp32_acc=False).transpose(1, 2) + context = context.view(concat([shape(context, 0), shape(context, 1), attn.attention_hidden_size])) + context = attn.to_out(context) + if mask is not None: + mask = mask.view(concat([shape(mask, 0), shape(mask, 1), 1])) + mask = expand_dims_like(mask, context) + mask = cast(mask, context.dtype) + context = context * mask + return context + + +# DiT Block +class DiTBlock(Module): + def __init__(self, dim, heads, dim_head, ff_mult=2, dropout=0.1): + super().__init__() + + self.attn_norm = AdaLayerNormZero(dim) + self.attn = Attention( + processor=AttnProcessor(), + dim=dim, + heads=heads, + dim_head=dim_head, + dropout=dropout, + ) + + self.ff_norm = LayerNorm(dim, elementwise_affine=False, eps=1e-6) + self.ff = FeedForward(dim=dim, mult=ff_mult, dropout=dropout) + + def forward( + self, x, t, rope_cos, rope_sin, input_lengths, scale=1.0, rope=ModuleNotFoundError + ): # x: noised input, t: time embedding + # pre-norm & modulation for attention input + norm, gate_msa, shift_mlp, scale_mlp, gate_mlp = self.attn_norm(x, emb=t) + # attention + # norm ----> (2,1226,1024) + attn_output = self.attn(x=norm, rope_cos=rope_cos, rope_sin=rope_sin, input_lengths=input_lengths, scale=scale) + + # process attention output for input x + if default_net().plugin_config.remove_input_padding: + x = x + gate_msa * attn_output + else: + x = x + unsqueeze(gate_msa, 1) * attn_output + ones = constant(np.ones(1, dtype=np.float32)).cast(x.dtype) + if default_net().plugin_config.remove_input_padding: + norm = self.ff_norm(x) * (ones + scale_mlp) + shift_mlp + else: + norm = self.ff_norm(x) * (ones + unsqueeze(scale_mlp, 1)) + unsqueeze(shift_mlp, 1) + # norm = self.ff_norm(x) * (ones + scale_mlp) + shift_mlp + ff_output = self.ff(norm) + if default_net().plugin_config.remove_input_padding: + x = x + gate_mlp * ff_output + else: + x = x + unsqueeze(gate_mlp, 1) * ff_output + + return x + + +class TimestepEmbedding(Module): + def __init__(self, dim, freq_embed_dim=256, dtype=None): + super().__init__() + # self.time_embed = SinusPositionEmbedding(freq_embed_dim) + self.mlp1 = Linear(freq_embed_dim, dim, bias=True, dtype=dtype) + self.mlp2 = Linear(dim, dim, bias=True, dtype=dtype) + + def forward(self, timestep): + t_freq = self.mlp1(timestep) + t_freq = silu(t_freq) + t_emb = self.mlp2(t_freq) + return t_emb diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/requirements-pytorch.txt b/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/requirements-pytorch.txt new file mode 100644 index 0000000..836082b --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/requirements-pytorch.txt @@ -0,0 +1,24 @@ +accelerate>=0.33.0 +bitsandbytes>0.37.0 +cached_path +click +datasets +ema_pytorch>=0.5.2 +gradio>=3.45.2 +hydra-core>=1.3.0 +jieba +librosa +matplotlib +numpy<=1.26.4 +pydub +pypinyin +safetensors +soundfile +tomli +torch>=2.0.0 +# torchaudio>=2.0.0 +torchdiffeq +tqdm>=4.65.0 +transformers +x_transformers>=1.31.14 +packaging>=24.2 \ No newline at end of file diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/run.sh b/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/run.sh new file mode 100644 index 0000000..7a0db8b --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/run.sh @@ -0,0 +1,110 @@ +stage=$1 +stop_stage=$2 +model=$3 # F5TTS_Base +if [ -z "$model" ]; then + echo "Model is none, using default model F5TTS_Base" + model=F5TTS_Base +fi +echo "Start stage: $stage, Stop stage: $stop_stage, Model: $model" +export CUDA_VISIBLE_DEVICES=0 + +F5_TTS_HF_DOWNLOAD_PATH=./F5-TTS +F5_TTS_TRT_LLM_CHECKPOINT_PATH=./trtllm_ckpt +F5_TTS_TRT_LLM_ENGINE_PATH=./f5_trt_llm_engine + +vocoder_trt_engine_path=vocos_vocoder.plan +model_repo=./model_repo + +if [ $stage -le 0 ] && [ $stop_stage -ge 0 ]; then + echo "Downloading f5 tts from huggingface" + huggingface-cli download SWivid/F5-TTS --local-dir $F5_TTS_HF_DOWNLOAD_PATH + +fi + +if [ $stage -le 1 ] && [ $stop_stage -ge 1 ]; then + echo "Converting checkpoint" + python3 ./scripts/convert_checkpoint.py \ + --timm_ckpt "$F5_TTS_HF_DOWNLOAD_PATH/$model/model_1200000.pt" \ + --output_dir "$F5_TTS_TRT_LLM_CHECKPOINT_PATH" --model_name $model + python_package_path=/usr/local/lib/python3.12/dist-packages + cp -r patch/* $python_package_path/tensorrt_llm/models + trtllm-build --checkpoint_dir $F5_TTS_TRT_LLM_CHECKPOINT_PATH \ + --max_batch_size 8 \ + --output_dir $F5_TTS_TRT_LLM_ENGINE_PATH --remove_input_padding disable +fi + +if [ $stage -le 2 ] && [ $stop_stage -ge 2 ]; then + echo "Exporting vocos vocoder" + onnx_vocoder_path=vocos_vocoder.onnx + python3 scripts/export_vocoder_to_onnx.py --vocoder vocos --output-path $onnx_vocoder_path + bash scripts/export_vocos_trt.sh $onnx_vocoder_path $vocoder_trt_engine_path +fi + +if [ $stage -le 3 ] && [ $stop_stage -ge 3 ]; then + echo "Building triton server" + rm -r $model_repo + cp -r ./model_repo_f5_tts $model_repo + python3 scripts/fill_template.py -i $model_repo/f5_tts/config.pbtxt vocab:$F5_TTS_HF_DOWNLOAD_PATH/$model/vocab.txt,model:$F5_TTS_HF_DOWNLOAD_PATH/$model/model_1200000.pt,trtllm:$F5_TTS_TRT_LLM_ENGINE_PATH,vocoder:vocos + cp $vocoder_trt_engine_path $model_repo/vocoder/1/vocoder.plan +fi + +if [ $stage -le 4 ] && [ $stop_stage -ge 4 ]; then + echo "Starting triton server" + tritonserver --model-repository=$model_repo +fi + +if [ $stage -le 5 ] && [ $stop_stage -ge 5 ]; then + echo "Testing triton server" + num_task=1 + log_dir=./log_concurrent_tasks_${num_task} + rm -r $log_dir + python3 client_grpc.py --num-tasks $num_task --huggingface-dataset yuekai/seed_tts --split-name wenetspeech4tts --log-dir $log_dir +fi + +if [ $stage -le 6 ] && [ $stop_stage -ge 6 ]; then + echo "Testing http client" + audio=../../infer/examples/basic/basic_ref_en.wav + reference_text="Some call me nature, others call me mother nature." + target_text="I don't really care what you call me. I've been a silent spectator, watching species evolve, empires rise and fall. But always remember, I am mighty and enduring." + python3 client_http.py --reference-audio $audio --reference-text "$reference_text" --target-text "$target_text" +fi + +if [ $stage -le 7 ] && [ $stop_stage -ge 7 ]; then + echo "TRT-LLM: offline decoding benchmark test" + batch_size=1 + split_name=wenetspeech4tts + backend_type=trt + log_dir=./log_benchmark_batch_size_${batch_size}_${split_name}_${backend_type} + rm -r $log_dir + ln -s model_repo_f5_tts/f5_tts/1/f5_tts_trtllm.py ./ + torchrun --nproc_per_node=1 \ + benchmark.py --output-dir $log_dir \ + --batch-size $batch_size \ + --enable-warmup \ + --split-name $split_name \ + --model-path $F5_TTS_HF_DOWNLOAD_PATH/$model/model_1200000.pt \ + --vocab-file $F5_TTS_HF_DOWNLOAD_PATH/$model/vocab.txt \ + --vocoder-trt-engine-path $vocoder_trt_engine_path \ + --backend-type $backend_type \ + --tllm-model-dir $F5_TTS_TRT_LLM_ENGINE_PATH || exit 1 +fi + +if [ $stage -le 8 ] && [ $stop_stage -ge 8 ]; then + echo "Native Pytorch: offline decoding benchmark test" + pip install -r requirements-pytorch.txt + batch_size=1 + split_name=wenetspeech4tts + backend_type=pytorch + log_dir=./log_benchmark_batch_size_${batch_size}_${split_name}_${backend_type} + rm -r $log_dir + ln -s model_repo_f5_tts/f5_tts/1/f5_tts_trtllm.py ./ + torchrun --nproc_per_node=1 \ + benchmark.py --output-dir $log_dir \ + --batch-size $batch_size \ + --split-name $split_name \ + --enable-warmup \ + --model-path $F5_TTS_HF_DOWNLOAD_PATH/$model/model_1200000.pt \ + --vocab-file $F5_TTS_HF_DOWNLOAD_PATH/$model/vocab.txt \ + --backend-type $backend_type \ + --tllm-model-dir $F5_TTS_TRT_LLM_ENGINE_PATH || exit 1 +fi \ No newline at end of file diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/scripts/conv_stft.py b/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/scripts/conv_stft.py new file mode 100644 index 0000000..993e472 --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/scripts/conv_stft.py @@ -0,0 +1,248 @@ +# Modified from https://github.com/echocatzh/conv-stft/blob/master/conv_stft/conv_stft.py + +# Copyright (c) 2024, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# MIT License + +# Copyright (c) 2020 Shimin Zhang + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +import torch as th +import torch.nn.functional as F +from scipy.signal import check_COLA, get_window + + +support_clp_op = None +if th.__version__ >= "1.7.0": + from torch.fft import rfft as fft + + support_clp_op = True +else: + from torch import rfft as fft + + +class STFT(th.nn.Module): + def __init__( + self, + win_len=1024, + win_hop=512, + fft_len=1024, + enframe_mode="continue", + win_type="hann", + win_sqrt=False, + pad_center=True, + ): + """ + Implement of STFT using 1D convolution and 1D transpose convolutions. + Implement of framing the signal in 2 ways, `break` and `continue`. + `break` method is a kaldi-like framing. + `continue` method is a librosa-like framing. + + More information about `perfect reconstruction`: + 1. https://ww2.mathworks.cn/help/signal/ref/stft.html + 2. https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.get_window.html + + Args: + win_len (int): Number of points in one frame. Defaults to 1024. + win_hop (int): Number of framing stride. Defaults to 512. + fft_len (int): Number of DFT points. Defaults to 1024. + enframe_mode (str, optional): `break` and `continue`. Defaults to 'continue'. + win_type (str, optional): The type of window to create. Defaults to 'hann'. + win_sqrt (bool, optional): using square root window. Defaults to True. + pad_center (bool, optional): `perfect reconstruction` opts. Defaults to True. + """ + super(STFT, self).__init__() + assert enframe_mode in ["break", "continue"] + assert fft_len >= win_len + self.win_len = win_len + self.win_hop = win_hop + self.fft_len = fft_len + self.mode = enframe_mode + self.win_type = win_type + self.win_sqrt = win_sqrt + self.pad_center = pad_center + self.pad_amount = self.fft_len // 2 + + en_k, fft_k, ifft_k, ola_k = self.__init_kernel__() + self.register_buffer("en_k", en_k) + self.register_buffer("fft_k", fft_k) + self.register_buffer("ifft_k", ifft_k) + self.register_buffer("ola_k", ola_k) + + def __init_kernel__(self): + """ + Generate enframe_kernel, fft_kernel, ifft_kernel and overlap-add kernel. + ** enframe_kernel: Using conv1d layer and identity matrix. + ** fft_kernel: Using linear layer for matrix multiplication. In fact, + enframe_kernel and fft_kernel can be combined, But for the sake of + readability, I took the two apart. + ** ifft_kernel, pinv of fft_kernel. + ** overlap-add kernel, just like enframe_kernel, but transposed. + + Returns: + tuple: four kernels. + """ + enframed_kernel = th.eye(self.fft_len)[:, None, :] + if support_clp_op: + tmp = fft(th.eye(self.fft_len)) + fft_kernel = th.stack([tmp.real, tmp.imag], dim=2) + else: + fft_kernel = fft(th.eye(self.fft_len), 1) + if self.mode == "break": + enframed_kernel = th.eye(self.win_len)[:, None, :] + fft_kernel = fft_kernel[: self.win_len] + fft_kernel = th.cat((fft_kernel[:, :, 0], fft_kernel[:, :, 1]), dim=1) + ifft_kernel = th.pinverse(fft_kernel)[:, None, :] + window = get_window(self.win_type, self.win_len) + + self.perfect_reconstruct = check_COLA(window, self.win_len, self.win_len - self.win_hop) + window = th.FloatTensor(window) + if self.mode == "continue": + left_pad = (self.fft_len - self.win_len) // 2 + right_pad = left_pad + (self.fft_len - self.win_len) % 2 + window = F.pad(window, (left_pad, right_pad)) + if self.win_sqrt: + self.padded_window = window + window = th.sqrt(window) + else: + self.padded_window = window**2 + + fft_kernel = fft_kernel.T * window + ifft_kernel = ifft_kernel * window + ola_kernel = th.eye(self.fft_len)[: self.win_len, None, :] + if self.mode == "continue": + ola_kernel = th.eye(self.fft_len)[:, None, : self.fft_len] + return enframed_kernel, fft_kernel, ifft_kernel, ola_kernel + + def is_perfect(self): + """ + Whether the parameters win_len, win_hop and win_sqrt + obey constants overlap-add(COLA) + + Returns: + bool: Return true if parameters obey COLA. + """ + return self.perfect_reconstruct and self.pad_center + + def transform(self, inputs, return_type="complex"): + """Take input data (audio) to STFT domain. + + Args: + inputs (tensor): Tensor of floats, with shape (num_batch, num_samples) + return_type (str, optional): return (mag, phase) when `magphase`, + return (real, imag) when `realimag` and complex(real, imag) when `complex`. + Defaults to 'complex'. + + Returns: + tuple: (mag, phase) when `magphase`, return (real, imag) when + `realimag`. Defaults to 'complex', each elements with shape + [num_batch, num_frequencies, num_frames] + """ + assert return_type in ["magphase", "realimag", "complex"] + if inputs.dim() == 2: + inputs = th.unsqueeze(inputs, 1) + self.num_samples = inputs.size(-1) + if self.pad_center: + inputs = F.pad(inputs, (self.pad_amount, self.pad_amount), mode="reflect") + enframe_inputs = F.conv1d(inputs, self.en_k, stride=self.win_hop) + outputs = th.transpose(enframe_inputs, 1, 2) + outputs = F.linear(outputs, self.fft_k) + outputs = th.transpose(outputs, 1, 2) + dim = self.fft_len // 2 + 1 + real = outputs[:, :dim, :] + imag = outputs[:, dim:, :] + if return_type == "realimag": + return real, imag + elif return_type == "complex": + assert support_clp_op + return th.complex(real, imag) + else: + mags = th.sqrt(real**2 + imag**2) + phase = th.atan2(imag, real) + return mags, phase + + def inverse(self, input1, input2=None, input_type="magphase"): + """Call the inverse STFT (iSTFT), given tensors produced + by the `transform` function. + + Args: + input1 (tensors): Magnitude/Real-part of STFT with shape + [num_batch, num_frequencies, num_frames] + input2 (tensors): Phase/Imag-part of STFT with shape + [num_batch, num_frequencies, num_frames] + input_type (str, optional): Mathematical meaning of input tensor's. + Defaults to 'magphase'. + + Returns: + tensors: Reconstructed audio given magnitude and phase. Of + shape [num_batch, num_samples] + """ + assert input_type in ["magphase", "realimag"] + if input_type == "realimag": + real, imag = None, None + if support_clp_op and th.is_complex(input1): + real, imag = input1.real, input1.imag + else: + real, imag = input1, input2 + else: + real = input1 * th.cos(input2) + imag = input1 * th.sin(input2) + inputs = th.cat([real, imag], dim=1) + outputs = F.conv_transpose1d(inputs, self.ifft_k, stride=self.win_hop) + t = (self.padded_window[None, :, None]).repeat(1, 1, inputs.size(-1)) + t = t.to(inputs.device) + coff = F.conv_transpose1d(t, self.ola_k, stride=self.win_hop) + + num_frames = input1.size(-1) + num_samples = num_frames * self.win_hop + + rm_start, rm_end = self.pad_amount, self.pad_amount + num_samples + + outputs = outputs[..., rm_start:rm_end] + coff = coff[..., rm_start:rm_end] + coffidx = th.where(coff > 1e-8) + outputs[coffidx] = outputs[coffidx] / (coff[coffidx]) + return outputs.squeeze(dim=1) + + def forward(self, inputs): + """Take input data (audio) to STFT domain and then back to audio. + + Args: + inputs (tensor): Tensor of floats, with shape [num_batch, num_samples] + + Returns: + tensor: Reconstructed audio given magnitude and phase. + Of shape [num_batch, num_samples] + """ + mag, phase = self.transform(inputs) + rec_wav = self.inverse(mag, phase) + return rec_wav diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/scripts/convert_checkpoint.py b/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/scripts/convert_checkpoint.py new file mode 100644 index 0000000..fcf5592 --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/scripts/convert_checkpoint.py @@ -0,0 +1,358 @@ +import argparse +import json +import os +import re +import time +import traceback +from concurrent.futures import ThreadPoolExecutor, as_completed + +import safetensors.torch +import torch +from tensorrt_llm import str_dtype_to_torch +from tensorrt_llm.mapping import Mapping +from tensorrt_llm.models.convert_utils import split, split_matrix_tp + + +def split_q_tp(v, n_head, n_hidden, tensor_parallel, rank): + split_v = split(v, tensor_parallel, rank, dim=1) + return split_v.contiguous() + + +def split_q_bias_tp(v, n_head, n_hidden, tensor_parallel, rank): + split_v = split(v, tensor_parallel, rank, dim=0) + return split_v.contiguous() + + +FACEBOOK_DIT_NAME_MAPPING = { + "^time_embed.time_mlp.0.weight$": "time_embed.mlp1.weight", + "^time_embed.time_mlp.0.bias$": "time_embed.mlp1.bias", + "^time_embed.time_mlp.2.weight$": "time_embed.mlp2.weight", + "^time_embed.time_mlp.2.bias$": "time_embed.mlp2.bias", + "^input_embed.conv_pos_embed.conv1d.0.weight$": "input_embed.conv_pos_embed.conv1d1.weight", + "^input_embed.conv_pos_embed.conv1d.0.bias$": "input_embed.conv_pos_embed.conv1d1.bias", + "^input_embed.conv_pos_embed.conv1d.2.weight$": "input_embed.conv_pos_embed.conv1d2.weight", + "^input_embed.conv_pos_embed.conv1d.2.bias$": "input_embed.conv_pos_embed.conv1d2.bias", + "^transformer_blocks.0.attn.to_out.0.weight$": "transformer_blocks.0.attn.to_out.weight", + "^transformer_blocks.0.attn.to_out.0.bias$": "transformer_blocks.0.attn.to_out.bias", + "^transformer_blocks.1.attn.to_out.0.weight$": "transformer_blocks.1.attn.to_out.weight", + "^transformer_blocks.1.attn.to_out.0.bias$": "transformer_blocks.1.attn.to_out.bias", + "^transformer_blocks.2.attn.to_out.0.weight$": "transformer_blocks.2.attn.to_out.weight", + "^transformer_blocks.2.attn.to_out.0.bias$": "transformer_blocks.2.attn.to_out.bias", + "^transformer_blocks.3.attn.to_out.0.weight$": "transformer_blocks.3.attn.to_out.weight", + "^transformer_blocks.3.attn.to_out.0.bias$": "transformer_blocks.3.attn.to_out.bias", + "^transformer_blocks.4.attn.to_out.0.weight$": "transformer_blocks.4.attn.to_out.weight", + "^transformer_blocks.4.attn.to_out.0.bias$": "transformer_blocks.4.attn.to_out.bias", + "^transformer_blocks.5.attn.to_out.0.weight$": "transformer_blocks.5.attn.to_out.weight", + "^transformer_blocks.5.attn.to_out.0.bias$": "transformer_blocks.5.attn.to_out.bias", + "^transformer_blocks.6.attn.to_out.0.weight$": "transformer_blocks.6.attn.to_out.weight", + "^transformer_blocks.6.attn.to_out.0.bias$": "transformer_blocks.6.attn.to_out.bias", + "^transformer_blocks.7.attn.to_out.0.weight$": "transformer_blocks.7.attn.to_out.weight", + "^transformer_blocks.7.attn.to_out.0.bias$": "transformer_blocks.7.attn.to_out.bias", + "^transformer_blocks.8.attn.to_out.0.weight$": "transformer_blocks.8.attn.to_out.weight", + "^transformer_blocks.8.attn.to_out.0.bias$": "transformer_blocks.8.attn.to_out.bias", + "^transformer_blocks.9.attn.to_out.0.weight$": "transformer_blocks.9.attn.to_out.weight", + "^transformer_blocks.9.attn.to_out.0.bias$": "transformer_blocks.9.attn.to_out.bias", + "^transformer_blocks.10.attn.to_out.0.weight$": "transformer_blocks.10.attn.to_out.weight", + "^transformer_blocks.10.attn.to_out.0.bias$": "transformer_blocks.10.attn.to_out.bias", + "^transformer_blocks.11.attn.to_out.0.weight$": "transformer_blocks.11.attn.to_out.weight", + "^transformer_blocks.11.attn.to_out.0.bias$": "transformer_blocks.11.attn.to_out.bias", + "^transformer_blocks.12.attn.to_out.0.weight$": "transformer_blocks.12.attn.to_out.weight", + "^transformer_blocks.12.attn.to_out.0.bias$": "transformer_blocks.12.attn.to_out.bias", + "^transformer_blocks.13.attn.to_out.0.weight$": "transformer_blocks.13.attn.to_out.weight", + "^transformer_blocks.13.attn.to_out.0.bias$": "transformer_blocks.13.attn.to_out.bias", + "^transformer_blocks.14.attn.to_out.0.weight$": "transformer_blocks.14.attn.to_out.weight", + "^transformer_blocks.14.attn.to_out.0.bias$": "transformer_blocks.14.attn.to_out.bias", + "^transformer_blocks.15.attn.to_out.0.weight$": "transformer_blocks.15.attn.to_out.weight", + "^transformer_blocks.15.attn.to_out.0.bias$": "transformer_blocks.15.attn.to_out.bias", + "^transformer_blocks.16.attn.to_out.0.weight$": "transformer_blocks.16.attn.to_out.weight", + "^transformer_blocks.16.attn.to_out.0.bias$": "transformer_blocks.16.attn.to_out.bias", + "^transformer_blocks.17.attn.to_out.0.weight$": "transformer_blocks.17.attn.to_out.weight", + "^transformer_blocks.17.attn.to_out.0.bias$": "transformer_blocks.17.attn.to_out.bias", + "^transformer_blocks.18.attn.to_out.0.weight$": "transformer_blocks.18.attn.to_out.weight", + "^transformer_blocks.18.attn.to_out.0.bias$": "transformer_blocks.18.attn.to_out.bias", + "^transformer_blocks.19.attn.to_out.0.weight$": "transformer_blocks.19.attn.to_out.weight", + "^transformer_blocks.19.attn.to_out.0.bias$": "transformer_blocks.19.attn.to_out.bias", + "^transformer_blocks.20.attn.to_out.0.weight$": "transformer_blocks.20.attn.to_out.weight", + "^transformer_blocks.20.attn.to_out.0.bias$": "transformer_blocks.20.attn.to_out.bias", + "^transformer_blocks.21.attn.to_out.0.weight$": "transformer_blocks.21.attn.to_out.weight", + "^transformer_blocks.21.attn.to_out.0.bias$": "transformer_blocks.21.attn.to_out.bias", + "^transformer_blocks.0.ff.ff.0.0.weight$": "transformer_blocks.0.ff.project_in.weight", + "^transformer_blocks.0.ff.ff.0.0.bias$": "transformer_blocks.0.ff.project_in.bias", + "^transformer_blocks.0.ff.ff.2.weight$": "transformer_blocks.0.ff.ff.weight", + "^transformer_blocks.0.ff.ff.2.bias$": "transformer_blocks.0.ff.ff.bias", + "^transformer_blocks.1.ff.ff.0.0.weight$": "transformer_blocks.1.ff.project_in.weight", + "^transformer_blocks.1.ff.ff.0.0.bias$": "transformer_blocks.1.ff.project_in.bias", + "^transformer_blocks.1.ff.ff.2.weight$": "transformer_blocks.1.ff.ff.weight", + "^transformer_blocks.1.ff.ff.2.bias$": "transformer_blocks.1.ff.ff.bias", + "^transformer_blocks.2.ff.ff.0.0.weight$": "transformer_blocks.2.ff.project_in.weight", + "^transformer_blocks.2.ff.ff.0.0.bias$": "transformer_blocks.2.ff.project_in.bias", + "^transformer_blocks.2.ff.ff.2.weight$": "transformer_blocks.2.ff.ff.weight", + "^transformer_blocks.2.ff.ff.2.bias$": "transformer_blocks.2.ff.ff.bias", + "^transformer_blocks.3.ff.ff.0.0.weight$": "transformer_blocks.3.ff.project_in.weight", + "^transformer_blocks.3.ff.ff.0.0.bias$": "transformer_blocks.3.ff.project_in.bias", + "^transformer_blocks.3.ff.ff.2.weight$": "transformer_blocks.3.ff.ff.weight", + "^transformer_blocks.3.ff.ff.2.bias$": "transformer_blocks.3.ff.ff.bias", + "^transformer_blocks.4.ff.ff.0.0.weight$": "transformer_blocks.4.ff.project_in.weight", + "^transformer_blocks.4.ff.ff.0.0.bias$": "transformer_blocks.4.ff.project_in.bias", + "^transformer_blocks.4.ff.ff.2.weight$": "transformer_blocks.4.ff.ff.weight", + "^transformer_blocks.4.ff.ff.2.bias$": "transformer_blocks.4.ff.ff.bias", + "^transformer_blocks.5.ff.ff.0.0.weight$": "transformer_blocks.5.ff.project_in.weight", + "^transformer_blocks.5.ff.ff.0.0.bias$": "transformer_blocks.5.ff.project_in.bias", + "^transformer_blocks.5.ff.ff.2.weight$": "transformer_blocks.5.ff.ff.weight", + "^transformer_blocks.5.ff.ff.2.bias$": "transformer_blocks.5.ff.ff.bias", + "^transformer_blocks.6.ff.ff.0.0.weight$": "transformer_blocks.6.ff.project_in.weight", + "^transformer_blocks.6.ff.ff.0.0.bias$": "transformer_blocks.6.ff.project_in.bias", + "^transformer_blocks.6.ff.ff.2.weight$": "transformer_blocks.6.ff.ff.weight", + "^transformer_blocks.6.ff.ff.2.bias$": "transformer_blocks.6.ff.ff.bias", + "^transformer_blocks.7.ff.ff.0.0.weight$": "transformer_blocks.7.ff.project_in.weight", + "^transformer_blocks.7.ff.ff.0.0.bias$": "transformer_blocks.7.ff.project_in.bias", + "^transformer_blocks.7.ff.ff.2.weight$": "transformer_blocks.7.ff.ff.weight", + "^transformer_blocks.7.ff.ff.2.bias$": "transformer_blocks.7.ff.ff.bias", + "^transformer_blocks.8.ff.ff.0.0.weight$": "transformer_blocks.8.ff.project_in.weight", + "^transformer_blocks.8.ff.ff.0.0.bias$": "transformer_blocks.8.ff.project_in.bias", + "^transformer_blocks.8.ff.ff.2.weight$": "transformer_blocks.8.ff.ff.weight", + "^transformer_blocks.8.ff.ff.2.bias$": "transformer_blocks.8.ff.ff.bias", + "^transformer_blocks.9.ff.ff.0.0.weight$": "transformer_blocks.9.ff.project_in.weight", + "^transformer_blocks.9.ff.ff.0.0.bias$": "transformer_blocks.9.ff.project_in.bias", + "^transformer_blocks.9.ff.ff.2.weight$": "transformer_blocks.9.ff.ff.weight", + "^transformer_blocks.9.ff.ff.2.bias$": "transformer_blocks.9.ff.ff.bias", + "^transformer_blocks.10.ff.ff.0.0.weight$": "transformer_blocks.10.ff.project_in.weight", + "^transformer_blocks.10.ff.ff.0.0.bias$": "transformer_blocks.10.ff.project_in.bias", + "^transformer_blocks.10.ff.ff.2.weight$": "transformer_blocks.10.ff.ff.weight", + "^transformer_blocks.10.ff.ff.2.bias$": "transformer_blocks.10.ff.ff.bias", + "^transformer_blocks.11.ff.ff.0.0.weight$": "transformer_blocks.11.ff.project_in.weight", + "^transformer_blocks.11.ff.ff.0.0.bias$": "transformer_blocks.11.ff.project_in.bias", + "^transformer_blocks.11.ff.ff.2.weight$": "transformer_blocks.11.ff.ff.weight", + "^transformer_blocks.11.ff.ff.2.bias$": "transformer_blocks.11.ff.ff.bias", + "^transformer_blocks.12.ff.ff.0.0.weight$": "transformer_blocks.12.ff.project_in.weight", + "^transformer_blocks.12.ff.ff.0.0.bias$": "transformer_blocks.12.ff.project_in.bias", + "^transformer_blocks.12.ff.ff.2.weight$": "transformer_blocks.12.ff.ff.weight", + "^transformer_blocks.12.ff.ff.2.bias$": "transformer_blocks.12.ff.ff.bias", + "^transformer_blocks.13.ff.ff.0.0.weight$": "transformer_blocks.13.ff.project_in.weight", + "^transformer_blocks.13.ff.ff.0.0.bias$": "transformer_blocks.13.ff.project_in.bias", + "^transformer_blocks.13.ff.ff.2.weight$": "transformer_blocks.13.ff.ff.weight", + "^transformer_blocks.13.ff.ff.2.bias$": "transformer_blocks.13.ff.ff.bias", + "^transformer_blocks.14.ff.ff.0.0.weight$": "transformer_blocks.14.ff.project_in.weight", + "^transformer_blocks.14.ff.ff.0.0.bias$": "transformer_blocks.14.ff.project_in.bias", + "^transformer_blocks.14.ff.ff.2.weight$": "transformer_blocks.14.ff.ff.weight", + "^transformer_blocks.14.ff.ff.2.bias$": "transformer_blocks.14.ff.ff.bias", + "^transformer_blocks.15.ff.ff.0.0.weight$": "transformer_blocks.15.ff.project_in.weight", + "^transformer_blocks.15.ff.ff.0.0.bias$": "transformer_blocks.15.ff.project_in.bias", + "^transformer_blocks.15.ff.ff.2.weight$": "transformer_blocks.15.ff.ff.weight", + "^transformer_blocks.15.ff.ff.2.bias$": "transformer_blocks.15.ff.ff.bias", + "^transformer_blocks.16.ff.ff.0.0.weight$": "transformer_blocks.16.ff.project_in.weight", + "^transformer_blocks.16.ff.ff.0.0.bias$": "transformer_blocks.16.ff.project_in.bias", + "^transformer_blocks.16.ff.ff.2.weight$": "transformer_blocks.16.ff.ff.weight", + "^transformer_blocks.16.ff.ff.2.bias$": "transformer_blocks.16.ff.ff.bias", + "^transformer_blocks.17.ff.ff.0.0.weight$": "transformer_blocks.17.ff.project_in.weight", + "^transformer_blocks.17.ff.ff.0.0.bias$": "transformer_blocks.17.ff.project_in.bias", + "^transformer_blocks.17.ff.ff.2.weight$": "transformer_blocks.17.ff.ff.weight", + "^transformer_blocks.17.ff.ff.2.bias$": "transformer_blocks.17.ff.ff.bias", + "^transformer_blocks.18.ff.ff.0.0.weight$": "transformer_blocks.18.ff.project_in.weight", + "^transformer_blocks.18.ff.ff.0.0.bias$": "transformer_blocks.18.ff.project_in.bias", + "^transformer_blocks.18.ff.ff.2.weight$": "transformer_blocks.18.ff.ff.weight", + "^transformer_blocks.18.ff.ff.2.bias$": "transformer_blocks.18.ff.ff.bias", + "^transformer_blocks.19.ff.ff.0.0.weight$": "transformer_blocks.19.ff.project_in.weight", + "^transformer_blocks.19.ff.ff.0.0.bias$": "transformer_blocks.19.ff.project_in.bias", + "^transformer_blocks.19.ff.ff.2.weight$": "transformer_blocks.19.ff.ff.weight", + "^transformer_blocks.19.ff.ff.2.bias$": "transformer_blocks.19.ff.ff.bias", + "^transformer_blocks.20.ff.ff.0.0.weight$": "transformer_blocks.20.ff.project_in.weight", + "^transformer_blocks.20.ff.ff.0.0.bias$": "transformer_blocks.20.ff.project_in.bias", + "^transformer_blocks.20.ff.ff.2.weight$": "transformer_blocks.20.ff.ff.weight", + "^transformer_blocks.20.ff.ff.2.bias$": "transformer_blocks.20.ff.ff.bias", + "^transformer_blocks.21.ff.ff.0.0.weight$": "transformer_blocks.21.ff.project_in.weight", + "^transformer_blocks.21.ff.ff.0.0.bias$": "transformer_blocks.21.ff.project_in.bias", + "^transformer_blocks.21.ff.ff.2.weight$": "transformer_blocks.21.ff.ff.weight", + "^transformer_blocks.21.ff.ff.2.bias$": "transformer_blocks.21.ff.ff.bias", +} + + +def parse_arguments(): + parser = argparse.ArgumentParser() + parser.add_argument( + "--model_name", + type=str, + default="F5TTS_Base", + choices=[ + "F5TTS_Base", + ], + ) # TODO: support F5TTS_v1_Base + parser.add_argument("--timm_ckpt", type=str, default="./ckpts/model_1200000.pt") + parser.add_argument( + "--output_dir", type=str, default="./tllm_checkpoint", help="The path to save the TensorRT-LLM checkpoint" + ) + parser.add_argument("--hidden_size", type=int, default=1024, help="The hidden size of DiT") + parser.add_argument("--depth", type=int, default=22, help="The number of DiTBlock layers") + parser.add_argument("--num_heads", type=int, default=16, help="The number of heads of attention module") + parser.add_argument("--cfg_scale", type=float, default=4.0) + parser.add_argument("--tp_size", type=int, default=1, help="N-way tensor parallelism size") + parser.add_argument("--cp_size", type=int, default=1, help="Context parallelism size") + parser.add_argument("--pp_size", type=int, default=1, help="N-way pipeline parallelism size") + parser.add_argument("--dtype", type=str, default="float16", choices=["float32", "bfloat16", "float16"]) + parser.add_argument("--fp8_linear", action="store_true", help="Whether use FP8 for linear layers") + parser.add_argument( + "--workers", type=int, default=1, help="The number of workers for converting checkpoint in parallel" + ) + args = parser.parse_args() + return args + + +def convert_timm_dit(args, mapping, dtype="float32"): + weights = {} + tik = time.time() + torch_dtype = str_dtype_to_torch(dtype) + tensor_parallel = mapping.tp_size + + model_params = dict(torch.load(args.timm_ckpt)) + model_params = { + k: v for k, v in model_params["ema_model_state_dict"].items() if k.startswith("ema_model.transformer") + } + prefix = "ema_model.transformer." + model_params = {key[len(prefix) :] if key.startswith(prefix) else key: value for key, value in model_params.items()} + + timm_to_trtllm_name = FACEBOOK_DIT_NAME_MAPPING + + def get_trtllm_name(timm_name): + for k, v in timm_to_trtllm_name.items(): + m = re.match(k, timm_name) + if m is not None: + if "*" in v: + v = v.replace("*", m.groups()[0]) + return v + return timm_name + + weights = dict() + for name, param in model_params.items(): + if name == "input_embed.conv_pos_embed.conv1d.0.weight" or name == "input_embed.conv_pos_embed.conv1d.2.weight": + weights[get_trtllm_name(name)] = param.contiguous().to(torch_dtype).unsqueeze(-1) + else: + weights[get_trtllm_name(name)] = param.contiguous().to(torch_dtype) + + assert len(weights) == len(model_params) + + # new_prefix = 'f5_transformer.' + new_prefix = "" + weights = {new_prefix + key: value for key, value in weights.items()} + import math + + scale_factor = math.pow(64, -0.25) + for k, v in weights.items(): + if re.match("^transformer_blocks.*.attn.to_k.weight$", k): + weights[k] *= scale_factor + weights[k] = split_q_tp(v, args.num_heads, args.hidden_size, tensor_parallel, mapping.tp_rank) + + elif re.match("^transformer_blocks.*.attn.to_k.bias$", k): + weights[k] *= scale_factor + weights[k] = split_q_bias_tp(v, args.num_heads, args.hidden_size, tensor_parallel, mapping.tp_rank) + + elif re.match("^transformer_blocks.*.attn.to_q.weight$", k): + weights[k] = split_q_tp(v, args.num_heads, args.hidden_size, tensor_parallel, mapping.tp_rank) + weights[k] *= scale_factor + + elif re.match("^transformer_blocks.*.attn.to_q.bias$", k): + weights[k] = split_q_bias_tp(v, args.num_heads, args.hidden_size, tensor_parallel, mapping.tp_rank) + weights[k] *= scale_factor + + elif re.match("^transformer_blocks.*.attn.to_v.weight$", k): + weights[k] = split_q_tp(v, args.num_heads, args.hidden_size, tensor_parallel, mapping.tp_rank) + + elif re.match("^transformer_blocks.*.attn.to_v.bias$", k): + weights[k] = split_q_bias_tp(v, args.num_heads, args.hidden_size, tensor_parallel, mapping.tp_rank) + + elif re.match("^transformer_blocks.*.attn.to_out.weight$", k): + weights[k] = split_matrix_tp(v, tensor_parallel, mapping.tp_rank, dim=1) + + tok = time.time() + t = time.strftime("%H:%M:%S", time.gmtime(tok - tik)) + print(f"Weights loaded. Total time: {t}") + return weights + + +def save_config(args): + if not os.path.exists(args.output_dir): + os.makedirs(args.output_dir) + config = { + "architecture": "F5TTS", + "dtype": args.dtype, + "hidden_size": 1024, + "num_hidden_layers": 22, + "num_attention_heads": 16, + "dim_head": 64, + "dropout": 0.1, + "ff_mult": 2, + "mel_dim": 100, + "text_num_embeds": 256, + "text_dim": 512, + "conv_layers": 4, + "long_skip_connection": False, + "mapping": { + "world_size": args.cp_size * args.tp_size * args.pp_size, + "cp_size": args.cp_size, + "tp_size": args.tp_size, + "pp_size": args.pp_size, + }, + } + if args.fp8_linear: + config["quantization"] = { + "quant_algo": "FP8", + # TODO: add support for exclude modules. + # 'exclude_modules': "*final_layer*", + } + + with open(os.path.join(args.output_dir, "config.json"), "w") as f: + json.dump(config, f, indent=4) + + +def covert_and_save(args, rank): + if rank == 0: + save_config(args) + + mapping = Mapping( + world_size=args.cp_size * args.tp_size * args.pp_size, + rank=rank, + cp_size=args.cp_size, + tp_size=args.tp_size, + pp_size=args.pp_size, + ) + + weights = convert_timm_dit(args, mapping, dtype=args.dtype) + + safetensors.torch.save_file(weights, os.path.join(args.output_dir, f"rank{rank}.safetensors")) + + +def execute(workers, func, args): + if workers == 1: + for rank, f in enumerate(func): + f(args, rank) + else: + with ThreadPoolExecutor(max_workers=workers) as p: + futures = [p.submit(f, args, rank) for rank, f in enumerate(func)] + exceptions = [] + for future in as_completed(futures): + try: + future.result() + except Exception as e: + traceback.print_exc() + exceptions.append(e) + assert len(exceptions) == 0, "Checkpoint conversion failed, please check error log." + + +def main(): + args = parse_arguments() + world_size = args.cp_size * args.tp_size * args.pp_size + + assert args.pp_size == 1, "PP is not supported yet." + + tik = time.time() + if args.timm_ckpt is None: + return + print("start execute") + execute(args.workers, [covert_and_save] * world_size, args) + + tok = time.time() + t = time.strftime("%H:%M:%S", time.gmtime(tok - tik)) + print(f"Total time of converting checkpoints: {t}") + + +if __name__ == "__main__": + main() diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/scripts/export_vocoder_to_onnx.py b/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/scripts/export_vocoder_to_onnx.py new file mode 100644 index 0000000..6743aec --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/scripts/export_vocoder_to_onnx.py @@ -0,0 +1,138 @@ +# Copyright (c) 2024, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import argparse + +import torch +import torch.nn as nn +from conv_stft import STFT +from huggingface_hub import hf_hub_download +from vocos import Vocos + + +opset_version = 17 + + +def get_args(): + parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter) + parser.add_argument( + "--vocoder", + type=str, + default="vocos", + choices=["vocos", "bigvgan"], + help="Vocoder to export", + ) + parser.add_argument( + "--output-path", + type=str, + default="./vocos_vocoder.onnx", + help="Output path", + ) + return parser.parse_args() + + +class ISTFTHead(nn.Module): + def __init__(self, n_fft: int, hop_length: int): + super().__init__() + self.out = None + self.stft = STFT(fft_len=n_fft, win_hop=hop_length, win_len=n_fft) + + def forward(self, x: torch.Tensor): + x = self.out(x).transpose(1, 2) + mag, p = x.chunk(2, dim=1) + mag = torch.exp(mag) + mag = torch.clip(mag, max=1e2) + real = mag * torch.cos(p) + imag = mag * torch.sin(p) + audio = self.stft.inverse(input1=real, input2=imag, input_type="realimag") + return audio + + +class VocosVocoder(nn.Module): + def __init__(self, vocos_vocoder): + super(VocosVocoder, self).__init__() + self.vocos_vocoder = vocos_vocoder + istft_head_out = self.vocos_vocoder.head.out + n_fft = self.vocos_vocoder.head.istft.n_fft + hop_length = self.vocos_vocoder.head.istft.hop_length + istft_head_for_export = ISTFTHead(n_fft, hop_length) + istft_head_for_export.out = istft_head_out + self.vocos_vocoder.head = istft_head_for_export + + def forward(self, mel): + waveform = self.vocos_vocoder.decode(mel) + return waveform + + +def export_VocosVocoder(vocos_vocoder, output_path, verbose): + vocos_vocoder = VocosVocoder(vocos_vocoder).cuda() + vocos_vocoder.eval() + + dummy_batch_size = 8 + dummy_input_length = 500 + + dummy_mel = torch.randn(dummy_batch_size, 100, dummy_input_length).cuda() + + with torch.no_grad(): + dummy_waveform = vocos_vocoder(mel=dummy_mel) + print(dummy_waveform.shape) + + dummy_input = dummy_mel + + torch.onnx.export( + vocos_vocoder, + dummy_input, + output_path, + opset_version=opset_version, + do_constant_folding=True, + input_names=["mel"], + output_names=["waveform"], + dynamic_axes={ + "mel": {0: "batch_size", 2: "input_length"}, + "waveform": {0: "batch_size", 1: "output_length"}, + }, + verbose=verbose, + ) + + print("Exported to {}".format(output_path)) + + +def load_vocoder(vocoder_name="vocos", is_local=False, local_path="", device="cpu", hf_cache_dir=None): + if vocoder_name == "vocos": + # vocoder = Vocos.from_pretrained("charactr/vocos-mel-24khz").to(device) + if is_local: + print(f"Load vocos from local path {local_path}") + config_path = f"{local_path}/config.yaml" + model_path = f"{local_path}/pytorch_model.bin" + else: + print("Download Vocos from huggingface charactr/vocos-mel-24khz") + repo_id = "charactr/vocos-mel-24khz" + config_path = hf_hub_download(repo_id=repo_id, cache_dir=hf_cache_dir, filename="config.yaml") + model_path = hf_hub_download(repo_id=repo_id, cache_dir=hf_cache_dir, filename="pytorch_model.bin") + vocoder = Vocos.from_hparams(config_path) + state_dict = torch.load(model_path, map_location="cpu", weights_only=True) + vocoder.load_state_dict(state_dict) + vocoder = vocoder.eval().to(device) + elif vocoder_name == "bigvgan": + raise NotImplementedError("BigVGAN is not supported yet") + vocoder.remove_weight_norm() + vocoder = vocoder.eval().to(device) + return vocoder + + +if __name__ == "__main__": + args = get_args() + vocoder = load_vocoder(vocoder_name=args.vocoder, device="cpu", hf_cache_dir=None) + if args.vocoder == "vocos": + export_VocosVocoder(vocoder, args.output_path, verbose=False) diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/scripts/export_vocos_trt.sh b/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/scripts/export_vocos_trt.sh new file mode 100644 index 0000000..2702275 --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/scripts/export_vocos_trt.sh @@ -0,0 +1,43 @@ +#!/bin/bash +# Copyright (c) 2025, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +TRTEXEC="/usr/src/tensorrt/bin/trtexec" + +ONNX_PATH=$1 +ENGINE_PATH=$2 +echo "ONNX_PATH: $ONNX_PATH" +echo "ENGINE_PATH: $ENGINE_PATH" +PRECISION="fp32" + + +MIN_BATCH_SIZE=1 +OPT_BATCH_SIZE=1 +MAX_BATCH_SIZE=8 + +MIN_INPUT_LENGTH=1 +OPT_INPUT_LENGTH=1000 +MAX_INPUT_LENGTH=3000 + +MEL_MIN_SHAPE="${MIN_BATCH_SIZE}x100x${MIN_INPUT_LENGTH}" +MEL_OPT_SHAPE="${OPT_BATCH_SIZE}x100x${OPT_INPUT_LENGTH}" +MEL_MAX_SHAPE="${MAX_BATCH_SIZE}x100x${MAX_INPUT_LENGTH}" + +${TRTEXEC} \ + --minShapes="mel:${MEL_MIN_SHAPE}" \ + --optShapes="mel:${MEL_OPT_SHAPE}" \ + --maxShapes="mel:${MEL_MAX_SHAPE}" \ + --onnx=${ONNX_PATH} \ + --saveEngine=${ENGINE_PATH} + diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/scripts/fill_template.py b/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/scripts/fill_template.py new file mode 100644 index 0000000..105cfac --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/runtime/triton_trtllm/scripts/fill_template.py @@ -0,0 +1,36 @@ +#! /usr/bin/env python3 +from argparse import ArgumentParser +from string import Template + + +def main(file_path, substitutions, in_place, participant_ids): + with open(file_path) as f: + pbtxt = Template(f.read()) + + sub_dict = {"max_queue_size": 0} + sub_dict["participant_ids"] = participant_ids + for sub in substitutions.split(","): + key, value = sub.split(":") + sub_dict[key] = value + + pbtxt = pbtxt.safe_substitute(sub_dict) + + if in_place: + with open(file_path, "w") as f: + f.write(pbtxt) + else: + print(pbtxt) + + +if __name__ == "__main__": + parser = ArgumentParser() + parser.add_argument("file_path", help="path of the .pbtxt to modify") + parser.add_argument( + "substitutions", + help="substitutions to perform, in the format variable_name_1:value_1,variable_name_2:value_2...", + ) + parser.add_argument("--in_place", "-i", action="store_true", help="do the operation in-place") + parser.add_argument("--participant_ids", help="Participant IDs for the model", default="") + args = parser.parse_args() + + main(**vars(args)) diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/scripts/count_max_epoch.py b/bi_v100-f5-tts/F5-TTS/src/f5_tts/scripts/count_max_epoch.py new file mode 100644 index 0000000..5e62b76 --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/scripts/count_max_epoch.py @@ -0,0 +1,33 @@ +"""ADAPTIVE BATCH SIZE""" + +print("Adaptive batch size: using grouping batch sampler, frames_per_gpu fixed fed in") +print(" -> least padding, gather wavs with accumulated frames in a batch\n") + +# data +total_hours = 95282 +mel_hop_length = 256 +mel_sampling_rate = 24000 + +# target +wanted_max_updates = 1200000 + +# train params +gpus = 8 +frames_per_gpu = 38400 # 8 * 38400 = 307200 +grad_accum = 1 + +# intermediate +mini_batch_frames = frames_per_gpu * grad_accum * gpus +mini_batch_hours = mini_batch_frames * mel_hop_length / mel_sampling_rate / 3600 +updates_per_epoch = total_hours / mini_batch_hours +# steps_per_epoch = updates_per_epoch * grad_accum + +# result +epochs = wanted_max_updates / updates_per_epoch +print(f"epochs should be set to: {epochs:.0f} ({epochs / grad_accum:.1f} x gd_acum {grad_accum})") +print(f"progress_bar should show approx. 0/{updates_per_epoch:.0f} updates") +# print(f" or approx. 0/{steps_per_epoch:.0f} steps") + +# others +print(f"total {total_hours:.0f} hours") +print(f"mini-batch of {mini_batch_frames:.0f} frames, {mini_batch_hours:.2f} hours per mini-batch") diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/scripts/count_params_gflops.py b/bi_v100-f5-tts/F5-TTS/src/f5_tts/scripts/count_params_gflops.py new file mode 100644 index 0000000..d706388 --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/scripts/count_params_gflops.py @@ -0,0 +1,40 @@ +import os +import sys + + +sys.path.append(os.getcwd()) + +import thop +import torch + +from f5_tts.model import CFM, DiT + + +""" ~155M """ +# transformer = UNetT(dim = 768, depth = 20, heads = 12, ff_mult = 4) +# transformer = UNetT(dim = 768, depth = 20, heads = 12, ff_mult = 4, text_dim = 512, conv_layers = 4) +# transformer = DiT(dim = 768, depth = 18, heads = 12, ff_mult = 2) +# transformer = DiT(dim = 768, depth = 18, heads = 12, ff_mult = 2, text_dim = 512, conv_layers = 4) +# transformer = DiT(dim = 768, depth = 18, heads = 12, ff_mult = 2, text_dim = 512, conv_layers = 4, long_skip_connection = True) +# transformer = MMDiT(dim = 512, depth = 16, heads = 16, ff_mult = 2) + +""" ~335M """ +# FLOPs: 622.1 G, Params: 333.2 M +# transformer = UNetT(dim = 1024, depth = 24, heads = 16, ff_mult = 4) +# FLOPs: 363.4 G, Params: 335.8 M +transformer = DiT(dim=1024, depth=22, heads=16, ff_mult=2, text_dim=512, conv_layers=4) + + +model = CFM(transformer=transformer) +target_sample_rate = 24000 +n_mel_channels = 100 +hop_length = 256 +duration = 20 +frame_length = int(duration * target_sample_rate / hop_length) +text_length = 150 + +flops, params = thop.profile( + model, inputs=(torch.randn(1, frame_length, n_mel_channels), torch.zeros(1, text_length, dtype=torch.long)) +) +print(f"FLOPs: {flops / 1e9} G") +print(f"Params: {params / 1e6} M") diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/socket_client.py b/bi_v100-f5-tts/F5-TTS/src/f5_tts/socket_client.py new file mode 100644 index 0000000..c47ad44 --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/socket_client.py @@ -0,0 +1,63 @@ +import asyncio +import logging +import socket +import time + +import numpy as np +import pyaudio + + +logging.basicConfig(level=logging.INFO) +logger = logging.getLogger(__name__) + + +async def listen_to_F5TTS(text, server_ip="localhost", server_port=9998): + client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + await asyncio.get_event_loop().run_in_executor(None, client_socket.connect, (server_ip, int(server_port))) + + start_time = time.time() + first_chunk_time = None + + async def play_audio_stream(): + nonlocal first_chunk_time + p = pyaudio.PyAudio() + stream = p.open(format=pyaudio.paFloat32, channels=1, rate=24000, output=True, frames_per_buffer=2048) + + try: + while True: + data = await asyncio.get_event_loop().run_in_executor(None, client_socket.recv, 8192) + if not data: + break + if data == b"END": + logger.info("End of audio received.") + break + + audio_array = np.frombuffer(data, dtype=np.float32) + stream.write(audio_array.tobytes()) + + if first_chunk_time is None: + first_chunk_time = time.time() + + finally: + stream.stop_stream() + stream.close() + p.terminate() + + logger.info(f"Total time taken: {time.time() - start_time:.4f} seconds") + + try: + data_to_send = f"{text}".encode("utf-8") + await asyncio.get_event_loop().run_in_executor(None, client_socket.sendall, data_to_send) + await play_audio_stream() + + except Exception as e: + logger.error(f"Error in listen_to_F5TTS: {e}") + + finally: + client_socket.close() + + +if __name__ == "__main__": + text_to_send = "As a Reader assistant, I'm familiar with new technology. which are key to its improved performance in terms of both training speed and inference efficiency. Let's break down the components" + + asyncio.run(listen_to_F5TTS(text_to_send)) diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/socket_server.py b/bi_v100-f5-tts/F5-TTS/src/f5_tts/socket_server.py new file mode 100644 index 0000000..3fd780a --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/socket_server.py @@ -0,0 +1,268 @@ +import argparse +import gc +import logging +import queue +import socket +import struct +import threading +import traceback +import wave +from importlib.resources import files + +import numpy as np +import torch +import torchaudio +from huggingface_hub import hf_hub_download +from hydra.utils import get_class +from omegaconf import OmegaConf + +from f5_tts.infer.utils_infer import ( + chunk_text, + infer_batch_process, + load_model, + load_vocoder, + preprocess_ref_audio_text, +) + + +logging.basicConfig(level=logging.INFO) +logger = logging.getLogger(__name__) + + +class AudioFileWriterThread(threading.Thread): + """Threaded file writer to avoid blocking the TTS streaming process.""" + + def __init__(self, output_file, sampling_rate): + super().__init__() + self.output_file = output_file + self.sampling_rate = sampling_rate + self.queue = queue.Queue() + self.stop_event = threading.Event() + self.audio_data = [] + + def run(self): + """Process queued audio data and write it to a file.""" + logger.info("AudioFileWriterThread started.") + with wave.open(self.output_file, "wb") as wf: + wf.setnchannels(1) + wf.setsampwidth(2) + wf.setframerate(self.sampling_rate) + + while not self.stop_event.is_set() or not self.queue.empty(): + try: + chunk = self.queue.get(timeout=0.1) + if chunk is not None: + chunk = np.int16(chunk * 32767) + self.audio_data.append(chunk) + wf.writeframes(chunk.tobytes()) + except queue.Empty: + continue + + def add_chunk(self, chunk): + """Add a new chunk to the queue.""" + self.queue.put(chunk) + + def stop(self): + """Stop writing and ensure all queued data is written.""" + self.stop_event.set() + self.join() + logger.info("Audio writing completed.") + + +class TTSStreamingProcessor: + def __init__(self, model, ckpt_file, vocab_file, ref_audio, ref_text, device=None, dtype=torch.float32): + self.device = device or ( + "cuda" + if torch.cuda.is_available() + else "xpu" + if torch.xpu.is_available() + else "mps" + if torch.backends.mps.is_available() + else "cpu" + ) + model_cfg = OmegaConf.load(str(files("f5_tts").joinpath(f"configs/{model}.yaml"))) + self.model_cls = get_class(f"f5_tts.model.{model_cfg.model.backbone}") + self.model_arc = model_cfg.model.arch + self.mel_spec_type = model_cfg.model.mel_spec.mel_spec_type + self.sampling_rate = model_cfg.model.mel_spec.target_sample_rate + + self.model = self.load_ema_model(ckpt_file, vocab_file, dtype) + self.vocoder = self.load_vocoder_model() + + self.update_reference(ref_audio, ref_text) + self._warm_up() + self.file_writer_thread = None + self.first_package = True + + def load_ema_model(self, ckpt_file, vocab_file, dtype): + return load_model( + self.model_cls, + self.model_arc, + ckpt_path=ckpt_file, + mel_spec_type=self.mel_spec_type, + vocab_file=vocab_file, + ode_method="euler", + use_ema=True, + device=self.device, + ).to(self.device, dtype=dtype) + + def load_vocoder_model(self): + return load_vocoder(vocoder_name=self.mel_spec_type, is_local=False, local_path=None, device=self.device) + + def update_reference(self, ref_audio, ref_text): + self.ref_audio, self.ref_text = preprocess_ref_audio_text(ref_audio, ref_text) + self.audio, self.sr = torchaudio.load(self.ref_audio) + + ref_audio_duration = self.audio.shape[-1] / self.sr + ref_text_byte_len = len(self.ref_text.encode("utf-8")) + self.max_chars = int(ref_text_byte_len / (ref_audio_duration) * (25 - ref_audio_duration)) + self.few_chars = int(ref_text_byte_len / (ref_audio_duration) * (25 - ref_audio_duration) / 2) + self.min_chars = int(ref_text_byte_len / (ref_audio_duration) * (25 - ref_audio_duration) / 4) + + def _warm_up(self): + logger.info("Warming up the model...") + gen_text = "Warm-up text for the model." + for _ in infer_batch_process( + (self.audio, self.sr), + self.ref_text, + [gen_text], + self.model, + self.vocoder, + progress=None, + device=self.device, + streaming=True, + ): + pass + logger.info("Warm-up completed.") + + def generate_stream(self, text, conn): + text_batches = chunk_text(text, max_chars=self.max_chars) + if self.first_package: + text_batches = chunk_text(text_batches[0], max_chars=self.few_chars) + text_batches[1:] + text_batches = chunk_text(text_batches[0], max_chars=self.min_chars) + text_batches[1:] + self.first_package = False + + audio_stream = infer_batch_process( + (self.audio, self.sr), + self.ref_text, + text_batches, + self.model, + self.vocoder, + progress=None, + device=self.device, + streaming=True, + chunk_size=2048, + ) + + # Reset the file writer thread + if self.file_writer_thread is not None: + self.file_writer_thread.stop() + self.file_writer_thread = AudioFileWriterThread("output.wav", self.sampling_rate) + self.file_writer_thread.start() + + for audio_chunk, _ in audio_stream: + if len(audio_chunk) > 0: + logger.info(f"Generated audio chunk of size: {len(audio_chunk)}") + + # Send audio chunk via socket + conn.sendall(struct.pack(f"{len(audio_chunk)}f", *audio_chunk)) + + # Write to file asynchronously + self.file_writer_thread.add_chunk(audio_chunk) + + logger.info("Finished sending audio stream.") + conn.sendall(b"END") # Send end signal + + # Ensure all audio data is written before exiting + self.file_writer_thread.stop() + + +def handle_client(conn, processor): + try: + with conn: + conn.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) + while True: + data = conn.recv(1024) + if not data: + processor.first_package = True + break + data_str = data.decode("utf-8").strip() + logger.info(f"Received text: {data_str}") + + try: + processor.generate_stream(data_str, conn) + except Exception as inner_e: + logger.error(f"Error during processing: {inner_e}") + traceback.print_exc() + break + except Exception as e: + logger.error(f"Error handling client: {e}") + traceback.print_exc() + + +def start_server(host, port, processor): + with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: + s.bind((host, port)) + s.listen() + logger.info(f"Server started on {host}:{port}") + while True: + conn, addr = s.accept() + logger.info(f"Connected by {addr}") + handle_client(conn, processor) + + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + + parser.add_argument("--host", default="0.0.0.0") + parser.add_argument("--port", default=9998) + + parser.add_argument( + "--model", + default="F5TTS_v1_Base", + help="The model name, e.g. F5TTS_v1_Base", + ) + parser.add_argument( + "--ckpt_file", + default=str(hf_hub_download(repo_id="SWivid/F5-TTS", filename="F5TTS_v1_Base/model_1250000.safetensors")), + help="Path to the model checkpoint file", + ) + parser.add_argument( + "--vocab_file", + default="", + help="Path to the vocab file if customized", + ) + + parser.add_argument( + "--ref_audio", + default=str(files("f5_tts").joinpath("infer/examples/basic/basic_ref_en.wav")), + help="Reference audio to provide model with speaker characteristics", + ) + parser.add_argument( + "--ref_text", + default="", + help="Reference audio subtitle, leave empty to auto-transcribe", + ) + + parser.add_argument("--device", default=None, help="Device to run the model on") + parser.add_argument("--dtype", default=torch.float32, help="Data type to use for model inference") + + args = parser.parse_args() + + try: + # Initialize the processor with the model and vocoder + processor = TTSStreamingProcessor( + model=args.model, + ckpt_file=args.ckpt_file, + vocab_file=args.vocab_file, + ref_audio=args.ref_audio, + ref_text=args.ref_text, + device=args.device, + dtype=args.dtype, + ) + + # Start the server + start_server(args.host, args.port, processor) + + except KeyboardInterrupt: + gc.collect() diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/train/README.md b/bi_v100-f5-tts/F5-TTS/src/f5_tts/train/README.md new file mode 100644 index 0000000..b66d120 --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/train/README.md @@ -0,0 +1,92 @@ +# Training + +Check your FFmpeg installation: +```bash +ffmpeg -version +``` +If not found, install it first (or skip assuming you know of other backends available). + +## Prepare Dataset + +Example data processing scripts, and you may tailor your own one along with a Dataset class in `src/f5_tts/model/dataset.py`. + +### 1. Some specific Datasets preparing scripts +Download corresponding dataset first, and fill in the path in scripts. + +```bash +# Prepare the Emilia dataset +python src/f5_tts/train/datasets/prepare_emilia.py + +# Prepare the Wenetspeech4TTS dataset +python src/f5_tts/train/datasets/prepare_wenetspeech4tts.py + +# Prepare the LibriTTS dataset +python src/f5_tts/train/datasets/prepare_libritts.py + +# Prepare the LJSpeech dataset +python src/f5_tts/train/datasets/prepare_ljspeech.py +``` + +### 2. Create custom dataset with metadata.csv +Use guidance see [#57 here](https://github.com/SWivid/F5-TTS/discussions/57#discussioncomment-10959029). + +```bash +python src/f5_tts/train/datasets/prepare_csv_wavs.py +``` + +## Training & Finetuning + +Once your datasets are prepared, you can start the training process. + +### 1. Training script used for pretrained model + +```bash +# setup accelerate config, e.g. use multi-gpu ddp, fp16 +# will be to: ~/.cache/huggingface/accelerate/default_config.yaml +accelerate config + +# .yaml files are under src/f5_tts/configs directory +accelerate launch src/f5_tts/train/train.py --config-name F5TTS_v1_Base.yaml + +# possible to overwrite accelerate and hydra config +accelerate launch --mixed_precision=fp16 src/f5_tts/train/train.py --config-name F5TTS_v1_Base.yaml ++datasets.batch_size_per_gpu=19200 +``` + +### 2. Finetuning practice +Discussion board for Finetuning [#57](https://github.com/SWivid/F5-TTS/discussions/57). + +Gradio UI training/finetuning with `src/f5_tts/train/finetune_gradio.py` see [#143](https://github.com/SWivid/F5-TTS/discussions/143). + +If want to finetune with a variant version e.g. *F5TTS_v1_Base_no_zero_init*, manually download pretrained checkpoint from model weight repository and fill in the path correspondingly on web interface. + +If use tensorboard as logger, install it first with `pip install tensorboard`. + +The `use_ema = True` might be harmful for early-stage finetuned checkpoints (which goes just few updates, thus ema weights still dominated by pretrained ones), try turn it off with finetune gradio option or `load_model(..., use_ema=False)`, see if offer better results. + +### 3. W&B Logging + +The `wandb/` dir will be created under path you run training/finetuning scripts. + +By default, the training script does NOT use logging (assuming you didn't manually log in using `wandb login`). + +To turn on wandb logging, you can either: + +1. Manually login with `wandb login`: Learn more [here](https://docs.wandb.ai/ref/cli/wandb-login) +2. Automatically login programmatically by setting an environment variable: Get an API KEY at https://wandb.ai/authorize and set the environment variable as follows: + +On Mac & Linux: + +``` +export WANDB_API_KEY= +``` + +On Windows: + +``` +set WANDB_API_KEY= +``` +Moreover, if you couldn't access W&B and want to log metrics offline, you can set the environment variable as follows: + +``` +export WANDB_MODE=offline +``` diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/train/datasets/prepare_csv_wavs.py b/bi_v100-f5-tts/F5-TTS/src/f5_tts/train/datasets/prepare_csv_wavs.py new file mode 100644 index 0000000..26ad6f8 --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/train/datasets/prepare_csv_wavs.py @@ -0,0 +1,283 @@ +import concurrent.futures +import multiprocessing +import os +import shutil +import signal +import subprocess # For invoking ffprobe +import sys +from contextlib import contextmanager + + +sys.path.append(os.getcwd()) + +import argparse +import csv +import json +from importlib.resources import files +from pathlib import Path + +import torchaudio +from datasets.arrow_writer import ArrowWriter +from tqdm import tqdm + +from f5_tts.model.utils import convert_char_to_pinyin + + +PRETRAINED_VOCAB_PATH = files("f5_tts").joinpath("../../data/Emilia_ZH_EN_pinyin/vocab.txt") + + +def is_csv_wavs_format(input_dataset_dir): + fpath = Path(input_dataset_dir) + metadata = fpath / "metadata.csv" + wavs = fpath / "wavs" + return metadata.exists() and metadata.is_file() and wavs.exists() and wavs.is_dir() + + +# Configuration constants +BATCH_SIZE = 100 # Batch size for text conversion +MAX_WORKERS = max(1, multiprocessing.cpu_count() - 1) # Leave one CPU free +THREAD_NAME_PREFIX = "AudioProcessor" +CHUNK_SIZE = 100 # Number of files to process per worker batch + +executor = None # Global executor for cleanup + + +@contextmanager +def graceful_exit(): + """Context manager for graceful shutdown on signals""" + + def signal_handler(signum, frame): + print("\nReceived signal to terminate. Cleaning up...") + if executor is not None: + print("Shutting down executor...") + executor.shutdown(wait=False, cancel_futures=True) + sys.exit(1) + + # Set up signal handlers + signal.signal(signal.SIGINT, signal_handler) + signal.signal(signal.SIGTERM, signal_handler) + + try: + yield + finally: + if executor is not None: + executor.shutdown(wait=False) + + +def process_audio_file(audio_path, text, polyphone): + """Process a single audio file by checking its existence and extracting duration.""" + if not Path(audio_path).exists(): + print(f"audio {audio_path} not found, skipping") + return None + try: + audio_duration = get_audio_duration(audio_path) + if audio_duration <= 0: + raise ValueError(f"Duration {audio_duration} is non-positive.") + return (audio_path, text, audio_duration) + except Exception as e: + print(f"Warning: Failed to process {audio_path} due to error: {e}. Skipping corrupt file.") + return None + + +def batch_convert_texts(texts, polyphone, batch_size=BATCH_SIZE): + """Convert a list of texts to pinyin in batches.""" + converted_texts = [] + for i in range(0, len(texts), batch_size): + batch = texts[i : i + batch_size] + converted_batch = convert_char_to_pinyin(batch, polyphone=polyphone) + converted_texts.extend(converted_batch) + return converted_texts + + +def prepare_csv_wavs_dir(input_dir, num_workers=None): + global executor + assert is_csv_wavs_format(input_dir), f"not csv_wavs format: {input_dir}" + input_dir = Path(input_dir) + metadata_path = input_dir / "metadata.csv" + audio_path_text_pairs = read_audio_text_pairs(metadata_path.as_posix()) + + polyphone = True + total_files = len(audio_path_text_pairs) + + # Use provided worker count or calculate optimal number + worker_count = num_workers if num_workers is not None else min(MAX_WORKERS, total_files) + print(f"\nProcessing {total_files} audio files using {worker_count} workers...") + + with graceful_exit(): + # Initialize thread pool with optimized settings + with concurrent.futures.ThreadPoolExecutor( + max_workers=worker_count, thread_name_prefix=THREAD_NAME_PREFIX + ) as exec: + executor = exec + results = [] + + # Process files in chunks for better efficiency + for i in range(0, len(audio_path_text_pairs), CHUNK_SIZE): + chunk = audio_path_text_pairs[i : i + CHUNK_SIZE] + # Submit futures in order + chunk_futures = [executor.submit(process_audio_file, pair[0], pair[1], polyphone) for pair in chunk] + + # Iterate over futures in the original submission order to preserve ordering + for future in tqdm( + chunk_futures, + total=len(chunk), + desc=f"Processing chunk {i // CHUNK_SIZE + 1}/{(total_files + CHUNK_SIZE - 1) // CHUNK_SIZE}", + ): + try: + result = future.result() + if result is not None: + results.append(result) + except Exception as e: + print(f"Error processing file: {e}") + + executor = None + + # Filter out failed results + processed = [res for res in results if res is not None] + if not processed: + raise RuntimeError("No valid audio files were processed!") + + # Batch process text conversion + raw_texts = [item[1] for item in processed] + converted_texts = batch_convert_texts(raw_texts, polyphone, batch_size=BATCH_SIZE) + + # Prepare final results + sub_result = [] + durations = [] + vocab_set = set() + + for (audio_path, _, duration), conv_text in zip(processed, converted_texts): + sub_result.append({"audio_path": audio_path, "text": conv_text, "duration": duration}) + durations.append(duration) + vocab_set.update(list(conv_text)) + + return sub_result, durations, vocab_set + + +def get_audio_duration(audio_path, timeout=5): + """ + Get the duration of an audio file in seconds using ffmpeg's ffprobe. + Falls back to torchaudio.load() if ffprobe fails. + """ + try: + cmd = [ + "ffprobe", + "-v", + "error", + "-show_entries", + "format=duration", + "-of", + "default=noprint_wrappers=1:nokey=1", + audio_path, + ] + result = subprocess.run( + cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, check=True, timeout=timeout + ) + duration_str = result.stdout.strip() + if duration_str: + return float(duration_str) + raise ValueError("Empty duration string from ffprobe.") + except (subprocess.TimeoutExpired, subprocess.SubprocessError, ValueError) as e: + print(f"Warning: ffprobe failed for {audio_path} with error: {e}. Falling back to torchaudio.") + try: + audio, sample_rate = torchaudio.load(audio_path) + return audio.shape[1] / sample_rate + except Exception as e: + raise RuntimeError(f"Both ffprobe and torchaudio failed for {audio_path}: {e}") + + +def read_audio_text_pairs(csv_file_path): + audio_text_pairs = [] + + parent = Path(csv_file_path).parent + with open(csv_file_path, mode="r", newline="", encoding="utf-8-sig") as csvfile: + reader = csv.reader(csvfile, delimiter="|") + next(reader) # Skip the header row + for row in reader: + if len(row) >= 2: + audio_file = row[0].strip() # First column: audio file path + text = row[1].strip() # Second column: text + audio_file_path = parent / audio_file + audio_text_pairs.append((audio_file_path.as_posix(), text)) + + return audio_text_pairs + + +def save_prepped_dataset(out_dir, result, duration_list, text_vocab_set, is_finetune): + out_dir = Path(out_dir) + out_dir.mkdir(exist_ok=True, parents=True) + print(f"\nSaving to {out_dir} ...") + + # Save dataset with improved batch size for better I/O performance + raw_arrow_path = out_dir / "raw.arrow" + with ArrowWriter(path=raw_arrow_path.as_posix(), writer_batch_size=100) as writer: + for line in tqdm(result, desc="Writing to raw.arrow ..."): + writer.write(line) + + # Save durations to JSON + dur_json_path = out_dir / "duration.json" + with open(dur_json_path.as_posix(), "w", encoding="utf-8") as f: + json.dump({"duration": duration_list}, f, ensure_ascii=False) + + # Handle vocab file - write only once based on finetune flag + voca_out_path = out_dir / "vocab.txt" + if is_finetune: + file_vocab_finetune = PRETRAINED_VOCAB_PATH.as_posix() + shutil.copy2(file_vocab_finetune, voca_out_path) + else: + with open(voca_out_path.as_posix(), "w") as f: + for vocab in sorted(text_vocab_set): + f.write(vocab + "\n") + + dataset_name = out_dir.stem + print(f"\nFor {dataset_name}, sample count: {len(result)}") + print(f"For {dataset_name}, vocab size is: {len(text_vocab_set)}") + print(f"For {dataset_name}, total {sum(duration_list) / 3600:.2f} hours") + + +def prepare_and_save_set(inp_dir, out_dir, is_finetune: bool = True, num_workers: int = None): + if is_finetune: + assert PRETRAINED_VOCAB_PATH.exists(), f"pretrained vocab.txt not found: {PRETRAINED_VOCAB_PATH}" + sub_result, durations, vocab_set = prepare_csv_wavs_dir(inp_dir, num_workers=num_workers) + save_prepped_dataset(out_dir, sub_result, durations, vocab_set, is_finetune) + + +def cli(): + try: + # Before processing, check if ffprobe is available. + if shutil.which("ffprobe") is None: + print( + "Warning: ffprobe is not available. Duration extraction will rely on torchaudio (which may be slower)." + ) + + # Usage examples in help text + parser = argparse.ArgumentParser( + description="Prepare and save dataset.", + epilog=""" +Examples: + # For fine-tuning (default): + python prepare_csv_wavs.py /input/dataset/path /output/dataset/path + + # For pre-training: + python prepare_csv_wavs.py /input/dataset/path /output/dataset/path --pretrain + + # With custom worker count: + python prepare_csv_wavs.py /input/dataset/path /output/dataset/path --workers 4 + """, + ) + parser.add_argument("inp_dir", type=str, help="Input directory containing the data.") + parser.add_argument("out_dir", type=str, help="Output directory to save the prepared data.") + parser.add_argument("--pretrain", action="store_true", help="Enable for new pretrain, otherwise is a fine-tune") + parser.add_argument("--workers", type=int, help=f"Number of worker threads (default: {MAX_WORKERS})") + args = parser.parse_args() + + prepare_and_save_set(args.inp_dir, args.out_dir, is_finetune=not args.pretrain, num_workers=args.workers) + except KeyboardInterrupt: + print("\nOperation cancelled by user. Cleaning up...") + if executor is not None: + executor.shutdown(wait=False, cancel_futures=True) + sys.exit(1) + + +if __name__ == "__main__": + cli() diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/train/datasets/prepare_emilia.py b/bi_v100-f5-tts/F5-TTS/src/f5_tts/train/datasets/prepare_emilia.py new file mode 100644 index 0000000..4c4a771 --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/train/datasets/prepare_emilia.py @@ -0,0 +1,228 @@ +# Emilia Dataset: https://huggingface.co/datasets/amphion/Emilia-Dataset/tree/fc71e07 +# if use updated new version, i.e. WebDataset, feel free to modify / draft your own script + +# generate audio text map for Emilia ZH & EN +# evaluate for vocab size + +import os +import sys + + +sys.path.append(os.getcwd()) + +import json +from concurrent.futures import ProcessPoolExecutor +from importlib.resources import files +from pathlib import Path + +from datasets.arrow_writer import ArrowWriter +from tqdm import tqdm + +from f5_tts.model.utils import convert_char_to_pinyin, repetition_found + + +out_zh = { + "ZH_B00041_S06226", + "ZH_B00042_S09204", + "ZH_B00065_S09430", + "ZH_B00065_S09431", + "ZH_B00066_S09327", + "ZH_B00066_S09328", +} +zh_filters = ["い", "て"] +# seems synthesized audios, or heavily code-switched +out_en = { + "EN_B00013_S00913", + "EN_B00042_S00120", + "EN_B00055_S04111", + "EN_B00061_S00693", + "EN_B00061_S01494", + "EN_B00061_S03375", + "EN_B00059_S00092", + "EN_B00111_S04300", + "EN_B00100_S03759", + "EN_B00087_S03811", + "EN_B00059_S00950", + "EN_B00089_S00946", + "EN_B00078_S05127", + "EN_B00070_S04089", + "EN_B00074_S09659", + "EN_B00061_S06983", + "EN_B00061_S07060", + "EN_B00059_S08397", + "EN_B00082_S06192", + "EN_B00091_S01238", + "EN_B00089_S07349", + "EN_B00070_S04343", + "EN_B00061_S02400", + "EN_B00076_S01262", + "EN_B00068_S06467", + "EN_B00076_S02943", + "EN_B00064_S05954", + "EN_B00061_S05386", + "EN_B00066_S06544", + "EN_B00076_S06944", + "EN_B00072_S08620", + "EN_B00076_S07135", + "EN_B00076_S09127", + "EN_B00065_S00497", + "EN_B00059_S06227", + "EN_B00063_S02859", + "EN_B00075_S01547", + "EN_B00061_S08286", + "EN_B00079_S02901", + "EN_B00092_S03643", + "EN_B00096_S08653", + "EN_B00063_S04297", + "EN_B00063_S04614", + "EN_B00079_S04698", + "EN_B00104_S01666", + "EN_B00061_S09504", + "EN_B00061_S09694", + "EN_B00065_S05444", + "EN_B00063_S06860", + "EN_B00065_S05725", + "EN_B00069_S07628", + "EN_B00083_S03875", + "EN_B00071_S07665", + "EN_B00071_S07665", + "EN_B00062_S04187", + "EN_B00065_S09873", + "EN_B00065_S09922", + "EN_B00084_S02463", + "EN_B00067_S05066", + "EN_B00106_S08060", + "EN_B00073_S06399", + "EN_B00073_S09236", + "EN_B00087_S00432", + "EN_B00085_S05618", + "EN_B00064_S01262", + "EN_B00072_S01739", + "EN_B00059_S03913", + "EN_B00069_S04036", + "EN_B00067_S05623", + "EN_B00060_S05389", + "EN_B00060_S07290", + "EN_B00062_S08995", +} +en_filters = ["ا", "い", "て"] + + +def deal_with_audio_dir(audio_dir): + audio_jsonl = audio_dir.with_suffix(".jsonl") + sub_result, durations = [], [] + vocab_set = set() + bad_case_zh = 0 + bad_case_en = 0 + with open(audio_jsonl, "r") as f: + lines = f.readlines() + for line in tqdm(lines, desc=f"{audio_jsonl.stem}"): + obj = json.loads(line) + text = obj["text"] + if obj["language"] == "zh": + if obj["wav"].split("/")[1] in out_zh or any(f in text for f in zh_filters) or repetition_found(text): + bad_case_zh += 1 + continue + else: + text = text.translate( + str.maketrans({",": ",", "!": "!", "?": "?"}) + ) # not "。" cuz much code-switched + if obj["language"] == "en": + if ( + obj["wav"].split("/")[1] in out_en + or any(f in text for f in en_filters) + or repetition_found(text, length=4) + ): + bad_case_en += 1 + continue + if tokenizer == "pinyin": + text = convert_char_to_pinyin([text], polyphone=polyphone)[0] + duration = obj["duration"] + sub_result.append({"audio_path": str(audio_dir.parent / obj["wav"]), "text": text, "duration": duration}) + durations.append(duration) + vocab_set.update(list(text)) + return sub_result, durations, vocab_set, bad_case_zh, bad_case_en + + +def main(): + assert tokenizer in ["pinyin", "char"] + result = [] + duration_list = [] + text_vocab_set = set() + total_bad_case_zh = 0 + total_bad_case_en = 0 + + # process raw data + executor = ProcessPoolExecutor(max_workers=max_workers) + futures = [] + for lang in langs: + dataset_path = Path(os.path.join(dataset_dir, lang)) + [ + futures.append(executor.submit(deal_with_audio_dir, audio_dir)) + for audio_dir in dataset_path.iterdir() + if audio_dir.is_dir() + ] + for futures in tqdm(futures, total=len(futures)): + sub_result, durations, vocab_set, bad_case_zh, bad_case_en = futures.result() + result.extend(sub_result) + duration_list.extend(durations) + text_vocab_set.update(vocab_set) + total_bad_case_zh += bad_case_zh + total_bad_case_en += bad_case_en + executor.shutdown() + + # save preprocessed dataset to disk + if not os.path.exists(f"{save_dir}"): + os.makedirs(f"{save_dir}") + print(f"\nSaving to {save_dir} ...") + + # dataset = Dataset.from_dict({"audio_path": audio_path_list, "text": text_list, "duration": duration_list}) # oom + # dataset.save_to_disk(f"{save_dir}/raw", max_shard_size="2GB") + with ArrowWriter(path=f"{save_dir}/raw.arrow") as writer: + for line in tqdm(result, desc="Writing to raw.arrow ..."): + writer.write(line) + + # dup a json separately saving duration in case for DynamicBatchSampler ease + with open(f"{save_dir}/duration.json", "w", encoding="utf-8") as f: + json.dump({"duration": duration_list}, f, ensure_ascii=False) + + # vocab map, i.e. tokenizer + # add alphabets and symbols (optional, if plan to ft on de/fr etc.) + # if tokenizer == "pinyin": + # text_vocab_set.update([chr(i) for i in range(32, 127)] + [chr(i) for i in range(192, 256)]) + with open(f"{save_dir}/vocab.txt", "w") as f: + for vocab in sorted(text_vocab_set): + f.write(vocab + "\n") + + print(f"\nFor {dataset_name}, sample count: {len(result)}") + print(f"For {dataset_name}, vocab size is: {len(text_vocab_set)}") + print(f"For {dataset_name}, total {sum(duration_list) / 3600:.2f} hours") + if "ZH" in langs: + print(f"Bad zh transcription case: {total_bad_case_zh}") + if "EN" in langs: + print(f"Bad en transcription case: {total_bad_case_en}\n") + + +if __name__ == "__main__": + max_workers = 32 + + tokenizer = "pinyin" # "pinyin" | "char" + polyphone = True + + langs = ["ZH", "EN"] + dataset_dir = "/Emilia_Dataset/raw" + dataset_name = f"Emilia_{'_'.join(langs)}_{tokenizer}" + save_dir = str(files("f5_tts").joinpath("../../")) + f"/data/{dataset_name}" + print(f"\nPrepare for {dataset_name}, will save to {save_dir}\n") + + main() + + # Emilia ZH & EN + # samples count 37837916 (after removal) + # pinyin vocab size 2543 (polyphone) + # total duration 95281.87 (hours) + # bad zh asr cnt 230435 (samples) + # bad eh asr cnt 37217 (samples) + + # vocab size may be slightly different due to jieba tokenizer and pypinyin (e.g. way of polyphoneme) + # please be careful if using pretrained model, make sure the vocab.txt is same diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/train/datasets/prepare_emilia_v2.py b/bi_v100-f5-tts/F5-TTS/src/f5_tts/train/datasets/prepare_emilia_v2.py new file mode 100644 index 0000000..50322c0 --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/train/datasets/prepare_emilia_v2.py @@ -0,0 +1,94 @@ +# put in src/f5_tts/train/datasets/prepare_emilia_v2.py +# prepares Emilia dataset with the new format w/ Emilia-YODAS + +import json +import os +from concurrent.futures import ProcessPoolExecutor +from importlib.resources import files +from pathlib import Path + +from datasets.arrow_writer import ArrowWriter +from tqdm import tqdm + +from f5_tts.model.utils import repetition_found + + +# Define filters for exclusion +out_en = set() +en_filters = ["ا", "い", "て"] + + +def process_audio_directory(audio_dir): + sub_result, durations, vocab_set = [], [], set() + bad_case_en = 0 + + for file in audio_dir.iterdir(): + if file.suffix == ".json": + with open(file, "r") as f: + obj = json.load(f) + text = obj["text"] + if any(f in text for f in en_filters) or repetition_found(text, length=4): + bad_case_en += 1 + continue + + duration = obj["duration"] + audio_file = file.with_suffix(".mp3") + if audio_file.exists(): + sub_result.append({"audio_path": str(audio_file), "text": text, "duration": duration}) + durations.append(duration) + vocab_set.update(list(text)) + + return sub_result, durations, vocab_set, bad_case_en + + +def main(): + assert tokenizer in ["pinyin", "char"] + result, duration_list, text_vocab_set = [], [], set() + total_bad_case_en = 0 + + executor = ProcessPoolExecutor(max_workers=max_workers) + futures = [] + dataset_path = Path(dataset_dir) + for sub_dir in dataset_path.iterdir(): + if sub_dir.is_dir(): + futures.append(executor.submit(process_audio_directory, sub_dir)) + + for future in tqdm(futures, total=len(futures)): + sub_result, durations, vocab_set, bad_case_en = future.result() + result.extend(sub_result) + duration_list.extend(durations) + text_vocab_set.update(vocab_set) + total_bad_case_en += bad_case_en + + executor.shutdown() + + if not os.path.exists(f"{save_dir}"): + os.makedirs(f"{save_dir}") + + with ArrowWriter(path=f"{save_dir}/raw.arrow") as writer: + for line in tqdm(result, desc="Writing to raw.arrow ..."): + writer.write(line) + + with open(f"{save_dir}/duration.json", "w", encoding="utf-8") as f: + json.dump({"duration": duration_list}, f, ensure_ascii=False) + + with open(f"{save_dir}/vocab.txt", "w") as f: + for vocab in sorted(text_vocab_set): + f.write(vocab + "\n") + + print(f"For {dataset_name}, sample count: {len(result)}") + print(f"For {dataset_name}, vocab size is: {len(text_vocab_set)}") + print(f"For {dataset_name}, total {sum(duration_list) / 3600:.2f} hours") + print(f"Bad en transcription case: {total_bad_case_en}\n") + + +if __name__ == "__main__": + max_workers = 32 + tokenizer = "char" + dataset_dir = "/home/ubuntu/emilia-dataset/Emilia-YODAS/EN" + dataset_name = f"Emilia_EN_{tokenizer}" + # save_dir = os.path.expanduser(f"~/F5-TTS/data/{dataset_name}") + save_dir = str(files("f5_tts").joinpath("../../")) + f"/data/{dataset_name}" + + print(f"Prepare for {dataset_name}, will save to {save_dir}\n") + main() diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/train/datasets/prepare_libritts.py b/bi_v100-f5-tts/F5-TTS/src/f5_tts/train/datasets/prepare_libritts.py new file mode 100644 index 0000000..a892dd6 --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/train/datasets/prepare_libritts.py @@ -0,0 +1,94 @@ +import os +import sys + + +sys.path.append(os.getcwd()) + +import json +from concurrent.futures import ProcessPoolExecutor +from importlib.resources import files +from pathlib import Path + +import soundfile as sf +from datasets.arrow_writer import ArrowWriter +from tqdm import tqdm + + +def deal_with_audio_dir(audio_dir): + sub_result, durations = [], [] + vocab_set = set() + audio_lists = list(audio_dir.rglob("*.wav")) + + for line in audio_lists: + text_path = line.with_suffix(".normalized.txt") + text = open(text_path, "r").read().strip() + duration = sf.info(line).duration + if duration < 0.4 or duration > 30: + continue + sub_result.append({"audio_path": str(line), "text": text, "duration": duration}) + durations.append(duration) + vocab_set.update(list(text)) + return sub_result, durations, vocab_set + + +def main(): + result = [] + duration_list = [] + text_vocab_set = set() + + # process raw data + executor = ProcessPoolExecutor(max_workers=max_workers) + futures = [] + + for subset in tqdm(SUB_SET): + dataset_path = Path(os.path.join(dataset_dir, subset)) + [ + futures.append(executor.submit(deal_with_audio_dir, audio_dir)) + for audio_dir in dataset_path.iterdir() + if audio_dir.is_dir() + ] + for future in tqdm(futures, total=len(futures)): + sub_result, durations, vocab_set = future.result() + result.extend(sub_result) + duration_list.extend(durations) + text_vocab_set.update(vocab_set) + executor.shutdown() + + # save preprocessed dataset to disk + if not os.path.exists(f"{save_dir}"): + os.makedirs(f"{save_dir}") + print(f"\nSaving to {save_dir} ...") + + with ArrowWriter(path=f"{save_dir}/raw.arrow") as writer: + for line in tqdm(result, desc="Writing to raw.arrow ..."): + writer.write(line) + + # dup a json separately saving duration in case for DynamicBatchSampler ease + with open(f"{save_dir}/duration.json", "w", encoding="utf-8") as f: + json.dump({"duration": duration_list}, f, ensure_ascii=False) + + # vocab map, i.e. tokenizer + with open(f"{save_dir}/vocab.txt", "w") as f: + for vocab in sorted(text_vocab_set): + f.write(vocab + "\n") + + print(f"\nFor {dataset_name}, sample count: {len(result)}") + print(f"For {dataset_name}, vocab size is: {len(text_vocab_set)}") + print(f"For {dataset_name}, total {sum(duration_list) / 3600:.2f} hours") + + +if __name__ == "__main__": + max_workers = 36 + + tokenizer = "char" # "pinyin" | "char" + + SUB_SET = ["train-clean-100", "train-clean-360", "train-other-500"] + dataset_dir = "/LibriTTS" + dataset_name = f"LibriTTS_{'_'.join(SUB_SET)}_{tokenizer}".replace("train-clean-", "").replace("train-other-", "") + save_dir = str(files("f5_tts").joinpath("../../")) + f"/data/{dataset_name}" + print(f"\nPrepare for {dataset_name}, will save to {save_dir}\n") + main() + + # For LibriTTS_100_360_500_char, sample count: 354218 + # For LibriTTS_100_360_500_char, vocab size is: 78 + # For LibriTTS_100_360_500_char, total 554.09 hours diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/train/datasets/prepare_ljspeech.py b/bi_v100-f5-tts/F5-TTS/src/f5_tts/train/datasets/prepare_ljspeech.py new file mode 100644 index 0000000..9f64b0a --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/train/datasets/prepare_ljspeech.py @@ -0,0 +1,67 @@ +import os +import sys + + +sys.path.append(os.getcwd()) + +import json +from importlib.resources import files +from pathlib import Path + +import soundfile as sf +from datasets.arrow_writer import ArrowWriter +from tqdm import tqdm + + +def main(): + result = [] + duration_list = [] + text_vocab_set = set() + + with open(meta_info, "r") as f: + lines = f.readlines() + for line in tqdm(lines): + uttr, text, norm_text = line.split("|") + norm_text = norm_text.strip() + wav_path = Path(dataset_dir) / "wavs" / f"{uttr}.wav" + duration = sf.info(wav_path).duration + if duration < 0.4 or duration > 30: + continue + result.append({"audio_path": str(wav_path), "text": norm_text, "duration": duration}) + duration_list.append(duration) + text_vocab_set.update(list(norm_text)) + + # save preprocessed dataset to disk + if not os.path.exists(f"{save_dir}"): + os.makedirs(f"{save_dir}") + print(f"\nSaving to {save_dir} ...") + + with ArrowWriter(path=f"{save_dir}/raw.arrow") as writer: + for line in tqdm(result, desc="Writing to raw.arrow ..."): + writer.write(line) + + # dup a json separately saving duration in case for DynamicBatchSampler ease + with open(f"{save_dir}/duration.json", "w", encoding="utf-8") as f: + json.dump({"duration": duration_list}, f, ensure_ascii=False) + + # vocab map, i.e. tokenizer + # add alphabets and symbols (optional, if plan to ft on de/fr etc.) + with open(f"{save_dir}/vocab.txt", "w") as f: + for vocab in sorted(text_vocab_set): + f.write(vocab + "\n") + + print(f"\nFor {dataset_name}, sample count: {len(result)}") + print(f"For {dataset_name}, vocab size is: {len(text_vocab_set)}") + print(f"For {dataset_name}, total {sum(duration_list) / 3600:.2f} hours") + + +if __name__ == "__main__": + tokenizer = "char" # "pinyin" | "char" + + dataset_dir = "/LJSpeech-1.1" + dataset_name = f"LJSpeech_{tokenizer}" + meta_info = os.path.join(dataset_dir, "metadata.csv") + save_dir = str(files("f5_tts").joinpath("../../")) + f"/data/{dataset_name}" + print(f"\nPrepare for {dataset_name}, will save to {save_dir}\n") + + main() diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/train/datasets/prepare_wenetspeech4tts.py b/bi_v100-f5-tts/F5-TTS/src/f5_tts/train/datasets/prepare_wenetspeech4tts.py new file mode 100644 index 0000000..6498421 --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/train/datasets/prepare_wenetspeech4tts.py @@ -0,0 +1,126 @@ +# generate audio text map for WenetSpeech4TTS +# evaluate for vocab size + +import os +import sys + + +sys.path.append(os.getcwd()) + +import json +from concurrent.futures import ProcessPoolExecutor +from importlib.resources import files + +import torchaudio +from datasets import Dataset +from tqdm import tqdm + +from f5_tts.model.utils import convert_char_to_pinyin + + +def deal_with_sub_path_files(dataset_path, sub_path): + print(f"Dealing with: {sub_path}") + + text_dir = os.path.join(dataset_path, sub_path, "txts") + audio_dir = os.path.join(dataset_path, sub_path, "wavs") + text_files = os.listdir(text_dir) + + audio_paths, texts, durations = [], [], [] + for text_file in tqdm(text_files): + with open(os.path.join(text_dir, text_file), "r", encoding="utf-8") as file: + first_line = file.readline().split("\t") + audio_nm = first_line[0] + audio_path = os.path.join(audio_dir, audio_nm + ".wav") + text = first_line[1].strip() + + audio_paths.append(audio_path) + + if tokenizer == "pinyin": + texts.extend(convert_char_to_pinyin([text], polyphone=polyphone)) + elif tokenizer == "char": + texts.append(text) + + audio, sample_rate = torchaudio.load(audio_path) + durations.append(audio.shape[-1] / sample_rate) + + return audio_paths, texts, durations + + +def main(): + assert tokenizer in ["pinyin", "char"] + + audio_path_list, text_list, duration_list = [], [], [] + + executor = ProcessPoolExecutor(max_workers=max_workers) + futures = [] + for dataset_path in dataset_paths: + sub_items = os.listdir(dataset_path) + sub_paths = [item for item in sub_items if os.path.isdir(os.path.join(dataset_path, item))] + for sub_path in sub_paths: + futures.append(executor.submit(deal_with_sub_path_files, dataset_path, sub_path)) + for future in tqdm(futures, total=len(futures)): + audio_paths, texts, durations = future.result() + audio_path_list.extend(audio_paths) + text_list.extend(texts) + duration_list.extend(durations) + executor.shutdown() + + if not os.path.exists("data"): + os.makedirs("data") + + print(f"\nSaving to {save_dir} ...") + dataset = Dataset.from_dict({"audio_path": audio_path_list, "text": text_list, "duration": duration_list}) + dataset.save_to_disk(f"{save_dir}/raw", max_shard_size="2GB") # arrow format + + with open(f"{save_dir}/duration.json", "w", encoding="utf-8") as f: + json.dump( + {"duration": duration_list}, f, ensure_ascii=False + ) # dup a json separately saving duration in case for DynamicBatchSampler ease + + print("\nEvaluating vocab size (all characters and symbols / all phonemes) ...") + text_vocab_set = set() + for text in tqdm(text_list): + text_vocab_set.update(list(text)) + + # add alphabets and symbols (optional, if plan to ft on de/fr etc.) + if tokenizer == "pinyin": + text_vocab_set.update([chr(i) for i in range(32, 127)] + [chr(i) for i in range(192, 256)]) + + with open(f"{save_dir}/vocab.txt", "w") as f: + for vocab in sorted(text_vocab_set): + f.write(vocab + "\n") + print(f"\nFor {dataset_name}, sample count: {len(text_list)}") + print(f"For {dataset_name}, vocab size is: {len(text_vocab_set)}\n") + + +if __name__ == "__main__": + max_workers = 32 + + tokenizer = "pinyin" # "pinyin" | "char" + polyphone = True + dataset_choice = 1 # 1: Premium, 2: Standard, 3: Basic + + dataset_name = ( + ["WenetSpeech4TTS_Premium", "WenetSpeech4TTS_Standard", "WenetSpeech4TTS_Basic"][dataset_choice - 1] + + "_" + + tokenizer + ) + dataset_paths = [ + "/WenetSpeech4TTS/Basic", + "/WenetSpeech4TTS/Standard", + "/WenetSpeech4TTS/Premium", + ][-dataset_choice:] + save_dir = str(files("f5_tts").joinpath("../../")) + f"/data/{dataset_name}" + print(f"\nChoose Dataset: {dataset_name}, will save to {save_dir}\n") + + main() + + # Results (if adding alphabets with accents and symbols): + # WenetSpeech4TTS Basic Standard Premium + # samples count 3932473 1941220 407494 + # pinyin vocab size 1349 1348 1344 (no polyphone) + # - - 1459 (polyphone) + # char vocab size 5264 5219 5042 + + # vocab size may be slightly different due to jieba tokenizer and pypinyin (e.g. way of polyphoneme) + # please be careful if using pretrained model, make sure the vocab.txt is same diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/train/finetune_cli.py b/bi_v100-f5-tts/F5-TTS/src/f5_tts/train/finetune_cli.py new file mode 100644 index 0000000..cdf42a9 --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/train/finetune_cli.py @@ -0,0 +1,214 @@ +import argparse +import os +import shutil +from importlib.resources import files + +from cached_path import cached_path + +from f5_tts.model import CFM, DiT, Trainer, UNetT +from f5_tts.model.dataset import load_dataset +from f5_tts.model.utils import get_tokenizer + + +# -------------------------- Dataset Settings --------------------------- # +target_sample_rate = 24000 +n_mel_channels = 100 +hop_length = 256 +win_length = 1024 +n_fft = 1024 +mel_spec_type = "vocos" # 'vocos' or 'bigvgan' + + +# -------------------------- Argument Parsing --------------------------- # +def parse_args(): + parser = argparse.ArgumentParser(description="Train CFM Model") + + parser.add_argument( + "--exp_name", + type=str, + default="F5TTS_v1_Base", + choices=["F5TTS_v1_Base", "F5TTS_Base", "E2TTS_Base"], + help="Experiment name", + ) + parser.add_argument("--dataset_name", type=str, default="Emilia_ZH_EN", help="Name of the dataset to use") + parser.add_argument("--learning_rate", type=float, default=1e-5, help="Learning rate for training") + parser.add_argument("--batch_size_per_gpu", type=int, default=3200, help="Batch size per GPU") + parser.add_argument( + "--batch_size_type", type=str, default="frame", choices=["frame", "sample"], help="Batch size type" + ) + parser.add_argument("--max_samples", type=int, default=64, help="Max sequences per batch") + parser.add_argument("--grad_accumulation_steps", type=int, default=1, help="Gradient accumulation steps") + parser.add_argument("--max_grad_norm", type=float, default=1.0, help="Max gradient norm for clipping") + parser.add_argument("--epochs", type=int, default=100, help="Number of training epochs") + parser.add_argument("--num_warmup_updates", type=int, default=20000, help="Warmup updates") + parser.add_argument("--save_per_updates", type=int, default=50000, help="Save checkpoint every N updates") + parser.add_argument( + "--keep_last_n_checkpoints", + type=int, + default=-1, + help="-1 to keep all, 0 to not save intermediate, > 0 to keep last N checkpoints", + ) + parser.add_argument("--last_per_updates", type=int, default=5000, help="Save last checkpoint every N updates") + parser.add_argument("--finetune", action="store_true", help="Use Finetune") + parser.add_argument("--pretrain", type=str, default=None, help="the path to the checkpoint") + parser.add_argument( + "--tokenizer", type=str, default="pinyin", choices=["pinyin", "char", "custom"], help="Tokenizer type" + ) + parser.add_argument( + "--tokenizer_path", + type=str, + default=None, + help="Path to custom tokenizer vocab file (only used if tokenizer = 'custom')", + ) + parser.add_argument( + "--log_samples", + action="store_true", + help="Log inferenced samples per ckpt save updates", + ) + parser.add_argument("--logger", type=str, default=None, choices=[None, "wandb", "tensorboard"], help="logger") + parser.add_argument( + "--bnb_optimizer", + action="store_true", + help="Use 8-bit Adam optimizer from bitsandbytes", + ) + + return parser.parse_args() + + +# -------------------------- Training Settings -------------------------- # + + +def main(): + args = parse_args() + + checkpoint_path = str(files("f5_tts").joinpath(f"../../ckpts/{args.dataset_name}")) + + # Model parameters based on experiment name + + if args.exp_name == "F5TTS_v1_Base": + wandb_resume_id = None + model_cls = DiT + model_cfg = dict( + dim=1024, + depth=22, + heads=16, + ff_mult=2, + text_dim=512, + conv_layers=4, + ) + if args.finetune: + if args.pretrain is None: + ckpt_path = str(cached_path("hf://SWivid/F5-TTS/F5TTS_v1_Base/model_1250000.safetensors")) + else: + ckpt_path = args.pretrain + + elif args.exp_name == "F5TTS_Base": + wandb_resume_id = None + model_cls = DiT + model_cfg = dict( + dim=1024, + depth=22, + heads=16, + ff_mult=2, + text_dim=512, + text_mask_padding=False, + conv_layers=4, + pe_attn_head=1, + ) + if args.finetune: + if args.pretrain is None: + ckpt_path = str(cached_path("hf://SWivid/F5-TTS/F5TTS_Base/model_1200000.pt")) + else: + ckpt_path = args.pretrain + + elif args.exp_name == "E2TTS_Base": + wandb_resume_id = None + model_cls = UNetT + model_cfg = dict( + dim=1024, + depth=24, + heads=16, + ff_mult=4, + text_mask_padding=False, + pe_attn_head=1, + ) + if args.finetune: + if args.pretrain is None: + ckpt_path = str(cached_path("hf://SWivid/E2-TTS/E2TTS_Base/model_1200000.pt")) + else: + ckpt_path = args.pretrain + + if args.finetune: + if not os.path.isdir(checkpoint_path): + os.makedirs(checkpoint_path, exist_ok=True) + + file_checkpoint = os.path.basename(ckpt_path) + if not file_checkpoint.startswith("pretrained_"): # Change: Add 'pretrained_' prefix to copied model + file_checkpoint = "pretrained_" + file_checkpoint + file_checkpoint = os.path.join(checkpoint_path, file_checkpoint) + if not os.path.isfile(file_checkpoint): + shutil.copy2(ckpt_path, file_checkpoint) + print("copy checkpoint for finetune") + + # Use the tokenizer and tokenizer_path provided in the command line arguments + + tokenizer = args.tokenizer + if tokenizer == "custom": + if not args.tokenizer_path: + raise ValueError("Custom tokenizer selected, but no tokenizer_path provided.") + tokenizer_path = args.tokenizer_path + else: + tokenizer_path = args.dataset_name + + vocab_char_map, vocab_size = get_tokenizer(tokenizer_path, tokenizer) + + print("\nvocab : ", vocab_size) + print("\nvocoder : ", mel_spec_type) + + mel_spec_kwargs = dict( + n_fft=n_fft, + hop_length=hop_length, + win_length=win_length, + n_mel_channels=n_mel_channels, + target_sample_rate=target_sample_rate, + mel_spec_type=mel_spec_type, + ) + + model = CFM( + transformer=model_cls(**model_cfg, text_num_embeds=vocab_size, mel_dim=n_mel_channels), + mel_spec_kwargs=mel_spec_kwargs, + vocab_char_map=vocab_char_map, + ) + + trainer = Trainer( + model, + args.epochs, + args.learning_rate, + num_warmup_updates=args.num_warmup_updates, + save_per_updates=args.save_per_updates, + keep_last_n_checkpoints=args.keep_last_n_checkpoints, + checkpoint_path=checkpoint_path, + batch_size_per_gpu=args.batch_size_per_gpu, + batch_size_type=args.batch_size_type, + max_samples=args.max_samples, + grad_accumulation_steps=args.grad_accumulation_steps, + max_grad_norm=args.max_grad_norm, + logger=args.logger, + wandb_project=args.dataset_name, + wandb_run_name=args.exp_name, + wandb_resume_id=wandb_resume_id, + log_samples=args.log_samples, + last_per_updates=args.last_per_updates, + bnb_optimizer=args.bnb_optimizer, + ) + + train_dataset = load_dataset(args.dataset_name, tokenizer, mel_spec_kwargs=mel_spec_kwargs) + + trainer.train( + train_dataset, + resumable_with_seed=666, # seed for shuffling dataset + ) + + +if __name__ == "__main__": + main() diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/train/finetune_gradio.py b/bi_v100-f5-tts/F5-TTS/src/f5_tts/train/finetune_gradio.py new file mode 100644 index 0000000..e990673 --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/train/finetune_gradio.py @@ -0,0 +1,1904 @@ +import gc +import json +import os +import platform +import queue +import random +import re +import shutil +import signal +import subprocess +import sys +import tempfile +import threading +import time +from glob import glob +from importlib.resources import files + +import click +import gradio as gr +import librosa +import numpy as np +import psutil +import torch +import torchaudio +from cached_path import cached_path +from datasets import Dataset as Dataset_ +from datasets.arrow_writer import ArrowWriter +from safetensors.torch import load_file, save_file +from scipy.io import wavfile + +from f5_tts.api import F5TTS +from f5_tts.infer.utils_infer import transcribe +from f5_tts.model.utils import convert_char_to_pinyin + + +training_process = None +system = platform.system() +python_executable = sys.executable or "python" +tts_api = None +last_checkpoint = "" +last_device = "" +last_ema = None + + +path_data = str(files("f5_tts").joinpath("../../data")) +path_project_ckpts = str(files("f5_tts").joinpath("../../ckpts")) +file_train = str(files("f5_tts").joinpath("train/finetune_cli.py")) + +device = ( + "cuda" + if torch.cuda.is_available() + else "xpu" + if torch.xpu.is_available() + else "mps" + if torch.backends.mps.is_available() + else "cpu" +) + + +# Save settings from a JSON file +def save_settings( + project_name, + exp_name, + learning_rate, + batch_size_per_gpu, + batch_size_type, + max_samples, + grad_accumulation_steps, + max_grad_norm, + epochs, + num_warmup_updates, + save_per_updates, + keep_last_n_checkpoints, + last_per_updates, + finetune, + file_checkpoint_train, + tokenizer_type, + tokenizer_file, + mixed_precision, + logger, + ch_8bit_adam, +): + path_project = os.path.join(path_project_ckpts, project_name) + os.makedirs(path_project, exist_ok=True) + file_setting = os.path.join(path_project, "setting.json") + + settings = { + "exp_name": exp_name, + "learning_rate": learning_rate, + "batch_size_per_gpu": batch_size_per_gpu, + "batch_size_type": batch_size_type, + "max_samples": max_samples, + "grad_accumulation_steps": grad_accumulation_steps, + "max_grad_norm": max_grad_norm, + "epochs": epochs, + "num_warmup_updates": num_warmup_updates, + "save_per_updates": save_per_updates, + "keep_last_n_checkpoints": keep_last_n_checkpoints, + "last_per_updates": last_per_updates, + "finetune": finetune, + "file_checkpoint_train": file_checkpoint_train, + "tokenizer_type": tokenizer_type, + "tokenizer_file": tokenizer_file, + "mixed_precision": mixed_precision, + "logger": logger, + "bnb_optimizer": ch_8bit_adam, + } + with open(file_setting, "w") as f: + json.dump(settings, f, indent=4) + return "Settings saved!" + + +# Load settings from a JSON file +def load_settings(project_name): + project_name = project_name.replace("_pinyin", "").replace("_char", "") + path_project = os.path.join(path_project_ckpts, project_name) + file_setting = os.path.join(path_project, "setting.json") + + # Default settings + default_settings = { + "exp_name": "F5TTS_v1_Base", + "learning_rate": 1e-5, + "batch_size_per_gpu": 3200, + "batch_size_type": "frame", + "max_samples": 64, + "grad_accumulation_steps": 1, + "max_grad_norm": 1.0, + "epochs": 100, + "num_warmup_updates": 100, + "save_per_updates": 500, + "keep_last_n_checkpoints": -1, + "last_per_updates": 100, + "finetune": True, + "file_checkpoint_train": "", + "tokenizer_type": "pinyin", + "tokenizer_file": "", + "mixed_precision": "fp16", + "logger": "none", + "bnb_optimizer": False, + } + if device == "mps": + default_settings["mixed_precision"] = "none" + + # Load settings from file if it exists + if os.path.isfile(file_setting): + with open(file_setting, "r") as f: + file_settings = json.load(f) + default_settings.update(file_settings) + + # Return as a tuple in the correct order + return ( + default_settings["exp_name"], + default_settings["learning_rate"], + default_settings["batch_size_per_gpu"], + default_settings["batch_size_type"], + default_settings["max_samples"], + default_settings["grad_accumulation_steps"], + default_settings["max_grad_norm"], + default_settings["epochs"], + default_settings["num_warmup_updates"], + default_settings["save_per_updates"], + default_settings["keep_last_n_checkpoints"], + default_settings["last_per_updates"], + default_settings["finetune"], + default_settings["file_checkpoint_train"], + default_settings["tokenizer_type"], + default_settings["tokenizer_file"], + default_settings["mixed_precision"], + default_settings["logger"], + default_settings["bnb_optimizer"], + ) + + +# Load metadata +def get_audio_duration(audio_path): + """Calculate the duration mono of an audio file.""" + audio, sample_rate = torchaudio.load(audio_path) + return audio.shape[1] / sample_rate + + +def clear_text(text): + """Clean and prepare text by lowering the case and stripping whitespace.""" + return text.lower().strip() + + +def get_rms( + y, + frame_length=2048, + hop_length=512, + pad_mode="constant", +): # https://github.com/RVC-Boss/GPT-SoVITS/blob/main/tools/slicer2.py + padding = (int(frame_length // 2), int(frame_length // 2)) + y = np.pad(y, padding, mode=pad_mode) + + axis = -1 + # put our new within-frame axis at the end for now + out_strides = y.strides + tuple([y.strides[axis]]) + # Reduce the shape on the framing axis + x_shape_trimmed = list(y.shape) + x_shape_trimmed[axis] -= frame_length - 1 + out_shape = tuple(x_shape_trimmed) + tuple([frame_length]) + xw = np.lib.stride_tricks.as_strided(y, shape=out_shape, strides=out_strides) + if axis < 0: + target_axis = axis - 1 + else: + target_axis = axis + 1 + xw = np.moveaxis(xw, -1, target_axis) + # Downsample along the target axis + slices = [slice(None)] * xw.ndim + slices[axis] = slice(0, None, hop_length) + x = xw[tuple(slices)] + + # Calculate power + power = np.mean(np.abs(x) ** 2, axis=-2, keepdims=True) + + return np.sqrt(power) + + +class Slicer: # https://github.com/RVC-Boss/GPT-SoVITS/blob/main/tools/slicer2.py + def __init__( + self, + sr: int, + threshold: float = -40.0, + min_length: int = 2000, + min_interval: int = 300, + hop_size: int = 20, + max_sil_kept: int = 2000, + ): + if not min_length >= min_interval >= hop_size: + raise ValueError("The following condition must be satisfied: min_length >= min_interval >= hop_size") + if not max_sil_kept >= hop_size: + raise ValueError("The following condition must be satisfied: max_sil_kept >= hop_size") + min_interval = sr * min_interval / 1000 + self.threshold = 10 ** (threshold / 20.0) + self.hop_size = round(sr * hop_size / 1000) + self.win_size = min(round(min_interval), 4 * self.hop_size) + self.min_length = round(sr * min_length / 1000 / self.hop_size) + self.min_interval = round(min_interval / self.hop_size) + self.max_sil_kept = round(sr * max_sil_kept / 1000 / self.hop_size) + + def _apply_slice(self, waveform, begin, end): + if len(waveform.shape) > 1: + return waveform[:, begin * self.hop_size : min(waveform.shape[1], end * self.hop_size)] + else: + return waveform[begin * self.hop_size : min(waveform.shape[0], end * self.hop_size)] + + # @timeit + def slice(self, waveform): + if len(waveform.shape) > 1: + samples = waveform.mean(axis=0) + else: + samples = waveform + if samples.shape[0] <= self.min_length: + return [waveform] + rms_list = get_rms(y=samples, frame_length=self.win_size, hop_length=self.hop_size).squeeze(0) + sil_tags = [] + silence_start = None + clip_start = 0 + for i, rms in enumerate(rms_list): + # Keep looping while frame is silent. + if rms < self.threshold: + # Record start of silent frames. + if silence_start is None: + silence_start = i + continue + # Keep looping while frame is not silent and silence start has not been recorded. + if silence_start is None: + continue + # Clear recorded silence start if interval is not enough or clip is too short + is_leading_silence = silence_start == 0 and i > self.max_sil_kept + need_slice_middle = i - silence_start >= self.min_interval and i - clip_start >= self.min_length + if not is_leading_silence and not need_slice_middle: + silence_start = None + continue + # Need slicing. Record the range of silent frames to be removed. + if i - silence_start <= self.max_sil_kept: + pos = rms_list[silence_start : i + 1].argmin() + silence_start + if silence_start == 0: + sil_tags.append((0, pos)) + else: + sil_tags.append((pos, pos)) + clip_start = pos + elif i - silence_start <= self.max_sil_kept * 2: + pos = rms_list[i - self.max_sil_kept : silence_start + self.max_sil_kept + 1].argmin() + pos += i - self.max_sil_kept + pos_l = rms_list[silence_start : silence_start + self.max_sil_kept + 1].argmin() + silence_start + pos_r = rms_list[i - self.max_sil_kept : i + 1].argmin() + i - self.max_sil_kept + if silence_start == 0: + sil_tags.append((0, pos_r)) + clip_start = pos_r + else: + sil_tags.append((min(pos_l, pos), max(pos_r, pos))) + clip_start = max(pos_r, pos) + else: + pos_l = rms_list[silence_start : silence_start + self.max_sil_kept + 1].argmin() + silence_start + pos_r = rms_list[i - self.max_sil_kept : i + 1].argmin() + i - self.max_sil_kept + if silence_start == 0: + sil_tags.append((0, pos_r)) + else: + sil_tags.append((pos_l, pos_r)) + clip_start = pos_r + silence_start = None + # Deal with trailing silence. + total_frames = rms_list.shape[0] + if silence_start is not None and total_frames - silence_start >= self.min_interval: + silence_end = min(total_frames, silence_start + self.max_sil_kept) + pos = rms_list[silence_start : silence_end + 1].argmin() + silence_start + sil_tags.append((pos, total_frames + 1)) + # Apply and return slices. + ####音频+起始时间+终止时间 + if len(sil_tags) == 0: + return [[waveform, 0, int(total_frames * self.hop_size)]] + else: + chunks = [] + if sil_tags[0][0] > 0: + chunks.append([self._apply_slice(waveform, 0, sil_tags[0][0]), 0, int(sil_tags[0][0] * self.hop_size)]) + for i in range(len(sil_tags) - 1): + chunks.append( + [ + self._apply_slice(waveform, sil_tags[i][1], sil_tags[i + 1][0]), + int(sil_tags[i][1] * self.hop_size), + int(sil_tags[i + 1][0] * self.hop_size), + ] + ) + if sil_tags[-1][1] < total_frames: + chunks.append( + [ + self._apply_slice(waveform, sil_tags[-1][1], total_frames), + int(sil_tags[-1][1] * self.hop_size), + int(total_frames * self.hop_size), + ] + ) + return chunks + + +# terminal +def terminate_process_tree(pid, including_parent=True): + try: + parent = psutil.Process(pid) + except psutil.NoSuchProcess: + # Process already terminated + return + + children = parent.children(recursive=True) + for child in children: + try: + os.kill(child.pid, signal.SIGTERM) # or signal.SIGKILL + except OSError: + pass + if including_parent: + try: + os.kill(parent.pid, signal.SIGTERM) # or signal.SIGKILL + except OSError: + pass + + +def terminate_process(pid): + if system == "Windows": + cmd = f"taskkill /t /f /pid {pid}" + os.system(cmd) + else: + terminate_process_tree(pid) + + +def start_training( + dataset_name, + exp_name, + learning_rate, + batch_size_per_gpu, + batch_size_type, + max_samples, + grad_accumulation_steps, + max_grad_norm, + epochs, + num_warmup_updates, + save_per_updates, + keep_last_n_checkpoints, + last_per_updates, + finetune, + file_checkpoint_train, + tokenizer_type, + tokenizer_file, + mixed_precision, + stream, + logger, + ch_8bit_adam, +): + global training_process, tts_api, stop_signal + + if tts_api is not None: + if tts_api is not None: + del tts_api + + gc.collect() + torch.cuda.empty_cache() + tts_api = None + + path_project = os.path.join(path_data, dataset_name) + + if not os.path.isdir(path_project): + yield ( + f"There is not project with name {dataset_name}", + gr.update(interactive=True), + gr.update(interactive=False), + ) + return + + file_raw = os.path.join(path_project, "raw.arrow") + if not os.path.isfile(file_raw): + yield f"There is no file {file_raw}", gr.update(interactive=True), gr.update(interactive=False) + return + + # Check if a training process is already running + if training_process is not None: + return "Train run already!", gr.update(interactive=False), gr.update(interactive=True) + + yield "start train", gr.update(interactive=False), gr.update(interactive=False) + + # Command to run the training script with the specified arguments + + if tokenizer_file == "": + if dataset_name.endswith("_pinyin"): + tokenizer_type = "pinyin" + elif dataset_name.endswith("_char"): + tokenizer_type = "char" + else: + tokenizer_type = "custom" + + dataset_name = dataset_name.replace("_pinyin", "").replace("_char", "") + + if mixed_precision != "none": + fp16 = f"--mixed_precision={mixed_precision}" + else: + fp16 = "" + + cmd = ( + f'accelerate launch {fp16} "{file_train}" --exp_name {exp_name}' + f" --learning_rate {learning_rate}" + f" --batch_size_per_gpu {batch_size_per_gpu}" + f" --batch_size_type {batch_size_type}" + f" --max_samples {max_samples}" + f" --grad_accumulation_steps {grad_accumulation_steps}" + f" --max_grad_norm {max_grad_norm}" + f" --epochs {epochs}" + f" --num_warmup_updates {num_warmup_updates}" + f" --save_per_updates {save_per_updates}" + f" --keep_last_n_checkpoints {keep_last_n_checkpoints}" + f" --last_per_updates {last_per_updates}" + f" --dataset_name {dataset_name}" + ) + + if finetune: + cmd += " --finetune" + + if file_checkpoint_train != "": + cmd += f' --pretrain "{file_checkpoint_train}"' + + if tokenizer_file != "": + cmd += f" --tokenizer_path {tokenizer_file}" + + cmd += f" --tokenizer {tokenizer_type}" + + if logger != "none": + cmd += f" --logger {logger}" + + cmd += " --log_samples" + + if ch_8bit_adam: + cmd += " --bnb_optimizer" + + print("run command : \n" + cmd + "\n") + + save_settings( + dataset_name, + exp_name, + learning_rate, + batch_size_per_gpu, + batch_size_type, + max_samples, + grad_accumulation_steps, + max_grad_norm, + epochs, + num_warmup_updates, + save_per_updates, + keep_last_n_checkpoints, + last_per_updates, + finetune, + file_checkpoint_train, + tokenizer_type, + tokenizer_file, + mixed_precision, + logger, + ch_8bit_adam, + ) + + try: + if not stream: + # Start the training process + training_process = subprocess.Popen(cmd, shell=True) + + time.sleep(5) + yield "train start", gr.update(interactive=False), gr.update(interactive=True) + + # Wait for the training process to finish + training_process.wait() + else: + + def stream_output(pipe, output_queue): + try: + for line in iter(pipe.readline, ""): + output_queue.put(line) + except Exception as e: + output_queue.put(f"Error reading pipe: {str(e)}") + finally: + pipe.close() + + env = os.environ.copy() + env["PYTHONUNBUFFERED"] = "1" + + training_process = subprocess.Popen( + cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, bufsize=1, env=env + ) + yield "Training started ...", gr.update(interactive=False), gr.update(interactive=True) + + stdout_queue = queue.Queue() + stderr_queue = queue.Queue() + + stdout_thread = threading.Thread(target=stream_output, args=(training_process.stdout, stdout_queue)) + stderr_thread = threading.Thread(target=stream_output, args=(training_process.stderr, stderr_queue)) + stdout_thread.daemon = True + stderr_thread.daemon = True + stdout_thread.start() + stderr_thread.start() + stop_signal = False + while True: + if stop_signal: + training_process.terminate() + time.sleep(0.5) + if training_process.poll() is None: + training_process.kill() + yield "Training stopped by user.", gr.update(interactive=True), gr.update(interactive=False) + break + + process_status = training_process.poll() + + # Handle stdout + try: + while True: + output = stdout_queue.get_nowait() + print(output, end="") + match = re.search( + r"Epoch (\d+)/(\d+):\s+(\d+)%\|.*\[(\d+:\d+)<.*?loss=(\d+\.\d+), update=(\d+)", output + ) + if match: + current_epoch = match.group(1) + total_epochs = match.group(2) + percent_complete = match.group(3) + elapsed_time = match.group(4) + loss = match.group(5) + current_update = match.group(6) + message = ( + f"Epoch: {current_epoch}/{total_epochs}, " + f"Progress: {percent_complete}%, " + f"Elapsed Time: {elapsed_time}, " + f"Loss: {loss}, " + f"Update: {current_update}" + ) + yield message, gr.update(interactive=False), gr.update(interactive=True) + elif output.strip(): + yield output, gr.update(interactive=False), gr.update(interactive=True) + except queue.Empty: + pass + + # Handle stderr + try: + while True: + error_output = stderr_queue.get_nowait() + print(error_output, end="") + if error_output.strip(): + yield f"{error_output.strip()}", gr.update(interactive=False), gr.update(interactive=True) + except queue.Empty: + pass + + if process_status is not None and stdout_queue.empty() and stderr_queue.empty(): + if process_status != 0: + yield ( + f"Process crashed with exit code {process_status}!", + gr.update(interactive=False), + gr.update(interactive=True), + ) + else: + yield ( + "Training complete or paused ...", + gr.update(interactive=False), + gr.update(interactive=True), + ) + break + + # Small sleep to prevent CPU thrashing + time.sleep(0.1) + + # Clean up + training_process.stdout.close() + training_process.stderr.close() + training_process.wait() + + time.sleep(1) + + if training_process is None: + text_info = "Train stopped !" + else: + text_info = "Train complete at end !" + + except Exception as e: # Catch all exceptions + # Ensure that we reset the training process variable in case of an error + text_info = f"An error occurred: {str(e)}" + + training_process = None + + yield text_info, gr.update(interactive=True), gr.update(interactive=False) + + +def stop_training(): + global training_process, stop_signal + + if training_process is None: + return "Train not running !", gr.update(interactive=True), gr.update(interactive=False) + terminate_process_tree(training_process.pid) + # training_process = None + stop_signal = True + return "Train stopped !", gr.update(interactive=True), gr.update(interactive=False) + + +def get_list_projects(): + project_list = [] + for folder in os.listdir(path_data): + path_folder = os.path.join(path_data, folder) + if not os.path.isdir(path_folder): + continue + folder = folder.lower() + if folder == "emilia_zh_en_pinyin": + continue + project_list.append(folder) + + projects_selelect = None if not project_list else project_list[-1] + + return project_list, projects_selelect + + +def create_data_project(name, tokenizer_type): + name += "_" + tokenizer_type + os.makedirs(os.path.join(path_data, name), exist_ok=True) + os.makedirs(os.path.join(path_data, name, "dataset"), exist_ok=True) + project_list, projects_selelect = get_list_projects() + return gr.update(choices=project_list, value=name) + + +def transcribe_all(name_project, audio_files, language, user=False, progress=gr.Progress()): + path_project = os.path.join(path_data, name_project) + path_dataset = os.path.join(path_project, "dataset") + path_project_wavs = os.path.join(path_project, "wavs") + file_metadata = os.path.join(path_project, "metadata.csv") + + if not user: + if audio_files is None: + return "You need to load an audio file." + + if os.path.isdir(path_project_wavs): + shutil.rmtree(path_project_wavs) + + if os.path.isfile(file_metadata): + os.remove(file_metadata) + + os.makedirs(path_project_wavs, exist_ok=True) + + if user: + file_audios = [ + file + for format in ("*.wav", "*.ogg", "*.opus", "*.mp3", "*.flac") + for file in glob(os.path.join(path_dataset, format)) + ] + if file_audios == []: + return "No audio file was found in the dataset." + else: + file_audios = audio_files + + alpha = 0.5 + _max = 1.0 + slicer = Slicer(24000) + + num = 0 + error_num = 0 + data = "" + for file_audio in progress.tqdm(file_audios, desc="transcribe files", total=len((file_audios))): + audio, _ = librosa.load(file_audio, sr=24000, mono=True) + + list_slicer = slicer.slice(audio) + for chunk, start, end in progress.tqdm(list_slicer, total=len(list_slicer), desc="slicer files"): + name_segment = os.path.join(f"segment_{num}") + file_segment = os.path.join(path_project_wavs, f"{name_segment}.wav") + + tmp_max = np.abs(chunk).max() + if tmp_max > 1: + chunk /= tmp_max + chunk = (chunk / tmp_max * (_max * alpha)) + (1 - alpha) * chunk + wavfile.write(file_segment, 24000, (chunk * 32767).astype(np.int16)) + + try: + text = transcribe(file_segment, language) + text = text.lower().strip().replace('"', "") + + data += f"{name_segment}|{text}\n" + + num += 1 + except: # noqa: E722 + error_num += 1 + + with open(file_metadata, "w", encoding="utf-8-sig") as f: + f.write(data) + + if error_num != []: + error_text = f"\nerror files : {error_num}" + else: + error_text = "" + + return f"transcribe complete samples : {num}\npath : {path_project_wavs}{error_text}" + + +def format_seconds_to_hms(seconds): + hours = int(seconds / 3600) + minutes = int((seconds % 3600) / 60) + seconds = seconds % 60 + return "{:02d}:{:02d}:{:02d}".format(hours, minutes, int(seconds)) + + +def get_correct_audio_path( + audio_input, + base_path="wavs", + supported_formats=("wav", "mp3", "aac", "flac", "m4a", "alac", "ogg", "aiff", "wma", "amr"), +): + file_audio = None + + # Helper function to check if file has a supported extension + def has_supported_extension(file_name): + return any(file_name.endswith(f".{ext}") for ext in supported_formats) + + # Case 1: If it's a full path with a valid extension, use it directly + if os.path.isabs(audio_input) and has_supported_extension(audio_input): + file_audio = audio_input + + # Case 2: If it has a supported extension but is not a full path + elif has_supported_extension(audio_input) and not os.path.isabs(audio_input): + file_audio = os.path.join(base_path, audio_input) + + # Case 3: If only the name is given (no extension and not a full path) + elif not has_supported_extension(audio_input) and not os.path.isabs(audio_input): + for ext in supported_formats: + potential_file = os.path.join(base_path, f"{audio_input}.{ext}") + if os.path.exists(potential_file): + file_audio = potential_file + break + else: + file_audio = os.path.join(base_path, f"{audio_input}.{supported_formats[0]}") + return file_audio + + +def create_metadata(name_project, ch_tokenizer, progress=gr.Progress()): + path_project = os.path.join(path_data, name_project) + path_project_wavs = os.path.join(path_project, "wavs") + file_metadata = os.path.join(path_project, "metadata.csv") + file_raw = os.path.join(path_project, "raw.arrow") + file_duration = os.path.join(path_project, "duration.json") + file_vocab = os.path.join(path_project, "vocab.txt") + + if not os.path.isfile(file_metadata): + return "The file was not found in " + file_metadata, "" + + with open(file_metadata, "r", encoding="utf-8-sig") as f: + data = f.read() + + audio_path_list = [] + text_list = [] + duration_list = [] + + count = data.split("\n") + lenght = 0 + result = [] + error_files = [] + text_vocab_set = set() + for line in progress.tqdm(data.split("\n"), total=count): + sp_line = line.split("|") + if len(sp_line) != 2: + continue + name_audio, text = sp_line[:2] + + file_audio = get_correct_audio_path(name_audio, path_project_wavs) + + if not os.path.isfile(file_audio): + error_files.append([file_audio, "error path"]) + continue + + try: + duration = get_audio_duration(file_audio) + except Exception as e: + error_files.append([file_audio, "duration"]) + print(f"Error processing {file_audio}: {e}") + continue + + if duration < 1 or duration > 30: + if duration > 30: + error_files.append([file_audio, "duration > 30 sec"]) + if duration < 1: + error_files.append([file_audio, "duration < 1 sec "]) + continue + if len(text) < 3: + error_files.append([file_audio, "very short text length 3"]) + continue + + text = clear_text(text) + text = convert_char_to_pinyin([text], polyphone=True)[0] + + audio_path_list.append(file_audio) + duration_list.append(duration) + text_list.append(text) + + result.append({"audio_path": file_audio, "text": text, "duration": duration}) + if ch_tokenizer: + text_vocab_set.update(list(text)) + + lenght += duration + + if duration_list == []: + return f"Error: No audio files found in the specified path : {path_project_wavs}", "" + + min_second = round(min(duration_list), 2) + max_second = round(max(duration_list), 2) + + with ArrowWriter(path=file_raw, writer_batch_size=1) as writer: + for line in progress.tqdm(result, total=len(result), desc="prepare data"): + writer.write(line) + + with open(file_duration, "w") as f: + json.dump({"duration": duration_list}, f, ensure_ascii=False) + + new_vocal = "" + if not ch_tokenizer: + if not os.path.isfile(file_vocab): + file_vocab_finetune = os.path.join(path_data, "Emilia_ZH_EN_pinyin/vocab.txt") + if not os.path.isfile(file_vocab_finetune): + return "Error: Vocabulary file 'Emilia_ZH_EN_pinyin' not found!", "" + shutil.copy2(file_vocab_finetune, file_vocab) + + with open(file_vocab, "r", encoding="utf-8-sig") as f: + vocab_char_map = {} + for i, char in enumerate(f): + vocab_char_map[char[:-1]] = i + vocab_size = len(vocab_char_map) + + else: + with open(file_vocab, "w", encoding="utf-8-sig") as f: + for vocab in sorted(text_vocab_set): + f.write(vocab + "\n") + new_vocal += vocab + "\n" + vocab_size = len(text_vocab_set) + + if error_files != []: + error_text = "\n".join([" = ".join(item) for item in error_files]) + else: + error_text = "" + + return ( + f"prepare complete \nsamples : {len(text_list)}\ntime data : {format_seconds_to_hms(lenght)}\nmin sec : {min_second}\nmax sec : {max_second}\nfile_arrow : {file_raw}\nvocab : {vocab_size}\n{error_text}", + new_vocal, + ) + + +def check_user(value): + return gr.update(visible=not value), gr.update(visible=value) + + +def calculate_train( + name_project, + epochs, + learning_rate, + batch_size_per_gpu, + batch_size_type, + max_samples, + num_warmup_updates, + finetune, +): + path_project = os.path.join(path_data, name_project) + file_duration = os.path.join(path_project, "duration.json") + + hop_length = 256 + sampling_rate = 24000 + + if not os.path.isfile(file_duration): + return ( + epochs, + learning_rate, + batch_size_per_gpu, + max_samples, + num_warmup_updates, + "project not found !", + ) + + with open(file_duration, "r") as file: + data = json.load(file) + + duration_list = data["duration"] + max_sample_length = max(duration_list) * sampling_rate / hop_length + total_samples = len(duration_list) + total_duration = sum(duration_list) + + if torch.cuda.is_available(): + gpu_count = torch.cuda.device_count() + total_memory = 0 + for i in range(gpu_count): + gpu_properties = torch.cuda.get_device_properties(i) + total_memory += gpu_properties.total_memory / (1024**3) # in GB + elif torch.xpu.is_available(): + gpu_count = torch.xpu.device_count() + total_memory = 0 + for i in range(gpu_count): + gpu_properties = torch.xpu.get_device_properties(i) + total_memory += gpu_properties.total_memory / (1024**3) + elif torch.backends.mps.is_available(): + gpu_count = 1 + total_memory = psutil.virtual_memory().available / (1024**3) + + avg_gpu_memory = total_memory / gpu_count + + # rough estimate of batch size + if batch_size_type == "frame": + batch_size_per_gpu = max(int(38400 * (avg_gpu_memory - 5) / 75), int(max_sample_length)) + elif batch_size_type == "sample": + batch_size_per_gpu = int(200 / (total_duration / total_samples)) + + if total_samples < 64: + max_samples = int(total_samples * 0.25) + + num_warmup_updates = max(num_warmup_updates, int(total_samples * 0.05)) + + # take 1.2M updates as the maximum + max_updates = 1200000 + + if batch_size_type == "frame": + mini_batch_duration = batch_size_per_gpu * gpu_count * hop_length / sampling_rate + updates_per_epoch = total_duration / mini_batch_duration + elif batch_size_type == "sample": + updates_per_epoch = total_samples / batch_size_per_gpu / gpu_count + + epochs = int(max_updates / updates_per_epoch) + + if finetune: + learning_rate = 1e-5 + else: + learning_rate = 7.5e-5 + + return ( + epochs, + learning_rate, + batch_size_per_gpu, + max_samples, + num_warmup_updates, + total_samples, + ) + + +def prune_checkpoint(checkpoint_path: str, new_checkpoint_path: str, save_ema: bool, safetensors: bool) -> str: + try: + checkpoint = torch.load(checkpoint_path, weights_only=True) + print("Original Checkpoint Keys:", checkpoint.keys()) + + to_retain = "ema_model_state_dict" if save_ema else "model_state_dict" + try: + model_state_dict_to_retain = checkpoint[to_retain] + except KeyError: + return f"{to_retain} not found in the checkpoint." + + if safetensors: + new_checkpoint_path = new_checkpoint_path.replace(".pt", ".safetensors") + save_file(model_state_dict_to_retain, new_checkpoint_path) + else: + new_checkpoint_path = new_checkpoint_path.replace(".safetensors", ".pt") + new_checkpoint = {"ema_model_state_dict": model_state_dict_to_retain} + torch.save(new_checkpoint, new_checkpoint_path) + + return f"New checkpoint saved at: {new_checkpoint_path}" + + except Exception as e: + return f"An error occurred: {e}" + + +def expand_model_embeddings(ckpt_path, new_ckpt_path, num_new_tokens=42): + seed = 666 + random.seed(seed) + os.environ["PYTHONHASHSEED"] = str(seed) + torch.manual_seed(seed) + torch.cuda.manual_seed(seed) + torch.cuda.manual_seed_all(seed) + torch.backends.cudnn.deterministic = True + torch.backends.cudnn.benchmark = False + + if ckpt_path.endswith(".safetensors"): + ckpt = load_file(ckpt_path, device="cpu") + ckpt = {"ema_model_state_dict": ckpt} + elif ckpt_path.endswith(".pt"): + ckpt = torch.load(ckpt_path, map_location="cpu") + + ema_sd = ckpt.get("ema_model_state_dict", {}) + embed_key_ema = "ema_model.transformer.text_embed.text_embed.weight" + old_embed_ema = ema_sd[embed_key_ema] + + vocab_old = old_embed_ema.size(0) + embed_dim = old_embed_ema.size(1) + vocab_new = vocab_old + num_new_tokens + + def expand_embeddings(old_embeddings): + new_embeddings = torch.zeros((vocab_new, embed_dim)) + new_embeddings[:vocab_old] = old_embeddings + new_embeddings[vocab_old:] = torch.randn((num_new_tokens, embed_dim)) + return new_embeddings + + ema_sd[embed_key_ema] = expand_embeddings(ema_sd[embed_key_ema]) + + if new_ckpt_path.endswith(".safetensors"): + save_file(ema_sd, new_ckpt_path) + elif new_ckpt_path.endswith(".pt"): + torch.save(ckpt, new_ckpt_path) + + return vocab_new + + +def vocab_count(text): + return str(len(text.split(","))) + + +def vocab_extend(project_name, symbols, model_type): + if symbols == "": + return "Symbols empty!" + + name_project = project_name + path_project = os.path.join(path_data, name_project) + file_vocab_project = os.path.join(path_project, "vocab.txt") + + file_vocab = os.path.join(path_data, "Emilia_ZH_EN_pinyin/vocab.txt") + if not os.path.isfile(file_vocab): + return f"the file {file_vocab} not found !" + + symbols = symbols.split(",") + if symbols == []: + return "Symbols to extend not found." + + with open(file_vocab, "r", encoding="utf-8-sig") as f: + data = f.read() + vocab = data.split("\n") + vocab_check = set(vocab) + + miss_symbols = [] + for item in symbols: + item = item.replace(" ", "") + if item in vocab_check: + continue + miss_symbols.append(item) + + if miss_symbols == []: + return "Symbols are okay no need to extend." + + size_vocab = len(vocab) + vocab.pop() + for item in miss_symbols: + vocab.append(item) + + vocab.append("") + + with open(file_vocab_project, "w", encoding="utf-8") as f: + f.write("\n".join(vocab)) + + if model_type == "F5TTS_v1_Base": + ckpt_path = str(cached_path("hf://SWivid/F5-TTS/F5TTS_v1_Base/model_1250000.safetensors")) + elif model_type == "F5TTS_Base": + ckpt_path = str(cached_path("hf://SWivid/F5-TTS/F5TTS_Base/model_1200000.pt")) + elif model_type == "E2TTS_Base": + ckpt_path = str(cached_path("hf://SWivid/E2-TTS/E2TTS_Base/model_1200000.pt")) + + vocab_size_new = len(miss_symbols) + + dataset_name = name_project.replace("_pinyin", "").replace("_char", "") + new_ckpt_path = os.path.join(path_project_ckpts, dataset_name) + os.makedirs(new_ckpt_path, exist_ok=True) + + # Add pretrained_ prefix to model when copying for consistency with finetune_cli.py + new_ckpt_file = os.path.join(new_ckpt_path, "pretrained_" + os.path.basename(ckpt_path)) + + size = expand_model_embeddings(ckpt_path, new_ckpt_file, num_new_tokens=vocab_size_new) + + vocab_new = "\n".join(miss_symbols) + return f"vocab old size : {size_vocab}\nvocab new size : {size}\nvocab add : {vocab_size_new}\nnew symbols :\n{vocab_new}" + + +def vocab_check(project_name, tokenizer_type): + name_project = project_name + path_project = os.path.join(path_data, name_project) + + file_metadata = os.path.join(path_project, "metadata.csv") + + file_vocab = os.path.join(path_data, "Emilia_ZH_EN_pinyin/vocab.txt") + if not os.path.isfile(file_vocab): + return f"the file {file_vocab} not found !", "" + + with open(file_vocab, "r", encoding="utf-8-sig") as f: + data = f.read() + vocab = data.split("\n") + vocab = set(vocab) + + if not os.path.isfile(file_metadata): + return f"the file {file_metadata} not found !", "" + + with open(file_metadata, "r", encoding="utf-8-sig") as f: + data = f.read() + + miss_symbols = [] + miss_symbols_keep = {} + for item in data.split("\n"): + sp = item.split("|") + if len(sp) != 2: + continue + + text = sp[1].lower().strip() + if tokenizer_type == "pinyin": + text = convert_char_to_pinyin([text], polyphone=True)[0] + + for t in text: + if t not in vocab and t not in miss_symbols_keep: + miss_symbols.append(t) + miss_symbols_keep[t] = t + + if miss_symbols == []: + vocab_miss = "" + info = "You can train using your language !" + else: + vocab_miss = ",".join(miss_symbols) + info = f"The following {len(miss_symbols)} symbols are missing in your language\n\n" + + return info, vocab_miss + + +def get_random_sample_prepare(project_name): + name_project = project_name + path_project = os.path.join(path_data, name_project) + file_arrow = os.path.join(path_project, "raw.arrow") + if not os.path.isfile(file_arrow): + return "", None + dataset = Dataset_.from_file(file_arrow) + random_sample = dataset.shuffle(seed=random.randint(0, 1000)).select([0]) + text = "[" + " , ".join(["' " + t + " '" for t in random_sample["text"][0]]) + "]" + audio_path = random_sample["audio_path"][0] + return text, audio_path + + +def get_random_sample_transcribe(project_name): + name_project = project_name + path_project = os.path.join(path_data, name_project) + file_metadata = os.path.join(path_project, "metadata.csv") + if not os.path.isfile(file_metadata): + return "", None + + data = "" + with open(file_metadata, "r", encoding="utf-8-sig") as f: + data = f.read() + + list_data = [] + for item in data.split("\n"): + sp = item.split("|") + if len(sp) != 2: + continue + + # fixed audio when it is absolute + file_audio = get_correct_audio_path(sp[0], os.path.join(path_project, "wavs")) + list_data.append([file_audio, sp[1]]) + + if list_data == []: + return "", None + + random_item = random.choice(list_data) + + return random_item[1], random_item[0] + + +def get_random_sample_infer(project_name): + text, audio = get_random_sample_transcribe(project_name) + return ( + text, + text, + audio, + ) + + +def infer( + project, file_checkpoint, exp_name, ref_text, ref_audio, gen_text, nfe_step, use_ema, speed, seed, remove_silence +): + global last_checkpoint, last_device, tts_api, last_ema + + if not os.path.isfile(file_checkpoint): + return None, "checkpoint not found!" + + if training_process is not None: + device_test = "cpu" + else: + device_test = None + + if last_checkpoint != file_checkpoint or last_device != device_test or last_ema != use_ema or tts_api is None: + if last_checkpoint != file_checkpoint: + last_checkpoint = file_checkpoint + + if last_device != device_test: + last_device = device_test + + if last_ema != use_ema: + last_ema = use_ema + + vocab_file = os.path.join(path_data, project, "vocab.txt") + + tts_api = F5TTS( + model=exp_name, ckpt_file=file_checkpoint, vocab_file=vocab_file, device=device_test, use_ema=use_ema + ) + + print("update >> ", device_test, file_checkpoint, use_ema) + + if seed == -1: # -1 used for random + seed = None + + with tempfile.NamedTemporaryFile(delete=False, suffix=".wav") as f: + tts_api.infer( + ref_file=ref_audio, + ref_text=ref_text.lower().strip(), + gen_text=gen_text.lower().strip(), + nfe_step=nfe_step, + speed=speed, + remove_silence=remove_silence, + file_wave=f.name, + seed=seed, + ) + return f.name, tts_api.device, str(tts_api.seed) + + +def check_finetune(finetune): + return gr.update(interactive=finetune), gr.update(interactive=finetune), gr.update(interactive=finetune) + + +def get_checkpoints_project(project_name, is_gradio=True): + if project_name is None: + return [], "" + project_name = project_name.replace("_pinyin", "").replace("_char", "") + + if os.path.isdir(path_project_ckpts): + files_checkpoints = glob(os.path.join(path_project_ckpts, project_name, "*.pt")) + # Separate pretrained and regular checkpoints + pretrained_checkpoints = [f for f in files_checkpoints if "pretrained_" in os.path.basename(f)] + regular_checkpoints = [ + f + for f in files_checkpoints + if "pretrained_" not in os.path.basename(f) and "model_last.pt" not in os.path.basename(f) + ] + last_checkpoint = [f for f in files_checkpoints if "model_last.pt" in os.path.basename(f)] + + # Sort regular checkpoints by number + regular_checkpoints = sorted( + regular_checkpoints, key=lambda x: int(os.path.basename(x).split("_")[1].split(".")[0]) + ) + + # Combine in order: pretrained, regular, last + files_checkpoints = pretrained_checkpoints + regular_checkpoints + last_checkpoint + else: + files_checkpoints = [] + + selelect_checkpoint = None if not files_checkpoints else files_checkpoints[0] + + if is_gradio: + return gr.update(choices=files_checkpoints, value=selelect_checkpoint) + + return files_checkpoints, selelect_checkpoint + + +def get_audio_project(project_name, is_gradio=True): + if project_name is None: + return [], "" + project_name = project_name.replace("_pinyin", "").replace("_char", "") + + if os.path.isdir(path_project_ckpts): + files_audios = glob(os.path.join(path_project_ckpts, project_name, "samples", "*.wav")) + files_audios = sorted(files_audios, key=lambda x: int(os.path.basename(x).split("_")[1].split(".")[0])) + + files_audios = [item.replace("_gen.wav", "") for item in files_audios if item.endswith("_gen.wav")] + else: + files_audios = [] + + selelect_checkpoint = None if not files_audios else files_audios[0] + + if is_gradio: + return gr.update(choices=files_audios, value=selelect_checkpoint) + + return files_audios, selelect_checkpoint + + +def get_gpu_stats(): + gpu_stats = "" + + if torch.cuda.is_available(): + gpu_count = torch.cuda.device_count() + for i in range(gpu_count): + gpu_name = torch.cuda.get_device_name(i) + gpu_properties = torch.cuda.get_device_properties(i) + total_memory = gpu_properties.total_memory / (1024**3) # in GB + allocated_memory = torch.cuda.memory_allocated(i) / (1024**2) # in MB + reserved_memory = torch.cuda.memory_reserved(i) / (1024**2) # in MB + + gpu_stats += ( + f"GPU {i} Name: {gpu_name}\n" + f"Total GPU memory (GPU {i}): {total_memory:.2f} GB\n" + f"Allocated GPU memory (GPU {i}): {allocated_memory:.2f} MB\n" + f"Reserved GPU memory (GPU {i}): {reserved_memory:.2f} MB\n\n" + ) + elif torch.xpu.is_available(): + gpu_count = torch.xpu.device_count() + for i in range(gpu_count): + gpu_name = torch.xpu.get_device_name(i) + gpu_properties = torch.xpu.get_device_properties(i) + total_memory = gpu_properties.total_memory / (1024**3) # in GB + allocated_memory = torch.xpu.memory_allocated(i) / (1024**2) # in MB + reserved_memory = torch.xpu.memory_reserved(i) / (1024**2) # in MB + + gpu_stats += ( + f"GPU {i} Name: {gpu_name}\n" + f"Total GPU memory (GPU {i}): {total_memory:.2f} GB\n" + f"Allocated GPU memory (GPU {i}): {allocated_memory:.2f} MB\n" + f"Reserved GPU memory (GPU {i}): {reserved_memory:.2f} MB\n\n" + ) + elif torch.backends.mps.is_available(): + gpu_count = 1 + gpu_stats += "MPS GPU\n" + total_memory = psutil.virtual_memory().total / ( + 1024**3 + ) # Total system memory (MPS doesn't have its own memory) + allocated_memory = 0 + reserved_memory = 0 + + gpu_stats += ( + f"Total system memory: {total_memory:.2f} GB\n" + f"Allocated GPU memory (MPS): {allocated_memory:.2f} MB\n" + f"Reserved GPU memory (MPS): {reserved_memory:.2f} MB\n" + ) + + else: + gpu_stats = "No GPU available" + + return gpu_stats + + +def get_cpu_stats(): + cpu_usage = psutil.cpu_percent(interval=1) + memory_info = psutil.virtual_memory() + memory_used = memory_info.used / (1024**2) + memory_total = memory_info.total / (1024**2) + memory_percent = memory_info.percent + + pid = os.getpid() + process = psutil.Process(pid) + nice_value = process.nice() + + cpu_stats = ( + f"CPU Usage: {cpu_usage:.2f}%\n" + f"System Memory: {memory_used:.2f} MB used / {memory_total:.2f} MB total ({memory_percent}% used)\n" + f"Process Priority (Nice value): {nice_value}" + ) + + return cpu_stats + + +def get_combined_stats(): + gpu_stats = get_gpu_stats() + cpu_stats = get_cpu_stats() + combined_stats = f"### GPU Stats\n{gpu_stats}\n\n### CPU Stats\n{cpu_stats}" + return combined_stats + + +def get_audio_select(file_sample): + select_audio_ref = file_sample + select_audio_gen = file_sample + + if file_sample is not None: + select_audio_ref += "_ref.wav" + select_audio_gen += "_gen.wav" + + return select_audio_ref, select_audio_gen + + +with gr.Blocks() as app: + gr.Markdown( + """ +# F5 TTS Automatic Finetune + +This is a local web UI for F5 TTS finetuning support. This app supports the following TTS models: + +* [F5-TTS](https://arxiv.org/abs/2410.06885) (A Fairytaler that Fakes Fluent and Faithful Speech with Flow Matching) +* [E2 TTS](https://arxiv.org/abs/2406.18009) (Embarrassingly Easy Fully Non-Autoregressive Zero-Shot TTS) + +The pretrained checkpoints support English and Chinese. + +For tutorial and updates check here (https://github.com/SWivid/F5-TTS/discussions/143) +""" + ) + + with gr.Row(): + projects, projects_selelect = get_list_projects() + tokenizer_type = gr.Radio(label="Tokenizer Type", choices=["pinyin", "char", "custom"], value="pinyin") + project_name = gr.Textbox(label="Project Name", value="my_speak") + bt_create = gr.Button("Create a New Project") + + with gr.Row(): + cm_project = gr.Dropdown( + choices=projects, value=projects_selelect, label="Project", allow_custom_value=True, scale=6 + ) + ch_refresh_project = gr.Button("Refresh", scale=1) + + bt_create.click(fn=create_data_project, inputs=[project_name, tokenizer_type], outputs=[cm_project]) + + with gr.Tabs(): + with gr.TabItem("Transcribe Data"): + gr.Markdown("""```plaintext +Skip this step if you have your dataset, metadata.csv, and a folder wavs with all the audio files. +```""") + + ch_manual = gr.Checkbox(label="Audio from Path", value=False) + + mark_info_transcribe = gr.Markdown( + """```plaintext + Place your 'wavs' folder and 'metadata.csv' file in the '{your_project_name}' directory. + + my_speak/ + │ + └── dataset/ + ├── audio1.wav + └── audio2.wav + ... + ```""", + visible=False, + ) + + audio_speaker = gr.File(label="Voice", type="filepath", file_count="multiple") + txt_lang = gr.Textbox(label="Language", value="English") + bt_transcribe = bt_create = gr.Button("Transcribe") + txt_info_transcribe = gr.Textbox(label="Info", value="") + bt_transcribe.click( + fn=transcribe_all, + inputs=[cm_project, audio_speaker, txt_lang, ch_manual], + outputs=[txt_info_transcribe], + ) + ch_manual.change(fn=check_user, inputs=[ch_manual], outputs=[audio_speaker, mark_info_transcribe]) + + random_sample_transcribe = gr.Button("Random Sample") + + with gr.Row(): + random_text_transcribe = gr.Textbox(label="Text") + random_audio_transcribe = gr.Audio(label="Audio", type="filepath") + + random_sample_transcribe.click( + fn=get_random_sample_transcribe, + inputs=[cm_project], + outputs=[random_text_transcribe, random_audio_transcribe], + ) + + with gr.TabItem("Vocab Check"): + gr.Markdown("""```plaintext +Check the vocabulary for fine-tuning Emilia_ZH_EN to ensure all symbols are included. For fine-tuning a new language. +```""") + + check_button = gr.Button("Check Vocab") + txt_info_check = gr.Textbox(label="Info", value="") + + gr.Markdown("""```plaintext +Using the extended model, you can finetune to a new language that is missing symbols in the vocab. This creates a new model with a new vocabulary size and saves it in your ckpts/project folder. +```""") + + exp_name_extend = gr.Radio( + label="Model", choices=["F5TTS_v1_Base", "F5TTS_Base", "E2TTS_Base"], value="F5TTS_v1_Base" + ) + + with gr.Row(): + txt_extend = gr.Textbox( + label="Symbols", + value="", + placeholder="To add new symbols, make sure to use ',' for each symbol", + scale=6, + ) + txt_count_symbol = gr.Textbox(label="New Vocab Size", value="", scale=1) + + extend_button = gr.Button("Extend") + txt_info_extend = gr.Textbox(label="Info", value="") + + txt_extend.change(vocab_count, inputs=[txt_extend], outputs=[txt_count_symbol]) + check_button.click( + fn=vocab_check, inputs=[cm_project, tokenizer_type], outputs=[txt_info_check, txt_extend] + ) + extend_button.click( + fn=vocab_extend, inputs=[cm_project, txt_extend, exp_name_extend], outputs=[txt_info_extend] + ) + + with gr.TabItem("Prepare Data"): + gr.Markdown("""```plaintext +Skip this step if you have your dataset, raw.arrow, duration.json, and vocab.txt +```""") + + gr.Markdown( + """```plaintext + Place all your "wavs" folder and your "metadata.csv" file in your project name directory. + + Supported audio formats: "wav", "mp3", "aac", "flac", "m4a", "alac", "ogg", "aiff", "wma", "amr" + + Example wav format: + my_speak/ + │ + ├── wavs/ + │ ├── audio1.wav + │ └── audio2.wav + | ... + │ + └── metadata.csv + + File format metadata.csv: + + audio1|text1 or audio1.wav|text1 or your_path/audio1.wav|text1 + audio2|text1 or audio2.wav|text1 or your_path/audio2.wav|text1 + ... + + ```""" + ) + ch_tokenizern = gr.Checkbox(label="Create Vocabulary", value=False, visible=False) + + bt_prepare = bt_create = gr.Button("Prepare") + txt_info_prepare = gr.Textbox(label="Info", value="") + txt_vocab_prepare = gr.Textbox(label="Vocab", value="") + + bt_prepare.click( + fn=create_metadata, inputs=[cm_project, ch_tokenizern], outputs=[txt_info_prepare, txt_vocab_prepare] + ) + + random_sample_prepare = gr.Button("Random Sample") + + with gr.Row(): + random_text_prepare = gr.Textbox(label="Tokenizer") + random_audio_prepare = gr.Audio(label="Audio", type="filepath") + + random_sample_prepare.click( + fn=get_random_sample_prepare, inputs=[cm_project], outputs=[random_text_prepare, random_audio_prepare] + ) + + with gr.TabItem("Train Model"): + gr.Markdown("""```plaintext +The auto-setting is still experimental. Set a large value of epoch if not sure; and keep last N checkpoints if limited disk space. +If you encounter a memory error, try reducing the batch size per GPU to a smaller number. +```""") + with gr.Row(): + exp_name = gr.Radio(label="Model", choices=["F5TTS_v1_Base", "F5TTS_Base", "E2TTS_Base"]) + tokenizer_file = gr.Textbox(label="Tokenizer File") + file_checkpoint_train = gr.Textbox(label="Path to the Pretrained Checkpoint") + + with gr.Row(): + ch_finetune = bt_create = gr.Checkbox(label="Finetune") + lb_samples = gr.Label(label="Samples") + bt_calculate = bt_create = gr.Button("Auto Settings") + + with gr.Row(): + epochs = gr.Number(label="Epochs") + learning_rate = gr.Number(label="Learning Rate", step=0.5e-5) + max_grad_norm = gr.Number(label="Max Gradient Norm") + num_warmup_updates = gr.Number(label="Warmup Updates") + + with gr.Row(): + batch_size_type = gr.Radio( + label="Batch Size Type", + choices=["frame", "sample"], + info="frame is calculated as seconds * sampling_rate / hop_length", + ) + batch_size_per_gpu = gr.Number(label="Batch Size per GPU", info="N frames or N samples") + grad_accumulation_steps = gr.Number( + label="Gradient Accumulation Steps", info="Effective batch size is multiplied by this value" + ) + max_samples = gr.Number(label="Max Samples", info="Maximum number of samples per single GPU batch") + + with gr.Row(): + save_per_updates = gr.Number( + label="Save per Updates", + info="Save intermediate checkpoints every N updates", + minimum=10, + ) + keep_last_n_checkpoints = gr.Number( + label="Keep Last N Checkpoints", + step=1, + precision=0, + info="-1 to keep all, 0 to not save intermediate, > 0 to keep last N", + minimum=-1, + ) + last_per_updates = gr.Number( + label="Last per Updates", + info="Save latest checkpoint with suffix _last.pt every N updates", + minimum=10, + ) + gr.Radio(label="") # placeholder + + with gr.Row(): + ch_8bit_adam = gr.Checkbox(label="Use 8-bit Adam optimizer") + mixed_precision = gr.Radio(label="Mixed Precision", choices=["none", "fp16", "bf16"]) + cd_logger = gr.Radio(label="Logger", choices=["none", "wandb", "tensorboard"]) + with gr.Column(): + start_button = gr.Button("Start Training") + stop_button = gr.Button("Stop Training", interactive=False) + + if projects_selelect is not None: + ( + exp_name_value, + learning_rate_value, + batch_size_per_gpu_value, + batch_size_type_value, + max_samples_value, + grad_accumulation_steps_value, + max_grad_norm_value, + epochs_value, + num_warmup_updates_value, + save_per_updates_value, + keep_last_n_checkpoints_value, + last_per_updates_value, + finetune_value, + file_checkpoint_train_value, + tokenizer_type_value, + tokenizer_file_value, + mixed_precision_value, + logger_value, + bnb_optimizer_value, + ) = load_settings(projects_selelect) + + # Assigning values to the respective components + exp_name.value = exp_name_value + learning_rate.value = learning_rate_value + batch_size_per_gpu.value = batch_size_per_gpu_value + batch_size_type.value = batch_size_type_value + max_samples.value = max_samples_value + grad_accumulation_steps.value = grad_accumulation_steps_value + max_grad_norm.value = max_grad_norm_value + epochs.value = epochs_value + num_warmup_updates.value = num_warmup_updates_value + save_per_updates.value = save_per_updates_value + keep_last_n_checkpoints.value = keep_last_n_checkpoints_value + last_per_updates.value = last_per_updates_value + ch_finetune.value = finetune_value + file_checkpoint_train.value = file_checkpoint_train_value + tokenizer_type.value = tokenizer_type_value + tokenizer_file.value = tokenizer_file_value + mixed_precision.value = mixed_precision_value + cd_logger.value = logger_value + ch_8bit_adam.value = bnb_optimizer_value + + ch_stream = gr.Checkbox(label="Stream Output Experiment", value=True) + txt_info_train = gr.Textbox(label="Info", value="") + + list_audios, select_audio = get_audio_project(projects_selelect, False) + + select_audio_ref = select_audio + select_audio_gen = select_audio + + if select_audio is not None: + select_audio_ref += "_ref.wav" + select_audio_gen += "_gen.wav" + + with gr.Row(): + ch_list_audio = gr.Dropdown( + choices=list_audios, + value=select_audio, + label="Audios", + allow_custom_value=True, + scale=6, + interactive=True, + ) + bt_stream_audio = gr.Button("Refresh", scale=1) + bt_stream_audio.click(fn=get_audio_project, inputs=[cm_project], outputs=[ch_list_audio]) + cm_project.change(fn=get_audio_project, inputs=[cm_project], outputs=[ch_list_audio]) + + with gr.Row(): + audio_ref_stream = gr.Audio(label="Original", type="filepath", value=select_audio_ref) + audio_gen_stream = gr.Audio(label="Generate", type="filepath", value=select_audio_gen) + + ch_list_audio.change( + fn=get_audio_select, + inputs=[ch_list_audio], + outputs=[audio_ref_stream, audio_gen_stream], + ) + + start_button.click( + fn=start_training, + inputs=[ + cm_project, + exp_name, + learning_rate, + batch_size_per_gpu, + batch_size_type, + max_samples, + grad_accumulation_steps, + max_grad_norm, + epochs, + num_warmup_updates, + save_per_updates, + keep_last_n_checkpoints, + last_per_updates, + ch_finetune, + file_checkpoint_train, + tokenizer_type, + tokenizer_file, + mixed_precision, + ch_stream, + cd_logger, + ch_8bit_adam, + ], + outputs=[txt_info_train, start_button, stop_button], + ) + stop_button.click(fn=stop_training, outputs=[txt_info_train, start_button, stop_button]) + + bt_calculate.click( + fn=calculate_train, + inputs=[ + cm_project, + epochs, + learning_rate, + batch_size_per_gpu, + batch_size_type, + max_samples, + num_warmup_updates, + ch_finetune, + ], + outputs=[ + epochs, + learning_rate, + batch_size_per_gpu, + max_samples, + num_warmup_updates, + lb_samples, + ], + ) + + ch_finetune.change( + check_finetune, inputs=[ch_finetune], outputs=[file_checkpoint_train, tokenizer_file, tokenizer_type] + ) + + def setup_load_settings(): + output_components = [ + exp_name, + learning_rate, + batch_size_per_gpu, + batch_size_type, + max_samples, + grad_accumulation_steps, + max_grad_norm, + epochs, + num_warmup_updates, + save_per_updates, + keep_last_n_checkpoints, + last_per_updates, + ch_finetune, + file_checkpoint_train, + tokenizer_type, + tokenizer_file, + mixed_precision, + cd_logger, + ch_8bit_adam, + ] + return output_components + + outputs = setup_load_settings() + + cm_project.change( + fn=load_settings, + inputs=[cm_project], + outputs=outputs, + ) + + ch_refresh_project.click( + fn=load_settings, + inputs=[cm_project], + outputs=outputs, + ) + + with gr.TabItem("Test Model"): + gr.Markdown("""```plaintext +Check the use_ema setting (True or False) for your model to see what works best for you. Set seed to -1 for random. +```""") + exp_name = gr.Radio( + label="Model", choices=["F5TTS_v1_Base", "F5TTS_Base", "E2TTS_Base"], value="F5TTS_v1_Base" + ) + list_checkpoints, checkpoint_select = get_checkpoints_project(projects_selelect, False) + + with gr.Row(): + nfe_step = gr.Number(label="NFE Step", value=32) + speed = gr.Slider(label="Speed", value=1.0, minimum=0.3, maximum=2.0, step=0.1) + seed = gr.Number(label="Random Seed", value=-1, minimum=-1) + remove_silence = gr.Checkbox(label="Remove Silence") + + with gr.Row(): + ch_use_ema = gr.Checkbox( + label="Use EMA", value=True, info="Turn off at early stage might offer better results" + ) + cm_checkpoint = gr.Dropdown( + choices=list_checkpoints, value=checkpoint_select, label="Checkpoints", allow_custom_value=True + ) + bt_checkpoint_refresh = gr.Button("Refresh") + + random_sample_infer = gr.Button("Random Sample") + + ref_text = gr.Textbox(label="Reference Text") + ref_audio = gr.Audio(label="Reference Audio", type="filepath") + gen_text = gr.Textbox(label="Text to Generate") + + random_sample_infer.click( + fn=get_random_sample_infer, inputs=[cm_project], outputs=[ref_text, gen_text, ref_audio] + ) + + with gr.Row(): + txt_info_gpu = gr.Textbox("", label="Inference on Device :") + seed_info = gr.Textbox(label="Used Random Seed :") + check_button_infer = gr.Button("Inference") + + gen_audio = gr.Audio(label="Generated Audio", type="filepath") + + check_button_infer.click( + fn=infer, + inputs=[ + cm_project, + cm_checkpoint, + exp_name, + ref_text, + ref_audio, + gen_text, + nfe_step, + ch_use_ema, + speed, + seed, + remove_silence, + ], + outputs=[gen_audio, txt_info_gpu, seed_info], + ) + + bt_checkpoint_refresh.click(fn=get_checkpoints_project, inputs=[cm_project], outputs=[cm_checkpoint]) + cm_project.change(fn=get_checkpoints_project, inputs=[cm_project], outputs=[cm_checkpoint]) + + with gr.TabItem("Prune Checkpoint"): + gr.Markdown("""```plaintext +Reduce the Base model size from 5GB to 1.3GB. The new checkpoint file prunes out optimizer and etc., can be used for inference or finetuning afterward, but not able to resume pretraining. +```""") + txt_path_checkpoint = gr.Textbox(label="Path to Checkpoint:") + txt_path_checkpoint_small = gr.Textbox(label="Path to Output:") + with gr.Row(): + ch_save_ema = gr.Checkbox(label="Save EMA checkpoint", value=True) + ch_safetensors = gr.Checkbox(label="Save with safetensors format", value=True) + txt_info_reduse = gr.Textbox(label="Info", value="") + reduse_button = gr.Button("Prune") + reduse_button.click( + fn=prune_checkpoint, + inputs=[txt_path_checkpoint, txt_path_checkpoint_small, ch_save_ema, ch_safetensors], + outputs=[txt_info_reduse], + ) + + with gr.TabItem("System Info"): + output_box = gr.Textbox(label="GPU and CPU Information", lines=20) + + def update_stats(): + return get_combined_stats() + + update_button = gr.Button("Update Stats") + update_button.click(fn=update_stats, outputs=output_box) + + def auto_update(): + yield gr.update(value=update_stats()) + + gr.update(fn=auto_update, inputs=[], outputs=output_box) + + +@click.command() +@click.option("--port", "-p", default=None, type=int, help="Port to run the app on") +@click.option("--host", "-H", default=None, help="Host to run the app on") +@click.option( + "--share", + "-s", + default=False, + is_flag=True, + help="Share the app via Gradio share link", +) +@click.option("--api", "-a", default=True, is_flag=True, help="Allow API access") +def main(port, host, share, api): + global app + print("Starting app...") + app.queue(api_open=api).launch(server_name=host, server_port=port, share=share, show_api=api) + + +if __name__ == "__main__": + main() diff --git a/bi_v100-f5-tts/F5-TTS/src/f5_tts/train/train.py b/bi_v100-f5-tts/F5-TTS/src/f5_tts/train/train.py new file mode 100644 index 0000000..b948ab1 --- /dev/null +++ b/bi_v100-f5-tts/F5-TTS/src/f5_tts/train/train.py @@ -0,0 +1,77 @@ +# training script. + +import os +from importlib.resources import files + +import hydra +from omegaconf import OmegaConf + +from f5_tts.model import CFM, Trainer +from f5_tts.model.dataset import load_dataset +from f5_tts.model.utils import get_tokenizer + + +os.chdir(str(files("f5_tts").joinpath("../.."))) # change working directory to root of project (local editable) + + +@hydra.main(version_base="1.3", config_path=str(files("f5_tts").joinpath("configs")), config_name=None) +def main(model_cfg): + model_cls = hydra.utils.get_class(f"f5_tts.model.{model_cfg.model.backbone}") + model_arc = model_cfg.model.arch + tokenizer = model_cfg.model.tokenizer + mel_spec_type = model_cfg.model.mel_spec.mel_spec_type + + exp_name = f"{model_cfg.model.name}_{mel_spec_type}_{model_cfg.model.tokenizer}_{model_cfg.datasets.name}" + wandb_resume_id = None + + # set text tokenizer + if tokenizer != "custom": + tokenizer_path = model_cfg.datasets.name + else: + tokenizer_path = model_cfg.model.tokenizer_path + vocab_char_map, vocab_size = get_tokenizer(tokenizer_path, tokenizer) + + # set model + model = CFM( + transformer=model_cls(**model_arc, text_num_embeds=vocab_size, mel_dim=model_cfg.model.mel_spec.n_mel_channels), + mel_spec_kwargs=model_cfg.model.mel_spec, + vocab_char_map=vocab_char_map, + ) + + # init trainer + trainer = Trainer( + model, + epochs=model_cfg.optim.epochs, + learning_rate=model_cfg.optim.learning_rate, + num_warmup_updates=model_cfg.optim.num_warmup_updates, + save_per_updates=model_cfg.ckpts.save_per_updates, + keep_last_n_checkpoints=model_cfg.ckpts.keep_last_n_checkpoints, + checkpoint_path=str(files("f5_tts").joinpath(f"../../{model_cfg.ckpts.save_dir}")), + batch_size_per_gpu=model_cfg.datasets.batch_size_per_gpu, + batch_size_type=model_cfg.datasets.batch_size_type, + max_samples=model_cfg.datasets.max_samples, + grad_accumulation_steps=model_cfg.optim.grad_accumulation_steps, + max_grad_norm=model_cfg.optim.max_grad_norm, + logger=model_cfg.ckpts.logger, + wandb_project="CFM-TTS", + wandb_run_name=exp_name, + wandb_resume_id=wandb_resume_id, + last_per_updates=model_cfg.ckpts.last_per_updates, + log_samples=model_cfg.ckpts.log_samples, + bnb_optimizer=model_cfg.optim.bnb_optimizer, + mel_spec_type=mel_spec_type, + is_local_vocoder=model_cfg.model.vocoder.is_local, + local_vocoder_path=model_cfg.model.vocoder.local_path, + model_cfg_dict=OmegaConf.to_container(model_cfg, resolve=True), + ) + + train_dataset = load_dataset(model_cfg.datasets.name, tokenizer, mel_spec_kwargs=model_cfg.model.mel_spec) + trainer.train( + train_dataset, + num_workers=model_cfg.datasets.num_workers, + resumable_with_seed=666, # seed for shuffling dataset + ) + + +if __name__ == "__main__": + main() diff --git a/bi_v100-f5-tts/charactr/vocos-mel-24khz/.gitattributes b/bi_v100-f5-tts/charactr/vocos-mel-24khz/.gitattributes new file mode 100644 index 0000000..c7d9f33 --- /dev/null +++ b/bi_v100-f5-tts/charactr/vocos-mel-24khz/.gitattributes @@ -0,0 +1,34 @@ +*.7z filter=lfs diff=lfs merge=lfs -text +*.arrow filter=lfs diff=lfs merge=lfs -text +*.bin filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.ckpt filter=lfs diff=lfs merge=lfs -text +*.ftz filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.h5 filter=lfs diff=lfs merge=lfs -text +*.joblib filter=lfs diff=lfs merge=lfs -text +*.lfs.* filter=lfs diff=lfs merge=lfs -text +*.mlmodel filter=lfs diff=lfs merge=lfs -text +*.model filter=lfs diff=lfs merge=lfs -text +*.msgpack filter=lfs diff=lfs merge=lfs -text +*.npy filter=lfs diff=lfs merge=lfs -text +*.npz filter=lfs diff=lfs merge=lfs -text +*.onnx filter=lfs diff=lfs merge=lfs -text +*.ot filter=lfs diff=lfs merge=lfs -text +*.parquet filter=lfs diff=lfs merge=lfs -text +*.pb filter=lfs diff=lfs merge=lfs -text +*.pickle filter=lfs diff=lfs merge=lfs -text +*.pkl filter=lfs diff=lfs merge=lfs -text +*.pt filter=lfs diff=lfs merge=lfs -text +*.pth filter=lfs diff=lfs merge=lfs -text +*.rar filter=lfs diff=lfs merge=lfs -text +*.safetensors filter=lfs diff=lfs merge=lfs -text +saved_model/**/* filter=lfs diff=lfs merge=lfs -text +*.tar.* filter=lfs diff=lfs merge=lfs -text +*.tflite filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.wasm filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text +*tfevents* filter=lfs diff=lfs merge=lfs -text diff --git a/bi_v100-f5-tts/charactr/vocos-mel-24khz/README.md b/bi_v100-f5-tts/charactr/vocos-mel-24khz/README.md new file mode 100644 index 0000000..226bd94 --- /dev/null +++ b/bi_v100-f5-tts/charactr/vocos-mel-24khz/README.md @@ -0,0 +1,71 @@ +--- +license: mit +--- + +# Vocos: Closing the gap between time-domain and Fourier-based neural vocoders for high-quality audio synthesis + +[Audio samples](https://charactr-platform.github.io/vocos/) | +Paper [[abs]](https://arxiv.org/abs/2306.00814) [[pdf]](https://arxiv.org/pdf/2306.00814.pdf) + +Vocos is a fast neural vocoder designed to synthesize audio waveforms from acoustic features. Trained using a Generative +Adversarial Network (GAN) objective, Vocos can generate waveforms in a single forward pass. Unlike other typical +GAN-based vocoders, Vocos does not model audio samples in the time domain. Instead, it generates spectral +coefficients, facilitating rapid audio reconstruction through inverse Fourier transform. + +## Installation + +To use Vocos only in inference mode, install it using: + +```bash +pip install vocos +``` + +If you wish to train the model, install it with additional dependencies: + +```bash +pip install vocos[train] +``` + +## Usage + +### Reconstruct audio from mel-spectrogram + +```python +import torch + +from vocos import Vocos + +vocos = Vocos.from_pretrained("charactr/vocos-mel-24khz") + +mel = torch.randn(1, 100, 256) # B, C, T +audio = vocos.decode(mel) +``` + +Copy-synthesis from a file: + +```python +import torchaudio + +y, sr = torchaudio.load(YOUR_AUDIO_FILE) +if y.size(0) > 1: # mix to mono + y = y.mean(dim=0, keepdim=True) +y = torchaudio.functional.resample(y, orig_freq=sr, new_freq=24000) +y_hat = vocos(y) +``` + +## Citation + +If this code contributes to your research, please cite our work: + +``` +@article{siuzdak2023vocos, + title={Vocos: Closing the gap between time-domain and Fourier-based neural vocoders for high-quality audio synthesis}, + author={Siuzdak, Hubert}, + journal={arXiv preprint arXiv:2306.00814}, + year={2023} +} +``` + +## License + +The code in this repository is released under the MIT license. \ No newline at end of file diff --git a/bi_v100-f5-tts/charactr/vocos-mel-24khz/config.yaml b/bi_v100-f5-tts/charactr/vocos-mel-24khz/config.yaml new file mode 100644 index 0000000..5382621 --- /dev/null +++ b/bi_v100-f5-tts/charactr/vocos-mel-24khz/config.yaml @@ -0,0 +1,24 @@ +feature_extractor: + class_path: vocos.feature_extractors.MelSpectrogramFeatures + init_args: + sample_rate: 24000 + n_fft: 1024 + hop_length: 256 + n_mels: 100 + padding: center + +backbone: + class_path: vocos.models.VocosBackbone + init_args: + input_channels: 100 + dim: 512 + intermediate_dim: 1536 + num_layers: 8 + +head: + class_path: vocos.heads.ISTFTHead + init_args: + dim: 512 + n_fft: 1024 + hop_length: 256 + padding: center diff --git a/bi_v100-f5-tts/charactr/vocos-mel-24khz/pytorch_model.bin b/bi_v100-f5-tts/charactr/vocos-mel-24khz/pytorch_model.bin new file mode 100644 index 0000000..1e83702 --- /dev/null +++ b/bi_v100-f5-tts/charactr/vocos-mel-24khz/pytorch_model.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:97ec976ad1fd67a33ab2682d29c0ac7df85234fae875aefcc5fb215681a91b2a +size 54365991 diff --git a/bi_v100-f5-tts/constraints_f5.txt b/bi_v100-f5-tts/constraints_f5.txt index 65d66ac..554186b 100644 --- a/bi_v100-f5-tts/constraints_f5.txt +++ b/bi_v100-f5-tts/constraints_f5.txt @@ -1 +1,2 @@ -torch==2.1.0+corex.3.2.1 \ No newline at end of file +torch==2.1.0+corex.3.2.1 +accelerate==1.6.0 diff --git a/bi_v100-f5-tts/f5_server.py b/bi_v100-f5-tts/f5_server.py index 906f990..594d606 100644 --- a/bi_v100-f5-tts/f5_server.py +++ b/bi_v100-f5-tts/f5_server.py @@ -1,4 +1,30 @@ +import os +model_dir = os.getenv("MODEL_DIR", "/mounted_model") +model_name = os.getenv("MODEL_NAME", "model.safetensors") + +import logging +logging.basicConfig( + format="%(asctime)s %(name)-12s %(levelname)-4s %(message)s", + datefmt="%Y-%m-%d %H:%M:%S", + level=os.environ.get("LOGLEVEL", "INFO"), +) +logger = logging.getLogger(__file__) + +# enable custom patcher if available +patcher_path = os.path.join(model_dir, "custom_patcher.py") +if os.path.exists(patcher_path): + import shutil + shutil.copyfile(patcher_path, "custom_patcher.py") + try: + import custom_patcher + logger.info("Custom patcher has been applied.") + except ImportError: + logger.info("Failed to import custom_patcher. Ensure it is a valid Python module.") +else: + logger.info("No custom_patcher found.") + import torch +torch.set_num_threads(4) torch.backends.cuda.enable_flash_sdp(False) torch.backends.cuda.enable_mem_efficient_sdp(False) @@ -35,39 +61,52 @@ torch.nn.ConvTranspose1d.forward = conv_transpose1d_forward from f5_tts.infer.utils_infer import ( load_vocoder, load_model, - chunk_text, + preprocess_ref_audio_text, + infer_process, infer_batch_process, ) from omegaconf import OmegaConf from hydra.utils import get_class +import torch +import re +import numpy as np +import soundfile as sf import torchaudio +from scipy import signal import io +import time -from fastapi import FastAPI +from fastapi import FastAPI, Request, Response, Body, HTTPException from fastapi import UploadFile, File, Form from fastapi.responses import StreamingResponse, JSONResponse from contextlib import asynccontextmanager import uvicorn import os +import hashlib +import xml.etree.ElementTree as ET +from typing import Union -import logging -logging.basicConfig( - format="%(asctime)s %(name)-12s %(levelname)-4s %(message)s", - datefmt="%Y-%m-%d %H:%M:%S", - level=os.environ.get("LOGLEVEL", "INFO"), -) -logger = logging.getLogger(__file__) - - -model_dir = os.getenv('MODEL_DIR', '/models/SWivid/F5-TTS') -vocoder_dir = os.getenv('VOCODER_DIR', '/models/charactr/vocos-mel-24khz') +vocoder_dir = os.getenv('VOCODER_DIR', '/workspace/charactr/vocos-mel-24khz') +speed = float(os.getenv('SPEED', 1.0)) ema_model = None vocoder = None +voice_dict = {} device = 'cuda' if torch.cuda.is_available() else 'cpu' +TARGET_SR = 16000 +N_ZEROS = 20 + +# std_ref_audio_file = os.path.join(model_dir, 'ref_audio.wav') +# std_ref_text_file = os.path.join(model_dir, 'ref_text.txt') +std_ref_audio_file = '/workspace/ref_audio.wav' +std_ref_text_file = '/workspace/ref_text.txt' +std_ref_audio = None +std_ref_text = None def init(): global ema_model, vocoder + global std_ref_audio, std_ref_text + logger.info(f'{device=}') # load vocoder vocoder_name = 'vocos' vocoder = load_vocoder(vocoder_name=vocoder_name, is_local=True, local_path=vocoder_dir, device=device) @@ -76,12 +115,19 @@ def init(): model_cfg = OmegaConf.load('/workspace/F5-TTS/src/f5_tts/configs/F5TTS_v1_Base.yaml') model_cls = get_class(f'f5_tts.model.{model_cfg.model.backbone}') model_arc = model_cfg.model.arch - ckpt_file = os.path.join(model_dir, 'F5TTS_v1_Base/model_1250000.safetensors') - vocab_file = os.path.join(model_dir, 'F5TTS_v1_Base/vocab.txt') + ckpt_file = os.path.join(model_dir, model_name) + vocab_file = os.path.join(model_dir, 'vocab.txt') ema_model = load_model( model_cls, model_arc, ckpt_file, mel_spec_type=vocoder_name, vocab_file=vocab_file, device=device ) + with open(std_ref_audio_file, 'rb') as f: + std_ref_audio = f.read() + with open(std_ref_text_file, 'r', encoding='utf-8') as f: + std_ref_text = f.read().strip() + + + @asynccontextmanager async def lifespan(app: FastAPI): init() @@ -90,12 +136,131 @@ async def lifespan(app: FastAPI): app = FastAPI(lifespan=lifespan) -def tts_generate(gen_text, ref_audio, ref_text): +@app.get("/health") +@app.get("/ready") +async def ready(): + return JSONResponse(status_code=200, content={"message": "success"}) + +def encode_audio_key(audio_bytes: bytes) -> str: + return hashlib.md5(audio_bytes[:16000]).hexdigest()[:16] + +@app.post("/register_voice") +async def register_voice( + audio: UploadFile = File(...), + text: str = Form(...) +): + global voice_dict + + audio_bytes = await audio.read() + audio_key = encode_audio_key(audio_bytes) + # Ensure ref_text ends with a proper sentence-ending punctuation + if not text.endswith(". ") and not text.endswith("。"): + if text.endswith("."): + text += " " + else: + text += ". " + voice_dict[audio_key] = { + 'ref_audio': audio_bytes, + 'ref_text': text.strip() + } + + # warmup + for _ in generate("流式语音合成,合成测试", audio_key, fast_infer=2): + logger.info("Warming up") + + response = { + "status": "success", + "audio_key": audio_key + } + return JSONResponse(status_code=200, content=response) + + +symbols = """,.!?;:()[]{}<>,。!?;:【】《》……'"’“”_—""" +def contains_words(text): + return any(char not in symbols for char in text) + +def split_text(text, max_chars=135, cut_short_first=False): + sentences = re.split(r"(?<=[;:,.!?])\s+|(?<=[;:,。!?])", text) + sentences = [s.strip() for s in sentences if s.strip()] + + chunks = [] + current_chunk = "" + for sentence in sentences: + if len(current_chunk.encode("utf-8")) + len(sentence.encode("utf-8")) <= max_chars: + current_chunk += sentence + " " if sentence and len(sentence[-1].encode("utf-8")) == 1 else sentence + else: + if current_chunk and contains_words(current_chunk): + chunks.append(current_chunk.strip()) + current_chunk = sentence + " " if sentence and len(sentence[-1].encode("utf-8")) == 1 else sentence + + if current_chunk and contains_words(current_chunk): + chunks.append(current_chunk.strip()) + + if cut_short_first: + first_sentences = re.split(r"(?<=[;:,.!?])\s+|(?<=[;:,。!?])", chunks[0]) + first = first_sentences[0].strip() + rest = "".join(first_sentences[1:]).strip() + first_chunk = [first, rest] if rest else [first] + final_chunks = first_chunk + chunks[1:] + else: + final_chunks = chunks + + return final_chunks + +def audio_postprocess(audio: np.ndarray, ori_sr: int, target_sr: int) -> np.ndarray: + number_of_samples = int(len(audio) * float(target_sr) / ori_sr) + audio_resampled = signal.resample(audio, number_of_samples) + if audio.dtype == np.float32: + audio_resampled = np.clip(audio_resampled, -1.0, 1.0) + audio_resampled = (audio_resampled * 32767).astype(np.int16) + return audio_resampled + + +def generate(gen_text, ref_audio_key, fast_infer=0): + global voice_dict, ema_model, vocoder + ref_audio_ = voice_dict[ref_audio_key]['ref_audio'] + ref_text_ = voice_dict[ref_audio_key]['ref_text'] + + nfe_step = 16 + if fast_infer >= 1: + nfe_step = 7 + # nonuniform_step = True + # if fast_infer >= 2: + # ref_audio_ = voice_dict[ref_audio_key].get('ref_audio_slice', ref_audio_) + # ref_text_ = voice_dict[ref_audio_key].get('ref_text_slice', ref_text_) + + audio, sr = torchaudio.load(io.BytesIO(ref_audio_)) + max_chars = int(len(ref_text_.encode("utf-8")) / (audio.shape[-1] / sr) * (22 - audio.shape[-1] / sr)) + gen_text_batches = split_text(gen_text, max_chars=max_chars, cut_short_first=(fast_infer > 0)) + for gen_audio, gen_sr in infer_batch_process( + (audio, sr), + ref_text_, + gen_text_batches, + ema_model, + vocoder, + device=device, + streaming=True, + chunk_size=int(24e6), + nfe_step=nfe_step, + speed=speed, + ): + yield audio_postprocess(gen_audio, gen_sr, TARGET_SR).tobytes() + +def generate_with_audio(gen_text, ref_audio, ref_text, fast_infer=0): global ema_model, vocoder + if not contains_words(gen_text): + audio = np.zeros(N_ZEROS, dtype=np.int16).tobytes() + yield audio + return + + nfe_step = 16 + if fast_infer >= 1: + nfe_step = 7 + audio, sr = torchaudio.load(io.BytesIO(ref_audio)) max_chars = min(int(len(ref_text.encode("utf-8")) / (audio.shape[-1] / sr) * (22 - audio.shape[-1] / sr)), 135) - gen_text_batches = chunk_text(gen_text, max_chars=max_chars) + gen_text_batches = split_text(gen_text, max_chars=max_chars, cut_short_first=(fast_infer > 0)) for gen_audio, gen_sr in infer_batch_process( (audio, sr), ref_text, @@ -105,29 +270,72 @@ def tts_generate(gen_text, ref_audio, ref_text): device=device, streaming=True, chunk_size=int(24e6), - # nfe_step=16, + nfe_step=nfe_step, + speed=speed, ): - yield gen_audio.tobytes() + yield audio_postprocess(gen_audio, gen_sr, TARGET_SR).tobytes() + + +@app.post("/synthesize") +async def synthesize(request: Request): + data = await request.json() + text = data['text'] + audio_key = data['audio_key'] + fast_infer = data.get('fast_infer', 0) + if fast_infer == True: + fast_infer = 2 + else: + fast_infer = int(fast_infer) + # logger.info(f"Synthesizing text: {text}, audio_key: {audio_key}, fast_infer: {fast_infer}") + + if not contains_words(text): + audio = np.zeros(N_ZEROS, dtype=np.int16).tobytes() + return Response(audio, media_type='audio/wav') + + global voice_dict + if audio_key not in voice_dict: + raise HTTPException(status_code=400, detail="Invalid audio key") + + return StreamingResponse(generate(text, audio_key, fast_infer), media_type="audio/wav") + + +xml_namespace = "{http://www.w3.org/XML/1998/namespace}" +@app.post("/tts") +def predict(ssml: str = Body(...), fast_infer: Union[bool, int] = 0): + try: + root = ET.fromstring(ssml) + voice_element = root.find(".//voice") + if voice_element is not None: + transcription = voice_element.text.strip() + language = voice_element.get(f'{xml_namespace}lang', "zh").strip() + # voice_name = voice_element.get("name", "zh-f-soft-1").strip() + else: + return JSONResponse(status_code=400, content={"message": "Invalid SSML format: element not found."}) + except ET.ParseError as e: + return JSONResponse(status_code=400, content={"message": "Invalid SSML format", "Exception": str(e)}) + + fast_infer = int(fast_infer) -# return 24kHz pcm16 -@app.post("/generate") -async def generate( - ref_audio: UploadFile = File(...), - ref_text: str = Form(...), - text: str = Form(...) -): - audio_bytes = await ref_audio.read() return StreamingResponse( - tts_generate(text, ref_audio=audio_bytes, ref_text=ref_text), + generate_with_audio(transcription, std_ref_audio, std_ref_text, fast_infer), media_type="audio/wav" ) -@app.get("/ready") -@app.get("/health") -async def ready(): - return JSONResponse(status_code=200, content={"status": "ok"}) +@app.get("/health_check") +async def health_check(): + try: + a = torch.ones(10, 20, dtype=torch.float32, device='cuda') + b = torch.ones(20, 10, dtype=torch.float32, device='cuda') + c = torch.matmul(a, b) + if c.sum() == 10 * 20 * 10: + return {"status": "ok"} + else: + raise HTTPException(status_code=503) + except Exception as e: + print(f'health_check failed') + raise HTTPException(status_code=503) if __name__ == "__main__": - uvicorn.run(app, host="0.0.0.0", port=80) + uvicorn.run("f5_server:app", host="0.0.0.0", port=80) diff --git a/bi_v100-f5-tts/ref_audio.wav b/bi_v100-f5-tts/ref_audio.wav new file mode 100644 index 0000000000000000000000000000000000000000..7fc9e4c69b7185e540a0983af52ca1d243dbebf5 GIT binary patch literal 497324 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
AwGw%1nUN*eu>xWzJPkxZmzEG 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�$ExK)_E%;eGWn_^O8hsAjk~R+pex)qQ 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%0Dqp3q!&mNYbCkW3RjvgzuN?p1(_-Ilyv5Mr? z{pG#zfv+xmC{?Z8>+g&15AQba&hOGxrH?C`Vr`Q4P^;AMKhHh;bvL@~r>ZBXM)+uZ zD0@uBIPF-|q&Wn=_SJQoTy2duTRZjCX}++ozns}uoh7bf&yoA^wZNVK*5~zmb9~dl z620_Y1o)U=EcG*k#bhetx+H2oGsw%0^op}3uBgoDj<|KDMUg6RQ7nJdeI@aWh7a>e zcPX-z8s&8SRlF$SLcv#@C9o4uKF~i5B@`+S;`SwZqTI-wm~2^=G&43Mc3qwpw<<}A zOco@G62%MA_0e-NwQ)1@YWY;$Wb8%Exb#dmDm#fCmLDY)CKe>_e+Yi)RpumAE3V{| zu|f%7GA22VE{Q6RI*LAwE)eB&_ZYkM99nn86p%VDsOvN?%>?_t96AEh2gyC}*u%U} zk5l5#a$f>ha@^WxHW^Oz`llm(qwxS}p?TI?YmVjGxMjF}-gr9Ko@veN$b=q zpKMQgI<{u!p;_g+FTC%#?^l&Q*6LQCx^+jeE6T@oRo|!8FKcdxKe_G(?<*cu>NWMQ zih1AtDeHFg)_&KnPJ`ZK>W4AkSEwJrJjUMR?c>d3x28)wsUzv@u?A)DbI$XyzDVDx zpU^9w#|*b7CgR6M_CZGm#tCWeQLM*t{MO_vMD25au#U7FF%#h-Uqxgxg{*c)8FQ60 zB3O*ucjwmNqE{KP)8dE9yS@>;Ks9KnNqrRNLnZxh|QPw#pcR;Aa7mrOhrdRx}q&M6>-vJ@lsSH z;!X;loOMg9p-RY8p-SWtjeEJCRM&}14=f4|;<)v$JeU7f`YLg5IXWFmN4-7m<*2+L3R9argo}()GGDTW9p;*!K2E1D12B^ zt>0JO@2b@5V~quI=NnBw)|Ov=vSU6(4kWk}#4)BUh$~x`Ep?Vfa}H4UhAh2Sk}dhg zV!w3WyzaYno>T9HUlO?UHwIP^XY3;RNeyJ=D@2H>J+yqxH=F1gY!5F_KoK%U<vY5u`95MX2*xlF(sXlrSaXEVnwXOsmS$Wl6PM znDxNu6&ab&swdae=@Usm{ltB80xyxEn^Lc;3RKniX{y49orm)Ws=8Edf9QVLyD$7S za#MaY^=0jC16D^m!%AV^+x;(>Zc=aTH=dikFAr~-s_};^^{u)9dT&j;sgph_o~ZB> z7Ie)|W%^3}4$3K;^r?E`lSCKP7V1{CHppMEo@Al}(`nLFV^INXxYc%H_1Nwl6jzIT z+#~khzNtOQZ)x66pVzzpR`gcty9iz*Kc$giAlay0j9w;*gE%R7k}DM|qLvVM&JbtE z?8O|$jKDvhikX!RNS0&9WSMfQJU?EiWG8KWy#COqTudxUY)=$_k(;9a3O#x4E0^EZ zlQRFYD6v&}p{R~Oi%XTY#5T)xSP`f}QZK!WosFG|-G=`+88;z6k1LBEm6pT}#}~;5 zLC<`7UtF$i2lmSqyD6K9+n2A&Z{td2-LXxvlQE>|bn#s@J7yj-EmO8Pjt52yh*gyLY9ckyk)M+jKFwXTxa?bjvvQ3v*R`<I^mEaqRI{-SV*gaP+YGpuRu9>$^AI z@7x#Pi9a3Q3P0_Gez~7UK4pI@`jmNhaL2!!`!xD#=Pp@Qr8-nqJd8hBRHplr`{Vm8 z)uw9TpRmvP^9kF-W z9UMJ(j(^D;;SzW*VJp_N0XfxGqQ%obpNhX>J*(lbyrP=M3>mxf85v#2FJ=Etr?vqRvtqXmq-TT1mJ;OojndwYkkyXv}#&*DYyxHTK78_%&=9zEkGL#xKOe&Myyo)%n z#4NUKS~9Hl);(*g?E>-mAP}Vu_I9Ax$eahxVP~7eX}>{nbd!ti>3H+J)%hBMLox2( z^6v%~g43ZiVk0>xBAr@9&7~GlJrQNpMtTl2omIr1QeVyC2|aU{jIVl7@H?~&W$isXLzMSO9>oig)7iBj<) zD{&P08{6_Rxh8%mo-fzMr#XDgc`Sb{dOTGt)x!@-54S3{O7gJxKzVG@ zD0D-(&V~N?c@B9`UW39oWxO@ojUHne<^xtRUZ7&!Z8v3G>Z}?o(^hVyzL;JH?8o*X z5KucDHiz7K>sWE<9bL{#l` zu&?FxE&3{5&8S8mOd+d=mCin5=W-^v$NW9ad$kDWg<{bCKv*qU6AX%OqSvFTqS~m9 z=wa!dbTgVMQN?7%u@w!9?D(0ZdU@H3)wiKs|g9M3kEJ35_ zNjO(FDR&bt;+N%l@=54lMeLQdRoVf+XipLzU-w6e#jRpxba(VxbfrWpnHM)fzB44- z(S2e{bV+o3I8GkfAQ-VqsS;V z<{OUmtxtAc^-~@4(@wPM8W#}Y7u3h!J3c;~`nSr%uHBF74_hHRS*C82VYH!#wl5K54+}7;VU3TY)^cnLEuT zW}9gVNbv`zc~g_A*OXx{MgjRG{DpGclr8n;;w2v#pPKi1j4X%Dv4K28i@g){Pe*)x z^|i;9>RxiUdsf~=zA--`ND5a85RZ{}dy4tl^@s}EBz=pK%t~RKSQf~72B#Bwo!Oim zuAdha?njX@2SgPf!`~VejR}#&CYTgd3A2Scf?D1lSH(TxYXn7+bdf>SDn66&WkS$$ zDy};IMmd{!_hDYCRB94*%H}>-yN4Dlf|}4>!m{3pgb!+S$-og zRrDdJYauREMwLlqC9${2v#XC5MrB4G36A+Uyk0Js)6bq@4|1-!dhQNnypG2gkc64S zB;mFoMbOIM<0bP>xRscn9p=n%*ql7pI=vy{k~~D}CZ&-4sNLvCzW87$D|qZr@$~{5 za^53+EA(u+nqPCAGKbjSZZnt{O>)yU*1JeGOg*PR?_kxeGX40o&`@dEGHhcV-dV)Y z>kR`~ZKKK1Z1f_Q9>fX@7te?KqbHS4txi4)m{Vy3noA0t0+js12XV5wRN^%VXE~3+|^eEoe z-fDq;mW({^L2m}I!-BqDzag+3+zM?Xza^VgMb=O*BI>DU$cw0d&H`BU6Mo?W04mI-r(27!lPB&ZZFz@GLAMuj&*y-+M1#JFibDouQgb!9x!SJ9J_ zj2H#ELqM~Y$|5r^A$^qRfS#diQ9`Slr!UP@+^66oHDLBt}Jd-)+1BNbTYQ= zBDPx=lof*h$bUi}O@s7UVtJn@%a7{9xY#Zj76b*C!V{rNFvU;hFCad*#_!~(@Fn~% zey3nU(9R#@n%F7qVb&FM5c4hh^fMr5*HDwGR}pwl@;OP4c^WSvJ9GtA1&3Yo1kN69DX>;^*#tCy2ypYf7;1qIQ z+-x3`x63=@69g4}3V({%&CB7>BBy(wcfd>JFM%F2{8Rp%U|cAS9E_Y29Y?i9%VI1s z{V^3W6zP;y5_=Il2wHc?c>y=S7S|tl5Vt5#iZ6~Yi8sZsDbf}8_{#Vy`F325JXc z%x~dm^4D;G9lTuL6?B!CyU5Msc5^4Vt(+k?fqld3WR}sJsmh36$`-kwWFR^TbD`v5 zMPSzN@(uekkfYz^?e^Aq+1@jtQyPF6S?0ceopA0tT*z~^W8R1hKG?9VTJ9|EmIiYt zbac0A2J`YuCW4s>U6N)xN31;4kcT)q2`lCl>GqMEIjeC!wmu%IMd}UMg}Vm|{J`ah zp@-QA1N`?j^{To?U9B!sr>aZT_3At|MSX#|R-ZZ-etof~O4F$s(R6FZG`E@_tY&qj z>wFTzFC5b!>RX-(h9X0)VF9Zkl$j{tSC2W%(rYnT+A+`6Z$l37ix7zUXD^+|$xs1* zcM-Wug>E6xQ|)i-z%NeryZp<6JXAkjgf0n9KuBsK%226SPEMiZMr2Vv)B~EIUWEC% z40bK2i>u)6@Jjh=em>^!Gy=O|TyQ366}AZJ!Xd#T{Iq^yoA4C&BRMKdyoh;jTlAi! zGDaPvlD5T;#^%IUW8AeGTM;`g&BHuwi!@!@Bt6A?KEsG>QV{<-kL6|m}7s(st z3-We3S1yy!$n|n+{H44?-XGT|YehWeT5=U#7+n#)A3YZB7mtXKqpn0EQHE$7dWj8x zVmYcPY7xA#&u`?!sltAnXvS{S8_6WTJhiAtdjAm8SUHcLC9UPp){4k-f^ z8|sBLr0{%D5fODO!D+wPNAXU)^}li7{J@dSc8gt&$n!6E9ywOAh|09H&ROUvv8!xD z)<(<+wwv?dpSNJ1d1EGqeYZYOFVgp5Ubjv+s+-Yu>ymVf zn3pNmG(BFbC)E4upt|z01LF$aqvmk}tDVUob01e8lQkGeY782W<_vsrpjpR!ORx3< zK7e}kT)r67R`w$h|dwCTq3{d2Ki}0QDIa?RB}{V z)L~SLxLe#MZUnvc;wy2dm;}0aMVUl3qSMIC$QhwbXc4Rnas;=03%^`YAkgry_!4*v zr?{(po*Ej##gTAQ*rUKORj^i=8b%sJ0u0PihM18bt`eg4AyaSxGg4>B95hfglr_pQ zrG?T-Nuz9&Gsu3@7D+*>As!-ovl!^crJ=c?9<%vQ|BzqipYrLw1zywJ(3>8pqp6-E zU_&!KB2SX%*zI-Ay4GCht^wEKYZoxkH-M9S;1D_L>?(M5mp~*gNA|r8*@MYgMTU(P zNb0c~$~>|!60J%^_cE*stKD*pc-mCBuEAVvE;A>ZN04Vb1V1sH&sB#w%>{C9JIvFV zo9@LLB`R~!>@??K?)nO7xd-qo(kz*l8t5(;Y+8qP-&$n5wB@{X5=j&V$!9d0#G2mLd{w}G!H!V+PLNO&V?7r6K)__4zR3;Y*hWPjvQWJ}-@T%AMg#xI-KhdxYJMx`IRY0lS^eg&rZX_{=oK z)qCj8n73rpXJ|HRA69H=h*+lNA#ZGgTnJt{C!Hc+k3uR&z3e_vA<9vUnogJu9S2iU zE7};?2G5-PCVlO`S=5>h`c&Rg?=o

tTVCy_u+CTJ=nO8a)I=4vT?TJnoXY&R=JN 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 @XgVkS<84yDem9OLD%V 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 W=Xd}8z2C$?hWwxZhEMsw{rV4I@j=S~ literal 0 HcmV?d00001 diff --git a/bi_v100-f5-tts/ref_text.txt b/bi_v100-f5-tts/ref_text.txt new file mode 100644 index 0000000..02f1eb0 --- /dev/null +++ b/bi_v100-f5-tts/ref_text.txt @@ -0,0 +1 @@ +而这条街道,没有半分“不谐”之感,实属难得。 \ No newline at end of file diff --git a/bi_v100-f5-tts/requirements_f5.txt b/bi_v100-f5-tts/requirements_f5.txt index 1fb3a78..364e2ee 100644 --- a/bi_v100-f5-tts/requirements_f5.txt +++ b/bi_v100-f5-tts/requirements_f5.txt @@ -1,3 +1,2 @@ -f5-tts fastapi -uvicorn[standard] \ No newline at end of file +uvicorn[standard]

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�Ja4 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 Kh_tqGB(y-Fn{C1 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