Spaces:
Running
Running
DB: link spokentext to votelog ID
Browse files
app.py
CHANGED
|
@@ -411,10 +411,16 @@ def create_db_if_missing():
|
|
| 411 |
cursor.execute('''
|
| 412 |
CREATE TABLE IF NOT EXISTS spokentext (
|
| 413 |
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
|
|
| 414 |
spokentext TEXT,
|
|
|
|
| 415 |
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
| 416 |
);
|
| 417 |
''')
|
|
|
|
|
|
|
|
|
|
|
|
|
| 418 |
def get_db():
|
| 419 |
return sqlite3.connect(DB_PATH)
|
| 420 |
|
|
@@ -755,10 +761,15 @@ def upvote_model(model, uname):
|
|
| 755 |
with scheduler.lock:
|
| 756 |
conn.commit()
|
| 757 |
cursor.close()
|
| 758 |
-
def log_text(text):
|
|
|
|
|
|
|
|
|
|
|
|
|
| 759 |
conn = get_db()
|
| 760 |
cursor = conn.cursor()
|
| 761 |
-
|
|
|
|
| 762 |
with scheduler.lock:
|
| 763 |
conn.commit()
|
| 764 |
cursor.close()
|
|
@@ -773,36 +784,52 @@ def downvote_model(model, uname):
|
|
| 773 |
conn.commit()
|
| 774 |
cursor.close()
|
| 775 |
|
| 776 |
-
def a_is_better(model1, model2, userid):
|
| 777 |
-
|
| 778 |
-
|
| 779 |
-
|
| 780 |
-
|
| 781 |
-
|
| 782 |
-
|
| 783 |
-
|
| 784 |
-
|
| 785 |
-
|
| 786 |
-
|
| 787 |
-
|
| 788 |
-
|
| 789 |
-
|
| 790 |
-
|
| 791 |
-
|
| 792 |
-
# print("B is better", model1, model2)
|
| 793 |
-
if not model1 in AVAILABLE_MODELS.keys() and not model1 in AVAILABLE_MODELS.values():
|
| 794 |
raise gr.Error('Sorry, please try voting again.')
|
|
|
|
|
|
|
| 795 |
userid = mkuuid(userid)
|
| 796 |
if model1 and model2:
|
| 797 |
conn = get_db()
|
| 798 |
cursor = conn.cursor()
|
| 799 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 800 |
with scheduler.lock:
|
| 801 |
conn.commit()
|
|
|
|
|
|
|
|
|
|
| 802 |
cursor.close()
|
| 803 |
-
|
| 804 |
-
|
| 805 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 806 |
def both_bad(model1, model2, userid):
|
| 807 |
userid = mkuuid(userid)
|
| 808 |
if model1 and model2:
|
|
@@ -954,17 +981,20 @@ def synthandreturn(text):
|
|
| 954 |
except:
|
| 955 |
pass
|
| 956 |
# Get two random models
|
|
|
|
| 957 |
# forced model: your TTS model versus The World!!!
|
| 958 |
# mdl1 = 'Pendrokar/xVASynth'
|
| 959 |
-
vsModels = dict(AVAILABLE_MODELS)
|
| 960 |
# del vsModels[mdl1]
|
| 961 |
# randomize position of the forced model
|
| 962 |
-
mdl2 = random.sample(list(vsModels.keys()), 1)
|
| 963 |
# forced random
|
| 964 |
# mdl1, mdl2 = random.sample(list([mdl1, mdl2[0]]), 2)
|
|
|
|
| 965 |
# actual random
|
| 966 |
mdl1, mdl2 = random.sample(list(AVAILABLE_MODELS.keys()), 2)
|
| 967 |
-
|
|
|
|
| 968 |
print("[debug] Using", mdl1, mdl2)
|
| 969 |
def predict_and_update_result(text, model, result_storage):
|
| 970 |
# 3 attempts
|
|
|
|
| 411 |
cursor.execute('''
|
| 412 |
CREATE TABLE IF NOT EXISTS spokentext (
|
| 413 |
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 414 |
+
votelog_id INTEGER UNIQUE,
|
| 415 |
spokentext TEXT,
|
| 416 |
+
lang TEXT,
|
| 417 |
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
| 418 |
);
|
| 419 |
''')
|
| 420 |
+
# foreign keys
|
| 421 |
+
cursor.execute('''
|
| 422 |
+
CREATE UNIQUE INDEX IF NOT EXISTS st_to_vl ON spokentext(votelog_id);
|
| 423 |
+
''')
|
| 424 |
def get_db():
|
| 425 |
return sqlite3.connect(DB_PATH)
|
| 426 |
|
|
|
|
| 761 |
with scheduler.lock:
|
| 762 |
conn.commit()
|
| 763 |
cursor.close()
|
| 764 |
+
def log_text(text, voteid):
|
| 765 |
+
# log only hardcoded sentences
|
| 766 |
+
if (text not in sents):
|
| 767 |
+
return
|
| 768 |
+
|
| 769 |
conn = get_db()
|
| 770 |
cursor = conn.cursor()
|
| 771 |
+
# TODO: multilang
|
| 772 |
+
cursor.execute('INSERT INTO spokentext (spokentext, lang, votelog_id) VALUES (?,?,?)', (text,'en',voteid))
|
| 773 |
with scheduler.lock:
|
| 774 |
conn.commit()
|
| 775 |
cursor.close()
|
|
|
|
| 784 |
conn.commit()
|
| 785 |
cursor.close()
|
| 786 |
|
| 787 |
+
def a_is_better(model1, model2, userid, text):
|
| 788 |
+
return is_better(model1, model2, userid, text, True)
|
| 789 |
+
def b_is_better(model1, model2, userid, text):
|
| 790 |
+
return is_better(model1, model2, userid, text, False)
|
| 791 |
+
|
| 792 |
+
def is_better(model1, model2, userid, text, chose_a):
|
| 793 |
+
if(
|
| 794 |
+
(
|
| 795 |
+
not model1 in AVAILABLE_MODELS.keys()
|
| 796 |
+
and not model1 in AVAILABLE_MODELS.values()
|
| 797 |
+
)
|
| 798 |
+
or (
|
| 799 |
+
not model2 in AVAILABLE_MODELS.keys()
|
| 800 |
+
and not model2 in AVAILABLE_MODELS.values()
|
| 801 |
+
)
|
| 802 |
+
):
|
|
|
|
|
|
|
| 803 |
raise gr.Error('Sorry, please try voting again.')
|
| 804 |
+
|
| 805 |
+
# userid is unique for each cast vote pair
|
| 806 |
userid = mkuuid(userid)
|
| 807 |
if model1 and model2:
|
| 808 |
conn = get_db()
|
| 809 |
cursor = conn.cursor()
|
| 810 |
+
sql_query = 'INSERT INTO votelog (username, chosen, rejected) VALUES (?, ?, ?)'
|
| 811 |
+
if chose_a:
|
| 812 |
+
cursor.execute(sql_query, (str(userid), model1, model2))
|
| 813 |
+
else:
|
| 814 |
+
cursor.execute(sql_query, (str(userid), model2, model1))
|
| 815 |
+
|
| 816 |
with scheduler.lock:
|
| 817 |
conn.commit()
|
| 818 |
+
# also retrieve primary key ID
|
| 819 |
+
cursor.execute('SELECT last_insert_rowid()')
|
| 820 |
+
votelogid = cursor.fetchone()[0]
|
| 821 |
cursor.close()
|
| 822 |
+
|
| 823 |
+
if chose_a:
|
| 824 |
+
upvote_model(model1, str(userid))
|
| 825 |
+
downvote_model(model2, str(userid))
|
| 826 |
+
else:
|
| 827 |
+
upvote_model(model2, str(userid))
|
| 828 |
+
downvote_model(model1, str(userid))
|
| 829 |
+
log_text(text, votelogid)
|
| 830 |
+
|
| 831 |
+
return reload(model1, model2, userid, chose_a=chose_a, chose_b=(not chose_a))
|
| 832 |
+
|
| 833 |
def both_bad(model1, model2, userid):
|
| 834 |
userid = mkuuid(userid)
|
| 835 |
if model1 and model2:
|
|
|
|
| 981 |
except:
|
| 982 |
pass
|
| 983 |
# Get two random models
|
| 984 |
+
|
| 985 |
# forced model: your TTS model versus The World!!!
|
| 986 |
# mdl1 = 'Pendrokar/xVASynth'
|
| 987 |
+
# vsModels = dict(AVAILABLE_MODELS)
|
| 988 |
# del vsModels[mdl1]
|
| 989 |
# randomize position of the forced model
|
| 990 |
+
# mdl2 = random.sample(list(vsModels.keys()), 1)
|
| 991 |
# forced random
|
| 992 |
# mdl1, mdl2 = random.sample(list([mdl1, mdl2[0]]), 2)
|
| 993 |
+
|
| 994 |
# actual random
|
| 995 |
mdl1, mdl2 = random.sample(list(AVAILABLE_MODELS.keys()), 2)
|
| 996 |
+
# pointless saving of text to DB
|
| 997 |
+
# log_text(text)
|
| 998 |
print("[debug] Using", mdl1, mdl2)
|
| 999 |
def predict_and_update_result(text, model, result_storage):
|
| 1000 |
# 3 attempts
|