Transformers documentation
Qwen3 ASR
Model ini dipublikasikan di HF papers pada 2026-01-29 dan disumbangkan ke Hugging Face Transformers pada 2026-06-26.
Qwen3 ASR
Ikhtisar
Qwen3 ASR adalah model pengenalan ucapan otomatis dari tim Qwen di Alibaba yang menggabungkan encoder audio bergaya Whisper dengan decoder model bahasa Qwen3 untuk transkripsi ucapan-ke-teks. Model ini mendukung deteksi bahasa otomatis dan transkripsi multibahasa.
Model forced aligner juga disertakan. Model ini dapat digunakan untuk memberi cap waktu pada transkrip dan audio yang diberikan. Model ini menggunakan model encoder audio yang sama dengan kepala klasifikasi yang memprediksi panjang sebuah kata. Model ini dapat digunakan dengan transkrip dari model ASR mana pun (lihat contoh di bawah dengan Parakeet CTC).
Checkpoint yang tersedia:
Bahasa-bahasa berikut didukung:
Qwen3-ASR-1.7BdanQwen3-ASR-0.6B: Mandarin (zh), Inggris (en), Kanton (yue), Arab (ar), Jerman (de), Prancis (fr), Spanyol (es), Portugis (pt), Indonesia (id), Italia (it), Korea (ko), Rusia (ru), Thailand (th), Vietnam (vi), Jepang (ja), Turki (tr), Hindi (hi), Melayu (ms), Belanda (nl), Swedia (sv), Denmark (da), Finlandia (fi), Polandia (pl), Ceko (cs), Filipina (fil), Persia (fa), Yunani (el), Hungaria (hu), Makedonia (mk), Rumania (ro).Qwen3-ForcedAligner-0.6B: Mandarin (zh), Inggris (en), Kanton (yue), Prancis (fr), Jerman (de), Italia (it), Jepang (ja), Korea (ko), Portugis (pt), Rusia (ru), Spanyol (es).
Lihat repositori asli di QwenLM/Qwen3-ASR dan laporan untuk detail lebih lanjut.
Model ini disumbangkan oleh Eric Bezzam dan Muhammed Tariq.
Penggunaan
Transkripsi sederhana
Cara termudah untuk mentranskripsi audio adalah dengan apply_transcription_request, yang menangani format template chat untuk Anda, yaitu pembungkus kenyamanan untuk apply_chat_template (lihat Template chat di bawah).
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.
"""Memaksa bahasa
Anda dapat memaksa bahasa transkripsi seperti yang ditunjukkan di bawah ini.
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]}")Konteks / kata kunci
Anda dapat memberikan konteks bebas (misalnya, kosakata khusus domain, nama, atau informasi latar belakang) melalui prompt untuk memengaruhi transkripsi.
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])Inferensi batch
Inferensi batch dimungkinkan dengan meneruskan daftar audio dan, jika disediakan, daftar bahasa dan/atau prompt.
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}")Template chat
Qwen3 ASR juga menerima input template chat. Penggunaan apply_transcription_request di atas adalah pembungkus kenyamanan untuk apply_chat_template.
Bahasa dapat dipaksa melalui chat template dengan cara prefilling giliran asisten menggunakan language <NAME><asr_text> dan meneruskan continue_final_message=True, yang merupakan apa yang dilakukan apply_transcription_request di balik layar. Perhatikan bahwa jika memaksa bahasa, prefill harus disetel untuk semua audio dalam batch (seperti yang ditunjukkan di bawah).
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)Pelatihan
Lewatkan transkrip target ke apply_transcription_request dengan transcription untuk mendapatkan labels yang digunakan untuk menghitung loss.
from datasets import Audio, load_dataset
from transformers import AutoProcessor, Qwen3ASRForConditionalGeneration
model_id = "Qwen/Qwen3-ASR-1.7B-hf"
NUM_SAMPLES = 2
processor = AutoProcessor.from_pretrained(model_id)
model = Qwen3ASRForConditionalGeneration.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()Penyelarasan paksa (penandaan waktu tingkat kata)
Gunakan Qwen3ASRForTokenClassification untuk mendapatkan timestamp tingkat kata dari transkrip. Pertama, lakukan transkripsi dengan model ASR, kemudian lakukan perataan dengan forced aligner.
Bahasa-bahasa berikut didukung: Mandarin (zh), Inggris (en), Kanton (yue), Prancis (fr), Jerman (de), Italia (it), Jepang (ja), Korea (ko), Portugis (pt), Rusia (ru), Spanyol (es).
Bahasa Jepang memerlukan pustaka nagisa, sedangkan bahasa Korea memerlukan pustaka soynlp:
pip install nagisa soynlpDengan Qwen3 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
...
"""Dengan model ASR lain
Forced aligner bersifat model-agnostic, artinya transkrip dari sistem ASR apa pun dapat digunakan. Di bawah ini adalah contoh inferensi batch menggunakan NVIDIA Parakeet CTC untuk transkripsi.
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
Model ASR dan forced aligner sama-sama mendukung torch.compile untuk inferensi yang lebih cepat. Forced aligner sangat cocok untuk kompilasi karena hanya menjalankan satu forward pass (tanpa decoding autoregresif). Hal ini menjadikannya ideal untuk penandaan waktu audio dalam jumlah besar: transkripsi dengan model ASR apa pun, lalu lakukan batch-align menggunakan forced aligner yang telah dikompilasi untuk throughput maksimal.
Aligner paksa
Pada A100, kami mengamati percepatan sekitar 1,2 untuk ukuran batch 4 (script).
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)Model ASR (generate)
Untuk transkripsi autoregresif, torch.compile mempercepat langkah maju per token di dalam generate dengan menyediakan objek CompileConfig.
Pada A100, kami mengamati percepatan sekitar 3,8 untuk ukuran batch 4 (script).
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}")Penggunaan 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
kelas 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 )
Parameter
- audio_config (Union[dict, ~configuration_utils.PreTrainedConfig], opsional) — Objek config atau dictionary dari audio backbone.
- text_config (Union[dict, ~configuration_utils.PreTrainedConfig], opsional) — Objek config atau dictionary dari text backbone.
- audio_token_id (int, opsional, default 151676) — ID token audio untuk mengkodekan prompt audio.
- timestamp_token_id (int, opsional, default 151705) —
Token ID dari penanda
<timestamp>dalam kosakata tokenizer. Penanda-penanda ini membatasi batas kata dalam urutan input forced-alignment. - pad_token_id (int, opsional, default 151645) — ID token yang digunakan untuk padding dalam kosakata.
- eos_token_id (Union[list[int], tuple[int, …], int], opsional, default (151643, 151645)) — Token id yang digunakan untuk end-of-stream dalam kosakata.
- initializer_range (float, opsional, default 0.02) — Standar deviasi dari truncated_normal_initializer untuk menginisialisasi semua matriks bobot.
- tie_word_embeddings (bool, opsional, default True) — Apakah akan mengikat bobot embedding sesuai dengan pemetaan tied_weights_keys dari model.
- token_classification_bias (bool, opsional, default False) — Apakah head klasifikasi token untuk forced alignment harus memiliki istilah bias.
Ini adalah kelas konfigurasi untuk menyimpan konfigurasi dari Qwen3ASRModel. Kelas ini digunakan untuk membuat instans model Qwen3 Asr berdasarkan argumen yang ditentukan, yang mendefinisikan arsitektur model. Membuat instans konfigurasi dengan nilai bawaan akan menghasilkan konfigurasi yang serupa dengan konfigurasi dari Qwen/Qwen3-ASR-1.7B-hf
Objek konfigurasi mewarisi dari [PreTrainedConfig] dan dapat digunakan untuk mengontrol keluaran model. Baca dokumentasi dari [PreTrainedConfig] untuk informasi lebih lanjut.
Contoh:
>>> 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
kelas 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 )
Parameter
- num_mel_bins (int, opsional, default 128) — Jumlah fitur mel yang digunakan per frame input. Nilai ini harus sesuai dengan nilai yang digunakan pada kelas AutoFeatureExtractor.
- encoder_layers (int, opsional, default 24) — Jumlah lapisan tersembunyi pada encoder Transformer. Akan menggunakan nilai yang sama dengan num_layers jika tidak diatur.
- encoder_attention_heads (int, opsional, default 16) — Jumlah attention head untuk setiap lapisan attention di encoder Transformer.
- encoder_ffn_dim (int, opsional, default 4096) — Dimensi lapisan “intermediate” (sering disebut feed-forward) di encoder.
- d_model (int, opsional, default 1024) — Ukuran lapisan encoder dan lapisan pooler.
- dropout (Union[float, int], opsional, default 0.0) — Rasio untuk semua lapisan dropout.
- attention_dropout (Union[float, int], opsional, default 0.0) — Rasio dropout untuk probabilitas perhatian.
- activation_function (str, opsional, default gelu) — Fungsi aktivasi non-linear (fungsi atau string) di decoder. Misalnya, “gelu”, “relu”, “silu”, dan sebagainya.
- activation_dropout (Union[float, int], opsional, default 0.0) — Rasio dropout untuk aktivasi di dalam lapisan fully connected.
- scale_embedding (bool, opsional, default False) — Apakah akan menskalakan embedding dengan membaginya oleh sqrt(d_model).
- initializer_range (float, opsional, default 0.02) — Standar deviasi dari truncated_normal_initializer untuk menginisialisasi semua matriks bobot.
- n_window (int, opsional, default 50) —
Setengah dari jumlah frame mel dalam satu chunk encoder. Setiap chunk yang diproses oleh conv stack memiliki
2 * n_windowframe mel (1 detik audio pada 16 kHz dengan hop 10 ms). - output_dim (int, opsional, default 3584) — Dimensi dari output.
- n_window_infer (int, opsional, default 800) —
Jumlah frame mel audio yang dicakup oleh setiap jendela attention. Harus merupakan kelipatan dari
n_window * 2agar jendela attention selaras dengan chunk encoder. - downsample_hidden_size (int, opsional, default 480) — Ukuran tersembunyi dari tumpukan downsampling konvolusional.
- max_position_embeddings (int, opsional, default 13) — Panjang maksimum sekuens yang mungkin digunakan dengan model ini.
Ini adalah kelas konfigurasi untuk menyimpan konfigurasi dari Qwen3ASRModel. Kelas ini digunakan untuk membuat instans model Qwen3 Asr berdasarkan argumen yang ditentukan, yang mendefinisikan arsitektur model. Membuat instans konfigurasi dengan nilai bawaan akan menghasilkan konfigurasi yang serupa dengan konfigurasi dari Qwen/Qwen3-ASR-1.7B-hf
Objek konfigurasi mewarisi dari [PreTrainedConfig] dan dapat digunakan untuk mengontrol keluaran model. Baca dokumentasi dari [PreTrainedConfig] untuk informasi lebih lanjut.
Qwen3ASRFeatureExtractor
kelas 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 )
Parameter
- feature_size (int, opsional, default 128) — Jumlah mel filter banks.
- sampling_rate (int, opsional, default 16000) — Laju sampling audio dalam Hz.
- hop_length (int, opsional, default 160) — Panjang jendela yang tumpang tindih untuk STFT yang digunakan untuk memperoleh koefisien Frekuensi Mel.
- chunk_length (int, opsional, default 30) —
Panjang audio maksimum (dalam detik) yang digunakan untuk memotong/menambah padding saat
padding="max_length". - n_fft (int, opsional, default 400) — Ukuran transformasi Fourier.
- padding_value (float, opsional, default 0.0) — Nilai padding yang digunakan untuk mengisi audio mentah.
- dither (float, opsional, default 0.0) — Jika tidak nol, menambahkan noise Gaussian (std = dither) ke setiap frame STFT.
- return_attention_mask (bool, opsional, default True) — Apakah akan mengembalikan attention mask yang sesuai dengan bingkai mel yang di-pad.
- n_window (int, opsional, default 50) —
Setengah ukuran chunk mel-frame yang digunakan untuk padding. Sumbu waktu log-mel di-pad ke kanan hingga menjadi kelipatan dari
2 * n_window. - min_length (int, opsional, default 8000) — Jumlah sampel minimum untuk setiap klip audio. Klip yang lebih pendek dari nilai ini akan di-*zero-pad*, sesuai dengan perilaku asli pustaka Qwen3-ASR.
Membangun feature extractor Qwen3 ASR.
Mengekstrak fitur log-mel 128-bin dari ucapan mentah, kemudian melakukan right-padding pada sumbu waktu mel menjadi kelipatan dari 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 )
Parameter
- raw_speech (np.ndarray, list[float], list[np.ndarray], list[list[float]]) — Urutan atau batch dari urutan yang akan di-pad. Hanya audio mono-channel.
- pad_to_multiple_of (int, optional) —
Jika diset, audio mentah akan di-*pad* menjadi kelipatan dari nilai ini (dalam sampel). Hal ini terpisah dari
n_window, yang diterapkan pada sumbu *mel-frame*. - n_window (int, opsional) —
Timpa
n_windowdari instance untuk panggilan ini. Sumbu mel akan di-*pad* menjadi kelipatan dari2 * n_window. Atur ke0untuk sepenuhnya melewati *padding* pada sumbu mel. - device (str, opsional, default “cpu”) — Perangkat yang digunakan untuk menghitung log-mel spectrogram.
Siapkan fitur log-mel dari satu atau beberapa urutan audio.
Qwen3ASRProcessor
kelas transformers.Qwen3ASRProcessor
< source >( feature_extractor = Nonetokenizer = Nonechat_template = Nonetimestamp_segment_time: float = 80 )
Parameter
- feature_extractor (
Qwen3ASRFeatureExtractor) — Feature extractor adalah input yang wajib diisi. - tokenizer (
Qwen2Tokenizer) — Tokenizer adalah input yang wajib. - chat_template (
str) — Template Jinja untuk mengubah daftar pesan dalam chat menjadi string yang dapat ditokenisasi. - timestamp_segment_time (
float, opsional) — Milidetik per kelas timestamp. Defaultnya 80 ms.
Membangun Qwen3ASRProcessor yang membungkus feature extractor dan tokenizer menjadi satu processor.
Qwen3ASRProcessor menyediakan semua fungsionalitas dari Qwen3ASRFeatureExtractor dan Qwen2Tokenizer. Lihat ~Qwen3ASRFeatureExtractor dan ~Qwen2Tokenizer untuk informasi lebih lanjut.
__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
Parameter
- text (
Union[str, list[str]]) — Urutan atau batch dari urutan yang akan dienkod. Setiap urutan dapat berupa string atau daftar string (string yang sudah dipretokenisasi). Jika Anda memasukkan input yang sudah dipretokenisasi, aturis_split_into_words=Trueuntuk menghindari ambiguitas dengan input yang di-batch. - audio (
Union[numpy.ndarray, torch.Tensor, collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence[torch.Tensor]]) — Audio atau batch audio yang akan disiapkan. Setiap audio dapat berupa array NumPy atau tensor PyTorch. Jika berupa array NumPy/tensor PyTorch, setiap audio harus memiliki bentuk (C, T), di mana C adalah jumlah channel, dan T adalah panjang sampel dari audio tersebut. - output_labels (
bool, opsional, default=False) — Apakah akan mengembalikan label untuk pelatihan. - return_tensors (
stratau TensorType, opsional) — Jika diset, akan mengembalikan tensor dari framework tertentu. Nilai yang dapat diterima adalah:'pt': Mengembalikan objek PyTorchtorch.Tensor.'np': Mengembalikan objek NumPynp.ndarray.
- **kwargs (ProcessingKwargs, opsional) — Opsi pemrosesan tambahan untuk setiap modalitas (teks, gambar, video, audio). Parameter spesifik model tercantum di atas; lihat kelas TypedDict untuk daftar lengkap argumen yang didukung.
Mengembalikan
Kamus dengan teks yang ditokenisasi (input_ids, attention_mask) dan
fitur audio (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 = Nonetranscription: str | list[str] | None = Nonetokenize: bool = True**kwargs: *<class 'transformers.models.qwen3_asr.processing_qwen3_asr.Qwen3ASRProcessorKwargs'> ) → [BatchFeature] or list[str]
Parameter
- audio (AudioInput atau list[AudioInput]) — Audio yang akan ditranskripsi. Bisa berupa string URL, path lokal, array numpy, atau daftar dari salah satu dari tersebut.
- language (str atau list[str], opsional) —
Bahasa yang akan dipaksakan untuk transkripsi. Menerima nama lengkap
(mis.
"English","Chinese") atau kode ISO (mis."en","zh"). Daftar harus memiliki panjang yang sama dengan batch audio. Sesuai dengan implementasi asli, bahasa dipaksakan dengan menambahkanlanguage <NAME><asr_text>setelah prompt generasi, sehingga model hanya menghasilkan teks transkripsi. KetikaNone, model melakukan deteksi bahasa otomatis dan menghasilkanlanguage <NAME><asr_text>...secara mandiri. - prompt (str atau list[str], opsional) — Konteks/hotwords yang akan disertakan sebagai system prompt, misalnya kata atau frasa spesifik domain untuk mengarahkan transkripsi. Daftar harus memiliki panjang yang sama dengan batch audio. Ketika None, system prompt dibiarkan kosong.
- transcription (str atau list[str], opsional) —
Transkrip target untuk pelatihan, satu per audio. Jika diberikan, setiap transkrip ditulis sebagai giliran asisten dan labels dikembalikan (lihat output_labels di [~Qwen3ASRProcessor.call]).
Dengan language, transkrip diberi awalan
language <NAME><asr_text>untuk mencocokkan format output model. Tanpa itu, transkrip ditulis apa adanya, sehingga seharusnya sudah dalam format tersebut untuk mempertahankan perilaku pra-pelatihan. - tokenize (bool, opsional, default True) — Apakah akan melakukan tokenisasi pada prompt dan memproses audio. Jika False, audio tidak dimuat dan prompt dikembalikan sebagai string dengan placeholder audio yang belum diperluas. Melewatkan prompt tersebut bersama audio ke processor, processor(text=prompts, audio=audio), menghasilkan output yang sama dengan tokenize=True.
- **kwargs — Argumen kata kunci tambahan yang diteruskan ke [~Qwen3ASRProcessor.apply_chat_template]. Kwargs prosesor (misalnya text_kwargs, audio_kwargs, …) harus diteruskan sebagai processor_kwargs={…}.
Mengembalikan
[BatchFeature] atau list[str]
Satu prompt per audio saat tokenize=False, selain itu processor menghasilkan output yang siap diteruskan ke [Qwen3ASRForConditionalGeneration.generate], atau ke [Qwen3ASRForConditionalGeneration.forward] untuk menghitung loss saat transcription diberikan.
Siapkan input untuk pengenalan ucapan otomatis tanpa menulis template chat secara manual, baik untuk inferensi maupun, ketika transcription diberikan, untuk pelatihan.
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]]]
Parameter
- audio (AudioInput) — Audio input(s). Accepts paths, URLs, numpy arrays, or a list of these.
- transcript (str atau list[str]) — Transkrip yang akan diselaraskan dengan audio.
- language (str, list[str], atau None, opsional) — Petunjuk bahasa. Saat ini tidak digunakan dalam tokenisasi, tetapi dicadangkan untuk tokenizer yang spesifik bahasa (misalnya Jepang, Korea).
- **kwargs — Argumen kata kunci tambahan yang diteruskan ke [~Qwen3ASRProcessor.apply_chat_template].
Mengembalikan
tuple[BatchFeature, list[list[str]]]
inputs: Sebuah [BatchFeature] denganinput_ids,attention_mask,input_features, daninput_features_maskyang siap untuk model forced aligner.word_lists: Daftar (satu per sampel) dari daftar token tingkat kata yang digunakan untuk membangun input. Sampaikan ini ke [~Qwen3ASRProcessor.decode_forced_alignment] untuk memasangkan timestamp dengan kata-kata.
Siapkan input untuk model forced aligner.
decode_forced_alignment
< source >( logitsinput_idsword_lists: listtimestamp_token_id: inttimestamp_segment_time: float | None = None ) → list[list[dict]]
Parameter
- logits (torch.Tensor dengan bentuk (batch_size, seq_len, num_labels)) — Logits klasifikasi dari [Qwen3ASRForTokenClassification].
- input_ids (torch.LongTensor dengan bentuk (batch_size, seq_len)) — ID token input yang digunakan untuk forward pass.
- word_lists (list[list[str]]) — Daftar token tingkat kata seperti yang dikembalikan oleh [~Qwen3ASRProcessor.prepare_forced_aligner_inputs].
- timestamp_token_id (int) —
Token ID dari penanda
<timestamp>(darimodel.config.timestamp_token_id). - timestamp_segment_time (float, opsional) — Milidetik per kelas timestamp. Jika tidak disediakan, menggunakan self.timestamp_segment_time.
Mengembalikan
list[list[dict]]
Satu daftar per sampel. Setiap daftar dalam berisi dict dengan kunci "text" (str), "start_time" (float, detik), dan "end_time" (float, detik).
Decode keluaran model forced aligner menjadi timestamp tingkat kata.
decode
< source >( *argsreturn_format = 'raw'**kwargs )
Parameter
- return_format (str, opsional, default ke “raw”) —
Opsi:
"raw": Kembalikan string hasil decoding mentah dari tokenizer."parsed": Mengembalikan dict (atau list of dicts) dengan kunci"language"dan"transcription"."transcription_only": Ekstrak hanya teks transkripsi (setelah<asr_text>).
skip_special_tokensditetapkan secara tetap keTrueuntuk"parsed"dan"transcription_only".
Teruskan argumen ke decode tokenizer dan secara opsional parse output ASR.
Qwen3 ASR menghasilkan transkripsi dalam format: language <LANG><asr_text>transcribed text
Qwen3ASREncoder
kelas transformers.Qwen3ASREncoder
< source >( config: Qwen3ASREncoderConfig )
Parameter
- config (Qwen3ASREncoderConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
Model audio untuk Qwen3 ASR tanpa head atau proyeksi di atasnya.
Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)
Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.
forward
< source >( input_features: Tensorinput_features_mask: Tensor**kwargs ) → BaseModelOutputWithPooling or tuple(torch.Tensor)
Parameter
- input_features (
torch.Tensordengan bentuk(batch_size, sequence_length, feature_dim)) — Tensor yang sesuai dengan fitur audio input. Fitur audio dapat diperoleh menggunakan Qwen3ASRFeatureExtractor. Lihat Qwen3ASRFeatureExtractor.call() untuk detailnya (Qwen3ASRProcessor menggunakan Qwen3ASRFeatureExtractor untuk memproses audio). - input_features_mask (
torch.LongTensordengan bentuk(batch_size, padded_feature_length)) — 1 untuk frame mel yang valid dan 0 untuk padding.
Mengembalikan
BaseModelOutputWithPooling atau tuple(torch.Tensor)
A BaseModelOutputWithPooling atau tuple dari
torch.Tensor (jika return_dict=False dilewatkan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (Qwen3ASRConfig) dan input.
Metode forward dari Qwen3ASREncoder menimpa metode khusus __call__.
Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance
Modulesetelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.
last_hidden_state (
torch.Tensordengan bentuk(batch_size, sequence_length, hidden_size)) — Urutan hidden-states pada keluaran lapisan terakhir model.pooler_output (
torch.Tensordengan bentuk(batch_size, hidden_size)) — Hidden-state lapisan terakhir dari token pertama dalam urutan (token klasifikasi) setelah diproses lebih lanjut melalui lapisan yang digunakan untuk tugas pra-pelatihan tambahan. Misalnya, untuk keluarga model BERT, ini mengembalikan token klasifikasi setelah diproses melalui lapisan linear dan fungsi aktivasi tanh. Bobot lapisan linear dilatih dari tujuan prediksi kalimat berikutnya (klasifikasi) selama pra-pelatihan.hidden_states (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.Tensor(satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk(batch_size, sequence_length, hidden_size).Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.
attentions (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.Tensor(satu untuk setiap layer) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length).Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala perhatian diri (self-attention).
Qwen3ASRModel
kelas transformers.Qwen3ASRModel
< source >( config: Qwen3ASRConfig )
Parameter
- config (Qwen3ASRConfig) — Kelas konfigurasi model yang berisi semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya saja. Lihat metode from_pretrained() untuk memuat bobot model.
Model Qwen3ASR (encoder Whisper yang telah di-*fine-tune*, proyektor multi-modal, model bahasa Qwen2), tanpa kepala pemodelan bahasa.
Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)
Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.
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'> ) → Qwen3ASRModelOutputWithPast or tuple(torch.Tensor)
Parameter
- input_ids (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Indeks token dari urutan input dalam kosakata. Padding akan diabaikan secara default.Indeks dapat diperoleh menggunakan AutoTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya.
- input_features (
torch.Tensordengan bentuk(batch_size, sequence_length, feature_dim), opsional) — Tensor yang sesuai dengan fitur audio input. Fitur audio dapat diperoleh menggunakan Qwen3ASRFeatureExtractor. Lihat Qwen3ASRFeatureExtractor.call() untuk detailnya (Qwen3ASRProcessor menggunakan Qwen3ASRFeatureExtractor untuk memproses audio). - input_features_mask (
torch.Tensordengan bentuk(batch_size, feature_sequence_length)) — Mask untuk menghindari pelaksanaan perhatian pada indeks fitur padding. - attention_mask (
torch.Tensordengan bentuk(batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding. Nilai mask dipilih dari[0, 1]:- 1 untuk token yang tidak dimasker,
- 0 untuk token yang dimasker.
- position_ids (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Indeks posisi token dari setiap urutan input dalam position embeddings. Dipilih dalam rentang[0, config.n_positions - 1]. - past_key_values (
~cache_utils.Cache, opsional) — Hidden-states yang sudah dihitung sebelumnya (key dan values di blok self-attention dan di blok cross-attention) yang dapat digunakan untuk mempercepat decoding berurutan. Ini biasanya terdiri daripast_key_valuesyang dikembalikan oleh model pada tahap decoding sebelumnya, ketikause_cache=Trueatauconfig.use_cache=True.Hanya instance Cache yang diizinkan sebagai input, lihat panduan kv cache kami. Jika tidak ada
past_key_valuesyang diteruskan, DynamicCache akan diinisialisasi secara default.Model akan menghasilkan format cache yang sama dengan yang diberikan sebagai input.
Jika
past_key_valuesdigunakan, pengguna diharapkan hanya memasukkaninput_idsyang belum diproses (yang tidak memiliki state past key value yang diberikan ke model ini) dengan bentuk(batch_size, unprocessed_length)alih-alih semuainput_idsdengan bentuk(batch_size, sequence_length). - inputs_embeds (
torch.Tensordengan bentuk(batch_size, sequence_length, hidden_size), opsional) — Secara opsional, alih-alih meneruskaninput_ids, Anda dapat memilih untuk langsung meneruskan representasi tertanam. Hal ini berguna jika Anda ingin memiliki kendali lebih atas cara mengonversi indeksinput_idsmenjadi vektor terkait, dibandingkan dengan matriks pencarian penanaman internal model. - use_cache (
bool, opsional) — Jika diset keTrue, state kunci-nilaipast_key_valuesakan dikembalikan dan dapat digunakan untuk mempercepat decoding (lihatpast_key_values).
Mengembalikan
Qwen3ASRModelOutputWithPast atau tuple(torch.Tensor)
Qwen3ASRModelOutputWithPast atau tuple dari
torch.Tensor (jika return_dict=False dilewatkan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (Qwen3ASRConfig) dan input.
Metode forward dari Qwen3ASRModel menimpa metode khusus __call__.
Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance
Modulesetelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.
- audio_hidden_states (
torch.Tensor, opsional) — Hidden states audio yang diproyeksikan.
get_audio_features
< source >( input_features: Tensorinput_features_mask: LongTensor**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPooling or tuple(torch.Tensor)
Parameter
- input_features (
torch.Tensordengan bentuk(batch_size, sequence_length, feature_dim)) — Tensor yang sesuai dengan fitur audio input. Fitur audio dapat diperoleh menggunakan Qwen3ASRFeatureExtractor. Lihat Qwen3ASRFeatureExtractor.call() untuk detailnya (Qwen3ASRProcessor menggunakan Qwen3ASRFeatureExtractor untuk memproses audio). - input_features_mask (
torch.LongTensordengan bentuk(batch_size, padded_feature_length)) — 1 untuk frame mel yang valid dan 0 untuk padding.
Mengembalikan
BaseModelOutputWithPooling atau tuple(torch.Tensor)
A BaseModelOutputWithPooling atau tuple dari
torch.Tensor (jika return_dict=False dilewatkan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (Qwen3ASRConfig) dan input.
Metode ini digunakan untuk mendapatkan embedding audio dari fitur input (spektrogram log mel).
last_hidden_state (
torch.Tensordengan bentuk(batch_size, sequence_length, hidden_size)) — Urutan hidden-states pada keluaran lapisan terakhir model.pooler_output (
torch.Tensordengan bentuk(batch_size, hidden_size)) — Hidden-state lapisan terakhir dari token pertama dalam urutan (token klasifikasi) setelah diproses lebih lanjut melalui lapisan yang digunakan untuk tugas pra-pelatihan tambahan. Misalnya, untuk keluarga model BERT, ini mengembalikan token klasifikasi setelah diproses melalui lapisan linear dan fungsi aktivasi tanh. Bobot lapisan linear dilatih dari tujuan prediksi kalimat berikutnya (klasifikasi) selama pra-pelatihan.hidden_states (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.Tensor(satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk(batch_size, sequence_length, hidden_size).Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.
attentions (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.Tensor(satu untuk setiap layer) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length).Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala perhatian diri (self-attention).
get_placeholder_mask
< source >( input_ids: LongTensorinputs_embeds: Tensoraudio_features: Tensor )
Mengambil mask placeholder multimodal dari input_ids atau inputs_embeds, dan memeriksa bahwa jumlah token placeholder sama dengan panjang fitur multimodal. Jika panjangnya berbeda, error akan dilempar.
Qwen3ASRForConditionalGeneration
kelas transformers.Qwen3ASRForConditionalGeneration
< source >( config: Qwen3ASRConfig )
Parameter
- config (Qwen3ASRConfig) — Kelas konfigurasi model yang berisi semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya saja. Lihat metode from_pretrained() untuk memuat bobot model.
Model Qwen3ASR yang terdiri dari encoder audio dan model bahasa.
Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)
Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.
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'> ) → Qwen3ASRCausalLMOutputWithPast or tuple(torch.Tensor)
Parameter
- input_ids (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Indeks token dari urutan input dalam kosakata. Padding akan diabaikan secara default.Indeks dapat diperoleh menggunakan AutoTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya.
- input_features (
torch.Tensordengan bentuk(batch_size, sequence_length, feature_dim), opsional) — Tensor yang sesuai dengan fitur audio input. Fitur audio dapat diperoleh menggunakan Qwen3ASRFeatureExtractor. Lihat Qwen3ASRFeatureExtractor.call() untuk detailnya (Qwen3ASRProcessor menggunakan Qwen3ASRFeatureExtractor untuk memproses audio). - input_features_mask (
torch.Tensordengan bentuk(batch_size, feature_sequence_length)) — Mask untuk menghindari pelaksanaan perhatian pada indeks fitur padding. - attention_mask (
torch.Tensordengan bentuk(batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding. Nilai mask dipilih dari[0, 1]:- 1 untuk token yang tidak dimasker,
- 0 untuk token yang dimasker.
- position_ids (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Indeks posisi token dari setiap urutan input dalam position embeddings. Dipilih dalam rentang[0, config.n_positions - 1]. - past_key_values (
~cache_utils.Cache, opsional) — Hidden-states yang sudah dihitung sebelumnya (key dan values di blok self-attention dan di blok cross-attention) yang dapat digunakan untuk mempercepat decoding berurutan. Ini biasanya terdiri daripast_key_valuesyang dikembalikan oleh model pada tahap decoding sebelumnya, ketikause_cache=Trueatauconfig.use_cache=True.Hanya instance Cache yang diizinkan sebagai input, lihat panduan kv cache kami. Jika tidak ada
past_key_valuesyang diteruskan, DynamicCache akan diinisialisasi secara default.Model akan menghasilkan format cache yang sama dengan yang diberikan sebagai input.
Jika
past_key_valuesdigunakan, pengguna diharapkan hanya memasukkaninput_idsyang belum diproses (yang tidak memiliki state past key value yang diberikan ke model ini) dengan bentuk(batch_size, unprocessed_length)alih-alih semuainput_idsdengan bentuk(batch_size, sequence_length). - inputs_embeds (
torch.Tensordengan bentuk(batch_size, sequence_length, hidden_size), opsional) — Secara opsional, alih-alih meneruskaninput_ids, Anda dapat memilih untuk langsung meneruskan representasi tertanam. Hal ini berguna jika Anda ingin memiliki kendali lebih atas cara mengonversi indeksinput_idsmenjadi vektor terkait, dibandingkan dengan matriks pencarian penanaman internal model. - labels (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Label untuk menghitung kerugian pemodelan bahasa yang disamarkan (masked language modeling loss). - use_cache (
bool, opsional) — Jika diset keTrue, state kunci-nilaipast_key_valuesakan dikembalikan dan dapat digunakan untuk mempercepat decoding (lihatpast_key_values). - logits_to_keep (
Union[int, torch.Tensor], opsional, default0) — Jika berupaint, hitung logits untuklogits_to_keeptoken terakhir. Jika0, hitung logits untuk semuainput_ids(kasus khusus). Hanya logits token terakhir yang diperlukan untuk generasi, dan menghitungnya hanya untuk token tersebut dapat menghemat memori, yang menjadi cukup signifikan untuk urutan panjang atau ukuran kosakata besar. Jika berupatorch.Tensor, harus 1D yang sesuai dengan indeks yang akan dipertahankan pada dimensi panjang urutan. Ini berguna saat menggunakan format tensor terpadu (satu dimensi untuk batch dan panjang urutan).
Mengembalikan
Qwen3ASRCausalLMOutputWithPast atau tuple(torch.Tensor)
Qwen3ASRCausalLMOutputWithPast atau tuple dari
torch.Tensor (jika return_dict=False diteruskan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (Qwen3ASRConfig) dan input.
Metode forward dari Qwen3ASRForConditionalGeneration menimpa metode khusus __call__.
Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance
Modulesetelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.
loss (
torch.Tensordengan bentuk(1,), opsional, dikembalikan saatlabelsdisediakan) — Loss pemodelan bahasa (untuk prediksi token berikutnya).logits (
torch.Tensordengan bentuk(batch_size, sequence_length, config.vocab_size)) — Skor prediksi dari kepala pemodelan bahasa.past_key_values (
Cache, opsional, dikembalikan ketikause_cache=Truedilewatkan atau ketikaconfig.use_cache=True) — Ini adalah instance Cache.hidden_states (
tuple[torch.Tensor], opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.Tensor(satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk(batch_size, sequence_length, hidden_size).Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.
attentions (
tuple[torch.Tensor], opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.Tensor(satu untuk setiap layer) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length).Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala perhatian diri (self-attention).
audio_hidden_states (
torch.Tensor, opsional) — Hidden states dari encoder audio setelah proyeksi.
Qwen3ASRForTokenClassification
kelas transformers.Qwen3ASRForTokenClassification
< source >( config )
Parameter
- config ([
[``GenericForTokenClassification``]]) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
Model Qwen3 ASR dengan kepala klasifikasi token untuk prediksi timestamp (penyelarasan paksa).
Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)
Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.
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.Tensor | None = Nonelabels: torch.LongTensor | None = Noneuse_cache: bool | None = None**kwargs: Unpack[TransformersKwargs] ) → TokenClassifierOutput
Parameter
- input_ids (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Indeks token dari urutan input dalam kosakata. Padding akan diabaikan secara default.Indeks dapat diperoleh menggunakan AutoTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya.
- attention_mask (
torch.Tensordengan bentuk(batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding. Nilai mask dipilih dari[0, 1]:- 1 untuk token yang tidak dimasker,
- 0 untuk token yang dimasker.
- position_ids (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Indeks posisi token dari setiap urutan input dalam position embeddings. Dipilih dalam rentang[0, config.n_positions - 1]. - past_key_values (
Cache, opsional) — Hidden-states yang telah dihitung sebelumnya (key dan values di blok self-attention dan di blok cross-attention) yang dapat digunakan untuk mempercepat decoding berurutan. Ini biasanya terdiri daripast_key_valuesyang dikembalikan oleh model pada tahap decoding sebelumnya, ketikause_cache=Trueatauconfig.use_cache=True.Hanya instance Cache yang diizinkan sebagai input, lihat panduan kv cache kami. Jika tidak ada
past_key_valuesyang diteruskan, DynamicCache akan diinisialisasi secara default.Model akan menghasilkan format cache yang sama dengan yang diberikan sebagai input.
Jika
past_key_valuesdigunakan, pengguna diharapkan hanya memasukkaninput_idsyang belum diproses (yang tidak memiliki state past key value yang diberikan ke model ini) dengan bentuk(batch_size, unprocessed_length)alih-alih semuainput_idsdengan bentuk(batch_size, sequence_length). - inputs_embeds (
torch.Tensordengan bentuk(batch_size, sequence_length, hidden_size), opsional) — Secara opsional, alih-alih meneruskaninput_ids, Anda dapat memilih untuk langsung meneruskan representasi tertanam. Hal ini berguna jika Anda ingin memiliki kendali lebih atas cara mengonversi indeksinput_idsmenjadi vektor terkait, dibandingkan dengan matriks pencarian penanaman internal model. - labels (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Label untuk menghitung kerugian klasifikasi token. Indeks harus berada dalam[0, ..., config.num_labels - 1]. - use_cache (
bool, opsional) — Jika diset keTrue, state kunci-nilaipast_key_valuesakan dikembalikan dan dapat digunakan untuk mempercepat decoding (lihatpast_key_values).
Mengembalikan
TokenClassifierOutput
Metode forward GenericForTokenClassification menimpa metode khusus __call__.
Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance
Modulesetelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.