summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--GUI/GUI/GUI/Config.cpp9
-rw-r--r--GUI/GUI/GUI/Config.h3
-rw-r--r--GUI/GUI/GUI/Frame.cpp48
-rw-r--r--GUI/GUI/GUI/Frame.h3
-rw-r--r--GUI/GUI/GUI/PythonWrapper.cpp3
-rw-r--r--Scripts/transcribe.py53
6 files changed, 115 insertions, 4 deletions
diff --git a/GUI/GUI/GUI/Config.cpp b/GUI/GUI/GUI/Config.cpp
index 0443278..f0b5a1b 100644
--- a/GUI/GUI/GUI/Config.cpp
+++ b/GUI/GUI/GUI/Config.cpp
@@ -72,6 +72,9 @@ AppConfig::AppConfig(wxTextCtrl* out)
use_cpu(false),
use_builtin(false),
enable_uwu_filter(false),
+ remove_trailing_period(false),
+ enable_uppercase_filter(false),
+ enable_lowercase_filter(false),
gpu_idx(0),
keybind("ctrl+x"),
@@ -117,6 +120,9 @@ bool AppConfig::Serialize(const std::filesystem::path& path) {
cm.Set("use_cpu", use_cpu);
cm.Set("use_builtin", use_builtin);
cm.Set("enable_uwu_filter", enable_uwu_filter);
+ cm.Set("remove_trailing_period", remove_trailing_period);
+ cm.Set("enable_uppercase_filter", enable_uppercase_filter);
+ cm.Set("enable_lowercase_filter", enable_lowercase_filter);
cm.Set("gpu_idx", gpu_idx);
cm.Set("keybind", keybind);
@@ -175,6 +181,9 @@ bool AppConfig::Deserialize(const std::filesystem::path& path) {
cm.Get("use_cpu", c.use_cpu);
cm.Get("use_builtin", c.use_builtin);
cm.Get("enable_uwu_filter", c.enable_uwu_filter);
+ cm.Get("remove_trailing_period", c.remove_trailing_period);
+ cm.Get("enable_uppercase_filter", c.enable_uppercase_filter);
+ cm.Get("enable_lowercase_filter", c.enable_lowercase_filter);
cm.Get("gpu_idx", c.gpu_idx);
cm.Get("keybind", c.keybind);
diff --git a/GUI/GUI/GUI/Config.h b/GUI/GUI/GUI/Config.h
index be036ea..01b0239 100644
--- a/GUI/GUI/GUI/Config.h
+++ b/GUI/GUI/GUI/Config.h
@@ -58,6 +58,9 @@ public:
bool use_cpu;
bool use_builtin;
bool enable_uwu_filter;
+ bool remove_trailing_period;
+ bool enable_uppercase_filter;
+ bool enable_lowercase_filter;
int gpu_idx;
std::string keybind;
diff --git a/GUI/GUI/GUI/Frame.cpp b/GUI/GUI/GUI/Frame.cpp
index 221c59c..7e965df 100644
--- a/GUI/GUI/GUI/Frame.cpp
+++ b/GUI/GUI/GUI/Frame.cpp
@@ -40,6 +40,9 @@ namespace {
ID_PY_APP_USE_CPU,
ID_PY_APP_USE_BUILTIN,
ID_PY_APP_ENABLE_UWU_FILTER,
+ ID_PY_APP_REMOVE_TRAILING_PERIOD,
+ ID_PY_APP_ENABLE_UPPERCASE_FILTER,
+ ID_PY_APP_ENABLE_LOWERCASE_FILTER,
ID_PY_APP_ROWS,
ID_PY_APP_COLS,
ID_PY_APP_WINDOW_DURATION,
@@ -603,6 +606,30 @@ Frame::Frame()
);
py_app_enable_uwu_filter_ = py_app_enable_uwu_filter;
+ auto* py_app_remove_trailing_period = new wxCheckBox(py_config_panel,
+ ID_PY_APP_REMOVE_TRAILING_PERIOD, "Remove trailing period");
+ py_app_remove_trailing_period->SetValue(app_c_->remove_trailing_period);
+ py_app_remove_trailing_period->SetToolTip(
+ "If checked, transcriptions will never end with a period."
+ );
+ py_app_remove_trailing_period_ = py_app_remove_trailing_period;
+
+ auto* py_app_enable_uppercase_filter = new wxCheckBox(py_config_panel,
+ ID_PY_APP_ENABLE_UPPERCASE_FILTER, "Enable uppercase filter");
+ py_app_enable_uppercase_filter->SetValue(app_c_->enable_uppercase_filter);
+ py_app_enable_uppercase_filter->SetToolTip(
+ "If checked, transcribed text will be converted to UPPERCASE."
+ );
+ py_app_enable_uppercase_filter_ = py_app_enable_uppercase_filter;
+
+ auto* py_app_enable_lowercase_filter = new wxCheckBox(py_config_panel,
+ ID_PY_APP_ENABLE_LOWERCASE_FILTER, "Enable lowercase filter");
+ py_app_enable_lowercase_filter->SetValue(app_c_->enable_lowercase_filter);
+ py_app_enable_lowercase_filter->SetToolTip(
+ "If checked, transcribed text will be converted to lowercase."
+ );
+ py_app_enable_lowercase_filter_ = py_app_enable_lowercase_filter;
+
// Hack: Add newlines before and after the button text to make
// the buttons bigger, and easier to click from inside VR.
auto* py_app_start_button = new wxButton(py_config_panel,
@@ -624,6 +651,12 @@ Frame::Frame()
/*flags=*/wxEXPAND);
sizer->Add(py_app_enable_uwu_filter, /*proportion=*/0,
/*flags=*/wxEXPAND);
+ sizer->Add(py_app_remove_trailing_period, /*proportion=*/0,
+ /*flags=*/wxEXPAND);
+ sizer->Add(py_app_enable_uppercase_filter, /*proportion=*/0,
+ /*flags=*/wxEXPAND);
+ sizer->Add(py_app_enable_lowercase_filter, /*proportion=*/0,
+ /*flags=*/wxEXPAND);
sizer->Add(py_app_start_button, /*proportion=*/0,
/*flags=*/wxEXPAND);
sizer->Add(py_app_stop_button, /*proportion=*/0,
@@ -1101,6 +1134,15 @@ void Frame::ApplyConfigToInputFields()
auto* py_app_enable_uwu_filter = static_cast<wxCheckBox*>(FindWindowById(ID_PY_APP_ENABLE_UWU_FILTER));
py_app_enable_uwu_filter->SetValue(app_c_->enable_uwu_filter);
+ auto* py_app_remove_trailing_period = static_cast<wxCheckBox*>(FindWindowById(ID_PY_APP_REMOVE_TRAILING_PERIOD));
+ py_app_remove_trailing_period->SetValue(app_c_->remove_trailing_period);
+
+ auto* py_app_enable_uppercase_filter = static_cast<wxCheckBox*>(FindWindowById(ID_PY_APP_ENABLE_UPPERCASE_FILTER));
+ py_app_enable_uppercase_filter->SetValue(app_c_->enable_uppercase_filter);
+
+ auto* py_app_enable_lowercase_filter = static_cast<wxCheckBox*>(FindWindowById(ID_PY_APP_ENABLE_LOWERCASE_FILTER));
+ py_app_enable_lowercase_filter->SetValue(app_c_->enable_lowercase_filter);
+
// Unity panel
auto* unity_chars_per_sync = static_cast<wxChoice*>(FindWindowById(ID_UNITY_CHARS_PER_SYNC));
unity_chars_per_sync->SetSelection(chars_idx);
@@ -1671,6 +1713,9 @@ void Frame::OnAppStart(wxCommandEvent& event) {
const bool use_cpu = py_app_use_cpu_->GetValue();
const bool use_builtin = py_app_use_builtin_->GetValue();
const bool enable_uwu_filter = py_app_enable_uwu_filter_->GetValue();
+ const bool remove_trailing_period = py_app_remove_trailing_period_->GetValue();
+ const bool enable_uppercase_filter = py_app_enable_uppercase_filter_->GetValue();
+ const bool enable_lowercase_filter = py_app_enable_lowercase_filter_->GetValue();
std::string rows_str = py_app_rows_->GetValue().ToStdString();
std::string cols_str = py_app_cols_->GetValue().ToStdString();
std::string chars_per_sync_str =
@@ -1740,6 +1785,9 @@ void Frame::OnAppStart(wxCommandEvent& event) {
app_c_->use_cpu = use_cpu;
app_c_->use_builtin = use_builtin;
app_c_->enable_uwu_filter = enable_uwu_filter;
+ app_c_->remove_trailing_period = remove_trailing_period;
+ app_c_->enable_uppercase_filter = enable_uppercase_filter;
+ app_c_->enable_lowercase_filter = enable_lowercase_filter;
app_c_->gpu_idx = gpu_idx;
app_c_->keybind = keybind;
app_c_->Serialize(AppConfig::kConfigPath);
diff --git a/GUI/GUI/GUI/Frame.h b/GUI/GUI/GUI/Frame.h
index 130a716..f5a8cd9 100644
--- a/GUI/GUI/GUI/Frame.h
+++ b/GUI/GUI/GUI/Frame.h
@@ -81,6 +81,9 @@ private:
wxCheckBox* py_app_use_cpu_;
wxCheckBox* py_app_use_builtin_;
wxCheckBox* py_app_enable_uwu_filter_;
+ wxCheckBox* py_app_remove_trailing_period_;
+ wxCheckBox* py_app_enable_uppercase_filter_;
+ wxCheckBox* py_app_enable_lowercase_filter_;
wxCheckBox* unity_clear_osc_;
wxCheckBox* whisper_enable_local_beep_;
wxCheckBox* whisper_use_cpu_;
diff --git a/GUI/GUI/GUI/PythonWrapper.cpp b/GUI/GUI/GUI/PythonWrapper.cpp
index 98a0c3e..5df1dfa 100644
--- a/GUI/GUI/GUI/PythonWrapper.cpp
+++ b/GUI/GUI/GUI/PythonWrapper.cpp
@@ -474,6 +474,9 @@ std::future<bool> PythonWrapper::StartApp(
"--cpu", config.use_cpu ? "1" : "0",
"--use_builtin", config.use_builtin ? "1" : "0",
"--enable_uwu_filter", config.enable_uwu_filter ? "1" : "0",
+ "--remove_trailing_period", config.remove_trailing_period ? "1" : "0",
+ "--enable_uppercase_filter", config.enable_uppercase_filter ? "1" : "0",
+ "--enable_lowercase_filter", config.enable_lowercase_filter ? "1" : "0",
"--emotes_pickle", kEmotesPickle,
"--gpu_idx", std::to_string(config.gpu_idx),
"--keybind", Quote(config.keybind),
diff --git a/Scripts/transcribe.py b/Scripts/transcribe.py
index 49dcc81..7ba80dc 100644
--- a/Scripts/transcribe.py
+++ b/Scripts/transcribe.py
@@ -217,7 +217,14 @@ def transcribe(audio_state, model, frames, use_cpu: bool):
return "".join(s.text for s in segments)
-def transcribeAudio(audio_state, model, use_cpu: bool, enable_uwu_filter: bool):
+def transcribeAudio(audio_state,
+ model,
+ use_cpu: bool,
+ enable_uwu_filter: bool,
+ remove_trailing_period: bool,
+ enable_uppercase_filter: bool,
+ enable_lowercase_filter: bool,
+ ):
last_transcribe_time = time.time()
while audio_state.run_app == True:
# Pace this out
@@ -267,6 +274,13 @@ def transcribeAudio(audio_state, model, use_cpu: bool, enable_uwu_filter: bool):
uwu_text = uwu_text.replace("\n", "")
uwu_text = uwu_text.replace("\r", "")
filtered_text = uwu_text
+ if remove_trailing_period:
+ if len(filtered_text) > 0 and filtered_text[-1] == '.':
+ filtered_text = filtered_text[0:len(filtered_text)-1]
+ if enable_uppercase_filter:
+ filtered_text = filtered_text.upper()
+ if enable_lowercase_filter:
+ filtered_text = filtered_text.lower()
audio_state.filtered_text = filtered_text
now = time.time()
@@ -484,6 +498,9 @@ def transcribeLoop(mic: str,
use_cpu: bool,
use_builtin: bool,
enable_uwu_filter: bool,
+ remove_trailing_period: bool,
+ enable_uppercase_filter: bool,
+ enable_lowercase_filter: bool,
button: str,
estate: EmotesState,
window_duration_s: int,
@@ -516,7 +533,9 @@ def transcribeLoop(mic: str,
transcribe_audio_thd = threading.Thread(
target = transcribeAudio,
- args = [audio_state, model, use_cpu, enable_uwu_filter])
+ args = [audio_state, model, use_cpu, enable_uwu_filter,
+ remove_trailing_period, enable_uppercase_filter,
+ enable_lowercase_filter])
transcribe_audio_thd.daemon = True
transcribe_audio_thd.start()
@@ -581,6 +600,9 @@ if __name__ == "__main__":
parser.add_argument("--cpu", type=int, help="If set to 1, use CPU instead of GPU")
parser.add_argument("--use_builtin", type=int, help="If set to 1, use the text box built into the game.")
parser.add_argument("--enable_uwu_filter", type=int, help="If set to 1, transcribed text will be passed through an uwu filter :3.")
+ parser.add_argument("--remove_trailing_period", type=int, help="If set to 1, trailing period will be removed.")
+ parser.add_argument("--enable_uppercase_filter", type=int, help="If set to 1, transcriptions will be converted to UPPERCASE.")
+ parser.add_argument("--enable_lowercase_filter", type=int, help="If set to 1, transcriptions will be converted to lowercase.")
parser.add_argument("--button", type=str, help="The controller button used to start/stop transcription. E.g. \"left joystick\"")
parser.add_argument("--emotes_pickle", type=str, help="The path to emotes pickle. See emotes_v2.py for details.")
parser.add_argument("--gpu_idx", type=str, help="The index of the GPU device to use. On single GPU systems, use 0.")
@@ -636,6 +658,21 @@ if __name__ == "__main__":
else:
args.enable_uwu_filter = False
+ if args.remove_trailing_period == 1:
+ args.remove_trailing_period = True
+ else:
+ args.remove_trailing_period = False
+
+ if args.enable_uppercase_filter == 1:
+ args.enable_uppercase_filter = True
+ else:
+ args.enable_uppercase_filter = False
+
+ if args.enable_lowercase_filter == 1:
+ args.enable_lowercase_filter = True
+ else:
+ args.enable_lowercase_filter = False
+
estate = EmotesState()
estate.load(args.emotes_pickle)
@@ -646,8 +683,16 @@ if __name__ == "__main__":
print(f"PATH: {os.environ['PATH']}")
- transcribeLoop(args.mic, args.language, args.model, args.enable_local_beep,
- args.cpu, args.use_builtin, args.enable_uwu_filter, args.button,
+ transcribeLoop(args.mic,
+ args.language,
+ args.model,
+ args.enable_local_beep,
+ args.cpu, args.use_builtin,
+ args.enable_uwu_filter,
+ args.remove_trailing_period,
+ args.enable_uppercase_filter,
+ args.enable_lowercase_filter,
+ args.button,
estate, window_duration_s,
args.gpu_idx, args.keybind)