创新语音水印技术 提升音频安全性能
AudioSeal是一种创新的语音水印技术,在音频中嵌入难以察觉的水印,并能快速准确地检测。该技术具有出色的抗篡改能力,可在编辑后的长音频中识别水印片段。AudioSeal实现了高精度的样本级检测,同时保持音质,适用于大规模和实时应用场景。其检测速度比现有方法快近百倍,为音频安全和版权保护提供了强有力的工具。
<a href="https://www.python.org/"><img alt="Python" src="https://img.shields.io/badge/-Python 3.8+-blue?style=for-the-badge&logo=python&logoColor=white"></a> <a href="https://black.readthedocs.io/en/stable/"><img alt="代码风格: black" src="https://yellow-cdn.veclightyear.com/835a84d5/b9374d18-b585-4f2f-84ee-011d6fd87d01.svg?style=for-the-badge&labelColor=gray"></a>
AudioSeal的推理代码,一种用于语音本地化水印的方法,具有最先进的稳健性和检测器速度(训练代码即将推出)。 更多详情可以在论文中找到。
[arXiv
]
[🤗Hugging Face
]
[Colab笔记本
]
[网页
]
[博客
]
[新闻
]
我们介绍了AudioSeal,一种用于语音本地化水印的方法,具有最先进的稳健性和检测器速度。它联合训练了一个在音频中嵌入水印的生成器,和一个在较长音频中检测水印片段的检测器,即使在存在编辑的情况下也能检测。 Audioseal在样本级别(1/16k秒分辨率)上实现了自然和合成语音的最先进检测性能,它对信号质量的改变有限,并且对多种音频编辑类型具有稳健性。 Audioseal设计了一个快速的单通道检测器,在速度上显著超越了现有模型——实现了高达两个数量级的更快检测,使其非常适合大规模和实时应用。
AudioSeal需要Python >=3.8,Pytorch >= 1.13.0,omegaconf,julius和numpy。从PyPI安装:
pip install audioseal
从源代码安装:克隆此仓库并以可编辑模式安装:
git clone https://github.com/facebookresearch/audioseal
cd audioseal
pip install -e .
你可以在Hugging Face Hub上找到所有的模型检查点。我们提供以下模型的检查点:
注意,消息是可选的,对检测输出没有影响。它可以用来识别模型版本,例如(最多有$2**16=65536$种可能的选择)。
注意:我们正在努力发布训练代码,供任何想要构建自己的水印器的人使用。敬请期待!
Audioseal提供了一个简单的API来为音频样本添加水印和检测水印。使用示例:
from audioseal import AudioSeal # 模型名称对应于audioseal/cards中找到的YAML卡片文件名 model = AudioSeal.load_generator("audioseal_wm_16bits") # 另一种方法是直接从检查点加载 # model = Watermarker.from_pretrained(checkpoint_path, device = wav.device) # 一个形状为(batch, channels, samples)的torch张量和一个采样率 # 重要的是要将音频处理为与模型预期相同的采样率 # 在我们的情况下,我们支持16khz音频 wav, sr = ..., 16000 watermark = model.get_watermark(wav, sr) # 可选:你可以添加一个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, sr) print(result) # result是一个浮点数,表示音频被水印处理的概率 print(message) # message是一个16位的二进制向量 # 在低级别检测消息。 result, message = detector(watermarked_audio, sr) # result是一个大小为batch x 2 x frames的张量,表示每个帧的水印处理的概率(正面和负面) # 被水印处理的音频应该有result[:, 1, :] > 0.5 print(result[:, 1 , :]) # Message是一个大小为batch x 16的张量,表示每个位为1的概率。 # 如果检测器从音频中没有检测到水印,message将是一个随机张量 print(message)
有关如何训练你自己的水印模型的详细信息,请参见这里。
我们欢迎带有改进或建议的拉取请求。 如果你想标记一个问题或提出改进建议,但不知道如何实现,请创建一个GitHub问题。
如果你遇到错误ValueError: not enough values to unpack (expected 3, got 2)
,这是因为我们期望输入是一批音频张量。在你的输入中添加一个
虚拟的批次维度(例如wav.unsqueeze(0)
,参见入门示例笔记本)。
在Windows机器上,如果你遇到错误KeyError raised while resolving interpolation: "Environment 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
作为你的音频后端。
如果你发现这个仓库有用,请考虑给一个星标 :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}
}
字节跳动发布的AI编程神器IDE
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。
全能AI智能助手,随时解答生活与工作的多样问题
问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。
实时语音翻译/同声传译工具
Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。
一键生成PPT和Word,让学习生活更轻松
讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。