mirror of
https://github.com/denizsafak/abogen.git
synced 2026-07-18 21:50:28 +02:00
refactored setting selected_lang, actual_subtitle_mode, voice_formula in non-queued conversion - #30
This commit is contained in:
+20
-36
@@ -1284,18 +1284,18 @@ class abogen(QWidget):
|
||||
if not self.selected_file:
|
||||
self.input_box.set_error("Please add a file.")
|
||||
return
|
||||
selected_lang = self.get_selected_lang()
|
||||
voice_formula = self.get_voice_formula()
|
||||
actual_subtitle_mode = self.get_actual_subtitle_mode()
|
||||
voice_formula = self.get_voice_formula()
|
||||
selected_lang = self.get_selected_lang(voice_formula)
|
||||
|
||||
item = QueuedItem(
|
||||
file_name=self.selected_file,
|
||||
lang_code=selected_lang, # TODO copy from start_conversion
|
||||
lang_code=selected_lang,
|
||||
speed=self.speed_slider.value() / 100.0,
|
||||
voice=voice_formula, # TODO copy from start_conversion
|
||||
voice=voice_formula,
|
||||
save_option=self.save_option,
|
||||
output_folder=self.selected_output_folder,
|
||||
subtitle_mode=actual_subtitle_mode, # TODO copy from start_conversion
|
||||
subtitle_mode=actual_subtitle_mode,
|
||||
output_format=self.selected_format,
|
||||
total_char_count=self.char_count,
|
||||
use_gpu=self.gpu_ok
|
||||
@@ -1304,8 +1304,6 @@ class abogen(QWidget):
|
||||
# Clear input after adding to queue
|
||||
self.input_box.clear_input()
|
||||
|
||||
|
||||
|
||||
def manage_queue(self):
|
||||
if not self.queued_items:
|
||||
self.input_box.set_error("Queue is empty.")
|
||||
@@ -1359,13 +1357,17 @@ class abogen(QWidget):
|
||||
else:
|
||||
return self.selected_voice
|
||||
|
||||
def get_selected_lang(self):
|
||||
def get_selected_lang(self, voice_formula):
|
||||
if self.selected_profile_name:
|
||||
from voice_profiles import load_profiles
|
||||
entry = load_profiles().get(self.selected_profile_name, {})
|
||||
return entry.get("language")
|
||||
selected_lang = entry.get("language")
|
||||
else:
|
||||
return self.selected_voice[0] if self.selected_voice else None
|
||||
selected_lang = self.selected_voice[0] if self.selected_voice else None
|
||||
# fallback: extract from formula if missing
|
||||
if not selected_lang:
|
||||
m = re.search(r"\b([a-z])", voice_formula)
|
||||
selected_lang = m.group(1) if m else None
|
||||
|
||||
def get_actual_subtitle_mode(self):
|
||||
return (
|
||||
@@ -1416,32 +1418,12 @@ class abogen(QWidget):
|
||||
self.btn_cancel.setEnabled(True)
|
||||
|
||||
# Override subtitle_mode to "Disabled" if subtitle_combo is disabled
|
||||
actual_subtitle_mode = (
|
||||
"Disabled"
|
||||
if not self.subtitle_combo.isEnabled()
|
||||
else self.subtitle_mode
|
||||
)
|
||||
actual_subtitle_mode = self.get_actual_subtitle_mode()
|
||||
|
||||
# if voice formula is not None, use the selected voice
|
||||
if self.mixed_voice_state:
|
||||
formula_components = [
|
||||
f"{name}*{weight}" for name, weight in self.mixed_voice_state
|
||||
]
|
||||
voice_formula = " + ".join(filter(None, formula_components))
|
||||
else:
|
||||
voice_formula = self.selected_voice
|
||||
voice_formula = self.get_voice_formula()
|
||||
# determine selected language: use profile setting if profile selected, else voice code
|
||||
if self.selected_profile_name:
|
||||
from voice_profiles import load_profiles
|
||||
|
||||
entry = load_profiles().get(self.selected_profile_name, {})
|
||||
selected_lang = entry.get("language")
|
||||
else:
|
||||
selected_lang = self.selected_voice[0] if self.selected_voice else None
|
||||
# fallback: extract from formula if missing
|
||||
if not selected_lang:
|
||||
m = re.search(r"\b([a-z])", voice_formula)
|
||||
selected_lang = m.group(1) if m else None
|
||||
selected_lang = self.get_selected_lang(voice_formula)
|
||||
|
||||
self.conversion_thread = ConversionThread(
|
||||
self.selected_file,
|
||||
@@ -1490,9 +1472,10 @@ class abogen(QWidget):
|
||||
self.conversion_thread.conversion_finished.connect(
|
||||
self.on_conversion_finished
|
||||
)
|
||||
self.conversion_thread.conversion_finished.connect(
|
||||
self.queue_item_conversion_finished
|
||||
)
|
||||
# TODO remove
|
||||
# self.conversion_thread.conversion_finished.connect(
|
||||
# self.queue_item_conversion_finished
|
||||
# )
|
||||
|
||||
# Connect chapters_detected signal
|
||||
self.conversion_thread.chapters_detected.connect(
|
||||
@@ -1569,6 +1552,7 @@ class abogen(QWidget):
|
||||
self.log_text.moveCursor(QTextCursor.End)
|
||||
self.log_text.ensureCursorVisible()
|
||||
save_config(self.config)
|
||||
self.queue_item_conversion_finished()
|
||||
|
||||
def reset_ui(self):
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user