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

이 모델은 2025-09-15에 HF papers에 게시되었으며, 2026-09-08에 Hugging Face Transformers에 기여되었습니다.

Fun-ASR-Nano

개요

Fun-ASR-Nano는 Alibaba DAMO Academy의 FunAudioLLM 팀이 개발한 800M 파라미터의 end-to-end 음성 인식 모델입니다. 동급 모델에 비해 크기가 훨씬 작음에도 불구하고 중국어, 영어, 일본어 ASR 벤치마크에서 최첨단 성능을 달성합니다.

해당 모델은 Fun-ASR: An Industrial-Grade Speech Recognition System에서 제안되었습니다.

아키텍처

Fun-ASR-Nano는 세 가지 구성 요소로 이루어져 있습니다:

  1. 오디오 인코더(SenseVoiceEncoderSmall): 다중 헤드 셀프 어텐션과 Feedforward Sequential Memory Networks를 결합하여 음성 특징을 효율적으로 추출하는 70층 SANM(Self-Attention with FSMN Memory) 인코더입니다.

  2. Audio Adaptor: 인코더 출력(512차원)을 LLM 차원(1024차원)으로 투영하는 2층 Transformer입니다.

  3. Language Model(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])

학습

transcription로 대상 전사문을 apply_transcription_request에 전달하면, 반환된 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], 선택) — 오디오 백본의 config 객체 또는 사전입니다.
  • text_config (Union[dict, ~configuration_utils.PreTrainedConfig], 선택) — 텍스트 백본의 config 객체 또는 사전입니다.
  • 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와 유사한 설정이 생성됩니다.

Configuration 객체는 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 decoder의 각 attention layer에 사용할 attention head의 수입니다.
  • intermediate_size (int, 선택 사항, 기본값 2048) — MLP 표현의 차원입니다.
  • num_hidden_layers (int, 선택 사항, 기본값 70) — 전사 레이어와 그 후의 타임스탬프 예측 레이어를 모두 포함한 인코더 레이어의 총 개수입니다.
  • hidden_dropout (float, 선택 사항, 기본값 0.1) — 임베딩, 인코더, 풀러의 모든 완전 연결 계층에 적용되는 dropout 확률입니다.
  • attention_dropout (float, 선택 사항, 기본값 0.1) — Attention 확률에 적용할 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와 유사한 설정이 생성됩니다.

Configuration 객체는 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 decoder의 각 attention layer에 사용할 attention head의 수입니다.
  • intermediate_size (int, 선택 사항, 기본값 256) — MLP 표현의 차원입니다.
  • num_hidden_layers (int, 선택 사항, 기본값 2) — Transformer decoder의 숨겨진 레이어 수.
  • hidden_dropout (float, 선택 사항, 기본값 0.0) — 임베딩, 인코더, 풀러의 모든 완전 연결 계층에 적용되는 dropout 확률입니다.
  • attention_dropout (float, 선택 사항, 기본값 0.0) — Attention 확률에 적용할 dropout 비율입니다.
  • layer_norm_eps (float, 선택 사항, 기본값 1e-05) — 레이어 정규화 레이어에서 사용되는 epsilon 값입니다.
  • hidden_act (str, 선택 사항, 기본값 relu) — 디코더의 비선형 활성화 함수(함수 또는 문자열)입니다. 예를 들어, "gelu", "relu", "silu" 등이 있습니다.
  • projector_hidden_act (str, 선택 사항, 기본값 relu) — 멀티모달 projector에 사용되는 활성화 함수입니다.
  • projector_hidden_size (int, 선택 사항, 기본값 2048) — 텍스트 및 비전 투영 레이어의 차원입니다.

이것은 FunAsrNanoModel의 설정을 저장하기 위한 설정 클래스입니다. 지정된 인자에 따라 Fun Asr Nano 모델을 인스턴스화하여 모델 아키텍처를 정의하는 데 사용됩니다. 기본값으로 설정을 인스턴스화하면 FunAudioLLM/Fun-ASR-Nano-2512-hf와 유사한 설정이 생성됩니다.

Configuration 객체는 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) — attention mask를 반환할지 여부.

Fun-ASR-Nano feature extractor를 생성합니다.

이 feature extractor는 SequenceFeatureExtractor를 상속하며, 이 클래스에는 대부분의 주요 메서드가 포함되어 있습니다. 해당 메서드에 대한 자세한 내용은 이 상위 클래스를 참고하세요.

torchaudio.compliance.kaldi.fbank를 통해 Kaldi 호환 mel-filterbank 특징을 추출한 후(원본 FunASR 프론트엔드와 일치), num_frames_lfr개의 연속 프레임을 스택하고 stride_lfr 스트라이드로 하위 샘플링하여 Low Frame Rate(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 Hz)과 일치해야 합니다.
  • 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) — feature extractor는 필수 입력입니다.
  • 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 텐서의 경우, 각 오디오의 shape은 (C, T)여야 하며, 여기서 C는 채널 수, T는 오디오의 샘플 길이입니다.
  • output_labels (bool, 선택, 기본값=False) — 학습용 라벨을 반환할지 여부.
  • return_tensors (str 또는 TensorType, 선택 사항) — 설정된 경우, 특정 프레임워크의 텐서를 반환합니다. 허용되는 값은 다음과 같습니다:
    • 'pt': PyTorch torch.Tensor 객체를 반환합니다.
    • 'np': NumPy np.ndarray 객체를 반환합니다.
  • **kwargs (ProcessingKwargs, 선택) — 각 모달리티(텍스트, 이미지, 비디오, 오디오)에 대한 추가 처리 옵션입니다. 모델별 매개변수는 위에 나열되어 있으며, 지원되는 인수의 전체 목록은 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], 선택 사항) — 전사(transcription) 품질을 높일 수 있는 문맥 정보입니다. 리스트의 경우 오디오 배치 크기와 일치해야 합니다.
  • keywords (str, list[str], 또는 list[list[str]], 선택 사항) — 인식 시 편향을 주기 위한 Hotwords입니다. 문자열 또는 평탄한 리스트는 배치 전체에서 공유되며, 중첩 리스트는 각 오디오 샘플별로 별도의 hotwords를 제공합니다.
  • transcription (str 또는 list[str], 선택 사항) — 학습용 대상 전사본으로, 오디오 하나당 하나씩 제공됩니다. 값이 주어지면 각 전사본이 어시스턴트 턴으로 작성되고 labels가 반환됩니다(call()의 output_labels 참조).
  • tokenize (bool, 선택 사항, 기본값 True) — 프롬프트를 토큰화하고 오디오를 처리할지 여부입니다. False인 경우 오디오가 로드되지 않고, 오디오 플레이스홀더가 확장되지 않은 문자열로 프롬프트가 반환됩니다. 이 프롬프트를 오디오와 함께 프로세서에 전달하면 processor(text=prompts, audio=audio), tokenize=True일 때와 동일한 출력을 얻습니다.
  • **kwargs — apply_chat_template()로 전달되는 추가 키워드 인자. Processor 인자(예: text_kwargs, audio_kwargs, …)는 processor_kwargs={...}로 전달해야 합니다.

반환값

BatchFeature 또는 list[str]

tokenize=False인 경우 오디오당 프롬프트가 하나씩 생성되며, 그렇지 않으면 FunAsrNanoForConditionalGeneration.generate()에 바로 전달할 수 있는 프로세서 출력이 반환됩니다. transcription이 주어지면 FunAsrNanoForConditionalGeneration.forward()에 전달하여 손실을 계산할 수도 있습니다.

transcription가 주어지면 학습을 위해, 아니면 추론을 위해, 체크포인트의 구조화된 전사 채팅 템플릿을 사용하여 ASR 입력을 준비합니다.

FunAsrNanoEncoder

class transformers.FunAsrNanoEncoder

< >

( config: FunAsrNanoEncoderConfig )

매개변수

  • config (FunAsrNanoEncoderConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 연관된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.

Fun-ASR-Nano 오디오 인코더(SenseVoice SAN-M 아키텍처)로, 상단에 헤드가 없는 상태입니다.

이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.

이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.

forward

< >

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

매개변수

  • input_features (torch.Tensor, shape (batch_size, sequence_length, feature_dim)) — 입력 오디오 특징에 해당하는 텐서입니다. 오디오 특징은 FunAsrNanoFeatureExtractor를 사용하여 얻을 수 있습니다. 자세한 내용은 FunAsrNanoFeatureExtractor.call()를 참조하세요 (FunAsrNanoProcessor는 오디오 처리에 FunAsrNanoFeatureExtractor를 사용합니다).
  • input_features_mask (torch.LongTensor, shape (batch_size, padded_feature_length)) — 유효한 mel 프레임은 1, 패딩은 0.

반환값

BaseModelOutput 또는 tuple(torch.Tensor)

torch.Tensor의 튜플 또는 BaseModelOutput (return_dict=False가 전달되었거나 config.return_dict=False인 경우)로, 구성(FunAsrNanoConfig)과 입력에 따라 다양한 요소를 포함합니다.

FunAsrNanoEncoder의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.

이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신 Module 인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.

  • last_hidden_state (torch.Tensor, shape (batch_size, sequence_length, hidden_size)) — 모델의 마지막 레이어 출력에서 생성된 hidden-state 시퀀스입니다.

  • hidden_states (tuple(torch.Tensor), 선택 사항, output_hidden_states=True가 전달되거나 config.output_hidden_states=True인 경우 반환됨) — torch.Tensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩 출력 1개 + 각 레이어의 출력 1개)로, 모양은 (batch_size, sequence_length, hidden_size)입니다.

    각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.

  • attentions (tuple(torch.Tensor), 선택 사항, output_attentions=True가 전달되었거나 config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된 torch.Tensor의 튜플로, 모양은 (batch_size, num_heads, sequence_length, sequence_length)입니다.

    self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치.

FunAsrNanoModel

class transformers.FunAsrNanoModel

< >

( config: FunAsrNanoConfig )

매개변수

  • config (FunAsrNanoConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 관련된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.

Fun-ASR-Nano 모델(SenseVoice SAN-M 오디오 인코더, Transformer 어댑터, Qwen3 언어 모델)은 언어 모델링 헤드가 없습니다.

이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.

이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 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), 선택 사항) — 어휘(input vocabulary)에서 입력 시퀀스 토큰의 인덱스입니다. 기본적으로 패딩은 무시됩니다.

    AutoTokenizer를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()를 참조하세요.

    입력 ID란 무엇인가요?

  • input_features (torch.Tensor, shape (batch_size, sequence_length, feature_dim), 선택 사항) — 입력 오디오 특징에 해당하는 텐서입니다. 오디오 특징은 FunAsrNanoFeatureExtractor를 사용하여 얻을 수 있습니다. 자세한 내용은 FunAsrNanoFeatureExtractor.call()를 참조하세요 (FunAsrNanoProcessor는 오디오 처리에 FunAsrNanoFeatureExtractor를 사용합니다).
  • input_features_mask (torch.Tensor, shape (batch_size, feature_sequence_length)) — 패딩된 feature 인덱스에 attention을 수행하지 않도록 하는 마스크입니다.
  • attention_mask (torch.Tensor 형상이 (batch_size, sequence_length), 선택 사항) — 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크. [0, 1]에서 선택된 마스크 값: 마스크되지 않은 토큰은 1, 마스크된 토큰은 0. attention mask란 무엇인가요? [0, 1]:
    • 마스크되지 않은 토큰에 대해 1
    • 마스크된 토큰에 대해 0

    어텐션 마스크란 무엇인가요?

  • position_ids (torch.LongTensor 의 shape (batch_size, sequence_length), , 선택 사항) — 위치 임베딩에서 각 입력 시퀀스 토큰의 위치 인덱스. 범위 [0, config.n_positions - 1].

    포지션 ID란 무엇인가요?

  • past_key_values (~cache_utils.Cache, 선택 사항) — 순차적 디코딩을 가속화할 수 있는 사전 계산된 hidden-states(self-attention 블록과 cross-attention 블록의 key 및 value). 일반적으로 이는 past_key_values 디코딩의 이전 단계에서 모델이 반환한 use_cache=True 또는 config.use_cache=True.

    입력으로 Cache 인스턴스만 허용되며, kv cache 가이드를 참고하세요. past_key_values가 전달되지 않으면 기본적으로 DynamicCache가 초기화됩니다.

    모델은 입력으로 제공된 것과 동일한 캐시 형식을 출력합니다.

    past_key_values를 사용하는 경우, 이 모델에 과거 키 값 상태가 제공되지 않은 input_ids만 입력해야 하며, 이때의 shape은 (batch_size, unprocessed_length)입니다. shape이 (batch_size, sequence_length)인 전체 input_ids를 입력하지 않습니다.

  • inputs_embeds (torch.Tensor, shape (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)과 입력에 따라 다양한 요소를 포함합니다.

FunAsrNanoModel의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.

이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신 Module 인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.

  • audio_hidden_states (torch.Tensor, 선택 사항) — 투영된 오디오 히든 상태입니다.

FunAsrNanoForConditionalGeneration

class transformers.FunAsrNanoForConditionalGeneration

< >

( config: FunAsrNanoConfig )

매개변수

  • config (FunAsrNanoConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 관련된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.

음성 인식용 Fun-ASR-Nano 모델: SenseVoice SAN-M 오디오 인코더, Transformer 어댑터, 언어 모델링 헤드를 갖춘 Qwen3 언어 모델로 구성됩니다.

이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.

이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 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), 선택 사항) — 어휘(input vocabulary)에서 입력 시퀀스 토큰의 인덱스입니다. 기본적으로 패딩은 무시됩니다.

    AutoTokenizer를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()를 참조하세요.

    입력 ID란 무엇인가요?

  • input_features (torch.Tensor, shape (batch_size, sequence_length, feature_dim), 선택 사항) — 입력 오디오 특징에 해당하는 텐서입니다. 오디오 특징은 FunAsrNanoFeatureExtractor를 사용하여 얻을 수 있습니다. 자세한 내용은 FunAsrNanoFeatureExtractor.call()를 참조하세요 (FunAsrNanoProcessor는 오디오 처리에 FunAsrNanoFeatureExtractor를 사용합니다).
  • input_features_mask (torch.Tensor, shape (batch_size, feature_sequence_length)) — 패딩된 feature 인덱스에 attention을 수행하지 않도록 하는 마스크입니다.
  • attention_mask (torch.Tensor 형상이 (batch_size, sequence_length), 선택 사항) — 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크. [0, 1]에서 선택된 마스크 값: 마스크되지 않은 토큰은 1, 마스크된 토큰은 0. attention mask란 무엇인가요? [0, 1]:
    • 마스크되지 않은 토큰에 대해 1
    • 마스크된 토큰에 대해 0

    어텐션 마스크란 무엇인가요?

  • position_ids (torch.LongTensor 의 shape (batch_size, sequence_length), , 선택 사항) — 위치 임베딩에서 각 입력 시퀀스 토큰의 위치 인덱스. 범위 [0, config.n_positions - 1].

    포지션 ID란 무엇인가요?

  • past_key_values (~cache_utils.Cache, 선택 사항) — 순차적 디코딩을 가속화할 수 있는 사전 계산된 hidden-states(self-attention 블록과 cross-attention 블록의 key 및 value). 일반적으로 이는 past_key_values 디코딩의 이전 단계에서 모델이 반환한 use_cache=True 또는 config.use_cache=True.

    입력으로 Cache 인스턴스만 허용되며, kv cache 가이드를 참고하세요. past_key_values가 전달되지 않으면 기본적으로 DynamicCache가 초기화됩니다.

    모델은 입력으로 제공된 것과 동일한 캐시 형식을 출력합니다.

    past_key_values를 사용하는 경우, 이 모델에 과거 키 값 상태가 제공되지 않은 input_ids만 입력해야 하며, 이때의 shape은 (batch_size, unprocessed_length)입니다. shape이 (batch_size, sequence_length)인 전체 input_ids를 입력하지 않습니다.

  • inputs_embeds (torch.Tensor, shape (batch_size, sequence_length, hidden_size), 선택) — input_ids를 전달하는 대신 임베딩 표현을 직접 전달할 수 있습니다. 이는 모델 내부의 임베딩 조회 행렬보다 input_ids 인덱스를 관련 벡터로 변환하는 방식에 대해 더 세밀한 제어가 필요한 경우에 유용합니다.
  • labels (torch.LongTensor, shape (batch_size, sequence_length), 선택 사항) — 마스크 언어 모델링 손실을 계산하는 데 사용되는 라벨입니다.
  • use_cache (bool, 선택 사항) — True로 설정하면 past_key_values 키 값 상태가 반환되며, 디코딩 속도를 높이는 데 사용할 수 있습니다( past_key_values 참조).
  • logits_to_keep (Union[int, torch.Tensor], 선택 사항, 기본값 0) — int인 경우, 마지막 logits_to_keep 토큰에 대한 logits를 계산합니다. 0인 경우, 모든 input_ids에 대한 logits를 계산합니다(특수한 경우). 생성에는 마지막 토큰의 logits만 필요하며, 해당 토큰에 대해서만 계산하면 메모리를 절약할 수 있습니다. 이는 긴 시퀀스나 큰 어휘 크기의 경우 상당한 이점을 제공합니다. torch.Tensor인 경우, 시퀀스 길이 차원에서 유지할 인덱스에 해당하는 1차원 텐서여야 합니다. 이는 패킹된 텐서 형식(배치와 시퀀스 길이를 단일 차원으로 사용하는 경우)을 사용할 때 유용합니다.

반환값

FunAsrNanoCausalLMOutputWithPast 또는 tuple(torch.Tensor)

FunAsrNanoCausalLMOutputWithPast 또는 torch.Tensor의 튜플(return_dict=False가 전달되었거나 config.return_dict=False인 경우)로, 구성(FunAsrNanoConfig)과 입력에 따라 다양한 요소를 포함합니다.

FunAsrNanoForConditionalGeneration의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.

이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신 Module 인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.

  • loss (torch.Tensor, shape (1,), 선택 사항, labels이 제공될 때 반환됨) — 언어 모델링 손실(다음 토큰 예측용).

  • logits (torch.Tensor, shape (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의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩 출력 1개 + 각 레이어의 출력 1개)로, 모양은 (batch_size, sequence_length, hidden_size)입니다.

    각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.

  • attentions (tuple[torch.Tensor], 선택 사항, output_attentions=True가 전달되었거나 config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된 torch.Tensor의 튜플로, 모양은 (batch_size, num_heads, sequence_length, sequence_length)입니다.

    self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치.

  • 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