
إطار عمل قوي للعلامات المائية الصوتية يدمج الرسائل الثنائية في المخططات الطيفية للمطال، مع محاكاة هجمات قابلة للتفاضل، وتجميع Q-Former، وإخفاء PESQ، ورموز تصحيح الأخطاء لتحقيق المرونة ضد هجمات الترميز ومعالجة الإشارات.
الكود المصدري لـ CRAW، وهي طريقة علامة مائية صوتية قوية مبنية على الدمج في مجال حجم تحويل فورييه قصير المدى (STFT). يقوم المشفر بدمج رسالة ثنائية في الطيف الحجمي لمقطع صوتي (يتم الحفاظ على الطور من الإشارة النظيفة)؛ بينما يستعيد المفكك الرسالة تحت مجموعة واسعة من هجمات معالجة الإشارات، والترميز العصبي، وإزالة الضوضاء، وهجمات المُركِّب الصوتي (Vocoder).
هذا المستودع هو نسخة مشتقة (fork) من 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 (تقسيمات التدريب + الاختبار) و، من أجل
تجارب النطاق الصفري عبر المجالات، LJSpeech. يتم تعيين مسارات مجموعات البيانات في
حقل path.raw_path في إعداد التدريب لكل تجربة
(watermarking_model/config/**/train_*.yaml) وعبر --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/ (يشير test.model_path في
config/craw/model.yaml إلى هنا).
لتضمين رسالة في ملف 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 بمعايرة عتبة كشف لكل نموذج من
معدلات الإيجابية الكاذبة للصوت النظيف ويبلغ عن TPR عند FPR مشترك؛
يقوم 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 بإنشاء
أشكال الورقة.
مبني على TimbreWatermarking (NDSS 2024). يستخدم NaturalSpeech3 FACodec، وClearerVoice-Studio، وTiCodec، و EnCodec لهجمات الترميز/إزالة الضوضاء.