mbzuai-oryx/OmniEvalKit

OmniEvalkit: A Unified Omni Evaluation Framework

Python

23

22 commits

updated Sep 7, 2026

See the code

README

Training-Free Omni

Training-Free Speech-Centric Omni Understanding with Frozen VLMs

Oryx Video-ChatGPT

Ankan Deria, Hanoona Rasheed, Xilin He, Fahad Shahbaz Khan, Salman Khan

Mohamed bin Zayed University of Artificial Intelligence

Paper Website


πŸ’‘ Training-Free Omni

Training-Free Omni equips frozen vision-language models with speech-centric omni understanding without model training. It converts speech into structured textual evidence and combines it with image or video inputs through a unified evaluation pipeline.

Training-Free Omni teaser


πŸ”₯ Highlights

  • Training-free: extends frozen VLMs to speech-centric omni understanding without fine-tuning.
  • Unified multimodal evaluation: supports text, image, video, audio, and audio-visual tasks.
  • Broad model coverage: includes Qwen, Gemma, MiniCPM, VILA, and OmniVinci adapters.
  • Broad benchmark coverage: provides 118 dataset adapters with shared evaluation and reporting.
  • Optional spoken output: combines multimodal answers with CosyVoice3 speech synthesis.

πŸš€ Quick Start

Installation

Python 3.10+ and ffmpeg are recommended. Install the correct PyTorch build for your CPU, CUDA, or ROCm platform first.

python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install --upgrade pip
python3 -m pip install -r requirements.txt

The root requirements.txt is consolidated. Some model adapters retain their own environment instructions; follow the selected adapter's README when provided.

Run an Evaluation

Run all commands from the repository root:

MODEL=qwen25omni \
MODEL_PATH=Qwen/Qwen2.5-Omni-3B \
EVAL_DATASETS=daily_omni \
DATA_DIR=data/daily_omni \
OUTPUT_DIR=results/qwen25omni \
LLM_JUDGE=False \
bash eval.sh

Use comma-separated names to evaluate multiple datasets:

EVAL_DATASETS="daily_omni,omnibench,av_odyssey" \
MODEL=qwen25omni \
MODEL_PATH=Qwen/Qwen2.5-Omni-3B \
OUTPUT_DIR=results/qwen25omni \
bash eval.sh

For a short smoke test, add MAX_SAMPLES=3. Set RESUME=True to continue an interrupted run.

Model Configurations

Use the evaluation command above and replace MODEL and MODEL_PATH with one of the following configurations.

ModelMODELMODEL_PATHAdditional setting
Qwen2.5-Omniqwen25omniQwen/Qwen2.5-Omni-3BNative audio/image/video input
Qwen2.5-VL + speechqwen25vlomni_advanceQwen/Qwen2.5-VL-3B-InstructQWEN25VL_USE_ASR=True
Qwen3.5qwen35omniQwen/Qwen3.5-2BFor separate audio: QWEN35OMNI_USE_ASR=True
Qwen3-Omni 30Bqwen3omni30bQwen3-Omni checkpoint or model IDQWEN3OMNI_USE_AUDIO_IN_VIDEO=True
Qwen3-VL 30B + Whisperqwen3vl30b_whisperQwen3-VL checkpoint or model IDWhisper-enabled adapter
Gemma 4gemma4e2bgoogle/gemma-4-E2B-itImage/video understanding
Gemma 4 + Whispergemma4e2b_whispergoogle/gemma-4-E2B-itSpeech-enabled adapter
MiniCPM-o 4.5minicpmo45openbmb/MiniCPM-o-4_5Set MINICPMO45_INIT_TTS=False for evaluation
MiniCPM-V 4.5 + Whisperminicpmv45_whisperopenbmb/MiniCPM-V-4_5Speech-enabled adapter
VILA-HD + WhisperVILA_whispernvidia/NVILA-8B-HD-VideoRequires an AutoGaze checkpoint
NVILA + WhisperVILA_whisper_1Efficient-Large-Model/NVILA-8B-VideoRequires VILA-specific dependencies
OmniVinciomnivinciLocal OmniVinci checkpointSet OMNIVINCI_MODEL_PATH

Model IDs may be replaced with local checkpoint paths for offline evaluation.

Direct Python Evaluation

python3 run_eval.py \
  --model qwen25omni \
  --model_path Qwen/Qwen2.5-Omni-3B \
  --dataset daily_omni \
  --data_dir data/daily_omni \
  --output_dir results/qwen25omni \
  --llm_judge False

End-to-End Text and Speech Output

Prepare CosyVoice3 once:

bash End_to_End_Model/setup_cosyvoice3.sh

Then run multimodal inference with text and spoken output:

python3 End_to_End_Model/run_qwen25vlomni_advance.py \
  --video path/to/video.mp4 \
  --audio path/to/audio.wav \
  --question "What happens in this video?" \
  --output-mode both \
  --output-audio outputs/answer.wav

πŸ“Š Evaluation Outputs

Each run writes:

<OUTPUT_DIR>/<dataset>/predictions.jsonl
<OUTPUT_DIR>/<dataset>/summary.json
<OUTPUT_DIR>/all_results.csv

Dataset names correspond to folders under datasets/. Model names correspond to folders under models/. Model checkpoints and benchmark data are not included in this repository.


πŸ“œ Citation

@article{deria2026training,
  title={Training-Free Speech-Centric Omni Understanding with Frozen VLMs},
  author={Deria, Ankan and Rasheed, Hanoona and He, Xilin and Khan, Fahad Shahbaz and Khan, Salman},
  journal={arXiv preprint arXiv:2609.04242},
  year={2026}
}

evaluation-framework
multimodal
omnievalkit

mbzuai-oryx/OmniEvalKit

OmniEvalkit: A Unified Omni Evaluation Framework

Python

23

22 commits

updated Sep 7, 2026

See the code

README

Training-Free Omni

Training-Free Speech-Centric Omni Understanding with Frozen VLMs

Oryx Video-ChatGPT

Ankan Deria, Hanoona Rasheed, Xilin He, Fahad Shahbaz Khan, Salman Khan

Mohamed bin Zayed University of Artificial Intelligence

Paper Website


πŸ’‘ Training-Free Omni

Training-Free Omni equips frozen vision-language models with speech-centric omni understanding without model training. It converts speech into structured textual evidence and combines it with image or video inputs through a unified evaluation pipeline.

Training-Free Omni teaser


πŸ”₯ Highlights

  • Training-free: extends frozen VLMs to speech-centric omni understanding without fine-tuning.
  • Unified multimodal evaluation: supports text, image, video, audio, and audio-visual tasks.
  • Broad model coverage: includes Qwen, Gemma, MiniCPM, VILA, and OmniVinci adapters.
  • Broad benchmark coverage: provides 118 dataset adapters with shared evaluation and reporting.
  • Optional spoken output: combines multimodal answers with CosyVoice3 speech synthesis.

πŸš€ Quick Start

Installation

Python 3.10+ and ffmpeg are recommended. Install the correct PyTorch build for your CPU, CUDA, or ROCm platform first.

python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install --upgrade pip
python3 -m pip install -r requirements.txt

The root requirements.txt is consolidated. Some model adapters retain their own environment instructions; follow the selected adapter's README when provided.

Run an Evaluation

Run all commands from the repository root:

MODEL=qwen25omni \
MODEL_PATH=Qwen/Qwen2.5-Omni-3B \
EVAL_DATASETS=daily_omni \
DATA_DIR=data/daily_omni \
OUTPUT_DIR=results/qwen25omni \
LLM_JUDGE=False \
bash eval.sh

Use comma-separated names to evaluate multiple datasets:

EVAL_DATASETS="daily_omni,omnibench,av_odyssey" \
MODEL=qwen25omni \
MODEL_PATH=Qwen/Qwen2.5-Omni-3B \
OUTPUT_DIR=results/qwen25omni \
bash eval.sh

For a short smoke test, add MAX_SAMPLES=3. Set RESUME=True to continue an interrupted run.

Model Configurations

Use the evaluation command above and replace MODEL and MODEL_PATH with one of the following configurations.

ModelMODELMODEL_PATHAdditional setting
Qwen2.5-Omniqwen25omniQwen/Qwen2.5-Omni-3BNative audio/image/video input
Qwen2.5-VL + speechqwen25vlomni_advanceQwen/Qwen2.5-VL-3B-InstructQWEN25VL_USE_ASR=True
Qwen3.5qwen35omniQwen/Qwen3.5-2BFor separate audio: QWEN35OMNI_USE_ASR=True
Qwen3-Omni 30Bqwen3omni30bQwen3-Omni checkpoint or model IDQWEN3OMNI_USE_AUDIO_IN_VIDEO=True
Qwen3-VL 30B + Whisperqwen3vl30b_whisperQwen3-VL checkpoint or model IDWhisper-enabled adapter
Gemma 4gemma4e2bgoogle/gemma-4-E2B-itImage/video understanding
Gemma 4 + Whispergemma4e2b_whispergoogle/gemma-4-E2B-itSpeech-enabled adapter
MiniCPM-o 4.5minicpmo45openbmb/MiniCPM-o-4_5Set MINICPMO45_INIT_TTS=False for evaluation
MiniCPM-V 4.5 + Whisperminicpmv45_whisperopenbmb/MiniCPM-V-4_5Speech-enabled adapter
VILA-HD + WhisperVILA_whispernvidia/NVILA-8B-HD-VideoRequires an AutoGaze checkpoint
NVILA + WhisperVILA_whisper_1Efficient-Large-Model/NVILA-8B-VideoRequires VILA-specific dependencies
OmniVinciomnivinciLocal OmniVinci checkpointSet OMNIVINCI_MODEL_PATH

Model IDs may be replaced with local checkpoint paths for offline evaluation.

Direct Python Evaluation

python3 run_eval.py \
  --model qwen25omni \
  --model_path Qwen/Qwen2.5-Omni-3B \
  --dataset daily_omni \
  --data_dir data/daily_omni \
  --output_dir results/qwen25omni \
  --llm_judge False

End-to-End Text and Speech Output

Prepare CosyVoice3 once:

bash End_to_End_Model/setup_cosyvoice3.sh

Then run multimodal inference with text and spoken output:

python3 End_to_End_Model/run_qwen25vlomni_advance.py \
  --video path/to/video.mp4 \
  --audio path/to/audio.wav \
  --question "What happens in this video?" \
  --output-mode both \
  --output-audio outputs/answer.wav

πŸ“Š Evaluation Outputs

Each run writes:

<OUTPUT_DIR>/<dataset>/predictions.jsonl
<OUTPUT_DIR>/<dataset>/summary.json
<OUTPUT_DIR>/all_results.csv

Dataset names correspond to folders under datasets/. Model names correspond to folders under models/. Model checkpoints and benchmark data are not included in this repository.


πŸ“œ Citation

@article{deria2026training,
  title={Training-Free Speech-Centric Omni Understanding with Frozen VLMs},
  author={Deria, Ankan and Rasheed, Hanoona and He, Xilin and Khan, Fahad Shahbaz and Khan, Salman},
  journal={arXiv preprint arXiv:2609.04242},
  year={2026}
}

evaluation-framework
multimodal
omnievalkit