[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-facebookresearch--audioseal":3,"tool-facebookresearch--audioseal":65},[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 将是理想的起点。",85013,2,"2026-04-06T11:09:19",[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":62,"last_commit_at":63,"category_tags":64,"status":22},3788,"airi","moeru-ai\u002Fairi","airi 是一款开源的本地化 AI 伴侣项目，旨在将虚拟角色（如“二次元老婆”或赛博生命）带入用户的现实世界。它的核心目标是复刻并超越知名 AI 主播 Neuro-sama 的能力，让用户能够拥有完全自主掌控、可私有化部署的智能伙伴。\n\nairi 主要解决了用户对高度定制化、具备情感交互能力且数据隐私安全的 AI 角色的需求。不同于依赖云端服务的通用助手，airi 允许用户在本地运行，不仅保护了对话隐私，还赋予了用户定义角色性格与灵魂的自由。它支持实时语音聊天，甚至能直接参与《我的世界》（Minecraft）和《异星工厂》（Factorio）等游戏，实现了从单纯对话到共同娱乐的跨越。\n\n这款工具非常适合喜爱虚拟角色的普通用户、希望搭建个性化 AI 陪伴的技术爱好者，以及研究多模态交互的开发者。其独特的技术亮点在于跨平台支持（涵盖 Web、macOS 和 Windows）以及强大的游戏交互能力，让 AI 不仅能“说”，还能“玩”。通过容器化的灵魂设计，airi 为每个人创造专属数字生命提供了可能，让虚拟陪伴变得更加真实且触手可及。",37086,1,"2026-04-05T10:54:25",[19,21,17],{"id":66,"github_repo":67,"name":68,"description_en":69,"description_zh":70,"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":80,"owner_email":80,"owner_twitter":80,"owner_website":81,"owner_url":82,"languages":83,"stars":88,"forks":89,"last_commit_at":90,"license":91,"difficulty_score":10,"env_os":92,"env_gpu":93,"env_ram":94,"env_deps":95,"category_tags":103,"github_topics":80,"view_count":10,"oss_zip_url":80,"oss_zip_packed_at":80,"status":22,"created_at":104,"updated_at":105,"faqs":106,"releases":136},5060,"facebookresearch\u002Faudioseal","audioseal","Localized watermarking for AI-generated speech audios, with SOTA on robustness and very fast detector","AudioSeal 是一款专为 AI 生成语音设计的高效局部水印工具，旨在解决日益严峻的深伪音频识别与版权溯源难题。面对经过压缩、重编码或添加噪音等编辑处理的音频，传统检测手段往往难以应对，而 AudioSeal 凭借业界领先的鲁棒性，能够精准识别这些被篡改的音频片段。\n\n其核心技术创新在于“局部水印”机制，能以极高的时间分辨率（每 1\u002F16000 秒）在音频样本级别嵌入人耳无法察觉的水印信号。更值得一提的是，它的检测速度比现有模型快上百倍，支持单次遍历快速定位水印位置，非常适合大规模部署及实时应用场景。此外，该工具对音频音质影响极小，并支持嵌入可选的保密信息以区分模型版本。\n\nAudioSeal 非常适合作为内容安全基础设施，供 AI 开发者、研究人员及平台运营者集成使用，帮助构建可信赖的语音生成生态。随着许可证更新为完整的 MIT 协议，它也已开放用于商业应用。无论是需要保护原创内容的创作者，还是致力于打击虚假信息的监管机构，都能通过 AudioSeal 获得强有力的技术支撑。","# :loud_sound: AudioSeal: Efficient Localized Audio Watermarking\n\n\u003Ca href=\"https:\u002F\u002Fwww.python.org\u002F\">\u003Cimg alt=\"Python\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F-Python 3.8+-blue?style=for-the-badge&logo=python&logoColor=white\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fblack.readthedocs.io\u002Fen\u002Fstable\u002F\">\u003Cimg alt=\"Code style: black\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fcode%20style-black-black.svg?style=for-the-badge&labelColor=gray\">\u003C\u002Fa>\n\nThis repo contains the official implementation  for **AudioSeal**, a method for efficient audio watermarking, with state-of-the-art robustness and detector speed.\n\n# :rocket: Quick Links:\n\n[[`arXiv`](https:\u002F\u002Farxiv.org\u002Fabs\u002F2401.17264)]\n[[🤗`Hugging Face`](https:\u002F\u002Fhuggingface.co\u002Ffacebook\u002Faudioseal)]\n[[`Colab Notebook`](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Ffacebookresearch\u002Faudioseal\u002Fblob\u002Fmaster\u002Fexamples\u002Fcolab.ipynb)]\n[[`Webpage`](https:\u002F\u002Fpierrefdz.github.io\u002Fpublications\u002Faudioseal\u002F)]\n[[`Blog`](https:\u002F\u002Fabout.fb.com\u002Fnews\u002F2024\u002F06\u002Freleasing-new-ai-research-models-to-accelerate-innovation-at-scale\u002F)]\n[[`Press`](https:\u002F\u002Fwww.technologyreview.com\u002F2024\u002F06\u002F18\u002F1094009\u002Fmeta-has-created-a-way-to-watermark-ai-generated-speech\u002F)]\n\n![fig](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ffacebookresearch_audioseal_readme_9f246b78dcc1.png)\n\n# :sparkles: Key Updates:\n\n- 2024-12-12: AudioSeal 0.2 is out, with streaming support and other improvement\n- 2024-06-17: Training code is now available. Check the [instruction](.\u002Fdocs\u002FTRAINING.md)!!!\n- 2024-05-31: Our paper gets accepted at ICML'24 :)\n- 2024-04-02: We have updated our license to full MIT license (including the license for the model weights) ! Now you can use AudioSeal in commercial application too!\n- 2024-02-29: AudioSeal 0.1.2 is out, with more bug fixes for resampled audios and updated notebooks\n\n\n# :book: Abstract\n\n**AudioSeal** introduces a novel audio watermarking using **ocalized watermarking** and a novel perceptual loss. It jointly trains two components: a **generator** that embeds an imperceptible watermark into audio and a **detector** that identifies watermark fragments in long or edited audio files.\n\n- **Key Features:**\n  - **Localized watermarking** at the sample level (1\u002F16,000 of a second). AudioSeal works well with other sampling rates as well (24 khZ, 44.5 kHz, 48 kHz)\n  - Minimal impact on audio quality.\n  - **Robust** against various audio edits like compression, re-encoding, and noise addition.\n  - **Fast, single-pass detection** designed to surpass existing models significantly in speed — achieving detection up to **two orders of magnitude faster**, making it ideal for large-scale and real-time applications.\n\n\n# :mate: Installation\n\n### Requirements:\n- Python >= 3.8 (>= 3.10 for streaming support)\n- Pytorch >= 1.13.0\n- [Omegaconf](https:\u002F\u002Fomegaconf.readthedocs.io\u002F)\n- [Numpy](https:\u002F\u002Fpypi.org\u002Fproject\u002Fnumpy\u002F)\n- [einops](https:\u002F\u002Fgithub.com\u002Farogozhnikov\u002Feinops) (for streaming support)\n\n### Install from PyPI:\n```\npip install audioseal\n```\n\nTo install from source: Clone this repo and install in editable mode:\n\n```\ngit clone https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Faudioseal\ncd audioseal\npip install -e .\n```\n\n# :gear: Models\n\nYou can find all the model checkpoints on the [Hugging Face Hub](https:\u002F\u002Fhuggingface.co\u002Ffacebook\u002Faudioseal). We provide the checkpoints for the following models:\n\n- [AudioSeal Generator](src\u002Faudioseal\u002Fcards\u002Faudioseal_wm_16bits.yaml):\n  Takes an audio signal (as a waveform) and outputs a watermark of the same size as the input, which can be added to the input to watermark it. Optionally, it can also take a secret 16-bit message to embed in the watermark.\n- [AudioSeal Detector](src\u002Faudioseal\u002Fcards\u002Faudioseal_detector_16bits.yaml):\n  Takes an audio signal (as a waveform) and outputs the probability that the input contains a watermark at each sample (every 1\u002F16k second). Optionally, it may also output the secret message encoded in the watermark.\n\nNote that the message is optional and has no influence on the detection output. It may be used to identify a model version for instance (up to $2**16=65536$ possible choices).\n\n# :abacus: Usage\n\nHere’s a quick example of how you can use AudioSeal’s API to embed and detect watermarks:\n\n```python\n\nfrom audioseal import AudioSeal\n\n# model name corresponds to the YAML card file name found in audioseal\u002Fcards\nmodel = AudioSeal.load_generator(\"audioseal_wm_16bits\")\nmodel.eval()\n\n# Other way is to load directly from the checkpoint\n# model =  Watermarker.from_pretrained(checkpoint_path, device = wav.device)\n\n# a torch tensor of shape (batch, channels, samples) and a sample rate\n# It is important to process the audio to the same sample rate as the model\n# expects. The default AudioSeal should work well with 16kHz and 24kHz, and \n# in the case of 48 khZ, it should work well for most speech audios\nwav = [load audio wav into a tensor of BatchxChannelxTime]\n\nwatermark = model.get_watermark(wav)\n\n# Optional: you can add a 16-bit message to embed in the watermark\n# msg = torch.randint(0, 2, (wav.shape(0), model.msg_processor.nbits), device=wav.device)\n# watermark = model.get_watermark(wav, message = msg)\n\nwatermarked_audio = wav + watermark\n\ndetector = AudioSeal.load_detector(\"audioseal_detector_16bits\")\n\n# To detect the messages in the high-level.\nresult, message = detector.detect_watermark(watermarked_audio)\n\nprint(result) # result is a float number indicating the probability of the audio being watermarked,\nprint(message)  # message is a binary vector of 16 bits\n\n\n# To detect the messages in the low-level.\nresult, message = detector(watermarked_audio)\n\n# result is a tensor of size batch x 2 x frames, indicating the probability (positive and negative) of watermarking for each frame\n# A watermarked audio should have result[:, 1, :] > 0.5\nprint(result[:, 1 , :])  \n\n# Message is a tensor of size batch x 16, indicating of the probability of each bit to be 1.\n# message will be a random tensor if the detector detects no watermarking from the audio\nprint(message)  \n```\n\n# :abacus: Streaming support\n\nStarting AudioSeal 0.2, you can run the watermarking over the stream of audio signals. The API is `model.streaming(batch_size),\nwhich will enable the convolutional cache during the watermark generation. Ensure to put this within context, so the cache is\nsafely cleaned after the session:\n\n```python\n\nmodel = AudioSeal.load_generator(\"audioseal_wm_streaming\")\nmodel.eval()\n\naudio = [audio chunks]\nstreaming_watermarked_audio = []\n\nwith model.streaming(batch_size=1):\n    \n    # Watermark each incoming chunk of the streaming audio\n    for chunk in audio:\n        watermarked_chunk = model(chunk, sample_rate=sr, message=secret_mesage, alpha=1)\n        streaming_watermarked_audio.append(watermarked_chunk)\n  \nstreaming_watermarked_audio = torch.cat(streaming_watermarked_audio, dim=1)\n\n\n# You can detect a chunk of watermarked output, or the whole audio:\n\ndetector = AudioSeal.load_detector(\"audioseal_detector_streaming\")\ndetector.eval()\n\nwm_chunk = 100\npartial_result, _ = detector.detect_watermark(streaming_watermarked_audio[:, :, :wm_chunk])\n\n\nfull_result, _ = detector.detect_watermark(streaming_watermarked_audio)\n\n```\nSee [example notebook](examples\u002FGetting_started.ipynb) for full details.\n\n\n# :brain: Train your own watermarking model\n\nSee [here](.\u002Fdocs\u002FTRAINING.md) for details on how to train your own Watermarking model.\n\n\n# See Also\n\nThe team also develops other open-source watermarking solutions:\n- [WMAR](https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Fwmar): Autoregressive watermarking models for images\n- [Video Seal](https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Fvideoseal): Open and efficient video watermarking\n- [WAM](https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Fwatermark-anything): Watermark Any Images with Localization\n\n\n\n# 🎮 Troubleshooting\n\n- If you encounter the error `ValueError: not enough values to unpack (expected 3, got 2)`, this is because we expect a batch of audio  tensors as inputs. Add one\ndummy batch dimension to your input (e.g. `wav.unsqueeze(0)`, see [example notebook for getting started](examples\u002FGetting_started.ipynb)).\n\n- In Windows machines, if you encounter the error `KeyError raised while resolving interpolation: \"Environmen variable 'USER' not found\"`: This is due to an old checkpoint\nuploaded to the model hub, which is not compatible in Windows. Try to invalidate the cache by removing the files in `C:\\Users\\\u003CUSER>\\.cache\\audioseal`\nand re-run again.\n\n- If you use torchaudio to handle your audios and encounter the error `Couldn't find appropriate backend to handle uri ...`, this is due to newer version of\ntorchaudio does not handle the default backend well. Either downgrade your torchaudio to `2.1.0` or earlier, or install `soundfile` as your audio backend.\n\n# :heart: Acknowledgements\n\nWe borrow the code with some adaptations from the following repos:\n- [AudioCraft](https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Faudiocraft\u002F) in `libs\u002Faudiocraft\u002F`.\n- [Moshi](https:\u002F\u002Fgithub.com\u002Fkyutai-labs\u002Fmoshi\u002F) in `libs\u002Fmoshi\u002F`.\n\n\n# :handshake: Contributions\n\n We welcome Pull Requests with improvements or suggestions.\n If you want to flag an issue or propose an improvement, but don't know how to realize it, create a GitHub Issue.\n\n\n# 🧾 License\n\n- The code in this repository is released under the MIT license as found in the [LICENSE file](LICENSE).\n\n\n# ✍️ Citation\n\nIf you find this repository useful, please consider giving a star :star: and please cite as:\n\n```\n@article{sanroman2024proactive,\n  title={Proactive Detection of Voice Cloning with Localized Watermarking},\n  author={San Roman, Robin and Fernandez, Pierre and Elsahar, Hady and D´efossez, Alexandre and Furon, Teddy and Tran, Tuan},\n  journal={ICML},\n  year={2024}\n}\n```\n","# :loud_sound: AudioSeal：高效局部音频水印技术\n\n\u003Ca href=\"https:\u002F\u002Fwww.python.org\u002F\">\u003Cimg alt=\"Python\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F-Python 3.8+-blue?style=for-the-badge&logo=python&logoColor=white\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fblack.readthedocs.io\u002Fen\u002Fstable\u002F\">\u003Cimg alt=\"代码风格：black\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fcode%20style-black-black.svg?style=for-the-badge&labelColor=gray\">\u003C\u002Fa>\n\n本仓库包含 **AudioSeal** 的官方实现，这是一种高效的音频水印方法，具有最先进的鲁棒性和检测速度。\n\n# :rocket: 快速链接：\n\n[[`arXiv`](https:\u002F\u002Farxiv.org\u002Fabs\u002F2401.17264)]\n[[🤗`Hugging Face`](https:\u002F\u002Fhuggingface.co\u002Ffacebook\u002Faudioseal)]\n[[`Colab 笔记本`](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Ffacebookresearch\u002Faudioseal\u002Fblob\u002Fmaster\u002Fexamples\u002Fcolab.ipynb)]\n[[`网页`](https:\u002F\u002Fpierrefdz.github.io\u002Fpublications\u002Faudioseal\u002F)]\n[[`博客`](https:\u002F\u002Fabout.fb.com\u002Fnews\u002F2024\u002F06\u002Freleasing-new-ai-research-models-to-accelerate-innovation-at-scale\u002F)]\n[[`新闻`](https:\u002F\u002Fwww.technologyreview.com\u002F2024\u002F06\u002F18\u002F1094009\u002Fmeta-has-created-a-way-to-watermark-ai-generated-speech\u002F)]\n\n![fig](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ffacebookresearch_audioseal_readme_9f246b78dcc1.png)\n\n# :sparkles: 主要更新：\n\n- 2024-12-12：AudioSeal 0.2 发布，新增流式支持及其他改进\n- 2024-06-17：训练代码现已开放。请查看 [说明](.\u002Fdocs\u002FTRAINING.md)！！！\n- 2024-05-31：我们的论文已被 ICML'24 接受 :)\n- 2024-04-02：我们已将许可证更新为完整的 MIT 许可证（包括模型权重的许可证）！现在您也可以在商业应用中使用 AudioSeal！\n- 2024-02-29：AudioSeal 0.1.2 发布，修复了更多关于重采样音频的 bug，并更新了笔记本示例\n\n\n# :book: 摘要\n\n**AudioSeal** 引入了一种新颖的音频水印技术，采用 **局部水印** 和一种新型感知损失函数。它联合训练两个组件：一个 **生成器**，用于将不可察觉的水印嵌入音频中；以及一个 **检测器**，用于识别长音频或经过编辑的音频文件中的水印片段。\n\n- **主要特性：**\n  - 样本级别的 **局部水印**（1\u002F16,000 秒）。AudioSeal 同样适用于其他采样率（24 kHz、44.5 kHz、48 kHz）\n  - 对音频质量的影响极小。\n  - 对各种音频编辑操作（如压缩、重新编码和添加噪声）具有 **鲁棒性**。\n  - **快速单次检测**，设计目标是显著超越现有模型的速度——检测速度可达 **快两个数量级**，非常适合大规模和实时应用。\n\n\n# :mate: 安装\n\n### 要求：\n- Python >= 3.8（流式支持需 >= 3.10）\n- PyTorch >= 1.13.0\n- [Omegaconf](https:\u002F\u002Fomegaconf.readthedocs.io\u002F)\n- [Numpy](https:\u002F\u002Fpypi.org\u002Fproject\u002Fnumpy\u002F)\n- [einops](https:\u002F\u002Fgithub.com\u002Farogozhnikov\u002Feinops)（用于流式支持）\n\n### 从 PyPI 安装：\n```\npip install audioseal\n```\n\n从源码安装：克隆本仓库并以可编辑模式安装：\n\n```\ngit clone https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Faudioseal\ncd audioseal\npip install -e .\n```\n\n# :gear: 模型\n\n您可以在 [Hugging Face Hub](https:\u002F\u002Fhuggingface.co\u002Ffacebook\u002Faudioseal) 上找到所有模型检查点。我们提供了以下模型的检查点：\n\n- [AudioSeal 生成器](src\u002Faudioseal\u002Fcards\u002Faudioseal_wm_16bits.yaml)：\n  接收音频信号（波形形式），输出与输入大小相同的水印，可将其添加到输入中以完成水印嵌入。此外，还可以选择性地输入一段 16 位秘密消息，将其嵌入水印中。\n- [AudioSeal 检测器](src\u002Faudioseal\u002Fcards\u002Faudioseal_detector_16bits.yaml)：\n  接收音频信号（波形形式），输出每个样本（每 1\u002F16k 秒）处输入是否含有水印的概率。此外，还可选择性输出水印中编码的秘密消息。\n\n请注意，消息是可选的，不会影响检测结果。例如，它可以用来标识模型版本（最多有 $2^{16}=65536$ 种可能的选择）。\n\n# :abacus: 使用方法\n\n以下是一个快速示例，展示如何使用 AudioSeal 的 API 嵌入和检测水印：\n\n```python\n\nfrom audioseal import AudioSeal\n\n# 模型名称对应于 audioseal\u002Fcards 中的 YAML 卡片文件名\nmodel = AudioSeal.load_generator(\"audioseal_wm_16bits\")\nmodel.eval()\n\n# 另一种方式是从检查点直接加载\n# model =  Watermarker.from_pretrained(checkpoint_path, device = wav.device)\n\n# 一个形状为 (batch, channels, samples) 的 torch 张量及采样率\n# 重要的是将音频处理成与模型期望相同的采样率。默认的 AudioSeal 应该能很好地处理 16kHz 和 24kHz 的音频，\n# 而对于 48 kHz 的音频，对于大多数语音音频也能良好工作\nwav = [将音频 wav 加载为 BatchxChannelxTime 的张量]\n\nwatermark = model.get_watermark(wav)\n\n# 可选：可以添加一段 16 位消息嵌入水印中\n# msg = torch.randint(0, 2, (wav.shape(0), model.msg_processor.nbits), device=wav.device)\n# watermark = model.get_watermark(wav, message = msg)\n\nwatermarked_audio = wav + watermark\n\ndetector = AudioSeal.load_detector(\"audioseal_detector_16bits\")\n\n# 在高层检测消息。\nresult, message = detector.detect_watermark(watermarked_audio)\n\nprint(result) # 结果是一个浮点数，表示音频被水印化的概率，\nprint(message)  # 消息是一个 16 位的二进制向量\n\n\n# 在低层检测消息。\nresult, message = detector(watermarked_audio)\n\n# 结果是一个 batch x 2 x frames 的张量，表示每一帧水印化的正负概率。\n# 如果音频被水印化，应有 result[:, 1, :] > 0.5\nprint(result[:, 1 , :])  \n\n# 消息是一个 batch x 16 的张量，表示每一位为 1 的概率。\n# 如果检测器未检测到水印，则消息将是一个随机张量\nprint(message)  \n```\n\n# :abacus: 流式支持\n\n自 AudioSeal 0.2 起，您可以对音频信号流进行水印处理。API 为 `model.streaming(batch_size)`，这将在水印生成过程中启用卷积缓存。请确保将其置于上下文中，以便在会话结束后安全地清除缓存：\n\n```python\n\nmodel = AudioSeal.load_generator(\"audioseal_wm_streaming\")\nmodel.eval()\n\naudio = [音频分块]\nstreaming_watermarked_audio = []\n\nwith model.streaming(batch_size=1):\n    \n    # 对接收到的每一部分流式音频进行水印处理\n    for chunk in audio:\n        watermarked_chunk = model(chunk，sample_rate=sr，message=secret_mesage，alpha=1)\n        streaming_watermarked_audio.append(watermarked_chunk)\n  \nstreaming_watermarked_audio = torch.cat(streaming_watermarked_audio，dim=1)\n\n# 你可以检测带有水印的音频片段，也可以检测整个音频：\n\ndetector = AudioSeal.load_detector(\"audioseal_detector_streaming\")\ndetector.eval()\n\nwm_chunk = 100\npartial_result, _ = detector.detect_watermark(streaming_watermarked_audio[:, :, :wm_chunk])\n\n\nfull_result, _ = detector.detect_watermark(streaming_watermarked_audio)\n\n```\n完整详情请参阅[示例笔记本](examples\u002FGetting_started.ipynb)。\n\n\n# :brain: 训练你自己的水印模型\n\n有关如何训练你自己的水印模型的详细信息，请参阅[此处](.\u002Fdocs\u002FTRAINING.md)。\n\n\n# 另请参阅\n\n该团队还开发了其他开源水印解决方案：\n- [WMAR](https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Fwmar)：用于图像的自回归水印模型\n- [Video Seal](https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Fvideoseal)：开放且高效的视频水印技术\n- [WAM](https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Fwatermark-anything)：可定位的任意图像水印技术\n\n\n\n# 🎮 故障排除\n\n- 如果遇到错误 `ValueError: not enough values to unpack (expected 3, got 2)`，这是因为我们期望输入是一个批次的音频张量。请在你的输入中添加一个虚拟的批次维度（例如 `wav.unsqueeze(0)`，详见[入门示例笔记本](examples\u002FGetting_started.ipynb)）。\n\n- 在 Windows 系统中，如果遇到错误 `KeyError raised while resolving interpolation: \"Environmen variable 'USER' not found\"`：这是由于上传到模型仓库的一个旧检查点与 Windows 不兼容所致。请尝试通过删除 `C:\\Users\\\u003CUSER>\\.cache\\audioseal` 中的文件来清除缓存，然后重新运行。\n\n- 如果你使用 torchaudio 处理音频时遇到错误 `Couldn't find appropriate backend to handle uri ...`，这是因为较新版本的 torchaudio 对默认后端支持不佳。你可以将 torchaudio 降级到 `2.1.0` 或更早版本，或者安装 `soundfile` 作为你的音频后端。\n\n# :heart: 致谢\n\n我们在以下仓库的基础上进行了一些改编并借用了部分代码：\n- [AudioCraft](https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Faudiocraft\u002F) 的 `libs\u002Faudiocraft\u002F` 目录。\n- [Moshi](https:\u002F\u002Fgithub.com\u002Fkyutai-labs\u002Fmoshi\u002F) 的 `libs\u002Fmoshi\u002F` 目录。\n\n\n# :handshake: 贡献\n\n我们欢迎包含改进或建议的拉取请求。如果你希望报告问题或提出改进建议，但不确定如何实现，可以创建一个 GitHub 问题。\n\n\n# 🧾 许可证\n\n- 本仓库中的代码根据 [LICENSE 文件](LICENSE) 中的规定，采用 MIT 许可证发布。\n\n\n# ✍️ 引用\n\n如果你觉得本仓库对你有所帮助，请考虑给它一颗星 :star:，并按以下方式引用：\n\n```\n@article{sanroman2024proactive,\n  title={Proactive Detection of Voice Cloning with Localized Watermarking},\n  author={San Roman, Robin and Fernandez, Pierre and Elsahar, Hady and D´efossez, Alexandre and Furon, Teddy and Tran, Tuan},\n  journal={ICML},\n  year={2024}\n}\n```","# AudioSeal 快速上手指南\n\nAudioSeal 是一个高效的局部音频水印工具，具备业界领先的鲁棒性和检测速度。它能在几乎不影响音质的前提下，将水印嵌入音频样本级（1\u002F16000 秒），并能快速检测长音频或经过编辑的音频中的水印片段。\n\n## 环境准备\n\n在开始之前，请确保您的开发环境满足以下要求：\n\n*   **操作系统**: Linux, macOS 或 Windows\n*   **Python 版本**: \n    *   基础功能：>= 3.8\n    *   流式处理支持：>= 3.10\n*   **核心依赖**:\n    *   PyTorch >= 1.13.0\n    *   Omegaconf\n    *   Numpy\n    *   einops (仅流式处理需要)\n\n> **提示**：国内用户建议使用清华源或阿里源加速 Python 包的安装。\n\n## 安装步骤\n\n您可以通过 PyPI 直接安装，也可以从源码安装以获取最新功能。\n\n### 方式一：通过 PyPI 安装（推荐）\n\n```bash\npip install audioseal\n```\n\n*国内加速安装:*\n```bash\npip install audioseal -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n### 方式二：从源码安装\n\n如果您需要修改代码或使用开发版功能：\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Faudioseal\ncd audioseal\npip install -e .\n```\n\n*国内加速克隆:*\n```bash\ngit clone https:\u002F\u002Fgitee.com\u002Fmirrors\u002Faudioseal.git  # 如果存在镜像\n# 或者使用 git 代理\ngit clone https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Faudioseal\ncd audioseal\npip install -e . -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n## 基本使用\n\n以下是最简单的嵌入和检测水印的代码示例。\n\n### 1. 嵌入水印\n\n加载生成器模型，将水印信号添加到原始音频中。\n\n```python\nimport torch\nfrom audioseal import AudioSeal\n\n# 加载生成器模型 (对应 audioseal\u002Fcards 中的 YAML 配置文件名)\nmodel = AudioSeal.load_generator(\"audioseal_wm_16bits\")\nmodel.eval()\n\n# 准备音频数据\n# 注意：输入必须是形状为 (batch, channels, samples) 的 torch tensor\n# 采样率需与模型预期一致（默认支持 16kHz, 24kHz, 48kHz）\n# 假设 wav 已经加载并转换为正确的 tensor 格式\n# wav = [load audio wav into a tensor of BatchxChannelxTime] \nwav = torch.randn(1, 1, 16000) # 示例：1 秒长的随机噪声作为占位符\n\n# 生成水印\nwatermark = model.get_watermark(wav)\n\n# (可选) 嵌入 16 位秘密消息\n# msg = torch.randint(0, 2, (wav.shape[0], model.msg_processor.nbits), device=wav.device)\n# watermark = model.get_watermark(wav, message=msg)\n\n# 生成带水印的音频\nwatermarked_audio = wav + watermark\n```\n\n### 2. 检测水印\n\n加载检测器模型，判断音频是否包含水印并提取消息。\n\n```python\nfrom audioseal import AudioSeal\n\n# 加载检测器模型\ndetector = AudioSeal.load_detector(\"audioseal_detector_16bits\")\ndetector.eval()\n\n# 高层检测：返回整体概率和消息\nresult, message = detector.detect_watermark(watermarked_audio)\n\nprint(f\"水印存在概率: {result}\") \n# result 是一个浮点数，表示音频被嵌入水印的概率\n\nprint(f\"提取的消息 (16 位): {message}\") \n# message 是一个包含 16 位的二进制向量\n\n# 底层检测：返回每一帧的概率分布\n# result 形状: batch x 2 x frames (第 1 维 > 0.5 表示该帧有水印)\n# message 形状: batch x 16 (每位为 1 的概率)\nframe_result, frame_message = detector(watermarked_audio)\n\nprint(f\"逐帧水印概率: {frame_result[:, 1, :]}\")\n```","某大型有声书平台正在部署 AI 语音合成服务，急需解决生成内容被恶意盗用及难以溯源的合规难题。\n\n### 没有 audioseal 时\n- **溯源困难**：一旦音频被剪辑或重新编码发布，传统全局水印极易失效，法务团队无法定位盗版源头。\n- **检测效率低下**：现有检测方案需对长音频进行全量分析，处理数小时的内容耗时极长，无法支撑实时审核。\n- **音质受损风险**：嵌入水印往往引入可闻噪点，影响听众体验，导致用户在付费前流失。\n- **粒度粗糙**：只能判断整段文件是否含水印，无法精确定位具体哪一秒被篡改或复用。\n\n### 使用 audioseal 后\n- **精准局部定位**：audioseal 支持样本级（1\u002F16000 秒）局部水印检测，即使音频被截取片段或经过压缩，也能精确锁定被盗用的具体时间段。\n- **极速实时响应**：凭借单遍检测架构，audioseal 的检测速度比传统模型快两个数量级，轻松实现海量上传内容的实时自动化筛查。\n- **听感无损透明**：采用新型感知损失函数，嵌入的水印在人耳听感上完全不可察觉，完美保留原声品质。\n- **抗攻击性强**：面对重采样、噪声添加等常见编辑手段，audioseal 仍保持极高的鲁棒性，确保版权标识不被抹除。\n\naudioseal 通过毫秒级的局部水印技术，在零损耗音质的前提下，为 AI 语音内容构建了高效且坚不可摧的版权防护网。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ffacebookresearch_audioseal_9f246b78.png","facebookresearch","Meta Research","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Ffacebookresearch_449342bd.png","",null,"https:\u002F\u002Fopensource.fb.com","https:\u002F\u002Fgithub.com\u002Ffacebookresearch",[84],{"name":85,"color":86,"percentage":87},"Python","#3572A5",100,700,93,"2026-04-06T09:21:26","MIT","Linux, macOS, Windows","未说明 (基于 PyTorch，通常建议使用支持 CUDA 的 NVIDIA GPU 以获得最佳性能，但 README 未明确指定具体型号或显存要求)","未说明",{"notes":96,"python":97,"dependencies":98},"1. Windows 用户若遇到环境变量错误，需清理缓存目录 (C:\\Users\\\u003CUSER>\\.cache\\audioseal)。2. 若使用 torchaudio 处理音频遇到后端错误，建议降级 torchaudio 至 2.1.0 或更早版本，或安装 soundfile。3. 输入音频张量必须包含批次维度 (Batch dimension)，否则会报错。4. 默认模型在 16kHz 和 24kHz 采样率下表现最佳，48kHz 适用于大多数语音音频。5. 流式传输功能自 0.2 版本可用，需 Python 3.10+ 及 einops 库。","3.8+ (流式传输支持需要 3.10+)",[99,100,101,102],"torch>=1.13.0","omegaconf","numpy","einops",[21],"2026-03-27T02:49:30.150509","2026-04-07T22:58:27.740807",[107,112,117,122,127,132],{"id":108,"question_zh":109,"answer_zh":110,"source_url":111},23002,"为什么检测模型会出现大量误报（False Positives），即使对于未加水印的音频也返回阳性结果？","这是一个已知问题，特别是在阈值设置不当时。用户报告称，无论是 AI 生成的克隆音频还是人类生成的无水印音频，都可能返回误报。目前建议尝试调整检测阈值（例如在 0.1 到 0.9 之间变化），但如果问题持续存在，可能需要等待研究团队的进一步更新或修复。部分用户反馈某些特定模型生成的音频（如 FreeVC, KNN-VC）难以被正确识别为未加水印。","https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Faudioseal\u002Fissues\u002F14",{"id":113,"question_zh":114,"answer_zh":115,"source_url":116},23003,"在哪里可以找到模型的训练代码？","训练代码已经发布。您可以查看官方文档中的训练说明：https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Faudioseal\u002Fblob\u002Fmain\u002Fdocs\u002FTRAINING.md。此外，相关代码也可能合并到了 Audiocraft 项目中（参见 PR #464）。请注意，早期版本曾因合规和法律审批而延迟发布，但现在已可用。","https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Faudioseal\u002Fissues\u002F12",{"id":118,"question_zh":119,"answer_zh":120,"source_url":121},23004,"加载微调后的检查点（checkpoint）时出现键名不匹配错误怎么办？","该问题通常是由于训练和推理使用的 PyTorch 版本不一致导致的。在新版 PyTorch 中，`torch.nn.utils.weight_norm` 已被 `torch.nn.utils.parametrizations.weight_norm` 替换，导致层名称发生变化。解决方案是确保训练模型和加载模型时使用相同版本的 PyTorch 环境。维护者已提交补丁（PR #38）来缓解此问题，如果问题仍然存在，请检查您的环境一致性。","https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Faudioseal\u002Fissues\u002F37",{"id":123,"question_zh":124,"answer_zh":125,"source_url":126},23005,"如何正确加载生成器模型并嵌入自定义消息（message）？","可以使用以下代码加载模型并处理音频。注意音频必须重采样到模型支持的采样率（通常为 16kHz）。\n\n```python\nfrom audioseal import AudioSeal\nimport torch\n\n# 加载生成器模型\nmodel = AudioSeal.load_generator(\"audioseal_wm_16bits\")\n\n# 准备音频张量 (batch, channels, samples) 和采样率 16000\nwav, sr = ..., 16000 \n\n# 可选：定义要嵌入的 16 位消息\n# msg = torch.randint(0, 2, (wav.shape[0], model.msg_processor.nbits), device=wav.device)\n\n# 生成带水印的音频\nwatermark = model.get_watermark(wav, sr) # 或者传入 message 参数\n```\n如果检测到消息提取失败，请确保代码逻辑与上述示例一致，且未对音频进行破坏性处理。","https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Faudioseal\u002Fissues\u002F33",{"id":128,"question_zh":129,"answer_zh":130,"source_url":131},23006,"AudioSeal 是否支持 48kHz 采样率的音频？","模型原生主要支持 16kHz 采样率的音频。如果要处理 48kHz 音频而不丢失信息，您需要在预处理阶段将音频重采样（resample）到 16kHz 再进行水印嵌入或检测，或者在后期处理中将结果映射回 48kHz。直接使用 48kHz 输入可能会导致错误或效果不佳，因为模型架构是针对特定采样率训练的。","https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Faudioseal\u002Fissues\u002F26",{"id":133,"question_zh":134,"answer_zh":135,"source_url":126},23007,"如何在 Hugging Face Spaces 或其他环境中复现水印检测失效的问题？","如果您发现水印检测在一段时间后突然失效（而代码未变），可能是底层模型依赖或环境发生了变化。建议创建一个最小化复现示例，包含完整的导入、模型加载、音频处理和检测逻辑。确保使用固定的模型版本（如 `audioseal_wm_16bits`），并验证音频采样率是否严格匹配（16kHz）。维护者建议提供具体的代码片段以便排查是否是 API 用法变更或环境差异导致的问题。",[]]