Files
DPM/backend/vendor/s2s-cloud/tests/test_parakeet_language_detection.py
T
Pine 7f25c8f6bb refactor(backend): 启动环境初始化与资源项目化(零跨项目依赖)
- main.py:uv run main.py 一键启动——读取 backend/.env、TORCH_HOME/NLTK_DATA 指向项目内缓存、certifi SSL + NO_PROXY 网络直连、默认开启 s2s,启动横幅
- vendor/:补丁后 s2s 云化栈移入项目(backend/vendor/s2s-cloud),pyproject sources 改相对路径
- .gitignore:忽略 .torch-cache / nltk_data 缓存
- AGENTS.md:进程管理铁律(AI 不启动/重启服务,由用户操作)
2026-08-18 01:37:57 +08: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"