[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-PlayVoice--vits_chinese":3,"tool-PlayVoice--vits_chinese":64},[4,17,25,39,48,56],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":16},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 真正成长为懂上",138956,2,"2026-04-05T11:33:21",[13,14,15],"开发框架","Agent","语言模型","ready",{"id":18,"name":19,"github_repo":20,"description_zh":21,"stars":22,"difficulty_score":10,"last_commit_at":23,"category_tags":24,"status":16},3704,"NextChat","ChatGPTNextWeb\u002FNextChat","NextChat 是一款轻量且极速的 AI 助手，旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性，以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发，NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。\n\n这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言，它也提供了便捷的自托管方案，支持一键部署到 Vercel 或 Zeabur 等平台。\n\nNextChat 的核心亮点在于其广泛的模型兼容性，原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型，让用户在一个界面即可自由切换不同 AI 能力。此外，它还率先支持 MCP（Model Context Protocol）协议，增强了上下文处理能力。针对企业用户，NextChat 提供专业版解决方案，具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能，满足公司对数据隐私和个性化管理的高标准要求。",87618,"2026-04-05T07:20:52",[13,15],{"id":26,"name":27,"github_repo":28,"description_zh":29,"stars":30,"difficulty_score":10,"last_commit_at":31,"category_tags":32,"status":16},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,"2026-04-05T10:45:23",[33,34,35,36,14,37,15,13,38],"图像","数据工具","视频","插件","其他","音频",{"id":40,"name":41,"github_repo":42,"description_zh":43,"stars":44,"difficulty_score":45,"last_commit_at":46,"category_tags":47,"status":16},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,3,"2026-04-04T04:44:48",[14,33,13,15,37],{"id":49,"name":50,"github_repo":51,"description_zh":52,"stars":53,"difficulty_score":45,"last_commit_at":54,"category_tags":55,"status":16},519,"PaddleOCR","PaddlePaddle\u002FPaddleOCR","PaddleOCR 是一款基于百度飞桨框架开发的高性能开源光学字符识别工具包。它的核心能力是将图片、PDF 等文档中的文字提取出来，转换成计算机可读取的结构化数据，让机器真正“看懂”图文内容。\n\n面对海量纸质或电子文档，PaddleOCR 解决了人工录入效率低、数字化成本高的问题。尤其在人工智能领域，它扮演着连接图像与大型语言模型（LLM）的桥梁角色，能将视觉信息直接转化为文本输入，助力智能问答、文档分析等应用场景落地。\n\nPaddleOCR 适合开发者、算法研究人员以及有文档自动化需求的普通用户。其技术优势十分明显：不仅支持全球 100 多种语言的识别，还能在 Windows、Linux、macOS 等多个系统上运行，并灵活适配 CPU、GPU、NPU 等各类硬件。作为一个轻量级且社区活跃的开源项目，PaddleOCR 既能满足快速集成的需求，也能支撑前沿的视觉语言研究，是处理文字识别任务的理想选择。",74913,"2026-04-05T10:44:17",[15,33,13,37],{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":45,"last_commit_at":62,"category_tags":63,"status":16},2181,"OpenHands","OpenHands\u002FOpenHands","OpenHands 是一个专注于 AI 驱动开发的开源平台，旨在让智能体（Agent）像人类开发者一样理解、编写和调试代码。它解决了传统编程中重复性劳动多、环境配置复杂以及人机协作效率低等痛点，通过自动化流程显著提升开发速度。\n\n无论是希望提升编码效率的软件工程师、探索智能体技术的研究人员，还是需要快速原型验证的技术团队，都能从中受益。OpenHands 提供了灵活多样的使用方式：既可以通过命令行（CLI）或本地图形界面在个人电脑上轻松上手，体验类似 Devin 的流畅交互；也能利用其强大的 Python SDK 自定义智能体逻辑，甚至在云端大规模部署上千个智能体并行工作。\n\n其核心技术亮点在于模块化的软件智能体 SDK，这不仅构成了平台的引擎，还支持高度可组合的开发模式。此外，OpenHands 在 SWE-bench 基准测试中取得了 77.6% 的优异成绩，证明了其解决真实世界软件工程问题的能力。平台还具备完善的企业级功能，支持与 Slack、Jira 等工具集成，并提供细粒度的权限管理，适合从个人开发者到大型企业的各类用户场景。",70612,"2026-04-05T11:12:22",[15,14,13,36],{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":69,"readme_en":70,"readme_zh":71,"quickstart_zh":72,"use_case_zh":73,"hero_image_url":74,"owner_login":75,"owner_name":75,"owner_avatar_url":76,"owner_bio":77,"owner_company":77,"owner_location":77,"owner_email":77,"owner_twitter":77,"owner_website":77,"owner_url":78,"languages":79,"stars":88,"forks":89,"last_commit_at":90,"license":91,"difficulty_score":92,"env_os":93,"env_gpu":94,"env_ram":95,"env_deps":96,"category_tags":104,"github_topics":105,"view_count":45,"oss_zip_url":77,"oss_zip_packed_at":77,"status":16,"created_at":113,"updated_at":114,"faqs":115,"releases":141},950,"PlayVoice\u002Fvits_chinese","vits_chinese","Best practice TTS based on BERT and VITS with some Natural Speech Features Of Microsoft; Support ONNX streaming out!","vits_chinese 是一个基于BERT和VITS的中文语音合成（TTS）项目，能够将文字转换为自然流畅的语音。它通过结合BERT的隐式韵律嵌入技术，让生成的语音在语法停顿上更加自然；同时借助NaturalSpeech的推理损失优化，显著减少发音错误，提升音频质量。相比传统的TTS模型，vits_chinese在音质、自然度和流式输出方面表现更优，还支持ONNX流式推理，适合需要实时语音合成的场景。\n\n这个项目主要解决了中文语音合成中常见的韵律不自然、发音错误等问题，尤其在长文本合成时能保持较高的语音质量。不过，它更偏向于算法学习和研究用途，而非直接用于生产环境。因此，vits_chinese特别适合对语音合成技术感兴趣的开发者和研究人员使用，帮助他们探索TTS模型的训练与优化方法。\n\n值得一提的是，vits_chinese采用了模块化蒸馏技术来加速推理，并提供了灵活的微调建议，例如通过调整loss_kl_r参数或冻结部分模块来平衡性能与效果。对于希望深入理解TTS技术的用户来说，这是一个不可多得的学习资源。","# Best practice TTS based on BERT and VITS with some Natural Speech Features Of Microsoft\n\n[![Hugging Face Spaces](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F%F0%9F%A4%97%20Hugging%20Face-Spaces-blue)](https:\u002F\u002Fhuggingface.co\u002Fspaces\u002Fmaxmax20160403\u002Fvits_chinese)\n\u003Cimg alt=\"GitHub Repo stars\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002FPlayVoice\u002Fvits_chinese\">\n\u003Cimg alt=\"GitHub forks\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fforks\u002FPlayVoice\u002Fvits_chinese\">\n\u003Cimg alt=\"GitHub issues\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fissues\u002FPlayVoice\u002Fvits_chinese\">\n\u003Cimg alt=\"GitHub\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002FPlayVoice\u002Fvits_chinese\">\n\n## 这是一个用于TTS算法学习的项目，如果您在寻找直接用于生产的TTS，本项目可能不适合您！\nhttps:\u002F\u002Fuser-images.githubusercontent.com\u002F16432329\u002F220678182-4775dec8-9229-4578-870f-2eebc3a5d660.mp4\n\n> 天空呈现的透心的蓝，像极了当年。总在这样的时候，透过窗棂，心，在天空里无尽的游弋！柔柔的，浓浓的，痴痴的风，牵引起心底灵动的思潮；情愫悠悠，思情绵绵，风里默坐，红尘中的浅醉，诗词中的优柔，任那自在飞花轻似梦的情怀，裁一束霓衣，织就清浅淡薄的安寂。\n> \n> 风的影子翻阅过淡蓝色的信笺，柔和的文字浅浅地漫过我安静的眸，一如几朵悠闲的云儿，忽而氤氲成汽，忽而修饰成花，铅华洗尽后的透彻和靓丽，爽爽朗朗，轻轻盈盈\n> \n> 时光仿佛有穿越到了从前，在你诗情画意的眼波中，在你舒适浪漫的暇思里，我如风中的思绪徜徉广阔天际，仿佛一片沾染了快乐的羽毛，在云环影绕颤动里浸润着风的呼吸，风的诗韵，那清新的耳语，那婉约的甜蜜，那恬淡的温馨，将一腔情澜染得愈发的缠绵。\n\n### Features，特性\n1, Hidden prosody embedding from **BERT**，get natural pauses in grammar\n\n2, Infer loss from **NaturalSpeech**，get less sound error\n\n3, Framework of **VITS**，get high audio quality\n\n4, Module-wise Distillation, get speedup\n\n:heartpulse:**Tip**: It is recommended to use **Infer Loss** fine-tune model after base model trained, and freeze **PosteriorEncoder** during fine-tuning.\n\n:heartpulse:**意思就是：初步训练时，不用loss_kl_r；训练好后，添加loss_kl_r继续训练，稍微训练一下就行了，如果音频质量差，可以给loss_kl_r乘以一个小于1的系数、降低loss_kl_r对模型的贡献；继续训练时，可以尝试冻结音频编码器Posterior Encoder；总之，玩法很多，需要多尝试！**\n\n\u003Cdiv align=\"center\">\n\t\n![naturalspeech](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPlayVoice_vits_chinese_readme_349673547a8b.png)\n\n\u003C\u002Fdiv>\n\n### 为什么不升级为VITS2\nVITS2最重要的改进是将Flow的WaveNet模块使用Transformer替换，而在TTS流式实现中，通常需要用纯CNN替换Transformer。\n\n### Online demo，在线体验\nhttps:\u002F\u002Fhuggingface.co\u002Fspaces\u002Fmaxmax20160403\u002Fvits_chinese\n\n### Install，安装依赖和MAS对齐\n\n> pip install -r requirements.txt\n\n> cd monotonic_align\n\n> python setup.py build_ext --inplace\n\n### Infer with Pretrained model，用示例模型推理\n\nGet from release page [vits_chinese\u002Freleases\u002F](https:\u002F\u002Fgithub.com\u002FPlayVoice\u002Fvits_chinese\u002Freleases\u002Ftag\u002Fv1.0)\n\nput [prosody_model.pt](https:\u002F\u002Fgithub.com\u002FPlayVoice\u002Fvits_chinese\u002Freleases\u002Ftag\u002Fv1.0) To .\u002Fbert\u002Fprosody_model.pt\n\nput [vits_bert_model.pth](https:\u002F\u002Fgithub.com\u002FPlayVoice\u002Fvits_chinese\u002Freleases\u002Ftag\u002Fv1.0) To .\u002Fvits_bert_model.pth\n\n```\npython vits_infer.py --config .\u002Fconfigs\u002Fbert_vits.json --model vits_bert_model.pth\n```\n\n.\u002Fvits_infer_out have the waves inferred, listen !!!\n\n### Infer with chunk wave streaming out，分块流式推理\n\nas key parameter, ***hop_frame = ∑decoder.ups.padding*** :heartpulse:\n\n```\npython vits_infer_stream.py --config .\u002Fconfigs\u002Fbert_vits.json --model vits_bert_model.pth\n```\n\n### Ceil duration affect naturalness\nSo change **w_ceil = torch.ceil(w)** to **w_ceil = torch.ceil(w + 0.35)**\n\n### All Thanks To Our Contributors:\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FMaxMax2016\u002Fvits_chinese\u002Fgraphs\u002Fcontributors\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPlayVoice_vits_chinese_readme_fdcb3f7fbfa7.png\" \u002F>\n\u003C\u002Fa>\n\n### Train，训练\ndownload baker data [https:\u002F\u002Faistudio.baidu.com\u002Fdatasetdetail\u002F36741](https:\u002F\u002Faistudio.baidu.com\u002Fdatasetdetail\u002F36741), more info: https:\u002F\u002Fwww.data-baker.com\u002Fdata\u002Findex\u002FTNtts\u002F\n\nchange sample rate of waves to **16kHz**, and put waves to .\u002Fdata\u002Fwaves\n\n```\npython vits_resample.py -w [input path]:[.\u002Fdata\u002FWave\u002F] -o .\u002Fdata\u002Fwaves -s 16000\n```\n\nput 000001-010000.txt to .\u002Fdata\u002F000001-010000.txt\n\n```\npython vits_prepare.py -c .\u002Fconfigs\u002Fbert_vits.json\n```\n\n```\npython train.py -c configs\u002Fbert_vits.json -m bert_vits\n```\n\n![bert_lose](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPlayVoice_vits_chinese_readme_abeb0cdfc593.png)\n\n### 额外说明\n\n原始标注为\n``` c\n000001\t卡尔普#2陪外孙#1玩滑梯#4。\n  ka2 er2 pu3 pei2 wai4 sun1 wan2 hua2 ti1\n000002\t假语村言#2别再#1拥抱我#4。\n  jia2 yu3 cun1 yan2 bie2 zai4 yong1 bao4 wo3\n```\n\n标注规整后：\n- BERT需要汉字 `卡尔普陪外孙玩滑梯。` (包括标点)\n- TTS需要声韵母 `sil k a2 ^ er2 p u3 p ei2 ^ uai4 s uen1 ^ uan2 h ua2 t i1 sp sil`\n``` c\n000001\t卡尔普陪外孙玩滑梯。\n  ka2 er2 pu3 pei2 wai4 sun1 wan2 hua2 ti1\n  sil k a2 ^ er2 p u3 p ei2 ^ uai4 s uen1 ^ uan2 h ua2 t i1 sp sil\n000002\t假语村言别再拥抱我。\n  jia2 yu3 cun1 yan2 bie2 zai4 yong1 bao4 wo3\n  sil j ia2 ^ v3 c uen1 ^ ian2 b ie2 z ai4 ^ iong1 b ao4 ^ uo3 sp sil\n```\n\n训练标注为\n```\n.\u002Fdata\u002Fwavs\u002F000001.wav|.\u002Fdata\u002Ftemps\u002F000001.spec.pt|.\u002Fdata\u002Fberts\u002F000001.npy|sil k a2 ^ er2 p u3 p ei2 ^ uai4 s uen1 ^ uan2 h ua2 t i1 sp sil\n.\u002Fdata\u002Fwavs\u002F000002.wav|.\u002Fdata\u002Ftemps\u002F000002.spec.pt|.\u002Fdata\u002Fberts\u002F000002.npy|sil j ia2 ^ v3 c uen1 ^ ian2 b ie2 z ai4 ^ iong1 b ao4 ^ uo3 sp sil\n```\n\n遇到这句话会出错\n```\n002365\t这图#2难不成#2是#1Ｐ过的#4？\n  zhe4 tu2 nan2 bu4 cheng2 shi4 P IY1 guo4 de5\n```\n\n### 拼音错误修改\n将正确的词语和拼音写入文件： [.\u002Ftext\u002Fpinyin-local.txt](.\u002Ftext\u002Fpinyin-local.txt)\n```\n渐渐 jian4 jian4\n浅浅 qian3 qian3\n```\n\n### 数字播报支持\n已支持，基于WeNet开源社区[WeTextProcessing](https:\u002F\u002Fgithub.com\u002Fwenet-e2e\u002FWeTextProcessing)；当然，不可能是完美的\n\n### 不使用Bert也能推理\n```\npython vits_infer_no_bert.py --config .\u002Fconfigs\u002Fbert_vits.json --model vits_bert_model.pth\n```\n虽然训练使用了Bert，但推理可以完全不用Bert，牺牲自然停顿来适配低计算资源设备，比如手机\n\n低资源设备通常会分句合成，这样牺牲的自然停顿也没那么明显\n\n### ONNX非流式\n导出：会有许多警告，直接忽略\n```\npython model_onnx.py --config configs\u002Fbert_vits.json --model vits_bert_model.pth\n```\n推理\n```\npython vits_infer_onnx.py --model vits-chinese.onnx\n```\n\n### ONNX流式\n\n具体实现，将VITS拆解为两个模型，取名为Encoder和Decoder。\n\n- Encoder包括TextEncoder与DurationPredictor等；\n\n- Decoder包括ResidualCouplingBlock与Generator等；\n\n- ResidualCouplingBlock，即Flow，可以放在Encoder或Decoder，放在Decoder需要更大的**hop_frame**\n\n并且将推理逻辑也进行了切分；特别的，先验分布的采样过程放在了Encoder中：\n```\nz_p = m_p + torch.randn_like(m_p) * torch.exp(logs_p) * noise_scale\n```\n\nONNX流式模型导出\n```\npython model_onnx_stream.py --config configs\u002Fbert_vits.json --model vits_bert_model.pth\n```\n\nONNX流式模型推理\n```\npython vits_infer_onnx_stream.py --encoder vits-chinese-encoder.onnx --decoder vits-chinese-decoder.onnx\n```\n\n在流式推理中，**hop_frame**是一个重要参数，需要去尝试出合适的值\n\n### Model compression based on knowledge distillation，应该叫迁移学习还是知识蒸馏呢？\nStudent model has 53M size and 3× speed of teacher model.\n\nTo train:\n\n```\npython train.py -c configs\u002Fbert_vits_student.json -m bert_vits_student\n```\n\nTo infer, get [student model](https:\u002F\u002Fgithub.com\u002FPlayVoice\u002Fvits_chinese\u002Freleases\u002Ftag\u002Fv2.0) at the release page\n\n```\npython vits_infer.py --config .\u002Fconfigs\u002Fbert_vits_student.json --model vits_bert_student.pth\n```\n\n### 代码来源\n[Microsoft's NaturalSpeech: End-to-End Text to Speech Synthesis with Human-Level Quality](https:\u002F\u002Farxiv.org\u002Fabs\u002F2205.04421)\n\n[Nix-TTS: Lightweight and End-to-End Text-to-Speech via Module-wise Distillation](https:\u002F\u002Farxiv.org\u002Fabs\u002F2203.15643)\n\nhttps:\u002F\u002Fgithub.com\u002FExecutedone\u002FChinese-FastSpeech2 **bert prosody**\n\nhttps:\u002F\u002Fgithub.com\u002Fwenet-e2e\u002FWeTextProcessing\n\n[https:\u002F\u002Fgithub.com\u002FTensorSpeech\u002FTensorFlowTTS](https:\u002F\u002Fgithub.com\u002FTensorSpeech\u002FTensorFlowTTS\u002Fblob\u002Fmaster\u002Ftensorflow_tts\u002Fprocessor\u002Fbaker.py) **Heavily depend on**\n\nhttps:\u002F\u002Fgithub.com\u002Fjaywalnut310\u002Fvits\n\nhttps:\u002F\u002Fgithub.com\u002Fwenet-e2e\u002Fwetts\n\nhttps:\u002F\u002Fgithub.com\u002Fcsukuangfj **onnx and android**\n\n### BERT应用于TTS\n2019 BERT+Tacotron2: Pre-trained text embeddings for enhanced text-tospeech synthesis.\n\n2020 BERT+Tacotron2-MultiSpeaker: Improving prosody with linguistic and bert derived features in multi-speaker based mandarin chinese neural tts.\n\n2021 BERT+Tacotron2: Extracting and predicting word-level style variations for speech synthesis.\n\n2022 https:\u002F\u002Fgithub.com\u002FExecutedone\u002FChinese-FastSpeech2\n\n2023 BERT+VISINGER: Towards Improving the Expressiveness of Singing Voice Synthesis with BERT Derived Semantic Information.\n\n# AISHELL3多发音人训练，训练出的模型可用于克隆\n切换代码分支[bert_vits_aishell3](https:\u002F\u002Fgithub.com\u002FPlayVoice\u002Fvits_chinese\u002Ftree\u002Fbert_vits_aishell3)，对比分支代码可以看到**针对多发音人所做出的修改**\n\n## 数据下载\nhttp:\u002F\u002Fwww.openslr.org\u002F93\u002F\n\n## 采样率转换\n```\npython prep_resample.py --wav aishell-3\u002Ftrain\u002Fwav\u002F --out vits_data\u002Fwaves-16k\n```\n\n## 标注规范化（labels.txt，名称不能改）\n```\npython prep_format_label.py --txt aishell-3\u002Ftrain\u002Fcontent.txt --out vits_data\u002Flabels.txt\n```\n\n- 原始标注\n```\nSSB00050001.wav\t广 guang3 州 zhou1 女 nv3 大 da4 学 xue2 生 sheng1 登 deng1 山 shan1 失 shi1 联 lian2 四 si4 天 tian1 警 jing3 方 fang1 找 zhao3 到 dao4 疑 yi2 似 si4 女 nv3 尸 shi1\nSSB00050002.wav\t尊 zhun1 重 zhong4 科 ke1 学 xue2 规 gui1 律 lv4 的 de5 要 yao1 求 qiu2\nSSB00050003.wav\t七 qi1 路 lu4 无 wu2 人 ren2 售 shou4 票 piao4\n```\n- 规范标注\n```\nSSB00050001.wav 广州女大学生登山失联四天警方找到疑似女尸\n\tguang3 zhou1 nv3 da4 xue2 sheng1 deng1 shan1 shi1 lian2 si4 tian1 jing3 fang1 zhao3 dao4 yi2 si4 nv3 shi1\nSSB00050002.wav 尊重科学规律的要求\n\tzhun1 zhong4 ke1 xue2 gui1 lv4 de5 yao1 qiu2\nSSB00050003.wav 七路无人售票\n\tqi1 lu4 wu2 ren2 shou4 piao4\n```\n## 数据预处理\n```\npython prep_bert.py --conf configs\u002Fbert_vits.json --data vits_data\u002F\n```\n\n打印信息，在过滤本项目不支持的**儿化音**\n\n生成 vits_data\u002Fspeakers.txt\n```\n{'SSB0005': 0, 'SSB0009': 1, 'SSB0011': 2..., 'SSB1956': 173}\n```\n生成 filelists\n```\n0|vits_data\u002Fwaves-16k\u002FSSB0005\u002FSSB00050001.wav|vits_data\u002Ftemps\u002FSSB0005\u002FSSB00050001.spec.pt|vits_data\u002Fberts\u002FSSB0005\u002FSSB00050001.npy|sil g uang3 zh ou1 n v3 d a4 x ve2 sh eng1 d eng1 sh an1 sh iii1 l ian2 s ii4 t ian1 j ing3 f ang1 zh ao3 d ao4 ^ i2 s ii4 n v3 sh iii1 sil\n0|vits_data\u002Fwaves-16k\u002FSSB0005\u002FSSB00050002.wav|vits_data\u002Ftemps\u002FSSB0005\u002FSSB00050002.spec.pt|vits_data\u002Fberts\u002FSSB0005\u002FSSB00050002.npy|sil zh uen1 zh ong4 k e1 x ve2 g uei1 l v4 d e5 ^ iao1 q iou2 sil\n0|vits_data\u002Fwaves-16k\u002FSSB0005\u002FSSB00050004.wav|vits_data\u002Ftemps\u002FSSB0005\u002FSSB00050004.spec.pt|vits_data\u002Fberts\u002FSSB0005\u002FSSB00050004.npy|sil h ei1 k e4 x van1 b u4 zh iii3 ^ iao4 b o1 d a2 m ou3 ^ i2 g e4 d ian4 h ua4 sil\n```\n## 数据调试\n```\npython prep_debug.py\n```\n\n## 启动训练\n\n```\ncd monotonic_align\n\npython setup.py build_ext --inplace\n\ncd -\n\npython train.py -c configs\u002Fbert_vits.json -m bert_vits\n```\n\n## 下载权重\nAISHELL3_G.pth：https:\u002F\u002Fgithub.com\u002FPlayVoice\u002Fvits_chinese\u002Freleases\u002Fv4.0\n\n## 推理测试\n```\npython vits_infer.py -c configs\u002Fbert_vits.json -m AISHELL3_G.pth -i 0\n```\n-i 为发音人序号，取值范围：0 ~ 173\n\n**AISHELL3训练数据都是短短的一句话，所以，推理语句中不能有标点**\n\n## 训练的AISHELL3模型，使用小米K2社区开源的AISHELL3模型来初始化训练权重，以节约训练时间\n\nK2开源模型 https:\u002F\u002Fhuggingface.co\u002Fjackyqs\u002Fvits-aishell3-175-chinese\u002Ftree\u002Fmain 下载模型\n\nK2在线试用 https:\u002F\u002Fhuggingface.co\u002Fspaces\u002Fk2-fsa\u002Ftext-to-speech\n","# 基于BERT和VITS的最佳实践TTS，并结合部分微软自然语音特性\n\n[![Hugging Face Spaces](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F%F0%9F%A4%97%20Hugging%20Face-Spaces-blue)](https:\u002F\u002Fhuggingface.co\u002Fspaces\u002Fmaxmax20160403\u002Fvits_chinese)\n\u003Cimg alt=\"GitHub Repo stars\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002FPlayVoice\u002Fvits_chinese\">\n\u003Cimg alt=\"GitHub forks\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fforks\u002FPlayVoice\u002Fvits_chinese\">\n\u003Cimg alt=\"GitHub issues\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fissues\u002FPlayVoice\u002Fvits_chinese\">\n\u003Cimg alt=\"GitHub\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002FPlayVoice\u002Fvits_chinese\">\n\n## 这是一个用于TTS算法学习的项目，如果您在寻找直接用于生产的TTS，本项目可能不适合您！\nhttps:\u002F\u002Fuser-images.githubusercontent.com\u002F16432329\u002F220678182-4775dec8-9229-4578-870f-2eebc3a5d660.mp4\n\n> 天空呈现的透心的蓝，像极了当年。总在这样的时候，透过窗棂，心，在天空里无尽的游弋！柔柔的，浓浓的，痴痴的风，牵引起心底灵动的思潮；情愫悠悠，思情绵绵，风里默坐，红尘中的浅醉，诗词中的优柔，任那自在飞花轻似梦的情怀，裁一束霓衣，织就清浅淡薄的安寂。\n> \n> 风的影子翻阅过淡蓝色的信笺，柔和的文字浅浅地漫过我安静的眸，一如几朵悠闲的云儿，忽而氤氲成汽，忽而修饰成花，铅华洗尽后的透彻和靓丽，爽爽朗朗，轻轻盈盈\n> \n> 时光仿佛有穿越到了从前，在你诗情画意的眼波中，在你舒适浪漫的暇思里，我如风中的思绪徜徉广阔天际，仿佛一片沾染了快乐的羽毛，在云环影绕颤动里浸润着风的呼吸，风的诗韵，那清新的耳语，那婉约的甜蜜，那恬淡的温馨，将一腔情澜染得愈发的缠绵。\n\n### 特性\n1. 从**BERT**（双向编码器表示）获取隐藏韵律嵌入，获得语法上的自然停顿\n\n2. 从**NaturalSpeech**（自然语音）推断损失，减少声音错误\n\n3. **VITS**（变分推理文本到语音合成框架），获得高质量音频\n\n4. 模块级蒸馏，提升速度\n\n:heartpulse:**提示**：建议在基础模型训练完成后，使用**推断损失**微调模型，并在微调期间冻结**后验编码器**。\n\n:heartpulse:**意思就是：初步训练时，不用loss_kl_r；训练好后，添加loss_kl_r继续训练，稍微训练一下就行了，如果音频质量差，可以给loss_kl_r乘以一个小于1的系数、降低loss_kl_r对模型的贡献；继续训练时，可以尝试冻结音频编码器Posterior Encoder；总之，玩法很多，需要多尝试！**\n\n\u003Cdiv align=\"center\">\n\t\n![naturalspeech](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPlayVoice_vits_chinese_readme_349673547a8b.png)\n\n\u003C\u002Fdiv>\n\n### 为什么不升级为VITS2\nVITS2最重要的改进是将Flow的WaveNet模块使用Transformer替换，而在TTS流式实现中，通常需要用纯CNN替换Transformer。\n\n### 在线体验\nhttps:\u002F\u002Fhuggingface.co\u002Fspaces\u002Fmaxmax20160403\u002Fvits_chinese\n\n### 安装依赖和MAS对齐\n\n> pip install -r requirements.txt\n\n> cd monotonic_align\n\n> python setup.py build_ext --inplace\n\n### 使用示例模型推理\n\n从发布页面获取 [vits_chinese\u002Freleases\u002F](https:\u002F\u002Fgithub.com\u002FPlayVoice\u002Fvits_chinese\u002Freleases\u002Ftag\u002Fv1.0)\n\n将 [prosody_model.pt](https:\u002F\u002Fgithub.com\u002FPlayVoice\u002Fvits_chinese\u002Freleases\u002Ftag\u002Fv1.0) 放置到 .\u002Fbert\u002Fprosody_model.pt\n\n将 [vits_bert_model.pth](https:\u002F\u002Fgithub.com\u002FPlayVoice\u002Fvits_chinese\u002Freleases\u002Ftag\u002Fv1.0) 放置到 .\u002Fvits_bert_model.pth\n\n```\npython vits_infer.py --config .\u002Fconfigs\u002Fbert_vits.json --model vits_bert_model.pth\n```\n\n.\u002Fvits_infer_out 包含推理生成的音频文件，试听吧！！！\n\n### 分块流式推理\n\n关键参数，***hop_frame = ∑decoder.ups.padding*** :heartpulse:\n\n```\npython vits_infer_stream.py --config .\u002Fconfigs\u002Fbert_vits.json --model vits_bert_model.pth\n```\n\n### 调整持续时间影响自然度\n因此将 **w_ceil = torch.ceil(w)** 修改为 **w_ceil = torch.ceil(w + 0.35)**\n\n### 特别感谢所有贡献者：\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FMaxMax2016\u002Fvits_chinese\u002Fgraphs\u002Fcontributors\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPlayVoice_vits_chinese_readme_fdcb3f7fbfa7.png\" \u002F>\n\u003C\u002Fa>\n\n### 训练\n下载Baker数据集 [https:\u002F\u002Faistudio.baidu.com\u002Fdatasetdetail\u002F36741](https:\u002F\u002Faistudio.baidu.com\u002Fdatasetdetail\u002F36741)，更多信息：https:\u002F\u002Fwww.data-baker.com\u002Fdata\u002Findex\u002FTNtts\u002F\n\n将音频采样率调整为**16kHz**，并将音频文件放置到 .\u002Fdata\u002Fwaves\n\n```\npython vits_resample.py -w [input path]:[.\u002Fdata\u002FWave\u002F] -o .\u002Fdata\u002Fwaves -s 16000\n```\n\n将 000001-010000.txt 放置到 .\u002Fdata\u002F000001-010000.txt\n\n```\npython vits_prepare.py -c .\u002Fconfigs\u002Fbert_vits.json\n```\n\n```\npython train.py -c configs\u002Fbert_vits.json -m bert_vits\n```\n\n![bert_lose](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPlayVoice_vits_chinese_readme_abeb0cdfc593.png)\n\n### 额外说明\n\n原始标注为\n``` c\n000001\t卡尔普#2陪外孙#1玩滑梯#4。\n  ka2 er2 pu3 pei2 wai4 sun1 wan2 hua2 ti1\n000002\t假语村言#2别再#1拥抱我#4。\n  jia2 yu3 cun1 yan2 bie2 zai4 yong1 bao4 wo3\n```\n\n标注规整后：\n- BERT需要汉字 `卡尔普陪外孙玩滑梯。` (包括标点)\n- TTS需要声韵母 `sil k a2 ^ er2 p u3 p ei2 ^ uai4 s uen1 ^ uan2 h ua2 t i1 sp sil`\n``` c\n000001\t卡尔普陪外孙玩滑梯。\n  ka2 er2 pu3 pei2 wai4 sun1 wan2 hua2 ti1\n  sil k a2 ^ er2 p u3 p ei2 ^ uai4 s uen1 ^ uan2 h ua2 t i1 sp sil\n000002\t假语村言别再拥抱我。\n  jia2 yu3 cun1 yan2 bie2 zai4 yong1 bao4 wo3\n  sil j ia2 ^ v3 c uen1 ^ ian2 b ie2 z ai4 ^ iong1 b ao4 ^ uo3 sp sil\n```\n\n训练标注为\n```\n.\u002Fdata\u002Fwavs\u002F000001.wav|.\u002Fdata\u002Ftemps\u002F000001.spec.pt|.\u002Fdata\u002Fberts\u002F000001.npy|sil k a2 ^ er2 p u3 p ei2 ^ uai4 s uen1 ^ uan2 h ua2 t i1 sp sil\n.\u002Fdata\u002Fwavs\u002F000002.wav|.\u002Fdata\u002Ftemps\u002F000002.spec.pt|.\u002Fdata\u002Fberts\u002F000002.npy|sil j ia2 ^ v3 c uen1 ^ ian2 b ie2 z ai4 ^ iong1 b ao4 ^ uo3 sp sil\n```\n\n遇到这句话会出错\n```\n002365\t这图#2难不成#2是#1Ｐ过的#4？\n  zhe4 tu2 nan2 bu4 cheng2 shi4 P IY1 guo4 de5\n```\n\n### 拼音错误修改\n将正确的词语和拼音写入文件： [.\u002Ftext\u002Fpinyin-local.txt](.\u002Ftext\u002Fpinyin-local.txt)\n```\n渐渐 jian4 jian4\n浅浅 qian3 qian3\n```\n\n### 数字播报支持\n已支持，基于WeNet开源社区[WeTextProcessing](https:\u002F\u002Fgithub.com\u002Fwenet-e2e\u002FWeTextProcessing)；当然，不可能是完美的\n\n### 不使用Bert也能推理\n```\npython vits_infer_no_bert.py --config .\u002Fconfigs\u002Fbert_vits.json --model vits_bert_model.pth\n```\n虽然训练使用了Bert，但推理可以完全不用Bert，牺牲自然停顿来适配低计算资源设备，比如手机\n\n低资源设备通常会分句合成，这样牺牲的自然停顿也没那么明显\n\n### ONNX非流式\n导出：会有许多警告，直接忽略\n```\npython model_onnx.py --config configs\u002Fbert_vits.json --model vits_bert_model.pth\n```\n推理\n```\npython vits_infer_onnx.py --model vits-chinese.onnx\n```\n\n### ONNX流式\n\n具体实现，将VITS拆解为两个模型，取名为Encoder和Decoder。\n\n- Encoder包括TextEncoder与DurationPredictor等；\n\n- Decoder包括ResidualCouplingBlock与Generator等；\n\n- ResidualCouplingBlock，即Flow，可以放在Encoder或Decoder，放在Decoder需要更大的**hop_frame**\n\n并且将推理逻辑也进行了切分；特别的，先验分布的采样过程放在了Encoder中：\n```\nz_p = m_p + torch.randn_like(m_p) * torch.exp(logs_p) * noise_scale\n```\n\nONNX流式模型导出\n```\npython model_onnx_stream.py --config configs\u002Fbert_vits.json --model vits_bert_model.pth\n```\n\nONNX流式模型推理\n```\npython vits_infer_onnx_stream.py --encoder vits-chinese-encoder.onnx --decoder vits-chinese-decoder.onnx\n```\n\n在流式推理中，**hop_frame**是一个重要参数，需要去尝试出合适的值\n\n### 基于知识蒸馏的模型压缩，应该叫迁移学习还是知识蒸馏呢？\n学生模型大小为53M，速度是教师模型的3倍。\n\n训练：\n```\npython train.py -c configs\u002Fbert_vits_student.json -m bert_vits_student\n```\n\n推理，从发布页面获取[学生模型](https:\u002F\u002Fgithub.com\u002FPlayVoice\u002Fvits_chinese\u002Freleases\u002Ftag\u002Fv2.0)\n\n```\npython vits_infer.py --config .\u002Fconfigs\u002Fbert_vits_student.json --model vits_bert_student.pth\n```\n\n### 代码来源\n[Microsoft's NaturalSpeech: End-to-End Text to Speech Synthesis with Human-Level Quality](https:\u002F\u002Farxiv.org\u002Fabs\u002F2205.04421)  \n（微软的 NaturalSpeech：具有人类级别质量的端到端文本到语音合成）\n\n[Nix-TTS: Lightweight and End-to-End Text-to-Speech via Module-wise Distillation](https:\u002F\u002Farxiv.org\u002Fabs\u002F2203.15643)  \n（Nix-TTS：通过模块蒸馏实现轻量级和端到端的文本到语音合成）\n\nhttps:\u002F\u002Fgithub.com\u002FExecutedone\u002FChinese-FastSpeech2 **bert prosody**  \n（BERT 韵律）\n\nhttps:\u002F\u002Fgithub.com\u002Fwenet-e2e\u002FWeTextProcessing\n\n[https:\u002F\u002Fgithub.com\u002FTensorSpeech\u002FTensorFlowTTS](https:\u002F\u002Fgithub.com\u002FTensorSpeech\u002FTensorFlowTTS\u002Fblob\u002Fmaster\u002Ftensorflow_tts\u002Fprocessor\u002Fbaker.py) **Heavily depend on**  \n（重度依赖）\n\nhttps:\u002F\u002Fgithub.com\u002Fjaywalnut310\u002Fvits\n\nhttps:\u002F\u002Fgithub.com\u002Fwenet-e2e\u002Fwetts\n\nhttps:\u002F\u002Fgithub.com\u002Fcsukuangfj **onnx and android**  \n（ONNX 和安卓）\n\n### BERT应用于TTS\n2019 BERT+Tacotron2: Pre-trained text embeddings for enhanced text-to-speech synthesis.  \n（预训练的文本嵌入以增强文本到语音合成）\n\n2020 BERT+Tacotron2-MultiSpeaker: Improving prosody with linguistic and bert derived features in multi-speaker based mandarin chinese neural tts.  \n（基于多发音人的中文神经 TTS 中，利用语言学和 BERT 衍生特征改进韵律）\n\n2021 BERT+Tacotron2: Extracting and predicting word-level style variations for speech synthesis.  \n（提取和预测用于语音合成的词级风格变化）\n\n2022 https:\u002F\u002Fgithub.com\u002FExecutedone\u002FChinese-FastSpeech2\n\n2023 BERT+VISINGER: Towards Improving the Expressiveness of Singing Voice Synthesis with BERT Derived Semantic Information.  \n（通过 BERT 衍生的语义信息提升歌声合成的表现力）\n\n# AISHELL3多发音人训练，训练出的模型可用于克隆  \n切换代码分支[bert_vits_aishell3](https:\u002F\u002Fgithub.com\u002FPlayVoice\u002Fvits_chinese\u002Ftree\u002Fbert_vits_aishell3)，对比分支代码可以看到**针对多发音人所做出的修改**\n\n## 数据下载\nhttp:\u002F\u002Fwww.openslr.org\u002F93\u002F\n\n## 采样率转换\n```\npython prep_resample.py --wav aishell-3\u002Ftrain\u002Fwav\u002F --out vits_data\u002Fwaves-16k\n```\n\n## 标注规范化（labels.txt，名称不能改）\n```\npython prep_format_label.py --txt aishell-3\u002Ftrain\u002Fcontent.txt --out vits_data\u002Flabels.txt\n```\n\n- 原始标注\n```\nSSB00050001.wav\t广 guang3 州 zhou1 女 nv3 大 da4 学 xue2 生 sheng1 登 deng1 山 shan1 失 shi1 联 lian2 四 si4 天 tian1 警 jing3 方 fang1 找 zhao3 到 dao4 疑 yi2 似 si4 女 nv3 尸 shi1\nSSB00050002.wav\t尊 zhun1 重 zhong4 科 ke1 学 xue2 规 gui1 律 lv4 的 de5 要 yao1 求 qiu2\nSSB00050003.wav\t七 qi1 路 lu4 无 wu2 人 ren2 售 shou4 票 piao4\n```\n- 规范标注\n```\nSSB00050001.wav 广州女大学生登山失联四天警方找到疑似女尸\n\tguang3 zhou1 nv3 da4 xue2 sheng1 deng1 shan1 shi1 lian2 si4 tian1 jing3 fang1 zhao3 dao4 yi2 si4 nv3 shi1\nSSB00050002.wav 尊重科学规律的要求\n\tzhun1 zhong4 ke1 xue2 gui1 lv4 de5 yao1 qiu2\nSSB00050003.wav 七路无人售票\n\tqi1 lu4 wu2 ren2 shou4 piao4\n```\n## 数据预处理\n```\npython prep_bert.py --conf configs\u002Fbert_vits.json --data vits_data\u002F\n```\n\n打印信息，在过滤本项目不支持的**儿化音**\n\n生成 vits_data\u002Fspeakers.txt\n```\n{'SSB0005': 0, 'SSB0009': 1, 'SSB0011': 2..., 'SSB1956': 173}\n```\n生成 filelists\n```\n0|vits_data\u002Fwaves-16k\u002FSSB0005\u002FSSB00050001.wav|vits_data\u002Ftemps\u002FSSB0005\u002FSSB00050001.spec.pt|vits_data\u002Fberts\u002FSSB0005\u002FSSB00050001.npy|sil g uang3 zh ou1 n v3 d a4 x ve2 sh eng1 d eng1 sh an1 sh iii1 l ian2 s ii4 t ian1 j ing3 f ang1 zh ao3 d ao4 ^ i2 s ii4 n v3 sh iii1 sil\n0|vits_data\u002Fwaves-16k\u002FSSB0005\u002FSSB00050002.wav|vits_data\u002Ftemps\u002FSSB0005\u002FSSB00050002.spec.pt|vits_data\u002Fberts\u002FSSB0005\u002FSSB00050002.npy|sil zh uen1 zh ong4 k e1 x ve2 g uei1 l v4 d e5 ^ iao1 q iou2 sil\n0|vits_data\u002Fwaves-16k\u002FSSB0005\u002FSSB00050004.wav|vits_data\u002Ftemps\u002FSSB0005\u002FSSB00050004.spec.pt|vits_data\u002Fberts\u002FSSB0005\u002FSSB00050004.npy|sil h ei1 k e4 x van1 b u4 zh iii3 ^ iao4 b o1 d a2 m ou3 ^ i2 g e4 d ian4 h ua4 sil\n```\n## 数据调试\n```\npython prep_debug.py\n```\n\n## 启动训练\n\n```\ncd monotonic_align\n\npython setup.py build_ext --inplace\n\ncd -\n\npython train.py -c configs\u002Fbert_vits.json -m bert_vits\n```\n\n## 下载权重\nAISHELL3_G.pth：https:\u002F\u002Fgithub.com\u002FPlayVoice\u002Fvits_chinese\u002Freleases\u002Fv4.0\n\n## 推理测试\n```\npython vits_infer.py -c configs\u002Fbert_vits.json -m AISHELL3_G.pth -i 0\n```\n-i 为发音人序号，取值范围：0 ~ 173\n\n**AISHELL3训练数据都是短短的一句话，所以，推理语句中不能有标点**\n\n## 训练的AISHELL3模型，使用小米K2社区开源的AISHELL3模型来初始化训练权重，以节约训练时间\n\nK2开源模型 https:\u002F\u002Fhuggingface.co\u002Fjackyqs\u002Fvits-aishell3-175-chinese\u002Ftree\u002Fmain 下载模型\n\nK2在线试用 https:\u002F\u002Fhuggingface.co\u002Fspaces\u002Fk2-fsa\u002Ftext-to-speech","# vits_chinese 快速上手指南\n\nvits_chinese 是一个基于 BERT 和 VITS 的高质量中文 TTS（文本到语音）项目，适合学习和研究 TTS 算法。本指南将帮助您快速上手使用该工具。\n\n---\n\n## 环境准备\n\n### 系统要求\n- 操作系统：Linux 或 macOS（推荐 Ubuntu 20.04+）\n- Python 版本：3.8+\n- GPU 支持（可选，但推荐用于训练和推理）\n\n### 前置依赖\n- PyTorch >= 1.9.0\n- 其他依赖项见 `requirements.txt`\n\n---\n\n## 安装步骤\n\n1. **克隆代码仓库**\n   ```bash\n   git clone https:\u002F\u002Fgithub.com\u002FPlayVoice\u002Fvits_chinese.git\n   cd vits_chinese\n   ```\n\n2. **安装依赖**\n   使用以下命令安装所需依赖：\n   ```bash\n   pip install -r requirements.txt\n   ```\n\n3. **安装 MAS 对齐模块**\n   进入 `monotonic_align` 目录并编译：\n   ```bash\n   cd monotonic_align\n   python setup.py build_ext --inplace\n   cd ..\n   ```\n\n---\n\n## 基本使用\n\n### 下载预训练模型\n从 [Release 页面](https:\u002F\u002Fgithub.com\u002FPlayVoice\u002Fvits_chinese\u002Freleases\u002Ftag\u002Fv1.0) 下载以下文件：\n- `prosody_model.pt`\n- `vits_bert_model.pth`\n\n将它们分别放置到以下路径：\n- `.\u002Fbert\u002Fprosody_model.pt`\n- `.\u002Fvits_bert_model.pth`\n\n### 推理示例\n运行以下命令生成语音：\n```bash\npython vits_infer.py --config .\u002Fconfigs\u002Fbert_vits.json --model vits_bert_model.pth\n```\n\n生成的音频文件将保存在 `.\u002Fvits_infer_out` 目录中，您可以直接播放进行验证。\n\n---\n\n## 高级功能\n\n### 分块流式推理\n如果您需要分块流式输出音频，可以使用以下命令：\n```bash\npython vits_infer_stream.py --config .\u002Fconfigs\u002Fbert_vits.json --model vits_bert_model.pth\n```\n\n**注意**：`hop_frame` 是一个关键参数，可能需要根据实际情况调整。\n\n### 不使用 BERT 推理\n如果目标设备计算资源有限，可以选择不使用 BERT 进行推理：\n```bash\npython vits_infer_no_bert.py --config .\u002Fconfigs\u002Fbert_vits.json --model vits_bert_model.pth\n```\n\n### ONNX 导出与推理\n#### 非流式 ONNX\n导出模型：\n```bash\npython model_onnx.py --config configs\u002Fbert_vits.json --model vits_bert_model.pth\n```\n\n推理：\n```bash\npython vits_infer_onnx.py --model vits-chinese.onnx\n```\n\n#### 流式 ONNX\n导出模型：\n```bash\npython model_onnx_stream.py --config configs\u002Fbert_vits.json --model vits_bert_model.pth\n```\n\n推理：\n```bash\npython vits_infer_onnx_stream.py --encoder vits-chinese-encoder.onnx --decoder vits-chinese-decoder.onnx\n```\n\n---\n\n## 训练（可选）\n\n### 数据准备\n1. 下载 Baker 数据集：\n   - 数据集地址：[Baker 数据集](https:\u002F\u002Faistudio.baidu.com\u002Fdatasetdetail\u002F36741)\n   - 更多信息：[Data-Baker 官网](https:\u002F\u002Fwww.data-baker.com\u002Fdata\u002Findex\u002FTNtts\u002F)\n\n2. 转换音频采样率至 16kHz：\n   ```bash\n   python vits_resample.py -w [input path]:[.\u002Fdata\u002FWave\u002F] -o .\u002Fdata\u002Fwaves -s 16000\n   ```\n\n3. 准备标注文件：\n   将 `000001-010000.txt` 放置到 `.\u002Fdata\u002F000001-010000.txt`。\n\n4. 预处理数据：\n   ```bash\n   python vits_prepare.py -c .\u002Fconfigs\u002Fbert_vits.json\n   ```\n\n### 启动训练\n运行以下命令开始训练：\n```bash\npython train.py -c configs\u002Fbert_vits.json -m bert_vits\n```\n\n---\n\n以上是 vits_chinese 的快速上手指南，涵盖了环境准备、安装步骤和基本使用方法。更多高级功能和训练细节请参考项目 README。","一位独立开发者正在为一款面向儿童的语音故事应用开发中文语音合成功能，希望让AI讲述的故事更加自然流畅。\n\n### 没有 vits_chinese 时\n- 合成的语音听起来机械生硬，尤其是在长句子中缺乏自然的停顿和语调变化，孩子们觉得不够生动\n- 处理复杂的中文语法结构时经常出错，比如\"小明虽然跑得快，但还是迟到了\"这样的句子会丢失逻辑关系\n- 音质不够清晰，有时会出现奇怪的杂音或爆破音，影响听感体验\n- 推理速度较慢，一段5分钟的故事需要等待近10分钟才能生成完毕\n- 不支持流式输出，必须等整个音频生成完成后才能播放，无法实现边生成边播放的效果\n\n### 使用 vits_chinese 后\n- 借助BERT的隐式韵律嵌入，合成语音能够准确把握语法停顿，让故事讲述更自然流畅\n- 引入NaturalSpeech的推理损失机制，显著减少了语法错误，复杂句式也能准确表达\n- VITS框架确保了高音质输出，声音清澈自然，更适合儿童聆听\n- 通过模块蒸馏技术提升了推理速度，5分钟的故事现在只需2-3分钟即可生成\n- 支持ONNX流式输出，可以实现边生成边播放，极大提升了用户体验\n\nvits_chinese帮助开发者打造出更自然、更高效的儿童语音故事体验，让AI讲述的故事真正打动孩子的心。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPlayVoice_vits_chinese_174cc053.png","PlayVoice","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FPlayVoice_15d285ee.png",null,"https:\u002F\u002Fgithub.com\u002FPlayVoice",[80,84],{"name":81,"color":82,"percentage":83},"Python","#3572A5",99.4,{"name":85,"color":86,"percentage":87},"Cython","#fedf5b",0.6,1230,178,"2026-04-05T02:21:33","MIT",4,"Linux, macOS, Windows","需要 NVIDIA GPU，显存 8GB+，CUDA 未说明","未说明",{"notes":97,"python":95,"dependencies":98},"建议使用 conda 管理环境，首次运行需下载预训练模型文件；需要安装 monotonic_align 的 C++扩展；支持 ONNX 导出和推理；训练需要 Baker 或 AISHELL3 数据集。",[99,100,101,102,103],"torch","transformers","numpy","onnx","monotonic_align",[15,38],[106,107,108,109,110,111,112],"tts","vits","naturalspeech","bert","bert-vits","aishell3","bert-vits2","2026-03-27T02:49:30.150509","2026-04-06T05:37:31.168453",[116,121,126,131,136],{"id":117,"question_zh":118,"answer_zh":119,"source_url":120},4192,"VITS 中的 add_blank 和 use_sdp 参数有什么作用？","add_blank 参数会在音素之间添加空白标记，有助于改善停顿问题；use_sdp 参数控制是否使用随机持续时间预测（Stochastic Duration Predictor），可能影响语音自然度。如果合成效果停顿奇怪，可以尝试调整这两个参数。","https:\u002F\u002Fgithub.com\u002FPlayVoice\u002Fvits_chinese\u002Fissues\u002F2",{"id":122,"question_zh":123,"answer_zh":124,"source_url":125},4193,"如何判断 VITS 模型是否训练到位？","可以通过观察 loss 曲线来判断，尤其是 kl_loss 和 mel_loss 是否趋于平稳。如果曲线已经平缓，表示训练可能已经足够。","https:\u002F\u002Fgithub.com\u002FPlayVoice\u002Fvits_chinese\u002Fissues\u002F87",{"id":127,"question_zh":128,"answer_zh":129,"source_url":130},4194,"句尾吞音问题如何解决？","句尾吞音可能是由于模型对情感或 BERT 特征处理不当导致的。建议检查数据集的标注是否准确，并尝试调整模型的情感 embedding 或 BERT 残差连接方式。","https:\u002F\u002Fgithub.com\u002FPlayVoice\u002Fvits_chinese\u002Fissues\u002F54",{"id":132,"question_zh":133,"answer_zh":134,"source_url":135},4195,"如何将 VITS 导出为 ONNX 格式？","可以尝试使用 PyTorch 的 torch.onnx.export 方法导出模型，但需要注意版本兼容性问题。成功导出后，可以使用 ONNX Runtime 或 TensorRT 加速推理。","https:\u002F\u002Fgithub.com\u002FPlayVoice\u002Fvits_chinese\u002Fissues\u002F4",{"id":137,"question_zh":138,"answer_zh":139,"source_url":140},4196,"Baker 数据集训练时 Loss 在 18 左右，声音不够干净怎么办？","Loss 在 18 左右时，声音质量可能已经达到瓶颈。建议检查数据集的预处理步骤，确保音素边界和 BERT 提取特征对齐。此外，高频内容过多可能是模型过拟合的表现，可以尝试降低模型复杂度或增加数据量。","https:\u002F\u002Fgithub.com\u002FPlayVoice\u002Fvits_chinese\u002Fissues\u002F36",[142,147,151,156],{"id":143,"version":144,"summary_zh":145,"released_at":146},103645,"v4.0","AISHELL3包含174个发音人，发音质量有好有坏","2023-10-27T12:50:17",{"id":148,"version":149,"summary_zh":77,"released_at":150},103646,"v3.0","2023-10-17T07:56:49",{"id":152,"version":153,"summary_zh":154,"released_at":155},103647,"v2.0","small model","2023-02-27T16:20:36",{"id":157,"version":158,"summary_zh":159,"released_at":160},103648,"v1.0","release","2023-02-22T01:19:20"]