From eefcfeed7abcafc74901c46721e6c3324b85c144 Mon Sep 17 00:00:00 2001 From: Xuan Son Nguyen Date: Thu, 2 Apr 2026 01:01:30 +0200 Subject: [PATCH] qwen3 asr working --- convert_hf_to_gguf.py | 8 ++++++++ tools/mtmd/mtmd.cpp | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/convert_hf_to_gguf.py b/convert_hf_to_gguf.py index d1279668d4..05d8e99284 100755 --- a/convert_hf_to_gguf.py +++ b/convert_hf_to_gguf.py @@ -5057,6 +5057,14 @@ class Qwen3ASRTextModel(Qwen3VLTextModel): super().set_vocab() # fix chat template, use correct chatml format self.gguf_writer.add_chat_template("{% for message in messages %}{{'<|im_start|>' + message['role'] + '\\n' + message['content'] + '<|im_end|>' + '\\n'}}{% endfor %}{% if add_generation_prompt %}{{ '<|im_start|>assistant\\n' }}{% endif %}") + # correct BOS/EOS tokens + with open(self.dir_model / "tokenizer_config.json", "r", encoding="utf-8") as f: + tokenizer_config = json.load(f) + added_tokens = tokenizer_config.get("added_tokens_decoder", {}) + for token_id, data in added_tokens.items(): + if data.get("content") == "<|im_end|>": + self.gguf_writer.add_bos_token_id(int(token_id)) + self.gguf_writer.add_eos_token_id(int(token_id)) def modify_tensors(self, data_torch, name, bid): # qwen3-omni diff --git a/tools/mtmd/mtmd.cpp b/tools/mtmd/mtmd.cpp index 2a8c4e5aad..8219591ed2 100644 --- a/tools/mtmd/mtmd.cpp +++ b/tools/mtmd/mtmd.cpp @@ -982,6 +982,10 @@ bool mtmd_decode_use_non_causal(mtmd_context * ctx) { } bool mtmd_decode_use_mrope(mtmd_context * ctx) { + if (ctx->ctx_v == nullptr && ctx->proj_type_a() == PROJECTOR_TYPE_QWEN3A) { + // qwen3-asr + return true; + } switch (ctx->proj_type_v()) { case PROJECTOR_TYPE_QWEN2VL: case PROJECTOR_TYPE_QWEN25VL: