added random song sampling
Browse files
utils.py
CHANGED
|
@@ -8,7 +8,8 @@ import time
|
|
| 8 |
import os
|
| 9 |
from huggingface_hub import CommitScheduler
|
| 10 |
from functools import partial
|
| 11 |
-
|
|
|
|
| 12 |
|
| 13 |
def enable_buttons_side_by_side():
|
| 14 |
return tuple(gr.update(visible=True, interactive=True) for i in range(6))
|
|
@@ -19,6 +20,8 @@ def disable_buttons_side_by_side():
|
|
| 19 |
|
| 20 |
os.makedirs('data', exist_ok = True)
|
| 21 |
LOG_FILENAME = os.path.join('data', f'log_{datetime.now().isoformat()}.json')
|
|
|
|
|
|
|
| 22 |
enable_btn = gr.update(interactive=True, visible=True)
|
| 23 |
disable_btn = gr.update(interactive=False)
|
| 24 |
invisible_btn = gr.update(interactive=False, visible=False)
|
|
@@ -36,6 +39,31 @@ scheduler = CommitScheduler(
|
|
| 36 |
every = 10,
|
| 37 |
)
|
| 38 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 39 |
|
| 40 |
def vote_last_response(state, vote_type, request: gr.Request):
|
| 41 |
with scheduler.lock:
|
|
@@ -49,6 +77,16 @@ def vote_last_response(state, vote_type, request: gr.Request):
|
|
| 49 |
}
|
| 50 |
fout.write(json.dumps(data) + "\n")
|
| 51 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 52 |
|
| 53 |
|
| 54 |
class AudioStateIG:
|
|
@@ -74,15 +112,16 @@ def get_ip(request: gr.Request):
|
|
| 74 |
return ip
|
| 75 |
|
| 76 |
|
| 77 |
-
def get_song():
|
| 78 |
-
|
| 79 |
-
|
| 80 |
-
|
|
|
|
| 81 |
|
| 82 |
def generate_songs(state0, state1):
|
| 83 |
-
|
| 84 |
-
state0, audio_a = get_song()
|
| 85 |
-
state1, audio_b = get_song()
|
| 86 |
|
| 87 |
return state0, audio_a, state1, audio_b, "Model A: Vote to Reveal", "Model B: Vote to Reveal"
|
| 88 |
|
|
@@ -98,9 +137,9 @@ def leftvote_last_response(
|
|
| 98 |
vote_last_response(
|
| 99 |
[state0, state1], "leftvote", request
|
| 100 |
)
|
| 101 |
-
return (disable_btn,) *
|
| 102 |
-
gr.Markdown(f"### Model A: {state0.model_name
|
| 103 |
-
gr.Markdown(f"### Model B: {state1.model_name
|
| 104 |
|
| 105 |
def rightvote_last_response(
|
| 106 |
state0, state1, request: gr.Request
|
|
@@ -108,9 +147,9 @@ def rightvote_last_response(
|
|
| 108 |
vote_last_response(
|
| 109 |
[state0, state1], "rightvote", request
|
| 110 |
)
|
| 111 |
-
return (disable_btn,) *
|
| 112 |
-
gr.Markdown(f"### Model A: {state0.model_name
|
| 113 |
-
gr.Markdown(f"### Model B: {state1.model_name
|
| 114 |
|
| 115 |
def tievote_last_response(
|
| 116 |
state0, state1, request: gr.Request
|
|
@@ -118,9 +157,9 @@ def tievote_last_response(
|
|
| 118 |
vote_last_response(
|
| 119 |
[state0, state1], "tievote", request
|
| 120 |
)
|
| 121 |
-
return (disable_btn,) *
|
| 122 |
-
gr.Markdown(f"### Model A: {state0.model_name
|
| 123 |
-
gr.Markdown(f"### Model B: {state1.model_name
|
| 124 |
|
| 125 |
def bothbadvote_last_response(
|
| 126 |
state0, state1, request: gr.Request
|
|
@@ -128,8 +167,28 @@ def bothbadvote_last_response(
|
|
| 128 |
vote_last_response(
|
| 129 |
[state0, state1], "bothbadvote", request
|
| 130 |
)
|
| 131 |
-
return (disable_btn,) *
|
| 132 |
-
gr.Markdown(f"### Model A: {state0.model_name
|
| 133 |
-
gr.Markdown(f"### Model B: {state1.model_name
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 134 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 135 |
|
|
|
|
| 8 |
import os
|
| 9 |
from huggingface_hub import CommitScheduler
|
| 10 |
from functools import partial
|
| 11 |
+
import pandas as pd
|
| 12 |
+
import numpy as np
|
| 13 |
|
| 14 |
def enable_buttons_side_by_side():
|
| 15 |
return tuple(gr.update(visible=True, interactive=True) for i in range(6))
|
|
|
|
| 20 |
|
| 21 |
os.makedirs('data', exist_ok = True)
|
| 22 |
LOG_FILENAME = os.path.join('data', f'log_{datetime.now().isoformat()}.json')
|
| 23 |
+
FLAG_FILENAME = os.path.join('data', f'flagged_{datetime.now().isoformat()}.json')
|
| 24 |
+
|
| 25 |
enable_btn = gr.update(interactive=True, visible=True)
|
| 26 |
disable_btn = gr.update(interactive=False)
|
| 27 |
invisible_btn = gr.update(interactive=False, visible=False)
|
|
|
|
| 39 |
every = 10,
|
| 40 |
)
|
| 41 |
|
| 42 |
+
df = pd.read_csv('/data/singfake_english.csv')
|
| 43 |
+
df.filename = '/data/Songs/' + df.filename + '.mp3'
|
| 44 |
+
|
| 45 |
+
|
| 46 |
+
indices = list(df.index)
|
| 47 |
+
main_indices = indices.copy()
|
| 48 |
+
|
| 49 |
+
def init_indices():
|
| 50 |
+
global indices, main_indices
|
| 51 |
+
indices = main_indices
|
| 52 |
+
|
| 53 |
+
|
| 54 |
+
|
| 55 |
+
def pick_and_remove_two():
|
| 56 |
+
global indices
|
| 57 |
+
if len(indices) < 2:
|
| 58 |
+
init_indices()
|
| 59 |
+
|
| 60 |
+
np.random.shuffle(indices)
|
| 61 |
+
sel_indices = indices[:2].copy()
|
| 62 |
+
indices = indices[2:]
|
| 63 |
+
return sel_indices
|
| 64 |
+
|
| 65 |
+
|
| 66 |
+
|
| 67 |
|
| 68 |
def vote_last_response(state, vote_type, request: gr.Request):
|
| 69 |
with scheduler.lock:
|
|
|
|
| 77 |
}
|
| 78 |
fout.write(json.dumps(data) + "\n")
|
| 79 |
|
| 80 |
+
def flag_last_response(state, vote_type, request: gr.Request):
|
| 81 |
+
with scheduler.lock:
|
| 82 |
+
with open(FLAG_FILENAME, "a") as fout:
|
| 83 |
+
data = {
|
| 84 |
+
"tstamp": round(time.time(), 4),
|
| 85 |
+
"type": vote_type,
|
| 86 |
+
"state": state.dict(),
|
| 87 |
+
"ip": get_ip(request),
|
| 88 |
+
}
|
| 89 |
+
fout.write(json.dumps(data) + "\n")
|
| 90 |
|
| 91 |
|
| 92 |
class AudioStateIG:
|
|
|
|
| 112 |
return ip
|
| 113 |
|
| 114 |
|
| 115 |
+
def get_song(idx, df = df):
|
| 116 |
+
row = df.loc[idx]
|
| 117 |
+
audio_path = row.filename
|
| 118 |
+
state = AudioStateIG(row['Bonafide Or Spoof'])
|
| 119 |
+
return state, audio_path
|
| 120 |
|
| 121 |
def generate_songs(state0, state1):
|
| 122 |
+
idx0, idx1 = pick_and_remove_two()
|
| 123 |
+
state0, audio_a = get_song(idx0)
|
| 124 |
+
state1, audio_b = get_song(idx1)
|
| 125 |
|
| 126 |
return state0, audio_a, state1, audio_b, "Model A: Vote to Reveal", "Model B: Vote to Reveal"
|
| 127 |
|
|
|
|
| 137 |
vote_last_response(
|
| 138 |
[state0, state1], "leftvote", request
|
| 139 |
)
|
| 140 |
+
return (disable_btn,) * 6 + (
|
| 141 |
+
gr.Markdown(f"### Model A: {state0.model_name}", visible=True),
|
| 142 |
+
gr.Markdown(f"### Model B: {state1.model_name}", visible=True))
|
| 143 |
|
| 144 |
def rightvote_last_response(
|
| 145 |
state0, state1, request: gr.Request
|
|
|
|
| 147 |
vote_last_response(
|
| 148 |
[state0, state1], "rightvote", request
|
| 149 |
)
|
| 150 |
+
return (disable_btn,) * 6 + (
|
| 151 |
+
gr.Markdown(f"### Model A: {state0.model_name}", visible=True),
|
| 152 |
+
gr.Markdown(f"### Model B: {state1.model_name}", visible=True))
|
| 153 |
|
| 154 |
def tievote_last_response(
|
| 155 |
state0, state1, request: gr.Request
|
|
|
|
| 157 |
vote_last_response(
|
| 158 |
[state0, state1], "tievote", request
|
| 159 |
)
|
| 160 |
+
return (disable_btn,) * 6 + (
|
| 161 |
+
gr.Markdown(f"### Model A: {state0.model_name}", visible=True),
|
| 162 |
+
gr.Markdown(f"### Model B: {state1.model_name}", visible=True))
|
| 163 |
|
| 164 |
def bothbadvote_last_response(
|
| 165 |
state0, state1, request: gr.Request
|
|
|
|
| 167 |
vote_last_response(
|
| 168 |
[state0, state1], "bothbadvote", request
|
| 169 |
)
|
| 170 |
+
return (disable_btn,) * 6 + (
|
| 171 |
+
gr.Markdown(f"### Model A: {state0.model_name}", visible=True),
|
| 172 |
+
gr.Markdown(f"### Model B: {state1.model_name}", visible=True))
|
| 173 |
+
|
| 174 |
+
def leftheard_last_response(
|
| 175 |
+
state, request: gr.Request
|
| 176 |
+
):
|
| 177 |
+
vote_last_response(
|
| 178 |
+
[state], "leftheard", request
|
| 179 |
+
)
|
| 180 |
+
return (disable_btn,) * 6 + (
|
| 181 |
+
gr.Markdown(f"### Model A: {state0.model_name}", visible=True),
|
| 182 |
+
gr.Markdown(f"### Model B: {state1.model_name}", visible=True))
|
| 183 |
+
|
| 184 |
|
| 185 |
+
def rightheard_last_response(
|
| 186 |
+
state, request: gr.Request
|
| 187 |
+
):
|
| 188 |
+
vote_last_response(
|
| 189 |
+
[state], "rightheard", request
|
| 190 |
+
)
|
| 191 |
+
return (disable_btn,) * 6 + (
|
| 192 |
+
gr.Markdown(f"### Model A: {state0.model_name}", visible=True),
|
| 193 |
+
gr.Markdown(f"### Model B: {state1.model_name}", visible=True))
|
| 194 |
|