mirror of
https://github.com/denizsafak/abogen.git
synced 2026-07-18 13:40:27 +02:00
fixed supertonic voice selection for preview - #163
This commit is contained in:
+16
-18
@@ -2400,15 +2400,7 @@ class abogen(QWidget):
|
|||||||
|
|
||||||
def get_voice_formula(self) -> str:
|
def get_voice_formula(self) -> str:
|
||||||
if self.provider_combo.currentData() == "supertonic":
|
if self.provider_combo.currentData() == "supertonic":
|
||||||
if self.selected_profile_name:
|
return self._get_supertonic_voice()
|
||||||
from abogen.voice_profiles import load_profiles
|
|
||||||
entry = load_profiles().get(self.selected_profile_name, {})
|
|
||||||
if isinstance(entry, dict):
|
|
||||||
return str(entry.get("voice", "M1"))
|
|
||||||
current_data = self.voice_combo.currentData()
|
|
||||||
if current_data and isinstance(current_data, str) and not current_data.startswith("profile:"):
|
|
||||||
return current_data
|
|
||||||
return "M1"
|
|
||||||
if self.mixed_voice_state:
|
if self.mixed_voice_state:
|
||||||
formula_components = [
|
formula_components = [
|
||||||
f"{name}*{weight}" for name, weight in self.mixed_voice_state
|
f"{name}*{weight}" for name, weight in self.mixed_voice_state
|
||||||
@@ -2930,17 +2922,26 @@ class abogen(QWidget):
|
|||||||
"Open File Error", f"Could not open file:\n{e}"
|
"Open File Error", f"Could not open file:\n{e}"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def _get_supertonic_voice(self) -> str:
|
||||||
|
"""Resolve the effective Supertonic voice from the current combo selection."""
|
||||||
|
if self.selected_profile_name:
|
||||||
|
from abogen.voice_profiles import load_profiles
|
||||||
|
entry = load_profiles().get(self.selected_profile_name, {})
|
||||||
|
if isinstance(entry, dict):
|
||||||
|
return str(entry.get("voice", "M1"))
|
||||||
|
return "M1"
|
||||||
|
current_data = self.voice_combo.currentData()
|
||||||
|
if current_data and isinstance(current_data, str) and not current_data.startswith("profile:"):
|
||||||
|
return current_data
|
||||||
|
return "M1"
|
||||||
|
|
||||||
def _get_preview_cache_path(self):
|
def _get_preview_cache_path(self):
|
||||||
"""Generate the expected cache path for the current voice settings."""
|
"""Generate the expected cache path for the current voice settings."""
|
||||||
speed = self.speed_slider.value() / 100.0
|
speed = self.speed_slider.value() / 100.0
|
||||||
provider = self.provider_combo.currentData()
|
provider = self.provider_combo.currentData()
|
||||||
|
|
||||||
if provider == "supertonic":
|
if provider == "supertonic":
|
||||||
current_data = self.voice_combo.currentData()
|
voice_to_cache = self._get_supertonic_voice()
|
||||||
if current_data and isinstance(current_data, str) and not current_data.startswith("profile:"):
|
|
||||||
voice_to_cache = current_data
|
|
||||||
else:
|
|
||||||
voice_to_cache = "M1"
|
|
||||||
lang_to_cache = self.st_lang_combo.currentText()
|
lang_to_cache = self.st_lang_combo.currentText()
|
||||||
steps = self.st_steps_combo.currentData()
|
steps = self.st_steps_combo.currentData()
|
||||||
cache_dir = get_user_cache_path("preview_cache")
|
cache_dir = get_user_cache_path("preview_cache")
|
||||||
@@ -3117,10 +3118,7 @@ class abogen(QWidget):
|
|||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
if self.provider_combo.currentData() == "supertonic":
|
if self.provider_combo.currentData() == "supertonic":
|
||||||
current_data = self.voice_combo.currentData()
|
voice = self._get_supertonic_voice()
|
||||||
print(f"[DEBUG] voice_combo.currentData() = {current_data!r}")
|
|
||||||
voice = current_data if (current_data and isinstance(current_data, str) and not current_data.startswith("profile:")) else "M1"
|
|
||||||
print(f"[DEBUG] resolved voice = {voice!r}")
|
|
||||||
else:
|
else:
|
||||||
voice = self.selected_voice or ""
|
voice = self.selected_voice or ""
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user