7xz

// research

AI 딥보이스 탐지 대회 참가 기록, DACON

이 문서는 단순 기록용입니다.

DACON의 ‘신종 보이스피싱 범죄 대응을 위한 AI 딥보이스 탐지 모델 개발’ 대회(행정안전부 - 한국지능정보사회진흥원 주최, 국립과학수사연구원 주관)에 혼자 참가했다. 1차 평가에서 리더보드 상위 15팀만 2차 평가(보고서)로 넘어가는 구조였고, 늦게 참가한데다(마감까지 6일이 남은 상태, 대회 기간은 총 36일), 학교와 일까지 병행하던 중이었기에 시간이 매우 부족했다. 최종, 최고 제출은 총점 0.77943, ADS 0.75611이고 15위선은 총점 0.88040이라 0.101이 모자랐다.

최종 성적은 참가자 1149명, 총 480팀중 155위였다. 제출은 16회

문제

평가 데이터는 4초~1분짜리 오디오 1,200개다. 16 kHz로 통일돼 있고 모노와 스테레오가 섞여 있으며 일부는 전화 채널있고, 파일마다 확률 다섯 개를 낸다. FILE_FAKE_PROB, VOICE_FAKE_PROB, MUSIC_FAKE_PROB, VOICE_PRESENT_PROB, MUSIC_PRESENT_PROB. 보컬은 음성 성분으로 치므로 노래는 음성과 음악이 함께 있는 혼합 오디오이고, AI가 만든 성분이 하나라도 있으면 파일 전체가 FAKE다.

CPS는 음성/음악 존재 확률의 ROC-AUC 평균이고, Voice/Music EER은 해당 성분이 실제로 있는 파일에서만 계산한다. 곱해 보면 유효 가중치가 FILE 0.45, MUSIC 0.27, VOICE 0.18, 존재 판별 0.10이다. 음성 탐지 대회인데 음악 비중이 음성보다 크다.

조건은 이랬다.

  • 코드 제출(submit.zip), 추론 60분 이내, L4 GPU 1장, 오프라인, 하루 3회.
  • 학습 데이터는 주어지지 않아서 직접 구성.
  • 평가 데이터로 학습하거나 튜닝하는 것, 다른 파일의 정보로 예측을 보정하는 것(파일 단위 독립 예측 원칙)은 금지

출발점

baseline은 세 모델의 파이프라인이다. PANNs Cnn14가 음성/음악 존재 확률을 내고, HTDemucs가 보컬과 반주로 분리하고, DF-Arena 1B(음성 안티스푸핑 모델)가 각 트랙의 가짜 확률을 낸다. 4.04초 구간으로 나눠 구간별 점수의 max를 취하고, 파일 점수는 max(음성 존재 × 음성 가짜, 음악 존재 × 음악 가짜) 이다. 다른 참가자가 저장소에 공개한 제출 기록으로는 이 baseline의 ADS가 약 0.660이었다.

로컬 검증을 만들면서 처음 속은 것들

검증 데이터도 없어서 직접 만들었다. 진짜는 AIHub 한국어 음성, Jamendo 음악, In-the-Wild를, 가짜는 pocket-tts, MMS-TTS(VITS), SONICS(Suno·Udio), FakeMusicCaps, kNN-VC 변환 음성 등을 썼다. 여기서 세 번 꼬였었다.

  • 가짜가 코덱 흔적으로 잡혔다. pocket-tts는 Mimi 코덱 기반이라 DF-Arena가 0.99로 바로 잡았고, 그 셋의 EER은 사실상 진짜 쪽 오탐률만 재고 있다. VITS 계열(MMS-TTS)로 바꾸니 EER이 26%였다.
  • 대역폭이 라벨 정보를 제공함. 24 kHz 가짜와 8 kHz 전화 진짜를 비교하면 대역폭만으로 갈린다. 대역을 맞춘 뒤 EER이 0.5%에서 3.5%로 올랐다.
  • “AIHub TTS”라고 받은 데이터는 TTS 학습용 성우 원본 녹음, 곧 진짜였다. 가짜 검증셋을 pocket-tts 합성음으로 교체했다. TTS 학습용 성우 원본 녹음이 아닌, TTS로 만들어진 보이스라고 생각하고 사용했다.

3차 제출은 0.70725에서 0.46725로 급락했다. 원인은 가짜 클래스 인덱스가 뒤집혀 있던 것이었고, In-the-Wild 정답 라벨과 공식 점수 파일로 클래스 순서(index 0 = spoof)를 모델 밖 근거로 확정했다.

제출 기록

#변경ADS비교
1baseline + 초기 fakeprint0.67511출발점
2fakeprint를 여러 생성기로 재학습0.70725+0.0321
3MMS-1B 음성 블렌드0.46725라벨 인덱스 버그
4세그먼트 자르기 + htdemucs_ft + MMS 제거0.692902차 대비 −0.0144
5세그먼트 max 복원 + htdemucs_ft0.700044→5 자르기 −0.0071, 2→5 htdemucs_ft −0.0072
6FILE 결합을 고정 기준표로0.696812차 대비 −0.0104
7겹침 세그먼트 + 음악 잔차 + 잡음제거0.701982차 대비 −0.0053
87 + 음성 판정층 재학습0.691327 대비 −0.0107
9음성 없는 파일은 원본으로 음악 판정0.722812차 대비 +0.0156
109 + 음악만 있는 구간도 원본으로0.72367+0.0009
11음성 판정 DF-Arena 일부 미세조정0.75093+0.0273
1211과 같은 모델, 입력만 원본0.7485611 대비 −0.0024
1311 + 분리 보컬 입력으로도 학습0.75611+0.0052
1413 + 노래 보컬/OmniVoice/코퍼스 판별 차단0.7543013 대비 −0.0018
1513 + OmniVoice/코퍼스 판별 차단(노래 제외)0.7527413 대비 −0.0034
1613 + 음악 판정 DF-Arena 미세조정0.7561113과 소수점 10자리까지 동일

16번은 로컬에서 음악 점수가 13번과 분명히 달랐다(예: 진짜 곡 하나가 0.145에서 0.078). 그런데도 점수가 완전히 같았다. 이 사실을 발견했을때는 이미 대회가 끝나서 데이터를 삭제한 상황이었다.

점수를 올린 세 가지

1. 음악: fakeprint를 여러 생성기로 학습

Afchar 등의 “A Fourier Explanation of AI-music Artifacts”(ISMIR 2025)는 생성 모델 디코더의 업샘플링이 스펙트럼에 규칙적인 피크를 남긴다는 점을 이용한다. 그 곡선을 특징으로 로지스틱 회귀를 학습했다. 입력이 16 kHz라 3~7.5 kHz 대역만 썼고, 진짜는 Jamendo, 가짜는 SONICS와 FakeMusicCaps의 생성기들이다. 가짜 생성기를 한 종류에서 여러 종류로 늘린 것만으로 ADS가 +0.0321 올랐다. 이 대회에서 제일 크게 오른 한 번이었다.

2. 분리가 생성 흔적을 지운다

음악만 있는 파일도 HTDemucs를 거쳐 반주 트랙을 만들고 있었다. 이걸 분리하지 않은 원본 그대로 판정하도록 바꿨다(9번, +0.0156).

처음 로컬 결과는 부풀려져 있었다. 검증용 음악이 fakeprint 학습에 쓴 출처와 겹쳤기 때문이다. fakeprint 학습에 한 번도 쓰지 않은 음악 141곡(Jamendo 테스트 분할 47곡, SONICS 미사용 94곡)으로 다시 측정했다.

조건원본 그대로분리 후
음악만0.5% [0.0, 3.9]14.9% [7.5, 20.7]
말소리 위 배경음악(−12 dB)30.3%31.9%
말소리와 음악이 같은 크기29.3%21.3%

음악 성분 EER이고 괄호는 부트스트랩 95% 구간이다. 음악만 있을 때 분리를 거치면 흔적이 뭉개진다. 말소리가 함께 있으면 원본의 이점이 없고, 같은 크기일 때는 오히려 분리가 도움이 되었다. 결과는 제출 뒤에 찾아본 arXiv 2506.19108의 후속 논문(Rigaud 등, arXiv 2607.26874)과 방향이 같았다. 사람과 AI의 스템을 섞은 하이브리드 곡에서 분리한 뒤 판정하면 생성 흔적이 다른 스템으로 번져서 진짜 보컬의 94.7%를 가짜로 판정했고, 그래서 혼합물에서 판정하고 분리는 성분의 에너지 추정에만 쓰는 방식을 제안하는 내용이었다.

같은 원리를 4초 구간 단위로 확장한 것이 10번이다. 음성이 있는 파일도 PANNs가 “음악만 있다”고 본 구간은 원본을 모아서 판정한다. 누수 없는 순차 혼합(말소리 뒤에 음악) 시험에서 음악 EER이 27.7%에서 4.3%로 내려갔는데, 리더보드에서는 +0.0009밖에 오르지 않았다. 평가셋에 해당되는 파일이 적었던 것으로 생각된다.

3. 탐지기 일부만 미세조정

가장 큰 폭의 두 번째 상승은 DF-Arena를 손보는 데서 나왔다. XLS-R 1B 백본은 고정하고, 층별 가중과 Conformer, 분류층(약 1.85억 개 파라미터)만 학습했다. 두 가지를 신경 썼다.

  • 진짜와 가짜가 같은 코퍼스에서 짝을 이루게 구성 In-the-Wild의 진짜/가짜, 그리고 Zeroth-Korean 화자의 목소리를 Qwen3-TTS로 복제해 같은 화자의 다른 문장을 읽힌 가짜. 진짜만 있는 코퍼스(AIHub)는 학습에서 아예 뺐다.
  • 조건을 매 스텝 새로 생성 깨끗한 음성 35%, 배경음악(SNR −5~20 dB) 30%, 전화 코덱(G.711, AMR-NB) 25%, 잡음 10%.

그 결과 11번이 +0.0273이었고, 추론 때 실제로 넣는 분리 보컬로도 학습시킨 13번이 +0.0052를 더했다. 원본을 넣는 12번은 분리 보컬을 넣는 11번보다 0.0024 낮았다.

실패한 것들

변경로컬리더보드원인
FILE 결합 고정 기준표(6)v3 셋 ADS +0.044 예상−0.0104FILE EER은 1,200개 전체의 순위로 계산돼 유형별 가짜 비율에 좌우됩니다. 로컬 셋 구성이 실제와 다른 것으로 추정
세그먼트 자르기(4)DF-Arena 공식 방식−0.0071확인 못 함
htdemucs_ft(4·5)음성 EER 6.0%→2.0%−0.0072로컬 가짜(pocket-tts)가 0.999로 포화돼 진짜 오탐률만 재고 있었음
겹침 + 잔차 + 잡음제거(7)성분 개선으로 판단−0.0053세 가지를 한꺼번에 바꿔서 원인을 격리하지 못함
고정 임베딩 위 판정층 재학습(8)화자 그룹 CV에서 Voice EER 29.9%→17.6%−0.0107코퍼스 암기(아래)
음악용 DF-Arena 미세조정(MF1)같은 생성기 시험 17.0%→14.9%제출 안 함처음 보는 생성기 시험에서 17.1%→18.6%로 악화
노래 보컬 추가(14)노래 시험 12.9%→2.9%−0.0018노래 시험의 진짜 쪽이 가수 1명(CSD)이라 그 가수를 암기했을 가능성
OmniVoice + 코퍼스 판별 차단(15)코퍼스 제외 시험 17.71%→17.29%−0.0034차이가 오차 범위(아래)

로컬 검증이 리더보드를 맞추기까지

8번에서 처음 알았고 이후 다시 확인한 것은, 화자 단위로만 나눈 검증은 코퍼스 암기를 잡지 못한다는 점이었다.

다조건 판정층(고정 DF-Arena 임베딩 위 로지스틱 회귀)은 처음에 놀라울 만큼 좋았다. 학습에 없는 화자로 시험한 한국어 EER이 43.6%에서 22.2%로 절반이 됐다. 그런데 Zeroth-Korean 1,256개를 학습에서 통째로 뺀 시험으로 바꾸자 17.99%에서 21.96%로 나빠졌다. 판정층이 “AIHub 녹음 환경이면 진짜”라고 외웠던 것이다. AIHub 진짜 음성의 평균 점수가 0.785에서 0.165로 급락했던게 단서였다.

그 뒤로 시험을 이렇게 바꿨다.

  • T2: 학습에서 진짜 코퍼스(AIHub)와 가짜 생성기(MMS-TTS, pocket-tts)를 통째로 뺀 700개 시험. 조건을 입힌 뒤 HTDemucs로 분리한 보컬을 넣는, 실제 제출과 같은 입력.
  • 모든 비교는 부트스트랩 1,000회의 쌍대 비교로 “새 모델이 더 좋은 비율”을 함께 확인
모델T2 EER비교 대상 대비 우세리더보드 ADS
11 (V1)19.00%—0.75093
13 (V2)17.71%V1 대비 95%0.75611
14 (V3)18.71%V2 대비 7%0.75430
15 (V4)17.29%V2 대비 54%0.75274

V1, V2, V3의 순위는 세 번 다 맞았다. V4는 우세 비율이 54%, 곧 동전 던지기 수준이라 예측이 안 됐고 실제로 V2보다 낮게 나왔다. 이 결과에서 “우세 90% 이상일 때만 믿는다”는 기준을 세웠는데, 표본이 네 개뿐이라 규칙이라기보다 경험론적 기준이었다.

결과

총점ADS
1위0.904830.89436
15위0.880400.86784
최고 제출0.779430.75611
200위0.758830.73322

9월 23일에는 204위(총점 0.73546)였고, 리더보드에 보이는 상위권 팀 중 상당수는 여러 명이 팀을 이룬 곳이었다. CPS는 최고 제출이 0.98932로, 존재 판별은 baseline의 PANNs를 그대로 썼다. 근처 순위의 많은 팀도 같은 값이라 순위 차이는 ADS에서 갈렸다.

왜 못 넘었나

  • 격차가 컸다. ADS로 0.112, 내가 한 번에 올린 가장 큰 폭(+0.0321)의 3.5배쯤이었다.
  • 초반에 손질에 시간을 썼다. 4~8번 제출은 대부분 추론 방식을 조금씩 바꾸는 것이었고, 로컬 예측과 한 번도 맞지 않았다. 효과가 있었던 탐지기 미세조정은 마지막 사흘 동안 시작했다.
  • 코퍼스 제외 시험을 늦게 세웠다. 이 기준이 있었으면 4~8번 제출은 올리지 않아도 됐다.
  • 음악 쪽 가짜 생성기 다양성이 끝까지 병목이었다. MusicGen 곡으로 다양성을 넓힌 미세조정(MF2)은 손해를 없앴지만, 16번이 13번과 같은 점수로 나와서 실제 효과를 확인하지 못했다.
  • 그리고 8GB 노트북 GPU 한 장과 혼자라는 조건도 있었다.. 다만 상위 팀이 무엇을 했는지는 공개되지 않았기에, 대조가 불가능했다.

쓴 공개 자원

라이선스를 직접 확인한 것만 적었다.

자원쓴 곳라이선스
In-the-Wild(공식 배포본)미세조정 학습CC BY-SA 4.0
Zeroth-Korean(OpenSLR 40)미세조정 학습CC BY 4.0
Qwen3-TTS-12Hz-0.6B-Base화자 복제 가짜 생성Apache 2.0
OmniVoice화자 복제 가짜 생성(14·15번)Apache 2.0
MusicGen-small가짜 음악 생성(음악 미세조정 시도)CC BY-NC 4.0
CSD(Children’s Song Dataset)진짜 노래 보컬(14번)CC BY-NC-SA 4.0
Afchar 등 fakeprint 코드음악 판정CC BY-NC 4.0

DF-Arena 1B는 NC 라이선스 모델이고 운영진이 사용 가능하다고 답변했다.

esc
  • Pages

    • Home page
    • Work page
    • Log page
    • About page
    • Now page
    • Colophon page
    • Search page
    • lab · live neural network page
  • Work

    • 7xz Lab 2026 · live work
    • Neural network foundational theory 2026 · research work
    • Context-Aware Zone Alert 2025 · shipped work
    • FORA 2026 · shipped work
    • Discord Components V2 Reference 2026 · reference work
    • News Credibility Auditor 2025 · archived work
  • Log

    • AI 딥보이스 탐지 대회 참가 기록, DACON 2026.09.29 · research log
    • 이론적 아름다움과 유체역학으로 가지치기를 시도, NavierFlow 2026.05.18 · research log
    • AI STT앱 개발 시도기, Project L mate 2026.03.04 · project log
    • 포트폴리오 사이트 구축기 2025.11.30 · project log
  • Actions

    • Toggle theme action
    • Toggle content language (KR / EN) action
    • Search everything action