简体中文 | English
用 AutoProcessor 和 AutoModelForSpeechSeq2Seq 转写中、英、日语音。
正式发布的 Transformers 5.17.0 已包含 Fun-ASR-Nano 原生支持。
不需要克隆源码、安装 FunASR 工具库,也不需要执行模型仓库的远程 Python 代码。
在线 Space · 打开 Notebook · 可运行示例
使用独立环境。下面是已验证的 Linux x86-64、Python 3.12 CPU 安装路径,
不要直接升级已有的 FunASR 或 vLLM 服务环境。torch 与 torchaudio 必须匹配,
因为原生特征提取器使用 torchaudio.compliance.kaldi.fbank。
python3.12 -m venv .venv-funasr-native
. .venv-funasr-native/bin/activate
python -m pip install --index-url https://download.pytorch.org/whl/cpu \
'torch==2.10.0+cpu' 'torchaudio==2.10.0+cpu'
python -m pip install 'transformers==5.17.0' 'numpy==1.26.4' \
'librosa==0.11.0' 'soundfile==0.13.1' \
'huggingface-hub==1.30.0' 'tokenizers==0.23.2'
python -m pip check运行以下 Python 示例。首次加载需要下载约 1.66 GB 模型权重,然后转写一段 固定版本的官方英文样例。明确使用 CPU float32,不要求 GPU。
import torch
from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor
torch.set_num_threads(4)
model_id = "FunAudioLLM/Fun-ASR-Nano-2512-hf"
revision = "d93b302ee7fd505e1b3576120fc142fc6f7820e1"
audio = "https://huggingface.co/FunAudioLLM/Fun-ASR-Nano-2512/resolve/272c57b82523ada6fd87095e955f8e29100979ab/example/en.mp3"
processor = AutoProcessor.from_pretrained(
model_id, revision=revision, trust_remote_code=False, token=False
)
model = AutoModelForSpeechSeq2Seq.from_pretrained(
model_id, revision=revision, trust_remote_code=False, token=False,
dtype=torch.float32,
).to("cpu").eval()
inputs = processor.apply_transcription_request(
audio=audio, language="en",
processor_kwargs={
"return_tensors": "pt",
"audio_kwargs": {"sampling_rate": 16000},
"text_kwargs": {"padding": True},
},
)
with torch.inference_mode():
generated = model.generate(**inputs, max_new_tokens=128, do_sample=False)
new_tokens = generated[:, inputs.input_ids.shape[1]:]
print(processor.batch_decode(new_tokens, skip_special_tokens=True)[0])模型输出同时包含输入提示和生成结果,因此解码前需要去掉完整输入张量宽度。 这段音频实测的原始输出为: “The tribal chieftain called for the boy, and presented him with fifty pieces of gold.” 这是功能示例,不是质量保证。
命令行示例 补齐了输入校验、采样率转换和生成完成检查。克隆 QwenAudio/Fun-ASR 代码仓库 (不是 HF 权重仓库),按该目录说明安装独立依赖,再在代码仓库根目录运行:
python examples/transformers/transcribe.py recording.wav --language zh --keywords 开放时间
python examples/transformers/transcribe.py chinese.wav english.wav --language zh en示例将多声道取均值为单声道,再用 soxr_hq 显式重采样到 16 kHz,
不会覆盖原始录音。接受 1-4 个文件,总音频时长最多 60 秒;过长、空输入
和非有限采样值会被拒绝,不会静默截断。
在自己的应用中,可向 processor.apply_transcription_request 传入波形、
本地路径或支持的 URL。原始数组必须使用真实采样率,不能把 48 kHz 数组标成
16 kHz。语言使用 zh、en 或 ja。批量时传入音频列表、对应语言列表,
并设置 text_kwargs={"padding": True},解码后保留输入顺序。
keywords 是词汇提示,prompt 是上下文,不是强制词典,也不是工具库的
hotword 参数。中文样例加入 开放时间 后,实测仍输出 开饭时间;
需要用代表性录音和人工参考文本评估质量。
上面的短样例最多生成 128 个新 token。没有 EOS 可能意味着截断,单纯提高
上限不等于长录音已完整覆盖。CLI 输出 reached_eos,缺少 EOS 或文本为空时
以非零状态结束;出现 EOS 也不代表每个字都识别正确。
先按独立 CUDA 安装指南
安装专用的 requirements-gpu.txt,不要混入 CPU 环境。在 QwenAudio/Fun-ASR
代码仓库根目录,用自己的本地录音运行:
python examples/transformers/transcribe.py chinese.wav english.wav --language zh en --device cuda --dtype bfloat162026-09-10 在 Linux/Python 3.12、H100 80 GB、驱动 550.127.08、 torch/torchaudio 2.11.0+cu128、Transformers 5.17.0 上完成八项功能检查: float32/BF16 各覆盖英文、中文、关键词和中英 padding 批次。修改后的 CLI 也通过 GPU 单文件、批次与默认 CPU 回归。这不是准确率、最低显存或服务容量评测; 前述中文关键词识别错误仍存在。其他 GPU 和 float16 尚未测试。
不传设备参数仍使用 CPU float32。显式请求 CUDA 但设备不可用时直接报错, BF16 也会检查设备支持,不会静默回退 CPU。模型和输入一起迁移设备,不把整数 token ID 转成浮点数;输出记录实际设备与精度。测试中出现过 attention 分派警告, 功能通过不代表每个组件的内核已验证,也不意味着 Flash Attention 性能已验证。 这些本地检查不覆盖托管 GPU Space 或 Colab 的实际运行。
| 需求 | checkpoint 与接口 |
|---|---|
| Python 原生 Transformers | FunAudioLLM/Fun-ASR-Nano-2512-hf,AutoProcessor + AutoModelForSpeechSeq2Seq |
| FunASR 流水线和 HTTP 适配器 | FunAudioLLM/Fun-ASR-Nano-2512,funasr.AutoModel;部署矩阵 |
| 原生 vLLM | FunAudioLLM/Fun-ASR-Nano-2512-vllm;原生 vLLM 指南 |
| C++ / 边缘部署 | 转换后的 GGUF;llama.cpp |
这些是不同格式,不能只替换模型 ID。Transformers 原生支持不自动提供 HTTP 服务、队列、流式协议、字级时间戳或说话人身份。该原生导出不包含 CTC 时间戳 分支。基础 Nano 支持中、英、日及中文方言、口音;31 语言 MLT 是独立 checkpoint。
需要转写、匿名说话人和片段时间戳时,查看第三方 OpenMOSS MOSS 指南;其他任务见 Model Zoo。GPU dtype、attention 后端、显存、 并发和质量都要在实际目标硬件上另行验证。
加载失败时,先检查当前解释器、transformers.__version__、-hf 模型 ID
和 revision。5.16.1 不包含此模型,请在新环境升级,不要改动无关运行服务。
原生类位于 transformers.models.fun_asr_nano。
下面是可选的合成静音预处理检查,只下载 processor,不加载模型权重:
import numpy as np
from transformers import AutoProcessor
model_id = "FunAudioLLM/Fun-ASR-Nano-2512-hf"
revision = "d93b302ee7fd505e1b3576120fc142fc6f7820e1"
processor = AutoProcessor.from_pretrained(
model_id, revision=revision, trust_remote_code=False, token=False
)
inputs = processor.apply_transcription_request(
audio=np.zeros(16000, dtype=np.float32), language="en",
processor_kwargs={
"return_tensors": "pt",
"audio_kwargs": {"sampling_rate": 16000},
},
)
print({name: tuple(value.shape) for name, value in inputs.items()})应用层先拒绝空录音和空批次。预处理成功不代表准确率或容量验证。
2026-09-09 使用实际发布的 5.17.0 wheel 验证:Python 3.12.3, torch/torchaudio 2.10.0+cpu、float32、四个 Torch 线程,CPU 为 Intel Xeon Platinum 8480+。官方英文 URL、中文波形、中文热词和中英 padding 批次均返回非空文本,并在 128 token 之前出现 EOS。两段公开短样例的功能 检查不等于 CER/WER、GPU 兼容性或服务容量评测。
公开原生 revision 为 d93b302ee7fd505e1b3576120fc142fc6f7820e1,
解析到 FunAsrNanoForConditionalGeneration,使用
trust_remote_code=False。model.safetensors 大小 1,659,773,320 字节,
SHA256:1bbb6dcc5d8b75084a399d48c4d4b0f3aa1d3f09f2616ae40ed2c4fba03d89c9。
音频来自原始模型仓库的
固定样例目录,
不是虚构的 -hf/example 路径。
PR #46180 的合并提交为
fc501343edfccdc840eb8594a6cafa8185c2de53,早于正式包发布。旧版源码安装说明
对应那个时间窗口;现在新安装应使用上面的正式包。
参阅 5.17.0 官方模型文档
与 原生 model card。
评估应用时保留版本、输入摘要与原始结果,不要向公开 issue 上传私人录音或凭证。