modelscope / modelscope/FunASR

Fun-ASR-Nano Hugging Face checkpoint is missing 86 CTC tensors required for timestamps and diarization

Open
#3,496 9 comments 0 reactions 2 assignees View on GitHub

@pengzhendong is already working on this.

Since Aug 16, 2026.

bug needs maintainer decision
Dominant language
Python
Stars
20.4k
Forks
2k
Avg merge
4h 55m
Merged PRs (30d)
169

Description

Summary

The current Hugging Face and ModelScope copies of FunAudioLLM/Fun-ASR-Nano-2512 do not contain the same model.pt.

The Hugging Face file is smaller and lacks every ctc_decoder.* and ctc.* tensor. ASR text still works, but the CTC timestamps required by FunASR's native speaker diarization path are unavailable.

Verified on 2026-08-14 with FunASR 1.4.2.

Artefact comparison

source model.pt size state-dict tensors CTC tensors
Hugging Face, commit 272c57b82523ada6fd87095e955f8e29100979ab 1,971,149,431 bytes 1,261 0
ModelScope 2,127,426,538 bytes 1,347 84 ctc_decoder.* + 2 ctc.*

Complete ModelScope checkpoint SHA-256:

81fec8616083c69377f3ceef36aba3655660ee0ca69a5d4a1e9810cd340ca499

Complete namespace counts:

audio_encoder  914
audio_adaptor   36
llm            311
ctc_decoder     84
ctc              2

Minimal inspection

from collections import Counter
from huggingface_hub import hf_hub_download
import os
import torch

path = hf_hub_download("FunAudioLLM/Fun-ASR-Nano-2512", "model.pt")
state = torch.load(path, map_location="cpu", mmap=True, weights_only=False)

print(os.path.getsize(path))
print(len(state))
print(Counter(key.split(".", 1)[0] for key in state))

Effect

Using the Hugging Face checkpoint through AutoModel produces text, but no Nano CTC timestamps. That in turn prevents the native spk_model="cam++" diarization path from producing valid speaker-attributed segments.

Replacing only model.pt with the complete ModelScope checkpoint restores character timestamps and native diarization. With the complete checkpoint, AutoModel works on both CPU and Apple MPS.

Expected result

Please synchronise the complete ModelScope model.pt to the Hugging Face repository, or otherwise document why the published artefacts intentionally differ.

It may also be useful for the loader to fail closed when a Nano checkpoint has no CTC tensors, rather than allowing text-only inference to make the checkpoint appear complete.

Related: #3208 and #3211.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.