[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-philipperemy--deep-speaker":3,"tool-philipperemy--deep-speaker":64},[4,17,27,35,43,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},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",[13,14,15],"开发框架","图像","Agent","ready",{"id":18,"name":19,"github_repo":20,"description_zh":21,"stars":22,"difficulty_score":23,"last_commit_at":24,"category_tags":25,"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,15,26],"语言模型",{"id":28,"name":29,"github_repo":30,"description_zh":31,"stars":32,"difficulty_score":23,"last_commit_at":33,"category_tags":34,"status":16},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",[13,14,15],{"id":36,"name":37,"github_repo":38,"description_zh":39,"stars":40,"difficulty_score":23,"last_commit_at":41,"category_tags":42,"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,26],{"id":44,"name":45,"github_repo":46,"description_zh":47,"stars":48,"difficulty_score":23,"last_commit_at":49,"category_tags":50,"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",[14,51,52,53,15,54,26,13,55],"数据工具","视频","插件","其他","音频",{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":10,"last_commit_at":62,"category_tags":63,"status":16},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",[15,14,13,26,54],{"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":76,"owner_website":83,"owner_url":84,"languages":85,"stars":94,"forks":95,"last_commit_at":96,"license":97,"difficulty_score":10,"env_os":98,"env_gpu":99,"env_ram":100,"env_deps":101,"category_tags":112,"github_topics":113,"view_count":10,"oss_zip_url":117,"oss_zip_packed_at":117,"status":16,"created_at":118,"updated_at":119,"faqs":120,"releases":161},246,"philipperemy\u002Fdeep-speaker","deep-speaker","Deep Speaker: an End-to-End Neural Speaker Embedding System.","deep-speaker 是一个基于 TensorFlow\u002FKeras 实现的端到端神经说话人嵌入系统。它能够将语音片段映射到一个高维向量空间中，在这个空间里，通过余弦相似度就可以判断两段语音是否来自同一个人。\n\n这个工具主要解决了语音身份识别的问题。简单来说，当你有一句话的录音时，deep-speaker 可以把它转换成一个“声音指纹”（嵌入向量），然后用这个指纹去和数据库里的其他声音对比，从而实现说话人识别、说话人验证或说话人聚类等功能。\n\ndeep-speaker 特别适合以下用户：语音领域的研究人员可以基于它开展说话人相关的学术研究；需要开发语音身份验证功能的开发者可以直接调用它的预训练模型；甚至对语音识别感兴趣的学生也可以用它来学习深度学习在音频领域的应用。\n\n技术上，deep-speaker 采用了 ResCNN（残差卷积神经网络）架构，并提供了 Softmax 和 Softmax+Triplet 两种训练策略。在 LibriSpeech 数据集上，经过 Triplet 训练的模型准确率可达 99.7%，等错误率（EER）低至 2.5%，表现相当不错。\n\n如果想快速上手，项","deep-speaker 是一个基于 TensorFlow\u002FKeras 实现的端到端神经说话人嵌入系统。它能够将语音片段映射到一个高维向量空间中，在这个空间里，通过余弦相似度就可以判断两段语音是否来自同一个人。\n\n这个工具主要解决了语音身份识别的问题。简单来说，当你有一句话的录音时，deep-speaker 可以把它转换成一个“声音指纹”（嵌入向量），然后用这个指纹去和数据库里的其他声音对比，从而实现说话人识别、说话人验证或说话人聚类等功能。\n\ndeep-speaker 特别适合以下用户：语音领域的研究人员可以基于它开展说话人相关的学术研究；需要开发语音身份验证功能的开发者可以直接调用它的预训练模型；甚至对语音识别感兴趣的学生也可以用它来学习深度学习在音频领域的应用。\n\n技术上，deep-speaker 采用了 ResCNN（残差卷积神经网络）架构，并提供了 Softmax 和 Softmax+Triplet 两种训练策略。在 LibriSpeech 数据集上，经过 Triplet 训练的模型准确率可达 99.7%，等错误率（EER）低至 2.5%，表现相当不错。\n\n如果想快速上手，项目提供了预训练模型可以直接下载使用；如果有特定需求，也可以用自己的数据集进行微调训练。环境方面需要 TensorFlow 2.3 以上版本、较大存储空间和 NVIDIA GPU 支持。","## Deep Speaker: An End-to-End Neural Speaker Embedding System.\nUnofficial Tensorflow\u002FKeras implementation of Deep Speaker | [Paper](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1705.02304.pdf) | [Pretrained Models](https:\u002F\u002Fdrive.google.com\u002Fopen?id=18h2bmsAWrqoUMsh_FQHDDxp7ioGpcNBa).\n\nTested with Tensorflow 2.3, 2.4, 2.5 and 2.6.\n\n### Sample Results\n\nModels were trained on clean speech data. Keep in mind that the performance will be lower on noisy data. It is advised to remove silence and background noise before computing the embeddings (by using Sox for example). There is a discussion on the topic: [Silence \u002F Background Noise similarity](https:\u002F\u002Fgithub.com\u002Fphilipperemy\u002Fdeep-speaker\u002Fissues\u002F62).\n\n *Model name* | *Testing dataset* | *Num speakers* | *F* | *TPR* | *ACC* | *EER* | Training Logs | Download model\n | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- |\nResCNN Softmax trained          | [LibriSpeech](http:\u002F\u002Fwww.openslr.org\u002F12\u002F) all(*) | 2484 | 0.789 | 0.733 | 0.996 | 0.043 | [Click](https:\u002F\u002Fdocs.google.com\u002Fdocument\u002Fd\u002F1ZZjBk5TgFgaY9GgOcHaieOpiyB9lB6oTRSdk6g8FPRs) | [Click](https:\u002F\u002Fdrive.google.com\u002Fopen?id=1SJBmHpnaW1VcbFWP6JfvbT3wWP9PsqxS)\nResCNN Softmax+Triplet trained  | [LibriSpeech](http:\u002F\u002Fwww.openslr.org\u002F12\u002F) all(*) | 2484 | 0.843 | 0.825 | 0.997 | 0.025 | [Click](https:\u002F\u002Fdocs.google.com\u002Fdocument\u002Fd\u002F1mL0Jb8IpA7DOzFci71RT1OYTq7Kkw2DjTkI4BRpEzKc) | [Click](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1F9NvdrarWZNktdX9KlRYWWHDwRkip_aP)\n\n(*) all includes: dev-clean, dev-other, test-clean, test-other, train-clean-100, train-clean-360, train-other-500.\n\nThe Softmax+Triplet checkpoint is also available on the [Chinese cloud - WeiYun](https:\u002F\u002Fshare.weiyun.com\u002FV2suEUVh).\n\n### Overview\n\nDeep Speaker is a neural speaker embedding system that maps utterances to a hypersphere where speaker similarity is measured by cosine similarity. The embeddings generated by Deep Speaker can be used for many tasks, including speaker identification,\nverification, and clustering.\n\n## Getting started\n### Install dependencies\n#### Requirements\n- tensorflow>=2.0\n- keras>=2.3.1\n- python>=3.6\n```bash\npip install -r requirements.txt\n```\n\nIf you see this error: `libsndfile not found`, run this: `sudo apt-get install libsndfile-dev`.\n\n### Training\n\nThe code for training is available in this repository. It takes a bit less than a week with a GTX1070 to train the models.\n\nSystem requirements for a complete training are:\n- At least 300GB of free disk space on a fast SSD (250GB just for all the uncompressed + processed data)\n- 32GB of memory and at least 32GB of swap (can create swap with SSD space).\n- A NVIDIA GPU such as the 1080Ti.\n\n```bash\npip uninstall -y tensorflow && pip install tensorflow-gpu\n.\u002Fdeep-speaker download_librispeech    # if the download is too slow, consider replacing [wget] by [axel -n 10 -a] in download_librispeech.sh.\n.\u002Fdeep-speaker build_mfcc              # will build MFCC for softmax pre-training and triplet training.\n.\u002Fdeep-speaker build_model_inputs      # will build inputs for softmax pre-training.\n.\u002Fdeep-speaker train_softmax           # takes ~3 days.\n.\u002Fdeep-speaker train_triplet           # takes ~3 days.\n```\n\nNOTE: If you want to use your own dataset, make sure you follow the directory structure of librispeech. Audio files have to be in `.flac`. format. If you have `.wav`, you can use `ffmpeg` to make the conversion. Both formats are flawless (FLAC is compressed WAV).\n\n### Test instruction using pretrained model\n- Download the trained models\n \n\n *Model name* | *Used datasets for training* | *Num speakers* | *Model Link* | \n | :--- | :--- | :--- | :--- |\nResCNN Softmax trained  | [LibriSpeech](http:\u002F\u002Fwww.openslr.org\u002F12\u002F) train-clean-360 | 921 | [Click](https:\u002F\u002Fdrive.google.com\u002Fopen?id=1SJBmHpnaW1VcbFWP6JfvbT3wWP9PsqxS)\nResCNN Softmax+Triplet trained  | [LibriSpeech](http:\u002F\u002Fwww.openslr.org\u002F12\u002F) all | 2484 | [Click](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1F9NvdrarWZNktdX9KlRYWWHDwRkip_aP)\n\nNote: the pre-training was performed on a subset of all the speakers we have. This is to match the philosophy of the paper where they first trained the model with softmax and then trained it on the whole dataset (bigger than this repo!) with triplets.\n\n* Run with pretrained model\n\n```python\nimport random\n\nimport numpy as np\n\nfrom deep_speaker.audio import read_mfcc\nfrom deep_speaker.batcher import sample_from_mfcc\nfrom deep_speaker.constants import SAMPLE_RATE, NUM_FRAMES\nfrom deep_speaker.conv_models import DeepSpeakerModel\nfrom deep_speaker.test import batch_cosine_similarity\n\n# Reproducible results.\nnp.random.seed(123)\nrandom.seed(123)\n\n# Define the model here.\nmodel = DeepSpeakerModel()\n\n# Load the checkpoint. https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1F9NvdrarWZNktdX9KlRYWWHDwRkip_aP.\n# Also available here: https:\u002F\u002Fshare.weiyun.com\u002FV2suEUVh (Chinese users).\nmodel.m.load_weights('ResCNN_triplet_training_checkpoint_265.h5', by_name=True)\n\n# Sample some inputs for WAV\u002FFLAC files for the same speaker.\n# To have reproducible results every time you call this function, set the seed every time before calling it.\n# np.random.seed(123)\n# random.seed(123)\nmfcc_001 = sample_from_mfcc(read_mfcc('samples\u002FPhilippeRemy\u002FPhilippeRemy_001.wav', SAMPLE_RATE), NUM_FRAMES)\nmfcc_002 = sample_from_mfcc(read_mfcc('samples\u002FPhilippeRemy\u002FPhilippeRemy_002.wav', SAMPLE_RATE), NUM_FRAMES)\n\n# Call the model to get the embeddings of shape (1, 512) for each file.\npredict_001 = model.m.predict(np.expand_dims(mfcc_001, axis=0))\npredict_002 = model.m.predict(np.expand_dims(mfcc_002, axis=0))\n\n# Do it again with a different speaker.\nmfcc_003 = sample_from_mfcc(read_mfcc('samples\u002F1255-90413-0001.flac', SAMPLE_RATE), NUM_FRAMES)\npredict_003 = model.m.predict(np.expand_dims(mfcc_003, axis=0))\n\n# Compute the cosine similarity and check that it is higher for the same speaker.\nprint('SAME SPEAKER', batch_cosine_similarity(predict_001, predict_002)) # SAME SPEAKER [0.81564593]\nprint('DIFF SPEAKER', batch_cosine_similarity(predict_001, predict_003)) # DIFF SPEAKER [0.1419204]\n```\n\n* Commands to reproduce the test results after the training\n\n**NOTE**: For some reasons, the `test-model` does not work with tensorflow>2.3. Make sure to run `pip install tensorflow==2.3` if you want to run those two commands below.\n\n```bash\n$ export CUDA_VISIBLE_DEVICES=0; python cli.py test-model --working_dir ~\u002F.deep-speaker-wd\u002Ftriplet-training\u002F --\ncheckpoint_file checkpoints-softmax\u002FResCNN_checkpoint_102.h5\nf-measure = 0.789, true positive rate = 0.733, accuracy = 0.996, equal error rate = 0.043\n```\n\n```bash\n$ export CUDA_VISIBLE_DEVICES=0; python cli.py test-model --working_dir ~\u002F.deep-speaker-wd\u002Ftriplet-training\u002F --checkpoint_file checkpoints-triplets\u002FResCNN_checkpoint_265.h5\nf-measure = 0.849, true positive rate = 0.798, accuracy = 0.997, equal error rate = 0.025\n```\n\nWhen the triplet loss select the hard examples, then the training loss does not really decrease. Because the hard samples are always hard meaning they are on average above alpha. The test set should however decreased.\n\n### Further work\n\n- LSTM model: https:\u002F\u002Fgithub.com\u002Fphilipperemy\u002Fdeep-speaker\u002Fpull\u002F53\n- Fusion score: https:\u002F\u002Fgithub.com\u002Fphilipperemy\u002Fdeep-speaker\u002Fpull\u002F76\n\n## Contributors\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fphilipperemy\u002Fdeep-speaker\u002Fgraphs\u002Fcontributors\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fphilipperemy_deep-speaker_readme_cebfe3ab30e2.png\" \u002F>\n\u003C\u002Fa>\n","## Deep Speaker：一个端到端的神经说话人嵌入系统。\n\n非官方的 Tensorflow\u002FKeras 实现 Deep Speaker | [论文](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1705.02304.pdf) | [预训练模型](https:\u002F\u002Fdrive.google.com\u002Fopen?id=18h2bmsAWrqoUMsh_FQHDDxp7ioGpcNBa)\n\n已在 Tensorflow 2.3、2.4、2.5 和 2.6 上测试。\n\n### 示例结果\n\n模型在干净语音数据上训练。需要注意的是，在噪声数据上的性能会有所下降。建议在计算嵌入（embedding）之前去除静音和背景噪声（例如使用 Sox 工具）。相关讨论请见：[静音\u002F背景噪声相似度](https:\u002F\u002Fgithub.com\u002Fphilipperemy\u002Fdeep-speaker\u002Fissues\u002F62)。\n\n *模型名称* | *测试数据集* | *说话人数量* | *F* | *TPR* | *ACC* | *EER* | 训练日志 | 下载模型\n | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- |\nResCNN Softmax 训练          | [LibriSpeech](http:\u002F\u002Fwww.openslr.org\u002F12\u002F) all(*) | 2484 | 0.789 | 0.733 | 0.996 | 0.043 | [点击](https:\u002F\u002Fdocs.google.com\u002Fdocument\u002Fd\u002F1ZZjBk5TgFgaY9GgOcHaieOpiyB9lB6oTRSdk6g8FPRs) | [点击](https:\u002F\u002Fdrive.google.com\u002Fopen?id=1SJBmHpnaW1VcbFWP6JfvbT3wWP9PsqxS)\nResCNN Softmax+Triplet 训练  | [LibriSpeech](http:\u002F\u002Fwww.openslr.org\u002F12\u002F) all(*) | 2484 | 0.843 | 0.825 | 0.997 | 0.025 | [点击](https:\u002F\u002Fdocs.google.com\u002Fdocument\u002Fd\u002F1mL0Jb8IpA7DOzFci71RT1OYTq7Kkw2DjTkI4BRpEzKc) | [点击](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1F9NvdrarWZNktdX9KlRYWWHDwRkip_aP)\n\n(*) all 包括：dev-clean、dev-other、test-clean、test-other、train-clean-100、train-clean-360、train-other-500。\n\nSoftmax+Triplet 检查点也可在[微云](https:\u002F\u002Fshare.weiyun.com\u002FV2suEUVh)上获取。\n\n### 概述\n\nDeep Speaker 是一个神经说话人嵌入系统，它将语音 utterances（语音片段）映射到一个超球面（hypersphere），在该空间中说话人相似度通过余弦相似度（cosine similarity）来衡量。Deep Speaker 生成的嵌入可以用于多种任务，包括说话人识别、验证和聚类。\n\n## 入门指南\n### 安装依赖\n#### 环境要求\n- tensorflow>=2.0\n- keras>=2.3.1\n- python>=3.6\n```bash\npip install -r requirements.txt\n```\n\n如果遇到此错误：`libsndfile not found`，请运行：`sudo apt-get install libsndfile-dev`。\n\n### 训练\n\n训练代码已包含在本仓库中。使用 GTX1070 训练模型大约需要不到一周的时间。\n\n完整训练的系统要求：\n- 至少 300GB 的可用磁盘空间在高速 SSD 上（仅解压和处理后的数据就需要 250GB）\n- 32GB 内存和至少 32GB 交换空间（可以使用 SSD 空间创建交换分区）\n- NVIDIA GPU，例如 1080Ti\n\n```bash\npip uninstall -y tensorflow && pip install tensorflow-gpu\n.\u002Fdeep-speaker download_librispeech    # 如果下载太慢，可以考虑在 download_librispeech.sh 中将 [wget] 替换为 [axel -n 10 -a]。\n.\u002Fdeep-speaker build_mfcc              # 将为 Softmax 预训练和 Triplet 训练构建 MFCC。\n.\u002Fdeep-speaker build_model_inputs      # 将为 Softmax 预训练构建输入。\n.\u002Fdeep-speaker train_softmax           # 大约需要 3 天。\n.\u002Fdeep-speaker train_triplet           # 大约需要 3 天。\n```\n\n注意：如果您想使用自己的数据集，请确保遵循 librispeech 的目录结构。音频文件必须是 `.flac` 格式。如果您有 `.wav` 文件，可以使用 `ffmpeg` 进行转换。两种格式都是无损的（FLAC 是压缩的 WAV）。\n\n### 使用预训练模型进行测试\n- 下载训练好的模型\n\n *模型名称* | *训练使用的数据集* | *说话人数量* | *模型链接* | \n | :--- | :--- | :--- | :--- |\nResCNN Softmax 训练  | [LibriSpeech](http:\u002F\u002Fwww.openslr.org\u002F12\u002F) train-clean-360 | 921 | [点击](https:\u002F\u002Fdrive.google.com\u002Fopen?id=1SJBmHpnaW1VcbFWP6JfvbT3wWP9PsqxS)\nResCNN Softmax+Triplet 训练  | [LibriSpeech](http:\u002F\u002Fwww.openslr.org\u002F12\u002F) all | 2484 | [点击](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1F9NvdrarWZNktdX9KlRYWWHDwRkip_aP)\n\n注意：预训练是在我们所有说话人的一个子集上进行的。这是为了遵循论文的思路，即先用 Softmax 训练模型，然后在整个数据集上（比本仓库更大！）用 Triplet 进行训练。\n\n* 使用预训练模型运行\n\n```python\nimport random\n\nimport numpy as np\n\nfrom deep_speaker.audio import read_mfcc\nfrom deep_speaker.batcher import sample_from_mfcc\nfrom deep_speaker.constants import SAMPLE_RATE, NUM_FRAMES\nfrom deep_speaker.conv_models import DeepSpeakerModel\nfrom deep_speaker.test import batch_cosine_similarity\n\n# 可复现的结果。\nnp.random.seed(123)\nrandom.seed(123)\n\n# 在此处定义模型。\nmodel = DeepSpeakerModel()\n\n# 加载检查点。https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1F9NvdrarWZNktdX9KlRYWWHDwRkip_aP\n# 也可在此处获取：https:\u002F\u002Fshare.weiyun.com\u002FV2suEUVh（中国用户）。\nmodel.m.load_weights('ResCNN_triplet_training_checkpoint_265.h5', by_name=True)\n\n# 为同一说话人的 WAV\u002FFLAC 文件采样一些输入。\n# 为了每次调用此函数时都能获得可复现的结果，请在每次调用前设置随机种子。\n# np.random.seed(123)\n# random.seed(123)\nmfcc_001 = sample_from_mfcc(read_mfcc('samples\u002FPhilippeRemy\u002FPhilippeRemy_001.wav', SAMPLE_RATE), NUM_FRAMES)\nmfcc_002 = sample_from_mfcc(read_mfcc('samples\u002FPhilippeRemy\u002FPhilippeRemy_002.wav', SAMPLE_RATE), NUM_FRAMES)\n\n# 调用模型获取每个文件的形状为 (1, 512) 的嵌入。\npredict_001 = model.m.predict(np.expand_dims(mfcc_001, axis=0))\npredict_002 = model.m.predict(np.expand_dims(mfcc_002, axis=0))\n\n# 对另一个不同说话人重复此操作。\nmfcc_003 = sample_from_mfcc(read_mfcc('samples\u002F1255-90413-0001.flac', SAMPLE_RATE), NUM_FRAMES)\npredict_003 = model.m.predict(np.expand_dims(mfcc_003, axis=0))\n\n# 计算余弦相似度。\nsimilarity_same = batch_cosine_similarity(predict_001, predict_002)\nsimilarity_diff = batch_cosine_similarity(predict_001, predict_003)\n\nprint('相同说话人的相似度:', similarity_same)\nprint('不同说话人的相似度:', similarity_diff)\n```\n\n# 计算余弦相似度并验证相同说话人的相似度更高\nprint('SAME SPEAKER', batch_cosine_similarity(predict_001, predict_002)) # SAME SPEAKER [0.81564593]\nprint('DIFF SPEAKER', batch_cosine_similarity(predict_001, predict_003)) # DIFF SPEAKER [0.1419204]\n```\n\n* 训练后复现测试结果的命令\n\n**注意**：由于某些原因，`test-model` 在 tensorflow>2.3 版本下无法运行。如果你想运行下面两条命令，请确保执行 `pip install tensorflow==2.3`。\n\n```bash\n$ export CUDA_VISIBLE_DEVICES=0; python cli.py test-model --working_dir ~\u002F.deep-speaker-wd\u002Ftriplet-training\u002F --\ncheckpoint_file checkpoints-softmax\u002FResCNN_checkpoint_102.h5\nf-measure = 0.789, true positive rate = 0.733, accuracy = 0.996, equal error rate = 0.043\n```\n\n```bash\n$ export CUDA_VISIBLE_DEVICES=0; python cli.py test-model --working_dir ~\u002F.deep-speaker-wd\u002Ftriplet-training\u002F --checkpoint_file checkpoints-triplets\u002FResCNN_checkpoint_265.h5\nf-measure = 0.849, true positive rate = 0.798, accuracy = 0.997, equal error rate = 0.025\n```\n\n当三元组损失（triplet loss，一种用于度量学习的损失函数）选择困难样本时，训练损失并不会真正下降。因为困难样本始终是困难的，意味着它们平均高于阈值 alpha。然而，测试集的性能应该会下降。\n\n### 后续工作\n\n- LSTM 模型：https:\u002F\u002Fgithub.com\u002Fphilipperemy\u002Fdeep-speaker\u002Fpull\u002F53\n- 融合分数：https:\u002F\u002Fgithub.com\u002Fphilipperemy\u002Fdeep-speaker\u002Fpull\u002F76\n\n## 贡献者\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fphilipperemy\u002Fdeep-speaker\u002Fgraphs\u002Fcontributors\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fphilipperemy_deep-speaker_readme_cebfe3ab30e2.png\" \u002F>\n\u003C\u002Fa>","# Deep Speaker 快速上手指南\n\nDeep Speaker 是一个端到端神经说话人嵌入系统，将语音映射到超球面上，通过余弦相似度衡量说话人相似度。可用于说话人识别、验证和聚类等任务。\n\n## 环境准备\n\n### 系统要求\n\n- Python >= 3.6\n- TensorFlow >= 2.0\n- Keras >= 2.3.1\n- NVIDIA GPU（如 1080Ti，推荐用于训练）\n\n如需完整训练，还需：\n- 至少 300GB 空闲 SSD 空间\n- 32GB 内存 + 32GB 交换空间\n\n### 系统依赖\n\n```bash\n# Debian\u002FUbuntu\nsudo apt-get install libsndfile-dev\n```\n\n## 安装步骤\n\n```bash\n# 克隆仓库\ngit clone https:\u002F\u002Fgithub.com\u002Fphilipperemy\u002Fdeep-speaker.git\ncd deep-speaker\n\n# 安装 Python 依赖（推荐使用国内镜像源）\npip install -r requirements.txt -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n## 基本使用\n\n### 1. 下载预训练模型\n\n| 模型 | 训练数据 | 下载链接 |\n|------|----------|----------|\n| ResCNN Softmax | LibriSpeech train-clean-360 | [Google Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1SJBmHpnaW1VcbFWP6JfvbT3wWP9PsqxS) |\n| ResCNN Softmax+Triplet | LibriSpeech all | [Google Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1F9NvdrarWZNktdX9KlRYWWHDwRkip_aP) |\n\n国内用户可从微云下载：`https:\u002F\u002Fshare.weiyun.com\u002FV2suEUVh`\n\n### 2. 使用预训练模型进行推理\n\n将下载的模型权重文件重命名为 `ResCNN_triplet_training_checkpoint_265.h5`，然后运行以下代码：\n\n```python\nimport random\nimport numpy as np\n\nfrom deep_speaker.audio import read_mfcc\nfrom deep_speaker.batcher import sample_from_mfcc\nfrom deep_speaker.constants import SAMPLE_RATE, NUM_FRAMES\nfrom deep_speaker.conv_models import DeepSpeakerModel\nfrom deep_speaker.test import batch_cosine_similarity\n\n# 可复现结果\nnp.random.seed(123)\nrandom.seed(123)\n\n# 加载模型\nmodel = DeepSpeakerModel()\nmodel.m.load_weights('ResCNN_triplet_training_checkpoint_265.h5', by_name=True)\n\n# 读取同一说话人的两个音频\nmfcc_001 = sample_from_mfcc(read_mfcc('samples\u002FPhilippeRemy\u002FPhilippeRemy_001.wav', SAMPLE_RATE), NUM_FRAMES)\nmfcc_002 = sample_from_mfcc(read_mfcc('samples\u002FPhilippeRemy\u002FPhilippeRemy_002.wav', SAMPLE_RATE), NUM_FRAMES)\n\n# 获取嵌入向量\npredict_001 = model.m.predict(np.expand_dims(mfcc_001, axis=0))\npredict_002 = model.m.predict(np.expand_dims(mfcc_002, axis=0))\n\n# 读取另一说话人的音频\nmfcc_003 = sample_from_mfcc(read_mfcc('samples\u002F1255-90413-0001.flac', SAMPLE_RATE), NUM_FRAMES)\npredict_003 = model.m.predict(np.expand_dims(mfcc_003, axis=0))\n\n# 计算余弦相似度\nprint('SAME SPEAKER:', batch_cosine_similarity(predict_001, predict_002))\nprint('DIFF SPEAKER:', batch_cosine_similarity(predict_001, predict_003))\n```\n\n预期输出：\n- 同一说话人相似度：~0.82\n- 不同说话人相似度：~0.14\n\n### 3. 使用自己的数据\n\n音频文件需为 `.flac` 格式（推荐）或 `.wav` 格式。如需格式转换：\n\n```bash\nffmpeg -i input.wav -acodec flac output.flac\n```\n\n## 训练自己的模型（如需）\n\n```bash\n# 下载 LibriSpeech 数据集\n.\u002Fdeep-speaker download_librispeech\n\n# 构建 MFCC 特征\n.\u002Fdeep-speaker build_mfcc\n.\u002Fdeep-speaker build_model_inputs\n\n# 训练 Softmax 模型（约3天）\n.\u002Fdeep-speaker train_softmax\n\n# 训练 Triplet 模型（约3天）\n.\u002Fdeep-speaker train_triplet\n```\n\n> 注意：完整训练需要约一周时间，使用 GTX1070 GPU。","某在线金融平台的智能客服系统需要通过语音验证客户身份，以确保账户安全。\n\n### 没有 deep-speaker 时\n\n- 传统的说话人验证系统需要收集大量带标签的语音数据，并训练专门的分类模型，标注成本极高\n- 特征工程繁琐，需要手动提取 MFCC、PLP 等声学特征，且对特征维度选择依赖经验\n- 模型泛化能力差，训练数据中的说话人有限，无法有效识别新用户\n- 对噪声敏感，实际客服场景中常有背景噪音，导致验证失败率居高不下\n- 部署复杂，需要整合特征提取、模型推理、置信度判定等多个模块，维护成本大\n\n### 使用 deep-speaker 后\n\n- 直接使用预训练的 ResCNN Triplet 模型提取说话人嵌入向量，省去标注和训练环节\n- 嵌入向量是 512 维的紧凑表示，直接用于余弦相似度计算，无需复杂特征工程\n- 基于 LibriSpeech 2484 位说话人训练的模型对未见过的用户也有良好的识别能力\n- 在预处理阶段使用 SOX 去除静音和背景噪声，可显著提升验证稳定性\n- 只需调用 `embedding = deep_speaker.predict(audio_file)` 即可完成嵌入提取，集成简单\n\ndeep-speaker 将说话人验证从复杂的模型训练简化为直接的嵌入提取与相似度计算，大幅降低了开发成本和部署难度。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fphilipperemy_deep-speaker_5e07af96.png","philipperemy","Philippe Rémy","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fphilipperemy_ab4d68d0.jpg","From Paris to Bangkok via London, Tokyo, LA. Ex @ImperialCollegeLondon. Maths, Stats, Machine Learning.   🏄 🎲 🎱 Co Founder of @skysense, an AI startup.","Imperial College London","Earth","premy.enseirb@gmail.com","philipperemy.github.io\u002Fme","https:\u002F\u002Fgithub.com\u002Fphilipperemy",[86,90],{"name":87,"color":88,"percentage":89},"Python","#3572A5",96.8,{"name":91,"color":92,"percentage":93},"Shell","#89e051",3.2,940,237,"2026-03-31T17:16:06","MIT","Linux","需要 NVIDIA GPU（如 GTX1070、1080Ti），显存建议 8GB+","32GB+",{"notes":102,"python":103,"dependencies":104},"完整训练需要至少 300GB 自由磁盘空间（250GB 用于未压缩和处理后的数据），建议使用 SSD；需要安装 libsndfile-dev 系统库；音频文件需为 .flac 格式（可使用 ffmpeg 转换 .wav）；如需运行 test-model 命令，建议使用 tensorflow==2.3；训练时间约一周（使用 GTX1070）","3.6+",[105,106,107,108,109,110,111],"tensorflow>=2.0","keras>=2.3.1","numpy","scipy","scikit-learn","pandas","soundfile",[13],[67,114,115,116],"deep-learning","keras","tensorflow",null,"2026-03-27T02:49:30.150509","2026-04-06T07:12:48.262532",[121,126,131,136,141,146,151,156],{"id":122,"question_zh":123,"answer_zh":124,"source_url":125},760,"安装 tensorflow-gpu 后仍然只使用 CPU，如何解决？","这通常是 CUDA 版本不兼容导致的。TensorFlow 2.2.0 需要 CUDA 10.0，而不是更高版本（如 10.1 或 10.2）。解决方案：1) 降级到 CUDA 10.0；2) 或者从源码编译 TensorFlow 以支持你的 CUDA 版本。作者表示他的配置是 i7-8770K、32GB 内存、GTX 1070 + CUDA 10 可以正常工作。","https:\u002F\u002Fgithub.com\u002Fphilipperemy\u002Fdeep-speaker\u002Fissues\u002F58",{"id":127,"question_zh":128,"answer_zh":129,"source_url":130},761,"训练后的模型对不同音频产生几乎相同的嵌入向量（embedding），是什么原因？","这是模型训练中的常见问题，模型陷入了将所有嵌入向量都输出相同值的局部最优解，从而让 triplet loss 等于 margin 值。解决方案是使用最新版本的代码，作者在 master 分支中修复了 CNN 相关问题。建议拉取最新代码重新训练。","https:\u002F\u002Fgithub.com\u002Fphilipperemy\u002Fdeep-speaker\u002Fissues\u002F13",{"id":132,"question_zh":133,"answer_zh":134,"source_url":135},762,"训练过程中 loss 突然从正常值变成 NaN，是什么原因？如何解决？","这可能是由于代码中的 bug 导致的。作者表示在最新代码中已修复此问题。建议尝试拉取最新的 master 分支代码重新训练。另外，检查是否使用了正确的批次大小和学习率配置。","https:\u002F\u002Fgithub.com\u002Fphilipperemy\u002Fdeep-speaker\u002Fissues\u002F7",{"id":137,"question_zh":138,"answer_zh":139,"source_url":140},763,"Triplet loss 停留在 margin 值不下降，应该怎么办？","这个问题与 Issue #13 类似，模型陷入了局部最优。解决方案：1) 使用作者最新修复的代码；2) 检查 triplet 采样策略是否正确；3) 尝试调整学习率或使用预训练的 softmax 模型进行微调。","https:\u002F\u002Fgithub.com\u002Fphilipperemy\u002Fdeep-speaker\u002Fissues\u002F9",{"id":142,"question_zh":143,"answer_zh":144,"source_url":145},764,"如何使用训练好的模型进行推理？缺少 speaker-change-detection-norm.pkl 等文件怎么办？","作者没有提供这些 pkl 文件，但用户反馈按照 README 中的示例代码可以成功进行推理。具体方法是使用预训练模型提取音频的 embedding，然后计算不同音频 embedding 之间的余弦相似度来判断是否为同一说话者。","https:\u002F\u002Fgithub.com\u002Fphilipperemy\u002Fdeep-speaker\u002Fissues\u002F21",{"id":147,"question_zh":148,"answer_zh":149,"source_url":150},765,"--counts_per_speaker 参数是什么意思？如何使用它训练自己的数据集？","counts_per_speaker 参数用于指定每个说话者的音频样本数量。训练日志显示，即使训练 3 天后 loss 仍在下降，说明该参数影响训练轮数和样本数量。用户需要根据自己的数据集调整此参数以获得最佳训练效果。","https:\u002F\u002Fgithub.com\u002Fphilipperemy\u002Fdeep-speaker\u002Fissues\u002F55",{"id":152,"question_zh":153,"answer_zh":154,"source_url":155},766,"在测试集上 EER 达到 23%，是否正常？如何改进？","作者表示 EER 3.67% 在该数据集上已经是不错的结果，因为测试集使用的是完全不同的说话者和录音条件（无噪音但条件不同）。要进一步改进，建议：1) 收集大量带噪音的数据集进行训练；2) 使用数据增强技术。作者也指出只有百度这样的大公司才有能力构建超大规模的高质量数据集。","https:\u002F\u002Fgithub.com\u002Fphilipperemy\u002Fdeep-speaker\u002Fissues\u002F57",{"id":157,"question_zh":158,"answer_zh":159,"source_url":160},767,"静音或背景噪音的嵌入与任何音频都有很高的相似度，如何处理？","可以在训练集中加入各种背景噪音和静音样本，并给它们打上统一的标签（如 'silent_features'），让模型学习区分静音特征和语音特征。另一个方法是使用 SOX 工具在预处理阶段去除静音和背景噪音，然后计算 embedding。","https:\u002F\u002Fgithub.com\u002Fphilipperemy\u002Fdeep-speaker\u002Fissues\u002F62",[]]