[Feature] Support Gradio Demo for Qwen3-Omni (#116)

Signed-off-by: samithuang <285365963@qq.com>
This commit is contained in:
Samit authored and GitHub committed 2025-11-30 20:44:04 +08:00
1 parent ec9e04027d
commit 3ea7fd280b
3 files changed
+16 -14

No files matched your search

+2 -2
View File
@@ -23,12 +23,12 @@ cd examples/online_serving
Send request via python
```bash
python openai_chat_completion_client_for_multimodal_generation.py --query-type mixed_modalities
python openai_chat_completion_client_for_multimodal_generation.py --query-type use_video
```
Send request via curl
```bash
bash run_curl_multimodal_generation.sh mixed_modalities
bash run_curl_multimodal_generation.sh use_audio_in_video
```
### FAQ
@@ -42,19 +42,20 @@ SUPPORTED_MODELS: dict[str, dict[str, Any]] = {
"seed": SEED,
},
"talker": {
"temperature": 0.0,
"top_p": 1.0,
"top_k": -1,
"temperature": 0.9,
"top_k": 50,
"max_tokens": 4096,
"detokenize": True,
"repetition_penalty": 1.1,
"seed": SEED,
"detokenize": False,
"repetition_penalty": 1.05,
"stop_token_ids": [2150],
},
"code2wav": {
"temperature": 0.0,
"top_p": 1.0,
"top_k": -1,
"max_tokens": 2048,
"max_tokens": 4096 * 16,
"seed": SEED,
"detokenize": True,
"repetition_penalty": 1.1,
},
@@ -310,11 +311,11 @@ async def run_inference_async_omni_llm(
)
prompt = f"<|im_start|>system\n{default_system}<|im_end|>\n<|im_start|>user\n"
if audio_data:
prompt += "<|audio_bos|><|AUDIO|><|audio_eos|>"
prompt += "<|audio_start|><|audio_pad|><|audio_end|>"
if image_data:
prompt += "<|vision_bos|><|IMAGE|><|vision_eos|>"
prompt += "<|vision_start|><|image_pad|><|vision_end|>"
if video_payload is not None:
prompt += "<|vision_bos|><|VIDEO|><|vision_eos|>"
prompt += "<|vision_start|><|video_pad|><|vision_end|>"
if user_prompt.strip():
prompt += f"{user_prompt}"
prompt += "<|im_end|>\n<|im_start|>assistant\n"
@@ -344,14 +345,15 @@ async def run_inference_async_omni_llm(
text_outputs.append(output.text)
elif stage_outputs.final_output_type == "audio":
# multimodal_output is on the RequestOutput object
# See vllm_omni/entrypoints/openai/serving_chat.py:680 for reference
# See vllm_omni/entrypoints/openai/serving_chat.py:733 for reference
if hasattr(request_output, "multimodal_output") and request_output.multimodal_output:
if "audio" in request_output.multimodal_output:
audio_tensor = request_output.multimodal_output["audio"]
# Ensure audio is 1D (flatten if needed)
if hasattr(audio_tensor, "ndim") and audio_tensor.ndim > 1:
audio_tensor = audio_tensor.flatten()
audio_np = audio_tensor.detach().cpu().numpy()
# Convert BFloat16 to Float32 before numpy conversion (numpy doesn't support BFloat16)
audio_np = audio_tensor.float().detach().cpu().numpy()
audio_output = (
24000, # sampling rate in Hz
audio_np,
@@ -2,7 +2,7 @@
set -euo pipefail
# Default query type
QUERY_TYPE="${1:-mixed_modalities}"
QUERY_TYPE="${1:-use_audio_in_video}"
# Validate query type
if [[ ! "$QUERY_TYPE" =~ ^(mixed_modalities|use_audio_in_video|multi_audios|text)$ ]]; then