Tekijä: Alexandra Diaconu
În anul 2026, Agenția Națională de Securitate Cibernetică a interceptat o serie de transmisii audio cruciale venite din partea a trei facțiuni robotice suspecte, cunoscute sub numele de cod:
Misiunea voastră este să descifrați secretele ascunse în aceste fișiere audio și să demascați o infiltrare majoră. Investigarea se va desfășura în trei două critice.
Toate fișierele audio sunt în format .wav. Fiecare facțiune robotică folosește un algoritm unic de sinteză, însă în cadrul aceleiași facțiuni pot exista mai multe profile vocale (voci diferite) pentru a induce în eroare investigatorii.
S-a descoperit că aceste trei tipuri de roboți au transmis aceleași de mesaje secrete, dar fiecare le-a citit folosind propria tehnologie de sinteză. Agenția a interceptat un pachet de de fișiere audio.
Primiți un set de de fișiere .wav. Știind că în acest set există exact de texte unice și că fiecare text a fost citit exact o dată de către fiecare dintre cei 3 roboți, grupați fișierele în serii de câte 3. Fiecare triplet trebuie să conțină exact aceleași cuvinte rostite, dar de roboți diferiți.
Războiul undelor audio s-a intensificat. Fiecare facțiune folosește zeci de identități vocale diferite pentru a-și ascunde urmele, mutând comunicațiile pe frecvențe dinamice. Agenții noștri de pe teren au reușit totuși o lovitură de proporții: au interceptat serverul central de calibrare și au extras un set de date etichetat. Misiunea voastră este să folosiți aceste mostre pentru a antrena un sistem de recunoaștere capabil să identifice instantaneu originea oricărei transmisii noi, izolând amprenta digitală unică a celor trei tehnologii de sinteză.
Vi se pune la dispoziție un set de antrenare format din de fișiere audio etichetate (exact câte de mostre pentru fiecare dintre cele trei facțiuni: IronClad, Prism și Genesis).
Folosind aceste date pentru a învăța particularitățile acustice ale fiecărui algoritm, va trebui să analizați un set de test ce conține de fișiere audio interceptate recent. Determinați, pentru fiecare fișier din setul de test, cărei facțiuni îi aparține ( pentru IronClad, pentru Prism, pentru Genesis).
Această secțiune clarifică modul în care sunt organizate fișierele de input pentru cele trei subtasks și cum trebuie folosite numele fișierelor în submisie.
Datele sunt organizate în următoarea structură de foldere:
task1/ 001.wav 002.wav ... 300.wavtask2/ task2_train.csv train/ 048.wav 049.wav ... test/ 001.wav 002.wav ... 400.wavToate fișierele audio sunt în format .wav.
Numele fișierelor trebuie folosite exact așa cum apar în foldere, inclusiv extensia .wav.
Folderul task1/ conține cele de fișiere .wav care trebuie grupate în de triplete.
Fiecare triplet trebuie să conțină trei fișiere audio care reprezintă același mesaj, rostit de trei roboți diferiți.
Exemplu de fișiere în folder:
task1/ 001.wav 002.wav 003.wav ...În fișierul de submisie, pentru Subtask 1, datapointID poate fi un identificator numeric de la 1 la 100.
Exemplu:
datapointID,subtaskID,answer1,1,"001.wav|007.wav|009.wav"2,1,"014.wav|120.wav|233.wav"Reguli importante:
100 de linii pentru subtaskID = 1;answer trebuie să conțină exact 3 nume de fișiere .wav;|;task1/ trebuie să apară exact o singură dată în toate tripletele;Pentru Task 2 se oferă:
task2/train/, care conține fișierele audio de antrenare;task2/task2_train.csv, care conține etichetele pentru fișierele din task2/train/;task2/test/, care conține cele 400 de fișiere audio pentru care trebuie prezisă clasa.task2/task2_train.csvFișierul task2/task2_train.csv folosește separatorul ; și conține următoarele coloane:
name;classUnde:
name este numele fișierului .wav din folderul task2/train/;class este clasa facțiunii.Clasele posibile sunt:
1 = IronClad2 = Prism3 = GenesisExemplu:
name;class048.wav;1049.wav;2050.wav;3Folderul task2/test/ conține cele 400 de fișiere pentru care trebuie generate predicții.
Exemplu:
task2/test/ 001.wav 002.wav ... 400.wavPentru fiecare fișier din task2/test/, submisia trebuie să conțină o linie cu:
datapointID,subtaskID,answer001.wav,2,1002.wav,2,3003.wav,2,2Reguli importante:
400 de linii pentru subtaskID = 2;datapointID este numele fișierului audio din task2/test/;001.wav, nu task2/test/001.wav;answer trebuie să fie una dintre valorile 1, 2, 3.Atenție: fișierele de antrenare pentru Task 2 nu sunt organizate în subfoldere pe clase. Etichetele se citesc din fișierul task2/task2_train.csv.
Fișierul de submisie va fi un fișier CSV cu următoarele coloane:
datapointID,subtaskID,answerUnde:
datapointID identifică datapoint-ul evaluat;subtaskID identifică subtask-ul: 1 sau 2;answer conține predicția participantului.Pentru Subtask 1, fiecare linie reprezintă un triplet format din numele a 3 fișiere care conțin același mesaj.
datapointID,subtaskID,answer1,1,"001.wav|007.wav|009.wav"2,1,"014.wav|120.wav|233.wav"3,1,"002.wav|088.wav|177.wav"subtaskID = 1;answer trebuie să conțină exact 3 nume de fișiere .wav;|;datapointID.datapointID,subtaskID,answer1,1,"001.wav|007.wav|009.wav"2,1,"014.wav|120.wav|233.wav"Pentru Subtask 2, fiecare linie reprezintă predicția pentru un fișier audio din setul de test.
datapointID,subtaskID,answer001.wav,2,1002.wav,2,3003.wav,2,2Valoarea din coloana answer trebuie să fie una dintre:
1 = IronClad2 = Prism3 = GenesissubtaskID = 2;datapointID este numele fișierului audio din test;answer trebuie să fie una dintre valorile 1, 2, 3.datapointID,subtaskID,answer1,1,"001.wav|007.wav|009.wav"2,1,"014.wav|120.wav|233.wav"3,1,"002.wav|088.wav|177.wav"001.wav,2,1002.wav,2,3003.wav,2,2Pentru Subtask 1, se evaluează câte triplete au fost identificate corect.
Un triplet este considerat corect dacă cele 3 fișiere din predicție corespund exact aceluiași mesaj din ground truth.
Ordinea fișierelor din triplet nu contează.
Ground truth:001.wav|007.wav|009.wavPredicție:009.wav|001.wav|007.wavAcest triplet este considerat corect.
score_task1 = număr_triplete_corecte / 100Punctajul pentru Subtask 1 este:
punctaj_task1 = 40 * score_task1Un triplet poate fi considerat invalid dacă:
Tripletele invalide primesc 0 puncte.
Pentru Subtask 2, se folosește accuracy.
Se compară eticheta prezisă cu eticheta reală pentru fiecare dintre cele 400 de fișiere din test.
accuracy_task2 = număr_predicții_corecte / 400Punctajul pentru Subtask 2 este:
punctaj_task2 = 60 * accuracy_task2Observație: Dacă pentru task-ul 2, atunci primiți punctaj maxim.
Scorul final este suma punctajelor celor două task-uri.
scor_final = punctaj_task1 + punctaj_task2Metrica generală afișată este calculată ca medie aritmetică între metricile de la cele 2 task-uri.