[CI/Build] Let audio assertions pin the transcript language (#5646)
Signed-off-by: Shenglei Fu <sfu@confluent.io>
This commit is contained in:
1 parent
cd5daaea6a
commit
9d67f8e02f
5 files changed
+165
-9
No files matched your search
@@ -1,9 +1,12 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
|
||||
|
||||
from types import SimpleNamespace
|
||||
|
||||
import pytest
|
||||
|
||||
from tests.helpers.assertions import _assert_transcript_matches
|
||||
from tests.helpers import assertions
|
||||
from tests.helpers.assertions import _assert_transcript_matches, _resolve_audio_transcript
|
||||
|
||||
pytestmark = [pytest.mark.core_model, pytest.mark.cpu]
|
||||
|
||||
@@ -25,3 +28,63 @@ def test_short_transcript_unrelated_text_still_fails():
|
||||
expected_text="how are you",
|
||||
threshold=0.9,
|
||||
)
|
||||
|
||||
|
||||
def _capture_transcribe(monkeypatch) -> dict:
|
||||
captured: dict = {}
|
||||
|
||||
def fake_convert(raw_bytes, model_size="small", language=None):
|
||||
captured["model_size"] = model_size
|
||||
captured["language"] = language
|
||||
return "London"
|
||||
|
||||
monkeypatch.setattr(assertions, "convert_audio_bytes_to_text", fake_convert)
|
||||
return captured
|
||||
|
||||
|
||||
def test_resolve_transcript_honors_declared_language(monkeypatch):
|
||||
captured = _capture_transcribe(monkeypatch)
|
||||
response = SimpleNamespace(audio_content=None, audio_bytes=b"fake-wav")
|
||||
|
||||
_resolve_audio_transcript(
|
||||
response,
|
||||
{"modalities": ["text", "audio"], "transcript_language": "en"},
|
||||
"full_model",
|
||||
speech_api=False,
|
||||
)
|
||||
|
||||
assert captured["language"] == "en"
|
||||
|
||||
|
||||
def test_resolve_transcript_leaves_language_unset_by_default(monkeypatch):
|
||||
captured = _capture_transcribe(monkeypatch)
|
||||
response = SimpleNamespace(audio_content=None, audio_bytes=b"fake-wav")
|
||||
|
||||
_resolve_audio_transcript(
|
||||
response,
|
||||
{"modalities": ["text", "audio"]},
|
||||
"full_model",
|
||||
speech_api=False,
|
||||
)
|
||||
|
||||
assert captured["language"] is None
|
||||
assert captured["model_size"] == "small"
|
||||
|
||||
|
||||
def test_escalated_transcript_keeps_declared_language(monkeypatch):
|
||||
# The escalated pass must honour the same language, otherwise a request that
|
||||
# pins one silently falls back to auto-detection on retry.
|
||||
captured = _capture_transcribe(monkeypatch)
|
||||
|
||||
with pytest.raises(AssertionError, match="after ASR escalation"):
|
||||
_assert_transcript_matches(
|
||||
"totally different words",
|
||||
audio_bytes=b"fake-wav",
|
||||
expected_text="how are you",
|
||||
threshold=0.9,
|
||||
escalation_model="large-v3",
|
||||
language="en",
|
||||
)
|
||||
|
||||
assert captured["model_size"] == "large-v3"
|
||||
assert captured["language"] == "en"
|
||||
Reference in new issue
Block a user