[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-andabi--deep-voice-conversion":3,"tool-andabi--deep-voice-conversion":64},[4,23,32,40,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":22},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",85092,2,"2026-04-10T11:13:16",[13,14,15,16,17,18,19,20,21],"图像","数据工具","视频","插件","Agent","其他","语言模型","开发框架","音频","ready",{"id":24,"name":25,"github_repo":26,"description_zh":27,"stars":28,"difficulty_score":29,"last_commit_at":30,"category_tags":31,"status":22},4128,"GPT-SoVITS","RVC-Boss\u002FGPT-SoVITS","GPT-SoVITS 是一款强大的开源语音合成与声音克隆工具，旨在让用户仅需极少量的音频数据即可训练出高质量的个性化语音模型。它核心解决了传统语音合成技术依赖海量录音数据、门槛高且成本大的痛点，实现了“零样本”和“少样本”的快速建模：用户只需提供 5 秒参考音频即可即时生成语音，或使用 1 分钟数据进行微调，从而获得高度逼真且相似度极佳的声音效果。\n\n该工具特别适合内容创作者、独立开发者、研究人员以及希望为角色配音的普通用户使用。其内置的友好 WebUI 界面集成了人声伴奏分离、自动数据集切片、中文语音识别及文本标注等辅助功能，极大地降低了数据准备和模型训练的技术门槛，让非专业人士也能轻松上手。\n\n在技术亮点方面，GPT-SoVITS 不仅支持中、英、日、韩、粤语等多语言跨语种合成，还具备卓越的推理速度，在主流显卡上可实现实时甚至超实时的生成效率。无论是需要快速制作视频配音，还是进行多语言语音交互研究，GPT-SoVITS 都能以极低的数据成本提供专业级的语音合成体验。",56375,3,"2026-04-05T22:15:46",[21],{"id":33,"name":34,"github_repo":35,"description_zh":36,"stars":37,"difficulty_score":29,"last_commit_at":38,"category_tags":39,"status":22},2863,"TTS","coqui-ai\u002FTTS","🐸TTS 是一款功能强大的深度学习文本转语音（Text-to-Speech）开源库，旨在将文字自然流畅地转化为逼真的人声。它解决了传统语音合成技术中声音机械生硬、多语言支持不足以及定制门槛高等痛点，让高质量的语音生成变得触手可及。\n\n无论是希望快速集成语音功能的开发者，还是致力于探索前沿算法的研究人员，亦或是需要定制专属声音的数据科学家，🐸TTS 都能提供得力支持。它不仅预置了覆盖全球 1100 多种语言的训练模型，让用户能够即刻上手，还提供了完善的工具链，支持用户利用自有数据训练新模型或对现有模型进行微调，轻松实现特定风格的声音克隆。\n\n在技术亮点方面，🐸TTS 表现卓越。其最新的 ⓍTTSv2 模型支持 16 种语言，并在整体性能上大幅提升，实现了低于 200 毫秒的超低延迟流式输出，极大提升了实时交互体验。此外，它还无缝集成了 🐶Bark、🐢Tortoise 等社区热门模型，并支持调用上千个 Fairseq 模型，展现了极强的兼容性与扩展性。配合丰富的数据集分析与整理工具，🐸TTS 已成为科研与生产环境中备受信赖的语音合成解决方案。",44971,"2026-04-03T14:47:02",[21,20,13],{"id":41,"name":42,"github_repo":43,"description_zh":44,"stars":45,"difficulty_score":29,"last_commit_at":46,"category_tags":47,"status":22},2375,"LocalAI","mudler\u002FLocalAI","LocalAI 是一款开源的本地人工智能引擎，旨在让用户在任意硬件上轻松运行各类 AI 模型，包括大语言模型、图像生成、语音识别及视频处理等。它的核心优势在于彻底打破了高性能计算的门槛，无需昂贵的专用 GPU，仅凭普通 CPU 或常见的消费级显卡（如 NVIDIA、AMD、Intel 及 Apple Silicon）即可部署和运行复杂的 AI 任务。\n\n对于担心数据隐私的用户而言，LocalAI 提供了“隐私优先”的解决方案，确保所有数据处理均在本地基础设施内完成，无需上传至云端。同时，它完美兼容 OpenAI、Anthropic 等主流 API 接口，这意味着开发者可以无缝迁移现有应用，直接利用本地资源替代云服务，既降低了成本又提升了可控性。\n\nLocalAI 内置了超过 35 种后端支持（如 llama.cpp、vLLM、Whisper 等），并集成了自主 AI 代理、工具调用及检索增强生成（RAG）等高级功能，且具备多用户管理与权限控制能力。无论是希望保护敏感数据的企业开发者、进行算法实验的研究人员，还是想要在个人电脑上体验最新 AI 技术的极客玩家，都能通过 LocalAI 获",44782,"2026-04-02T22:14:26",[13,21,19,17,20,14,16],{"id":49,"name":50,"github_repo":51,"description_zh":52,"stars":53,"difficulty_score":29,"last_commit_at":54,"category_tags":55,"status":22},3108,"bark","suno-ai\u002Fbark","Bark 是由 Suno 推出的开源生成式音频模型，能够根据文本提示创造出高度逼真的多语言语音、音乐、背景噪音及简单音效。与传统仅能朗读文字的语音合成工具不同，Bark 基于 Transformer 架构，不仅能模拟说话，还能生成笑声、叹息、哭泣等非语言声音，甚至能处理带有情感色彩和语气停顿的复杂文本，极大地丰富了音频表达的可能性。\n\n它主要解决了传统语音合成声音机械、缺乏情感以及无法生成非语音类音效的痛点，让创作者能通过简单的文字描述获得生动自然的音频素材。无论是需要为视频配音的内容创作者、探索多模态生成的研究人员，还是希望快速原型设计的开发者，都能从中受益。普通用户也可通过集成的演示页面轻松体验其神奇效果。\n\n技术亮点方面，Bark 支持商业使用（MIT 许可），并在近期更新中实现了显著的推理速度提升，同时提供了适配低显存 GPU 的版本，降低了使用门槛。此外，社区还建立了丰富的提示词库，帮助用户更好地驾驭模型生成特定风格的声音。只需几行 Python 代码，即可将创意文本转化为高质量音频，是连接文字与声音世界的强大桥梁。",39067,"2026-04-04T03:33:35",[21],{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":29,"last_commit_at":62,"category_tags":63,"status":22},5908,"ChatTTS","2noise\u002FChatTTS","ChatTTS 是一款专为日常对话场景打造的生成式语音模型，特别适用于大语言模型助手等交互式应用。它主要解决了传统文本转语音（TTS）技术在对话中缺乏自然感、情感表达单一以及难以处理停顿、笑声等细微语气的问题，让机器生成的语音听起来更像真人在聊天。\n\n这款工具非常适合开发者、研究人员以及希望为应用增添自然语音交互功能的设计师使用。普通用户也可以通过社区开发的衍生产品体验其能力。ChatTTS 的核心亮点在于其对对话任务的深度优化：它不仅支持中英文双语，还能精准控制韵律细节，自动生成自然的 laughter（笑声）、pauses（停顿）和 interjections（插入语），从而实现多说话人的互动对话效果。在韵律表现上，ChatTTS 超越了大多数开源 TTS 模型。目前开源版本基于 4 万小时数据预训练而成，虽主要用于学术研究与教育目的，但已展现出强大的潜力，并支持流式音频生成与零样本推理，为后续的多情绪控制等进阶功能奠定了基础。",39042,"2026-04-09T11:54:03",[19,17,20,21],{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":70,"readme_en":71,"readme_zh":72,"quickstart_zh":73,"use_case_zh":74,"hero_image_url":75,"owner_login":76,"owner_name":77,"owner_avatar_url":78,"owner_bio":79,"owner_company":80,"owner_location":81,"owner_email":82,"owner_twitter":80,"owner_website":80,"owner_url":83,"languages":84,"stars":96,"forks":97,"last_commit_at":98,"license":99,"difficulty_score":100,"env_os":101,"env_gpu":102,"env_ram":102,"env_deps":103,"category_tags":110,"github_topics":80,"view_count":10,"oss_zip_url":80,"oss_zip_packed_at":80,"status":22,"created_at":111,"updated_at":112,"faqs":113,"releases":149},7542,"andabi\u002Fdeep-voice-conversion","deep-voice-conversion","Deep neural networks for voice conversion (voice style transfer) in Tensorflow","deep-voice-conversion 是一个基于 TensorFlow 的开源项目，旨在利用深度神经网络实现“语音风格迁移”。简单来说，它能将一个人的声音转换为特定目标人物（如知名演员凯特·温斯莱特）的音色，同时保留原有的说话内容和语调。\n\n该项目核心解决了传统语音转换对“平行数据”的依赖难题。以往训练此类模型需要源说话人和目标说话人朗读完全相同句子的配对录音，数据采集成本极高。而 deep-voice-conversion 创新性地采用“多对一”架构，仅需目标说话人的少量录音以及来自不同人的通用语音数据即可训练，无需严格的句子对应关系。\n\n其技术亮点在于双模块设计：首先通过 Net1 模块将输入语音识别为与说话人无关的音素序列，再由 Net2 模块结合目标说话人特征合成新语音。模型引入了 Tacotron 中的 CBHG 结构，有效捕捉序列数据特征，在无需文本标注的情况下实现了高质量的音色转换。\n\n这款工具非常适合人工智能研究人员、语音技术开发者以及对声音合成感兴趣的技术爱好者使用。虽然项目提供了完整的训练代码和评估脚本，但由于涉及深度学习模型训练及特定环境配置（如 Pytho","deep-voice-conversion 是一个基于 TensorFlow 的开源项目，旨在利用深度神经网络实现“语音风格迁移”。简单来说，它能将一个人的声音转换为特定目标人物（如知名演员凯特·温斯莱特）的音色，同时保留原有的说话内容和语调。\n\n该项目核心解决了传统语音转换对“平行数据”的依赖难题。以往训练此类模型需要源说话人和目标说话人朗读完全相同句子的配对录音，数据采集成本极高。而 deep-voice-conversion 创新性地采用“多对一”架构，仅需目标说话人的少量录音以及来自不同人的通用语音数据即可训练，无需严格的句子对应关系。\n\n其技术亮点在于双模块设计：首先通过 Net1 模块将输入语音识别为与说话人无关的音素序列，再由 Net2 模块结合目标说话人特征合成新语音。模型引入了 Tacotron 中的 CBHG 结构，有效捕捉序列数据特征，在无需文本标注的情况下实现了高质量的音色转换。\n\n这款工具非常适合人工智能研究人员、语音技术开发者以及对声音合成感兴趣的技术爱好者使用。虽然项目提供了完整的训练代码和评估脚本，但由于涉及深度学习模型训练及特定环境配置（如 Python 2.7、TensorFlow 等），它更偏向于具备一定编程基础的极客用户，而非普通大众的直接应用产品。","# Voice Conversion with Non-Parallel Data\r\n## Subtitle: Speaking like Kate Winslet\r\n> Authors: Dabi Ahn(andabi412@gmail.com), [Kyubyong Park](https:\u002F\u002Fgithub.com\u002FKyubyong)(kbpark.linguist@gmail.com)\r\n\r\n## Samples\r\nhttps:\u002F\u002Fsoundcloud.com\u002Fandabi\u002Fsets\u002Fvoice-style-transfer-to-kate-winslet-with-deep-neural-networks\r\n\r\n## Intro\r\nWhat if you could imitate a famous celebrity's voice or sing like a famous singer?\r\nThis project started with a goal to convert someone's voice to a specific target voice.\r\nSo called, it's voice style transfer.\r\nWe worked on this project that aims to convert someone's voice to a famous English actress [Kate Winslet](https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FKate_Winslet)'s \r\n[voice](https:\u002F\u002Fsoundcloud.com\u002Fandabi\u002Fsets\u002Fvoice-style-transfer-to-kate-winslet-with-deep-neural-networks).\r\nWe implemented a deep neural networks to achieve that and more than 2 hours of audio book sentences read by Kate Winslet are used as a dataset.\r\n\r\n\u003Cp align=\"center\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fandabi_deep-voice-conversion_readme_d632bd353b57.png\" width=\"50%\">\u003C\u002Fp>\r\n\r\n## Model Architecture\r\nThis is a many-to-one voice conversion system.\r\nThe main significance of this work is that we could generate a target speaker's utterances without parallel data like \u003Csource's wav, target's wav>, \u003Cwav, text> or \u003Cwav, phone>, but only waveforms of the target speaker.\r\n(To make these parallel datasets needs a lot of effort.)\r\nAll we need in this project is a number of waveforms of the target speaker's utterances and only a small set of \u003Cwav, phone> pairs from a number of anonymous speakers.\r\n\r\n\u003Cp align=\"center\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fandabi_deep-voice-conversion_readme_dfc5b8fee951.png\" width=\"85%\">\u003C\u002Fp>\r\n\r\nThe model architecture consists of two modules:\r\n1. Net1(phoneme classification) classify someone's utterances to one of phoneme classes at every timestep.\r\n    * Phonemes are speaker-independent while waveforms are speaker-dependent.\r\n2. Net2(speech synthesis) synthesize speeches of the target speaker from the phones.\r\n\r\nWe applied CBHG(1-D convolution bank + highway network + bidirectional GRU) modules that are mentioned in [Tacotron](https:\u002F\u002Farxiv.org\u002Fabs\u002F1703.10135).\r\nCBHG is known to be good for capturing features from sequential data.\r\n\r\n### Net1 is a classifier.\r\n* Process: wav -> spectrogram -> mfccs -> phoneme dist.\r\n* Net1 classifies spectrogram to phonemes that consists of 60 English phonemes at every timestep.\r\n  * For each timestep, the input is log magnitude spectrogram and the target is phoneme dist.\r\n* Objective function is cross entropy loss.\r\n* [TIMIT dataset](https:\u002F\u002Fcatalog.ldc.upenn.edu\u002FLDC93S1) used.\r\n  * contains 630 speakers' utterances and corresponding phones that speaks similar sentences.\r\n* Over 70% test accuracy\r\n\r\n### Net2 is a synthesizer.\r\nNet2 contains Net1 as a sub-network.\r\n* Process: net1(wav -> spectrogram -> mfccs -> phoneme dist.) -> spectrogram -> wav\r\n* Net2 synthesizes the target speaker's speeches.\r\n  * The input\u002Ftarget is a set of target speaker's utterances.\r\n* Since Net1 is already trained in previous step, the remaining part only should be trained in this step.\r\n* Loss is reconstruction error between input and target. (L2 distance)\r\n* Datasets\r\n    * Target1(anonymous female): [Arctic](http:\u002F\u002Fwww.festvox.org\u002Fcmu_arctic\u002F) dataset (public)\r\n    * Target2(Kate Winslet): over 2 hours of audio book sentences read by her (private)\r\n* Griffin-Lim reconstruction when reverting wav from spectrogram.\r\n\r\n## Implementations\r\n### Requirements\r\n* python 2.7\r\n* tensorflow >= 1.1\r\n* numpy >= 1.11.1\r\n* librosa == 0.5.1\r\n\r\n### Settings\r\n* sample rate: 16,000Hz\r\n* window length: 25ms\r\n* hop length: 5ms\r\n\r\n### Procedure\r\n* Train phase: Net1 and Net2 should be trained sequentially.\r\n  * Train1(training Net1)\r\n    * Run `train1.py` to train and `eval1.py` to test.\r\n  * Train2(training Net2)\r\n    * Run `train2.py` to train and `eval2.py` to test.\r\n      * Train2 should be trained after Train1 is done!\r\n* Convert phase: feed forward to Net2\r\n    * Run `convert.py` to get result samples.\r\n    * Check Tensorboard's audio tab to listen the samples.\r\n    * Take a look at phoneme dist. visualization on Tensorboard's image tab.\r\n      * x-axis represents phoneme classes and y-axis represents timesteps\r\n      * the first class of x-axis means silence.\r\n\r\n\u003Cp align=\"center\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fandabi_deep-voice-conversion_readme_926bc587f942.png\" width=\"30%\">\u003C\u002Fp>\r\n\r\n## Tips (Lessons We've learned from this project)\r\n* Window length and hop length have to be small enough to be able to fit in only a phoneme.\r\n* Obviously, sample rate, window length and hop length should be same in both Net1 and Net2.\r\n* Before ISTFT(spectrogram to waveforms), emphasizing on the predicted spectrogram by applying power of 1.0~2.0 is helpful for removing noisy sound.\r\n* It seems that to apply temperature to softmax in Net1 is not so meaningful.\r\n* IMHO, the accuracy of Net1(phoneme classification) does not need to be so perfect.\r\n  * Net2 can reach to near optimal when Net1 accuracy is correct to some extent.\r\n\r\n## References\r\n* [\"Phonetic posteriorgrams for many-to-one voice conversion without parallel data training\"](https:\u002F\u002Fwww.researchgate.net\u002Fpublication\u002F307434911_Phonetic_posteriorgrams_for_many-to-one_voice_conversion_without_parallel_data_training), 2016 IEEE International Conference on Multimedia and Expo (ICME)\r\n* [\"TACOTRON: TOWARDS END-TO-END SPEECH SYNTHESIS\"](https:\u002F\u002Farxiv.org\u002Fabs\u002F1703.10135), Submitted to Interspeech 2017\r\n","# 基于非平行数据的语音转换\n## 副标题：像凯特·温斯莱特一样说话\n> 作者：安达比（andabi412@gmail.com）、[朴奎勇](https:\u002F\u002Fgithub.com\u002FKyubyong)（kbpark.linguist@gmail.com）\n\n## 样本\nhttps:\u002F\u002Fsoundcloud.com\u002Fandabi\u002Fsets\u002Fvoice-style-transfer-to-kate-winslet-with-deep-neural-networks\n\n## 简介\n如果你能模仿一位著名明星的声音，或者像一位知名歌手那样歌唱，那该有多酷？本项目旨在将一个人的语音转换为目标特定的语音，也就是所谓的语音风格迁移。我们致力于将某人的声音转换成英国著名女演员[凯特·温斯莱特](https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FKate_Winslet)的[声音](https:\u002F\u002Fsoundcloud.com\u002Fandabi\u002Fsets\u002Fvoice-style-transfer-to-kate-winslet-with-deep-neural-networks)。为此，我们实现了一种深度神经网络，并使用了凯特·温斯莱特朗读的超过2小时有声书语句作为数据集。\n\n\u003Cp align=\"center\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fandabi_deep-voice-conversion_readme_d632bd353b57.png\" width=\"50%\">\u003C\u002Fp>\n\n## 模型架构\n这是一个多对一的语音转换系统。这项工作的主要创新之处在于，我们仅需目标说话者的波形数据，而无需像“源音频、目标音频”、“音频、文本”或“音频、音素”这样的平行数据集即可生成目标说话者的语音。事实上，构建这些平行数据集通常需要耗费大量精力。而在本项目中，我们只需要目标说话者的一系列语音波形，以及少量匿名说话者的“音频、音素”对。\n\n\u003Cp align=\"center\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fandabi_deep-voice-conversion_readme_dfc5b8fee951.png\" width=\"85%\">\u003C\u002Fp>\n\n模型架构由两个模块组成：\n1. Net1（音素分类）在每个时间步将输入语音分类为对应的音素类别。\n   * 音素是与说话人无关的，而语音波形则具有说话人特异性。\n2. Net2（语音合成）根据音素序列合成目标说话者的语音。\n\n我们采用了[Tacotron](https:\u002F\u002Farxiv.org\u002Fabs\u002F1703.10135)中提到的CBHG模块（一维卷积银行 + 高速网络 + 双向GRU）。CBHG以其在处理序列数据时捕捉特征的能力而闻名。\n\n### Net1是一个分类器。\n* 流程：音频 → 频谱图 → MFCC特征 → 音素分布。\n* Net1在每个时间步将频谱图分类为60个英语音素之一。\n  * 对于每个时间步，输入是对数幅度频谱图，目标是音素分布。\n* 目标函数为交叉熵损失。\n* 使用了[TIMIT数据集](https:\u002F\u002Fcatalog.ldc.upenn.edu\u002FLDC93S1)。\n  * 该数据集包含630位说话者的语音及其对应的音素标注，且所有说话者都朗读了相似的句子。\n* 测试准确率超过70%。\n\n### Net2是一个合成器。\nNet2内部嵌套了Net1子网络。\n* 流程：net1（音频 → 频谱图 → MFCC特征 → 音素分布）→ 频谱图 → 音频。\n* Net2负责合成目标说话者的语音。\n  * 输入和输出都是目标说话者的一系列语音。\n* 由于Net1已在前一步训练完毕，因此这一步只需训练剩余部分。\n* 损失函数为输入与目标之间的重构误差（L2距离）。\n* 数据集：\n    * 目标1（匿名女性）：[Arctic](http:\u002F\u002Fwww.festvox.org\u002Fcmu_arctic\u002F)数据集（公开）\n    * 目标2（凯特·温斯莱特）：她朗读的超过2小时有声书语句（私有）\n* 在从频谱图还原音频时，使用Griffin-Lim算法进行重建。\n\n## 实现细节\n### 要求\n* Python 2.7\n* TensorFlow ≥ 1.1\n* NumPy ≥ 1.11.1\n* Librosa == 0.5.1\n\n### 设置\n* 采样率：16,000 Hz\n* 窗长：25 ms\n* 步长：5 ms\n\n### 流程\n* 训练阶段：Net1和Net2需依次训练。\n  * 训练1（训练Net1）：\n    * 运行`train1.py`进行训练，运行`eval1.py`进行测试。\n  * 训练2（训练Net2）：\n    * 运行`train2.py`进行训练，运行`eval2.py`进行测试。\n      * 训练2必须在训练1完成后进行！\n* 转换阶段：将数据前向传播至Net2。\n    * 运行`convert.py`以获取结果样本。\n    * 在TensorBoard的音频标签页中聆听这些样本。\n    * 查看TensorBoard图像标签页中的音素分布可视化。\n      * 横轴表示音素类别，纵轴表示时间步。\n      * 横轴的第一个类别代表静音。\n\n\u003Cp align=\"center\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fandabi_deep-voice-conversion_readme_926bc587f942.png\" width=\"30%\">\u003C\u002Fp>\n\n## 小贴士（项目经验总结）\n* 窗长和步长必须足够小，以便每个窗口只包含一个音素。\n* 显然，Net1和Net2的采样率、窗长和步长必须保持一致。\n* 在进行ISTFT（频谱图转波形）之前，对预测的频谱图施加1.0到2.0次幂的增强，有助于去除噪声。\n* 在Net1中对softmax应用温度参数似乎作用不大。\n* 我个人认为，Net1（音素分类）的准确性不必过于完美。\n  * 只要Net1的分类准确率达到一定水平，Net2就能接近最优效果。\n\n## 参考文献\n* [\"无平行数据训练下的多对一语音转换中的音素后验图\"](https:\u002F\u002Fwww.researchgate.net\u002Fpublication\u002F307434911_Phonetic_posteriorgrams_for_many-to-one_voice_conversion_without_parallel_data_training)，2016年IEEE多媒体与展览国际会议（ICME）\n* [\"TACOTRON：迈向端到端语音合成\"](https:\u002F\u002Farxiv.org\u002Fabs\u002F1703.10135)，提交至2017年Interspeech会议","# deep-voice-conversion 快速上手指南\n\n本项目旨在实现非平行数据的语音转换（Voice Style Transfer），即仅利用目标说话人的音频波形，将任意源说话人的声音转换为目标风格（例如模仿凯特·温斯莱特 Kate Winslet 的声音）。模型包含两个核心模块：Net1（音素分类器）和 Net2（语音合成器），需按顺序训练。\n\n## 环境准备\n\n在开始之前，请确保您的系统满足以下要求。本项目基于 Python 2.7 开发，依赖特定的深度学习库。\n\n*   **操作系统**: Linux \u002F macOS (Windows 需配置相应环境)\n*   **Python 版本**: 2.7\n*   **核心依赖**:\n    *   TensorFlow >= 1.1\n    *   NumPy >= 1.11.1\n    *   Librosa == 0.5.1\n\n> **注意**：由于项目较老且指定了 Python 2.7，建议在独立的虚拟环境（如 `virtualenv` 或 `conda`）中运行，以避免与现有 Python 3 环境冲突。国内用户可使用清华源或阿里源加速 pip 包安装。\n\n## 安装步骤\n\n1.  **克隆项目代码**\n    ```bash\n    git clone https:\u002F\u002Fgithub.com\u002Fandabi\u002Fdeep-voice-conversion.git\n    cd deep-voice-conversion\n    ```\n\n2.  **安装依赖库**\n    建议先升级 pip 并指定国内镜像源安装依赖：\n    ```bash\n    pip install -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple tensorflow>=1.1 numpy>=1.11.1 librosa==0.5.1\n    ```\n    *注：若自动安装失败，可能需要手动安装 `scipy` 和 `soundfile` 等底层音频处理库。*\n\n3.  **准备数据集**\n    *   **Net1 训练**: 需要 [TIMIT 数据集](https:\u002F\u002Fcatalog.ldc.upenn.edu\u002FLDC93S1)（包含音素标注的多人语音）。\n    *   **Net2 训练**: 需要目标说话人的纯音频文件（如凯特·温斯莱特的有声书片段，或公开的 [Arctic 数据集](http:\u002F\u002Fwww.festvox.org\u002Fcmu_arctic\u002F) 中的特定说话人数据）。\n    *   请将数据整理后放置于项目指定的数据目录中（具体路径需在代码配置文件中调整，默认通常位于 `data\u002F` 下）。\n\n## 基本使用\n\n本项目的运行流程分为三个阶段：训练音素分类器 (Net1)、训练语音合成器 (Net2)、执行语音转换。必须严格按顺序执行。\n\n### 1. 训练 Net1 (音素分类器)\n首先训练用于将语音频谱映射为音素分布的分类网络。\n```bash\n# 训练 Net1\npython train1.py\n\n# 评估 Net1 (可选)\npython eval1.py\n```\n*训练完成后，模型将具备将任意语音分解为 60 类英语音素的能力。*\n\n### 2. 训练 Net2 (语音合成器)\n在 Net1 训练完成后，利用目标说话人的数据训练合成网络。Net2 内部会调用已训练好的 Net1。\n```bash\n# 训练 Net2 (必须在 Train1 完成后执行)\npython train2.py\n\n# 评估 Net2 (可选)\npython eval2.py\n```\n*此阶段通过重建误差（L2 distance）优化，使模型学会用目标音色还原语音。*\n\n### 3. 执行语音转换\n使用训练好的模型将新的源语音转换为目标说话人的声音。\n```bash\n# 执行转换\npython convert.py\n```\n\n### 4. 查看结果\n转换生成的音频样本可通过 TensorBoard 直接收听和可视化：\n1.  启动 TensorBoard：\n    ```bash\n    tensorboard --logdir=.\u002Flogs\n    ```\n2.  在浏览器打开指定地址（通常为 `http:\u002F\u002Flocalhost:6006`）。\n3.  **Audio 标签页**: 点击播放按钮试听转换后的语音样本。\n4.  **Images 标签页**: 查看音素分布可视化图（横轴为音素类别，纵轴为时间步，第一类代表静音）。\n\n---\n**参数提示**：默认采样率为 16,000Hz，窗口长度 25ms，跳跃长度 5ms。如需修改，请在脚本中调整相应设置，并确保 Net1 和 Net2 的参数保持一致。","一家小型独立游戏工作室正在开发一款叙事驱动的角色扮演游戏，需要为数十个 NPC 生成具有独特声线的语音对白，但预算无法承担聘请多位专业配音演员的费用。\n\n### 没有 deep-voice-conversion 时\n- **成本高昂**：必须按句付费聘请大量不同音色的配音演员，导致音频制作预算严重超支。\n- **数据依赖强**：若想模仿特定明星音色，传统方法需要源说话人和目标说话人朗读完全相同句子的“平行数据”，采集和对齐难度极大。\n- **风格单一**：受限于现有团队成员的嗓音，游戏内角色声音缺乏辨识度，难以营造丰富的听觉沉浸感。\n- **迭代缓慢**：每次修改剧本台词都需要重新协调录音档期，严重拖慢开发进度。\n\n### 使用 deep-voice-conversion 后\n- **大幅降本**：仅需录制一名基础配音员的干音，即可通过模型将其转换为凯特·温斯莱特等多种目标音色，无需重复聘请多人。\n- **突破数据限制**：利用其非平行数据训练特性，只需收集目标音色的公开音频（如有声书片段）和少量通用语音数据，即可实现高质量的音色迁移。\n- **音色定制灵活**：轻松为每个 NPC 赋予独特的“声音面具”，甚至能模拟特定知名演员的声线风格，显著提升角色塑造力。\n- **高效迭代**：剧本变更后，只需重新输入文本或基础录音，分钟级即可生成新的目标音色语音，极大加速内容生产流程。\n\ndeep-voice-conversion 通过解耦内容与音色，让中小团队也能以极低门槛实现电影级的多角色语音合成。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fandabi_deep-voice-conversion_f8819e81.png","andabi","Dabi Ahn","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fandabi_1a058078.jpg","AI\u002FML Engineer.",null,"Seoul, Korea","andabi412@gmail.com","https:\u002F\u002Fgithub.com\u002Fandabi",[85,89,92],{"name":86,"color":87,"percentage":88},"Python","#3572A5",96.5,{"name":90,"color":91,"percentage":29},"Shell","#89e051",{"name":93,"color":94,"percentage":95},"Dockerfile","#384d54",0.6,3938,833,"2026-04-11T00:45:00","MIT",4,"","未说明",{"notes":104,"python":105,"dependencies":106},"该项目基于较旧的 TensorFlow 1.x 和 Python 2.7 构建，现代环境可能需要配置兼容的虚拟环境。训练分为两个阶段：先训练 Net1（音素分类），完成后才能训练 Net2（语音合成）。目标说话人数据（如凯特·温斯莱特）需自行准备，示例中使用了超过 2 小时的有声书音频。音频还原使用 Griffin-Lim 算法。","2.7",[107,108,109],"tensorflow>=1.1","numpy>=1.11.1","librosa==0.5.1",[21],"2026-03-27T02:49:30.150509","2026-04-15T06:50:34.488812",[114,119,124,129,134,139,144],{"id":115,"question_zh":116,"answer_zh":117,"source_url":118},33815,"运行 train2.py 时出现 'You must feed a value for placeholder tensor' 错误怎么办？","在 train2.py 文件中将 queue 参数设置为 True 即可解决。具体操作是修改调用 train 函数的代码，确保传入 queue=True，或者直接在脚本中设置该标志位。多位用户确认此方法有效。","https:\u002F\u002Fgithub.com\u002Fandabi\u002Fdeep-voice-conversion\u002Fissues\u002F23",{"id":120,"question_zh":121,"answer_zh":122,"source_url":123},33816,"如何正确运行 train2.py 脚本？需要哪些参数？","完整的运行命令格式为：`python train2.py -case \u003C案例名称> -gpu \u003CGPU ID>`。例如：`python train2.py -case TIMIT_ACTUAL1 -gpu 0`。其中 `-case` 对应之前 train1.py 生成的案例名称，`-gpu` 指定使用的显卡编号。如果日志目录已存在，程序会提示选择保留 (k)、删除 (d) 或退出 (q)。","https:\u002F\u002Fgithub.com\u002Fandabi\u002Fdeep-voice-conversion\u002Fissues\u002F89",{"id":125,"question_zh":126,"answer_zh":127,"source_url":128},33817,"convert.py 转换后的语音不自然、有伪影或缺少高频信息如何解决？","这是一个已知问题。解决方案是在 convert.py 文件的 `do_convert` 函数中，在生成音频的代码行之前，插入特定的三行代码（参考 Issue #59 中的评论）。此外，确保使用的是已正确分离为 train 和 test 子文件夹的 TIMIT 数据集，并通过 TensorBoard 查看转换结果以辅助调试。","https:\u002F\u002Fgithub.com\u002Fandabi\u002Fdeep-voice-conversion\u002Fissues\u002F90",{"id":130,"question_zh":131,"answer_zh":132,"source_url":133},33818,"使用多 GPU 训练 Net2 (train2.py) 时速度反而变慢怎么办？","多 GPU 训练导致性能下降通常是因为 multiprocessing prefetch 进程占用了大量 CPU 资源。尝试以下优化方法：1. 使用 Google Perftools 中的 TCMalloc 来加速内存分配；2. 调整预取进程数量（prefetch processes）；3. 注意随着 GPU 数量增加，所需的 CPU 核心数和内存也会显著增加（例如 8 GPU 可能需要 32 核和 120GB 内存），资源不足会导致效率降低。","https:\u002F\u002Fgithub.com\u002Fandabi\u002Fdeep-voice-conversion\u002Fissues\u002F76",{"id":135,"question_zh":136,"answer_zh":137,"source_url":138},33819,"训练过程中 logdir 文件夹占用磁盘空间过大（如 40GB+）如何处理？","日志目录快速增长通常是因为保存了过多的检查点或摘要信息。建议减少训练的 epoch 数量（例如减至 500 个 epoch）以控制文件大小。如果磁盘空间不足，可以在启动脚本时选择删除旧的日志目录（在程序提示时选择 'd'），或者手动清理 cases 目录下不必要的训练记录。","https:\u002F\u002Fgithub.com\u002Fandabi\u002Fdeep-voice-conversion\u002Fissues\u002F31",{"id":140,"question_zh":141,"answer_zh":142,"source_url":143},33820,"如何在 Arctic 数据集上训练？运行 train1.py 时卡住不动怎么办？","确保数据集路径配置正确。首先检查 hparams.py 文件中 `Test1` 类下的 `data_path` 是否指向正确的数据集目录。如果使用 TIMIT 数据集，需确保拥有完整的数据集（包含 train 和 test 子文件夹），并尝试通过终端直接运行 `python train1.py timit`。如果是 Arctic 数据集，需确认 wav 文件格式及路径匹配，有时需要将文件扩展名从 'wav' 改为 'WAV' 以匹配代码逻辑。","https:\u002F\u002Fgithub.com\u002Fandabi\u002Fdeep-voice-conversion\u002Fissues\u002F26",{"id":145,"question_zh":146,"answer_zh":147,"source_url":148},33821,"运行 train1.py 时程序卡在某个步骤没有报错也没有进度怎么办？","这种情况通常与数据加载或路径配置有关。请检查：1. 数据集是否已放置在指定位置；2. hparams.py 中的路径参数是否正确；3. 文件名大小写是否匹配（例如代码期望 'WAV' 但文件是 'wav'）；4. 尝试使用提供的 shell 脚本（如 `scripts\u002Ftrain1_start.sh`）运行，并确保传递了正确的案例名称和 GPU ID。如果是新手，建议先用小规模数据测试流程是否通畅。","https:\u002F\u002Fgithub.com\u002Fandabi\u002Fdeep-voice-conversion\u002Fissues\u002F93",[]]