Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
DeepMoji plugin: per-model amplifiers; decreased sadness pacing adjustment
Browse files
resources/app/plugins/deepmoji_plugin/ccby_amplifiers.csv
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
model,amplifier_value
|
| 2 |
+
ccby_nvidia_hifi_92_F,1.0
|
resources/app/plugins/deepmoji_plugin/other_amplifiers.csv
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
model,amplifier_value
|
| 2 |
+
x_ex02,1.0
|
| 3 |
+
x_ex04,1.0
|
resources/app/plugins/deepmoji_plugin/sentiment.py
CHANGED
|
@@ -34,12 +34,23 @@ last_em_happy = float(0)
|
|
| 34 |
last_em_sad = float(0)
|
| 35 |
last_em_surprise = float(0)
|
| 36 |
|
| 37 |
-
def scoreText(text):
|
| 38 |
-
return text
|
| 39 |
from plugins.deepmoji_plugin.xvasynth_torchmoji import scoreText
|
| 40 |
import csv
|
| 41 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 42 |
def setup(data=None):
|
|
|
|
|
|
|
| 43 |
logger.log(f'Setting up plugin. App version: {data["appVersion"]} | CPU only: {data["isCPUonly"]} | Development mode: {data["isDev"]}')
|
| 44 |
# Show test emoji in console; can crash due to encoding issues
|
| 45 |
try:
|
|
@@ -47,11 +58,20 @@ def setup(data=None):
|
|
| 47 |
except:
|
| 48 |
pass
|
| 49 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 50 |
def pre_load_model(data=None):
|
| 51 |
# reset last em values
|
| 52 |
global last_em_angry, last_em_happy, last_em_sad, last_em_surprise,\
|
| 53 |
isBatch, isXVAPitch, isEnglish, prev_sentence,\
|
| 54 |
-
plugin_settings, configparser, emoji_count
|
|
|
|
| 55 |
|
| 56 |
# reload settings from INI
|
| 57 |
config = configparser.ConfigParser()
|
|
@@ -71,6 +91,19 @@ def pre_load_model(data=None):
|
|
| 71 |
last_em_sad = float(0)
|
| 72 |
last_em_surprise = float(0)
|
| 73 |
logger.log("last_em reset")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 74 |
|
| 75 |
def fetch_text(data=None):
|
| 76 |
global plugin_settings, emoji_count, text_scores, scoreText, isXVAPitch, isEnglish, prev_sentence
|
|
@@ -86,11 +119,8 @@ def fetch_text(data=None):
|
|
| 86 |
pass
|
| 87 |
|
| 88 |
if (
|
| 89 |
-
|
| 90 |
-
|
| 91 |
-
or plugin_settings["load_deepmoji_model"]==False
|
| 92 |
-
)
|
| 93 |
-
and data["pluginsContext"]["mantella_settings"]["run_model"]==False
|
| 94 |
):
|
| 95 |
logger.log("DeepMoji model skipped")
|
| 96 |
return
|
|
@@ -171,7 +201,8 @@ def fetch_text_batch(data=None):
|
|
| 171 |
def adjust_values(data=None):
|
| 172 |
global root_path, os, csv, example_helper,\
|
| 173 |
isBatch, isXVAPitch, isEnglish, logger, emoji_count, text_scores, plugin_settings,\
|
| 174 |
-
prev_sentence, last_em_angry, last_em_happy, last_em_sad, last_em_surprise
|
|
|
|
| 175 |
|
| 176 |
if (
|
| 177 |
isBatch
|
|
@@ -227,7 +258,6 @@ def adjust_values(data=None):
|
|
| 227 |
em_angry_max = 0.6
|
| 228 |
try:
|
| 229 |
em_angry += float(data["pluginsContext"]["mantella_settings"]["emAngry"]) * 100
|
| 230 |
-
em_angry_max = 1
|
| 231 |
except:
|
| 232 |
pass
|
| 233 |
try:
|
|
@@ -243,26 +273,19 @@ def adjust_values(data=None):
|
|
| 243 |
except:
|
| 244 |
pass
|
| 245 |
|
| 246 |
-
#
|
| 247 |
-
|
| 248 |
-
|
| 249 |
-
|
| 250 |
-
|
| 251 |
-
|
| 252 |
-
|
| 253 |
-
|
| 254 |
-
|
| 255 |
-
|
| 256 |
-
|
| 257 |
-
|
| 258 |
-
|
| 259 |
-
# amplifier
|
| 260 |
-
ratio = float(plugin_settings['amplifier_ratio'])
|
| 261 |
-
else:
|
| 262 |
-
ratio = 1.0
|
| 263 |
-
em_emotion_max = 1
|
| 264 |
-
em_angry_max = 1
|
| 265 |
-
|
| 266 |
logger.log(f'Amplifier ratio: {ratio}')
|
| 267 |
hasExcMark = False
|
| 268 |
if ('!!!' in text_scores[0]):
|
|
@@ -287,11 +310,6 @@ def adjust_values(data=None):
|
|
| 287 |
logger.log(f'! Ratio: {ratio}')
|
| 288 |
hasExcMark = True
|
| 289 |
|
| 290 |
-
# HF
|
| 291 |
-
if (len(text_scores) <= 1):
|
| 292 |
-
em_angry_max = 1
|
| 293 |
-
ratio = 1
|
| 294 |
-
|
| 295 |
# final values
|
| 296 |
em_angry = min(em_angry_max, em_angry / 100 * ratio) if em_angry > 0 else 0
|
| 297 |
em_happy = min(em_emotion_max, em_happy / 100 * ratio) if em_happy > 0 else 0
|
|
@@ -370,10 +388,10 @@ def adjust_values(data=None):
|
|
| 370 |
data["hasDataChanged"] = True
|
| 371 |
|
| 372 |
# slower the speech if above threshold
|
| 373 |
-
if (em_sad > 0.
|
| 374 |
try:
|
| 375 |
-
data["pace"] *= (1 + em_sad /
|
| 376 |
-
logger.log(f"Adjusting pacing: {1 + em_sad /
|
| 377 |
except:
|
| 378 |
pass
|
| 379 |
|
|
|
|
| 34 |
last_em_sad = float(0)
|
| 35 |
last_em_surprise = float(0)
|
| 36 |
|
|
|
|
|
|
|
| 37 |
from plugins.deepmoji_plugin.xvasynth_torchmoji import scoreText
|
| 38 |
import csv
|
| 39 |
|
| 40 |
+
game_list = [
|
| 41 |
+
'skyrim',
|
| 42 |
+
'fallout4',
|
| 43 |
+
'other',
|
| 44 |
+
'ccby',
|
| 45 |
+
]
|
| 46 |
+
# amplifier values for certain models
|
| 47 |
+
model_amplifiers = {
|
| 48 |
+
}
|
| 49 |
+
amplifier_value = None
|
| 50 |
+
|
| 51 |
def setup(data=None):
|
| 52 |
+
global game_list, model_amplifiers
|
| 53 |
+
|
| 54 |
logger.log(f'Setting up plugin. App version: {data["appVersion"]} | CPU only: {data["isCPUonly"]} | Development mode: {data["isDev"]}')
|
| 55 |
# Show test emoji in console; can crash due to encoding issues
|
| 56 |
try:
|
|
|
|
| 58 |
except:
|
| 59 |
pass
|
| 60 |
|
| 61 |
+
# for game in game_list:
|
| 62 |
+
# with open(f'{root_path}/plugins/deepmoji_plugin/{game}_amplifiers.csv', encoding='utf-8') as csvfile:
|
| 63 |
+
# reader = csv.DictReader(csvfile)
|
| 64 |
+
# for row in reader:
|
| 65 |
+
# model_amplifiers[row['model']] = float(row['amplifier_value'])
|
| 66 |
+
# print(model_amplifiers)
|
| 67 |
+
# forgotten right after
|
| 68 |
+
|
| 69 |
def pre_load_model(data=None):
|
| 70 |
# reset last em values
|
| 71 |
global last_em_angry, last_em_happy, last_em_sad, last_em_surprise,\
|
| 72 |
isBatch, isXVAPitch, isEnglish, prev_sentence,\
|
| 73 |
+
plugin_settings, configparser, emoji_count,\
|
| 74 |
+
model_amplifiers, amplifier_value
|
| 75 |
|
| 76 |
# reload settings from INI
|
| 77 |
config = configparser.ConfigParser()
|
|
|
|
| 91 |
last_em_sad = float(0)
|
| 92 |
last_em_surprise = float(0)
|
| 93 |
logger.log("last_em reset")
|
| 94 |
+
amplifier_value = None
|
| 95 |
+
try:
|
| 96 |
+
for game in game_list:
|
| 97 |
+
with open(f'{root_path}/plugins/deepmoji_plugin/{game}_amplifiers.csv', encoding='utf-8') as csvfile:
|
| 98 |
+
reader = csv.DictReader(csvfile)
|
| 99 |
+
for row in reader:
|
| 100 |
+
model_amplifiers[row['model']] = float(row['amplifier_value'])
|
| 101 |
+
|
| 102 |
+
model_name = data['model'][(data['model'].rindex('/') + 1):]
|
| 103 |
+
amplifier_value = model_amplifiers[model_name]
|
| 104 |
+
logger.log(f"Voice model amplifier value: {amplifier_value}")
|
| 105 |
+
except:
|
| 106 |
+
pass
|
| 107 |
|
| 108 |
def fetch_text(data=None):
|
| 109 |
global plugin_settings, emoji_count, text_scores, scoreText, isXVAPitch, isEnglish, prev_sentence
|
|
|
|
| 119 |
pass
|
| 120 |
|
| 121 |
if (
|
| 122 |
+
plugin_settings["load_deepmoji_model"]=="false"
|
| 123 |
+
or plugin_settings["load_deepmoji_model"]==False
|
|
|
|
|
|
|
|
|
|
| 124 |
):
|
| 125 |
logger.log("DeepMoji model skipped")
|
| 126 |
return
|
|
|
|
| 201 |
def adjust_values(data=None):
|
| 202 |
global root_path, os, csv, example_helper,\
|
| 203 |
isBatch, isXVAPitch, isEnglish, logger, emoji_count, text_scores, plugin_settings,\
|
| 204 |
+
prev_sentence, last_em_angry, last_em_happy, last_em_sad, last_em_surprise,\
|
| 205 |
+
amplifier_value
|
| 206 |
|
| 207 |
if (
|
| 208 |
isBatch
|
|
|
|
| 258 |
em_angry_max = 0.6
|
| 259 |
try:
|
| 260 |
em_angry += float(data["pluginsContext"]["mantella_settings"]["emAngry"]) * 100
|
|
|
|
| 261 |
except:
|
| 262 |
pass
|
| 263 |
try:
|
|
|
|
| 273 |
except:
|
| 274 |
pass
|
| 275 |
|
| 276 |
+
# top_em highest wins all
|
| 277 |
+
top_em = max(
|
| 278 |
+
em_angry,
|
| 279 |
+
em_happy,
|
| 280 |
+
em_sad
|
| 281 |
+
)
|
| 282 |
+
em_angry = em_angry if (em_angry == top_em) else 0
|
| 283 |
+
em_happy = em_happy if (em_happy == top_em) else 0
|
| 284 |
+
# amplified sadness ratio
|
| 285 |
+
em_sad = (em_sad * 3) if (em_sad == top_em) else 0
|
| 286 |
+
|
| 287 |
+
# amplifier
|
| 288 |
+
ratio = float(plugin_settings['amplifier_ratio']) if not amplifier_value else amplifier_value
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 289 |
logger.log(f'Amplifier ratio: {ratio}')
|
| 290 |
hasExcMark = False
|
| 291 |
if ('!!!' in text_scores[0]):
|
|
|
|
| 310 |
logger.log(f'! Ratio: {ratio}')
|
| 311 |
hasExcMark = True
|
| 312 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 313 |
# final values
|
| 314 |
em_angry = min(em_angry_max, em_angry / 100 * ratio) if em_angry > 0 else 0
|
| 315 |
em_happy = min(em_emotion_max, em_happy / 100 * ratio) if em_happy > 0 else 0
|
|
|
|
| 388 |
data["hasDataChanged"] = True
|
| 389 |
|
| 390 |
# slower the speech if above threshold
|
| 391 |
+
if (em_sad > 0.25):
|
| 392 |
try:
|
| 393 |
+
data["pace"] *= (1 + em_sad / 4)
|
| 394 |
+
logger.log(f"Adjusting pacing: {1 + em_sad / 4}")
|
| 395 |
except:
|
| 396 |
pass
|
| 397 |
|