智谱AI/GLM-ASR-Nano-2512
模型介绍
文件和版本
Pull Requests
讨论
分析

GLM-ASR-Nano-2512

👋 加入我们的 微信 社区

模型介绍

GLM-ASR-Nano-2512 是一款稳健的开源语音识别模型,参数规模为 15 亿。该模型专为应对真实场景的复杂性而设计,在保持紧凑体量的同时,多项基准测试表现优于 OpenAI Whisper V3。

核心能力包括:

  • 卓越的方言支持: 除标准普通话和英语外,模型针对粤语及其他方言进行了深度优化,有效填补了方言语音识别的空白。

  • 低音量语音稳健性: 专门针对**“耳语/轻声语音”**场景训练。能够捕捉并准确转录传统模型常遗漏的极低音量音频。

  • 业界领先性能: 在同类开源模型中实现最低平均错误率(4.10),在中文基准测试(Wenet Meeting、Aishell-1 等)中展现显著优势。

基准测试

我们将 GLM-ASR-Nano 与主流开源及闭源模型进行了对比评估。结果表明,GLM-ASR-Nano(15 亿参数) 性能卓越,尤其在复杂声学环境中表现突出。

基准测试结果

注:

  • Wenet Meeting 反映含噪声和重叠语音的真实会议场景。
  • Aishell-1 是标准普通话基准测试集。

推理部署

GLM-ASR-Nano-2512 可通过 transformers 库轻松集成。
我们将支持 transformers 5.x 以及 vLLM、SGLang 等推理框架。 更多代码示例请参见 Github。

Transformers 🤗

从源码安装 transformers:

pip install git+https://github.com/huggingface/transformers

基本使用方法

from transformers import AutoModelForSeq2SeqLM, AutoProcessor

processor = AutoProcessor.from_pretrained("zai-org/GLM-ASR-Nano-2512")
model = AutoModelForSeq2SeqLM.from_pretrained("zai-org/GLM-ASR-Nano-2512", dtype="auto", device_map="auto")

inputs = processor.apply_transcription_request("https://huggingface.co/datasets/hf-internal-testing/dummy-audio-samples/resolve/main/bcn_weather.mp3")

inputs = inputs.to(model.device, dtype=model.dtype)
outputs = model.generate(**inputs, do_sample=False, max_new_tokens=500)

decoded_outputs = processor.batch_decode(outputs[:, inputs.input_ids.shape[1] :], skip_special_tokens=True)
print(decoded_outputs)

直接使用音频数组

您也可以直接使用音频数组:

from transformers import GlmAsrForConditionalGeneration, AutoProcessor
from datasets import load_dataset
from datasets import Audio

processor = AutoProcessor.from_pretrained("zai-org/GLM-ASR-Nano-2512")
model = GlmAsrForConditionalGeneration.from_pretrained("zai-org/GLM-ASR-Nano-2512", dtype="auto", device_map="auto")

# loading audio directly from dataset
ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
ds = ds.cast_column("audio", Audio(sampling_rate=processor.feature_extractor.sampling_rate))
audio_array = ds[0]["audio"]["array"]

inputs = processor.apply_transcription_request(audio_array)

inputs = inputs.to(model.device, dtype=model.dtype)
outputs = model.generate(**inputs, do_sample=False, max_new_tokens=500)

decoded_outputs = processor.batch_decode(outputs[:, inputs.input_ids.shape[1] :], skip_special_tokens=True)
print(decoded_outputs)

批量推理

您可以同时处理多个音频文件:

from transformers import GlmAsrForConditionalGeneration, AutoProcessor

processor = AutoProcessor.from_pretrained("zai-org/GLM-ASR-Nano-2512")
model = GlmAsrForConditionalGeneration.from_pretrained("zai-org/GLM-ASR-Nano-2512", dtype="auto", device_map="auto")

inputs = processor.apply_transcription_request([
    "https://huggingface.co/datasets/hf-internal-testing/dummy-audio-samples/resolve/main/bcn_weather.mp3",
    "https://huggingface.co/datasets/hf-internal-testing/dummy-audio-samples/resolve/main/obama.mp3",
])

inputs = inputs.to(model.device, dtype=model.dtype)
outputs = model.generate(**inputs, do_sample=False, max_new_tokens=500)

decoded_outputs = processor.batch_decode(outputs[:, inputs.input_ids.shape[1] :], skip_special_tokens=True)
print(decoded_outputs)