
이 저장소는 본 논문 오디오 워터마킹이 오디오 안티-스푸핑 대응책에 미치는 영향 의 공식 구현을 제공합니다. 대화형 데모와 시각화 자료는 여기에서 확인하세요.
WSD는 공개 말뭉치로부터 파생되었으며, 원본 데이터셋을 기준으로 벤치마킹되었습니다:
ASVspoof 2019 (LA) — 모델 학습에 사용되는 학습 분할. 다운로드: https://datashare.is.ed.ac.uk/handle/10283/3336
ASVspoof 2021 (LA & DF) — 평가에 사용.
-LA: https://zenodo.org/record/4837263 -DF: https://zenodo.org/record/4835108
In-the-Wild — 평가에 사용. 다운로드: https://deepfake-total.com/in_the_wild
일반적인 구성: **ASVspoof 2019 LA (train)**으로 학습하고, ASVspoof 2021 LA/DF (eval) 및 In-the-Wild로 평가합니다.
데이터 생성 유틸리티는 data_generation/에 있습니다. 해당 폴더의 README를 따라 WSD 및 그 변형(seen/unseen 워터마크 분할)을 재현할 수 있습니다.
# 1) Clone
git clone https://github.com/Alphawarheads/Watermark_Spoofing.git
cd Watermark_Spoofing
# 2) (Optional) Use the bundled Fairseq snapshot
unzip fairseq-a54021305d6b3c4c5959ac9395135f63202db8f1.zip
# 3) Conda env
conda create -n kpwl python=3.7 -y
conda activate kpwl
# 4) PyTorch (adjust CUDA/ROCm wheels as needed)
pip install torch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1
# 5) Fairseq (editable)
cd fairseq-a54021305d6b3c4c5959ac9395135f63202db8f1
pip install --editable ./
cd ..
# 6) Project requirements
pip install -r requirements.txt
참고: 주요 실험은 4 GPUs/DCUs에서 학습되었습니다.
XLS-R 가중치 다운로드: https://github.com/pytorch/fairseq/tree/main/examples/wav2vec/xlsr
아래 명령어는 세 개의 score.txt 파일(평가 세트당 하나)을 생성합니다. 이 점수는 이후 EER (%) 계산에 사용됩니다.
팁: 항상 전체 플래그인
--eval_track과--eval_output을 사용하세요(--eval로 줄여 쓰지 마세요).
원본(워터마크 없음):
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"
워터마크-스푸핑 (Seen):
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
워터마크-스푸핑 (Unseen):
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
전체 평가 스크립트 세트는
eval.sh를 참조하세요.
사전 학습된 모델 테스트:
_wm_ = 워터마크된 오디오에서 생성된 점수._ori_ = 원본(워터마크 없음) 오디오에서 생성된 점수.# If auto_merge_scores is not in the same file, import it:
# from your_module import auto_merge_scores
TRACK = "ITW" # one of {"LA21", "DF21", "ITW"}
comment = "ori" # label used in your score filenames
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)
프로토콜 구성 방법에 대한 자세한 내용은 generate_data/의 README를 참조하세요.
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
감사의 말 및 서드파티 코드
이 저장소는 다음 오픈소스 프로젝트를 기반으로 하며, 이들의 수정된 구성 요소를 통합합니다:
SLSforASVspoof-2021-DF — https://github.com/QiShanZhang/SLSforASVspoof-2021-DF.git
The-A-Files — https://github.com/pawel-kaczmarek/The-A-Files.git
코드의 일부는 이러한 저장소에서 차용되었습니다. 모든 서드파티 코드는 원래 라이선스 아래에 유지되며, 상위 LICENSE 파일을 참조하고 적용 가능한 모든 저작권 고지를 유지하시기 바랍니다. 귀속 또는 라이선스 세부 정보가 불완전한 경우 알려주시면 신속히 수정하겠습니다.
문의 / 인용 연구에서 이 저장소 또는 WSD/KPWL을 사용하는 경우, 논문을 인용하고 이 저장소로 다시 링크해 주시기 바랍니다.