[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"tool-maum-ai--voicefilter":3,"similar-maum-ai--voicefilter":92},{"id":4,"github_repo":5,"name":6,"description_en":7,"description_zh":8,"ai_summary_zh":8,"readme_en":9,"readme_zh":10,"quickstart_zh":11,"use_case_zh":12,"hero_image_url":13,"owner_login":14,"owner_name":15,"owner_avatar_url":16,"owner_bio":17,"owner_company":18,"owner_location":18,"owner_email":18,"owner_twitter":18,"owner_website":19,"owner_url":20,"languages":21,"stars":30,"forks":31,"last_commit_at":32,"license":18,"difficulty_score":33,"env_os":34,"env_gpu":35,"env_ram":36,"env_deps":37,"category_tags":44,"github_topics":47,"view_count":52,"oss_zip_url":18,"oss_zip_packed_at":18,"status":53,"created_at":54,"updated_at":55,"faqs":56,"releases":91},3569,"maum-ai\u002Fvoicefilter","voicefilter","Unofficial PyTorch implementation of Google AI's VoiceFilter system","VoiceFilter 是谷歌 AI 语音分离系统的非官方 PyTorch 实现，旨在从混合音频中精准提取特定说话人的声音。它主要解决在多人交谈或背景嘈杂环境中，如何分离并增强目标人声的技术难题，让机器能“听清”指定对象的声音。\n\n该项目适合对深度学习、语音处理感兴趣的研究人员和开发者使用，可作为学习语音分离算法的参考代码，或用于构建自定义的音频处理应用。需要注意的是，由于这是作者早期学习阶段的成果，官方已提示其稳定性和准确性可能不如后续更新版本（如 VoiceFilter-Lite），建议使用者具备一定的技术甄别能力，并自行承担使用风险。\n\n技术层面，VoiceFilter 采用了基于说话人条件的频谱掩码（Speaker-Conditioned Spectrogram Masking）机制，通过识别目标说话人的声纹特征来生成掩码，从而过滤掉其他干扰声音。尽管其实验指标略低于原论文数据，但它作为早期开源实现，为社区提供了宝贵的探索基础。对于寻求更成熟方案的用户，官方推荐参考谷歌后续发布的改进版本或其他更完善的开源项目。","# VoiceFilter\n\n## Note from Seung-won (2020.10.25)\n\nHi everyone! It's Seung-won from MINDs Lab, Inc.\nIt's been a long time since I've released this open-source,\nand I didn't expect this repository to grab such a great amount of attention for a long time.\nI would like to thank everyone for giving such attention, and also Mr. Quan Wang (the first author of the VoiceFilter paper) for referring this project in his paper.\n\nActually, this project was done by me when it was only 3 months after I started studying deep learning & speech separation without a supervisor in the relevant field.\nBack then, I didn't know what is a power-law compression, and the correct way to validate\u002Ftest the models.\nNow that I've spent more time on deep learning & speech since then (I also wrote a paper published at [Interspeech 2020](https:\u002F\u002Farxiv.org\u002Fabs\u002F2005.03295) 😊),\nI can observe some obvious mistakes that I've made.\nThose issues were kindly raised by GitHub users; please refer to the\n[Issues](https:\u002F\u002Fgithub.com\u002Fmindslab-ai\u002Fvoicefilter\u002Fissues?q=is%3Aissue+) and [Pull Requests](https:\u002F\u002Fgithub.com\u002Fmindslab-ai\u002Fvoicefilter\u002Fpulls) for that.\nThat being said, this repository can be quite unreliable,\nand I would like to remind everyone to use this code at their own risk (as specified in LICENSE).\n\nUnfortunately, I can't afford extra time on revising this project or reviewing the Issues \u002F Pull Requests.\nInstead, I would like to offer some pointers to newer, more reliable resources:\n\n- [VoiceFilter-Lite](https:\u002F\u002Farxiv.org\u002Fabs\u002F2009.04323):\nThis is a newer version of VoiceFilter presented at Interspeech 2020, which is also written by Mr. Quan Wang (and his colleagues at Google).\nI highly recommend checking this paper, since it focused on a more realistic situation where VoiceFilter is needed.\n- [List of VoiceFilter implementation available on GitHub](https:\u002F\u002Fpaperswithcode.com\u002Fpaper\u002Fvoicefilter-targeted-voice-separation-by):\nIn March 2019, this repository was the only available open-source implementation of VoiceFilter.\nHowever, much better implementations that deserve more attention became available across GitHub.\nPlease check them, and choose the one that meets your demand.\n- [PyTorch Lightning](https:\u002F\u002Fwww.pytorchlightning.ai\u002F):\nBack in 2019, I could not find a great deep-learning project template for myself,\nso I and my colleagues had used this project as a template for other new projects.\nFor people who are searching for such project template, I would like to strongly recommend PyTorch Lightning.\nEven though I had done a lot of effort into developing my own template during 2019\n([VoiceFilter](https:\u002F\u002Fgithub.com\u002Fmindslab-ai\u002Fvoicefilter) -> [RandWireNN](https:\u002F\u002Fgithub.com\u002Fseungwonpark\u002FRandWireNN)\n-> [MelNet](https:\u002F\u002Fgithub.com\u002FDeepest-Project\u002FMelNet) -> [MelGAN](https:\u002F\u002Fgithub.com\u002Fseungwonpark\u002Fmelgan)),\nI found PyTorch Lightning much better than my own template.\n\nThanks for reading, and I wish everyone good health during the global pandemic situation.\n\nBest regards, Seung-won Park\n\n---\n\nUnofficial PyTorch implementation of Google AI's:\n[VoiceFilter: Targeted Voice Separation by Speaker-Conditioned Spectrogram Masking](https:\u002F\u002Farxiv.org\u002Fabs\u002F1810.04826).\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmaum-ai_voicefilter_readme_2981c86d7a99.png)\n\n## Result\n\n- Training took about 20 hours on AWS p3.2xlarge(NVIDIA V100).\n\n### Audio Sample\n\n- Listen to audio sample at webpage: http:\u002F\u002Fswpark.me\u002Fvoicefilter\u002F\n\n\n### Metric\n\n| Median SDR             | Paper | Ours |\n| ---------------------- | ----- | ---- |\n| before VoiceFilter     |  2.5  |  1.9 |\n| after VoiceFilter      | 12.6  | 10.2 |\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmaum-ai_voicefilter_readme_e99f8680461c.png)\n\n- SDR converged at 10, which is slightly lower than paper's.\n\n\n## Dependencies\n\n1. Python and packages\n\n    This code was tested on Python 3.6 with PyTorch 1.0.1.\n    Other packages can be installed by:\n\n    ```bash\n    pip install -r requirements.txt\n    ```\n\n1. Miscellaneous \n\n    [ffmpeg-normalize](https:\u002F\u002Fgithub.com\u002Fslhck\u002Fffmpeg-normalize) is used for resampling and normalizing wav files.\n    See README.md of [ffmpeg-normalize](https:\u002F\u002Fgithub.com\u002Fslhck\u002Fffmpeg-normalize\u002Fblob\u002Fmaster\u002FREADME.md) for installation.\n\n## Prepare Dataset\n\n1. Download LibriSpeech dataset\n\n    To replicate VoiceFilter paper, get LibriSpeech dataset at http:\u002F\u002Fwww.openslr.org\u002F12\u002F.\n    `train-clear-100.tar.gz`(6.3G) contains speech of 252 speakers, and `train-clear-360.tar.gz`(23G) contains 922 speakers.\n    You may use either, but the more speakers you have in dataset, the more better VoiceFilter will be.\n\n1. Resample & Normalize wav files\n\n    First, unzip `tar.gz` file to desired folder:\n    ```bash\n    tar -xvzf train-clear-360.tar.gz\n    ```\n\n    Next, copy `utils\u002Fnormalize-resample.sh` to root directory of unzipped data folder. Then:\n    ```bash\n    vim normalize-resample.sh # set \"N\" as your CPU core number.\n    chmod a+x normalize-resample.sh\n    .\u002Fnormalize-resample.sh # this may take long\n    ```\n\n1. Edit `config.yaml`\n\n    ```bash\n    cd config\n    cp default.yaml config.yaml\n    vim config.yaml\n    ```\n\n1. Preprocess wav files\n\n    In order to boost training speed, perform STFT for each files before training by:\n    ```bash\n    python generator.py -c [config yaml] -d [data directory] -o [output directory] -p [processes to run]\n    ```\n    This will create 100,000(train) + 1000(test) data. (About 160G)\n\n\n## Train VoiceFilter\n\n1. Get pretrained model for speaker recognition system\n\n    VoiceFilter utilizes speaker recognition system ([d-vector embeddings](https:\u002F\u002Fgoogle.github.io\u002Fspeaker-id\u002Fpublications\u002FGE2E\u002F)).\n    Here, we provide pretrained model for obtaining d-vector embeddings.\n\n    This model was trained with [VoxCeleb2](http:\u002F\u002Fwww.robots.ox.ac.uk\u002F~vgg\u002Fdata\u002Fvoxceleb\u002Fvox2.html) dataset,\n    where utterances are randomly fit to time length [70, 90] frames.\n    Tests are done with window 80 \u002F hop 40 and have shown equal error rate about 1%.\n    Data used for test were selected from first 8 speakers of [VoxCeleb1](http:\u002F\u002Fwww.robots.ox.ac.uk\u002F~vgg\u002Fdata\u002Fvoxceleb\u002Fvox1.html) test dataset, where 10 utterances per each speakers are randomly selected.\n    \n    **Update**: Evaluation on VoxCeleb1 selected pair showed 7.4% EER.\n    \n    The model can be downloaded at [this GDrive link](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1YFmhmUok-W76JkrfA0fzQt3c-ZsfiwfL\u002Fview?usp=sharing).\n\n1. Run\n\n    After specifying `train_dir`, `test_dir` at `config.yaml`, run:\n    ```bash\n    python trainer.py -c [config yaml] -e [path of embedder pt file] -m [name]\n    ```\n    This will create `chkpt\u002Fname` and `logs\u002Fname` at base directory(`-b` option, `.` in default)\n\n1. View tensorboardX\n\n    ```bash\n    tensorboard --logdir .\u002Flogs\n    ```\n    \n    ![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmaum-ai_voicefilter_readme_cbabb850c1bf.png)\n\n1. Resuming from checkpoint\n\n    ```bash\n    python trainer.py -c [config yaml] --checkpoint_path [chkpt\u002Fname\u002Fchkpt_{step}.pt] -e [path of embedder pt file] -m name\n    ```\n\n## Evaluate\n\n```bash\npython inference.py -c [config yaml] -e [path of embedder pt file] --checkpoint_path [path of chkpt pt file] -m [path of mixed wav file] -r [path of reference wav file] -o [output directory]\n```\n\n## Possible improvments\n\n- Try power-law compressed reconstruction error as loss function, instead of MSE. (See [#14](https:\u002F\u002Fgithub.com\u002Fmindslab-ai\u002Fvoicefilter\u002Fissues\u002F14))\n\n## Author\n\n[Seungwon Park](http:\u002F\u002Fswpark.me) at MINDsLab (yyyyy@snu.ac.kr, swpark@mindslab.ai)\n\n## License\n\nApache License 2.0\n\nThis repository contains codes adapted\u002Fcopied from the followings:\n- [utils\u002Fadabound.py](.\u002Futils\u002Fadabound.py) from https:\u002F\u002Fgithub.com\u002FLuolc\u002FAdaBound (Apache License 2.0)\n- [utils\u002Faudio.py](.\u002Futils\u002Faudio.py) from https:\u002F\u002Fgithub.com\u002Fkeithito\u002Ftacotron (MIT License)\n- [utils\u002Fhparams.py](.\u002Futils\u002Fhparams.py) from https:\u002F\u002Fgithub.com\u002FHarryVolek\u002FPyTorch_Speaker_Verification (No License specified)\n- [utils\u002Fnormalize-resample.sh](.\u002Futils\u002Fnormalize-resample.sh.) from https:\u002F\u002Funix.stackexchange.com\u002Fa\u002F216475\n","# VoiceFilter\n\n## 来自 Seung-won 的说明（2020年10月25日）\n\n大家好！我是来自 MINDs Lab, Inc. 的 Seung-won。\n距离我发布这个开源项目已经过去很久了，我也从未想过这个仓库会持续受到如此多的关注。\n在此感谢各位的关注，同时也感谢 Quan Wang 先生（VoiceFilter 论文的第一作者）在他的论文中引用了本项目。\n\n实际上，这个项目是我刚开始学习深度学习和语音分离仅三个月时完成的，当时并没有相关领域的导师指导。\n那时我对功率律压缩以及模型验证和测试的正确方法都一无所知。\n如今，经过这段时间在深度学习和语音处理领域的深入研究（我还撰写了一篇发表于 [Interspeech 2020](https:\u002F\u002Farxiv.org\u002Fabs\u002F2005.03295) 的论文 😊），我能够清楚地看到自己当初犯下的几个明显错误。\n这些问题是 GitHub 用户们善意指出的；请参阅\n[Issues](https:\u002F\u002Fgithub.com\u002Fmindslab-ai\u002Fvoicefilter\u002Fissues?q=is%3Aissue+) 和 [Pull Requests](https:\u002F\u002Fgithub.com\u002Fmindslab-ai\u002Fvoicefilter\u002Fpulls) 以了解详情。\n话虽如此，这个仓库的内容可能并不十分可靠，\n因此我提醒大家使用此代码需自行承担风险（如 LICENSE 文件中所述）。\n\n遗憾的是，我目前无法抽出额外时间来修订该项目或审阅 Issues 和 Pull Requests。\n相反，我想为大家推荐一些更新、更可靠的资源：\n\n- [VoiceFilter-Lite](https:\u002F\u002Farxiv.org\u002Fabs\u002F2009.04323)：\n这是在 Interspeech 2020 上提出的 VoiceFilter 新版本，同样由 Quan Wang 先生及其谷歌同事共同完成。\n我强烈建议大家阅读这篇论文，因为它聚焦于更贴近实际应用场景的语音分离需求。\n- [GitHub 上可用的 VoiceFilter 实现列表](https:\u002F\u002Fpaperswithcode.com\u002Fpaper\u002Fvoicefilter-targeted-voice-separation-by)：\n2019年3月，这个仓库曾是 VoiceFilter 唯一可用的开源实现。\n然而，此后 GitHub 上出现了许多更优秀、更值得关注的实现。\n请大家查看并选择适合自身需求的实现。\n- [PyTorch Lightning](https:\u002F\u002Fwww.pytorchlightning.ai\u002F)：\n2019 年时，我找不到一个理想的深度学习项目模板，\n于是我和同事们便将该项目用作其他新项目的模板。\n对于正在寻找此类项目模板的人士，我强烈推荐 PyTorch Lightning。\n尽管我在 2019 年期间投入大量精力开发了自己的模板（\n[VoiceFilter](https:\u002F\u002Fgithub.com\u002Fmindslab-ai\u002Fvoicefilter) -> [RandWireNN](https:\u002F\u002Fgithub.com\u002Fseungwonpark\u002FRandWireNN)\n-> [MelNet](https:\u002F\u002Fgithub.com\u002FDeepest-Project\u002FMelNet) -> [MelGAN](https:\u002F\u002Fgithub.com\u002Fseungwonpark\u002Fmelgan)），\n但我发现 PyTorch Lightning 远胜于我的自定义模板。\n\n感谢您的阅读，并祝愿大家在全球疫情之下身体健康。\n\n此致敬礼，Seung-won Park\n\n---\n\nGoogle AI 的非官方 PyTorch 实现：\n[VoiceFilter：基于说话人条件谱图掩码的目标语音分离](https:\u002F\u002Farxiv.org\u002Fabs\u002F1810.04826)。\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmaum-ai_voicefilter_readme_2981c86d7a99.png)\n\n## 结果\n\n- 在 AWS p3.2xlarge（NVIDIA V100）上训练耗时约 20 小时。\n\n### 音频示例\n\n- 请在网页上收听音频示例：http:\u002F\u002Fswpark.me\u002Fvoicefilter\u002F\n\n### 指标\n\n| 中位数 SDR             | 论文 | 我们 |\n| ---------------------- | ----- | ---- |\n| 应用 VoiceFilter 前     |  2.5  |  1.9 |\n| 应用 VoiceFilter 后      | 12.6  | 10.2 |\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmaum-ai_voicefilter_readme_e99f8680461c.png)\n\n- SDR 收敛值为 10，略低于论文中的结果。\n\n## 依赖项\n\n1. Python 及相关包\n\n    本代码已在 Python 3.6 和 PyTorch 1.0.1 环境下测试通过。\n    其他依赖包可通过以下命令安装：\n\n    ```bash\n    pip install -r requirements.txt\n    ```\n\n1. 其他工具\n\n    [ffmpeg-normalize](https:\u002F\u002Fgithub.com\u002Fslhck\u002Fffmpeg-normalize) 用于重采样和归一化 WAV 文件。\n    安装方法请参考 [ffmpeg-normalize](https:\u002F\u002Fgithub.com\u002Fslhck\u002Fffmpeg-normalize\u002Fblob\u002Fmaster\u002FREADME.md) 的 README 文件。\n\n## 数据准备\n\n1. 下载 LibriSpeech 数据集\n\n    为复现 VoiceFilter 论文，需从 http:\u002F\u002Fwww.openslr.org\u002F12\u002F 获取 LibriSpeech 数据集。\n    `train-clear-100.tar.gz`（6.3G）包含 252 名说话人的语音，而 `train-clear-360.tar.gz`（23G）则包含 922 名说话人。\n    两者均可使用，但数据集中说话人越多，VoiceFilter 的效果通常越好。\n\n1. 重采样与归一化 WAV 文件\n\n    首先，将 `.tar.gz` 文件解压到目标文件夹：\n    ```bash\n    tar -xvzf train-clear-360.tar.gz\n    ```\n\n    接着，将 `utils\u002Fnormalize-resample.sh` 复制到解压后的数据文件夹根目录。然后执行：\n    ```bash\n    vim normalize-resample.sh # 将 \"N\" 设置为你 CPU 的核心数。\n    chmod a+x normalize-resample.sh\n    .\u002Fnormalize-resample.sh # 这可能需要较长时间\n    ```\n\n1. 编辑 `config.yaml`\n\n    ```bash\n    cd config\n    cp default.yaml config.yaml\n    vim config.yaml\n    ```\n\n1. 预处理 WAV 文件\n\n    为了加快训练速度，可在训练前对每个文件进行 STFT 处理：\n    ```bash\n    python generator.py -c [config yaml] -d [数据目录] -o [输出目录] -p [进程数]\n    ```\n    这将生成 10 万个训练样本和 1 千个测试样本。（约 160G）\n\n## 训练 VoiceFilter\n\n1. 获取预训练的说话人识别模型\n\n    VoiceFilter 使用说话人识别系统（[d-vector 嵌入](https:\u002F\u002Fgoogle.github.io\u002Fspeaker-id\u002Fpublications\u002FGE2E\u002F)）。\n    在这里，我们提供了一个用于获取 d-vector 嵌入的预训练模型。\n\n    该模型是在 [VoxCeleb2](http:\u002F\u002Fwww.robots.ox.ac.uk\u002F~vgg\u002Fdata\u002Fvoxceleb\u002Fvox2.html) 数据集上训练的，\n    其中语音片段被随机截取为 [70, 90] 帧长度。\n    测试采用窗口大小 80、步长 40，结果显示等错误率约为 1%。\n    测试数据选自 [VoxCeleb1](http:\u002F\u002Fwww.robots.ox.ac.uk\u002F~vgg\u002Fdata\u002Fvoxceleb\u002Fvox1.html) 测试数据集的前 8 名说话人，每位说话人随机选取 10 段语音。\n\n    **更新**：对 VoxCeleb1 选定配对的评估显示 EER 为 7.4%。\n\n    该模型可从 [此 GDrive 链接](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1YFmhmUok-W76JkrfA0fzQt3c-ZsfiwfL\u002Fview?usp=sharing) 下载。\n\n1. 运行\n\n    在 `config.yaml` 中指定 `train_dir` 和 `test_dir` 后，运行：\n    ```bash\n    python trainer.py -c [config yaml] -e [嵌入器 PT 文件路径] -m [名称]\n    ```\n    这将在基础目录（`-b` 选项，默认为 `.`）下生成 `chkpt\u002Fname` 和 `logs\u002Fname` 目录。\n\n1. 查看 tensorboardX\n\n    ```bash\n    tensorboard --logdir .\u002Flogs\n    ```\n    \n    ![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmaum-ai_voicefilter_readme_cbabb850c1bf.png)\n\n1. 从检查点恢复训练\n\n    ```bash\n    python trainer.py -c [config yaml] --checkpoint_path [chkpt\u002Fname\u002Fchkpt_{step}.pt] -e [嵌入器 PT 文件路径] -m 名称\n    ```\n\n## 评估\n\n```bash\npython inference.py -c [配置文件 yaml] -e [嵌入模型 pt 文件路径] --checkpoint_path [检查点 pt 文件路径] -m [混合音频文件路径] -r [参考音频文件路径] -o [输出目录]\n```\n\n## 可能的改进\n\n- 尝试使用幂律压缩的重构误差作为损失函数，而不是均方误差。（参见 [#14](https:\u002F\u002Fgithub.com\u002Fmindslab-ai\u002Fvoicefilter\u002Fissues\u002F14)）\n\n## 作者\n\n[朴承元](http:\u002F\u002Fswpark.me) 于 MINDsLab（yyyyy@snu.ac.kr, swpark@mindslab.ai）\n\n## 许可证\n\nApache 2.0 许可证\n\n本仓库包含从以下项目改编或复制的代码：\n- 来自 https:\u002F\u002Fgithub.com\u002FLuolc\u002FAdaBound 的 [utils\u002Fadabound.py](.\u002Futils\u002Fadabound.py)（Apache 2.0 许可证）\n- 来自 https:\u002F\u002Fgithub.com\u002Fkeithito\u002Ftacotron 的 [utils\u002Faudio.py](.\u002Futils\u002Faudio.py)（MIT 许可证）\n- 来自 https:\u002F\u002Fgithub.com\u002FHarryVolek\u002FPyTorch_Speaker_Verification 的 [utils\u002Fhparams.py](.\u002Futils\u002Fhparams.py)（未指定许可证）\n- 来自 https:\u002F\u002Funix.stackexchange.com\u002Fa\u002F216475 的 [utils\u002Fnormalize-resample.sh](.\u002Futils\u002Fnormalize-resample.sh.)","# VoiceFilter 快速上手指南\n\nVoiceFilter 是 Google AI 提出的“基于说话人条件的语谱图掩蔽目标语音分离”技术的非官方 PyTorch 实现。该工具可用于从混合音频中提取特定说话人的声音。\n\n> **⚠️ 重要提示**：本仓库为早期实验性项目，作者已指出其中存在已知缺陷且不再维护。生产环境建议参考更新的 [VoiceFilter-Lite](https:\u002F\u002Farxiv.org\u002Fabs\u002F2009.04323) 或其他更成熟的实现。以下指南仅用于学习和复现研究。\n\n## 1. 环境准备\n\n### 系统要求\n- **操作系统**: Linux (推荐) 或 macOS\n- **Python**: 3.6 (代码基于此版本测试)\n- **GPU**: 推荐使用 NVIDIA GPU (训练需较大显存，原作者使用 V100)\n\n### 前置依赖\n在开始之前，请确保系统已安装以下基础工具：\n- **FFmpeg**: 用于音频处理\n- **ffmpeg-normalize**: 用于音频重采样和标准化\n\n**安装 ffmpeg-normalize:**\n```bash\npip install ffmpeg-normalize\n# 注意：仍需确保系统层面安装了 ffmpeg (例如 Ubuntu: sudo apt-get install ffmpeg)\n```\n\n## 2. 安装步骤\n\n### 2.1 克隆项目与安装 Python 依赖\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fmindslab-ai\u002Fvoicefilter.git\ncd voicefilter\npip install -r requirements.txt\n# 国内用户建议使用清华源加速安装：\n# pip install -r requirements.txt -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n### 2.2 下载预训练说话人识别模型\nVoiceFilter 需要预先训练好的说话人嵌入模型（d-vector embeddings）来识别目标说话人。\n\n1. 手动下载模型文件：[Google Drive 链接](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1YFmhmUok-W76JkrfA0fzQt3c-ZsfiwfL\u002Fview?usp=sharing)\n2. 将下载的文件（例如 `embedder.pt`）放置在项目根目录或指定路径。\n\n### 2.3 数据集准备 (可选，如需重新训练)\n若仅需使用已有模型进行推理，可跳过此步。若需复现训练过程：\n\n1. **下载 LibriSpeech 数据集**:\n   访问 http:\u002F\u002Fwww.openslr.org\u002F12\u002F 下载 `train-clear-360.tar.gz` (推荐) 或 `train-clear-100.tar.gz`。\n\n2. **解压与标准化**:\n   ```bash\n   tar -xvzf train-clear-360.tar.gz\n   cp utils\u002Fnormalize-resample.sh \u003C解压后的数据根目录>\u002F\n   cd \u003C解压后的数据根目录>\u002F\n   \n   # 编辑脚本，将 \"N\" 修改为你的 CPU 核心数\n   vim normalize-resample.sh \n   \n   chmod a+x normalize-resample.sh\n   .\u002Fnormalize-resample.sh\n   ```\n\n3. **生成频谱特征 (加速训练)**:\n   ```bash\n   # 修改 config\u002Fdefault.yaml 为 config\u002Fconfig.yaml 并配置数据路径\n   cd config\n   cp default.yaml config.yaml\n   vim config.yaml \n   \n   # 返回根目录执行预处理 (替换实际路径)\n   python generator.py -c config\u002Fconfig.yaml -d \u003C数据目录> -o \u003C输出目录> -p \u003C进程数>\n   ```\n\n## 3. 基本使用\n\n以下是使用预训练模型进行语音分离的最简流程。\n\n### 3.1 配置文件设置\n复制并编辑配置文件，确保 `train_dir` 和 `test_dir` 指向正确的数据路径（如果只做推理，主要检查音频加载相关配置是否默认即可，通常无需大幅修改）。\n\n```bash\ncp config\u002Fdefault.yaml config\u002Fconfig.yaml\nvim config\u002Fconfig.yaml\n```\n\n### 3.2 执行语音分离 (Inference)\n准备两个音频文件：\n- **混合音频 (`mixed.wav`)**: 包含多人说话的录音。\n- **参考音频 (`reference.wav`)**: 仅包含你想提取的那位说话人的声音（用于提取声纹特征）。\n\n运行以下命令进行分离：\n\n```bash\npython inference.py \\\n  -c config\u002Fconfig.yaml \\\n  -e \u003Cpath_to_embedder.pt> \\\n  --checkpoint_path \u003Cpath_to_your_checkpoint.pt> \\\n  -m \u003Cpath_to_mixed.wav> \\\n  -r \u003Cpath_to_reference.wav> \\\n  -o .\u002Foutput\n```\n\n**参数说明：**\n- `-e`: 下载的预训练说话人识别模型路径 (`.pt` 文件)。\n- `--checkpoint_path`: VoiceFilter 主模型的检查点路径。\n  - *注*: 如果你没有自己训练的模型，原作者未直接提供主模型权重下载，通常需要先按“训练”步骤跑通或直接使用社区提供的权重。若仅测试代码流程，需确保此路径存在有效文件。\n- `-m`: 输入的混合音频路径。\n- `-r`: 参考音频路径（目标说话人）。\n- `-o`: 输出目录。\n\n### 3.3 查看结果\n处理完成后，分离出的目标人声将保存在 `-o` 指定的输出目录中。你可以使用任何播放器试听效果。\n\n---\n*本指南基于开源项目 README 整理，具体性能表现受数据集质量和超参数影响较大。*","某新闻机构的多媒体编辑正在处理一段在嘈杂咖啡馆录制的独家采访音频，背景人声严重干扰了受访者的清晰度。\n\n### 没有 voicefilter 时\n- 背景中其他顾客的交谈声与受访者声音频率重叠，传统降噪滤波器无法分离，导致关键信息模糊不清。\n- 为了听清内容，编辑不得不花费数小时手动逐帧修剪音频波形，效率极低且容易破坏语音自然度。\n- 由于信噪比（SDR）过低（约 1.9），直接发布会导致听众难以理解核心观点，严重影响新闻报道的专业性。\n- 缺乏针对特定说话人的分离手段，只能整体压低背景音量，使得受访者声音也显得沉闷失真。\n\n### 使用 voicefilter 后\n- 利用基于说话人条件的频谱掩码技术，voicefilter 精准提取了受访者的声纹特征，将背景人声有效剥离。\n- 自动化处理流程将原本数小时的手工工作缩短至几分钟，且无需复杂的参数微调即可得到高质量结果。\n- 分离后的音频信噪比显著提升至 10.2 左右，受访者语音清晰明亮，达到了可发布的广播级标准。\n- 在去除干扰的同时，voicefilter 完整保留了受访者原本的音色和语调情感，避免了机械化的失真听感。\n\nvoicefilter 通过深度学习实现了针对特定说话人的高精度语音分离，让复杂环境下的音频清洗变得高效且专业。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmaum-ai_voicefilter_e99f8680.png","maum-ai","maum.ai","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fmaum-ai_65d1430b.png","maum.ai provides AI platform and various AI engines based on deep machine learning.",null,"http:\u002F\u002Fmaum.ai\u002F","https:\u002F\u002Fgithub.com\u002Fmaum-ai",[22,26],{"name":23,"color":24,"percentage":25},"Python","#3572A5",98.4,{"name":27,"color":28,"percentage":29},"Shell","#89e051",1.6,1197,242,"2026-03-31T06:40:41",4,"Linux","训练需要 NVIDIA GPU (测试环境为 AWS p3.2xlarge, NVIDIA V100)，未明确说明显存大小及 CUDA 版本","未说明 (预处理数据集约 160GB，建议大内存)",{"notes":38,"python":39,"dependencies":40},"该项目为非官方实现且作者已声明代码可能存在不可靠之处，建议使用需自担风险。运行前需下载预训练的说话人识别模型 (d-vector embeddings)。数据预处理阶段需要使用 ffmpeg-normalize 进行重采样和归一化，并需预先计算 STFT 特征 (约占用 160GB 存储空间) 以加速训练。","3.6",[41,42,43],"torch==1.0.1","ffmpeg-normalize","tensorboardX",[45,46],"音频","开发框架",[48,49,50,51,6],"source-separation","audio-separation","speech-separation","pytorch",2,"ready","2026-03-27T02:49:30.150509","2026-04-06T08:45:14.507564",[57,62,67,72,77,82,86],{"id":58,"question_zh":59,"answer_zh":60,"source_url":61},16341,"为什么我的训练 SDR 指标无法达到论文中的效果（如收敛到 10dB）？","这通常与数据集的选择有关。根据社区反馈，如果在训练中包含了 'train-other-500' 子集，可能会导致 SDR 表现不佳。建议仅使用 'train-clean-100' 和 'train-clean-360' 进行训练，并使用 'dev-clean' 进行测试，排除 'train-other-500'、'dev-other' 和 'test-other' 等含噪声较大的子集。此外，测试损失曲线可能会因为评估数据量不足而出现波动，属于正常现象。","https:\u002F\u002Fgithub.com\u002Fmaum-ai\u002Fvoicefilter\u002Fissues\u002F5",{"id":63,"question_zh":64,"answer_zh":65,"source_url":66},16342,"推理长音频时出现 CUDA 显存溢出（OOM）错误怎么办？","由于无法一次性处理整个长音频，建议采取以下两种策略：\n1. 使用切片策略：将长音频切割成多个片段，依次或分批进行处理。\n2. 优化代码：在推理代码中加入 `torch.no_grad()` 上下文管理器，这可以将显存使用量减少约一半。\n3. 调整配置：如果是批量处理导致的溢出，可以尝试在 config.yaml 文件中减小 `batch_size` 的值（例如设置为 6）。","https:\u002F\u002Fgithub.com\u002Fmaum-ai\u002Fvoicefilter\u002Fissues\u002F4",{"id":68,"question_zh":69,"answer_zh":70,"source_url":71},16343,"项目是否提供预训练好的最终模型检查点（checkpoint）下载？","目前官方没有公开最终的模型检查点文件供直接下载。维护者建议用户可以尝试其公司提供的 VoiceFilter Web 演示和 API 服务（首月免费），或者自行使用提供的代码和数据集进行训练。","https:\u002F\u002Fgithub.com\u002Fmaum-ai\u002Fvoicefilter\u002Fissues\u002F7",{"id":73,"question_zh":74,"answer_zh":75,"source_url":76},16344,"如何为自己的数据集生成说话人嵌入文件（embedder.pt\u002Fd-vector）？","该项目使用的嵌入器（embedder）训练代码库是公司的专有软件， unfortunately 未能开源。因此，用户无法直接使用本项目中的代码来从头训练生成新的 embedder 模型。对于非英语数据集（如意大利语或韩语），社区反馈表明直接使用现有的预训练嵌入器模型通常也能正常工作，没有显著问题。","https:\u002F\u002Fgithub.com\u002Fmaum-ai\u002Fvoicefilter\u002Fissues\u002F8",{"id":78,"question_zh":79,"answer_zh":80,"source_url":81},16345,"运行 normalize-resample.sh 脚本时没有输出或报错，这个步骤是必须的吗？","根据维护者的最新研究，您可以直接跳过音频归一化（normalization）步骤，这对最终结果影响不大。如果运行脚本时出现关于音频时长小于 3 秒的警告，也可以忽略或直接跳过该预处理步骤。","https:\u002F\u002Fgithub.com\u002Fmaum-ai\u002Fvoicefilter\u002Fissues\u002F10",{"id":83,"question_zh":84,"answer_zh":85,"source_url":61},16346,"如何使用多张 GPU 进行加速训练？","原始代码主要针对单 GPU 设计。虽然用户询问了多 GPU 支持，但官方并未在 Issue 中提供具体的多卡并行代码片段。若需使用多卡，通常需要自行修改训练循环以支持 `DataParallel` 或 `DistributedDataParallel`，或者参考其他用户分享的修改方案（如有）。目前官方未明确说明多卡训练是否会导致性能下降，建议先确保单卡运行正常。",{"id":87,"question_zh":88,"answer_zh":89,"source_url":90},16347,"SDR 曲线的起始值很低（如负值）且波动大，是否正常？","这是正常现象。测试损失曲线和 SDR 指标在训练初期可能会波动，特别是在没有对足够多的数据进行评估时。只要训练趋势整体向上，无需过度担心初始值的绝对大小或短期的波动。","https:\u002F\u002Fgithub.com\u002Fmaum-ai\u002Fvoicefilter\u002Fissues\u002F9",[],[93,104,113,121,129,141],{"id":94,"name":95,"github_repo":96,"description_zh":97,"stars":98,"difficulty_score":99,"last_commit_at":100,"category_tags":101,"status":53},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,3,"2026-04-05T11:01:52",[46,102,103],"图像","Agent",{"id":105,"name":106,"github_repo":107,"description_zh":108,"stars":109,"difficulty_score":52,"last_commit_at":110,"category_tags":111,"status":53},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 真正成长为懂上",140436,"2026-04-05T23:32:43",[46,103,112],"语言模型",{"id":114,"name":115,"github_repo":116,"description_zh":117,"stars":118,"difficulty_score":52,"last_commit_at":119,"category_tags":120,"status":53},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 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107662,"2026-04-03T11:11:01",[46,102,103],{"id":122,"name":123,"github_repo":124,"description_zh":125,"stars":126,"difficulty_score":52,"last_commit_at":127,"category_tags":128,"status":53},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",[46,112],{"id":130,"name":131,"github_repo":132,"description_zh":133,"stars":134,"difficulty_score":52,"last_commit_at":135,"category_tags":136,"status":53},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",[102,137,138,139,103,140,112,46,45],"数据工具","视频","插件","其他",{"id":142,"name":143,"github_repo":144,"description_zh":145,"stars":146,"difficulty_score":99,"last_commit_at":147,"category_tags":148,"status":53},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,"2026-04-04T04:44:48",[103,102,46,112,140]]