hackathon-advisor / tests /test_asr_runtime.py
JacobLinCool's picture
deploy: sync GitHub main de5dbf9
13fe947 verified
from dataclasses import dataclass
import builtins
from hackathon_advisor.asr_runtime import (
DEFAULT_ASR_MODEL_ID,
NemotronAsrTranscriber,
extract_transcript,
)
@dataclass
class Hypothesis:
text: str
def test_nemotron_transcriber_status_is_lazy() -> None:
transcriber = NemotronAsrTranscriber()
status = transcriber.status().to_dict()
assert status["backend"] == "nemo-asr"
assert status["model_id"] == DEFAULT_ASR_MODEL_ID
assert status["loaded"] is False
assert status["sample_rate"] == 16_000
def test_nemotron_transcriber_requires_nemo_asr(monkeypatch) -> None:
real_import = builtins.__import__
def block_nemo_import(name, *args, **kwargs):
if name == "nemo.collections.asr":
raise ImportError("nemo unavailable")
return real_import(name, *args, **kwargs)
monkeypatch.setattr(builtins, "__import__", block_nemo_import)
transcriber = NemotronAsrTranscriber()
try:
transcriber._ensure_loaded()
except RuntimeError as error:
message = str(error)
assert "NVIDIA NeMo ASR" in message
else:
raise AssertionError("missing NeMo should fail before loading another backend")
def test_extract_transcript_accepts_nemo_output_shapes() -> None:
assert extract_transcript(["A spoken idea."]) == "A spoken idea."
assert extract_transcript([{"text": "A mapped archive."}]) == "A mapped archive."
assert extract_transcript([Hypothesis("A private timeline.")]) == "A private timeline."