[Model] Default MOSS Local 1.5 to adaptive CUDA MRV2 with MPS (#8438)

Signed-off-by: Sy03 <1370724210@qq.com>
This commit is contained in:
Sy03 authored and GitHub committed 2026-10-06 08:20:46 -07:00
1 parent ee9ab9ea88
commit 7be49aa0ce
30 files changed
+808 -152

No files matched your search

@@ -61,6 +61,7 @@ from vllm_omni.entrypoints.openai.tts_adapters.base import (
)
from vllm_omni.entrypoints.openai.tts_adapters.capabilities import load_supported_speakers
from vllm_omni.entrypoints.openai.tts_adapters.ming_tts import MingTTSAdapter
from vllm_omni.entrypoints.openai.tts_adapters.moss_tts import MossTTSAdapter
from vllm_omni.entrypoints.openai.tts_adapters.qwen3_tts import Qwen3TTSAdapter, Qwen3TTSCodecLimitError
from vllm_omni.entrypoints.openai.tts_adapters.voxtral import VoxtralTTSAdapter
from vllm_omni.entrypoints.serve.utils import errors as serve_errors
@@ -84,6 +85,42 @@ pytestmark = [pytest.mark.core_model, pytest.mark.cpu]
logger = logging.getLogger(__name__)
@pytest.mark.parametrize("sse", [False, True])
@pytest.mark.parametrize("payload", [None, "empty", "valid"])
@pytest.mark.asyncio
async def test_moss_empty_stream_is_an_error(mocker, sse, payload):
serving = OmniOpenAIServingSpeech.__new__(OmniOpenAIServingSpeech)
serving._tts_model_type = "moss_tts"
serving.engine_client = SimpleNamespace(
model_config=SimpleNamespace(model="OpenMOSS-Team/MOSS-TTS-Local-Transformer-v1.5")
)
serving._adapter = MossTTSAdapter(SpeechServingContext(server=serving, engine_client=serving.engine_client))
ready = mocker.patch.object(serving, "_mark_ref_audio_artifact_ready_for_request")
discard = mocker.patch.object(serving, "_discard_ref_audio_artifact_warmup")
async def results():
if payload is not None:
audio = torch.zeros(320) if payload == "valid" else torch.empty(0)
yield SimpleNamespace(multimodal_output={"model_outputs": audio, "sr": 24000})
yield SimpleNamespace(multimodal_output={"model_outputs": torch.empty(0), "sr": 24000})
if sse:
events = [event async for event in serving._generate_audio_sse_events(results(), "moss-empty")]
assert any("speech.audio.done" in event for event in events) == (payload == "valid")
assert any("speech.audio.error" in event for event in events) == (payload != "valid")
else:
chunks = serving._generate_audio_chunks(results(), "moss-empty", response_format="wav")
if payload == "valid":
output = [chunk async for chunk in chunks]
assert len(output) == 2 and output[0].startswith(b"RIFF")
assert len(output[1]) == 640
else:
with pytest.raises(TTSGenerationError, match="no audio"):
await anext(chunks)
assert ready.call_count == int(payload == "valid")
assert discard.call_count == int(payload != "valid")
class TestAudioMixin:
@pytest.fixture
def audio_mixin(self):