vocero-s2s/tests/test_parakeet_language_detection.py
valenti b5f82fb48c
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
first git
2026-08-26 11:30:14 +00:00

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"