/ Модель

Характеристики

Лицензия
Apache 2.0
Базовая модель
Qwen3-ASR-0.6B-custom-tokenizer
Опубликована
22 сен 2026

nb-asr-qwen3-lunde07-mixed-nob-100k

Распознавание речиАудио → текст

Модель NB-ASR Qwen3 Lunde v07 преобразует речь на норвежском букмоле в текст в чтение-оптимизированном или близком к устной речи стиле.

161скачиваний за 30 дней0лайковвеса обновлены22 сен 2026

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

Это финальный чекпойнт на 100 000-м шаге обучения модели распознавания речи NB-ASR Qwen3 Lunde v07 mixed Norwegian, созданной в проекте NB-ASR Национальной библиотекой Норвегии. Модель дообучена на базе NbAiLab/Qwen3-ASR-0.6B-custom-tokenizer; архитектура восходит к Qwen3-ASR-0.6B. Репозиторий содержит веса safetensors и файлы конфигурации и процессора. Лицензия — Apache-2.0.

Модель преобразует норвежскую речь в текст и поддерживает два стиля транскрипции: чтение-оптимизированную запись без текстового промпта и запись, более близкую к произнесённой форме, с внутренним промптом проекта. Она рассчитана на норвежский букмол; обучение проводилось на аудио длительностью до 30 секунд. В README приведены результаты оценки на коротких аудиозаписях из нескольких источников.

Это завершённый обучающий чекпойнт, но готовность к промышленному использованию не установлена. Оценка не подтверждает качество длинной или потоковой транскрипции, устойчивость и справедливость; модель зависит от прилагаемых токенизатора, процессора и шаблона промпта. Данные обучения закрыты, а возможное пересечение записей с оценочными данными не исключено. Транскрипты могут содержать ошибки, поэтому для важных решений требуется проверка человеком.

Сценарии применения

  • транскрибирование аудиокниг на норвежском букмоле
  • создание чтение-оптимизированных норвежских субтитров
  • транскрибирование речи в стиле, близком к произнесённому
  • распознавание коротких аудиозаписей на норвежском букмоле

Ограничения

Модель не установлена как готовая к промышленному применению, а оценка не подтверждает качество на длинной или потоковой речи, устойчивость и справедливость. Для корректной работы требуются комплектные токенизатор, процессор и шаблон промпта; транскрипты могут содержать ошибки и требуют проверки человеком.

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

NB-ASR Qwen3 Lunde v07 mixed Norwegian — checkpoint 100k

This is the private final checkpoint of a Norwegian Bokmål Qwen3-ASR-0.6B training run from the NB-ASR project at the National Library of Norway. It was saved at optimizer step 100,000 of a planned 100,000-step run. It is published as the completed training snapshot, but it is not a production release.

The model supports two transcription styles:

  • No text prompt: reading-optimised Norwegian Bokmål.
  • <verbatim>: closer reproduction of the spoken form.

<summary> exists in the bundled custom tokenizer but this run did not train on summary targets. Summary-prompt evaluation is included as a diagnostic, not evidence of summary capability.

Model lineage

  • Architecture: Qwen/Qwen3-ASR-0.6B
  • Direct initialization: NbAiLab/Qwen3-ASR-0.6B-custom-tokenizer
  • Published checkpoint: 100,000 / 100,000 optimizer steps
  • Training precision: bf16
  • Hardware: 32 NVIDIA H200 GPUs across 8 Olivia nodes
  • Per-GPU batch size: 24; global batch size: 768; no gradient accumulation
  • Optimizer: fused AdamW; maximum learning rate 6e-5
  • Schedule: 2% warmup followed by cosine decay
  • Maximum training audio duration: 30 seconds
  • All model parameters were trainable

Training mixed two private NB-ASR datasets:

  • NbAiLab/lunde-nor-nob-verbatim-v07, prompted with <verbatim>
  • NbAiLab/lunde-nor-nob-reading-optimised-v07, with no style prompt

The compiled training manifests contained 7,740,607 rows: approximately 4.12M verbatim rows and 3.62M reading-optimised rows. Training used direct 16 kHz mono WAV files. The exact training-dataset revisions were not pinned in the run configuration, so the dataset names alone are not a complete immutable data provenance record.

Evaluation at step 100,000

Evaluation used greedy autoregressive generation without labels, decoder targets, or teacher forcing. The private evaluation dataset was NbAiLab/nb-asr-evaluering-sprakradet at immutable revision accd2c5165dfa146cd631e76d1447c80923e5f69: 207 unique audio clips, 414 reference rows and 1,242 scored prompt/reference combinations.

Corpus-level WER by source domain and matched transcription style:

DomainReading-optimised: no promptVerbatim: <verbatim>
Audiobooks20.74%21.23%
NRK18.24%20.61%
NST8.94%8.94%
Stortinget17.36%17.20%

The reading-optimised column scores no-prompt generations against reading-optimised references. The verbatim column scores <verbatim>-prompted generations against verbatim references. These are corpus-level WERs within each domain, not averages of per-utterance WER. Fleurs and nb_tale are part of the full evaluation but intentionally omitted from this summary table.

Inference

Use the processor, tokenizer and chat_template.jinja bundled with this repository. Audio should be mono 16 kHz floating-point samples. The following low-level Transformers path matches the prompt contract used in evaluation and avoids wrapper-side language validation for project-added Norwegian:

import numpy as np
import soundfile as sf
import torch
from qwen_asr import Qwen3ASRModel
from qwen_asr.core.transformers_backend import Qwen3ASRProcessor

model_id = "NbAiLab/nb-asr-qwen3-lunde07-mixed-nob-100k"

wrapper = Qwen3ASRModel.from_pretrained(
    model_id,
    dtype=torch.bfloat16,
    device_map="cuda",
)
model = wrapper.model.eval()
processor = Qwen3ASRProcessor.from_pretrained(
    model_id,
    fix_mistral_regex=True,
)

audio, sample_rate = sf.read("audio.wav", dtype="float32")
if audio.ndim == 2:
    audio = audio.mean(axis=1)
if sample_rate != 16000:
    raise ValueError("Resample audio to 16 kHz before inference")
audio = np.asarray(audio, dtype=np.float32)

# Use "" for reading-optimised output or "<verbatim>" for verbatim output.
style_prompt = "<verbatim>"
user_content = [{"type": "audio", "audio": None}]
if style_prompt:
    user_content.append({"type": "text", "text": "\n" + style_prompt})
messages = [
    {"role": "system", "content": ""},
    {"role": "user", "content": user_content},
]
prompt = processor.apply_chat_template(
    [messages], add_generation_prompt=True, tokenize=False
)[0]
prompt += "language Norwegian<asr_text>"

inputs = processor(
    text=[prompt],
    audio=[audio],
    return_tensors="pt",
    padding=True,
    truncation=False,
)
prompt_length = inputs["input_ids"].shape[1]
generation_inputs = {
    "input_ids": inputs["input_ids"].to(model.device),
    "attention_mask": inputs["attention_mask"].to(model.device),
    "max_new_tokens": 256,
    "do_sample": False,
    "pad_token_id": processor.tokenizer.pad_token_id,
    "use_cache": True,
}
if "input_features" in inputs:
    generation_inputs["input_features"] = inputs["input_features"].to(
        model.device, dtype=next(model.parameters()).dtype
    )
if "feature_attention_mask" in inputs:
    generation_inputs["feature_attention_mask"] = inputs[
        "feature_attention_mask"
    ].to(model.device)

with torch.inference_mode():
    generated = model.generate(**generation_inputs)
sequences = generated.sequences if hasattr(generated, "sequences") else generated
text = processor.tokenizer.decode(
    sequences[0, prompt_length:].cpu(),
    skip_special_tokens=True,
    clean_up_tokenization_spaces=False,
)
print(text.strip())

The raw assistant prefix used in training is language Norwegian<asr_text>. Do not replace it with language Norwegian Bokmål<asr_text> or place style prompts in the system message. The tokenizer uses left padding, EOS token 151645 and pad token 151643.

Custom tokenizer

The direct parent remaps reserved Qwen tokenizer slots without changing model dimensions. Relevant project tokens include:

TokenIDIntended use
<verbatim>151677Verbatim transcription prompt
<reading_optimised>151678Reserved explicit reading-optimised prompt; this run used no prompt instead
<summary>151679Summary prompt; not trained by this run
<inaudible>151680Inaudible speech event
<laughter>151681Laughter event
<applause>151682Applause event
<cough>151683Cough event

Limitations

  • This is the final checkpoint of this 100k-step run; production readiness has not been established.
  • The model is intended for Norwegian Bokmål and has not been established as a multilingual checkpoint.
  • Training data is private and may overlap public or internal evaluation sources at the recording level; no comprehensive contamination claim is made.
  • Evaluation covers short-form ASR and does not establish long-form, streaming, robustness, fairness, or production-readiness properties.
  • The run used an internal custom prompt and tokenizer contract. Generic ASR pipelines that ignore the bundled template or style prompt may produce different results.
  • Generated transcripts may contain omissions, substitutions, hallucinations, offensive text, names or numbers rendered incorrectly, and other errors. Human review is required for consequential use.

Published files

This repository contains inference weights and exact configuration/processor files only. Optimizer, scheduler, RNG, Trainer state, training arguments, audio, transcripts, manifests, logs and credentials are intentionally excluded. A compact release_provenance.json records file hashes and source-run details.

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм

Нельзя запустить

Доступ к модели ограничен автором; у платформы нет доступа к весам.

Ревизия весов
41252ef

0 моделей