alt.freeweights.qwen / Qwen3-Omni-30B-A3B-Captioner
From: Qwen <huggingface.co/Qwen>Newsgroups: alt.freeweights.qwenSubject:

Qwen3-Omni-30B-A3B-Captioner

Date: 2026-11-15Commit: a2bd106Signed: 2DC28CC7B26A283B ✓

Any to any model with 31.7B parameters. Safetensors weights, 63.4 GB in all. Published by Qwen under Apache-2.0.

31.7B params63.4GBQwen3-Omni-30B-A3B-Captionersafetensorspermissive
FactsParams31.7BSize63.4 GBFormatssafetensorsTaskany to anyLicenseApache-2.0From sourcepermissive
$ fw get Qwen/Qwen3-Omni-30B-A3B-Captioner
# manifest sha256 151b73ec6fe8… · 63.4 GB · 26 files
$ fw verify ./Qwen3-Omni-30B-A3B-Captioner Qwen/Qwen3-Omni-30B-A3B-Captioner
From sourceHosted (signed)Qwen/Qwen3-Omni-30B-A3B-CaptionerLast check: 2026-11-15 00:15 UTC

Get help: custom fine-tune or private deploy. We review your setup before we quote.

Works with

Runs with

Ranked by fit to this model (safetensors), then by GitHub stars.

Overview

Size
63.4 GB
Weights
63.4 GB (safetensors)
Parameters
31.7B
Formats
safetensors
Task
any to any
License
Apache-2.0 (permissive)
Files
26, each with a sha256
Publisher
Qwen
Added
2026-11-15
Section
alt.freeweights.qwen
Lineage

Original release from the publisher.

Where these bytes come from
Publisher at the pinned commit→You

Sources are tried in order. A file counts only when its size and sha256 match the manifest. Sources are checked when you ask for them, not on a timer.

Sources
BadgeHostLast checkResult
From sourcehuggingface.co2026-11-15 00:15 UTCpassed

Model card

From the publisher at commit a2bd106. Shown as plain text with links; images open at the publisher.

Qwen3-Omni#

Chat

Overview#

Introduction#

Image: image

Since the research community currently lacks a general-purpose audio captioning model, we fine-tuned Qwen3-Omni-30B-A3B to obtain Qwen3-Omni-30B-A3B-Captioner, which produces detailed, low-hallucination captions for arbitrary audio inputs.

Qwen3-Omni-30B-A3B-Captioner is a powerful fine-grained audio analysis model, built upon the Qwen3-Omni-30B-A3B-Instruct base model. It is specifically designed to generate accurate and comprehensive content descriptions in complex and diverse audio scenarios. Without requiring any additional prompting, the model can automatically parse and describe various types of audio content, ranging from complex speech and environmental sounds to music and cinematic sound effects, delivering stable and reliable outputs even in multi-source, mixed audio environments.

In terms of speech understanding, Qwen3-Omni-30B-A3B-Captioner excels at identifying multiple speaker emotions, multilingual expressions, and layered intentions. It can also perceive cultural context and implicit information within the audio, enabling a deep comprehension of the underlying meaning behind the spoken words. In non-speech scenarios, the model demonstrates exceptional sound recognition and analysis capabilities, accurately distinguishing and describing intricate layers of real-world sounds, ambient atmospheres, and dynamic audio details in film and media.

Note: Qwen3-Omni-30B-A3B-Captioner is a single-turn model that accepts only one audio input per inference. It does not accept any text prompts and supports audio input only, with text output only. As Qwen3-Omni-30B-A3B-Captioner is designed for generating fine‑grained descriptions of audio, excessively long audio clips may diminish detail perception. We recommend, as a best practice, limiting audio length to no more than 30 seconds.

QuickStart#

Model Description and Download#
Model NameDescription
Qwen3-Omni-30B-A3B-CaptionerA downstream audio fine-grained caption model fine-tuned from Qwen3-Omni-30B-A3B-Instruct, which produces detailed, low-hallucination captions for arbitrary audio inputs. It contains the thinker, supporting audio input and text output. For more information, you can refer to the model's cookbook or Hugging Face Demo and ModelScope Demo.

During loading in Hugging Face Transformers or vLLM, model weights will be automatically downloaded based on the model name. However, if your runtime environment is not conducive to downloading weights during execution, you can refer to the following commands to manually download the model weights to a local directory:

# Download through ModelScope (recommended for users in Mainland China)
pip install -U modelscope
modelscope download --model Qwen/Qwen3-Omni-30B-A3B-Captioner --local_dir ./Qwen3-Omni-30B-A3B-Captioner

# Download through Hugging Face
pip install -U "huggingface_hub[cli]"
huggingface-cli download Qwen/Qwen3-Omni-30B-A3B-Captioner --local-dir ./Qwen3-Omni-30B-A3B-Captioner
Transformers Usage#
Installation#

The Hugging Face Transformers code for Qwen3-Omni has been successfully merged, but the PyPI package has not yet been released. Therefore, you need to install it from source using the following command. We strongly recommend that you create a new Python environment to avoid environment runtime issues.

# If you already have transformers installed, please uninstall it first, or create a new Python environment
# pip uninstall transformers
pip install git+https://github.com/huggingface/transformers
pip install accelerate

We offer a toolkit to help you handle various types of audio and visual input more conveniently, providing an API-like experience. This includes support for base64, URLs, and interleaved audio, images, and videos. You can install it using the following command and make sure your system has ffmpeg installed:

pip install qwen-omni-utils -U

Additionally, we recommend using FlashAttention 2 when running with Hugging Face Transformers to reduce GPU memory usage. However, if you are primarily using vLLM for inference, this installation is not necessary, as vLLM includes FlashAttention 2 by default.

pip install -U flash-attn --no-build-isolation

Also, you should have hardware that is compatible with FlashAttention 2. Read more about it in the official documentation of the FlashAttention repository. FlashAttention 2 can only be used when a model is loaded in torch.float16 or torch.bfloat16.

Code Snippet#

Here is a code snippet to show you how to use Qwen3-Omni-30B-A3B-Captioner with transformers and qwen_omni_utils:

import soundfile as sf

from transformers import Qwen3OmniMoeForConditionalGeneration, Qwen3OmniMoeProcessor
from qwen_omni_utils import process_mm_info

MODEL_PATH = "Qwen/Qwen3-Omni-30B-A3B-Captioner"

model = Qwen3OmniMoeForConditionalGeneration.from_pretrained(
    MODEL_PATH,
    dtype="auto",
    device_map="auto",
    attn_implementation="flash_attention_2",
)

processor = Qwen3OmniMoeProcessor.from_pretrained(MODEL_PATH)

conversation = [
    {
        "role": "user",
        "content": [
            {"type": "audio", "audio": "https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen3-Omni/cookbook/caption2.mp3"},
        ],
    },
]

# Preparation for inference
text = processor.apply_chat_template(conversation, add_generation_prompt=True, tokenize=False)
audios, _, _ = process_mm_info(conversation, use_audio_in_video=False)
inputs = processor(text=text, 
                   audio=audios,
                   return_tensors="pt", 
                   padding=True, 
                   use_audio_in_video=False)
inputs = inputs.to(model.device).to(model.dtype)

# Inference: Generation of the output text and audio
text_ids, audio = model.generate(**inputs, 
                                 thinker_return_dict_in_generate=True)

text = processor.batch_decode(text_ids.sequences[:, inputs["input_ids"].shape[1] :],
                              skip_special_tokens=True,
                              clean_up_tokenization_spaces=False)
print(text)
vLLM Usage#
Installation#

We strongly recommend using vLLM for inference and deployment of the Qwen3-Omni series models. Since our code is currently in the pull request stage, you can follow the commands below to install vLLM from source. Please note that we recommend you create a new Python environment to avoid runtime environment conflicts and incompatibilities. For more details on compiling vLLM from source, please refer to the vLLM official documentation.

git clone -b qwen3_omni https://github.com/wangxiongts/vllm.git
cd vllm
pip install -r requirements/build.txt
pip install -r requirements/cuda.txt
export VLLM_PRECOMPILED_WHEEL_LOCATION=https://wheels.vllm.ai/a5dd03c1ebc5e4f56f3c9d3dc0436e9c582c978f/vllm-0.9.2-cp38-abi3-manylinux1_x86_64.whl
VLLM_USE_PRECOMPILED=1 pip install -e . -v --no-build-isolation
# If you meet an "Undefined symbol" error while using VLLM_USE_PRECOMPILED=1, please use "pip install -e . -v" to build from source.
# Install the Transformers
pip install git+https://github.com/huggingface/transformers
pip install accelerate
pip install qwen-omni-utils -U
pip install -U flash-attn --no-build-isolation
Inference#

Below is a simple example of how to run Qwen3-Omni-30B-A3B-Captioner with vLLM:

import os
import torch

from vllm import LLM, SamplingParams
from transformers import Qwen3OmniMoeProcessor
from qwen_omni_utils import process_mm_info

if __name__ == '__main__':
    # vLLM engine v1 not supported yet
    os.environ['VLLM_USE_V1'] = '0'

    MODEL_PATH = "Qwen/Qwen3-Omni-30B-A3B-Captioner"

    llm = LLM(
            model=MODEL_PATH, trust_remote_code=True, gpu_memory_utilization=0.95,
            tensor_parallel_size=torch.cuda.device_count(),
            limit_mm_per_prompt={'audio': 1},
            max_num_seqs=8,
            max_model_len=32768,
            seed=1234,
    )

    sampling_params = SamplingParams(
        temperature=0.6,
        top_p=0.95,
        top_k=20,
        max_tokens=16384,
    )

    processor = Qwen3OmniMoeProcessor.from_pretrained(MODEL_PATH)

    messages = [
        {
            "role": "user",
            "content": [
                {"type": "audio", "audio": "https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen3-Omni/cookbook/caption2.mp3"}
            ], 
        }
    ]

    text = processor.apply_chat_template(
        messages,
        tokenize=False,
        add_generation_prompt=True,
    )
    audios, _, _ = process_mm_info(messages, use_audio_in_video=False)

    inputs = {
        'prompt': text,
        'multi_modal_data': {},
    }

    if audios is not None:
        inputs['multi_modal_data']['audio'] = audios

    outputs = llm.generate([inputs], sampling_params=sampling_params)

    print(outputs[0].outputs[0].text)
vLLM Serve Usage#

You can start vLLM serve through the following command:

# Qwen3-Omni-30B-A3B-Captioner for single GPU
vllm serve Qwen/Qwen3-Omni-30B-A3B-Captioner --port 8901 --host 127.0.0.1 --dtype bfloat16 --max-model-len 32768 --allowed-local-media-path / -tp 1
# Qwen3-Omni-30B-A3B-Captioner for multi-GPU (example on 4 GPUs)
vllm serve Qwen/Qwen3-Omni-30B-A3B-Captioner --port 8901 --host 127.0.0.1 --dtype bfloat16 --max-model-len 32768 --allowed-local-media-path / -tp 4

Then you can use the API as below (via curl, for example):

curl http://localhost:8901/v1/chat/completions \
    -H "Content-Type: application/json" \
    -d '{
    "messages": [
    {"role": "user", "content": [
        {"type": "audio_url", "audio_url": {"url": "https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen3-Omni/cookbook/caption2.mp3"}}
    ]}
    ]
    }'

<br>

Files

26 files · 63.4 GBWeights 63.4 GB (safetensors). Sizes and sha256 from the signed manifest.
Show all 26 files with their sha256
FileSizesha256
.gitattributes1.52 KB11ad7efa24975ee4b0c3c3a38ed18737f0658a5f75a0a96787b576a78a023361
README.md11.5 KB5561afcbfa9eded1e96d86bf6f47062c57faf20e95ab68d2c66ddd9ff6d2b0bc
chat_template.json5.95 KB3afb9519448b62e252cefeed1c0c1939b01b4e8ed70adbaf3c9f952969aa0ec7
config.json8.53 KBe6f8c637528461398ef4e11d48b6112ce73db2458a563dfea548127c2cce253f
generation_config.json112 B399218e58e26b42d0856fb6624fe6f54a01c212682adb6442c06c875a2b200fb
merges.txt1.67 MB599bab54075088774b1733fde865d5bd747cbcc7a547c5bc12610e874e26f5e3
model-00001-of-00016.safetensors4.00 GB7f2e8477f5e8aef9163d7b46ead3e955bf13fec2826092990bc1df434cba67af
model-00002-of-00016.safetensors4.00 GB1eea7a21447ac311636eeb8b2a8f4a10fbe8e1dbb85870432081a0785715c820
model-00003-of-00016.safetensors4.00 GB95465568b11da26b96dbf873c785baec9b371b07d1eaee7516bf0b97ca4d8b8d
model-00004-of-00016.safetensors4.00 GBb6b237e045ab59f8038c8b31fb2d311ef3063101adf90656f1ab931f6c082f87
model-00005-of-00016.safetensors4.00 GBca7c8c1000c27533a7a1142f6249119539e39964056d67f1bbc889c56e7b7365
model-00006-of-00016.safetensors4.00 GB9f292ccd339bb83d5282ea8d941a77d7a8a8e12ba721a711b6691a2e9156cdbd
model-00007-of-00016.safetensors4.00 GB628f156bc9f4bfa57095dd91b21e2fdf16856d67d249eeb722915f40e1821e8d
model-00008-of-00016.safetensors4.00 GB461eeda21222c8f69c4bc7ebc6e977ad776f7350f92c0b440de9149b1452b27c
model-00009-of-00016.safetensors4.00 GB40e7baf316bbfbf5ca007847402f9435ce985bb2893e25e33bd9bb7972aee3f3
model-00010-of-00016.safetensors4.00 GB9c8bd10a2f8d6c5c504f50ec6a1bfbfb311757ce226e600775ac6511c6589bbb
model-00011-of-00016.safetensors4.00 GBb86e1441bdc73585b1e958535aa58a39c96b60ffb1a4af88bdb344df8b678ac8
model-00012-of-00016.safetensors3.99 GB39ae0c5e0073778cc6ac487e8056d803696aa9045738e7e9339e1197b37ba0f7
model-00013-of-00016.safetensors4.00 GB80d775cad42794687b663d5c574b2ec851035e1a8fda81a61f9bec7dfb84cc86
model-00014-of-00016.safetensors4.00 GBc3195c7dda8c4f6033f5f2bc002d06e2f6eb8fad38fe73e92fe798715f42d03e
model-00015-of-00016.safetensors4.00 GB4b5049b50cfd5ef272dca6473b2451774a8828a93aeb37beaadbbe6b4c1f2e41
model-00016-of-00016.safetensors3.46 GB1fe9823d6d7edf67788970f1f9336cf88cf908dd62bdc26692795dbb4488bebe
model.safetensors.index.json1.93 MB282a41fa34d22e13753ae868ce12872ed48c14f32bfbe25b627e18844664afc4
preprocessor_config.json603 Bb10e27fd4542cf89ec7145942b87f3e65408d4e9f9d031a29acdd293c15fb3fc
tokenizer_config.json7.34 KBdc3c31c3bdaedd5016382bb3cbe07323026775ad51f5a4fb564505992ae4a670
vocab.json2.78 MBca10d7e9fb3ed18575dd1e277a2579c16d108e32f27439684afa0e10b1440910
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
a2bd106cbf pinned now2026-11-15 00:15 UTC26 files · 63.4 GB

Use it

$ fw get Qwen/Qwen3-Omni-30B-A3B-Captioner
# manifest sha256 151b73ec6fe8… · 63.4 GB · 26 files
$ fw verify ./Qwen3-Omni-30B-A3B-Captioner Qwen/Qwen3-Omni-30B-A3B-Captioner
fw.pyChecks the signature and every sha256, tries each source in order, resumes.
$ python3 fw.py get https://freeweights.allternit.com/manifests/Qwen/Qwen3-Omni-30B-A3B-Captioner.json --dir ./Qwen3-Omni-30B-A3B-Captioner $ python3 fw.py verify ./Qwen3-Omni-30B-A3B-Captioner ./Qwen__Qwen3-Omni-30B-A3B-Captioner.json
hfThe Hugging Face CLI with one setting. Same repo id.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download Qwen/Qwen3-Omni-30B-A3B-Captioner --revision a2bd106cbf527db5676e79662674da22b0545ec0 --local-dir ./Qwen3-Omni-30B-A3B-Captioner

License

Name
Apache License 2.0
Id
Apache-2.0
Class
Permissive
Redistribution
yes
Listing
Hosted (signed)
Decided
License as declared by the publisher. No person read it. 2026-11-15
Text in
README.md
Text sha256
5561afcbfa9eded1e96d86bf6f47062c57faf20e95ab68d2c66ddd9ff6d2b0bc
Terms gate
No extra terms beyond the license.

Read the license text

Licenses are checked against the license table. A custom license passes only after a person reads it.

Provenance

From: Qwen <huggingface.co/Qwen>Newsgroups: alt.freeweights.qwenSubject: Qwen3-Omni-30B-A3B-CaptionerDate: 2026-11-15Commit: a2bd106Signed: 2DC28CC7B26A283B ✓
Upstream
Qwen/Qwen3-Omni-30B-A3B-Captioner
Pinned commit
a2bd106cbf527db5676e79662674da22b0545ec0
Manifest
Qwen3-Omni-30B-A3B-Captioner.json · .minisig
Manifest sha256
151b73ec6fe8d87c1ff2d0938ea2781349bcf4a63b71971cf20c0339bed82872
Signature
minisign, Ed25519, key 2DC28CC7B26A283B
Created
2026-11-15 00:15 UTC
Generator
freeweights-manifest/0.1.0
Takedowns
None.

How to verify

$ curl -O https://freeweights.allternit.com/manifests/Qwen/Qwen3-Omni-30B-A3B-Captioner.json $ curl -O https://freeweights.allternit.com/manifests/Qwen/Qwen3-Omni-30B-A3B-Captioner.json.minisig $ minisign -Vm Qwen3-Omni-30B-A3B-Captioner.json -P RWQ7KGqyx4zCLXtUFOqvfv8L3g+8fpKJ1FsuxPyOYMF+4KufbUxKq1Oq $ shasum -a 256 <file> # compare with the Files tab

A manifest whose signature fails must be rejected. A file whose size or sha256 does not match must be discarded. Verify a download

Model tree

No related models in this catalog.Nothing here lists this model as its parent, and it names no parent.
Get it
Download
$ HF_ENDPOINT=https://freeweights.allternit.com hf download Qwen/Qwen3-Omni-30B-A3B-Captioner
Open in Freeweights Studio

Pull, verify and run it in the Allternit app on Desktop, web or phone.

Signed manifest
minisign, key 2DC28CC7B26A283B. Qwen3-Omni-30B-A3B-Captioner.json. Provenance. Takedown history: none.
From: BAAI <huggingface.co/BAAI>Subject: Aquila-VL-2B-llava-qwen
From: Perciqa <huggingface.co/Perciqa>Subject: Aurora-Code-1
From: BAAI <huggingface.co/BAAI>Subject: bge-reasoner-embed-qwen3-8b-0923
From: amazon <huggingface.co/amazon>Subject: BMOJOF-primed-HQwen3-8B-Instruct
From: nbeerbower <huggingface.co/nbeerbower>Subject: Bubba-Qwen3.6-27B-LoRA
From: bartowski <huggingface.co/bartowski>Subject: bytkim_Qwen3.8-27B-pi-GGUF