
मजबूत ऑडियो वॉटरमार्किंग फ्रेमवर्क जो मैग्निट्यूड स्पेक्ट्रोग्राम में बाइनरी संदेश एम्बेड करता है, जिसमें डिफरेंशिएबल अटैक सिमुलेशन, Q-Former पूलिंग, PESQ मास्किंग, और कोडेक तथा सिग्नल-प्रोसेसिंग हमलों के खिलाफ लचीलापन के लिए एरर-करेक्टिंग कोड शामिल हैं।
CRAW के लिए सोर्स कोड, जो STFT-मैग्निट्यूड-डोमेन एम्बेडिंग पर आधारित एक रोबस्ट ऑडियो वॉटरमार्किंग विधि है। एक एनकोडर किसी ऑडियो क्लिप के मैग्निट्यूड स्पेक्ट्रोग्राम में एक बाइनरी संदेश एम्बेड करता है (फेज़ को साफ़ सिग्नल से संरक्षित रखा जाता है); एक डिकोडर सिग्नल-प्रोसेसिंग, न्यूरल-कोडेक, डीनॉइज़िंग और वोकोडर हमलों की एक विस्तृत श्रृंखला के अंतर्गत संदेश को पुनः प्राप्त करता है।
यह रिपॉज़िटरी TimbreWatermarking (NDSS 2024) का एक फ़ोर्क है, जिसे निम्नलिखित के साथ विस्तारित किया गया है:
watermarking_model/ — सभी वॉटरमार्किंग मॉडल कोड:
आर्किटेक्चर (model/), प्रशिक्षण (train.py), हमला
सिमुलेशन (distortions/, utils/distortions.py), मूल्यांकन
(eval/), और एक्सपोर्ट/एक्सप स्क्रिप्ट्स (scripts/)।Python 3.8 आवश्यक है।
नीचे दी गई वेंडर की गई तृतीय-पक्ष निर्भरताएँ इस रिपॉज़िटरी में बंडल नहीं हैं। इनकी आवश्यकता केवल विशेष रूप से FACodec/डीनॉइज़र/TiCodec हमलों के लिए होती है — बुनियादी एम्बेड/डिकोड सत्यापन के लिए नहीं (नीचे अनुमान देखें)। यदि आप उन हमलों को चलाना चाहते हैं, तो सार्वजनिक रिपॉज़िटरीज़ को स्वयं दिखाए गए पथों में क्लोन करें:
git clone https://github.com/lifeiteng/naturalspeech3_facodec.git watermarking_model/naturalspeech3_facodec
git clone https://github.com/modelscope/ClearerVoice-Studio.git watermarking_model/ClearerVoice-Studio
git clone https://github.com/y-ren16/TiCodec.git watermarking_model/codecs/ticodec_repo
मुख्य प्रशिक्षण/मूल्यांकन पाइपलाइन के लिए Python निर्भरताएँ
watermarking_model/requirements.txt में सूचीबद्ध हैं।
कोडेक आक्रमण रेंडरिंग (EnCodec, TiCodec) के लिए, हम प्रत्येक कोडेक के लिए एक अलग
conda वातावरण की सलाह देते हैं, क्योंकि प्रत्येक की अपनी — कभी-कभी
परस्पर विरोधी — निर्भरताएँ होती हैं; प्रत्येक स्क्रिप्ट के
docstring (codecs/encode_*.py) में सेटअप निर्देश देखें।
प्रशिक्षण और मूल्यांकन में LibriSpeech (train + test स्प्लिट) का उपयोग किया जाता है और,
zero-shot क्रॉस-डोमेन प्रयोगों के लिए, LJSpeech का। डेटासेट पथ प्रत्येक प्रयोग के train कॉन्फ़िग
(watermarking_model/config/**/train_*.yaml) के path.raw_path फ़ील्ड में और
eval/export स्क्रिप्ट पर --audio_dir के माध्यम से सेट किए जाते हैं — इन्हें
LibriSpeech और
LJSpeech की अपनी स्थानीय प्रतियों की ओर इंगित करें।
cd watermarking_model
python3 train.py \
-p config/process.yaml \
-m config/craw/model.yaml \
-t config/craw/train.yaml
यह पूर्ण मॉडल (रोबस्ट डिस्टॉर्शन लेयर + Q-Former + रेपिटिशन
ECC) को ट्रेन करता है — वही कॉन्फ़िगरेशन जो CRAW के मुख्य परिणामों के लिए उपयोग किया गया था। ट्रेनिंग लॉग
Weights & Biases में craw प्रोजेक्ट के अंतर्गत जाते हैं; पहले अपने स्वयं के खाते के लिए
WANDB_ENTITY सेट करें/wandb login के माध्यम से लॉग इन करें।
ट्रेनिंग एक निश्चित रैंडम सीड (2022, जो train.py में
random/numpy/torch/torch.cuda के लिए सेट है) का उपयोग पुनरुत्पादनशीलता के लिए करती है।
PESQ मास्किंग एक्सपोर्ट/इन्फ़रेंस समय पर लागू होती है, ट्रेनिंग के दौरान नहीं
— देखें scripts/export_watermarked_dynamic.py --grad_mode spect_ft।
एक प्रीट्रेन्ड CRAW चेकपॉइंट (एपॉक 20, जो पेपर के मुख्य परिणामों से मेल खाता है) इस सबमिशन में
सीधे बंडल किया गया है — किसी डाउनलोड की आवश्यकता नहीं — यहाँ:
watermarking_model/results/craw/ckpt/pth/ (config/craw/model.yaml का
test.model_path यहीं इंगित करता है)।
एक WAV फ़ाइल में संदेश एम्बेड करने और तुरंत उसे वापस डिकोड करने के लिए (कोई हमला लागू नहीं), एक त्वरित सैनिटी जाँच के रूप में:
cd watermarking_model
python3 -m scripts.infer \
-p config/process.yaml \
-m config/craw/model.yaml \
-t config/craw/train.yaml \
--input /path/to/clean.wav \
--output /path/to/watermarked.wav \
--ckpt 20
यह एम्बेडेड/डिकोड किए गए संदेश और बिट सटीकता प्रिंट करता है। पेपर में उपयोग किए गए पूर्ण
attack-suite मूल्यांकन के लिए, नीचे eval/common_test.py देखें।
eval/common_test.py एक प्रशिक्षित
चेकपॉइंट के विरुद्ध पूर्ण attack suite (क्लासिकल सिग्नल
प्रोसेसिंग, न्यूरल कोडेक, डीनॉइज़र, वोकोडर) चलाता है और प्रति-आक्रमण डिकोड सटीकता और निष्ठा (SI-SNR,
PESQ, STOI) रिपोर्ट करता है।
eval/tpr_eval.py स्वच्छ-ऑडियो गलत-सकारात्मक दरों से प्रति-मॉडल डिटेक्शन थ्रेशोल्ड कैलिब्रेट करता है और साझा FPR पर TPR रिपोर्ट करता है;
eval/compare_tpr.py परिणामों को प्रयोगों के आर-पार पेपर की तुलना तालिकाओं में paired-bootstrap महत्व परीक्षण के साथ एकत्रित करता है।
scripts/plot_ablation_sweep.py, scripts/plot_fidelity_sweep.py,
scripts/visualize_mask.py, और scripts/visualize_mask_zoom.py पेपर के आंकड़े उत्पन्न करते हैं।
यदि आप इस कोड का उपयोग करते हैं, तो कृपया उद्धृत करें:
@article{chernin2026craw,
title={CRAW: Codec Robust Audio Watermarking},
author={Chernin, David and Fetaya, Ethan},
journal={arXiv preprint arXiv:2609.03107},
year={2026},
url={https://arxiv.org/abs/2609.03107}
}
TimbreWatermarking (NDSS 2024) पर निर्मित। कोडेक/डीनॉइज़र हमलों के लिए NaturalSpeech3 FACodec, ClearerVoice-Studio, TiCodec, और EnCodec का उपयोग करता है।