Honor disabled speech service toggles (#814)
Co-authored-by: ghreprimand <203024559+ghreprimand@users.noreply.github.com>
This commit is contained in:
@@ -40,6 +40,8 @@ class STTService:
|
|||||||
@property
|
@property
|
||||||
def available(self) -> bool:
|
def available(self) -> bool:
|
||||||
settings = self._load_settings()
|
settings = self._load_settings()
|
||||||
|
if settings.get("stt_enabled") is False:
|
||||||
|
return False
|
||||||
provider = settings["stt_provider"]
|
provider = settings["stt_provider"]
|
||||||
if provider == "disabled":
|
if provider == "disabled":
|
||||||
return False
|
return False
|
||||||
@@ -140,6 +142,8 @@ class STTService:
|
|||||||
|
|
||||||
def transcribe(self, audio_bytes: bytes) -> Optional[str]:
|
def transcribe(self, audio_bytes: bytes) -> Optional[str]:
|
||||||
settings = self._load_settings()
|
settings = self._load_settings()
|
||||||
|
if settings.get("stt_enabled") is False:
|
||||||
|
return None
|
||||||
provider = settings["stt_provider"]
|
provider = settings["stt_provider"]
|
||||||
model = settings["stt_model"]
|
model = settings["stt_model"]
|
||||||
language = settings.get("stt_language", "")
|
language = settings.get("stt_language", "")
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ class TTSService:
|
|||||||
from src.settings import load_settings
|
from src.settings import load_settings
|
||||||
saved = load_settings()
|
saved = load_settings()
|
||||||
return {
|
return {
|
||||||
|
"tts_enabled": saved.get("tts_enabled", True),
|
||||||
"tts_provider": saved.get("tts_provider", "disabled"),
|
"tts_provider": saved.get("tts_provider", "disabled"),
|
||||||
"tts_model": saved.get("tts_model", "tts-1"),
|
"tts_model": saved.get("tts_model", "tts-1"),
|
||||||
"tts_voice": saved.get("tts_voice", "alloy"),
|
"tts_voice": saved.get("tts_voice", "alloy"),
|
||||||
@@ -43,6 +44,8 @@ class TTSService:
|
|||||||
@property
|
@property
|
||||||
def available(self) -> bool:
|
def available(self) -> bool:
|
||||||
settings = self._load_settings()
|
settings = self._load_settings()
|
||||||
|
if settings.get("tts_enabled") is False:
|
||||||
|
return False
|
||||||
provider = settings["tts_provider"]
|
provider = settings["tts_provider"]
|
||||||
if provider == "disabled":
|
if provider == "disabled":
|
||||||
return False
|
return False
|
||||||
@@ -128,6 +131,8 @@ class TTSService:
|
|||||||
|
|
||||||
def synthesize(self, text: str, use_cache: bool = True) -> Optional[bytes]:
|
def synthesize(self, text: str, use_cache: bool = True) -> Optional[bytes]:
|
||||||
settings = self._load_settings()
|
settings = self._load_settings()
|
||||||
|
if settings.get("tts_enabled") is False:
|
||||||
|
return None
|
||||||
provider = settings["tts_provider"]
|
provider = settings["tts_provider"]
|
||||||
model = settings["tts_model"]
|
model = settings["tts_model"]
|
||||||
voice = settings["tts_voice"]
|
voice = settings["tts_voice"]
|
||||||
|
|||||||
57
tests/test_speech_service_toggles.py
Normal file
57
tests/test_speech_service_toggles.py
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
from services.stt.stt_service import STTService
|
||||||
|
from services.tts.tts_service import TTSService
|
||||||
|
|
||||||
|
|
||||||
|
def test_tts_disabled_toggle_blocks_synthesis(monkeypatch, tmp_path):
|
||||||
|
service = TTSService(cache_dir=str(tmp_path))
|
||||||
|
calls = {"endpoint": 0, "kokoro": 0}
|
||||||
|
|
||||||
|
monkeypatch.setattr(service, "_load_settings", lambda: {
|
||||||
|
"tts_enabled": False,
|
||||||
|
"tts_provider": "endpoint:voice-endpoint",
|
||||||
|
"tts_model": "tts-1",
|
||||||
|
"tts_voice": "alloy",
|
||||||
|
"tts_speed": "1",
|
||||||
|
})
|
||||||
|
|
||||||
|
def fake_endpoint(*args, **kwargs):
|
||||||
|
calls["endpoint"] += 1
|
||||||
|
return b"audio"
|
||||||
|
|
||||||
|
def fake_kokoro():
|
||||||
|
calls["kokoro"] += 1
|
||||||
|
return None
|
||||||
|
|
||||||
|
monkeypatch.setattr(service, "_synthesize_api", fake_endpoint)
|
||||||
|
monkeypatch.setattr(service, "_get_kokoro", fake_kokoro)
|
||||||
|
|
||||||
|
assert service.available is False
|
||||||
|
assert service.synthesize("hello") is None
|
||||||
|
assert calls == {"endpoint": 0, "kokoro": 0}
|
||||||
|
|
||||||
|
|
||||||
|
def test_stt_disabled_toggle_blocks_transcription(monkeypatch):
|
||||||
|
service = STTService()
|
||||||
|
calls = {"endpoint": 0, "whisper": 0}
|
||||||
|
|
||||||
|
monkeypatch.setattr(service, "_load_settings", lambda: {
|
||||||
|
"stt_enabled": False,
|
||||||
|
"stt_provider": "endpoint:transcribe-endpoint",
|
||||||
|
"stt_model": "whisper-1",
|
||||||
|
"stt_language": "",
|
||||||
|
})
|
||||||
|
|
||||||
|
def fake_endpoint(*args, **kwargs):
|
||||||
|
calls["endpoint"] += 1
|
||||||
|
return "transcript"
|
||||||
|
|
||||||
|
def fake_whisper():
|
||||||
|
calls["whisper"] += 1
|
||||||
|
return None
|
||||||
|
|
||||||
|
monkeypatch.setattr(service, "_transcribe_api", fake_endpoint)
|
||||||
|
monkeypatch.setattr(service, "_get_whisper", fake_whisper)
|
||||||
|
|
||||||
|
assert service.available is False
|
||||||
|
assert service.transcribe(b"audio") is None
|
||||||
|
assert calls == {"endpoint": 0, "whisper": 0}
|
||||||
Reference in New Issue
Block a user