[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-r9y9--wavenet_vocoder":3,"tool-r9y9--wavenet_vocoder":61},[4,18,26,36,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},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",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},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",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},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 真正成长为懂上",143909,2,"2026-04-07T11:33:18",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},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 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107888,"2026-04-06T11:32:50",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"status":17},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",[52,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":10,"last_commit_at":59,"category_tags":60,"status":17},4487,"LLMs-from-scratch","rasbt\u002FLLMs-from-scratch","LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目，旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型（LLM）。它不仅是同名技术著作的官方代码库，更提供了一套完整的实践方案，涵盖模型开发、预训练及微调的全过程。\n\n该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型，却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码，用户能够透彻掌握 Transformer 架构、注意力机制等关键原理，从而真正理解大模型是如何“思考”的。此外，项目还包含了加载大型预训练权重进行微调的代码，帮助用户将理论知识延伸至实际应用。\n\nLLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API，而是渴望探究模型构建细节的技术人员而言，这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计：将复杂的系统工程拆解为清晰的步骤，配合详细的图表与示例，让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础，还是为未来研发更大规模的模型做准备",90106,"2026-04-06T11:19:32",[35,15,13,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":66,"readme_en":67,"readme_zh":68,"quickstart_zh":69,"use_case_zh":70,"hero_image_url":71,"owner_login":72,"owner_name":73,"owner_avatar_url":74,"owner_bio":75,"owner_company":76,"owner_location":77,"owner_email":78,"owner_twitter":72,"owner_website":79,"owner_url":80,"languages":81,"stars":90,"forks":91,"last_commit_at":92,"license":93,"difficulty_score":10,"env_os":94,"env_gpu":95,"env_ram":96,"env_deps":97,"category_tags":102,"github_topics":104,"view_count":32,"oss_zip_url":113,"oss_zip_packed_at":113,"status":17,"created_at":114,"updated_at":115,"faqs":116,"releases":149},5118,"r9y9\u002Fwavenet_vocoder","wavenet_vocoder","WaveNet vocoder","wavenet_vocoder 是一个专注于生成高保真语音波形的开源深度学习项目。它的核心任务是将语言学特征或声学特征（如梅尔频谱图）转化为自然、清晰的原始音频信号，有效解决了传统语音合成中声音机械、缺乏细节的难题，显著提升了语音的自然度与表现力。\n\n需要注意的是，wavenet_vocoder 本身并非完整的文本转语音（TTS）系统，它不负责将文字直接转为声音，而是作为后端“声码器”，需要配合 Tacotron2 等前端模型生成的频谱图来工作。因此，它特别适合人工智能研究人员、语音合成开发者以及希望深入探索波形建模技术的工程师使用。对于普通用户而言，若需直接体验文本朗读功能，建议结合 ESPnet 等集成平台使用。\n\n在技术亮点方面，wavenet_vocoder 重点优化了 WaveNet 架构中的局部与全局条件控制机制，支持多种混合分布模型（如混合逻辑分布、混合高斯分布）进行 16 位高精度音频建模。此外，项目通过缓存卷积中间状态实现了快速推理，并提供了丰富的预训练模型及多语言（英、中、日）支持，方便用户快速复现高质量语音合成效果。","# WaveNet vocoder\n\n[![PyPI](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fwavenet_vocoder.svg)](https:\u002F\u002Fpypi.python.org\u002Fpypi\u002Fwavenet_vocoder)\n[![Build Status](https:\u002F\u002Ftravis-ci.org\u002Fr9y9\u002Fwavenet_vocoder.svg?branch=master)](https:\u002F\u002Ftravis-ci.org\u002Fr9y9\u002Fwavenet_vocoder)\n[![Build status](https:\u002F\u002Fci.appveyor.com\u002Fapi\u002Fprojects\u002Fstatus\u002Flvt9jtimtg0koxwj?svg=true)](https:\u002F\u002Fci.appveyor.com\u002Fproject\u002Fr9y9\u002Fwavenet-vocoder)\n[![DOI](https:\u002F\u002Fzenodo.org\u002Fbadge\u002F115492234.svg)](https:\u002F\u002Fzenodo.org\u002Fbadge\u002Flatestdoi\u002F115492234)\n\n**NOTE**: This is the development version. If you need a stable version, please checkout the v0.1.1.\n\nThe goal of the repository is to provide an implementation of the WaveNet vocoder, which can generate high quality raw speech samples conditioned on linguistic or acoustic features.\n\nAudio samples are available at https:\u002F\u002Fr9y9.github.io\u002Fwavenet_vocoder\u002F.\n\n## News\n\n- 2019\u002F10\u002F31: The repository has been adapted to [ESPnet](https:\u002F\u002Fgithub.com\u002Fespnet\u002Fespnet). English, Chinese, and Japanese samples and pretrained models are available there. See https:\u002F\u002Fgithub.com\u002Fespnet\u002Fespnet and https:\u002F\u002Fgithub.com\u002Fespnet\u002Fespnet#tts-results for details.\n\n## Online TTS demo\n\nA notebook supposed to be executed on https:\u002F\u002Fcolab.research.google.com is available:\n\n- [Tacotron2: WaveNet-based text-to-speech demo](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fr9y9\u002FColaboratory\u002Fblob\u002Fmaster\u002FTacotron2_and_WaveNet_text_to_speech_demo.ipynb)\n\n## Highlights\n\n- Focus on local and global conditioning of WaveNet, which is essential for vocoder.\n- 16-bit raw audio modeling by mixture distributions: mixture of logistics (MoL), mixture of Gaussians, and single Gaussian distributions are supported.\n- Various audio samples and pre-trained models\n- Fast inference by caching intermediate states in convolutions. Similar to [arXiv:1611.09482](https:\u002F\u002Farxiv.org\u002Fabs\u002F1611.09482)\n- Integration with ESPNet (https:\u002F\u002Fgithub.com\u002Fespnet\u002Fespnet)\n\n## Pre-trained models\n\n**Note**: This is not itself a text-to-speech (TTS) model. With a pre-trained model provided here, you can synthesize waveform given a *mel spectrogram*, not raw text. You will need mel-spectrogram prediction model (such as Tacotron2) to use the pre-trained models for TTS.\n\n**Note**: As for the pretrained model for LJSpeech, the model was fine-tuned multiple times and trained for more than 1000k steps in total. Please refer to the issues ([#1](https:\u002F\u002Fgithub.com\u002Fr9y9\u002Fwavenet_vocoder\u002Fissues\u002F1#issuecomment-361130247), [#75](https:\u002F\u002Fgithub.com\u002Fr9y9\u002Fwavenet_vocoder\u002Fissues\u002F75), [#45](https:\u002F\u002Fgithub.com\u002Fr9y9\u002Fwavenet_vocoder\u002Fissues\u002F45#issuecomment-383313651)) to know how the model was trained.\n\n| Model URL                                                                                                                        | Data       | Hyper params URL                                                                                     | Git commit                                                                                         | Steps         |\n|----------------------------------------------------------------------------------------------------------------------------------|------------|------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------|---------------|\n| [link](https:\u002F\u002Fwww.dropbox.com\u002Fs\u002Fzdbfprugbagfp2w\u002F20180510_mixture_lj_checkpoint_step000320000_ema.pth?dl=0)                      | LJSpeech   | [link](https:\u002F\u002Fwww.dropbox.com\u002Fs\u002F0vsd7973w20eskz\u002F20180510_mixture_lj_checkpoint_step000320000_ema.json?dl=0)                | [2092a64](https:\u002F\u002Fgithub.com\u002Fr9y9\u002Fwavenet_vocoder\u002Fcommit\u002F2092a647e60ce002389818de1fa66d0a2c5763d8) | 1000k~  steps |\n| [link](https:\u002F\u002Fwww.dropbox.com\u002Fs\u002Fd0qk4ow9uuh2lww\u002F20180212_mixture_multispeaker_cmu_arctic_checkpoint_step000740000_ema.pth?dl=0) | CMU ARCTIC | [link](https:\u002F\u002Fwww.dropbox.com\u002Fs\u002Fi35yigj5hvmeol8\u002F20180212_multispeaker_cmu_arctic_mixture.json?dl=0) | [b1a1076](https:\u002F\u002Fgithub.com\u002Fr9y9\u002Fwavenet_vocoder\u002Ftree\u002Fb1a1076e8b5d9b3e275c28f2f7f4d7cd0e75dae4)   | 740k steps    |\n\nTo use pre-trained models, first checkout the specific git commit noted above. i.e.,\n\n```\ngit checkout ${commit_hash}\n```\n\nAnd then follows \"Synthesize from a checkpoint\" section in the README. Note that old version of synthesis.py may not accept `--preset=\u003Cjson>` parameter and you might have to change `hparams.py` according to the preset (json) file.\n\nYou could try for example:\n\n```\n# Assuming you have downloaded LJSpeech-1.1 at ~\u002Fdata\u002FLJSpeech-1.1\n# pretrained model (20180510_mixture_lj_checkpoint_step000320000_ema.pth)\n# hparams (20180510_mixture_lj_checkpoint_step000320000_ema.json)\ngit checkout 2092a64\npython preprocess.py ljspeech ~\u002Fdata\u002FLJSpeech-1.1 .\u002Fdata\u002Fljspeech \\\n  --preset=20180510_mixture_lj_checkpoint_step000320000_ema.json\npython synthesis.py --preset=20180510_mixture_lj_checkpoint_step000320000_ema.json \\\n  --conditional=.\u002Fdata\u002Fljspeech\u002Fljspeech-mel-00001.npy \\\n  20180510_mixture_lj_checkpoint_step000320000_ema.pth \\\n  generated\n```\n\nYou can find a generated wav file in `generated` directory. Wonder how it works? then take a look at code:)\n\n## Repository structure\n\nThe repository consists of 1) pytorch library, 2) command line tools, and 3) [ESPnet](https:\u002F\u002Fgithub.com\u002Fespnet\u002Fespnet)-style recipes. The first one is a pytorch library to provide WavaNet functionality. The second one is a set of tools to run WaveNet training\u002Finference, data processing, etc. The last one is the reproducible recipes combining the WaveNet library and utility tools. Please take a look at them depending on your purpose. If you want to build your WaveNet on your dataset (I guess this is the most likely case), the recipe is the way for you.\n\n## Requirements\n\n- Python 3\n- CUDA >= 8.0\n- PyTorch >= v0.4.0\n\n## Installation\n\n\n```\ngit clone https:\u002F\u002Fgithub.com\u002Fr9y9\u002Fwavenet_vocoder && cd wavenet_vocoder\npip install -e .\n```\n\nIf you only need the library part, you can install it from pypi:\n\n```\npip install wavenet_vocoder\n```\n\n## Getting started\n\n### Kaldi-style recipes\n\nThe repository provides Kaldi-style recipes to make experiments reproducible and easily manageable. Available recipes are as follows:\n\n- `mulaw256`: WaveNet that uses categorical output distribution. The input is 8-bit mulaw quantized waveform.\n- `mol`: Mixture of Logistics (MoL) WaveNet. The input is 16-bit raw audio.\n- `gaussian`: Single-Gaussian WaveNet (a.k.a. teacher WaveNet of [ClariNet](https:\u002F\u002Fclarinet-demo.github.io\u002F)). The input is 16-bit raw audio.\n\nAll the recipe has `run.sh`, which specifies all the steps to perform WaveNet training\u002Finference including data preprocessing. Please see run.sh in [egs](egs) directory for details.\n\n**NOTICE**: Global conditioning for multi-speaker WaveNet is not supported in the above recipes (it shouldn't be difficult to implement though). Please check v0.1.12 for the feature, or if you *really* need the feature, please raise an issue.\n\n#### Apply recipe to your own dataset\n\nThe recipes are designed to be generic so that one can use them for any dataset. To apply recipes to your own dataset, you'd need to put *all* the wav files in a single flat directory. i.e.,\n\n```\n> tree -L 1 ~\u002Fdata\u002FLJSpeech-1.1\u002Fwavs\u002F | head\n\u002FUsers\u002Fryuichi\u002Fdata\u002FLJSpeech-1.1\u002Fwavs\u002F\n├── LJ001-0001.wav\n├── LJ001-0002.wav\n├── LJ001-0003.wav\n├── LJ001-0004.wav\n├── LJ001-0005.wav\n├── LJ001-0006.wav\n├── LJ001-0007.wav\n├── LJ001-0008.wav\n├── LJ001-0009.wav\n```\n\nThat's it! The last step is to modify `db_root` in run.sh or give `db_root` as the command line argment for run.sh.\n\n```\n.\u002Frun.sh --stage 0 --stop-stage 0 --db-root ~\u002Fdata\u002FLJSpeech-1.1\u002Fwavs\u002F\n```\n\n### Step-by-step\n\nA recipe typically consists of multiple steps. It is strongly recommended to run the recipe step-by-step to understand how it works for the first time. To do so, specify `stage` and `stop_stage` as follows:\n\n```\n.\u002Frun.sh --stage 0 --stop-stage 0\n```\n\n```\n.\u002Frun.sh --stage 1 --stop-stage 1\n```\n\n```\n.\u002Frun.sh --stage 2 --stop-stage 2\n```\n\nIn typical situations, you'd need to specify CUDA devices explciitly expecially for training step.\n\n```\nCUDA_VISIBLE_DEVICES=\"0,1\" .\u002Frun.sh --stage 2 --stop-stage 2\n```\n\n### Docs for command line tools\n\nCommand line tools are writtern with [docopt](http:\u002F\u002Fdocopt.org\u002F). See each docstring for the basic usages.\n\n#### tojson.py\n\nDump hyperparameters to a json file.\n\nUsage:\n\n```\npython tojson.py --hparams=\"parameters you want to override\" \u003Coutput_json_path>\n```\n\n#### preprocess.py\n\nUsage:\n\n```\npython preprocess.py wavallin ${dataset_path} ${out_dir} --preset=\u003Cjson>\n```\n\n#### train.py\n\n> Note: for multi gpu training, you have better ensure that batch_size % num_gpu == 0\n\nUsage:\n\n```\npython train.py --dump-root=${dump-root} --preset=\u003Cjson>\\\n  --hparams=\"parameters you want to override\"\n```\n\n\n#### evaluate.py\n\nGiven a directoy that contains local conditioning features, synthesize waveforms for them.\n\nUsage:\n\n```\npython evaluate.py ${dump_root} ${checkpoint} ${output_dir} --dump-root=\"data location\"\\\n    --preset=\u003Cjson> --hparams=\"parameters you want to override\"\n```\n\nOptions:\n\n- `--num-utterances=\u003CN>`: Number of utterances to be generated. If not specified, generate all uttereances. This is useful for debugging.\n\n#### synthesis.py\n\n**NOTICE**: This is probably not working now. Please use evaluate.py instead.\n\nSynthesize waveform give a conditioning feature.\n\nUsage:\n\n```\npython synthesis.py ${checkpoint_path} ${output_dir} --preset=\u003Cjson> --hparams=\"parameters you want to override\"\n```\n\nImportant options:\n\n- `--conditional=\u003Cpath>`: (Required for conditional WaveNet) Path of local conditional features (.npy). If this is specified, number of time steps to generate is determined by the size of conditional feature.\n\n\n### Training scenarios\n\n#### Training un-conditional WaveNet\n\n**NOTICE**: This is probably not working now. Please check v0.1.1 for the working version.\n\n```\npython train.py --dump-root=.\u002Fdata\u002Fcmu_arctic\u002F\n    --hparams=\"cin_channels=-1,gin_channels=-1\"\n```\n\nYou have to disable global and local conditioning by setting `gin_channels` and `cin_channels` to negative values.\n\n#### Training WaveNet conditioned on mel-spectrogram\n\n```\npython train.py --dump-root=.\u002Fdata\u002Fcmu_arctic\u002F --speaker-id=0 \\\n    --hparams=\"cin_channels=80,gin_channels=-1\"\n```\n\n#### Training WaveNet conditioned on mel-spectrogram and speaker embedding\n\n**NOTICE**: This is probably not working now. Please check v0.1.1 for the working version.\n\n```\npython train.py --dump-root=.\u002Fdata\u002Fcmu_arctic\u002F \\\n    --hparams=\"cin_channels=80,gin_channels=16,n_speakers=7\"\n```\n\n### Misc\n\n#### Monitor with Tensorboard\n\nLogs are dumped in `.\u002Flog` directory by default. You can monitor logs by tensorboard:\n\n```\ntensorboard --logdir=log\n```\n\n\n### List of papers that used the repository\n\n- A Comparison of Recent Neural Vocoders for Speech Signal Reconstruction https:\u002F\u002Fwww.isca-speech.org\u002Farchive\u002FSSW_2019\u002Fabstracts\u002FSSW10_O_1-2.html\n- WaveGlow: A Flow-based Generative Network for Speech Synthesis https:\u002F\u002Farxiv.org\u002Fabs\u002F1811.00002\n- WaveCycleGAN2: Time-domain Neural Post-filter for Speech Waveform Generation https:\u002F\u002Farxiv.org\u002Fabs\u002F1904.02892\n- Parametric Resynthesis with neural vocoders https:\u002F\u002Farxiv.org\u002Fabs\u002F1906.06762\n- Representation Mixing fo TTS Synthesis https:\u002F\u002Farxiv.org\u002Fabs\u002F1811.07240\n- A Unified Neural Architecture for Instrumental Audio Tasks https:\u002F\u002Farxiv.org\u002Fabs\u002F1903.00142\n- ESPnet-TTS: Unified, Reproducible, and Integratable Open Source End-to-End Text-to-Speech Toolkit: https:\u002F\u002Farxiv.org\u002Fabs\u002F1910.10909\n\nThank you very much!! If you find a new one, please submit a PR.\n\n## Sponsors\n\n- https:\u002F\u002Fgithub.com\u002Fechelon\n\n## References\n\n- [Aaron van den Oord, Sander Dieleman, Heiga Zen, et al, \"WaveNet: A Generative Model for Raw Audio\", \tarXiv:1609.03499, Sep 2016.](https:\u002F\u002Farxiv.org\u002Fabs\u002F1609.03499)\n- [Aaron van den Oord, Yazhe Li, Igor Babuschkin, et al, \"Parallel WaveNet: Fast High-Fidelity Speech Synthesis\", \tarXiv:1711.10433, Nov 2017.](https:\u002F\u002Farxiv.org\u002Fabs\u002F1711.10433)\n- [Tamamori, Akira, et al. \"Speaker-dependent WaveNet vocoder.\" Proceedings of Interspeech. 2017.](http:\u002F\u002Fwww.isca-speech.org\u002Farchive\u002FInterspeech_2017\u002Fpdfs\u002F0314.PDF)\n- [Jonathan Shen, Ruoming Pang, Ron J. Weiss, et al, \"Natural TTS Synthesis by Conditioning WaveNet on Mel Spectrogram Predictions\", arXiv:1712.05884, Dec 2017.](https:\u002F\u002Farxiv.org\u002Fabs\u002F1712.05884)\n- [Wei Ping, Kainan Peng, Andrew Gibiansky, et al, \"Deep Voice 3: 2000-Speaker Neural Text-to-Speech\", arXiv:1710.07654, Oct. 2017.](https:\u002F\u002Farxiv.org\u002Fabs\u002F1710.07654)\n- [Tom Le Paine, Pooya Khorrami, Shiyu Chang, et al, \"Fast Wavenet Generation Algorithm\", arXiv:1611.09482, Nov. 2016](https:\u002F\u002Farxiv.org\u002Fabs\u002F1611.09482)\n- [Ye Jia, Yu Zhang, Ron J. Weiss, Quan Wang, Jonathan Shen, Fei Ren, Zhifeng Chen, Patrick Nguyen, Ruoming Pang, Ignacio Lopez Moreno, Yonghui Wu, et al, \"Transfer Learning from Speaker Verification to Multispeaker Text-To-Speech Synthesis\" , arXiv:1806.04558v4 cs.CL 2 Jan 2019](https:\u002F\u002Farxiv.org\u002Fabs\u002F1806.04558)\n","# WaveNet 语音编码器\n\n[![PyPI](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fwavenet_vocoder.svg)](https:\u002F\u002Fpypi.python.org\u002Fpypi\u002Fwavenet_vocoder)\n[![构建状态](https:\u002F\u002Ftravis-ci.org\u002Fr9y9\u002Fwavenet_vocoder.svg?branch=master)](https:\u002F\u002Ftravis-ci.org\u002Fr9y9\u002Fwavenet_vocoder)\n[![构建状态](https:\u002F\u002Fci.appveyor.com\u002Fapi\u002Fprojects\u002Fstatus\u002Flvt9jtimtg0koxwj?svg=true)](https:\u002F\u002Fci.appveyor.com\u002Fproject\u002Fr9y9\u002Fwavenet-vocoder)\n[![DOI](https:\u002F\u002Fzenodo.org\u002Fbadge\u002F115492234.svg)](https:\u002F\u002Fzenodo.org\u002Fbadge\u002Flatestdoi\u002F115492234)\n\n**注意**: 这是开发版本。如果您需要稳定版本，请检出 v0.1.1。\n\n该仓库的目标是提供一个 WaveNet 语音编码器的实现，它可以基于语言学或声学特征生成高质量的原始语音样本。\n\n音频样本可在 https:\u002F\u002Fr9y9.github.io\u002Fwavenet_vocoder\u002F 上找到。\n\n## 最新消息\n\n- 2019年10月31日：该仓库已适配 [ESPnet](https:\u002F\u002Fgithub.com\u002Fespnet\u002Fespnet)。其中提供了英语、中文和日语的样本及预训练模型。详情请参见 https:\u002F\u002Fgithub.com\u002Fespnet\u002Fespnet 和 https:\u002F\u002Fgithub.com\u002Fespnet\u002Fespnet#tts-results。\n\n## 在线 TTS 演示\n\n有一个应该在 https:\u002F\u002Fcolab.research.google.com 上运行的笔记本：\n\n- [Tacotron2：基于 WaveNet 的文本到语音演示](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fr9y9\u002FColaboratory\u002Fblob\u002Fmaster\u002FTacotron2_and_WaveNet_text_to_speech_demo.ipynb)\n\n## 亮点\n\n- 专注于 WaveNet 的局部和全局条件化，这对语音编码器至关重要。\n- 使用混合分布对 16 位原始音频建模：支持物流混合 (MoL)、高斯混合以及单个高斯分布。\n- 多种音频样本和预训练模型\n- 通过缓存卷积中的中间状态实现快速推理。类似于 [arXiv:1611.09482](https:\u002F\u002Farxiv.org\u002Fabs\u002F1611.09482)\n- 与 ESPnet 集成（https:\u002F\u002Fgithub.com\u002Fespnet\u002Fespnet）\n\n## 预训练模型\n\n**注意**: 这本身并不是一个文本到语音 (TTS) 模型。使用此处提供的预训练模型，您可以根据 *梅尔频谱图* 合成波形，而不是原始文本。要将这些预训练模型用于 TTS，您还需要一个梅尔频谱图预测模型（例如 Tacotron2）。\n\n**注意**: 对于 LJSpeech 的预训练模型，该模型经过多次微调，总共训练了超过 100 万步。有关模型的训练方式，请参阅相关问题（[#1](https:\u002F\u002Fgithub.com\u002Fr9y9\u002Fwavenet_vocoder\u002Fissues\u002F1#issuecomment-361130247)、[#75](https:\u002F\u002Fgithub.com\u002Fr9y9\u002Fwavenet_vocoder\u002Fissues\u002F75)、[#45](https:\u002F\u002Fgithub.com\u002Fr9y9\u002Fwavenet_vocoder\u002Fissues\u002F45#issuecomment-383313651))。\n\n| 模型链接                                                                                                                        | 数据       | 超参数链接                                                                                     | Git 提交                                                                                         | 步数         |\n|----------------------------------------------------------------------------------------------------------------------------------|------------|------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------|---------------|\n| [链接](https:\u002F\u002Fwww.dropbox.com\u002Fs\u002Fzdbfprugbagfp2w\u002F20180510_mixture_lj_checkpoint_step000320000_ema.pth?dl=0)                      | LJSpeech   | [链接](https:\u002F\u002Fwww.dropbox.com\u002Fs\u002F0vsd7973w20eskz\u002F20180510_mixture_lj_checkpoint_step000320000_ema.json?dl=0)                | [2092a64](https:\u002F\u002Fgithub.com\u002Fr9y9\u002Fwavenet_vocoder\u002Fcommit\u002F2092a647e60ce002389818de1fa66d0a2c5763d8) | 100万步左右    |\n| [链接](https:\u002F\u002Fwww.dropbox.com\u002Fs\u002Fd0qk4ow9uuh2lww\u002F20180212_mixture_multispeaker_cmu_arctic_checkpoint_step000740000_ema.pth?dl=0) | CMU ARCTIC | [链接](https:\u002F\u002Fwww.dropbox.com\u002Fs\u002Fi35yigj5hvmeol8\u002F20180212_multispeaker_cmu_arctic_mixture.json?dl=0) | [b1a1076](https:\u002F\u002Fgithub.com\u002Fr9y9\u002Fwavenet_vocoder\u002Ftree\u002Fb1a1076e8b5d9b3e275c28f2f7f4d7cd0e75dae4)   | 74万步        |\n\n要使用预训练模型，首先检出上述指定的 Git 提交。即：\n\n```\ngit checkout ${commit_hash}\n```\n\n然后按照 README 中的“从检查点合成”部分操作。请注意，旧版本的 synthesis.py 可能不接受 `--preset=\u003Cjson>` 参数，您可能需要根据预设 (json) 文件修改 `hparams.py`。\n\n您可以尝试如下操作：\n\n```\n# 假设您已将 LJSpeech-1.1 下载到 ~\u002Fdata\u002FLJSpeech-1.1\n# 预训练模型 (20180510_mixture_lj_checkpoint_step000320000_ema.pth)\n# 超参数文件 (20180510_mixture_lj_checkpoint_step000320000_ema.json)\ngit checkout 2092a64\npython preprocess.py ljspeech ~\u002Fdata\u002FLJSpeech-1.1 .\u002Fdata\u002Fljspeech \\\n  --preset=20180510_mixture_lj_checkpoint_step000320000_ema.json\npython synthesis.py --preset=20180510_mixture_lj_checkpoint_step000320000_ema.json \\\n  --conditional=.\u002Fdata\u002Fljspeech\u002Fljspeech-mel-00001.npy \\\n  20180510_mixture_lj_checkpoint_step000320000_ema.pth \\\n  generated\n```\n\n您可以在 `generated` 目录中找到生成的 wav 文件。想知道它是如何工作的吗？那就看看代码吧 :)\n\n## 仓库结构\n\n该仓库由 1) PyTorch 库、2) 命令行工具以及 3) [ESPnet](https:\u002F\u002Fgithub.com\u002Fespnet\u002Fespnet)-风格的配方组成。第一部分是一个 PyTorch 库，用于提供 WaveNet 功能。第二部分是一组用于运行 WaveNet 训练\u002F推理、数据处理等的工具。第三部分则是结合 WaveNet 库和实用工具的可复现配方。请根据您的目的查看它们。如果您想在自己的数据集上构建 WaveNet（我想这可能是最常见的情况），那么配方就是适合您的方式。\n\n## 需求\n\n- Python 3\n- CUDA >= 8.0\n- PyTorch >= v0.4.0\n\n## 安装\n\n\n```\ngit clone https:\u002F\u002Fgithub.com\u002Fr9y9\u002Fwavenet_vocoder && cd wavenet_vocoder\npip install -e .\n```\n\n如果您只需要库部分，可以从 pypi 安装：\n\n```\npip install wavenet_vocoder\n```\n\n## 入门\n\n### Kaldi 风格的配方\n\n该仓库提供了 Kaldi 风格的配方，以使实验具有可重复性且易于管理。可用的配方如下：\n\n- `mulaw256`：使用分类输出分布的 WaveNet。输入为 8 位 mu-law 量化波形。\n- `mol`：物流混合（MoL）WaveNet。输入为 16 位原始音频。\n- `gaussian`：单高斯 WaveNet（又称 [ClariNet](https:\u002F\u002Fclarinet-demo.github.io\u002F) 的教师模型）。输入为 16 位原始音频。\n\n所有配方都包含 `run.sh` 脚本，其中指定了执行 WaveNet 训练\u002F推理的所有步骤，包括数据预处理。详细信息请参阅 [egs](egs) 目录中的 `run.sh`。\n\n**注意**：上述配方不支持多说话人 WaveNet 的全局条件化（尽管实现起来并不困难）。请查看 v0.1.12 版本以获取此功能，或者如果您*确实*需要此功能，请提交 issue。\n\n#### 将配方应用于您自己的数据集\n\n这些配方设计为通用型，因此可以用于任何数据集。要将配方应用于您自己的数据集，您需要将*所有* WAV 文件放入一个扁平目录中。例如：\n\n```\n> tree -L 1 ~\u002Fdata\u002FLJSpeech-1.1\u002Fwavs\u002F | head\n\u002FUsers\u002Fryuichi\u002Fdata\u002FLJSpeech-1.1\u002Fwavs\u002F\n├── LJ001-0001.wav\n├── LJ001-0002.wav\n├── LJ001-0003.wav\n├── LJ001-0004.wav\n├── LJ001-0005.wav\n├── LJ001-0006.wav\n├── LJ001-0007.wav\n├── LJ001-0008.wav\n├── LJ001-0009.wav\n```\n\n就是这样！最后一步是修改 `run.sh` 中的 `db_root`，或将 `db_root` 作为命令行参数传递给 `run.sh`。\n\n```\n.\u002Frun.sh --stage 0 --stop-stage 0 --db-root ~\u002Fdata\u002FLJSpeech-1.1\u002Fwavs\u002F\n```\n\n### 分步操作\n\n一个配方通常由多个步骤组成。强烈建议首次使用时分步运行配方，以便了解其工作原理。为此，请按如下方式指定 `stage` 和 `stop_stage`：\n\n```\n.\u002Frun.sh --stage 0 --stop-stage 0\n```\n\n```\n.\u002Frun.sh --stage 1 --stop-stage 1\n```\n\n```\n.\u002Frun.sh --stage 2 --stop-stage 2\n```\n\n在典型情况下，尤其是在训练步骤中，您需要显式指定 CUDA 设备。\n\n```\nCUDA_VISIBLE_DEVICES=\"0,1\" .\u002Frun.sh --stage 2 --stop-stage 2\n```\n\n### 命令行工具文档\n\n命令行工具使用 [docopt](http:\u002F\u002Fdocopt.org\u002F) 编写。有关基本用法，请参阅每个 docstring。\n\n#### tojson.py\n\n将超参数转储到 JSON 文件中。\n\n用法：\n\n```\npython tojson.py --hparams=\"您想要覆盖的参数\" \u003Coutput_json_path>\n```\n\n#### preprocess.py\n\n用法：\n\n```\npython preprocess.py wavallin ${dataset_path} ${out_dir} --preset=\u003Cjson>\n```\n\n#### train.py\n\n> 注意：对于多 GPU 训练，最好确保 batch_size % num_gpu == 0。\n\n用法：\n\n```\npython train.py --dump-root=${dump-root} --preset=\u003Cjson>\\\n  --hparams=\"您想要覆盖的参数\"\n```\n\n#### evaluate.py\n\n给定一个包含局部条件特征的目录，为其合成波形。\n\n用法：\n\n```\npython evaluate.py ${dump_root} ${checkpoint} ${output_dir} --dump-root=\"数据位置\"\\\n    --preset=\u003Cjson> --hparams=\"您想要覆盖的参数\"\n```\n\n选项：\n\n- `--num-utterances=\u003CN>`：要生成的语句数量。如果未指定，则生成所有语句。这对于调试非常有用。\n\n#### synthesis.py\n\n**注意**：这可能目前无法正常工作。请改用 evaluate.py。\n\n根据给定的条件特征合成波形。\n\n用法：\n\n```\npython synthesis.py ${checkpoint_path} ${output_dir} --preset=\u003Cjson> --hparams=\"您想要覆盖的参数\"\n```\n\n重要选项：\n\n- `--conditional=\u003Cpath>`：（条件 WaveNet 必需）局部条件特征文件路径（.npy）。如果指定了此选项，生成的时间步长将由条件特征的大小决定。\n\n### 训练场景\n\n#### 训练无条件 WaveNet\n\n**注意**：这可能目前无法正常工作。请查看 v0.1.1 版本以获取可用版本。\n\n```\npython train.py --dump-root=.\u002Fdata\u002Fcmu_arctic\u002F\n    --hparams=\"cin_channels=-1,gin_channels=-1\"\n```\n\n您必须通过将 `gin_channels` 和 `cin_channels` 设置为负值来禁用全局和局部条件化。\n\n#### 训练基于梅尔谱的条件 WaveNet\n\n```\npython train.py --dump-root=.\u002Fdata\u002Fcmu_arctic\u002F --speaker-id=0 \\\n    --hparams=\"cin_channels=80,gin_channels=-1\"\n```\n\n#### 训练基于梅尔谱和说话人嵌入的条件 WaveNet\n\n**注意**：这可能目前无法正常工作。请查看 v0.1.1 版本以获取可用版本。\n\n```\npython train.py --dump-root=.\u002Fdata\u002Fcmu_arctic\u002F \\\n    --hparams=\"cin_channels=80,gin_channels=16,n_speakers=7\"\n```\n\n### 杂项\n\n#### 使用 TensorBoard 监控\n\n日志默认会转储到 `.\u002Flog` 目录中。您可以使用 TensorBoard 监控日志：\n\n```\ntensorboard --logdir=log\n```\n\n### 使用本仓库的论文列表\n\n- 近期神经声码器在语音信号重建中的比较 https:\u002F\u002Fwww.isca-speech.org\u002Farchive\u002FSSW_2019\u002Fabstracts\u002FSSW10_O_1-2.html\n- WaveGlow：用于语音合成的基于流的生成网络 https:\u002F\u002Farxiv.org\u002Fabs\u002F1811.00002\n- WaveCycleGAN2：用于语音波形生成的时域神经后滤波器 https:\u002F\u002Farxiv.org\u002Fabs\u002F1904.02892\n- 使用神经声码器进行参数化重合成 https:\u002F\u002Farxiv.org\u002Fabs\u002F1906.06762\n- TTS 合成中的表征混合 https:\u002F\u002Farxiv.org\u002Fabs\u002F1811.07240\n- 用于乐器音频任务的统一神经架构 https:\u002F\u002Farxiv.org\u002Fabs\u002F1903.00142\n- ESPnet-TTS：统一、可重复且可集成的开源端到端文本到语音工具包：https:\u002F\u002Farxiv.org\u002Fabs\u002F1910.10909\n\n非常感谢！！如果您发现了新的论文，请提交 PR。\n\n## 赞助商\n\n- https:\u002F\u002Fgithub.com\u002Fechelon\n\n## 参考文献\n\n- [Aaron van den Oord, Sander Dieleman, Heiga Zen 等，“WaveNet：一种原始音频生成模型”，arXiv:1609.03499，2016 年 9 月。](https:\u002F\u002Farxiv.org\u002Fabs\u002F1609.03499)\n- [Aaron van den Oord, Yazhe Li, Igor Babuschkin 等，“并行 WaveNet：快速高保真语音合成”，arXiv:1711.10433，2017 年 11 月。](https:\u002F\u002Farxiv.org\u002Fabs\u002F1711.10433)\n- [Tamamori, Akira 等。“基于说话人的 WaveNet 声码器”。Interspeech 会议论文集，2017 年。](http:\u002F\u002Fwww.isca-speech.org\u002Farchive\u002FInterspeech_2017\u002Fpdfs\u002F0314.PDF)\n- [Jonathan Shen, Ruoming Pang, Ron J. Weiss 等，“通过将 WaveNet 条件化于梅尔谱预测来实现自然的 TTS 合成”，arXiv:1712.05884，2017 年 12 月。](https:\u002F\u002Farxiv.org\u002Fabs\u002F1712.05884)\n- [Wei Ping, Kainan Peng, Andrew Gibiansky 等，“Deep Voice 3：2000 说话人的神经文本到语音”，arXiv:1710.07654，2017 年 10 月。](https:\u002F\u002Farxiv.org\u002Fabs\u002F1710.07654)\n- [Tom Le Paine, Pooya Khorrami, Shiyu Chang 等，“快速 WaveNet 生成算法”，arXiv:1611.09482，2016 年 11 月。](https:\u002F\u002Farxiv.org\u002Fabs\u002F1611.09482)\n- [Ye Jia, Yu Zhang, Ron J. Weiss, Quan Wang, Jonathan Shen, Fei Ren, Zhifeng Chen, Patrick Nguyen, Ruoming Pang, Ignacio Lopez Moreno, Yonghui Wu 等，“从说话人验证到多说话人文本到语音合成的迁移学习”，arXiv:1806.04558v4 cs.CL，2019 年 1 月 2 日。](https:\u002F\u002Farxiv.org\u002Fabs\u002F1806.04558)","# WaveNet Vocoder 快速上手指南\n\nWaveNet Vocoder 是一个基于 PyTorch 实现的 WaveNet 声码器，能够根据语言或声学特征（如梅尔频谱）生成高质量的原始语音波形。它支持多种分布建模（MoL、高斯混合等），并可与 ESPnet 集成。\n\n> **注意**：本工具本身不是端到端的文本转语音（TTS）模型。你需要先通过其他模型（如 Tacotron2）生成梅尔频谱，再使用本工具合成波形。\n\n## 环境准备\n\n在开始之前，请确保你的系统满足以下要求：\n\n*   **操作系统**: Linux (推荐) 或 macOS\n*   **Python**: Python 3\n*   **GPU**: CUDA >= 8.0 (用于加速训练和推理)\n*   **深度学习框架**: PyTorch >= v0.4.0\n\n建议预先安装好对应的 CUDA 版本和 PyTorch。如果在国内网络环境下安装 PyTorch 较慢，推荐使用清华或中科大镜像源：\n\n```bash\npip install torch torchvision torchaudio --index-url https:\u002F\u002Fdownload.pytorch.org\u002Fwhl\u002Fcu118\n# 请根据实际 CUDA 版本调整上述命令中的 cu118\n```\n\n## 安装步骤\n\n你可以选择从源码安装（推荐，包含完整工具和示例脚本）或仅安装库文件。\n\n### 方式一：从源码安装（推荐）\n\n克隆仓库并以可编辑模式安装，以便运行示例脚本和修改代码：\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fr9y9\u002Fwavenet_vocoder && cd wavenet_vocoder\npip install -e .\n```\n\n### 方式二：仅安装库\n\n如果你只需要调用库函数，可以直接从 PyPI 安装：\n\n```bash\npip install wavenet_vocoder\n```\n\n## 基本使用\n\n以下是基于预训练模型进行语音合成的最简流程。本示例假设你已准备好一个梅尔频谱文件（`.npy` 格式）。\n\n### 1. 获取预训练模型与配置\n\nWaveNet Vocoder 提供了针对 LJSpeech 数据集的预训练模型。使用前需切换到对应的 Git 提交版本以确保兼容性。\n\n```bash\n# 切换到指定版本\ngit checkout 2092a64\n\n# 下载预训练模型权重 (示例链接，请根据实际需求下载最新可用模型)\nwget https:\u002F\u002Fwww.dropbox.com\u002Fs\u002Fzdbfprugbagfp2w\u002F20180510_mixture_lj_checkpoint_step000320000_ema.pth?dl=0 -O checkpoint.pth\n\n# 下载对应的超参数配置文件\nwget https:\u002F\u002Fwww.dropbox.com\u002Fs\u002F0vsd7973w20eskz\u002F20180510_mixture_lj_checkpoint_step000320000_ema.json?dl=0 -O hparams.json\n```\n\n### 2. 数据预处理（可选）\n\n如果你有自己的音频数据需要处理，可以使用 `preprocess.py`。若直接使用现成的梅尔频谱文件，可跳过此步。\n\n```bash\n# 示例：处理 LJSpeech 数据集\n# 假设数据位于 ~\u002Fdata\u002FLJSpeech-1.1\npython preprocess.py ljspeech ~\u002Fdata\u002FLJSpeech-1.1 .\u002Fdata\u002Fljspeech \\\n  --preset=hparams.json\n```\n\n### 3. 合成语音\n\n使用 `evaluate.py`（推荐）或 `synthesis.py` 根据梅尔频谱生成波形。\n\n**前提条件**：你需要有一个梅尔频谱文件（例如 `mel-spec.npy`）。如果是测试，可以从预处理后的数据目录中找一个现成的。\n\n```bash\n# 执行合成\n# --conditional: 指定输入的梅尔频谱文件路径 (.npy)\n# checkpoint.pth: 下载的模型权重\n# generated: 输出目录\npython evaluate.py .\u002Fdata\u002Fljspeech checkpoint.pth generated \\\n    --preset=hparams.json \\\n    --conditional=.\u002Fdata\u002Fljspeech\u002Fljspeech-mel-00001.npy\n```\n\n合成完成后，生成的 `.wav` 文件将保存在 `generated` 目录中。\n\n### 进阶：运行完整食谱 (Recipe)\n\n项目提供了类似 Kaldi 风格的食谱脚本 (`run.sh`)，可一键完成从数据准备到训练的全过程。\n\n```bash\n# 查看可用的食谱目录\nls egs\u002F\n\n# 运行示例食谱 (以 mol 为例，输入为 16-bit 原始音频)\n# --stage 0 --stop-stage 0 表示只运行数据预处理阶段\n.\u002Fegs\u002Fmol\u002Frun.sh --stage 0 --stop-stage 0 --db-root ~\u002Fdata\u002Fyour_wav_directory\u002F\n```\n\n如需进行多卡训练，请在运行训练阶段时指定 GPU：\n\n```bash\nCUDA_VISIBLE_DEVICES=\"0,1\" .\u002Fegs\u002Fmol\u002Frun.sh --stage 2 --stop-stage 2\n```","某语音合成初创团队正在开发一款多语言有声书朗读系统，需要将文本转换为高保真的人声波形。\n\n### 没有 wavenet_vocoder 时\n- 生成的语音带有明显的机械感和电子噪音，缺乏真实人声的呼吸感与情感起伏，听众体验较差。\n- 难以同时支持英语、中文和日语等多种语言的高质量发声，每种语言都需要单独训练复杂的端到端模型，维护成本极高。\n- 推理速度缓慢，无法在有限算力下实现准实时的音频生成，导致产品上线延迟。\n- 仅能输出低采样率音频，高频细节丢失严重，无法满足出版级有声书的音质标准。\n\n### 使用 wavenet_vocoder 后\n- 利用混合逻辑分布（MoL）对原始音频进行建模，生成的语音清晰自然，完美还原了人声的细微质感与情感色彩。\n- 直接复用预训练模型并结合 ESPnet 生态，轻松通过梅尔频谱图条件控制，实现了英、中、日多语言的高品质统一合成。\n- 借助卷积中间状态缓存技术大幅加速推理过程，显著降低了生成延迟，满足了流畅播放的需求。\n- 支持 16 位原始音频建模，输出波形频响丰富，直接达到了专业有声读物的出版音质要求。\n\nwavenet_vocoder 通过将声学特征转化为高保真波形，彻底解决了传统方案音质生硬且多语言适配难的瓶颈。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fr9y9_wavenet_vocoder_7d26111f.png","r9y9","Ryuichi Yamamoto","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fr9y9_83926454.jpg","Speech Synthesis, Voice Conversion, Machine Learning, Singing Voice Synthesis","@line","Nagoya, Japan","zryuichi@gmail.com","https:\u002F\u002Fr9y9.github.io\u002F","https:\u002F\u002Fgithub.com\u002Fr9y9",[82,86],{"name":83,"color":84,"percentage":85},"Python","#3572A5",91.5,{"name":87,"color":88,"percentage":89},"Shell","#89e051",8.5,2373,494,"2026-04-03T12:06:02","NOASSERTION","Linux, macOS, Windows","需要 NVIDIA GPU，CUDA >= 8.0，具体显存大小未说明（取决于训练批次和模型配置）","未说明",{"notes":98,"python":99,"dependencies":100},"该工具主要作为 PyTorch 库使用，也提供命令行工具和类似 ESPnet 的脚本。支持多种音频建模分布（MoL, Gaussian 等）。注意：README 中提到的部分功能（如无条件 WaveNet 训练、多说话人全局条件推理的某些脚本）在开发版本中可能已失效，建议使用稳定版 v0.1.1 或参考 ESPnet 集成版本。训练时若使用多 GPU，需确保 batch_size 能被 GPU 数量整除。","3",[101],"PyTorch>=0.4.0",[103,14],"音频",[105,106,107,108,109,110,111,112],"wavenet","speech-synthesis","speech-processing","pytorch","python","wavenet-vocoder","neural-vocoder","speech",null,"2026-03-27T02:49:30.150509","2026-04-08T01:09:53.910298",[117,122,127,131,136,140,145],{"id":118,"question_zh":119,"answer_zh":120,"source_url":121},23242,"项目是否支持 Parallel WaveNet？","维护者明确表示不会在此项目中支持 Parallel WaveNet。如果对该技术感兴趣，建议参考 ClariNet 项目作为起点：https:\u002F\u002Fgithub.com\u002Fksw0306\u002FClariNet","https:\u002F\u002Fgithub.com\u002Fr9y9\u002Fwavenet_vocoder\u002Fissues\u002F7",{"id":123,"question_zh":124,"answer_zh":125,"source_url":126},23243,"如何将 Tacotron2 的输出连接到 WaveNet 声码器？参数如何对齐？","需要确保两个模型的音频超参数一致。对于 LJSpeech 数据集，关键参数设置如下：\n- num_mels: 80\n- sample_rate: 22050 (注意原文用户误写为 20050，LJSpeech 标准为 22050)\n- frame_shift_ms: 11.61 (对应 hop_size=256, 计算方式 256\u002F22050*1000)\n- frame_length_ms: 46.44 (对应 fft_size=1024)\n- fmin\u002Ffmax: Tacotron2 默认 fmin=0, fmax=fsample\u002F2，而 WaveNet 实现中可能使用了 fmin=125, fmax=7600，若使用预训练模型需调整 Tacotron2 代码以匹配这些范围。","https:\u002F\u002Fgithub.com\u002Fr9y9\u002Fwavenet_vocoder\u002Fissues\u002F30",{"id":128,"question_zh":129,"answer_zh":130,"source_url":126},23244,"使用预训练模型进行复制合成（copy-synthesis）时生成全是噪音，Mel 频谱图需要归一化吗？","不需要手动将 Mel 频谱图归一化到 [0, 1] 区间。直接使用 `preprocess.py` 脚本生成的 Mel 频谱图输入模型即可。无需执行类似 `c = np.interp(c, (0, 4), (0, 1))` 的插值操作，该操作并非必需。如果生成噪音，请检查预处理步骤是否正确生成了与预训练模型匹配的 Mel 频谱特征。",{"id":132,"question_zh":133,"answer_zh":134,"source_url":135},23245,"训练多说话人模型（如 CMU Arctic）时应该使用哪种条件设置？","有三种训练方式：\n1. 无条件 WaveNet：仅适用于单说话人（如 LJSpeech）。\n2. 基于 Mel 频谱图的局部条件：适用于特定说话人的多说话人数据子集。\n3. 基于 Mel 频谱图 + 说话人 ID 的全局条件：适用于包含多个说话人的完整数据集（如 CMU Arctic 的所有说话人）。\n如果要训练涵盖所有说话人的多说话人模型，应使用“基于 Mel 频谱图和说话人嵌入（speaker embedding\u002FID）”的条件方式。预处理后的数据文件（如 train.txt）最后一列应包含说话人 ID。","https:\u002F\u002Fgithub.com\u002Fr9y9\u002Fwavenet_vocoder\u002Fissues\u002F9",{"id":137,"question_zh":138,"answer_zh":139,"source_url":135},23246,"如果想使用 18 个说话人的 CMU Arctic 数据进行训练，需要修改代码吗？","不需要修改核心代码。维护者指出实验中使用了 7 个说话人，但用户可以自由选择使用全部 18 个说话人。只需确保预处理数据（如通过 nnmnkwii 库生成的数据）正确包含了所有说话人的信息，并且训练列表文件（train.txt）中正确标记了每个样本对应的说话人 ID 即可。",{"id":141,"question_zh":142,"answer_zh":143,"source_url":144},23247,"为什么在转置网络（upsampling network）中使用了 ReLU，而原始 WaveNet 论文中没有提到？","虽然原始 WaveNet 论文未明确讨论在转置网络中使用 ReLU，但该实现中加入了 ReLU 激活函数。关于 Mel 频谱图的归一化，Tacotron 2 的作者表示他们并没有专门为 WaveNet 对 Mel 频谱图进行额外的归一化处理。如果在训练或推理中遇到收敛问题，可以尝试调整相关架构或检查数据分布，但目前的实现是经过验证可用的。","https:\u002F\u002Fgithub.com\u002Fr9y9\u002Fwavenet_vocoder\u002Fissues\u002F52",{"id":146,"question_zh":147,"answer_zh":148,"source_url":135},23248,"训练过程似乎在第一个 epoch 后就停止了，如何设置才能继续训练？","训练循环主要依赖 `nepochs` 参数。如果在 TensorBoard 中看到训练似乎停止，请检查是否达到了设定的 epoch 数或者是否有其他早停机制被触发。确保 `hparams` 中的 `nepochs` 设置为期望的值（例如 2000）。如果确认参数无误但仍停止，请检查日志是否有报错或显存溢出导致进程终止。",[150],{"id":151,"version":152,"summary_zh":153,"released_at":154},136939,"v0.1.1","首次可引用的发布。此版本应配备DOI以便引用。","2018-10-27T06:50:21"]