[Bugfix] Fix diffusion TTS adapter lookup in speech serving (#6121)
Signed-off-by: HaningZS <resossr0v0@gmail.com>
This commit is contained in:
1 parent
5358f5db01
commit
72a02b492a
2 files changed
+25
-2
No files matched your search
@@ -680,7 +680,7 @@ class TestSpeechAPI:
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_create_diffusion_speech_extra_params(self, mocker: MockerFixture):
|
||||
"""Test that extra_params are correctly applied to sampling_params_list in diffusion mode."""
|
||||
"""Test public diffusion speech success and extra_params propagation."""
|
||||
# Mock the engine client
|
||||
mock_engine = mocker.MagicMock()
|
||||
|
||||
@@ -704,7 +704,11 @@ class TestSpeechAPI:
|
||||
|
||||
req = OpenAICreateSpeechRequest(input="Hello", extra_params={"new_arg": 123, "existing_arg": "new_value"})
|
||||
|
||||
await server._create_diffusion_speech(req)
|
||||
response = await server.create_speech(req)
|
||||
|
||||
assert response.status_code == 200
|
||||
assert response.media_type == "audio/wav"
|
||||
assert response.body == b"dummy"
|
||||
|
||||
# Verify generate was called
|
||||
mock_engine.generate.assert_called_once()
|
||||
@@ -737,6 +741,19 @@ class TestTTSMethods:
|
||||
yield server
|
||||
server.shutdown()
|
||||
|
||||
def test_diffusion_audio_encode_speed_skips_ar_adapter(self, mocker: MockerFixture):
|
||||
"""Pure-diffusion speech keeps generic speed handling outside AR adapters."""
|
||||
server = OmniOpenAIServingSpeech.for_diffusion(
|
||||
diffusion_engine=mocker.MagicMock(),
|
||||
model_name="test-model",
|
||||
)
|
||||
resolve_adapter = mocker.patch.object(serving_speech_module, "resolve_adapter")
|
||||
|
||||
speed = server._audio_encode_speed(OpenAICreateSpeechRequest(input="Hello", speed=1.25))
|
||||
|
||||
assert speed == 1.25
|
||||
resolve_adapter.assert_not_called()
|
||||
|
||||
def test_is_tts_detection_no_stage(self, speech_server):
|
||||
"""Test TTS model detection when no TTS stage exists."""
|
||||
# Fixture creates server with stage_configs = [] -> _is_tts should be False
|
||||
|
||||
@@ -502,11 +502,17 @@ class OmniOpenAIServingSpeech(OpenAIServing, AudioMixin):
|
||||
def _get_tts_adapter(self):
|
||||
"""Return the per-model serving adapter for the current ``_tts_model_type``.
|
||||
|
||||
Pure-diffusion speech uses its dedicated request path and does not
|
||||
resolve adapters for AR-stage TTS models.
|
||||
|
||||
Resolved lazily (rebuilt if ``_tts_model_type`` changed since the cached
|
||||
instance was built) so callers that set ``_tts_model_type`` after
|
||||
construction still dispatch to the matching adapter. In production
|
||||
``_tts_model_type`` is fixed at init, so the cached instance is reused.
|
||||
"""
|
||||
if self._diffusion_mode:
|
||||
return None
|
||||
|
||||
adapter_cls = resolve_adapter(self._tts_model_type)
|
||||
if adapter_cls is None:
|
||||
self._adapter = None
|
||||
|
||||
Reference in new issue
Block a user