audioseal

GitHub
700 93 简单 1 次阅读 昨天MIT音频
AI 解读 由 AI 自动生成,仅供参考

AudioSeal 是一款专为 AI 生成语音设计的高效局部水印工具,旨在解决日益严峻的深伪音频识别与版权溯源难题。面对经过压缩、重编码或添加噪音等编辑处理的音频,传统检测手段往往难以应对,而 AudioSeal 凭借业界领先的鲁棒性,能够精准识别这些被篡改的音频片段。

其核心技术创新在于“局部水印”机制,能以极高的时间分辨率(每 1/16000 秒)在音频样本级别嵌入人耳无法察觉的水印信号。更值得一提的是,它的检测速度比现有模型快上百倍,支持单次遍历快速定位水印位置,非常适合大规模部署及实时应用场景。此外,该工具对音频音质影响极小,并支持嵌入可选的保密信息以区分模型版本。

AudioSeal 非常适合作为内容安全基础设施,供 AI 开发者、研究人员及平台运营者集成使用,帮助构建可信赖的语音生成生态。随着许可证更新为完整的 MIT 协议,它也已开放用于商业应用。无论是需要保护原创内容的创作者,还是致力于打击虚假信息的监管机构,都能通过 AudioSeal 获得强有力的技术支撑。

使用场景

某大型有声书平台正在部署 AI 语音合成服务,急需解决生成内容被恶意盗用及难以溯源的合规难题。

没有 audioseal 时

  • 溯源困难:一旦音频被剪辑或重新编码发布,传统全局水印极易失效,法务团队无法定位盗版源头。
  • 检测效率低下:现有检测方案需对长音频进行全量分析,处理数小时的内容耗时极长,无法支撑实时审核。
  • 音质受损风险:嵌入水印往往引入可闻噪点,影响听众体验,导致用户在付费前流失。
  • 粒度粗糙:只能判断整段文件是否含水印,无法精确定位具体哪一秒被篡改或复用。

使用 audioseal 后

  • 精准局部定位:audioseal 支持样本级(1/16000 秒)局部水印检测,即使音频被截取片段或经过压缩,也能精确锁定被盗用的具体时间段。
  • 极速实时响应:凭借单遍检测架构,audioseal 的检测速度比传统模型快两个数量级,轻松实现海量上传内容的实时自动化筛查。
  • 听感无损透明:采用新型感知损失函数,嵌入的水印在人耳听感上完全不可察觉,完美保留原声品质。
  • 抗攻击性强:面对重采样、噪声添加等常见编辑手段,audioseal 仍保持极高的鲁棒性,确保版权标识不被抹除。

audioseal 通过毫秒级的局部水印技术,在零损耗音质的前提下,为 AI 语音内容构建了高效且坚不可摧的版权防护网。

运行环境要求

操作系统
  • Linux
  • macOS
  • Windows
GPU

未说明 (基于 PyTorch,通常建议使用支持 CUDA 的 NVIDIA GPU 以获得最佳性能,但 README 未明确指定具体型号或显存要求)

内存

未说明

依赖
notes1. Windows 用户若遇到环境变量错误,需清理缓存目录 (C:\Users\<USER>\.cache\audioseal)。2. 若使用 torchaudio 处理音频遇到后端错误,建议降级 torchaudio 至 2.1.0 或更早版本,或安装 soundfile。3. 输入音频张量必须包含批次维度 (Batch dimension),否则会报错。4. 默认模型在 16kHz 和 24kHz 采样率下表现最佳,48kHz 适用于大多数语音音频。5. 流式传输功能自 0.2 版本可用,需 Python 3.10+ 及 einops 库。
python3.8+ (流式传输支持需要 3.10+)
torch>=1.13.0
omegaconf
numpy
einops
audioseal hero image

快速开始

:loud_sound: AudioSeal:高效局部音频水印技术

Python 代码风格:black

本仓库包含 AudioSeal 的官方实现,这是一种高效的音频水印方法,具有最先进的鲁棒性和检测速度。

:rocket: 快速链接:

[arXiv] [🤗Hugging Face] [Colab 笔记本] [网页] [博客] [新闻]

fig

:sparkles: 主要更新:

  • 2024-12-12:AudioSeal 0.2 发布,新增流式支持及其他改进
  • 2024-06-17:训练代码现已开放。请查看 说明!!!
  • 2024-05-31:我们的论文已被 ICML'24 接受 :)
  • 2024-04-02:我们已将许可证更新为完整的 MIT 许可证(包括模型权重的许可证)!现在您也可以在商业应用中使用 AudioSeal!
  • 2024-02-29:AudioSeal 0.1.2 发布,修复了更多关于重采样音频的 bug,并更新了笔记本示例

:book: 摘要

AudioSeal 引入了一种新颖的音频水印技术,采用 局部水印 和一种新型感知损失函数。它联合训练两个组件:一个 生成器,用于将不可察觉的水印嵌入音频中;以及一个 检测器,用于识别长音频或经过编辑的音频文件中的水印片段。

  • 主要特性:
    • 样本级别的 局部水印(1/16,000 秒)。AudioSeal 同样适用于其他采样率(24 kHz、44.5 kHz、48 kHz)
    • 对音频质量的影响极小。
    • 对各种音频编辑操作(如压缩、重新编码和添加噪声)具有 鲁棒性
    • 快速单次检测,设计目标是显著超越现有模型的速度——检测速度可达 快两个数量级,非常适合大规模和实时应用。

:mate: 安装

要求:

  • Python >= 3.8(流式支持需 >= 3.10)
  • PyTorch >= 1.13.0
  • Omegaconf
  • Numpy
  • einops(用于流式支持)

从 PyPI 安装:

pip install audioseal

从源码安装:克隆本仓库并以可编辑模式安装:

git clone https://github.com/facebookresearch/audioseal
cd audioseal
pip install -e .

:gear: 模型

您可以在 Hugging Face Hub 上找到所有模型检查点。我们提供了以下模型的检查点:

  • AudioSeal 生成器: 接收音频信号(波形形式),输出与输入大小相同的水印,可将其添加到输入中以完成水印嵌入。此外,还可以选择性地输入一段 16 位秘密消息,将其嵌入水印中。
  • AudioSeal 检测器: 接收音频信号(波形形式),输出每个样本(每 1/16k 秒)处输入是否含有水印的概率。此外,还可选择性输出水印中编码的秘密消息。

请注意,消息是可选的,不会影响检测结果。例如,它可以用来标识模型版本(最多有 $2^{16}=65536$ 种可能的选择)。

:abacus: 使用方法

以下是一个快速示例,展示如何使用 AudioSeal 的 API 嵌入和检测水印:


from audioseal import AudioSeal

# 模型名称对应于 audioseal/cards 中的 YAML 卡片文件名
model = AudioSeal.load_generator("audioseal_wm_16bits")
model.eval()

# 另一种方式是从检查点直接加载
# model =  Watermarker.from_pretrained(checkpoint_path, device = wav.device)

# 一个形状为 (batch, channels, samples) 的 torch 张量及采样率
# 重要的是将音频处理成与模型期望相同的采样率。默认的 AudioSeal 应该能很好地处理 16kHz 和 24kHz 的音频,
# 而对于 48 kHz 的音频,对于大多数语音音频也能良好工作
wav = [将音频 wav 加载为 BatchxChannelxTime 的张量]

watermark = model.get_watermark(wav)

# 可选:可以添加一段 16 位消息嵌入水印中
# msg = torch.randint(0, 2, (wav.shape(0), model.msg_processor.nbits), device=wav.device)
# watermark = model.get_watermark(wav, message = msg)

watermarked_audio = wav + watermark

detector = AudioSeal.load_detector("audioseal_detector_16bits")

# 在高层检测消息。
result, message = detector.detect_watermark(watermarked_audio)

print(result) # 结果是一个浮点数,表示音频被水印化的概率,
print(message)  # 消息是一个 16 位的二进制向量


# 在低层检测消息。
result, message = detector(watermarked_audio)

# 结果是一个 batch x 2 x frames 的张量,表示每一帧水印化的正负概率。
# 如果音频被水印化,应有 result[:, 1, :] > 0.5
print(result[:, 1 , :])  

# 消息是一个 batch x 16 的张量,表示每一位为 1 的概率。
# 如果检测器未检测到水印,则消息将是一个随机张量
print(message)  

:abacus: 流式支持

自 AudioSeal 0.2 起,您可以对音频信号流进行水印处理。API 为 model.streaming(batch_size),这将在水印生成过程中启用卷积缓存。请确保将其置于上下文中,以便在会话结束后安全地清除缓存:


model = AudioSeal.load_generator("audioseal_wm_streaming")
model.eval()

audio = [音频分块]
streaming_watermarked_audio = []

with model.streaming(batch_size=1):
    
    # 对接收到的每一部分流式音频进行水印处理
    for chunk in audio:
        watermarked_chunk = model(chunk,sample_rate=sr,message=secret_mesage,alpha=1)
        streaming_watermarked_audio.append(watermarked_chunk)
  
streaming_watermarked_audio = torch.cat(streaming_watermarked_audio,dim=1)

# 你可以检测带有水印的音频片段,也可以检测整个音频:

detector = AudioSeal.load_detector("audioseal_detector_streaming")
detector.eval()

wm_chunk = 100
partial_result, _ = detector.detect_watermark(streaming_watermarked_audio[:, :, :wm_chunk])


full_result, _ = detector.detect_watermark(streaming_watermarked_audio)

完整详情请参阅示例笔记本

:brain: 训练你自己的水印模型

有关如何训练你自己的水印模型的详细信息,请参阅此处

另请参阅

该团队还开发了其他开源水印解决方案:

  • WMAR:用于图像的自回归水印模型
  • Video Seal:开放且高效的视频水印技术
  • WAM:可定位的任意图像水印技术

🎮 故障排除

  • 如果遇到错误 ValueError: not enough values to unpack (expected 3, got 2),这是因为我们期望输入是一个批次的音频张量。请在你的输入中添加一个虚拟的批次维度(例如 wav.unsqueeze(0),详见入门示例笔记本)。

  • 在 Windows 系统中,如果遇到错误 KeyError raised while resolving interpolation: "Environmen variable 'USER' not found":这是由于上传到模型仓库的一个旧检查点与 Windows 不兼容所致。请尝试通过删除 C:\Users\<USER>\.cache\audioseal 中的文件来清除缓存,然后重新运行。

  • 如果你使用 torchaudio 处理音频时遇到错误 Couldn't find appropriate backend to handle uri ...,这是因为较新版本的 torchaudio 对默认后端支持不佳。你可以将 torchaudio 降级到 2.1.0 或更早版本,或者安装 soundfile 作为你的音频后端。

:heart: 致谢

我们在以下仓库的基础上进行了一些改编并借用了部分代码:

  • AudioCraftlibs/audiocraft/ 目录。
  • Moshilibs/moshi/ 目录。

:handshake: 贡献

我们欢迎包含改进或建议的拉取请求。如果你希望报告问题或提出改进建议,但不确定如何实现,可以创建一个 GitHub 问题。

🧾 许可证

  • 本仓库中的代码根据 LICENSE 文件 中的规定,采用 MIT 许可证发布。

✍️ 引用

如果你觉得本仓库对你有所帮助,请考虑给它一颗星 :star:,并按以下方式引用:

@article{sanroman2024proactive,
  title={Proactive Detection of Voice Cloning with Localized Watermarking},
  author={San Roman, Robin and Fernandez, Pierre and Elsahar, Hady and D´efossez, Alexandre and Furon, Teddy and Tran, Tuan},
  journal={ICML},
  year={2024}
}

常见问题

相似工具推荐

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|昨天
图像数据工具视频

GPT-SoVITS

GPT-SoVITS 是一款强大的开源语音合成与声音克隆工具,旨在让用户仅需极少量的音频数据即可训练出高质量的个性化语音模型。它核心解决了传统语音合成技术依赖海量录音数据、门槛高且成本大的痛点,实现了“零样本”和“少样本”的快速建模:用户只需提供 5 秒参考音频即可即时生成语音,或使用 1 分钟数据进行微调,从而获得高度逼真且相似度极佳的声音效果。 该工具特别适合内容创作者、独立开发者、研究人员以及希望为角色配音的普通用户使用。其内置的友好 WebUI 界面集成了人声伴奏分离、自动数据集切片、中文语音识别及文本标注等辅助功能,极大地降低了数据准备和模型训练的技术门槛,让非专业人士也能轻松上手。 在技术亮点方面,GPT-SoVITS 不仅支持中、英、日、韩、粤语等多语言跨语种合成,还具备卓越的推理速度,在主流显卡上可实现实时甚至超实时的生成效率。无论是需要快速制作视频配音,还是进行多语言语音交互研究,GPT-SoVITS 都能以极低的数据成本提供专业级的语音合成体验。

56.4k|★★★☆☆|昨天
音频

TTS

🐸TTS 是一款功能强大的深度学习文本转语音(Text-to-Speech)开源库,旨在将文字自然流畅地转化为逼真的人声。它解决了传统语音合成技术中声音机械生硬、多语言支持不足以及定制门槛高等痛点,让高质量的语音生成变得触手可及。 无论是希望快速集成语音功能的开发者,还是致力于探索前沿算法的研究人员,亦或是需要定制专属声音的数据科学家,🐸TTS 都能提供得力支持。它不仅预置了覆盖全球 1100 多种语言的训练模型,让用户能够即刻上手,还提供了完善的工具链,支持用户利用自有数据训练新模型或对现有模型进行微调,轻松实现特定风格的声音克隆。 在技术亮点方面,🐸TTS 表现卓越。其最新的 ⓍTTSv2 模型支持 16 种语言,并在整体性能上大幅提升,实现了低于 200 毫秒的超低延迟流式输出,极大提升了实时交互体验。此外,它还无缝集成了 🐶Bark、🐢Tortoise 等社区热门模型,并支持调用上千个 Fairseq 模型,展现了极强的兼容性与扩展性。配合丰富的数据集分析与整理工具,🐸TTS 已成为科研与生产环境中备受信赖的语音合成解决方案。

45k|★★★☆☆|4天前
音频开发框架图像

LocalAI

LocalAI 是一款开源的本地人工智能引擎,旨在让用户在任意硬件上轻松运行各类 AI 模型,包括大语言模型、图像生成、语音识别及视频处理等。它的核心优势在于彻底打破了高性能计算的门槛,无需昂贵的专用 GPU,仅凭普通 CPU 或常见的消费级显卡(如 NVIDIA、AMD、Intel 及 Apple Silicon)即可部署和运行复杂的 AI 任务。 对于担心数据隐私的用户而言,LocalAI 提供了“隐私优先”的解决方案,确保所有数据处理均在本地基础设施内完成,无需上传至云端。同时,它完美兼容 OpenAI、Anthropic 等主流 API 接口,这意味着开发者可以无缝迁移现有应用,直接利用本地资源替代云服务,既降低了成本又提升了可控性。 LocalAI 内置了超过 35 种后端支持(如 llama.cpp、vLLM、Whisper 等),并集成了自主 AI 代理、工具调用及检索增强生成(RAG)等高级功能,且具备多用户管理与权限控制能力。无论是希望保护敏感数据的企业开发者、进行算法实验的研究人员,还是想要在个人电脑上体验最新 AI 技术的极客玩家,都能通过 LocalAI 获

44.8k|★★★☆☆|4天前
图像音频语言模型

bark

Bark 是由 Suno 推出的开源生成式音频模型,能够根据文本提示创造出高度逼真的多语言语音、音乐、背景噪音及简单音效。与传统仅能朗读文字的语音合成工具不同,Bark 基于 Transformer 架构,不仅能模拟说话,还能生成笑声、叹息、哭泣等非语言声音,甚至能处理带有情感色彩和语气停顿的复杂文本,极大地丰富了音频表达的可能性。 它主要解决了传统语音合成声音机械、缺乏情感以及无法生成非语音类音效的痛点,让创作者能通过简单的文字描述获得生动自然的音频素材。无论是需要为视频配音的内容创作者、探索多模态生成的研究人员,还是希望快速原型设计的开发者,都能从中受益。普通用户也可通过集成的演示页面轻松体验其神奇效果。 技术亮点方面,Bark 支持商业使用(MIT 许可),并在近期更新中实现了显著的推理速度提升,同时提供了适配低显存 GPU 的版本,降低了使用门槛。此外,社区还建立了丰富的提示词库,帮助用户更好地驾驭模型生成特定风格的声音。只需几行 Python 代码,即可将创意文本转化为高质量音频,是连接文字与声音世界的强大桥梁。

39.1k|★★★☆☆|3天前
音频

airi

airi 是一款开源的本地化 AI 伴侣项目,旨在将虚拟角色(如“二次元老婆”或赛博生命)带入用户的现实世界。它的核心目标是复刻并超越知名 AI 主播 Neuro-sama 的能力,让用户能够拥有完全自主掌控、可私有化部署的智能伙伴。 airi 主要解决了用户对高度定制化、具备情感交互能力且数据隐私安全的 AI 角色的需求。不同于依赖云端服务的通用助手,airi 允许用户在本地运行,不仅保护了对话隐私,还赋予了用户定义角色性格与灵魂的自由。它支持实时语音聊天,甚至能直接参与《我的世界》(Minecraft)和《异星工厂》(Factorio)等游戏,实现了从单纯对话到共同娱乐的跨越。 这款工具非常适合喜爱虚拟角色的普通用户、希望搭建个性化 AI 陪伴的技术爱好者,以及研究多模态交互的开发者。其独特的技术亮点在于跨平台支持(涵盖 Web、macOS 和 Windows)以及强大的游戏交互能力,让 AI 不仅能“说”,还能“玩”。通过容器化的灵魂设计,airi 为每个人创造专属数字生命提供了可能,让虚拟陪伴变得更加真实且触手可及。

37.1k|★☆☆☆☆|2天前
语言模型音频Agent