
मजबूत ऑडियो वॉटरमार्किंग फ्रेमवर्क जो मैग्निट्यूड स्पेक्ट्रोग्राम में बाइनरी संदेश एम्बेड करता है, जिसमें डिफरेंशिएबल अटैक सिमुलेशन, Q-Former पूलिंग, PESQ मास्किंग, और कोडेक तथा सिग्नल-प्रोसेसिंग हमलों के खिलाफ लचीलापन के लिए एरर-करेक्टिंग कोड शामिल हैं।
CRAW के लिए सोर्स कोड, जो STFT-मैग्निट्यूड-डोमेन एम्बेडिंग पर आधारित एक मजबूत ऑडियो वॉटरमार्किंग विधि है। एक एन्कोडर एक बाइनरी संदेश को ऑडियो क्लिप के मैग्निट्यूड स्पेक्ट्रोग्राम में एम्बेड करता है (फेज़ क्लीन सिग्नल से संरक्षित रहता है); एक डिकोडर सिग्नल-प्रोसेसिंग, न्यूरल-कोडेक, डीनॉइज़िंग और वोकोडर हमलों की एक विस्तृत श्रृंखला के तहत संदेश को पुनर्प्राप्त करता है।
यह रिपॉजिटरी TimbreWatermarking (NDSS 2024) का एक फोर्क है, जिसे निम्नलिखित के साथ विस्तारित किया गया है:
watermarking_model/ — सभी वॉटरमार्किंग मॉडल कोड: आर्किटेक्चर (model/), प्रशिक्षण (train.py), हमला सिमुलेशन (distortions/, utils/distortions.py), मूल्यांकन (eval/), और एक्सपोर्ट/एक्सप स्क्रिप्ट (scripts/)।Python 3.8 की आवश्यकता है।
नीचे दिए गए वेंडर किए गए तृतीय-पक्ष निर्भरताएँ इस रिपॉजिटरी में बंडल नहीं हैं। वे केवल FACodec/डीनॉइज़र/TiCodec हमलों के लिए विशेष रूप से आवश्यक हैं — बुनियादी एम्बेड/डिकोड सत्यापन के लिए नहीं (नीचे Inference देखें)। यदि आप उन हमलों को चलाना चाहते हैं, तो सार्वजनिक रिपॉजिटरी को स्वयं नीचे दिखाए गए पथों में क्लोन करें:
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 स्प्लिट) और, ज़ीरो-शॉट क्रॉस-डोमेन प्रयोगों के लिए, 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 के मुख्य परिणामों के लिए उपयोग किया जाने वाला कॉन्फ़िगरेशन। प्रशिक्षण craw प्रोजेक्ट के तहत Weights & Biases में लॉग करता है; पहले अपने खाते के लिए WANDB_ENTITY सेट करें/wandb login के माध्यम से लॉग इन करें।
प्रशिक्षण पुनरुत्पादन के लिए एक निश्चित यादृच्छिक बीज (2022, train.py में random/numpy/torch/torch.cuda के लिए सेट) का उपयोग करता है।
PESQ मास्किंग एक्सपोर्ट/अनुमान समय पर लागू होती है, प्रशिक्षण के दौरान नहीं — scripts/export_watermarked_dynamic.py --grad_mode spect_ft देखें।
एक पूर्व-प्रशिक्षित CRAW चेकपॉइंट (epoch 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
यह एम्बेडेड/डिकोड किया गया संदेश और बिट सटीकता प्रिंट करता है। पेपर में उपयोग किए गए पूर्ण हमला-सूट मूल्यांकन के लिए, नीचे eval/common_test.py देखें।
eval/common_test.py एक प्रशिक्षित चेकपॉइंट के खिलाफ पूर्ण हमला सूट (शास्त्रीय सिग्नल प्रोसेसिंग, न्यूरल कोडेक, डीनॉइज़र, वोकोडर) चलाता है और प्रति-हमला डिकोड सटीकता और फिडेलिटी (SI-SNR, PESQ, STOI) की रिपोर्ट करता है।
eval/tpr_eval.py क्लीन-ऑडियो फॉल्स-पॉज़िटिव दरों से एक प्रति-मॉडल डिटेक्शन थ्रेशोल्ड को कैलिब्रेट करता है और एक साझा FPR पर TPR की रिपोर्ट करता है; eval/compare_tpr.py पेयर्ड-बूटस्ट्रैप महत्व परीक्षण के साथ प्रयोगों में परिणामों को पेपर के तुलना तालिकाओं में एकत्रित करता है। scripts/plot_ablation_sweep.py, scripts/plot_fidelity_sweep.py, scripts/visualize_mask.py, और scripts/visualize_mask_zoom.py पेपर के आंकड़े उत्पन्न करते हैं।
TimbreWatermarking (NDSS 2024) पर निर्मित। कोडेक/डीनॉइज़र हमलों के लिए NaturalSpeech3 FACodec, ClearerVoice-Studio, TiCodec, और EnCodec का उपयोग करता है।