From e540794e7e53731beb12d371901f6c50152044ff Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 3 Oct 2023 13:14:20 +0000 Subject: [PATCH 01/11] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/psf/black: 23.1.0 → 23.9.1](https://github.com/psf/black/compare/23.1.0...23.9.1) - [github.com/asottile/pyupgrade: v3.3.1 → v3.14.0](https://github.com/asottile/pyupgrade/compare/v3.3.1...v3.14.0) - [github.com/PyCQA/flake8: 6.0.0 → 6.1.0](https://github.com/PyCQA/flake8/compare/6.0.0...6.1.0) - [github.com/pycqa/pylint: v2.8.2 → v3.0.0](https://github.com/pycqa/pylint/compare/v2.8.2...v3.0.0) --- .pre-commit-config.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 03bd2b7..7cda633 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -18,7 +18,7 @@ repos: # python code formatting - repo: https://github.com/psf/black - rev: 23.1.0 + rev: 23.9.1 hooks: - id: black args: [--line-length, "120"] @@ -32,14 +32,14 @@ repos: # python upgrading syntax to newer version - repo: https://github.com/asottile/pyupgrade - rev: v3.3.1 + rev: v3.14.0 hooks: - id: pyupgrade args: [--py38-plus] # python check (PEP8), programming errors and code complexity - repo: https://github.com/PyCQA/flake8 - rev: 6.0.0 + rev: 6.1.0 hooks: - id: flake8 args: @@ -54,6 +54,6 @@ repos: # pylint - repo: https://github.com/pycqa/pylint - rev: v2.8.2 + rev: v3.0.0 hooks: - id: pylint From 254a8e05ce140502d7cbab34695f9ea9b27ea6dc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 28 Dec 2023 13:20:11 +0000 Subject: [PATCH 02/11] Bump diffusers from 0.21.3 to 0.25.0 Bumps [diffusers](https://github.com/huggingface/diffusers) from 0.21.3 to 0.25.0. - [Release notes](https://github.com/huggingface/diffusers/releases) - [Commits](https://github.com/huggingface/diffusers/compare/v0.21.3...v0.25.0) --- updated-dependencies: - dependency-name: diffusers dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index f657dc1..0a7e14c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -35,7 +35,7 @@ torchaudio matplotlib pandas conformer==0.3.2 -diffusers==0.21.3 +diffusers==0.25.0 notebook ipywidgets gradio From dc035a09f2b362902441dda9ee8f56016f0c6bdf Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 8 Jan 2024 21:15:26 +0000 Subject: [PATCH 03/11] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/pre-commit/pre-commit-hooks: v4.4.0 → v4.5.0](https://github.com/pre-commit/pre-commit-hooks/compare/v4.4.0...v4.5.0) - [github.com/psf/black: 23.9.1 → 23.12.1](https://github.com/psf/black/compare/23.9.1...23.12.1) - [github.com/PyCQA/isort: 5.12.0 → 5.13.2](https://github.com/PyCQA/isort/compare/5.12.0...5.13.2) - [github.com/asottile/pyupgrade: v3.14.0 → v3.15.0](https://github.com/asottile/pyupgrade/compare/v3.14.0...v3.15.0) - [github.com/PyCQA/flake8: 6.1.0 → 7.0.0](https://github.com/PyCQA/flake8/compare/6.1.0...7.0.0) - [github.com/pycqa/pylint: v3.0.0 → v3.0.3](https://github.com/pycqa/pylint/compare/v3.0.0...v3.0.3) --- .pre-commit-config.yaml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 7cda633..e695f11 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -3,7 +3,7 @@ default_language_version: repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.4.0 + rev: v4.5.0 hooks: # list of supported hooks: https://pre-commit.com/hooks.html - id: trailing-whitespace @@ -18,28 +18,28 @@ repos: # python code formatting - repo: https://github.com/psf/black - rev: 23.9.1 + rev: 23.12.1 hooks: - id: black args: [--line-length, "120"] # python import sorting - repo: https://github.com/PyCQA/isort - rev: 5.12.0 + rev: 5.13.2 hooks: - id: isort args: ["--profile", "black", "--filter-files"] # python upgrading syntax to newer version - repo: https://github.com/asottile/pyupgrade - rev: v3.14.0 + rev: v3.15.0 hooks: - id: pyupgrade args: [--py38-plus] # python check (PEP8), programming errors and code complexity - repo: https://github.com/PyCQA/flake8 - rev: 6.1.0 + rev: 7.0.0 hooks: - id: flake8 args: @@ -54,6 +54,6 @@ repos: # pylint - repo: https://github.com/pycqa/pylint - rev: v3.0.0 + rev: v3.0.3 hooks: - id: pylint From 4ec245e61e98eda5fb5fa7d99ea6adf2f837dba1 Mon Sep 17 00:00:00 2001 From: Gustav Eje Henter Date: Tue, 9 Jan 2024 22:48:16 +0100 Subject: [PATCH 04/11] Update README.md with ICASSP acceptance Added ICASSP acceptance to the README and made some tiny tweaks to the text --- README.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 2534da0..a3fc580 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ -> This is the official code implementation of 🍵 Matcha-TTS. +> This is the official code implementation of 🍵 Matcha-TTS We propose 🍵 Matcha-TTS, a new approach to non-autoregressive neural TTS, that uses [conditional flow matching](https://arxiv.org/abs/2210.02747) (similar to [rectified flows](https://arxiv.org/abs/2209.03003)) to speed up ODE-based speech synthesis. Our method: @@ -26,13 +26,13 @@ We propose 🍵 Matcha-TTS, a new approach to non-autoregressive neural TTS, tha - Sounds highly natural - Is very fast to synthesise from -Check out our [demo page](https://shivammehta25.github.io/Matcha-TTS) and read [our arXiv preprint](https://arxiv.org/abs/2309.03199) for more details. +Check out our [demo page](https://shivammehta25.github.io/Matcha-TTS) and read [our ICASSP 2024 paper](https://arxiv.org/abs/2309.03199) for more details. [Pre-trained models](https://drive.google.com/drive/folders/17C_gYgEHOxI5ZypcfE_k1piKCtyR0isJ?usp=sharing) will be automatically downloaded with the CLI or gradio interface. -[Try 🍵 Matcha-TTS on HuggingFace 🤗 spaces!](https://huggingface.co/spaces/shivammehta25/Matcha-TTS) +You can also [try 🍵 Matcha-TTS in your browser on HuggingFace 🤗 spaces](https://huggingface.co/spaces/shivammehta25/Matcha-TTS). -## Watch the teaser +## Teaser video [![Watch the video](https://img.youtube.com/vi/xmvJkz3bqw0/hqdefault.jpg)](https://youtu.be/xmvJkz3bqw0) @@ -257,11 +257,11 @@ This will write `.wav` audio files to the output directory. If you use our code or otherwise find this work useful, please cite our paper: ```text -@article{mehta2023matcha, - title={Matcha-TTS: A fast TTS architecture with conditional flow matching}, +@inproceedings{mehta2024matcha, + title={Matcha-{TTS}: A fast {TTS} architecture with conditional flow matching}, author={Mehta, Shivam and Tu, Ruibo and Beskow, Jonas and Sz{\'e}kely, {\'E}va and Henter, Gustav Eje}, - journal={arXiv preprint arXiv:2309.03199}, - year={2023} + booktitle={Proc. ICASSP}, + year={2024} } ``` @@ -269,7 +269,7 @@ If you use our code or otherwise find this work useful, please cite our paper: Since this code uses [Lightning-Hydra-Template](https://github.com/ashleve/lightning-hydra-template), you have all the powers that come with it. -Other source code I would like to acknowledge: +Other source code we would like to acknowledge: - [Coqui-TTS](https://github.com/coqui-ai/TTS/tree/dev): For helping me figure out how to make cython binaries pip installable and encouragement - [Hugging Face Diffusers](https://huggingface.co/): For their awesome diffusers library and its components From f1e8efdec20b3baa197858ada3e8e55e2fc6f2a6 Mon Sep 17 00:00:00 2001 From: Gustav Eje Henter Date: Tue, 9 Jan 2024 22:53:09 +0100 Subject: [PATCH 05/11] Update README.md Add back full stop that erroneously went missing in the shuffle. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a3fc580..e33084d 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ -> This is the official code implementation of 🍵 Matcha-TTS +> This is the official code implementation of 🍵 Matcha-TTS. We propose 🍵 Matcha-TTS, a new approach to non-autoregressive neural TTS, that uses [conditional flow matching](https://arxiv.org/abs/2210.02747) (similar to [rectified flows](https://arxiv.org/abs/2209.03003)) to speed up ODE-based speech synthesis. Our method: From 8268360674a4a158cd755f563b69fd8493bef637 Mon Sep 17 00:00:00 2001 From: Shivam Mehta Date: Fri, 12 Jan 2024 10:32:59 +0000 Subject: [PATCH 06/11] Update download urls --- .pylintrc | 71 --------------------------------------------------- matcha/cli.py | 8 +++--- 2 files changed, 4 insertions(+), 75 deletions(-) diff --git a/.pylintrc b/.pylintrc index 11aeb8d..7ab186a 100644 --- a/.pylintrc +++ b/.pylintrc @@ -82,16 +82,6 @@ disable=missing-docstring, no-name-in-module, no-member, unsubscriptable-object, - print-statement, - parameter-unpacking, - unpacking-in-except, - old-raise-syntax, - backtick, - long-suffix, - old-ne-operator, - old-octal-literal, - import-star-module-level, - non-ascii-bytes-literal, raw-checker-failed, bad-inline-option, locally-disabled, @@ -106,67 +96,6 @@ disable=missing-docstring, too-many-arguments, too-many-locals, too-many-statements, - apply-builtin, - basestring-builtin, - buffer-builtin, - cmp-builtin, - coerce-builtin, - execfile-builtin, - file-builtin, - long-builtin, - raw_input-builtin, - reduce-builtin, - standarderror-builtin, - unicode-builtin, - xrange-builtin, - coerce-method, - delslice-method, - getslice-method, - setslice-method, - no-absolute-import, - old-division, - dict-iter-method, - dict-view-method, - next-method-called, - metaclass-assignment, - indexing-exception, - raising-string, - reload-builtin, - oct-method, - hex-method, - nonzero-method, - cmp-method, - input-builtin, - round-builtin, - intern-builtin, - unichr-builtin, - map-builtin-not-iterating, - zip-builtin-not-iterating, - range-builtin-not-iterating, - filter-builtin-not-iterating, - using-cmp-argument, - eq-without-hash, - div-method, - idiv-method, - rdiv-method, - exception-message-attribute, - invalid-str-codec, - sys-max-int, - bad-python3-import, - deprecated-string-function, - deprecated-str-translate-call, - deprecated-itertools-function, - deprecated-types-field, - next-method-defined, - dict-items-not-iterating, - dict-keys-not-iterating, - dict-values-not-iterating, - deprecated-operator-function, - deprecated-urllib-function, - xreadlines-attribute, - deprecated-sys-function, - exception-escape, - comprehension-escape, duplicate-code, not-callable, import-outside-toplevel, diff --git a/matcha/cli.py b/matcha/cli.py index 9e3f7fb..f3c29a7 100644 --- a/matcha/cli.py +++ b/matcha/cli.py @@ -18,8 +18,8 @@ from matcha.text import sequence_to_text, text_to_sequence from matcha.utils.utils import assert_model_downloaded, get_user_data_dir, intersperse MATCHA_URLS = { - "matcha_ljspeech": "https://drive.google.com/file/d/1BBzmMU7k3a_WetDfaFblMoN18GqQeHCg/view?usp=drive_link", - "matcha_vctk": "https://drive.google.com/file/d/1enuxmfslZciWGAl63WGh2ekVo00FYuQ9/view?usp=drive_link", + "matcha_ljspeech": "https://github.com/shivammehta25/Matcha-TTS-checkpoints/releases/download/v1.0/matcha_ljspeech.ckpt", + "matcha_vctk": "https://github.com/shivammehta25/Matcha-TTS-checkpoints/releases/download/v1.0/matcha_vctk.ckpt", } VOCODER_URLS = { @@ -63,7 +63,7 @@ def get_texts(args): if args.text: texts = [args.text] else: - with open(args.file) as f: + with open(args.file, encoding="utf-8") as f: texts = f.readlines() return texts @@ -140,7 +140,7 @@ def validate_args(args): if args.checkpoint_path is None: # When using pretrained models - if args.model in SINGLESPEAKER_MODEL.keys(): + if args.model in SINGLESPEAKER_MODEL: args = validate_args_for_single_speaker_model(args) if args.model in MULTISPEAKER_MODEL: From 95ec24b5992d9e4b23cbcc62c846042c3a37542c Mon Sep 17 00:00:00 2001 From: Shivam Mehta Date: Fri, 12 Jan 2024 10:48:52 +0000 Subject: [PATCH 07/11] Version bump --- matcha/VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/matcha/VERSION b/matcha/VERSION index 81340c7..bbdeab6 100644 --- a/matcha/VERSION +++ b/matcha/VERSION @@ -1 +1 @@ -0.0.4 +0.0.5 From 39cbd85236e46236a61cccb444afd8063b4cf41b Mon Sep 17 00:00:00 2001 From: Shivam Mehta Date: Fri, 12 Jan 2024 11:09:25 +0000 Subject: [PATCH 08/11] Using Wget for new ckpt downloadsA --- .pylintrc | 11 ++--------- matcha/app.py | 15 +++++++++++---- matcha/cli.py | 2 +- matcha/utils/utils.py | 4 +++- 4 files changed, 17 insertions(+), 15 deletions(-) diff --git a/.pylintrc b/.pylintrc index 7ab186a..9628641 100644 --- a/.pylintrc +++ b/.pylintrc @@ -292,13 +292,6 @@ max-line-length=120 # Maximum number of lines in a module. max-module-lines=1000 -# List of optional constructs for which whitespace checking is disabled. `dict- -# separator` is used to allow tabulation in dicts, etc.: {1 : 1,\n222: 2}. -# `trailing-comma` allows a space between comma and closing bracket: (a, ). -# `empty-line` allows space-only lines. -no-space-check=trailing-comma, - dict-separator - # Allow the body of a class to be on the same line as the declaration if body # contains single statement. single-line-class-stmt=no @@ -528,5 +521,5 @@ min-public-methods=2 # Exceptions that will emit a warning when being caught. Defaults to # "BaseException, Exception". -overgeneral-exceptions=BaseException, - Exception +overgeneral-exceptions=builtins.BaseException, + builtins.Exception diff --git a/matcha/app.py b/matcha/app.py index 16e8077..0091e7a 100644 --- a/matcha/app.py +++ b/matcha/app.py @@ -29,8 +29,15 @@ args = Namespace( CURRENTLY_LOADED_MODEL = args.model -MATCHA_TTS_LOC = lambda x: LOCATION / f"{x}.ckpt" # noqa: E731 -VOCODER_LOC = lambda x: LOCATION / f"{x}" # noqa: E731 + +def MATCHA_TTS_LOC(x): + return LOCATION / f"{x}.ckpt" + + +def VOCODER_LOC(x): + return LOCATION / f"{x}" + + LOGO_URL = "https://shivammehta25.github.io/Matcha-TTS/images/logo.png" RADIO_OPTIONS = { "Multi Speaker (VCTK)": { @@ -44,9 +51,9 @@ RADIO_OPTIONS = { } # Ensure all the required models are downloaded -assert_model_downloaded(MATCHA_TTS_LOC("matcha_ljspeech"), MATCHA_URLS["matcha_ljspeech"]) +assert_model_downloaded(MATCHA_TTS_LOC("matcha_ljspeech"), MATCHA_URLS["matcha_ljspeech"], use_wget=True) assert_model_downloaded(VOCODER_LOC("hifigan_T2_v1"), VOCODER_URLS["hifigan_T2_v1"]) -assert_model_downloaded(MATCHA_TTS_LOC("matcha_vctk"), MATCHA_URLS["matcha_vctk"]) +assert_model_downloaded(MATCHA_TTS_LOC("matcha_vctk"), MATCHA_URLS["matcha_vctk"], use_wget=True) assert_model_downloaded(VOCODER_LOC("hifigan_univ_v1"), VOCODER_URLS["hifigan_univ_v1"]) device = get_device(args) diff --git a/matcha/cli.py b/matcha/cli.py index f3c29a7..29d4f48 100644 --- a/matcha/cli.py +++ b/matcha/cli.py @@ -74,7 +74,7 @@ def assert_required_models_available(args): model_path = args.checkpoint_path else: model_path = save_dir / f"{args.model}.ckpt" - assert_model_downloaded(model_path, MATCHA_URLS[args.model]) + assert_model_downloaded(model_path, MATCHA_URLS[args.model], use_wget=True) vocoder_path = save_dir / f"{args.vocoder}" assert_model_downloaded(vocoder_path, VOCODER_URLS[args.vocoder]) diff --git a/matcha/utils/utils.py b/matcha/utils/utils.py index 5f8162d..adb9290 100644 --- a/matcha/utils/utils.py +++ b/matcha/utils/utils.py @@ -115,7 +115,7 @@ def get_metric_value(metric_dict: Dict[str, Any], metric_name: str) -> float: return None if metric_name not in metric_dict: - raise Exception( + raise ValueError( f"Metric value not found! \n" "Make sure metric name logged in LightningModule is correct!\n" "Make sure `optimized_metric` name in `hparams_search` config is correct!" @@ -208,8 +208,10 @@ def get_user_data_dir(appname="matcha_tts"): def assert_model_downloaded(checkpoint_path, url, use_wget=False): if Path(checkpoint_path).exists(): log.debug(f"[+] Model already present at {checkpoint_path}!") + print(f"[+] Model already present at {checkpoint_path}!") return log.info(f"[-] Model not found at {checkpoint_path}! Will download it") + print(f"[-] Model not found at {checkpoint_path}! Will download it") checkpoint_path = str(checkpoint_path) if not use_wget: gdown.download(url=url, output=checkpoint_path, quiet=False, fuzzy=True) From 5a52a67cf71c4a2c59eb628f0be816d682b30605 Mon Sep 17 00:00:00 2001 From: Shivam Mehta Date: Fri, 12 Jan 2024 11:11:41 +0000 Subject: [PATCH 09/11] Version bump --- matcha/VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/matcha/VERSION b/matcha/VERSION index bbdeab6..442b113 100644 --- a/matcha/VERSION +++ b/matcha/VERSION @@ -1 +1 @@ -0.0.5 +0.0.5.1 From fb7b954de5427aa94612ade3c6a1e354f5509a81 Mon Sep 17 00:00:00 2001 From: Shivam Mehta Date: Fri, 12 Jan 2024 11:21:51 +0000 Subject: [PATCH 10/11] Updating different url for hifigan as well --- matcha/app.py | 4 ++-- matcha/cli.py | 6 +++--- matcha/utils/utils.py | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/matcha/app.py b/matcha/app.py index 0091e7a..d68fbaa 100644 --- a/matcha/app.py +++ b/matcha/app.py @@ -51,9 +51,9 @@ RADIO_OPTIONS = { } # Ensure all the required models are downloaded -assert_model_downloaded(MATCHA_TTS_LOC("matcha_ljspeech"), MATCHA_URLS["matcha_ljspeech"], use_wget=True) +assert_model_downloaded(MATCHA_TTS_LOC("matcha_ljspeech"), MATCHA_URLS["matcha_ljspeech"]) assert_model_downloaded(VOCODER_LOC("hifigan_T2_v1"), VOCODER_URLS["hifigan_T2_v1"]) -assert_model_downloaded(MATCHA_TTS_LOC("matcha_vctk"), MATCHA_URLS["matcha_vctk"], use_wget=True) +assert_model_downloaded(MATCHA_TTS_LOC("matcha_vctk"), MATCHA_URLS["matcha_vctk"]) assert_model_downloaded(VOCODER_LOC("hifigan_univ_v1"), VOCODER_URLS["hifigan_univ_v1"]) device = get_device(args) diff --git a/matcha/cli.py b/matcha/cli.py index 29d4f48..579d7d6 100644 --- a/matcha/cli.py +++ b/matcha/cli.py @@ -23,8 +23,8 @@ MATCHA_URLS = { } VOCODER_URLS = { - "hifigan_T2_v1": "https://drive.google.com/file/d/14NENd4equCBLyyCSke114Mv6YR_j_uFs/view?usp=drive_link", - "hifigan_univ_v1": "https://drive.google.com/file/d/1qpgI41wNXFcH-iKq1Y42JlBC9j0je8PW/view?usp=drive_link", + "hifigan_T2_v1": "https://github.com/shivammehta25/Matcha-TTS-checkpoints/releases/download/v1.0/generator_v1", # Old url: https://drive.google.com/file/d/14NENd4equCBLyyCSke114Mv6YR_j_uFs/view?usp=drive_link + "hifigan_univ_v1": "https://github.com/shivammehta25/Matcha-TTS-checkpoints/releases/download/v1.0/g_02500000", # Old url: https://drive.google.com/file/d/1qpgI41wNXFcH-iKq1Y42JlBC9j0je8PW/view?usp=drive_link } MULTISPEAKER_MODEL = { @@ -74,7 +74,7 @@ def assert_required_models_available(args): model_path = args.checkpoint_path else: model_path = save_dir / f"{args.model}.ckpt" - assert_model_downloaded(model_path, MATCHA_URLS[args.model], use_wget=True) + assert_model_downloaded(model_path, MATCHA_URLS[args.model]) vocoder_path = save_dir / f"{args.vocoder}" assert_model_downloaded(vocoder_path, VOCODER_URLS[args.vocoder]) diff --git a/matcha/utils/utils.py b/matcha/utils/utils.py index adb9290..af65e09 100644 --- a/matcha/utils/utils.py +++ b/matcha/utils/utils.py @@ -205,7 +205,7 @@ def get_user_data_dir(appname="matcha_tts"): return final_path -def assert_model_downloaded(checkpoint_path, url, use_wget=False): +def assert_model_downloaded(checkpoint_path, url, use_wget=True): if Path(checkpoint_path).exists(): log.debug(f"[+] Model already present at {checkpoint_path}!") print(f"[+] Model already present at {checkpoint_path}!") From 256adc55d3219053d2d086db3f9bd9a4bde96fb1 Mon Sep 17 00:00:00 2001 From: Shivam Mehta Date: Fri, 12 Jan 2024 11:31:01 +0000 Subject: [PATCH 11/11] Adding ICASSP 2024 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e33084d..ebc6b7c 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ -> This is the official code implementation of 🍵 Matcha-TTS. +> This is the official code implementation of 🍵 Matcha-TTS [ICASSP 2024]. We propose 🍵 Matcha-TTS, a new approach to non-autoregressive neural TTS, that uses [conditional flow matching](https://arxiv.org/abs/2210.02747) (similar to [rectified flows](https://arxiv.org/abs/2209.03003)) to speed up ODE-based speech synthesis. Our method: