summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--GUI/GUI/GUI/Frame.cpp18
-rw-r--r--Scripts/transcribe.py14
2 files changed, 25 insertions, 7 deletions
diff --git a/GUI/GUI/GUI/Frame.cpp b/GUI/GUI/GUI/Frame.cpp
index f4e99b9..8d4c868 100644
--- a/GUI/GUI/GUI/Frame.cpp
+++ b/GUI/GUI/GUI/Frame.cpp
@@ -2122,16 +2122,24 @@ void Frame::OnAppStart(wxCommandEvent& event) {
}
void Frame::OnAppStop() {
+ run_py_app_ = false;
auto status = py_app_.wait_for(std::chrono::seconds(0));
if (status == std::future_status::ready) {
Log(transcribe_out_, "Transcription engine already stopped\n");
- return;
}
- run_py_app_ = false;
- py_app_.wait();
- obs_app_.wait();
+ else {
+ py_app_.wait();
+ Log(transcribe_out_, "Stopped transcription engine\n");
+ }
+ status = obs_app_.wait_for(std::chrono::seconds(0));
+ if (status == std::future_status::ready) {
+ Log(transcribe_out_, "Browser source already stopped\n");
+ }
+ else {
+ obs_app_.wait();
+ Log(transcribe_out_, "Stopped browser source\n");
+ }
transcript_.Clear();
- Log(transcribe_out_, "Stopped transcription engine\n");
}
void Frame::OnAppStop(wxCommandEvent& event) {
diff --git a/Scripts/transcribe.py b/Scripts/transcribe.py
index 694fd0b..6cb78cd 100644
--- a/Scripts/transcribe.py
+++ b/Scripts/transcribe.py
@@ -11,6 +11,7 @@ from sentence_splitter import split_text_into_sentences
import argparse
import copy
import ctranslate2
+import editdistance
import generate_utils
import keybind_event_machine
import keyboard
@@ -39,7 +40,7 @@ class AudioState:
# The maximum length that recordAudio() will put into frames before it
# starts dropping from the start.
- self.MAX_LENGTH_S = 30
+ self.MAX_LENGTH_S = 300
# The minimum length that recordAudio() will wait for before saving audio.
self.MIN_LENGTH_S = 1
@@ -257,11 +258,20 @@ def transcribe(audio_state, model, frames, use_cpu: bool) -> typing.Tuple[str,st
c1 = first_segments[-2]
c2 = first_segments[-3]
c3 = first_segments[-4]
+
+ c0_c1_d = editdistance.eval(c0[2], c1[2])
+ c1_c2_d = editdistance.eval(c1[2], c2[2])
+ c2_c3_d = editdistance.eval(c2[2], c3[2])
+
+ max_edit = 8
+
#print(f"c0: {c0}, c1: {c1}, c2: {c2}")
- if c0 == c1 and c1 == c2 and c2 == c3:
+ #if c0 == c1 and c1 == c2 and c2 == c3:
+ if c0_c1_d < max_edit and c1_c2_d < max_edit and c2_c3_d < max_edit:
# For simplicity, completely reset saved audio ranges.
audio_state.ranges_ls = []
committed_text = c0[2]
+ print(f"Dropping frames until {c0[1]}")
n_frames_to_drop = int(ceil(audio_state.RATE * c0[1]))
audio_state.drop_frames_till_i = n_frames_to_drop