Enhance error handling in TTS generation and improve audio output compatibility by supporting both "audio" and "model_outputs" keys in response.

Signed-off-by: tzhouam <tzhouam@connect.ust.hk>
This commit is contained in:
tzhouam committed 2026-02-02 08:40:56 +00:00
1 parent 39f7cade27
commit ce9105267f
2 files changed
+16 -3

No files matched your search

@@ -111,6 +111,10 @@ def run_tts_generation(args) -> None:
print(response.text)
return
if response.content.decode("utf-8").startswith('{"error"'):
print(f"Error: {response.content.decode('utf-8')}")
return
# Save audio response
output_path = args.output or "tts_output.wav"
with open(output_path, "wb") as f:
+12 -3
View File
@@ -258,17 +258,26 @@ class OmniOpenAIServingSpeech(OpenAIServing, AudioMixin):
# Extract audio from output
# Audio can be in final_output.multimodal_output or final_output.request_output.multimodal_output
# Support both "audio" and "model_outputs" keys for compatibility with different models
audio_output = None
if hasattr(final_output, "multimodal_output") and final_output.multimodal_output:
audio_output = final_output.multimodal_output
if (not audio_output or "audio" not in audio_output) and hasattr(final_output, "request_output"):
if not audio_output and hasattr(final_output, "request_output"):
if final_output.request_output and hasattr(final_output.request_output, "multimodal_output"):
audio_output = final_output.request_output.multimodal_output
if not audio_output or "audio" not in audio_output:
# Check for audio data using either "audio" or "model_outputs" key
audio_key = None
if audio_output:
if "audio" in audio_output:
audio_key = "audio"
elif "model_outputs" in audio_output:
audio_key = "model_outputs"
if not audio_output or audio_key is None:
return self.create_error_response("TTS model did not produce audio output.")
audio_tensor = audio_output["audio"]
audio_tensor = audio_output[audio_key]
sample_rate = audio_output.get("sr", 24000)
if hasattr(sample_rate, "item"):
sample_rate = sample_rate.item()