Transformers documentation
Fun-ASR-Nano
이 모델은 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는 세 가지 구성 요소로 이루어져 있습니다:
오디오 인코더(SenseVoiceEncoderSmall): 다중 헤드 셀프 어텐션과 Feedforward Sequential Memory Networks를 결합하여 음성 특징을 효율적으로 추출하는 70층 SANM(Self-Attention with FSMN Memory) 인코더입니다.
Audio Adaptor: 인코더 출력(512차원)을 LLM 차원(1024차원)으로 투영하는 2층 Transformer입니다.
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
< source >( 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
< source >( 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
< source >( 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
< source >( 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__
< source >( 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
< source >( feature_extractortokenizerchat_template = Noneaudio_token = '<|object_ref_start|>' )
FunAsrNanoProcessor를 생성하며, feature extractor와 tokenizer를 단일 processor로 래핑합니다.
FunAsrNanoProcessor는 FunAsrNanoFeatureExtractor와 Qwen2Tokenizer의 모든 기능을 제공합니다. 자세한 내용은 ~FunAsrNanoFeatureExtractor와 ~Qwen2Tokenizer를 참고하세요.
__call__
< source >( 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': PyTorchtorch.Tensor객체를 반환합니다.'np': NumPynp.ndarray객체를 반환합니다.
- **kwargs (ProcessingKwargs, 선택) — 각 모달리티(텍스트, 이미지, 비디오, 오디오)에 대한 추가 처리 옵션입니다. 모델별 매개변수는 위에 나열되어 있으며, 지원되는 인수의 전체 목록은 TypedDict 클래스를 참조하세요.
반환값
토큰화된 텍스트(input_ids, attention_mask)와 오디오 특징(input_features, input_features_mask)을 포함하는 사전입니다.
apply_transcription_request
< source >( 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
< source >( config: FunAsrNanoEncoderConfig )
매개변수
- config (FunAsrNanoEncoderConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 연관된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.
Fun-ASR-Nano 오디오 인코더(SenseVoice SAN-M 아키텍처)로, 상단에 헤드가 없는 상태입니다.
이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.
이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.
forward
< source >( 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
< source >( config: FunAsrNanoConfig )
매개변수
- config (FunAsrNanoConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 관련된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.
Fun-ASR-Nano 모델(SenseVoice SAN-M 오디오 인코더, Transformer 어댑터, Qwen3 언어 모델)은 언어 모델링 헤드가 없습니다.
이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.
이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.
forward
< source >( 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()를 참조하세요.
- 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]. - 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
< source >( config: FunAsrNanoConfig )
매개변수
- config (FunAsrNanoConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 관련된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.
음성 인식용 Fun-ASR-Nano 모델: SenseVoice SAN-M 오디오 인코더, Transformer 어댑터, 언어 모델링 헤드를 갖춘 Qwen3 언어 모델로 구성됩니다.
이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.
이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.
forward
< source >( 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()를 참조하세요.
- 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]. - 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, 선택 사항) — 투영 이후 오디오 인코더의 히든 상태입니다.