Transformers documentation

Fun-ASR-Nano

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])

학습

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")
model.train()

audio_url = "https://huggingface.co/FunAudioLLM/Fun-ASR-Nano-2512/resolve/main/example/en.mp3"
conversation = [
    {
        "role": "user",
        "content": [
            {"type": "audio", "path": audio_url},
        ],
    },
    {
        "role": "assistant",
        "content": [
            {
                "type": "text",
                "text": "The tribal chieftain called for the boy, and presented him with fifty pieces of gold.",
            }
        ],
    },
]
inputs = processor.apply_chat_template(
    conversation,
    tokenize=True,
    return_dict=True,
    processor_kwargs={"output_labels": True},
).to(model.device)

loss = model(**inputs).loss
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.processing_utils.ProcessingKwargs'> ) → 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_mm_token_type_ids (bool, kwargs) — 멀티모달 플레이스홀더 토큰의 위치를 나타내는 멀티모달 토큰 타입 ID를 반환할지 여부입니다.
  • return_text_replacement_offsets (bool, kwargs) — 각 멀티모달 플레이스홀더와 그 대체 문자열의 문자 오프셋을 반환할지 여부입니다.
  • 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 = Nonetokenize: bool = True**kwargs: *<class 'transformers.processing_utils.ProcessingKwargs'> ) → 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를 제공합니다.
  • tokenize (bool, 선택 사항, 기본값 True) — 프롬프트를 토큰화하고 오디오를 처리할지 여부입니다. False인 경우 오디오가 로드되지 않고, 오디오 플레이스홀더가 확장되지 않은 문자열로 프롬프트가 반환됩니다. 이 프롬프트를 오디오와 함께 프로세서에 전달하면 processor(text=prompts, audio=audio), tokenize=True일 때와 동일한 출력을 얻습니다.
  • **kwargs — apply_chat_template() 및 내부 프로세서 호출로 전달되는 추가 키워드 인자(예: text_kwargs, audio_kwargs, …).

반환값

BatchFeature 또는 list[str]

tokenize=False인 경우 오디오 1개당 프롬프트 1개, 그렇지 않으면 FunAsrNanoForConditionalGeneration.generate()에 바로 전달할 수 있는 형태로 processor가 출력합니다.

checkpoint의 구조화된 전사 chat template을 사용하여 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