
Code de recherche et jeu de données (WSD) pour évaluer l'impact du tatouage audio sur l'anti- usurpation, à l'aide de wav2vec2 XLS-R et de l'apprentissage préservant les connaissances.
Ce dépôt fournit l'implémentation officielle de notre article : L'IMPACT DU TATOUAGE AUDIO SUR LES CONTRE-MESURES ANTI-TROMPERIE AUDIO . Explorez la démo interactive et les visualisations ici.
Nous dérivons le WSD de corpus publics et le comparons aux ensembles de données d'origine :
ASVspoof 2019 (LA) — division d'entraînement utilisée pour l'entraînement du modèle. Téléchargement : https://datashare.is.ed.ac.uk/handle/10283/3336
ASVspoof 2021 (LA & DF) — utilisé pour l'évaluation.
-LA : https://zenodo.org/record/4837263 -DF : https://zenodo.org/record/4835108
In-the-Wild — utilisé pour l'évaluation. Téléchargement : https://deepfake-total.com/in_the_wild
Configuration typique : entraîner sur ASVspoof 2019 LA (train) ; évaluer sur ASVspoof 2021 LA/DF (eval) et In-the-Wild.
Les utilitaires de génération de données se trouvent dans data_generation/. Suivez le README de ce dossier pour reproduire WSD et ses variantes (divisions de tatouage vues/non vues).
# 1) Clone
git clone https://github.com/Alphawarheads/Watermark_Spoofing.git
cd Watermark_Spoofing
# 2) (Optionnel) Utiliser l'instantané Fairseq fourni
unzip fairseq-a54021305d6b3c4c5959ac9395135f63202db8f1.zip
# 3) Environnement Conda
conda create -n kpwl python=3.7 -y
conda activate kpwl
# 4) PyTorch (ajustez les wheels CUDA/ROCm si nécessaire)
pip install torch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1
# 5) Fairseq (éditable)
cd fairseq-a54021305d6b3c4c5959ac9395135f63202db8f1
pip install --editable ./
cd ..
# 6) Exigences du projet
pip install -r requirements.txt
Remarques : nos expériences principales ont été entraînées sur 4 GPU/DCU.
Téléchargez les poids XLS-R depuis : https://github.com/pytorch/fairseq/tree/main/examples/wav2vec/xlsr
Les commandes ci-dessous produisent trois fichiers score.txt (un par ensemble d'évaluation). Ces scores sont ensuite utilisés pour calculer l'EER (%).
Astuce : Utilisez toujours les indicateurs complets
--eval_tracket--eval_output(ne les abrégez pas en--eval).
Original (sans tatouage) :
TRACK=LA
PROTOCOLS=/public/home/qinxy/.../ASVspoof2021.LA.cm.eval.trl.txt
DATABASE_PATH=/public/home/qinxy/AudioData/Antispoofing/ASVspoof2021/ASVspoof2021_LA_eval/flac/
EVAL_OUTPUT=/public/home/qinxy/.../test2/${COMMENT}_eval_ori_LA21.txt
CUDA_VISIBLE_DEVICES=0,1,2,3 \
torchrun --standalone --nproc_per_node=4 \
main_multinodes.py --track="$TRACK" --is_eval --eval \
--model_path models/model_4dcu_kpwl.pth \
--protocols_path="$PROTOCOLS" \
--database_path="$DATABASE_PATH" \
--eval_output="$EVAL_OUTPUT"
Watermark-Spoof (Vu) :
TRACK=LA
PROTOCOLS=/public/home/qinxy/zhangzs/watermarking/The-A-Files-master/protocols/tagged/LA21/protocol_wm_75_only.txt
DATABASE_PATH=/public/home/qinxy/AudioData/Antispoofing/LA21_phase1/
EVAL_OUTPUT=/public/home/qinxy/.../test2/${COMMENT}_eval_wm_seen_LA21.txt
Watermark-Spoof (Non vu) :
TRACK=LA
PROTOCOLS=/public/home/qinxy/zhangzs/watermarking/The-A-Files-master/protocols/tagged_phase2/LA21/split/protocol_wm_75_only.txt
DATABASE_PATH=/public/home/qinxy/AudioData/Antispoofing/LA21_phase2/
EVAL_OUTPUT=/public/home/qinxy/.../test2/${COMMENT}_eval_wm_unseen_LA21.txt
Voir
eval.shpour l'ensemble complet des scripts d'évaluation.
Testez avec nos modèles pré-entraînés :
_wm_ dans un nom de fichier = scores produits sur de l'audio avec tatouage._ori_ dans un nom de fichier = scores produits sur de l'audio original (sans tatouage).# Si auto_merge_scores n'est pas dans le même fichier, importez-le :
# from your_module import auto_merge_scores
TRACK = "ITW" # l'un de {"LA21", "DF21", "ITW"}
comment = "ori" # étiquette utilisée dans vos noms de fichiers de scores
outs = auto_merge_scores(
track=TRACK,
score_wm_path=f"/public/.../test2/{comment}_train_eval_wm_SLS_{TRACK}.txt",
score_ori_path=f"/public/.../test2/{comment}_train_eval_ori_SLS_{TRACK}.txt",
)
print("Output Results:")
for p in outs:
print(" -", p)
Voir le README dans generate_data/ pour plus de détails sur la construction des protocoles.
CUDA_VISIBLE_DEVICES=0,1,2,3 \
torchrun --standalone --nproc_per_node=4 \
main_multinodes.py \
--track=DF --lr=0.000001 --batch_size=5 --loss=WCE \
--num_epochs=50 --comment 4dcu_baseline
CUDA_VISIBLE_DEVICES=0,1,2,3 \
torchrun --standalone --nproc_per_node=4 \
main_kpwl.py \
--eval_track=DF --lr=5e-7 --batch_size=5 --num_epochs=2 \
--model_path best_model.pth \
--comment model_4dcu_kpwl
Remerciements et code tiers
Ce dépôt s'appuie sur et intègre des composants modifiés des projets open source suivants :
SLSforASVspoof-2021-DF — https://github.com/QiShanZhang/SLSforASVspoof-2021-DF.git
The-A-Files — https://github.com/pawel-kaczmarek/The-A-Files.git
Certaines parties du code sont adaptées de ces dépôts. Tout code tiers reste sous ses licences d'origine ; veuillez vous référer aux fichiers LICENSE en amont et conserver toutes les mentions de copyright applicables. Si une attribution ou un détail de licence est incomplet, faites-le-nous savoir et nous le corrigerons rapidement.
Contact / Citation Si vous utilisez ce dépôt ou WSD/KPWL dans vos recherches, veuillez citer l'article et créer un lien vers ce dépôt.