Some checks are pending
CI / ruff (push) Waiting to run
CI / mypy (push) Waiting to run
CI / pytest (push) Waiting to run
CI / package (push) Waiting to run
CI / Install smoke (${{ matrix.label }}) (linux, ubuntu-latest) (push) Blocked by required conditions
CI / Install smoke (${{ matrix.label }}) (macos-arm64, macos-14) (push) Blocked by required conditions
78 lines
2.5 KiB
Python
78 lines
2.5 KiB
Python
import pytest
|
|
|
|
from speech_to_speech.STT import parakeet_tdt_handler
|
|
from speech_to_speech.STT.parakeet_tdt_handler import ParakeetTDTSTTHandler
|
|
|
|
|
|
def test_build_lingua_detector_preloads_language_models(monkeypatch):
|
|
if not parakeet_tdt_handler.LINGUA_AVAILABLE:
|
|
pytest.skip("lingua-language-detector is not installed")
|
|
|
|
calls = []
|
|
detector = object()
|
|
|
|
class Builder:
|
|
def with_preloaded_language_models(self):
|
|
calls.append("preload")
|
|
return self
|
|
|
|
def build(self):
|
|
calls.append("build")
|
|
return detector
|
|
|
|
class BuilderFactory:
|
|
@staticmethod
|
|
def from_languages(*languages):
|
|
calls.append(("languages", languages))
|
|
return Builder()
|
|
|
|
monkeypatch.setattr(parakeet_tdt_handler, "LanguageDetectorBuilder", BuilderFactory)
|
|
|
|
assert parakeet_tdt_handler._build_lingua_detector() is detector
|
|
assert calls == [("languages", tuple(parakeet_tdt_handler._lingua_languages)), "preload", "build"]
|
|
|
|
|
|
def test_detect_language_from_short_text_returns_none_without_querying_detector(monkeypatch):
|
|
handler = object.__new__(ParakeetTDTSTTHandler)
|
|
|
|
class ExplodingDetector:
|
|
def detect_language_of(self, text):
|
|
raise AssertionError("short text should not invoke lingua")
|
|
|
|
monkeypatch.setattr(parakeet_tdt_handler, "LINGUA_AVAILABLE", True)
|
|
monkeypatch.setattr(parakeet_tdt_handler, "_lingua_detector", ExplodingDetector(), raising=False)
|
|
|
|
assert handler._detect_language_from_text("Okay.") is None
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"text",
|
|
[
|
|
"Okay, open the door.",
|
|
"Okay, try that again.",
|
|
"Open the door, please.",
|
|
],
|
|
)
|
|
def test_detect_language_from_short_english_text_uses_lingua_successfully(text):
|
|
if not parakeet_tdt_handler.LINGUA_AVAILABLE:
|
|
pytest.skip("lingua-language-detector is not installed")
|
|
|
|
handler = object.__new__(ParakeetTDTSTTHandler)
|
|
|
|
assert len(text) >= 20
|
|
assert handler._detect_language_from_text(text) == "en"
|
|
|
|
|
|
def test_detect_language_from_long_norwegian_text_maps_nb_to_no():
|
|
if not parakeet_tdt_handler.LINGUA_AVAILABLE:
|
|
pytest.skip("lingua-language-detector is not installed")
|
|
|
|
handler = object.__new__(ParakeetTDTSTTHandler)
|
|
text = (
|
|
"Jeg heter Øyvind og bor i Trondheim. Denne teksten er lang nok til å teste "
|
|
"om språkdetektoren virkelig klarer å skille norsk bokmål fra dansk og svensk "
|
|
"i et realistisk avsnitt med vanlige ord og tegn."
|
|
)
|
|
|
|
assert handler._detect_language_from_text(text) == "no"
|