このリポジトリは、私たちの論文「THE IMPACT OF AUDIO WATERMARKING ON AUDIO ANTI-SPOOFING COUNTERMEASURES」の公式実装を提供します。 インタラクティブなデモと可視化はこちらからご覧いただけます。
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とそのバリアント(既知/未知の透かし分割)を再現してください。
# 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 GPU/DCU でトレーニングしました。
XLS-Rの重みは次からダウンロードしてください: https://github.com/pytorch/fairseq/tree/main/examples/wav2vec/xlsr
以下のコマンドは、3つの score.txt ファイル(評価セットごとに1つ)を生成します。これらのスコアは、後で 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"
Watermark-Spoof(既知):
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(未知):
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を研究で使用する場合は、論文を引用し、このリポジトリへリンクを張ってください。