Transformers documentation

Fun-ASR-Nano

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Эта модель была опубликована в HF papers 15.09.2025 и добавлена в Hugging Face Transformers 08.09.2026.

Fun-ASR-Nano

Обзор

Fun-ASR-Nano — это модель распознавания речи end-to-end с 800 млн параметров, разработанная командой FunAudioLLM из Alibaba DAMO Academy. Она демонстрирует наилучшие результаты на бенчмарках ASR для китайского, английского и японского языков, при этом значительно уступая по размеру сопоставимым моделям.

Модель была предложена в Fun-ASR: An Industrial-Grade Speech Recognition System.

Архитектура

Fun-ASR-Nano состоит из трёх компонентов:

  1. Аудио-энкодер (SenseVoiceEncoderSmall): 70-слойный SANM-энкодер (Self-Attention with FSMN Memory), сочетающий многоголовное само-внимание с сетями последовательной памяти (Feedforward Sequential Memory Networks) для эффективного извлечения речевых признаков.

  2. Audio Adaptor: трансформер из 2 слоёв, который проецирует выходные данные энкодера (размерность 512) в размерность LLM (1024).

  3. Языковая модель (Qwen3-0.6B): 28-слойная каузальная языковая модель, которая генерирует текст транскрипции авто регрессивно.

Ключевые возможности

  • китайский, английский и японский, включая 7 диалектов китайского языка и 26 региональных акцентов
  • Настройка горячих слов для терминологии конкретной предметной области
  • Вывод родной пунктуации (отдельная модель пунктуации не требуется)

Использование

Одиночный вывод

from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor

model_id = "FunAudioLLM/Fun-ASR-Nano-2512-hf"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForSpeechSeq2Seq.from_pretrained(model_id, device_map="auto")

audio_url = "https://huggingface.co/FunAudioLLM/Fun-ASR-Nano-2512/resolve/main/example/en.mp3"
inputs = processor.apply_transcription_request(audio=audio_url).to(model.device)

generated_ids = model.generate(**inputs, max_new_tokens=200)
generated_ids = generated_ids[:, inputs.input_ids.shape[1]:]
print(processor.decode(generated_ids, skip_special_tokens=True)[0])

Пакетный вывод

from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor

model_id = "FunAudioLLM/Fun-ASR-Nano-2512-hf"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForSpeechSeq2Seq.from_pretrained(model_id, device_map="auto")

audio_urls = [
    "https://huggingface.co/FunAudioLLM/Fun-ASR-Nano-2512/resolve/main/example/zh.mp3",
    "https://huggingface.co/FunAudioLLM/Fun-ASR-Nano-2512/resolve/main/example/en.mp3",
]
languages = ["zh", "en"]
inputs = processor.apply_transcription_request(audio=audio_urls, language=languages).to(model.device)

generated_ids = model.generate(**inputs, max_new_tokens=200)
generated_ids = generated_ids[:, inputs.input_ids.shape[1]:]
print(processor.decode(generated_ids, skip_special_tokens=True))

Пользовательские подсказки и горячие слова

Передавайте контекстную информацию с помощью prompt, а горячие слова — с помощью keywords; шаблон чекпоинта для чата формирует полную инструкцию для транскрипции. Параметр language принимает китайский, английский и японский языки в виде полных названий или ISO-кодов.

from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor

model_id = "FunAudioLLM/Fun-ASR-Nano-2512-hf"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForSpeechSeq2Seq.from_pretrained(model_id, device_map="auto")

audio_url = "https://huggingface.co/FunAudioLLM/Fun-ASR-Nano-2512/resolve/main/example/en.mp3"
inputs = processor.apply_transcription_request(
    audio=audio_url,
    prompt="A tribal story involving a chieftain and a boy.",
    keywords=["tribal chieftain", "fifty pieces of gold"],
).to(model.device)

generated_ids = model.generate(**inputs, max_new_tokens=200)
generated_ids = generated_ids[:, inputs.input_ids.shape[1]:]
print(processor.decode(generated_ids, skip_special_tokens=True)[0])

Обучение

Передайте целевые транскрипты в apply_transcription_request с помощью transcription, а возвращаемые labels используются для вычисления функции потерь.

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

model_id = "FunAudioLLM/Fun-ASR-Nano-2512-hf"
NUM_SAMPLES = 2

processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForSpeechSeq2Seq.from_pretrained(model_id, device_map="auto")
model.train()

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))
speech_samples = [el["array"] for el in ds["audio"][:NUM_SAMPLES]]
text_samples = ds["text"][:NUM_SAMPLES]

inputs = processor.apply_transcription_request(speech_samples, language="en", transcription=text_samples)
inputs.to(model.device, dtype=model.dtype)

loss = model(**inputs).loss
print("Loss:", loss.item())
loss.backward()

Инференс с torch.compile

import torch
from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor, CompileConfig

model_id = "FunAudioLLM/Fun-ASR-Nano-2512-hf"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForSpeechSeq2Seq.from_pretrained(model_id, device_map="auto")

audio_url = "https://huggingface.co/FunAudioLLM/Fun-ASR-Nano-2512/resolve/main/example/en.mp3"
inputs = processor.apply_transcription_request(audio=audio_url).to(model.device)

with torch.inference_mode():
    generated_ids = model.generate(
        **inputs,
        max_new_tokens=200,
        compile_config=CompileConfig(),
    )
generated_ids = generated_ids[:, inputs.input_ids.shape[1]:]
print(processor.decode(generated_ids, skip_special_tokens=True)[0])

FunAsrNanoConfig

класс transformers.FunAsrNanoConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Noneadaptor_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Noneaudio_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonetext_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Noneaudio_token_id: int = 151646initializer_range: float = 0.02tie_word_embeddings: bool = True )

Параметры

  • adaptor_config (dict или FunAsrNanoAdaptorConfig, необязательный) — Конфигурация двунаправленного аудиоадаптера.
  • audio_config (Union[dict, ~configuration_utils.PreTrainedConfig], необязательный) — Объект конфигурации или словарь конфигурации аудио-бэкбона.
  • text_config (Union[dict, ~configuration_utils.PreTrainedConfig], необязательный) — Объект конфигурации или словарь конфигурации текстового бэкбона.
  • audio_token_id (int, необязательный, по умолчанию 151646) — Индекс аудио-токена, используемый как плейсхолдер для входного аудио.
  • initializer_range (float, необязательный, по умолчанию 0.02) — Стандартное отклонение truncated_normal_initializer, используемое для инициализации всех матриц весов.
  • tie_word_embeddings (bool, необязательный, по умолчанию True) — Определяет, следует ли связывать веса эмбеддингов согласно маппингу tied_weights_keys модели.

Это класс конфигурации для хранения настроек модели FunAsrNanoModel. Он используется для создания модели Fun Asr Nano в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации FunAudioLLM/Fun-ASR-Nano-2512-hf

Объекты конфигурации наследуются от PreTrainedConfig и могут использоваться для управления выводами модели. Подробнее читайте в документации PreTrainedConfig.

FunAsrNanoEncoderConfig

класс transformers.FunAsrNanoEncoderConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonenum_mel_bins: int = 80hidden_size: int = 512num_attention_heads: int = 4intermediate_size: int = 2048num_hidden_layers: int = 70hidden_dropout: float = 0.1attention_dropout: float = 0.1layer_norm_eps: float = 1e-05hidden_act: str = 'relu'max_position_embeddings: int = 2049num_stacked_frames: int = 7num_timestamp_prediction_layers: int = 20fsmn_kernel_size: int = 11 )

Параметры

  • num_mel_bins (int, необязательный, по умолчанию 80) — Количество mel-признаков, используемых на входной кадр. Должно соответствовать значению, применяемому в классе AutoFeatureExtractor.
  • hidden_size (int, необязательный, по умолчанию 512) — Размерность скрытых представлений.
  • num_attention_heads (int, необязательный, по умолчанию 4) — Количество головок внимания в каждом слое внимания декодера Transformer.
  • intermediate_size (int, необязательный, по умолчанию 2048) — Размерность представлений MLP.
  • num_hidden_layers (int, необязательный, по умолчанию 70) — Общее количество слоев кодировщика, включая слои транскрипции и последующие слои предсказания временных меток.
  • hidden_dropout (float, необязательный, по умолчанию 0.1) — Вероятность dropout для всех полносвязных слоев в блоках эмбеддингов, энкодера и пуллера.
  • attention_dropout (float, необязательный, по умолчанию 0.1) — Коэффициент dropout для вероятностей внимания.
  • layer_norm_eps (float, необязательный, по умолчанию 1e-05) — Значение epsilon, используемое слоями нормализации.
  • hidden_act (str, необязательный, по умолчанию relu) — Нелинейная функция активации (функция или строка) в декодере. Например, "gelu", "relu", "silu" и т. д.
  • max_position_embeddings (int, необязательный, по умолчанию 2049) — Максимальная длина последовательности, с которой может использоваться эта модель.
  • num_stacked_frames (int, необязательный, по умолчанию 7) — Количество последовательных mel-кадров, объединяемых при извлечении признаков с низкой частотой кадров.
  • num_timestamp_prediction_layers (int, необязательный, по умолчанию 20) — Количество последних слоев кодировщика, предназначенных для предсказания временных меток. Результат транскрипции извлекается после слоя num_hidden_layers - num_timestamp_prediction_layers - 1.
  • fsmn_kernel_size (int, необязательный, по умолчанию 11) — Размер ядра для свёртки в последовательной сети памяти с прямой передачей (FSMN).

Это класс конфигурации для хранения настроек модели FunAsrNanoModel. Он используется для создания модели Fun Asr Nano в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации FunAudioLLM/Fun-ASR-Nano-2512-hf

Объекты конфигурации наследуются от PreTrainedConfig и могут использоваться для управления выводами модели. Подробнее читайте в документации PreTrainedConfig.

FunAsrNanoAdaptorConfig

класс transformers.FunAsrNanoAdaptorConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonehidden_size: int = 1024num_attention_heads: int = 8intermediate_size: int = 256num_hidden_layers: int = 2hidden_dropout: float = 0.0attention_dropout: float = 0.0layer_norm_eps: float = 1e-05hidden_act: str = 'relu'projector_hidden_act: str = 'relu'projector_hidden_size: int = 2048 )

Параметры

  • hidden_size (int, необязательный, по умолчанию 1024) — Размерность скрытых представлений.
  • num_attention_heads (int, необязательный, по умолчанию 8) — Количество головок внимания в каждом слое внимания декодера Transformer.
  • intermediate_size (int, необязательный, по умолчанию 256) — Размерность представлений MLP.
  • num_hidden_layers (int, необязательный, по умолчанию 2) — Количество скрытых слоев в декодере Transformer.
  • hidden_dropout (float, необязательный, по умолчанию 0.0) — Вероятность dropout для всех полносвязных слоёв в блоках эмбеддингов, энкодера и пуллера.
  • attention_dropout (float, необязательный, по умолчанию 0.0) — Коэффициент dropout для вероятностей внимания.
  • layer_norm_eps (float, необязательный, по умолчанию 1e-05) — Значение epsilon, используемое слоями нормализации.
  • hidden_act (str, необязательный, по умолчанию relu) — Нелинейная функция активации (функция или строка) в декодере. Например, "gelu", "relu", "silu" и т. д.
  • projector_hidden_act (str, необязательный, по умолчанию relu) — Функция активации, используемая мультимодальным проектором.
  • projector_hidden_size (int, необязательный, по умолчанию 2048) — Размерность проекционных слоёв для текста и изображений.

Это класс конфигурации для хранения настроек модели FunAsrNanoModel. Он используется для создания модели Fun Asr Nano в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации FunAudioLLM/Fun-ASR-Nano-2512-hf

Объекты конфигурации наследуются от PreTrainedConfig и могут использоваться для управления выводами модели. Подробнее читайте в документации PreTrainedConfig.

FunAsrNanoFeatureExtractor

класс transformers.FunAsrNanoFeatureExtractor

< >

( feature_size: int = 80sampling_rate: int = 16000frame_length: int = 25frame_shift: int = 10num_frames_lfr: int = 7stride_lfr: int = 6window: str = 'hamming'padding_value: float = 0.0return_attention_mask: bool = True**kwargs )

Параметры

  • feature_size (int, необязательный, по умолчанию 80) — Количество полос мел-частот.
  • sampling_rate (int, необязательный, по умолчанию 16000) — Частота дискретизации аудио.
  • frame_length (int, необязательный, по умолчанию 25) — Длина кадра в миллисекундах для STFT.
  • frame_shift (int, необязательный, по умолчанию 10) — Сдвиг кадра (шаг) в миллисекундах для STFT.
  • num_frames_lfr (int, необязательный, по умолчанию 7) — Количество последовательных кадров для стека (коэффициент стека LFR).
  • stride_lfr (int, необязательный, по умолчанию 6) — Шаг подвыборки для LFR (брать каждый stride_lfr-й кадр в стопке).
  • window (str, необязательный, по умолчанию "hamming") — Функция окна для STFT.
  • padding_value (float, необязательный, по умолчанию 0.0) — Значение, используемое для дополнения более коротких последовательностей.
  • return_attention_mask (bool, необязательный, по умолчанию True) — Возвращать ли маску внимания.

Создаёт экстрактор признаков Fun-ASR-Nano.

Этот экстрактор признаков наследуется от SequenceFeatureExtractor, который содержит большинство основных методов. За дополнительной информацией о них следует обращаться к этому суперклассу.

Он извлекает mel-фильтробанк-признаки, совместимые с Kaldi (через torchaudio.compliance.kaldi.fbank, в соответствии с исходным фронтендом FunASR), а затем применяет обработку с низкой частотой кадров (LFR), складывая num_frames_lfr последовательных кадров и выполняя подвыборку с шагом stride_lfr.

Пример:

>>> import numpy as np
>>> from transformers import FunAsrNanoFeatureExtractor

>>> feature_extractor = FunAsrNanoFeatureExtractor()
>>> audio = np.random.randn(16000)  # 1 second of audio at 16kHz
>>> features = feature_extractor(audio, sampling_rate=16000, return_tensors="pt")
>>> features.input_features.shape  # (1, num_frames_after_lfr, 560)

__call__

< >

( raw_speech: typing.Union[numpy.ndarray, ForwardRef('torch.Tensor'), collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence['torch.Tensor']]sampling_rate: int | None = Nonereturn_tensors: str | transformers.utils.generic.TensorType | None = 'pt'padding: bool | str = Truemax_length: int | None = Nonetruncation: bool = Falsepad_to_multiple_of: int | None = Nonereturn_attention_mask: bool | None = None**kwargs )

Параметры

  • raw_speech (np.ndarray, list[float], list[np.ndarray], list[list[float]]) — Последовательность или батч монофонических волновых форм для извлечения признаков.
  • sampling_rate (int, необязательный) — Частота дискретизации входного аудио. Должна совпадать с self.sampling_rate (16000 Гц).
  • return_tensors (str или TensorType, необязательный) — Если задано, возвращает тензоры указанного фреймворка ("pt", "np", …).
  • padding (bool или str, необязательный, по умолчанию True) — Стратегия выравнивания, передаваемая в pad().
  • max_length (int, необязательный) — Максимальная длина последовательности LFR для дополнения/обрезки.
  • truncation (bool, необязательный, по умолчанию False) — Определяет, нужно ли обрезать последовательности, длина которых превышает max_length.
  • pad_to_multiple_of (int, необязательный) — Если задано, дополняет длину последовательности LFR до кратного этому значению.
  • return_attention_mask (bool, необязательный) — Возвращать ли input_features_mask. По умолчанию self.return_attention_mask.

Извлечение признаков Kaldi mel-filterbank + LFR из одной или нескольких сырых аудиоволн.

FunAsrNanoProcessor

класс transformers.FunAsrNanoProcessor

< >

( feature_extractortokenizerchat_template = Noneaudio_token = '<|object_ref_start|>' )

Параметры

  • feature_extractor (FunAsrNanoFeatureExtractor) — Извлечение признаков является обязательным входом.
  • tokenizer (Qwen2Tokenizer) — Токенизатор является обязательным входным параметром.
  • chat_template (str) — Jinja-шаблон для преобразования списков сообщений в чате в строку, пригодную для токенизации.
  • audio_token (str, необязательный, по умолчанию "<|object_ref_start|>") — Токен, используемый в качестве плейсхолдера для аудио в тексте.

Создаёт FunAsrNanoProcessor, который объединяет feature extractor и tokenizer в единый processor.

FunAsrNanoProcessor предоставляет все возможности FunAsrNanoFeatureExtractor и Qwen2Tokenizer. Подробнее см. в ~FunAsrNanoFeatureExtractor и ~Qwen2Tokenizer.

__call__

< >

( text: str | list[str]audio: typing.Union[numpy.ndarray, ForwardRef('torch.Tensor'), collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence['torch.Tensor'], NoneType] = Noneoutput_labels: bool | None = False**kwargs: *<class 'transformers.models.fun_asr_nano.processing_fun_asr_nano.FunAsrNanoProcessorKwargs'> ) → BatchFeature

Параметры

  • text (Union[str, list[str]]) — Последовательность или батч последовательностей для кодирования. Каждая последовательность может быть строкой или списком строк (предварительно токенизированная строка). Если вы передаёте предварительно токенизированный вход, установите is_split_into_words=True, чтобы избежать неоднозначности с батчами.
  • audio (Union[numpy.ndarray, torch.Tensor, collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence[torch.Tensor]], необязательный) — Аудио или пакет аудио, подлежащий подготовке. Каждое аудио может быть массивом NumPy или тензором PyTorch. В случае массива NumPy/тензора PyTorch каждое аудио должно иметь форму (C, T), где C — количество каналов, а T — длина выборки аудио.
  • output_labels (bool, необязательный, по умолчанию=False) — Возвращать ли метки для обучения.
  • return_tensors (str или TensorType, необязательный) — Если задано, возвращает тензоры конкретного фреймворка. Допустимые значения:
    • 'pt': возвращает объекты torch.Tensor PyTorch.
    • 'np': возвращает объекты NumPy np.ndarray.
  • **kwargs (ProcessingKwargs, optional) — Дополнительные параметры обработки для каждой модальности (текст, изображения, видео, аудио). Специфичные для модели параметры перечислены выше; полный список поддерживаемых аргументов см. в классе TypedDict.

Возвращает

BatchFeature

Словарь с токенизированным текстом (input_ids, attention_mask) и аудио-признаками (input_features, input_features_mask).

apply_transcription_request

< >

( audio: typing.Union[numpy.ndarray, ForwardRef('torch.Tensor'), collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence['torch.Tensor'], list[typing.Union[numpy.ndarray, ForwardRef('torch.Tensor'), collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence['torch.Tensor']]]]language: str | list[str] | None = Noneprompt: str | list[str] | None = Nonekeywords: str | list[str] | list[list[str]] | None = Nonetranscription: str | list[str] | None = Nonetokenize: bool = True**kwargs: *<class 'transformers.models.fun_asr_nano.processing_fun_asr_nano.FunAsrNanoProcessorKwargs'> ) → BatchFeature or list[str]

Параметры

  • audio (AudioInput или list[AudioInput]) — Аудио для транскрибации. Может быть URL, локальным путём, массивом NumPy, тензором PyTorch или списком этих значений.
  • language (str или list[str], необязательный) — Целевой язык. Принимает китайский, английский или японский в виде полных английских названий, ISO-кодов ("zh", "en", "ja") или китайских названий языков из контрольной точки ("中文", "英文", "日文"). Одно значение распространяется на весь батч.
  • prompt (str или list[str], необязательный) — Контекстная информация, которая может улучшить качество транскрипции. Список должен соответствовать размеру аудиопакета.
  • keywords (str, list[str] или list[list[str]], необязательный) — Горячие слова для смещения распознавания. Строка или плоский список используются для всей пачки; вложенный список задаёт отдельные горячие слова для каждого аудиоприбора.
  • transcription (str или list[str], необязательный) — Целевая транскрипция (или список транскрипций) для обучения, по одной на каждый аудиофайл. Если указано, каждая транскрипция записывается как реплика ассистента, и возвращаются labels (см. output_labels в call()).
  • tokenize (bool, необязательный, по умолчанию True) — Определяет, следует ли токенизировать промпты и обрабатывать аудио. Если False, аудио не загружается, а промпты возвращаются в виде строк с неразвёрнутыми плейсхолдерами аудио. Передача их вместе с аудио в процессор, processor(text=prompts, audio=audio), даёт те же результаты, что и tokenize=True.
  • **kwargs — Дополнительные именованные аргументы, передаваемые в apply_chat_template(). Аргументы процессора (например, text_kwargs, audio_kwargs, …) следует передавать как processor_kwargs={...}.

Возвращает

BatchFeature или list[str]

Один промпт на один аудиофайл, если tokenize=False, иначе процессор выводит данные, готовые для передачи в FunAsrNanoForConditionalGeneration.generate() или в FunAsrNanoForConditionalGeneration.forward() для вычисления потерь, если задано transcription.

Подготовьте входные данные для ASR с использованием структурированного шаблона чата для транскрипции из контрольной точки, для инференса или, если задан transcription, для обучения.

FunAsrNanoEncoder

класс transformers.FunAsrNanoEncoder

< >

( config: FunAsrNanoEncoderConfig )

Параметры

  • config (FunAsrNanoEncoderConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация по файлу конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.

Аудио-энкодер Fun-ASR-Nano (архитектура SenseVoice SAN-M) без какого-либо слоя наверху.

Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)

Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.

forward

< >

( input_features: Tensorinput_features_mask: Tensor**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutput or tuple(torch.Tensor)

Параметры

  • input_features (torch.Tensor формы (batch_size, sequence_length, feature_dim)) — Тензоры, соответствующие входным аудиособытиям. Аудиособытия можно получить с помощью FunAsrNanoFeatureExtractor. Подробности см. в FunAsrNanoFeatureExtractor.call() (FunAsrNanoProcessor использует FunAsrNanoFeatureExtractor для обработки аудио).
  • input_features_mask (torch.LongTensor формы (batch_size, padded_feature_length)) — 1 для валидных мел-кадров и 0 для дополнения.

Возвращает

BaseModelOutput или tuple(torch.Tensor)

Объект BaseModelOutput или кортеж из torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные элементы в зависимости от конфигурации (FunAsrNanoConfig) и входных данных.

Метод forward класса FunAsrNanoEncoder переопределяет специальный метод __call__.

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

  • last_hidden_state (torch.Tensor формы (batch_size, sequence_length, hidden_size)) — Последовательность скрытых состояний на выходе последнего слоя модели.

  • hidden_states (tuple(torch.Tensor), optional, возвращается, если передано output_hidden_states=True или если config.output_hidden_states=True) — кортеж из torch.Tensor (один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы (batch_size, sequence_length, hidden_size).

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

  • attentions (tuple(torch.Tensor), необязательный, возвращается при передаче output_attentions=True или при config.output_attentions=True) — Кортеж torch.Tensor (по одному на каждый слой) формы (batch_size, num_heads, sequence_length, sequence_length).

    Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

FunAsrNanoModel

класс transformers.FunAsrNanoModel

< >

( config: FunAsrNanoConfig )

Параметры

  • config (FunAsrNanoConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().

Модель Fun-ASR-Nano (аудио-энкодер SenseVoice SAN-M, адаптер Transformer и языковая модель Qwen3), без головы моделирования языка.

Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)

Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneinput_features: typing.Optional[torch.Tensor] = Noneinput_features_mask: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → FunAsrNanoModelOutputWithPast or tuple(torch.Tensor)

Параметры

  • input_ids (torch.LongTensor формы (batch_size, sequence_length), , необязательный) — Индексы токенов входной последовательности в словаре. По умолчанию токены отсечки (padding) игнорируются.

    Индексы можно получить с помощью AutoTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call().

    Что такое входные идентификаторы?

  • input_features (torch.Tensor формы (batch_size, sequence_length, feature_dim), необязательный) — Тензоры, соответствующие входным аудиособытиям. Аудиособытия можно получить с помощью FunAsrNanoFeatureExtractor. Подробности см. в FunAsrNanoFeatureExtractor.call() (FunAsrNanoProcessor использует FunAsrNanoFeatureExtractor для обработки аудио).
  • input_features_mask (torch.Tensor формы (batch_size, feature_sequence_length)) — Маска для исключения применения внимания к индексам заполняющих признаков.
  • attention_mask (torch.Tensor формы (batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона [0, 1]:
    • 1 для токенов, которые не замаскированы,
    • 0 для токенов, которые замаскированы.

    Что такое маски внимания?

  • position_ids (torch.LongTensor формы (batch_size, sequence_length), , необязательный) — Индексы позиций токенов каждого входного последовательности в позиционных эмбеддингах. Выбираются из диапазона [0, config.n_positions - 1].

    Что такое идентификаторы позиций?

  • past_key_values (~cache_utils.Cache, необязательный) — Предвычисленные скрытые состояния (ключи и значения в блоках само-внимания и кросс-внимания), которые можно использовать для ускорения последовательного декодирования. Обычно это past_key_values , возвращённые моделью на предыдущем этапе декодирования, когда use_cache=True или config.use_cache=True.

    В качестве входного параметра допускается только экземпляр Cache, см. наше руководство по кэшу KV. Если past_key_values не переданы, по умолчанию будет инициализирован DynamicCache.

    Модель будет выводить тот же формат кэша, который был передан на вход.

    Если используются past_key_values, ожидается, что пользователь передаст только необработанные input_ids (те, для которых в этой модели ещё не заданы состояния прошлых ключей и значений) формы (batch_size, unprocessed_length), а не все input_ids формы (batch_size, sequence_length).

  • inputs_embeds (torch.Tensor формы (batch_size, sequence_length, hidden_size), необязательный) — При необходимости, вместо передачи input_ids можно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексы input_ids преобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели.
  • use_cache (bool, необязательный) — Если установлено в True, возвращаются состояния ключей и значений past_key_values, которые можно использовать для ускорения декодирования (см. past_key_values).

Возвращает

FunAsrNanoModelOutputWithPast или tuple(torch.Tensor)

FunAsrNanoModelOutputWithPast или кортеж из torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные элементы в зависимости от конфигурации (FunAsrNanoConfig) и входных данных.

Метод forward модели FunAsrNanoModel переопределяет специальный метод __call__.

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

  • audio_hidden_states (torch.Tensor, необязательный) — Спроецированные скрытые состояния аудио.

FunAsrNanoForConditionalGeneration

класс transformers.FunAsrNanoForConditionalGeneration

< >

( config: FunAsrNanoConfig )

Параметры

  • config (FunAsrNanoConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().

Модель Fun-ASR-Nano для распознавания речи: аудио-энкодер SenseVoice SAN-M, адаптер Transformer и языковая модель Qwen3 с головой для моделирования языка.

Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)

Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneinput_features: typing.Optional[torch.Tensor] = Noneinput_features_mask: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = Nonelogits_to_keep: typing.Union[int, torch.Tensor] = 0**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → FunAsrNanoCausalLMOutputWithPast or tuple(torch.Tensor)

Параметры

  • input_ids (torch.LongTensor формы (batch_size, sequence_length), , необязательный) — Индексы токенов входной последовательности в словаре. По умолчанию токены отсечки (padding) игнорируются.

    Индексы можно получить с помощью AutoTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call().

    Что такое входные идентификаторы?

  • input_features (torch.Tensor формы (batch_size, sequence_length, feature_dim), необязательный) — Тензоры, соответствующие входным аудиособытиям. Аудиособытия можно получить с помощью FunAsrNanoFeatureExtractor. Подробности см. в FunAsrNanoFeatureExtractor.call() (FunAsrNanoProcessor использует FunAsrNanoFeatureExtractor для обработки аудио).
  • input_features_mask (torch.Tensor формы (batch_size, feature_sequence_length)) — Маска для исключения применения внимания к индексам заполняющих признаков.
  • attention_mask (torch.Tensor формы (batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона [0, 1]:
    • 1 для токенов, которые не замаскированы,
    • 0 для токенов, которые замаскированы.

    Что такое маски внимания?

  • position_ids (torch.LongTensor формы (batch_size, sequence_length), , необязательный) — Индексы позиций токенов каждого входного последовательности в позиционных эмбеддингах. Выбираются из диапазона [0, config.n_positions - 1].

    Что такое идентификаторы позиций?

  • past_key_values (~cache_utils.Cache, необязательный) — Предвычисленные скрытые состояния (ключи и значения в блоках само-внимания и кросс-внимания), которые можно использовать для ускорения последовательного декодирования. Обычно это past_key_values , возвращённые моделью на предыдущем этапе декодирования, когда use_cache=True или config.use_cache=True.

    В качестве входного параметра допускается только экземпляр Cache, см. наше руководство по кэшу KV. Если past_key_values не переданы, по умолчанию будет инициализирован DynamicCache.

    Модель будет выводить тот же формат кэша, который был передан на вход.

    Если используются past_key_values, ожидается, что пользователь передаст только необработанные input_ids (те, для которых в этой модели ещё не заданы состояния прошлых ключей и значений) формы (batch_size, unprocessed_length), а не все input_ids формы (batch_size, sequence_length).

  • inputs_embeds (torch.Tensor формы (batch_size, sequence_length, hidden_size), необязательный) — При необходимости, вместо передачи input_ids можно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексы input_ids преобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели.
  • labels (torch.LongTensor формы (batch_size, sequence_length), необязательный) — Метки для вычисления потерь маскированного языкового моделирования.
  • use_cache (bool, необязательный) — Если установлено в True, возвращаются состояния ключей и значений past_key_values, которые можно использовать для ускорения декодирования (см. past_key_values).
  • logits_to_keep (Union[int, torch.Tensor], необязательный, по умолчанию 0) — Если передано значение типа int, вычисляет logits для последних logits_to_keep токенов. Если указано 0, logits вычисляются для всех input_ids (особый случай). Для генерации нужны logits только последнего токена, и вычисление их только для этого токена позволяет сэкономить память, что становится весьма значимым для длинных последовательностей или большого размера словаря. Если передано значение типа torch.Tensor, оно должно быть одномерным и соответствовать индексам, которые нужно сохранить в измерении длины последовательности. Это полезно при использовании упакованного формата тензоров (один размер для batch и длины последовательности).

Возвращает

FunAsrNanoCausalLMOutputWithPast или tuple(torch.Tensor)

FunAsrNanoCausalLMOutputWithPast или кортеж из torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные элементы в зависимости от конфигурации (FunAsrNanoConfig) и входных данных.

Метод forward класса FunAsrNanoForConditionalGeneration переопределяет специальный метод __call__.

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

  • loss (torch.Tensor формы (1,), необязательный, возвращается, если задан labels) — Потери языковой модели (для предсказания следующего токена).

  • logits (torch.Tensor формы (batch_size, sequence_length, config.vocab_size)) — Оценки предсказаний языковой модели.

  • past_key_values (Cache, необязательный, возвращается при передаче use_cache=True или когда config.use_cache=True) — это экземпляр Cache.

  • hidden_states (tuple[torch.Tensor], необязательный, возвращается при передаче output_hidden_states=True или когда config.output_hidden_states=True) — Кортеж из torch.Tensor (один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы (batch_size, sequence_length, hidden_size).

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

  • attentions (tuple[torch.Tensor], необязательный, возвращается при передаче output_attentions=True или когда config.output_attentions=True) — Кортеж torch.Tensor (по одному на каждый слой) формы (batch_size, num_heads, sequence_length, sequence_length).

    Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

  • audio_hidden_states (torch.Tensor, необязательный) — Скрытые состояния аудио-кодера после проекции.

Пример:

>>> from transformers import FunAsrNanoForConditionalGeneration, AutoProcessor

>>> model_id = "FunAudioLLM/Fun-ASR-Nano-2512-hf"
>>> processor = AutoProcessor.from_pretrained(model_id)
>>> model = FunAsrNanoForConditionalGeneration.from_pretrained(model_id, device_map="auto")
Update on GitHub