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年9月15日にHF papersで公開され、2026年9月8日にHugging Face Transformersに貢献されました。

Fun-ASR-Nano

概要

Fun-ASR-Nano は、Alibaba DAMO Academy の FunAudioLLM チームが開発した、8億パラメータのエンドツーエンド音声認識モデルです。同等のモデルよりも大幅に小さいながら、中国語、英語、日本語の ASR ベンチマークで最先端の性能を達成しています。

このモデルは、Fun-ASR: An Industrial-Grade Speech Recognition System で提案されました。

アーキテクチャ

Fun-ASR-Nanoは3つのコンポーネントで構成されています:

  1. Audio Encoder(SenseVoiceEncoderSmall): 70層のSANM(Self-Attention with FSMN Memory)エンコーダーです。マルチヘッド自己注意機構とFeedforward Sequential Memory Networksを組み合わせることで、効率的な音声特徴抽出を実現します。

  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

class 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]、省略可) — テキストバックボーンの設定オブジェクトまたは辞書。
  • 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

class 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) — embeddings、encoder、pooler 内のすべての全結合層における dropout 確率です。
  • attention_dropout (float、任意、デフォルトは 0.1) — アテンション確率のドロップアウト率です。
  • 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) — embeddings、encoder、pooler 内のすべての全結合層における dropout 確率です。
  • attention_dropout (float、任意、デフォルトは 0.0) — アテンション確率のドロップアウト率です。
  • 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 個ごとに 1 個取り出します)。
  • window (str、任意、デフォルトは "hamming") — STFT に使用するウィンドウ関数。
  • padding_value (float、任意、デフォルトは 0.0) — 短いシーケンスのパディングに使用される値。
  • return_attention_mask (bool、任意、デフォルトはTrue) — attention mask を返すかどうか。

Fun-ASR-Nano の特徴抽出器を構築します。

このフィーチャーエクストラクターは、主要なメソッドの大部分を含む SequenceFeatureExtractor を継承しています。これらのメソッドに関する詳細については、このスーパークラスを参照してください。

Kaldi互換のメルフィルタバンク特徴量(torchaudio.compliance.kaldi.fbankを介して、元のFunASRフロントエンドに一致する)を抽出し、その後、num_frames_lfr個の連続フレームをスタックして、ストライドstride_lfrでサブサンプリングを行うことで、低フレームレート(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、optional) — 設定されている場合、指定されたフレームワーク("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です。

1つ以上の生オーディオ波形から、Kaldiのメルフィルタバンク特徴量およびLFR特徴量を抽出します。

FunAsrNanoProcessor

class 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 を構築します。これは、フィーチャーエクストラクターとトークナイザーを単一のプロセッサーにラップします。

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': 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.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]]、省略可) — 認識をバイアスするために使用するホットワードです。文字列またはフラットなリストはバッチ全体で共有されます。ネストされたリストを指定すると、各オーディオサンプルごとに異なるホットワードを指定できます。
  • 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() にそのまま渡せる形式の出力が返されます。

チェックポイントの構造化トランスクリプションチャットテンプレートを使用して、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.FloatTensor)

パラメータ

  • 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.FloatTensor)

torch.FloatTensor のタプル、または BaseModelOutput (return_dict=False が渡された場合、または config.return_dict=False の場合)。設定 (FunAsrNanoConfig) と入力に応じて、さまざまな要素で構成されます。

FunAsrNanoEncoderのforwardメソッドは、__call__特殊メソッドをオーバーライドします。

この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなくModuleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。

  • last_hidden_state (torch.FloatTensor、shape (batch_size, sequence_length, hidden_size)) — モデルの最終層の出力における隠れ状態のシーケンス。

  • hidden_states (tuple(torch.FloatTensor)、optional、output_hidden_states=True が渡された場合または config.output_hidden_states=True の場合に返されます)— torch.FloatTensor のタプル(埋め込み層を持つモデルの場合、埋め込みの出力が 1 つ、各層の出力がそれぞれ 1 つずつ)で、形状は (batch_size, sequence_length, hidden_size) です。

    各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。

  • attentions (tuple(torch.FloatTensor)、optional、output_attentions=True が渡された場合または config.output_attentions=True の場合に返されます)— torch.FloatTensor のタプル(各レイヤーごとに1つ)、形状は (batch_size, num_heads, sequence_length, sequence_length)。

    アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。

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.FloatTensor] = 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.FloatTensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → FunAsrNanoModelOutputWithPast or tuple(torch.FloatTensor)

パラメータ

  • input_ids (torch.LongTensor の形状 (batch_size, sequence_length), 、省略可) — 語彙における入力シーケンスのトークンインデックスです。デフォルトではパディングは無視されます。

    インデックスはAutoTokenizerを使用して取得できます。詳細については、PreTrainedTokenizer.encode()およびPreTrainedTokenizer.call()を参照してください。

    入力IDとは何ですか?

  • input_features (torch.FloatTensor、形状 (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].

    ポジションIDとは?

  • past_key_values (~cache_utils.Cache, 省略可) — 逐次デコードを高速化するために使用できる、事前計算された隠れ状態(自己アテンションブロックおよびクロスアテンションブロックのキーとバリュー)。通常、これはデコードの以前の段階でモデルが返した past_key_values であり、 use_cache=True または config.use_cache=True.

    入力として許可されるのは Cache インスタンスのみです。kv cache ガイドを参照してください。 past_key_values が渡されない場合、デフォルトで DynamicCache が初期化されます。

    モデルは、入力として与えられたのと同じキャッシュ形式を出力します。

    past_key_values を使用する場合、すべての input_ids(形状 (batch_size, sequence_length))ではなく、このモデルに過去のキー・バリュー状態が与えられていない未処理の input_ids(形状 (batch_size, unprocessed_length))のみを入力することになります。

  • inputs_embeds (torch.FloatTensor、形状 (batch_size, sequence_length, hidden_size)、任意) — input_ids を渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込みルックアップ行列よりも、input_ids のインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。
  • use_cache (bool、任意) — True に設定すると、past_key_values のキーバリュー状態が返され、デコーディングの高速化に利用できます(past_key_values を参照)。

戻り値

FunAsrNanoModelOutputWithPast または tuple(torch.FloatTensor)

FunAsrNanoModelOutputWithPast または、torch.FloatTensor のタプル(return_dict=False が渡された場合、または config.return_dict=False の場合)。設定(FunAsrNanoConfig)や入力に応じて、さまざまな要素で構成されます。

FunAsrNanoModelのforwardメソッドは、__call__特殊メソッドをオーバーライドします。

この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなくModuleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。

  • audio_hidden_states (torch.FloatTensor、任意) — 投影されたオーディオの隠れ状態。

FunAsrNanoForConditionalGeneration

クラス 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.FloatTensor] = 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.FloatTensor] = 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.FloatTensor)

パラメータ

  • input_ids (torch.LongTensor の形状 (batch_size, sequence_length), 、省略可) — 語彙における入力シーケンスのトークンインデックスです。デフォルトではパディングは無視されます。

    インデックスはAutoTokenizerを使用して取得できます。詳細については、PreTrainedTokenizer.encode()およびPreTrainedTokenizer.call()を参照してください。

    入力IDとは何ですか?

  • input_features (torch.FloatTensor、形状 (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].

    ポジションIDとは?

  • past_key_values (~cache_utils.Cache, 省略可) — 逐次デコードを高速化するために使用できる、事前計算された隠れ状態(自己アテンションブロックおよびクロスアテンションブロックのキーとバリュー)。通常、これはデコードの以前の段階でモデルが返した past_key_values であり、 use_cache=True または config.use_cache=True.

    入力として許可されるのは Cache インスタンスのみです。kv cache ガイドを参照してください。 past_key_values が渡されない場合、デフォルトで DynamicCache が初期化されます。

    モデルは、入力として与えられたのと同じキャッシュ形式を出力します。

    past_key_values を使用する場合、すべての input_ids(形状 (batch_size, sequence_length))ではなく、このモデルに過去のキー・バリュー状態が与えられていない未処理の input_ids(形状 (batch_size, unprocessed_length))のみを入力することになります。

  • inputs_embeds (torch.FloatTensor、形状 (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.FloatTensor)

FunAsrNanoCausalLMOutputWithPast、または torch.FloatTensor のタプル(return_dict=False が渡された場合、または config.return_dict=False の場合)。設定(FunAsrNanoConfig)や入力に応じて、さまざまな要素で構成されます。

FunAsrNanoForConditionalGenerationのforwardメソッドは、__call__特殊メソッドをオーバーライドします。

この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなくModuleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。

  • loss (torch.FloatTensor、shape (1,)、optional、labels が指定された場合に返されます) — 言語モデリングの損失(次のトークン予測用)。

  • logits (torch.FloatTensor、shape (batch_size, sequence_length, config.vocab_size)) — 言語モデリングヘッドの予測スコア。

  • past_key_values (Cache、任意、use_cache=True が渡された場合または config.use_cache=True の場合に返されます)— Cache のインスタンスです。

  • hidden_states (tuple[torch.FloatTensor]、optional、output_hidden_states=True が渡された場合または config.output_hidden_states=True の場合に返される) — torch.FloatTensor のタプル(埋め込み層を持つモデルの場合、埋め込みの出力用が 1 つ、各層の出力用が 1 つずつ)で、形状は (batch_size, sequence_length, hidden_size) です。

    各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。

  • attentions (tuple[torch.FloatTensor]、optional、output_attentions=True が渡された場合または config.output_attentions=True の場合に返されます) — torch.FloatTensor のタプル(各レイヤーごとに1つ)、形状は (batch_size, num_heads, sequence_length, sequence_length)。

    アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。

  • audio_hidden_states (torch.FloatTensor、任意) — 投影後のオーディオエンコーダーの隠れ状態。

例:

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