Transformers documentation
Qwen3 ASR
このモデルは2026年1月29日にHF papersで公開され、2026年6月26日にHugging Face Transformersに貢献されました。
Qwen3 ASR
概要
Qwen3 ASRは、AlibabaのQwenチームが開発した自動音声認識モデルです。Whisperスタイルの音声エンコーダーとQwen3言語モデルデコーダーを組み合わせ、音声からテキストへの書き起こしを実現します。このモデルは、自動言語検出と多言語対応の書き起こしをサポートしています。
強制アライナーモデルも含まれています。これは、提供された文字起こしとその音声にタイムスタンプを付与するために使用できます。このモデルは、単語の長さを予測する分類ヘッドを備えた、同じ音声エンコーダーモデルを使用しています。このモデルは、任意のASRモデルの文字起こしと組み合わせて使用できます(以下はParakeet CTCを用いた例です)。
利用可能なチェックポイント:
サポートされている言語は以下の通りです:
Qwen3-ASR-1.7BおよびQwen3-ASR-0.6B: 中国語 (zh)、英語 (en)、広東語 (yue)、アラビア語 (ar)、ドイツ語 (de)、フランス語 (fr)、スペイン語 (es)、ポルトガル語 (pt)、インドネシア語 (id)、イタリア語 (it)、韓国語 (ko)、ロシア語 (ru)、タイ語 (th)、ベトナム語 (vi)、日本語 (ja)、トルコ語 (tr)、ヒンディー語 (hi)、マレー語 (ms)、オランダ語 (nl)、スウェーデン語 (sv)、デンマーク語 (da)、フィンランド語 (fi)、ポーランド語 (pl)、チェコ語 (cs)、フィリピン語 (fil)、ペルシア語 (fa)、ギリシャ語 (el)、ハンガリー語 (hu)、マケドニア語 (mk)、ルーマニア語 (ro)。Qwen3-ForcedAligner-0.6B: 中国語 (zh)、英語 (en)、広東語 (yue)、フランス語 (fr)、ドイツ語 (de)、イタリア語 (it)、日本語 (ja)、韓国語 (ko)、ポルトガル語 (pt)、ロシア語 (ru)、スペイン語 (es)。
詳細については、QwenLM/Qwen3-ASRの元のリポジトリおよびレポートを参照してください。
このモデルは、Eric Bezzam氏とMuhammed Tariq氏によって提供されました。
使用方法
単純な文字起こし
音声の文字起こしを行う最もシンプルな方法は、apply_transcription_request を使用することです。この関数はチャットテンプレートの整形を自動で行うため、apply_chat_template のための便利なラッパーとして機能します(Chat template を参照)。
from transformers import AutoProcessor, AutoModelForMultimodalLM
model_id = "Qwen/Qwen3-ASR-1.7B-hf"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForMultimodalLM.from_pretrained(model_id, device_map="auto")
print(f"Model loaded on {model.device} with dtype {model.dtype}")
inputs = processor.apply_transcription_request(
audio="https://huggingface.co/datasets/bezzam/audio_samples/resolve/main/librispeech_mr_quilter.wav",
).to(model.device, model.dtype)
output_ids = model.generate(**inputs, max_new_tokens=256)
generated_ids = output_ids[:, inputs["input_ids"].shape[1]:]
# Raw output includes language tag and <asr_text> marker
raw = processor.decode(generated_ids)[0]
print(f"Raw: {raw}")
# Parsed output: dict with "language" and "transcription"
parsed = processor.decode(generated_ids, return_format="parsed")[0]
print(f"Parsed: {parsed}")
# Extract only the transcription text
transcription = processor.decode(generated_ids, return_format="transcription_only")[0]
print(f"Transcription: {transcription}")
"""
Raw: language English<asr_text>Mr. Quilter is the apostle of the middle classes, and we are glad to welcome his gospel.
Parsed: {'language': 'English', 'transcription': 'Mr. Quilter is the apostle of the middle classes, and we are glad to welcome his gospel.'}
Transcription: Mr. Quilter is the apostle of the middle classes, and we are glad to welcome his gospel.
"""言語の強制
以下に示すように、転写言語を強制指定できます。
from transformers import AutoProcessor, AutoModelForMultimodalLM
model_id = "Qwen/Qwen3-ASR-1.7B-hf"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForMultimodalLM.from_pretrained(model_id, device_map="auto")
# Without language hint (auto-detect)
inputs = processor.apply_transcription_request(
audio="https://huggingface.co/datasets/hf-internal-testing/dummy-audio-samples/resolve/main/mandarin_voxcpm_zh.wav",
).to(model.device, model.dtype)
output_ids = model.generate(**inputs, max_new_tokens=256)
generated_ids = output_ids[:, inputs["input_ids"].shape[1]:]
print(f"Auto-detect: {processor.decode(generated_ids, return_format='transcription_only')[0]}")
# With forced language
inputs = processor.apply_transcription_request(
audio="https://huggingface.co/datasets/hf-internal-testing/dummy-audio-samples/resolve/main/mandarin_voxcpm_zh.wav",
language="Chinese", # or language code "zh"
).to(model.device, model.dtype)
output_ids = model.generate(**inputs, max_new_tokens=256)
generated_ids = output_ids[:, inputs["input_ids"].shape[1]:]
print(f"Forced: {processor.decode(generated_ids, return_format='transcription_only')[0]}")コンテキスト / ホットワード
prompt を介して、自由形式のコンテキスト(例:ドメイン固有の語彙、名前、背景情報など)を渡すことで、文字起こしを偏らせることができます。
from transformers import AutoProcessor, AutoModelForMultimodalLM
model_id = "Qwen/Qwen3-ASR-1.7B-hf"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForMultimodalLM.from_pretrained(model_id, device_map="auto")
inputs = processor.apply_transcription_request(
audio="https://huggingface.co/datasets/bezzam/audio_samples/resolve/main/librispeech_mr_quilter.wav",
prompt="Vocabulary: Quilter, apostle, gospel.",
language="English",
).to(model.device, model.dtype)
output_ids = model.generate(**inputs, max_new_tokens=256)
generated_ids = output_ids[:, inputs["input_ids"].shape[1]:]
print(processor.decode(generated_ids, return_format="transcription_only")[0])バッチ推論
listのオーディオを渡すことでバッチ推論が可能であり、指定された場合はlistの言語および/またはプロンプトも渡すことができます。
from transformers import AutoProcessor, AutoModelForMultimodalLM
model_id = "Qwen/Qwen3-ASR-1.7B-hf"
audio = [
"https://huggingface.co/datasets/bezzam/audio_samples/resolve/main/librispeech_mr_quilter.wav",
"https://huggingface.co/datasets/hf-internal-testing/dummy-audio-samples/resolve/main/mandarin_voxcpm_zh.wav",
]
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForMultimodalLM.from_pretrained(model_id, device_map="auto")
inputs = processor.apply_transcription_request(
audio,
prompt=["Vocabulary: Quilter, apostle, gospel.", None],
language=[None, "zh"], # language codes ("zh") and full names ("Chinese") are both accepted
).to(model.device, model.dtype)
output_ids = model.generate(**inputs, max_new_tokens=256)
generated_ids = output_ids[:, inputs["input_ids"].shape[1]:]
transcriptions = processor.decode(generated_ids, return_format="transcription_only")
for i, text in enumerate(transcriptions):
print(f"Audio {i + 1}: {text}")チャットテンプレート
Qwen3 ASR はチャットテンプレート形式の入力も受け入れます。上記の 上記 に示された apply_transcription_request の使い方は、apply_chat_template のための簡便なラッパーです。
プリフィルによってアシスタントのターンをlanguage <NAME><asr_text>で事前入力し、continue_final_message=Trueを渡すことで、チャットテンプレートを通じて言語を強制指定できます。apply_transcription_requestは内部でこの処理を行っています。なお、言語を強制指定する場合は、バッチ内のすべての音声に対してプリフィルを設定する必要があります(以下に示すように)。
from transformers import AutoProcessor, Qwen3ASRForConditionalGeneration
model_id = "Qwen/Qwen3-ASR-1.7B-hf"
processor = AutoProcessor.from_pretrained(model_id)
model = Qwen3ASRForConditionalGeneration.from_pretrained(model_id, device_map="auto")
chat_template = [
[
# Context/hotwords as system message
{"role": "system", "content": [{"type": "text", "text": "Vocabulary: Quilter, apostle, gospel."}]},
{
"role": "user",
"content": [
{
"type": "audio",
"path": "https://huggingface.co/datasets/bezzam/audio_samples/resolve/main/librispeech_mr_quilter.wav",
},
],
},
# empty prefill since forcing language in the other sample
{"role": "assistant", "content": [{"type": "text", "text": ""}]},
],
[
{
"role": "user",
"content": [
{
"type": "audio",
"path": "https://huggingface.co/datasets/hf-internal-testing/dummy-audio-samples/resolve/main/mandarin_voxcpm_zh.wav",
},
],
},
{"role": "assistant", "content": [{"type": "text", "text": "language Chinese<asr_text>"}]},
],
]
inputs = processor.apply_chat_template(
chat_template, tokenize=True, return_dict=True, continue_final_message=True,
).to(model.device, model.dtype)
output_ids = model.generate(**inputs, max_new_tokens=256)
generated_ids = output_ids[:, inputs["input_ids"].shape[1]:]
transcriptions = processor.decode(generated_ids, return_format="transcription_only")
for text in transcriptions:
print(text)トレーニング
Qwen3 ASR は、モデルが出力する損失で学習できます。事前学習済みの動作を維持するために、ターゲットの文字起こしをアシスタントターンに、モデルの出力形式 language <NAME><asr_text>... で配置し、output_labels=True を渡します。音声とパディングの位置は自動的にマスクされます。
from transformers import AutoProcessor, Qwen3ASRForConditionalGeneration
model_id = "Qwen/Qwen3-ASR-1.7B-hf"
processor = AutoProcessor.from_pretrained(model_id)
model = Qwen3ASRForConditionalGeneration.from_pretrained(model_id, device_map="auto")
model.train()
transcript = "Mr. Quilter is the apostle of the middle classes, and we are glad to welcome his gospel."
conversation = [
[
{
"role": "user",
"content": [
{
"type": "audio",
"path": "https://huggingface.co/datasets/bezzam/audio_samples/resolve/main/librispeech_mr_quilter.wav",
},
],
},
{"role": "assistant", "content": [{"type": "text", "text": f"language English<asr_text>{transcript}"}]},
],
]
inputs = processor.apply_chat_template(
conversation, tokenize=True, return_dict=True, processor_kwargs={"output_labels": True},
).to(model.device, model.dtype)
loss = model(**inputs).loss
print("Loss:", loss.item())
loss.backward()強制アライメント(単語レベルのタイムスタンプ)
Qwen3ASRForTokenClassification を使用して、文字起こし結果から単語単位のタイムスタンプを取得します。まず ASR モデルで文字起こしを行い、その後、フォースドアライナーでアラインメントを実行します。
サポートされている言語は以下の通りです:中国語(zh)、英語(en)、広東語(yue)、フランス語(fr)、ドイツ語(de)、イタリア語(it)、日本語(ja)、韓国語(ko)、ポルトガル語(pt)、ロシア語(ru)、スペイン語(es)。
日本語にはnagisaライブラリ、韓国語にはsoynlpライブラリが必要です:
pip install nagisa soynlpQwen3 ASR を使用して
import torch
from transformers import AutoProcessor, AutoModelForMultimodalLM, AutoModelForTokenClassification
asr_model_id = "Qwen/Qwen3-ASR-0.6B-hf"
aligner_model_id = "Qwen/Qwen3-ForcedAligner-0.6B-hf"
asr_processor = AutoProcessor.from_pretrained(asr_model_id)
asr_model = AutoModelForMultimodalLM.from_pretrained(asr_model_id, device_map="auto")
aligner_processor = AutoProcessor.from_pretrained(aligner_model_id)
aligner_model = AutoModelForTokenClassification.from_pretrained(
aligner_model_id, dtype=torch.bfloat16, device_map="auto"
)
audio_url = "https://huggingface.co/datasets/bezzam/audio_samples/resolve/main/librispeech_mr_quilter.wav"
# Step 1: Transcribe
inputs = asr_processor.apply_transcription_request(audio=audio_url)
inputs = inputs.to(asr_model.device, asr_model.dtype)
output_ids = asr_model.generate(**inputs, max_new_tokens=256)
generated_ids = output_ids[:, inputs["input_ids"].shape[1]:]
parsed = asr_processor.decode(generated_ids, return_format="parsed")[0]
transcript = parsed["transcription"]
language = parsed["language"] or "English"
# Step 2: Prepare alignment inputs
aligner_inputs, word_lists = aligner_processor.prepare_forced_aligner_inputs(
audio=audio_url, transcript=transcript, language=language,
)
aligner_inputs = aligner_inputs.to(aligner_model.device, aligner_model.dtype)
# Step 3: Run forced aligner
with torch.inference_mode():
outputs = aligner_model(**aligner_inputs)
# Step 4: Decode timestamps
timestamps = aligner_processor.decode_forced_alignment(
logits=outputs.logits,
input_ids=aligner_inputs["input_ids"],
word_lists=word_lists,
timestamp_token_id=aligner_model.config.timestamp_token_id,
)[0]
for item in timestamps:
print(f"{item['text']:<20} {item['start_time']:>8.3f}s → {item['end_time']:>8.3f}s")
"""
Word Start (s) End (s)
------------------------------------------
Mr 0.560 0.800
Quilter 0.800 1.280
is 1.280 1.440
the 1.440 1.520
apostle 1.520 2.080
...
"""別のASRモデルを使用する場合
強制アライナーはモデル非依存であり、任意のASRシステムからの文字起こし結果を提供できます。以下は、文字起こしにNVIDIA Parakeet CTCを使用するバッチ推論の例です。
import torch
from datasets import Audio, load_dataset
from transformers import AutoModelForCTC, AutoProcessor, AutoModelForTokenClassification
parakeet_processor = AutoProcessor.from_pretrained("nvidia/parakeet-ctc-1.1b")
parakeet_model = AutoModelForCTC.from_pretrained(
"nvidia/parakeet-ctc-1.1b", dtype="auto", device_map="auto",
)
aligner_model_id = "Qwen/Qwen3-ForcedAligner-0.6B-hf"
aligner_processor = AutoProcessor.from_pretrained(aligner_model_id)
aligner_model = AutoModelForTokenClassification.from_pretrained(
aligner_model_id, dtype=torch.bfloat16, device_map="auto",
)
ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
ds = ds.cast_column("audio", Audio(sampling_rate=parakeet_processor.feature_extractor.sampling_rate))
audio_arrays = [ds[i]["audio"]["array"] for i in range(3)]
sr = ds[0]["audio"]["sampling_rate"]
# Batch transcribe with Parakeet
inputs = parakeet_processor(audio_arrays, sampling_rate=sr, return_tensors="pt", padding=True).to(
parakeet_model.device, dtype=parakeet_model.dtype
)
with torch.inference_mode():
outputs = parakeet_model.generate(**inputs)
transcripts = parakeet_processor.decode(outputs)
# Batch align with Qwen3 Forced Aligner
aligner_inputs, word_lists = aligner_processor.prepare_forced_aligner_inputs(
audio=audio_arrays, transcript=transcripts, language="English",
)
aligner_inputs = aligner_inputs.to(aligner_model.device, aligner_model.dtype)
with torch.inference_mode():
aligner_outputs = aligner_model(**aligner_inputs)
batch_timestamps = aligner_processor.decode_forced_alignment(
logits=aligner_outputs.logits,
input_ids=aligner_inputs["input_ids"],
word_lists=word_lists,
timestamp_token_id=aligner_model.config.timestamp_token_id,
)
for i, (transcript, timestamps) in enumerate(zip(transcripts, batch_timestamps)):
print(f"\n[Sample {i}] {transcript}")
for item in timestamps[:5]:
print(f" {item['text']:<20} {item['start_time']:>8.3f}s → {item['end_time']:>8.3f}s")
if len(timestamps) > 5:
print(f" ... ({len(timestamps) - 5} more words)")Torch compile
ASRモデルとforced alignerモデルの両方で、より高速な推論のためにtorch.compileをサポートしています。forced alignerは自己回帰デコーディングを伴わない単一のフォワードパスで動作するため、コンパイルとの相性が特に良好です。これにより、大量の音声タイムスタンプ付与に最適です。任意のASRモデルで文字起こしを行い、その後、コンパイル済みのforced alignerでバッチアラインメントを実行することで、最大のスループットを実現できます。
強制アライナー
A100では、バッチサイズが4の場合に約1.2倍の高速化を確認しました(スクリプト)。
import torch
from transformers import AutoProcessor, AutoModelForTokenClassification
model_id = "Qwen/Qwen3-ForcedAligner-0.6B-hf"
num_warmup = 5
batch_size = 4
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForTokenClassification.from_pretrained(model_id, dtype=torch.bfloat16).to("cuda")
# Prepare a batch of 4 samples
audio_url = "https://huggingface.co/datasets/bezzam/audio_samples/resolve/main/librispeech_mr_quilter.wav"
transcript = "Mr. Quilter is the apostle of the middle classes."
aligner_inputs, word_lists = processor.prepare_forced_aligner_inputs(
audio=[audio_url] * batch_size,
transcript=[transcript] * batch_size,
language=["English"] * batch_size,
)
aligner_inputs = aligner_inputs.to(model.device, torch.bfloat16)
# Warm-up and apply model
model = torch.compile(model)
with torch.no_grad():
for _ in range(num_warmup):
_ = model(**aligner_inputs)
with torch.no_grad():
_ = model(**aligner_inputs)ASRモデル(generate)
自己回帰型文字起こしでは、CompileConfig オブジェクトを指定して generate を設定すると、generate 内のトークンごとのフォワードパスが torch.compile によって高速化されます。
A100では、バッチサイズが4の場合、約3.8倍の高速化を確認しました(スクリプト)。
import torch
from transformers import AutoProcessor, AutoModelForMultimodalLM, CompileConfig
model_id = "Qwen/Qwen3-ASR-1.7B-hf"
num_warmup = 3
max_new_tokens = 256
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForMultimodalLM.from_pretrained(model_id, dtype=torch.bfloat16).to("cuda").eval()
audio_url = "https://huggingface.co/datasets/bezzam/audio_samples/resolve/main/librispeech_mr_quilter.wav"
inputs = processor.apply_transcription_request(
audio=[audio_url] * 4, # batch of 4
).to(model.device, torch.bfloat16)
compile_config = CompileConfig()
# Warmup
with torch.inference_mode():
for _ in range(num_warmup):
_ = model.generate(
**inputs, max_new_tokens=max_new_tokens, do_sample=False,
cache_implementation="static", compile_config=compile_config,
)
torch.cuda.synchronize()
# Apply model
with torch.inference_mode():
output_ids = model.generate(
**inputs, max_new_tokens=max_new_tokens, do_sample=False,
cache_implementation="static", compile_config=compile_config,
)
generated_ids = output_ids[:, inputs["input_ids"].shape[1] :]
text_compiled = processor.decode(generated_ids, return_format="transcription_only")[0]
print(f"Output: {text_compiled}")Pipelineの使用方法
from transformers import pipeline
model_id = "Qwen/Qwen3-ASR-1.7B-hf"
pipe = pipeline("any-to-any", model=model_id, device_map="auto")
chat_template = [
{
"role": "user",
"content": [
{
"type": "audio",
"path": "https://huggingface.co/datasets/bezzam/audio_samples/resolve/main/librispeech_mr_quilter.wav",
},
],
}
]
outputs = pipe(text=chat_template, return_full_text=False)
raw_text = outputs[0]["generated_text"]
print(f"Raw: {raw_text}")
# Use processor helper to extract transcription
transcription = pipe.processor.extract_transcription(raw_text)
print(f"Transcription: {transcription}")Qwen3ASRConfig
クラス transformers.Qwen3ASRConfig
< 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 = Noneaudio_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonetext_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Noneaudio_token_id: int = 151676timestamp_token_id: int = 151705pad_token_id: int = 151645eos_token_id: list[int] | tuple[int, ...] | int = (151643, 151645)initializer_range: float = 0.02tie_word_embeddings: bool = Truetoken_classification_bias: bool = False )
パラメータ
- audio_config (Union[dict, ~configuration_utils.PreTrainedConfig]、optional) — オーディオバックボーンの config オブジェクトまたは辞書です。
- text_config (Union[dict, ~configuration_utils.PreTrainedConfig]、任意) — テキストバックボーンの config オブジェクトまたは辞書。
- audio_token_id (int、optional、デフォルト値は 151676) — 音声プロンプトをエンコードするために使用するオーディオトークン ID です。
- timestamp_token_id (int、optional、デフォルト値は 151705) —
トークナイザの語彙における
<timestamp>マーカーのトークン ID です。これらのマーカーは、強制アライメントの入力シーケンス内で単語の境界を区切ります。 - pad_token_id (int、optional、デフォルトは 151645) — 語彙内でパディングに使用されるトークンIDです。
- eos_token_id (Union[list[int], tuple[int, …], int]、optional、デフォルトは (151643, 151645)) — 語彙内でストリーム終了に使用されるトークン ID。
- initializer_range (float、任意、デフォルトは 0.02) — すべての重み行列の初期化に使用される truncated_normal_initializer の標準偏差です。
- tie_word_embeddings (bool、任意、デフォルトは True) — モデルの tied_weights_keys マッピングに従って重み埋め込みを共有するかどうかを指定します。
- token_classification_bias (bool、任意、デフォルトは False) — 強制アライメント用のトークン分類ヘッドにバイアス項を含めるかどうかを指定します。
これは、Qwen3ASRModel の設定を保存するための設定クラスです。指定された引数に基づいて Qwen3 Asr モデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、Qwen/Qwen3-ASR-1.7B-hf と同様の設定が得られます。
Configuration オブジェクトは [PreTrainedConfig] を継承し、モデルの出力を制御するために使用できます。詳細については、[PreTrainedConfig] のドキュメントを参照してください。
例:
>>> from transformers import Qwen3ASRForConditionalGeneration, Qwen3ASRConfig
>>> # Initializing a Qwen3ASR style configuration
>>> configuration = Qwen3ASRConfig()
>>> # Initializing a model from the configuration
>>> model = Qwen3ASRForConditionalGeneration(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configQwen3ASREncoderConfig
class transformers.Qwen3ASREncoderConfig
< 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 = 128encoder_layers: int = 24encoder_attention_heads: int = 16encoder_ffn_dim: int = 4096d_model: int = 1024dropout: float | int = 0.0attention_dropout: float | int = 0.0activation_function: str = 'gelu'activation_dropout: float | int = 0.0scale_embedding: bool = Falseinitializer_range: float = 0.02n_window: int = 50output_dim: int = 3584n_window_infer: int = 800downsample_hidden_size: int = 480max_position_embeddings: int = 13 )
パラメータ
- num_mel_bins (int、任意、デフォルトは 128) — 各入力フレームで使用する mel 特徴の数を指定します。AutoFeatureExtractor クラスで使用される値と一致させる必要があります。
- encoder_layers (int、任意、デフォルトは 24) — Transformer エンコーダーの隠れ層の数です。設定されていない場合、num_layers と同じ値が使用されます。
- encoder_attention_heads (int、optional、デフォルトは 16) — Transformer エンコーダーの各アテンション層におけるアテンションヘッドの数。
- encoder_ffn_dim (int、optional、デフォルトは 4096) — エンコーダー内の「中間」層(feed-forward 層と呼ばれることが多い)の次元数。
- d_model (int、任意、デフォルトは 1024) — エンコーダ層とプーラ層のサイズ。
- dropout (Union[float, int]、任意、デフォルトは 0.0) — すべての dropout レイヤーの比率です。
- attention_dropout (Union[float, int]、optional、デフォルトは 0.0) — アテンション確率のドロップアウト率です。
- activation_function (str、optional、デフォルトは gelu) — デコーダーで使用する非線形活性化関数(関数または文字列)。例えば、“gelu”、 “relu”、“silu” など。
- activation_dropout (Union[float, int]、optional、デフォルトは 0.0) — 全結合層内の活性化に対する dropout 率です。
- scale_embedding (bool、任意、デフォルトは False) — 埋め込みを sqrt(d_model) で割ってスケーリングするかどうか。
- initializer_range (float、任意、デフォルトは 0.02) — すべての重み行列の初期化に使用される truncated_normal_initializer の標準偏差です。
- n_window (int、任意、デフォルト値は 50) —
1 つのエンコーダチャンクに含まれる mel フレーム数の半分です。conv スタックによって処理される各チャンクには
2 * n_window個の mel フレームが含まれます(10 ms の hop を持つ 16 kHz の音声では 1 秒分です)。 - output_dim (int、任意、デフォルトは 3584) — 出力の次元数。
- n_window_infer (int、optional、デフォルトは 800) —
各アテンションウィンドウがまたぐ mel フレーム相当の音声の長さ。
n_window * 2の倍数である必要があり、アテンションウィンドウがエンコーダーのチャンクと整合するようにします。 - downsample_hidden_size (int、optional、デフォルトは 480) — 畳み込みダウンサンプリングスタックの隠れ層サイズ。
- max_position_embeddings (int、任意、デフォルトは 13) — このモデルが使用される可能性のある最大シーケンス長です。
これは、Qwen3ASRModel の設定を保存するための設定クラスです。指定された引数に基づいて Qwen3 Asr モデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、Qwen/Qwen3-ASR-1.7B-hf と同様の設定が得られます。
Configuration オブジェクトは [PreTrainedConfig] を継承し、モデルの出力を制御するために使用できます。詳細については、[PreTrainedConfig] のドキュメントを参照してください。
Qwen3ASRFeatureExtractor
クラス transformers.Qwen3ASRFeatureExtractor
< source >( feature_size = 128sampling_rate = 16000hop_length = 160chunk_length = 30n_fft = 400padding_value = 0.0dither = 0.0return_attention_mask = Truen_window = 50min_length = 8000**kwargs )
パラメータ
- feature_size (int、任意、デフォルトは 128)— メルフィルタバンクの数。
- sampling_rate (int、任意、デフォルトは 16000) — Hz 単位のオーディオのサンプリングレートです。
- hop_length (int、任意、デフォルト値は 160) — Mel 周波数係数を取得するために使用される STFT の、重複するウィンドウの長さ。
- chunk_length (int、任意、デフォルト値は 30) —
padding="max_length"の場合、トリム/パディングに使用する最大音声長(秒)。 - n_fft (int、optional、デフォルトは 400) — フーリエ変換のサイズ。
- padding_value (float、optional、デフォルトは 0.0) — 生オーディオをパディングするために使用されるパディング値。
- dither (float、optional、デフォルトは 0.0)— 0 以外の場合、各 STFT フレームにガウスノイズ(std = dither)を加えます。
- return_attention_mask (bool、任意、デフォルトは True) — パディングされたメルフレームに対応するアテンションマスクを返すかどうかを指定します。
- n_window (int、任意、デフォルトは 50) —
パディングに使用する mel フレームのチャンクサイズの半分です。log-mel 時間軸は、
2 * n_windowの倍数になるように右側がパディングされます。 - min_length (int、任意、デフォルト値は 8000) — 各オーディオクリップの最小サンプル数。この長さより短いクリップはゼロパディングされ、元の Qwen3-ASR ライブラリの動作と一致します。
Qwen3 ASR の特徴抽出器を構築します。
生の音声から128ビンのlog-mel特徴量を抽出し、melの時間軸を2 * n_windowの倍数になるよう右パディングします。
__call__
< source >( raw_speech: numpy.ndarray | list[float] | list[numpy.ndarray] | list[list[float]]truncation: bool = Falsepad_to_multiple_of: int | None = Nonereturn_tensors: str | None = 'pt'return_attention_mask: bool | None = Nonepadding: str | None = 'max_length'max_length: int | None = Nonesampling_rate: int | None = Nonen_window: int | None = Nonedevice: str | None = 'cpu'**kwargs )
パラメータ
- raw_speech (np.ndarray、list[float]、list[np.ndarray]、list[list[float]]) — パディング対象のシーケンスまたはシーケンスのバッチです。モノラル音声のみ対応しています。
- pad_to_multiple_of (int、optional) —
設定した場合、生オーディオをこの値の倍数(サンプル数)にパディングします。
n_windowは mel フレーム軸に適用されるため、これとは独立しています。 - n_window (int、任意) —
この呼び出しにおいて、インスタンスの
n_windowを上書きします。mel 軸は2 * n_windowの倍数にパディングされます。mel 軸のパディングを完全にスキップするには0を設定してください。 - device (str、optional、デフォルトは “cpu”) — log-mel スペクトログラムの計算に使用するデバイス。
1つ以上のオーディオシーケンスからlog-mel特徴量を準備します。
Qwen3ASRProcessor
クラス transformers.Qwen3ASRProcessor
< source >( feature_extractor = Nonetokenizer = Nonechat_template = Nonetimestamp_segment_time: float = 80 )
Qwen3ASRProcessor を構築します。このクラスは、feature extractor と tokenizer を単一の processor にラップします。
Qwen3ASRProcessor は、Qwen3ASRFeatureExtractor と Qwen2Tokenizer のすべての機能を提供します。詳細については、~Qwen3ASRFeatureExtractor および ~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']]output_labels: bool | None = False**kwargs: *<class 'transformers.models.qwen3_asr.processing_qwen3_asr.Qwen3ASRProcessorKwargs'> ) → 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クラスを参照してください。
戻り値
トークン化されたテキスト(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 = Nonetokenize: bool = True**kwargs: *<class 'transformers.models.qwen3_asr.processing_qwen3_asr.Qwen3ASRProcessorKwargs'> ) → [BatchFeature] or list[str]
パラメータ
- audio (AudioInput または list[AudioInput]) — 文字起こし対象の音声。URL 文字列、ローカルパス、numpy 配列、またはこれらのリストを指定できます。
- language (str または list[str]、任意) —
転写に強制適用する言語です。正式名称(例:
"English"、"Chinese")または ISO コード(例:"en"、"zh")を受け取ります。 リストの場合、その長さはオーディオのバッチサイズと一致する必要があります。 元の実装に従い、生成プロンプトの後にlanguage <NAME><asr_text>を追加することで言語を強制し、モデルは転写テキストのみを生成します。Noneの場合、モデルは自動言語検出を実行し、language <NAME><asr_text>...を自ら出力します。 - prompt (str または list[str]、任意) — システムプロンプトとして含めるコンテキストやホットワード。例えば、転写を特定の方向に誘導するためのドメイン固有の単語やフレーズです。リストを指定する場合は、オーディオバッチと同じ長さである必要があります。None の場合、システムプロンプトは空のままになります。
- tokenize (bool、optional、デフォルトは True) — プロンプトをトークナイズし、オーディオを処理するかどうか。False の場合、オーディオは読み込まれず、プロンプトは展開されていないオーディオプレースホルダーを含む文字列として返されます。これらをオーディオとともにプロセッサーに渡す processor(text=prompts, audio=audio) と、tokenize=True を指定した場合の出力は同一です。
- **kwargs — [~Qwen3ASRProcessor.apply_chat_template] および基盤となるプロセッサの呼び出しに転送される追加のキーワード引数(例: text_kwargs、audio_kwargs など)。
戻り値
[BatchFeature] または list[str]
tokenize=False の場合は 1 つのオーディオごとに 1 つのプロンプトが出力され、それ以外の場合は [Qwen3ASRForConditionalGeneration.generate] にそのまま渡せる形式でプロセッサが出力します。
手動でチャットテンプレートを書かずに、自動音声認識用の入力を準備します。
prepare_forced_aligner_inputs
< source >( audio: typing.Union[numpy.ndarray, ForwardRef('torch.Tensor'), collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence['torch.Tensor']]transcript: str | list[str]language: str | list[str] | None = None**kwargs ) → tuple[BatchFeature, list[list[str]]]
パラメータ
- audio (AudioInput) — オーディオ入力。パス、URL、NumPy 配列、またはそれらのリストを受け取ります。
- transcript (str または list[str]) — 音声にアラインメントを行うためのトランスクリプト。
- language (str、list[str]、または None、任意) — 言語のヒント。現在、トークナイズ処理では使用されていませんが、言語固有のトークナイザー(例:日本語、韓国語)のために予約されています。
- **kwargs — [~Qwen3ASRProcessor.apply_chat_template] に転送される追加のキーワード引数。
戻り値
tuple[BatchFeature, list[list[str]]]
inputs:input_ids、attention_mask、input_features、input_features_maskを含み、forced aligner モデルの処理に備えた [BatchFeature]。word_lists: 入力を構築するために使用される、単語レベルのトークンリストのリスト(サンプルごとに1つ)。タイムスタンプを単語と対応付けるには、これらを [~Qwen3ASRProcessor.decode_forced_alignment] に渡します。
強制アライナーモデルの入力を準備します。
decode_forced_alignment
< source >( logitsinput_idsword_lists: listtimestamp_token_id: inttimestamp_segment_time: float | None = None ) → list[list[dict]]
パラメータ
- logits (torch.Tensor、形状 (batch_size, seq_len, num_labels)) — [Qwen3ASRForTokenClassification] からの分類 logits。
- input_ids (torch.LongTensor、shape (batch_size, seq_len)) — フォワードパスに使用される入力トークンIDです。
- word_lists (list[list[str]]) — [~Qwen3ASRProcessor.prepare_forced_aligner_inputs] が返す単語レベルのトークンリストです。
- timestamp_token_id (int) —
<timestamp>マーカーのトークン ID(model.config.timestamp_token_idから取得)。 - timestamp_segment_time (float、任意) — タイムスタンプクラスあたりのミリ秒数。指定しない場合、self.timestamp_segment_timeが使用されます。
戻り値
list[list[dict]]
サンプルごとに1つのリスト。各内側のリストには、キー "text" (str)、"start_time" (float、秒)、および "end_time" (float、秒) を持つ dict が含まれます。
強制アライナーモデルの出力を単語レベルのタイムスタンプにデコードします。
decode
< source >( *argsreturn_format = 'raw'**kwargs )
パラメータ
- return_format (str, 省略可, デフォルトは “raw) —
オプション: "raw": トークナイザーから生デコードされた文字列を返します。"parsed": "language" と "transcription" キーを持つ dict (または dict のリスト) を返します。"transcription_only": 転写されたテキストのみ (<asr_text> の後) を抽出します。"parsed" と "transcription_only" では、skip_special_tokens は True に固定されます。
"raw": トークナイザーから生(raw)のデコード済み文字列を返します。"parsed":"language"と"transcription"をキーとする dict(または dict のリスト)を返します。"transcription_only": 書き起こされたテキストのみを抽出します(<asr_text>の後)。
"parsed"および"transcription_only"の場合、skip_special_tokensはTrueに固定されています。
トークナイザーの decode に引数を転送し、必要に応じて ASR の出力を解析します。
Qwen3 ASR は、language <LANG><asr_text>transcribed text という形式で文字起こしを出力します。
Qwen3ASREncoder
class transformers.Qwen3ASREncoder
< source >( config: Qwen3ASREncoderConfig )
パラメータ
- config (Qwen3ASREncoderConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
ヘッドや投影が一切付加されていない Qwen3 ASR の音声モデルです。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( input_features: Tensorinput_features_mask: Tensor**kwargs ) → BaseModelOutputWithPooling or tuple(torch.FloatTensor)
パラメータ
- input_features (
torch.Tensor、shape(batch_size, sequence_length, feature_dim)) — 入力音声特徴に対応するテンソルです。音声特徴は Qwen3ASRFeatureExtractor を使用して取得できます。詳細は Qwen3ASRFeatureExtractor.call() を参照してください(Qwen3ASRProcessor は音声の処理に Qwen3ASRFeatureExtractor を使用します)。 - input_features_mask (
torch.LongTensor、shape(batch_size, padded_feature_length)) — 有効な mel フレームには 1、パディングには 0 を設定します。
戻り値
BaseModelOutputWithPooling または tuple(torch.FloatTensor)
torch.FloatTensor のタプル(return_dict=False が渡された場合、または config.return_dict=False の場合)、または BaseModelOutputWithPooling。設定(Qwen3ASRConfig)や入力に応じて、さまざまな要素で構成されます。
Qwen3ASREncoderのforwardメソッドは、__call__特殊メソッドをオーバーライドします。
この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく
Moduleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。
last_hidden_state (
torch.FloatTensor、shape(batch_size, sequence_length, hidden_size)) — モデルの最終層の出力における隠れ状態のシーケンス。pooler_output (
torch.FloatTensor、shape(batch_size, hidden_size)) — 補助事前学習タスクに使用される層をさらに通して処理された後、シーケンスの最初のトークン(分類トークン)の最終層の隠れ状態。例えば、BERT 系のモデルでは、線形層と tanh 活性化関数を経て処理された後の分類トークンを返します。この線形層の重みは、事前学習中の次文予測(分類)目的から学習されます。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後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。
Qwen3ASRModel
クラス transformers.Qwen3ASRModel
< source >( config: Qwen3ASRConfig )
パラメータ
- config (Qwen3ASRConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
Qwen3ASRモデル(ファインチューニング済みのWhisperエンコーダー、マルチモーダルプロジェクター、Qwen2言語モデル)は、言語モデリングヘッドを備えていません。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( 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'> ) → Qwen3ASRModelOutputWithPast or tuple(torch.FloatTensor)
パラメータ
- input_ids (
torch.LongTensorの形状(batch_size, sequence_length), 、省略可) — 語彙における入力シーケンスのトークンインデックスです。デフォルトではパディングは無視されます。インデックスはAutoTokenizerを使用して取得できます。詳細については、PreTrainedTokenizer.encode()およびPreTrainedTokenizer.call()を参照してください。
- input_features (
torch.FloatTensor、形状(batch_size, sequence_length, feature_dim)、任意) — 入力音声特徴に対応するテンソルです。音声特徴は Qwen3ASRFeatureExtractor を使用して取得できます。詳細は Qwen3ASRFeatureExtractor.call() を参照してください(Qwen3ASRProcessor は音声の処理に Qwen3ASRFeatureExtractor を使用します)。 - input_features_mask (
torch.Tensor、形状(batch_size, feature_sequence_length)) — パディングされた特徴インデックスに対するアテンションの計算を回避するためのマスク。 - attention_mask (
torch.Tensorの形状(batch_size, sequence_length), 、任意) — パディングトークンのインデックスに対するアテンションを回避するためのマスク。[0, 1]:- マスクされていないトークンに対して1
- マスクされたトークンに対しては 0 です。
- position_ids (
torch.LongTensorの形状(batch_size, sequence_length), 、任意) — 各入力シーケンスのトークンが位置埋め込み内で占める位置のインデックス。範囲[0, config.n_positions - 1]. - past_key_values (
~cache_utils.Cache, 省略可) — 逐次デコードを高速化するために使用できる、事前計算された隠れ状態(自己アテンションブロックおよびクロスアテンションブロックのキーとバリュー)。通常、これはデコードの以前の段階でモデルが返したpast_key_valuesであり、use_cache=Trueまたはconfig.use_cache=True.入力として許可されるのは Cache インスタンスのみです。kv 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を参照)。
戻り値
Qwen3ASRModelOutputWithPast または tuple(torch.FloatTensor)
Qwen3ASRModelOutputWithPast、またはtorch.FloatTensorのタプル(return_dict=Falseが渡された場合、またはconfig.return_dict=Falseの場合)。設定(Qwen3ASRConfig)と入力に応じて、さまざまな要素で構成されます。
Qwen3ASRModelのforwardメソッドは、__call__特殊メソッドをオーバーライドします。
この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく
Moduleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。
- audio_hidden_states (
torch.FloatTensor、任意) — 投影されたオーディオの隠れ状態。
get_audio_features
< source >( input_features: FloatTensorinput_features_mask: LongTensor**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPooling or tuple(torch.FloatTensor)
パラメータ
- input_features (
torch.FloatTensor、shape(batch_size, sequence_length, feature_dim)) — 入力音声特徴に対応するテンソルです。音声特徴は Qwen3ASRFeatureExtractor を使用して取得できます。詳細は Qwen3ASRFeatureExtractor.call() を参照してください(Qwen3ASRProcessor は音声の処理に Qwen3ASRFeatureExtractor を使用します)。 - input_features_mask (
torch.LongTensor、shape(batch_size, padded_feature_length)) — 有効な mel フレームには 1、パディングには 0 を設定します。
戻り値
BaseModelOutputWithPooling または tuple(torch.FloatTensor)
torch.FloatTensor のタプル(return_dict=False が渡された場合、または config.return_dict=False の場合)、または BaseModelOutputWithPooling。設定(Qwen3ASRConfig)や入力に応じて、さまざまな要素で構成されます。
このメソッドは、入力特徴量(ログメルスペクトログラム)から音声埋め込みを取得するために使用されます。
last_hidden_state (
torch.FloatTensor、shape(batch_size, sequence_length, hidden_size)) — モデルの最終層の出力における隠れ状態のシーケンス。pooler_output (
torch.FloatTensor、shape(batch_size, hidden_size)) — 補助事前学習タスクに使用される層をさらに通して処理された後、シーケンスの最初のトークン(分類トークン)の最終層の隠れ状態。例えば、BERT 系のモデルでは、線形層と tanh 活性化関数を経て処理された後の分類トークンを返します。この線形層の重みは、事前学習中の次文予測(分類)目的から学習されます。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後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。
get_placeholder_mask
< source >( input_ids: LongTensorinputs_embeds: FloatTensoraudio_features: FloatTensor )
input_idsまたはinputs_embedsからマルチモーダルプレースホルダーマスクを取得し、プレースホルダートークンの数がマルチモーダル特徴の長さと等しいことを確認します。長さが異なる場合、エラーが発生します。
Qwen3ASRForConditionalGeneration
クラス transformers.Qwen3ASRForConditionalGeneration
< source >( config: Qwen3ASRConfig )
パラメータ
- config (Qwen3ASRConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
音声エンコーダーと言語モデルで構成されるQwen3ASRモデル。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( 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'> ) → Qwen3ASRCausalLMOutputWithPast or tuple(torch.FloatTensor)
パラメータ
- input_ids (
torch.LongTensorの形状(batch_size, sequence_length), 、省略可) — 語彙における入力シーケンスのトークンインデックスです。デフォルトではパディングは無視されます。インデックスはAutoTokenizerを使用して取得できます。詳細については、PreTrainedTokenizer.encode()およびPreTrainedTokenizer.call()を参照してください。
- input_features (
torch.FloatTensor、形状(batch_size, sequence_length, feature_dim)、任意) — 入力音声特徴に対応するテンソルです。音声特徴は Qwen3ASRFeatureExtractor を使用して取得できます。詳細は Qwen3ASRFeatureExtractor.call() を参照してください(Qwen3ASRProcessor は音声の処理に Qwen3ASRFeatureExtractor を使用します)。 - input_features_mask (
torch.Tensor、形状(batch_size, feature_sequence_length)) — パディングされた特徴インデックスに対するアテンションの計算を回避するためのマスク。 - attention_mask (
torch.Tensorの形状(batch_size, sequence_length), 、任意) — パディングトークンのインデックスに対するアテンションを回避するためのマスク。[0, 1]:- マスクされていないトークンに対して1
- マスクされたトークンに対しては 0 です。
- position_ids (
torch.LongTensorの形状(batch_size, sequence_length), 、任意) — 各入力シーケンスのトークンが位置埋め込み内で占める位置のインデックス。範囲[0, config.n_positions - 1]. - past_key_values (
~cache_utils.Cache, 省略可) — 逐次デコードを高速化するために使用できる、事前計算された隠れ状態(自己アテンションブロックおよびクロスアテンションブロックのキーとバリュー)。通常、これはデコードの以前の段階でモデルが返したpast_key_valuesであり、use_cache=Trueまたはconfig.use_cache=True.入力として許可されるのは Cache インスタンスのみです。kv 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 次元テンソルである必要があります。これは、パックされたテンソル形式(バッチとシーケンス長を単一の次元にまとめた形式)を使用する場合に有用です。
戻り値
Qwen3ASRCausalLMOutputWithPast または tuple(torch.FloatTensor)
Qwen3ASRCausalLMOutputWithPast、またはtorch.FloatTensorのタプル(return_dict=Falseが渡された場合、またはconfig.return_dict=Falseの場合)。設定(Qwen3ASRConfig)や入力に応じて、さまざまな要素で構成されます。
Qwen3ASRForConditionalGenerationの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、任意) — 投影後のオーディオエンコーダーの隠れ状態。
Qwen3ASRForTokenClassification
クラス transformers.Qwen3ASRForTokenClassification
< source >( config )
パラメータ
- config ([
[``GenericForTokenClassification``]]) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
タイムスタンプ予測(強制アライメント)用のトークン分類ヘッドを備えた Qwen3 ASR モデル。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( input_ids: torch.LongTensor | None = Noneattention_mask: torch.Tensor | None = Noneposition_ids: torch.LongTensor | None = Nonepast_key_values: Cache | None = Noneinputs_embeds: torch.FloatTensor | None = Nonelabels: torch.LongTensor | None = Noneuse_cache: bool | None = None**kwargs: Unpack[TransformersKwargs] ) → TokenClassifierOutput
パラメータ
- input_ids (
torch.LongTensorの形状(batch_size, sequence_length), 、省略可) — 語彙における入力シーケンスのトークンインデックスです。デフォルトではパディングは無視されます。インデックスはAutoTokenizerを使用して取得できます。詳細については、PreTrainedTokenizer.encode()およびPreTrainedTokenizer.call()を参照してください。
- attention_mask (
torch.Tensorの形状(batch_size, sequence_length), 、任意) — パディングトークンのインデックスに対するアテンションを回避するためのマスク。[0, 1]:- マスクされていないトークンに対して1
- マスクされたトークンに対しては 0 です。
- position_ids (
torch.LongTensorの形状(batch_size, sequence_length), 、任意) — 各入力シーケンスのトークンが位置埋め込み内で占める位置のインデックス。範囲[0, config.n_positions - 1]. - past_key_values (
Cache, 省略可) — 逐次デコードを高速化するために使用できる、事前計算された隠れ状態(自己アテンションブロックおよびクロスアテンションブロックのキーとバリュー)。通常、これはデコードの以前の段階でモデルが返した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、形状(batch_size, sequence_length)、任意) — トークン分類の損失を計算するためのラベル。インデックスは[0, ..., config.num_labels - 1]の範囲である必要があります。 - use_cache (
bool、任意) —Trueに設定すると、past_key_valuesのキーバリュー状態が返され、デコーディングの高速化に利用できます(past_key_valuesを参照)。
戻り値
TokenClassifierOutput
GenericForTokenClassificationのforwardメソッドは、__call__特殊メソッドをオーバーライドします。
この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく
Moduleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。