[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"tool-daniilrobnikov--vits2":3,"similar-daniilrobnikov--vits2":69},{"id":4,"github_repo":5,"name":6,"description_en":7,"description_zh":8,"ai_summary_zh":8,"readme_en":9,"readme_zh":10,"quickstart_zh":11,"use_case_zh":12,"hero_image_url":13,"owner_login":14,"owner_name":15,"owner_avatar_url":16,"owner_bio":17,"owner_company":18,"owner_location":19,"owner_email":20,"owner_twitter":14,"owner_website":20,"owner_url":21,"languages":22,"stars":31,"forks":32,"last_commit_at":33,"license":34,"difficulty_score":35,"env_os":36,"env_gpu":37,"env_ram":36,"env_deps":38,"category_tags":52,"github_topics":55,"view_count":63,"oss_zip_url":20,"oss_zip_packed_at":20,"status":64,"created_at":65,"updated_at":66,"faqs":67,"releases":68},9602,"daniilrobnikov\u002Fvits2","vits2","VITS2: Improving Quality and Efficiency of Single-Stage Text-to-Speech with Adversarial Learning and Architecture Design","VITS2 是一款先进的单阶段文本转语音（TTS）开源模型，由韩国 SK Telecom 团队研发。它旨在将文字直接高效地合成为自然流畅的语音，无需传统多阶段流程的复杂拼接。\n\n针对早期单阶段模型存在的发音不自然、计算效率低以及过度依赖人工标注音素等问题，VITS2 通过引入改进的对抗学习机制和全新的架构设计给出了出色解决方案。其核心亮点在于显著降低了对外部音素转换工具的依赖，实现了真正的端到端训练与推理。这不仅让合成语音在自然度和说话人特征相似度上有了质的飞跃，还大幅提升了训练和生成的速度，使得在单张显卡上也能高效运行。\n\n这款工具非常适合人工智能研究人员、语音技术开发者以及对高质量语音合成有需求的技术团队使用。对于希望探索前沿 TTS 技术、构建多说话人语音系统或优化现有语音产品的专业人士而言，VITS2 提供了一个性能强劲且架构优雅的基准方案。虽然目前部分非官方实现仍在完善中，但其展现出的技术潜力已为语音合成领域带来了新的突破方向。","# VITS2: Improving Quality and Efficiency of Single-Stage Text-to-Speech with Adversarial Learning and Architecture Design\n\n### Jungil Kong, Jihoon Park, Beomjeong Kim, Jeongmin Kim, Dohee Kong, Sangjin Kim\n\n### SK Telecom, South Korea\n\nSingle-stage text-to-speech models have been actively studied recently, and their results have outperformed two-stage pipeline systems. Although the previous single-stage model has made great progress, there is room for improvement in terms of its intermittent unnaturalness, computational efficiency, and strong dependence on phoneme conversion. In this work, we introduce VITS2, a single-stage text-to-speech model that efficiently synthesizes a more natural speech by improving several aspects of the previous work. We propose improved structures and training mechanisms and present that the proposed methods are effective in improving naturalness, similarity of speech characteristics in a multi-speaker model, and efficiency of training and inference. Furthermore, we demonstrate that the strong dependence on phoneme conversion in previous works can be significantly reduced with our method, which allows a fully end-to-end single-stage approach.\n\nDemo: https:\u002F\u002Fvits-2.github.io\u002Fdemo\u002F\n\nPaper: https:\u002F\u002Farxiv.org\u002Fabs\u002F2307.16430\n\nUnofficial implementation of VITS2. This is a work in progress. Please refer to [TODO](#todo) for more details.\n\n\u003Ctable style=\"width:100%\">\n  \u003Ctr>\n    \u003Cth>Duration Predictor\u003C\u002Fth>\n    \u003Cth>Normalizing Flows\u003C\u002Fth>\n    \u003Cth>Text Encoder\u003C\u002Fth>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd>\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fdaniilrobnikov_vits2_readme_d19fb2fcae2a.png\" alt=\"Duration Predictor\" width=\"100%\" style=\"width:100%\">\u003C\u002Ftd>\n    \u003Ctd>\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fdaniilrobnikov_vits2_readme_2f8585f34e34.png\" alt=\"Normalizing Flows\" width=\"100%\" style=\"width:100%\">\u003C\u002Ftd>\n    \u003Ctd>\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fdaniilrobnikov_vits2_readme_368678260150.png\" alt=\"Text Encoder\" width=\"100%\" style=\"width:100%\">\u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n## Audio Samples\n\n[In progress]\n\nAudio sample after 52,000 steps of training on 1 GPU for LJSpeech dataset:\nhttps:\u002F\u002Fgithub.com\u002Fdaniilrobnikov\u002Fvits2\u002Fassets\u002F91742765\u002Fd769c77a-bd92-4732-96e7-ab53bf50d783\n\n## Installation:\n\n\u003Ca name=\"installation\">\u003C\u002Fa>\n\n**Clone the repo**\n\n```shell\ngit clone git@github.com:daniilrobnikov\u002Fvits2.git\ncd vits2\n```\n\n## Setting up the conda env\n\nThis is assuming you have navigated to the `vits2` root after cloning it.\n\n**NOTE:** This is tested under `python3.11` with conda env. For other python versions, you might encounter version conflicts.\n\n**PyTorch 2.0**\nPlease refer [requirements.txt](requirements.txt)\n\n```shell\n# install required packages (for pytorch 2.0)\nconda create -n vits2 python=3.11\nconda activate vits2\npip install -r requirements.txt\n\nconda env config vars set PYTHONPATH=\"\u002Fpath\u002Fto\u002Fvits2\"\n```\n\n## Download datasets\n\nThere are three options you can choose from: LJ Speech, VCTK, or custom dataset.\n\n1. LJ Speech: [LJ Speech dataset](#lj-speech-dataset). Used for single speaker TTS.\n2. VCTK: [VCTK dataset](#vctk-dataset). Used for multi-speaker TTS.\n3. Custom dataset: You can use your own dataset. Please refer [here](#custom-dataset).\n\n### LJ Speech dataset\n\n1. download and extract the [LJ Speech dataset](https:\u002F\u002Fkeithito.com\u002FLJ-Speech-Dataset\u002F)\n\n```shell\nwget https:\u002F\u002Fdata.keithito.com\u002Fdata\u002Fspeech\u002FLJSpeech-1.1.tar.bz2\ntar -xvf LJSpeech-1.1.tar.bz2\ncd LJSpeech-1.1\u002Fwavs\nrm -rf wavs\n```\n\n3. preprocess mel-spectrograms. See [mel_transform.py](preprocess\u002Fmel_transform.py)\n\n```shell\npython preprocess\u002Fmel_transform.py --data_dir \u002Fpath\u002Fto\u002FLJSpeech-1.1 -c datasets\u002Fljs_base\u002Fconfig.yaml\n```\n\n3. preprocess text. See [prepare\u002Ffilelists.ipynb](datasets\u002Fljs_base\u002Fprepare\u002Ffilelists.ipynb)\n\n4. rename or create a link to the dataset folder.\n\n```shell\nln -s \u002Fpath\u002Fto\u002FLJSpeech-1.1 DUMMY1\n```\n\n### VCTK dataset\n\n1. download and extract the [VCTK dataset](https:\u002F\u002Fwww.kaggle.com\u002Fdatasets\u002Fshowmik50\u002Fvctk-dataset)\n\n```shell\nwget https:\u002F\u002Fdatashare.is.ed.ac.uk\u002Fbitstream\u002Fhandle\u002F10283\u002F3443\u002FVCTK-Corpus-0.92.zip\nunzip VCTK-Corpus-0.92.zip\n```\n\n2. (optional): downsample the audio files to 22050 Hz. See [audio_resample.ipynb](preprocess\u002Faudio_resample.ipynb)\n\n3. preprocess mel-spectrograms. See [mel_transform.py](preprocess\u002Fmel_transform.py)\n\n```shell\npython preprocess\u002Fmel_transform.py --data_dir \u002Fpath\u002Fto\u002FVCTK-Corpus-0.92 -c datasets\u002Fvctk_base\u002Fconfig.yaml\n```\n\n4. preprocess text. See [prepare\u002Ffilelists.ipynb](datasets\u002Fljs_base\u002Fprepare\u002Ffilelists.ipynb)\n\n5. rename or create a link to the dataset folder.\n\n```shell\nln -s \u002Fpath\u002Fto\u002FVCTK-Corpus-0.92 DUMMY2\n```\n\n### Custom dataset\n\n1. create a folder with wav files\n2. duplicate the `ljs_base` in `datasets` directory and rename it to `custom_base`\n3. open [custom_base](datasets\u002Fcustom_base) and change the following fields in `config.yaml`:\n\n```yaml\ndata:\n  training_files: datasets\u002Fcustom_base\u002Ffilelists\u002Ftrain.txt\n  validation_files: datasets\u002Fcustom_base\u002Ffilelists\u002Fval.txt\n  text_cleaners: # See text\u002Fcleaners.py\n    - phonemize_text\n    - tokenize_text\n    - add_bos_eos\n  cleaned_text: true # True if you ran step 6.\n  language: en-us # language of your dataset. See espeak-ng\n  sample_rate: 22050 # sample rate, based on your dataset\n  ...\n  n_speakers: 0 # 0 for single speaker, > 0 for multi-speaker\n```\n\n4. preprocess mel-spectrograms. See [mel_transform.py](preprocess\u002Fmel_transform.py)\n\n```shell\npython preprocess\u002Fmel_transform.py --data_dir \u002Fpath\u002Fto\u002Fcustom_dataset -c datasets\u002Fcustom_base\u002Fconfig.yaml\n```\n\n6. preprocess text. See [prepare\u002Ffilelists.ipynb](datasets\u002Fljs_base\u002Fprepare\u002Ffilelists.ipynb)\n\n**NOTE:** You may need to install `espeak-ng` if you want to use `phonemize_text` cleaner. Please refer [espeak-ng](https:\u002F\u002Fgithub.com\u002Fespeak-ng\u002Fespeak-ng)\n\n7. rename or create a link to the dataset folder.\n\n```shell\nln -s \u002Fpath\u002Fto\u002Fcustom_dataset DUMMY3\n```\n\n## Training Examples\n\n```shell\n# LJ Speech\npython train.py -c datasets\u002Fljs_base\u002Fconfig.yaml -m ljs_base\n\n# VCTK\npython train_ms.py -c datasets\u002Fvctk_base\u002Fconfig.yaml -m vctk_base\n\n# Custom dataset (multi-speaker)\npython train_ms.py -c datasets\u002Fcustom_base\u002Fconfig.yaml  -m custom_base\n```\n\n## Inference Examples\n\nSee [inference.ipynb](inference.ipynb) and [inference_batch.ipynb](inference_batch.ipynb)\n\n## Pretrained Models\n\n[In progress]\n\n## Todo\n\n- [ ] model (vits2)\n  - [x] update TextEncoder to support speaker conditioning\n  - [x] support for high-resolution mel-spectrograms in training. See [mel_transform.py](preprocess\u002Fmel_transform.py)\n  - [x] Monotonic Alignment Search with Gaussian noise\n  - [x] Normalizing Flows using Transformer Block\n  - [ ] Stochastic Duration Predictor with Time Step-wise Conditional Discriminator\n- [ ] model (YourTTS)\n  - [ ] Language Conditioning\n  - [ ] Speaker Encoder\n- [ ] model (NaturalSpeech)\n  - [x] KL Divergence Loss after Prior Enhancing\n  - [ ] GAN loss for e2e training\n- [ ] other\n  - [x] support for batch inference\n  - [x] special tokens in tokenizer\n  - [x] test numba.jit and numba.cuda.jit implementations of MAS. See [monotonic_align.py](monotonic_align.py)\n  - [ ] KL Divergence Loss between TextEncoder and Projection\n  - [ ] support for streaming inference. Please refer [vits_chinese](https:\u002F\u002Fgithub.com\u002FPlayVoice\u002Fvits_chinese\u002Fblob\u002Fmaster\u002Ftext\u002Fsymbols.py)\n  - [ ] use optuna for hyperparameter tuning\n- [ ] future work\n  - [ ] update model to vits2. Please refer [VITS2](https:\u002F\u002Farxiv.org\u002Fabs\u002F2307.16430)\n  - [ ] update model to YourTTS with zero-shot learning. See [YourTTS](https:\u002F\u002Farxiv.org\u002Fabs\u002F2112.02418)\n  - [ ] update model to NaturalSpeech. Please refer [NaturalSpeech](https:\u002F\u002Farxiv.org\u002Fabs\u002F2205.04421)\n\n## Acknowledgements\n\n- This is unofficial repo based on [VITS2](https:\u002F\u002Farxiv.org\u002Fabs\u002F2307.16430)\n- g2p for multiple languages is based on [phonemizer](https:\u002F\u002Fgithub.com\u002Fbootphon\u002Fphonemizer)\n- We also thank GhatGPT for providing writing assistance.\n\n## References\n\n- [VITS2: Improving Quality and Efficiency of Single-Stage Text-to-Speech with Adversarial Learning and Architecture Design](https:\u002F\u002Farxiv.org\u002Fabs\u002F2307.16430)\n- [Conditional Variational Autoencoder with Adversarial Learning for End-to-End Text-to-Speech](https:\u002F\u002Farxiv.org\u002Fabs\u002F2106.06103)\n- [YourTTS: Towards Zero-Shot Multi-Speaker TTS and Zero-Shot Voice Conversion for everyone](https:\u002F\u002Farxiv.org\u002Fabs\u002F2112.02418)\n- [NaturalSpeech: End-to-End Text to Speech Synthesis with Human-Level Quality](https:\u002F\u002Farxiv.org\u002Fabs\u002F2205.04421)\n- [A TensorFlow implementation of Google's Tacotron speech synthesis with pre-trained model (unofficial)](https:\u002F\u002Fgithub.com\u002Fkeithito\u002Ftacotron)\n\n# VITS2\n","# VITS2：通过对抗学习和架构设计提升单阶段文本转语音的质量与效率\n\n### 孔正日、朴志勋、金凡正、金正民、孔度熙、金相镇\n\n### SK电讯，韩国\n\n近年来，单阶段文本转语音模型得到了广泛研究，其性能已超越传统的两阶段流水线系统。尽管先前的单阶段模型取得了显著进展，但在间歇性不自然、计算效率以及对音素转换的高度依赖等方面仍有改进空间。在本工作中，我们提出了VITS2，这是一种通过改进前人工作的多个方面，高效合成更自然语音的单阶段文本转语音模型。我们提出了改进的结构和训练机制，并证明所提出的方法能够有效提升语音的自然度、多说话人模型中语音特征的相似性以及训练和推理的效率。此外，我们还展示了利用我们的方法可以显著降低先前工作对音素转换的强烈依赖，从而实现完全端到端的单阶段方案。\n\n演示：https:\u002F\u002Fvits-2.github.io\u002Fdemo\u002F\n\n论文：https:\u002F\u002Farxiv.org\u002Fabs\u002F2307.16430\n\nVITS2的非官方实现。目前仍在开发中。更多详情请参阅[待办事项](#todo)。\n\n\u003Ctable style=\"width:100%\">\n  \u003Ctr>\n    \u003Cth>时长预测器\u003C\u002Fth>\n    \u003Cth>归一化流\u003C\u002Fth>\n    \u003Cth>文本编码器\u003C\u002Fth>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd>\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fdaniilrobnikov_vits2_readme_d19fb2fcae2a.png\" alt=\"Duration Predictor\" width=\"100%\" style=\"width:100%\">\u003C\u002Ftd>\n    \u003Ctd>\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fdaniilrobnikov_vits2_readme_2f8585f34e34.png\" alt=\"Normalizing Flows\" width=\"100%\" style=\"width:100%\">\u003C\u002Ftd>\n    \u003Ctd>\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fdaniilrobnikov_vits2_readme_368678260150.png\" alt=\"Text Encoder\" width=\"100%\" style=\"width:100%\">\u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n## 音频样本\n\n[正在进行中]\n\n在LJSpeech数据集上使用1张GPU训练52,000步后的音频样本：\nhttps:\u002F\u002Fgithub.com\u002Fdaniilrobnikov\u002Fvits2\u002Fassets\u002F91742765\u002Fd769c77a-bd92-4732-96e7-ab53bf50d783\n\n## 安装：\n\n\u003Ca name=\"installation\">\u003C\u002Fa>\n\n**克隆仓库**\n\n```shell\ngit clone git@github.com:daniilrobnikov\u002Fvits2.git\ncd vits2\n```\n\n## 设置conda环境\n\n假设您在克隆后已导航至`vits2`根目录。\n\n**注意：** 本环境已在`python3.11`和conda环境下测试通过。对于其他Python版本，可能会遇到版本冲突问题。\n\n**PyTorch 2.0**\n请参考[requirements.txt](requirements.txt)\n\n```shell\n# 安装所需包（适用于PyTorch 2.0）\nconda create -n vits2 python=3.11\nconda activate vits2\npip install -r requirements.txt\n\nconda env config vars set PYTHONPATH=\"\u002Fpath\u002Fto\u002Fvits2\"\n```\n\n## 下载数据集\n\n您有三种选择：LJ Speech、VCTK或自定义数据集。\n\n1. LJ Speech：[LJ Speech数据集](#lj-speech-dataset)。用于单说话人TTS。\n2. VCTK：[VCTK数据集](#vctk-dataset)。用于多说话人TTS。\n3. 自定义数据集：您可以使用自己的数据集。请参阅[此处](#custom-dataset)。\n\n### LJ Speech数据集\n\n1. 下载并解压[LJ Speech数据集](https:\u002F\u002Fkeithito.com\u002FLJ-Speech-Dataset\u002F)\n\n```shell\nwget https:\u002F\u002Fdata.keithito.com\u002Fdata\u002Fspeech\u002FLJSpeech-1.1.tar.bz2\ntar -xvf LJSpeech-1.1.tar.bz2\ncd LJSpeech-1.1\u002Fwavs\nrm -rf wavs\n```\n\n3. 预处理梅尔谱图。请参阅[mel_transform.py](preprocess\u002Fmel_transform.py)\n\n```shell\npython preprocess\u002Fmel_transform.py --data_dir \u002Fpath\u002Fto\u002FLJSpeech-1.1 -c datasets\u002Fljs_base\u002Fconfig.yaml\n```\n\n3. 预处理文本。请参阅[prepare\u002Ffilelists.ipynb](datasets\u002Fljs_base\u002Fprepare\u002Ffilelists.ipynb)\n\n4. 重命名或将数据集文件夹创建为链接。\n\n```shell\nln -s \u002Fpath\u002Fto\u002FLJSpeech-1.1 DUMMY1\n```\n\n### VCTK数据集\n\n1. 下载并解压[VCTK数据集](https:\u002F\u002Fwww.kaggle.com\u002Fdatasets\u002Fshowmik50\u002Fvctk-dataset)\n\n```shell\nwget https:\u002F\u002Fdatashare.is.ed.ac.uk\u002Fbitstream\u002Fhandle\u002F10283\u002F3443\u002FVCTK-Corpus-0.92.zip\nunzip VCTK-Corpus-0.92.zip\n```\n\n2. （可选）将音频文件下采样至22050 Hz。请参阅[audio_resample.ipynb](preprocess\u002Faudio_resample.ipynb)\n\n3. 预处理梅尔谱图。请参阅[mel_transform.py](preprocess\u002Fmel_transform.py)\n\n```shell\npython preprocess\u002Fmel_transform.py --data_dir \u002Fpath\u002Fto\u002FVCTK-Corpus-0.92 -c datasets\u002Fvctk_base\u002Fconfig.yaml\n```\n\n4. 预处理文本。请参阅[prepare\u002Ffilelists.ipynb](datasets\u002Fljs_base\u002Fprepare\u002Ffilelists.ipynb)\n\n5. 重命名或将数据集文件夹创建为链接。\n\n```shell\nln -s \u002Fpath\u002Fto\u002FVCTK-Corpus-0.92 DUMMY2\n```\n\n### 自定义数据集\n\n1. 创建包含wav文件的文件夹\n2. 复制`datasets`目录中的`ljs_base`并重命名为`custom_base`\n3. 打开`custom_base`（datasets\u002Fcustom_base），修改`config.yaml`中的以下字段：\n\n```yaml\ndata:\n  training_files: datasets\u002Fcustom_base\u002Ffilelists\u002Ftrain.txt\n  validation_files: datasets\u002Fcustom_base\u002Ffilelists\u002Fval.txt\n  text_cleaners: # 参见text\u002Fcleaners.py\n    - phonemize_text\n    - tokenize_text\n    - add_bos_eos\n  cleaned_text: true # 如果您完成了第6步，则为真。\n  language: en-us # 您的数据集语言。请参阅espeak-ng\n  sample_rate: 22050 # 根据您的数据集设置采样率\n  ...\n  n_speakers: 0 # 单说话人为0，多说话人为大于0\n```\n\n4. 预处理梅尔谱图。请参阅[mel_transform.py](preprocess\u002Fmel_transform.py)\n\n```shell\npython preprocess\u002Fmel_transform.py --data_dir \u002Fpath\u002Fto\u002Fcustom_dataset -c datasets\u002Fcustom_base\u002Fconfig.yaml\n```\n\n6. 预处理文本。请参阅[prepare\u002Ffilelists.ipynb](datasets\u002Fljs_base\u002Fprepare\u002Ffilelists.ipynb)\n\n**注意：** 如果您想使用`phonemize_text`清理器，可能需要安装`espeak-ng`。请参阅[espeak-ng](https:\u002F\u002Fgithub.com\u002Fespeak-ng\u002Fespeak-ng)\n\n7. 重命名或将数据集文件夹创建为链接。\n\n```shell\nln -s \u002Fpath\u002Fto\u002Fcustom_dataset DUMMY3\n```\n\n## 训练示例\n\n```shell\n# LJ Speech\npython train.py -c datasets\u002Fljs_base\u002Fconfig.yaml -m ljs_base\n\n# VCTK\npython train_ms.py -c datasets\u002Fvctk_base\u002Fconfig.yaml -m vctk_base\n\n# 自定义数据集（多说话人）\npython train_ms.py -c datasets\u002Fcustom_base\u002Fconfig.yaml  -m custom_base\n```\n\n## 推理示例\n\n请参阅[inference.ipynb](inference.ipynb)和[inference_batch.ipynb](inference_batch.ipynb)\n\n## 预训练模型\n\n[正在进行中]\n\n## 待办事项\n\n- [ ] 模型（VITS2）\n  - [x] 更新TextEncoder以支持说话人条件化\n  - [x] 在训练中支持高分辨率梅尔谱图。参见[mel_transform.py](preprocess\u002Fmel_transform.py)\n  - [x] 带有高斯噪声的单调对齐搜索\n  - [x] 使用Transformer块的归一化流\n  - [ ] 具有时步条件判别器的随机持续时间预测器\n- [ ] 模型（YourTTS）\n  - [ ] 语言条件化\n  - [ ] 说话人编码器\n- [ ] 模型（NaturalSpeech）\n  - [x] 先验增强后的KL散度损失\n  - [ ] 用于端到端训练的GAN损失\n- [ ] 其他\n  - [x] 支持批量推理\n  - [x] 分词器中的特殊标记\n  - [x] 测试MAS的numba.jit和numba.cuda.jit实现。参见[monotonic_align.py](monotonic_align.py)\n  - [ ] TextEncoder与投影之间的KL散度损失\n  - [ ] 支持流式推理。请参考[vits_chinese](https:\u002F\u002Fgithub.com\u002FPlayVoice\u002Fvits_chinese\u002Fblob\u002Fmaster\u002Ftext\u002Fsymbols.py)\n  - [ ] 使用optuna进行超参数调优\n- [ ] 未来工作\n  - [ ] 将模型更新至VITS2。请参考[VITS2](https:\u002F\u002Farxiv.org\u002Fabs\u002F2307.16430)\n  - [ ] 将模型更新至具有零样本学习能力的YourTTS。参见[YourTTS](https:\u002F\u002Farxiv.org\u002Fabs\u002F2112.02418)\n  - [ ] 将模型更新至NaturalSpeech。请参考[NaturalSpeech](https:\u002F\u002Farxiv.org\u002Fabs\u002F2205.04421)\n\n## 致谢\n\n- 本仓库为基于[VITS2](https:\u002F\u002Farxiv.org\u002Fabs\u002F2307.16430)的非官方实现。\n- 多语言的g2p工具基于[phonemizer](https:\u002F\u002Fgithub.com\u002Fbootphon\u002Fphonemizer)。\n- 同时感谢GhatGPT提供的写作协助。\n\n## 参考文献\n\n- [VITS2：通过对抗学习和架构设计提升单阶段文本转语音的质量与效率](https:\u002F\u002Farxiv.org\u002Fabs\u002F2307.16430)\n- [基于对抗学习的条件变分自编码器用于端到端文本转语音](https:\u002F\u002Farxiv.org\u002Fabs\u002F2106.06103)\n- [YourTTS：迈向面向所有人的零样本多说话人TTS与零样本语音转换](https:\u002F\u002Farxiv.org\u002Fabs\u002F2112.02418)\n- [NaturalSpeech：具有人类水平质量的端到端文本转语音合成](https:\u002F\u002Farxiv.org\u002Fabs\u002F2205.04421)\n- [Google Tacotron语音合成的TensorFlow实现（非官方，含预训练模型）](https:\u002F\u002Fgithub.com\u002Fkeithito\u002Ftacotron)\n\n# VITS2","# VITS2 快速上手指南\n\nVITS2 是一个单阶段端到端文本转语音（TTS）模型，通过改进架构设计和对抗学习机制，显著提升了语音合成的自然度、多说话人特征相似度以及训练推理效率。本指南基于非官方实现版本，帮助开发者快速搭建环境并运行模型。\n\n## 环境准备\n\n在开始之前，请确保您的系统满足以下要求：\n\n*   **操作系统**: Linux (推荐) 或 macOS\n*   **Python 版本**: 3.11 (严格推荐，其他版本可能存在依赖冲突)\n*   **深度学习框架**: PyTorch 2.0+\n*   **其他依赖**:\n    *   `conda` (用于管理虚拟环境)\n    *   `espeak-ng` (用于文本音素化处理，若使用自定义数据集或多语言支持必装)\n    *   `git`\n\n**安装 espeak-ng (Ubuntu\u002FDebian):**\n```bash\nsudo apt-get update\nsudo apt-get install espeak-ng\n```\n\n## 安装步骤\n\n### 1. 克隆代码仓库\n首先将项目代码克隆到本地：\n```shell\ngit clone git@github.com:daniilrobnikov\u002Fvits2.git\ncd vits2\n```\n\n### 2. 创建并激活 Conda 环境\n建议使用 Python 3.11 创建独立的虚拟环境以避免版本冲突：\n```shell\nconda create -n vits2 python=3.11\nconda activate vits2\n```\n\n### 3. 安装依赖包\n安装项目所需的 Python 依赖（包含 PyTorch 2.0 兼容版本）：\n```shell\npip install -r requirements.txt\n```\n*(注：如果下载速度慢，可添加国内镜像源，例如：`pip install -r requirements.txt -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple`)*\n\n### 4. 配置环境变量\n设置 `PYTHONPATH` 指向项目根目录，确保模块导入正常：\n```shell\nconda env config vars set PYTHONPATH=\"$(pwd)\"\n```\n*注意：请将 `$(pwd)` 替换为您当前 `vits2` 文件夹的绝对路径，或者直接在 shell 中执行上述命令（conda 会自动解析）。*\n\n## 基本使用\n\n以下以单说话人数据集 **LJSpeech** 为例，展示从数据预处理到训练的最简流程。\n\n### 1. 准备数据集\n下载并解压 LJSpeech 数据集，然后进行音频和文本的预处理。\n\n**下载与解压：**\n```shell\nwget https:\u002F\u002Fdata.keithito.com\u002Fdata\u002Fspeech\u002FLJSpeech-1.1.tar.bz2\ntar -xvf LJSpeech-1.1.tar.bz2\n# 进入 wav 目录并清理多余文件夹（根据原脚本逻辑）\ncd LJSpeech-1.1\u002Fwavs\nrm -rf wavs\ncd ..\u002F..\n```\n\n**预处理梅尔频谱图：**\n```shell\npython preprocess\u002Fmel_transform.py --data_dir \u002Fpath\u002Fto\u002FLJSpeech-1.1 -c datasets\u002Fljs_base\u002Fconfig.yaml\n```\n*请将 `\u002Fpath\u002Fto\u002FLJSpeech-1.1` 替换为实际的数据集路径。*\n\n**生成文件列表：**\n参考 `datasets\u002Fljs_base\u002Fprepare\u002Ffilelists.ipynb` 运行 Notebook 以生成训练和验证用的文本列表文件。\n\n**创建数据链接：**\n为了方便程序读取，将数据集目录链接为 `DUMMY1`：\n```shell\nln -s \u002Fpath\u002Fto\u002FLJSpeech-1.1 DUMMY1\n```\n\n### 2. 开始训练\n使用默认配置文件启动单说话人模型训练：\n```shell\npython train.py -c datasets\u002Fljs_base\u002Fconfig.yaml -m ljs_base\n```\n*   `-c`: 指定配置文件路径。\n*   `-m`: 指定模型保存目录名称。\n\n### 3. 推理测试\n训练完成后，可使用 Jupyter Notebook 进行语音合成测试：\n```shell\njupyter notebook inference.ipynb\n```\n在 Notebook 中加载训练好的检查点（checkpoint），输入文本即可生成音频。\n\n---\n*提示：如需使用多说话人数据集（如 VCTK）或自定义数据集，请参考项目文档中的对应章节调整配置文件和数据预处理流程。*","一家专注于有声书制作的初创团队，正试图将大量经典文学作品快速转化为高质量的多角色语音版本，以降低成本并缩短上线周期。\n\n### 没有 vits2 时\n- **流程繁琐且延迟高**：必须采用“文本转音素”再“音素转语音”的两阶段流水线，导致推理速度慢，难以满足实时生成需求。\n- **声音表现不自然**：生成的语音在长句或复杂语境下常出现机械感的停顿和语调断裂，缺乏人类讲述者的情感连贯性。\n- **多角色适配困难**：切换不同角色音色时，声音特征相似度低，听起来像完全不同的陌生人，破坏了故事的整体沉浸感。\n- **过度依赖人工标注**：模型严重依赖精确的音素转换规则，一旦遇到生僻字或方言词汇，需要大量人工干预修正，极大拖慢生产进度。\n\n### 使用 vits2 后\n- **端到端高效合成**：利用 vits2 的单阶段架构直接由文本生成语音，去除了中间环节，训练与推理效率显著提升，实现了准实时输出。\n- **拟真度大幅跃升**：通过对抗学习机制优化，vits2 生成的语音语调流畅自然，有效消除了以往的机械断续感，听感接近真人演播。\n- **多音色高度统一**：在多说话人模式下，vits2 能更好地保持角色声音特征的一致性，让不同章节的同一角色听起来浑然一体。\n- **摆脱音素强依赖**：vits2 显著降低了对预定义音素转换的依赖，能够端到端地自动处理生僻词和复杂句式，减少了 90% 以上的人工校对工作。\n\nvits2 通过架构创新实现了从“机械朗读”到“自然演播”的跨越，让低成本、大规模生产高品质有声内容成为现实。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fdaniilrobnikov_vits2_098b2751.png","daniilrobnikov","Daniil Robnikov","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fdaniilrobnikov_9ec82da6.jpg","AI Research Scientist | Software Developer | 3D Artist","TalTech","Tallinn, Estonia",null,"https:\u002F\u002Fgithub.com\u002Fdaniilrobnikov",[23,27],{"name":24,"color":25,"percentage":26},"Jupyter Notebook","#DA5B0B",75.8,{"name":28,"color":29,"percentage":30},"Python","#3572A5",24.2,637,73,"2026-04-10T01:45:38","MIT",4,"未说明","需要 GPU（文中提到在 1 块 GPU 上训练），具体型号、显存大小及 CUDA 版本未明确说明，但需支持 PyTorch 2.0",{"notes":39,"python":40,"dependencies":41},"该项目是 VITS2 的非官方实现，目前仍在开发中。必须使用 Conda 创建 Python 3.11 环境以避免版本冲突。若使用文本清洗功能中的音素化（phonemize_text），需单独安装 espeak-ng。数据处理阶段需要手动下载数据集（如 LJSpeech 或 VCTK）并运行预处理脚本生成梅尔频谱图。","3.11",[42,43,44,45,46,47,48,49,50,51],"torch>=2.0","numba","phonemizer","espeak-ng","PyYAML","librosa","scipy","numpy","matplotlib","tensorboard",[53,54],"音频","开发框架",[56,57,58,59,60,61,6,62],"deep-learning","pytorch","speech","speech-synthesis","text-to-speech","tts","voice-conversion",2,"ready","2026-03-27T02:49:30.150509","2026-04-20T04:05:07.232197",[],[],[70,82,90,99,107,116],{"id":71,"name":72,"github_repo":73,"description_zh":74,"stars":75,"difficulty_score":76,"last_commit_at":77,"category_tags":78,"status":64},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[79,54,80,81],"Agent","图像","数据工具",{"id":83,"name":84,"github_repo":85,"description_zh":86,"stars":87,"difficulty_score":76,"last_commit_at":88,"category_tags":89,"status":64},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[54,80,79],{"id":91,"name":92,"github_repo":93,"description_zh":94,"stars":95,"difficulty_score":63,"last_commit_at":96,"category_tags":97,"status":64},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",160784,"2026-04-19T11:32:54",[54,79,98],"语言模型",{"id":100,"name":101,"github_repo":102,"description_zh":103,"stars":104,"difficulty_score":63,"last_commit_at":105,"category_tags":106,"status":64},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",109154,"2026-04-18T11:18:24",[54,80,79],{"id":108,"name":109,"github_repo":110,"description_zh":111,"stars":112,"difficulty_score":63,"last_commit_at":113,"category_tags":114,"status":64},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[115,79,80,54],"插件",{"id":117,"name":118,"github_repo":119,"description_zh":120,"stars":121,"difficulty_score":63,"last_commit_at":122,"category_tags":123,"status":64},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[115,54]]