Transformers documentation
Qwen3 ASR
نُشر هذا النموذج في أوراق HF في 29 يناير 2026، وسُهم به إلى Hugging Face Transformers في 26 يونيو 2026.
Qwen3 ASR
نظرة عامة
نموذج Qwen3 ASR هو نموذج للتعرف التلقائي على الكلام من فريق Qwen التابع لشركة Alibaba، يجمع بين مُشفِّر صوتي بنمط Whisper ومُفكِّك نموذج لغة Qwen3 لتحويل الكلام إلى نص. يدعم النموذج الكشف التلقائي عن اللغة والنسخ متعدد اللغات.
يتضمن النموذج أيضًا نموذج محاذاة إجبارية. يمكن استخدامه لتوقيت نص محدد مسبقًا مع ملفه الصوتي المقابل. يعتمد هذا النموذج على نفس نموذج ترميز الصوت مع رأس تصنيف يتنبأ بطول الكلمة. يمكن استخدام هذا النموذج مع النص الناتج عن أي نموذج لتعرف الكلام الآلي (انظر المثال أدناه باستخدام 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 والتقرير لمزيد من التفاصيل.
تمت مساهمة هذا النموذج من قِبَل إريك بيزام ومحمد طارق.
الاستخدام
نسخة بسيطة
أبسط طريقة لتحويل الصوت إلى نص هي استخدام apply_transcription_request، حيث يتولى تنسيق قالب المحادثة نيابةً عنك، فهو في الواقع غلاف ميسّر لـ apply_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])الاستدلال الدُفعي
يمكن إجراء الاستدلال الدُفعي (Batch inference) عن طريق تمرير قائمة من المقاطع الصوتية، وقائمة من اللغات و/أو التلميحات (prompts) إذا تم توفيرها.
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)التدريب
مرّر النصوص المستهدفة إلى apply_transcription_request مع transcription للحصول على labels المستخدمة لحساب الخسارة.
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()المحاذاة الإجبارية (الطوابع الزمنية على مستوى الكلمة)
استخدم Qwen3ASRForTokenClassification للحصول على طوابع زمنية على مستوى الكلمة من النص. ابدأ بتحويل الكلام إلى نص باستخدام نموذج ASR، ثم قم بمواءمة النص مع المحاذاة الإجبارية.
اللغات المدعومة هي: الصينية (zh)، الإنجليزية (en)، الكانتونية (yue)، الفرنسية (fr)، الألمانية (de)، الإيطالية (it)، اليابانية (ja)، الكورية (ko)، البرتغالية (pt)، الروسية (ru)، الإسبانية (es).
يتطلب اليابانية مكتبة nagisa، بينما تتطلب الكورية مكتبة soynlp:
pip install nagisa soynlpمع 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
...
"""مع نموذج 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 ونموذج المحاذاة القسرية torch.compile للحصول على استنتاج أسرع. يُعد نموذج المحاذاة القسرية مناسباً بشكل خاص للتجميع لأنه ينفّذ تمريرة أمامية واحدة (بدون فك تشفير ذاتي التوليد). وهذا يجعله مثالياً لـتوقيت الصوتيات على نطاق واسع: قم بالنسخ النصي باستخدام أي نموذج ASR، ثم قم بالمحاذاة الدفعية باستخدام نموذج المحاذاة القسرية المُجمَّع لتحقيق أقصى معدل إنتاجية.
محاذاة إجبارية
على بطاقة A100، لاحظنا تسريعًا بنسبة ~1.2 لحجم دفعة يساوي 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)نموذج ASR (توليد)
في حالة النسخ التلقائي (autoregressive transcription)، يُسرّع torch.compile عمليات المرور الأمامي لكل رمز داخل إعداد generate عند توفير كائن CompileConfig.
على بطاقة A100، لاحظنا تسريعًا بنسبة ~3.8 لحجم دفعة يساوي 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}")استخدام خط الأنابيب
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]، اختياري) — كائن الإعداد أو قاموس العمود الفقري الصوتي.
- text_config (Union[dict, ~configuration_utils.PreTrainedConfig]، اختياري) — كائن الإعداد أو قاموس العمود الفقري النصي.
- audio_token_id (int، اختياري، القيمة الافتراضية 151676) — معرّف رمز الصوت المستخدم لتشفير موجه الصوت.
- timestamp_token_id (int, optional, الافتراضي 151705) —
معرّف الرمز (Token ID) لعلامة
<timestamp>في مفردات مُجزّئ الرموز (tokenizer). تُحدّد هذه العلامات حدود الكلمات في تسلسل الإدخال الخاص بالمحاذاة الإجبارية (forced-alignment). - pad_token_id (int، اختياري، القيمة الافتراضية 151645) — معرّف الرمز المستخدم للتعبئة في المفردات.
- eos_token_id (Union[list[int], tuple[int, …], int]، اختياري، القيمة الافتراضية (151643, 151645)) — معرّف الرمز المستخدم لنهاية البث في المفردات.
- initializer_range (float، اختياري، القيمة الافتراضية 0.02) — الانحراف المعياري لـ truncated_normal_initializer المستخدم في تهيئة جميع مصفوفات الأوزان.
- tie_word_embeddings (bool، اختياري، القيمة الافتراضية True) — ما إذا كان سيتم ربط ترميزات الأوزان وفقاً لخريطة tied_weights_keys الخاصة بالنموذج.
- token_classification_bias (bool، اختياري، القيمة الافتراضية False) — ما إذا كان يجب أن يحتوي رأس تصنيف الرموز للمحاذاة القسرية على حدّ (bias).
هذه فئة الإعدادات المخزنة لإعدادات نموذج Qwen3ASRModel. تُستخدم لاستحداث نموذج Qwen3 Asr وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيُنتج إعدادات مشابهة لتلك الخاصة بـ Qwen/Qwen3-ASR-1.7B-hf
ترث كائنات الإعداد من [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
فئة 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، اختياري، القيمة الافتراضية 16) — عدد رؤوس الانتباه لكل طبقة انتباه في مُشفِّر Transformer.
- encoder_ffn_dim (int، اختياري، القيمة الافتراضية 4096) — البُعد (Dimensionality) للطبقة «الوسيطة» (التي تُسمّى غالباً بطبقة التغذية الأمامية) داخل المُشفِّر (encoder).
- d_model (int، اختياري، القيمة الافتراضية 1024) — حجم طبقات المُشفِّر وطبقة المُجمِّع.
- dropout (Union[float, int]، اختياري، القيمة الافتراضية 0.0) — النسبة لجميع طبقات dropout.
- attention_dropout (Union[float, int]، اختياري، القيمة الافتراضية 0.0) — نسبة الإسقاط (dropout) لاحتمالات الانتباه.
- activation_function (str، اختياري، القيمة الافتراضية gelu) — دالة التنشيط غير الخطية (دالة أو نص) في المُفكِّك. على سبيل المثال، “gelu”، “relu”، “silu”، وغيرها.
- activation_dropout (Union[float, int]، اختياري، القيمة الافتراضية 0.0) — نسبة dropout للتفعيلات داخل الطبقة المتصلة بالكامل.
- scale_embedding (bool، اختياري، القيمة الافتراضية False) — ما إذا كان سيتم توسيع التضمينات من خلال القسمة على sqrt(d_model).
- initializer_range (float، اختياري، القيمة الافتراضية 0.02) — الانحراف المعياري لـ truncated_normal_initializer المستخدم في تهيئة جميع مصفوفات الأوزان.
- n_window (int، اختياري، القيمة الافتراضية 50) —
نصف عدد إطارات mel في كتلة مشفّرة واحدة. كل كتلة يعالجها مكدس التحويلات التلافيفية تحتوي على
2 * n_windowإطار mel (ثانية واحدة من الصوت بمعدل 16 كيلوهرتز مع خطوة 10 مللي ثانية). - output_dim (int، اختياري، القيمة الافتراضية 3584) — أبعاد المخرجات.
- n_window_infer (int، اختياري، القيمة الافتراضية 800) —
عدد إطارات mel من الصوت التي يمتد عليها كل نافذة انتباه. يجب أن يكون مضاعفاً لـ
n_window * 2حتى تتطابق نوافذ الانتباه مع مقاطع المُشفِّر. - downsample_hidden_size (int، اختياري، القيمة الافتراضية 480) — حجم المخفي (Hidden size) لمكدس التقليل الحجمي التلاففي (convolutional downsampling stack).
- max_position_embeddings (int، اختياري، القيمة الافتراضية 13) — أقصى طول تسلسل قد يُستخدم معه هذا النموذج على الإطلاق.
هذه فئة الإعدادات المخزنة لإعدادات نموذج Qwen3ASRModel. تُستخدم لاستحداث نموذج Qwen3 Asr وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيُنتج إعدادات مشابهة لتلك الخاصة بـ Qwen/Qwen3-ASR-1.7B-hf
ترث كائنات الإعداد من [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) — معدل أخذ العينات للصوت بالهرتز.
- hop_length (int، اختياري، القيمة الافتراضية 160) — طول النوافذ المتداخلة المستخدمة في تحويل فورييه الزمني القصير (STFT) للحصول على معاملات ترددات ميل.
- chunk_length (int، اختياري، القيمة الافتراضية 30) —
الحد الأقصى لطول الصوت (بالثواني) المستخدم لقص/تعبئة الصوت عند
padding="max_length". - n_fft (int، اختياري، القيمة الافتراضية 400) — حجم تحويل فورييه.
- padding_value (float، اختياري، القيمة الافتراضية 0.0) — قيمة الحشو المستخدمة لحشو الصوت الخام.
- dither (float، اختياري، القيمة الافتراضية 0.0) — إذا كانت القيمة غير صفرية، يضيف ضوضاء غاوسية (std = dither) إلى كل إطار STFT.
- return_attention_mask (bool، اختياري، القيمة الافتراضية True) — ما إذا كان يجب إرجاع قناع الانتباه (attention mask) المقابل لإطارات الميّل (mel) المُكمّلة.
- n_window (int، اختياري، القيمة الافتراضية 50) —
نصف حجم مقطع إطار الميّل (mel-frame) المستخدم للتوسيد. يتم توسيد محور الزمن في الميّل اللوغاريتمي (log-mel) من الجهة اليمنى إلى مضاعف لـ
2 * n_window. - min_length (int، اختياري، القيمة الافتراضية 8000) — الحد الأدنى لعدد العينات لكل مقطع صوتي. تُملأ المقاطع الأقصر من هذا الحد بأصفار، بما يتوافق مع سلوك مكتبة Qwen3-ASR الأصلية.
ينشئ مستخرج ميزات Qwen3 ASR.
يستخرج 128 ميزة لوج-ميل من الكلام الخام، ثم يملأ محور الزمن في الميزات من الجهة اليمنى حتى يصبح مضاعفاً لـ 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، اختياري) —
إذا تم تعيينه، يُضيف حشوة إلى الصوت الخام حتى يصبح مضاعفاً لهذه القيمة (بوحدة العينات). وهو منفصل عن
n_window، الذي يُطبَّق على محور إطار الميِل. - n_window (int، اختياري) —
تجاوز قيمة
n_windowالخاصة بالكيان في هذا الاستدعاء. يتم توسيع محور mel ليصبح مضاعفاً لـ2 * n_window. اضبطه على0لتخطي توسيع محور mel بالكامل. - device (str، اختياري، الافتراضي “cpu”) — الجهاز المستخدم لحساب طيف اللوغ-ميل.
جهّز ميزات log-mel من تسلسل صوتي واحد أو عدة تسلسلات.
Qwen3ASRProcessor
فئة transformers.Qwen3ASRProcessor
< source >( feature_extractor = Nonetokenizer = Nonechat_template = Nonetimestamp_segment_time: float = 80 )
المعاملات
- feature_extractor (
Qwen3ASRFeatureExtractor) — مستخرج الميزات هو مدخل إلزامي. - tokenizer (
Qwen2Tokenizer) — المُجزِّئ مدخل إلزامي. - chat_template (
str) — قالب Jinja لتحويل قوائم الرسائل في المحادثة إلى نص قابل للتجزئة. - timestamp_segment_time (
float، اختياري) — عدد الميلي ثانية لكل فئة من فئات الطوابع الزمنية. القيمة الافتراضية هي 80 مللي ثانية.
ينشئ Qwen3ASRProcessor الذي يجمع مستخرج الميزات ومجزئ الرموز في معالج واحد.
يوفر 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': إرجاع كائناتtorch.Tensorمن PyTorch.'np': إرجاع كائناتnp.ndarrayمن NumPy.
- **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 = Nonetranscription: 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]، اختياري) — سياق/كلمات ساخنة لتضمينها كـ system prompt، مثل الكلمات أو العبارات الخاصة بالمجال لتوجيه عملية النسخ نحوها. يجب أن تكون القائمة بنفس طول دفعة الصوت. عند تعيين None، يُترك system prompt فارغًا.
- transcription (str أو list[str]، اختياري) —
النص(النصوص) المستهدف(الستهداف) للنسخة المستهدفة للتدريب، نص واحد لكل ملف صوتي. عند تقديمه، يُكتب كل نص كنسخة مساعد وتُعاد labels (انظر output_labels في [~Qwen3ASRProcessor.call]).
مع language، يُضاف بادئة
language <NAME><asr_text>إلى النص المطابق لتناسب صيغة إخراج النموذج. بدون ذلك، يُكتب كما هو، لذا يجب أن يكون بالفعل في تلك الصيغة للحفاظ على السلوك المُدرَّب مسبقًا. - tokenize (bool، اختياري، القيمة الافتراضية True) — ما إذا كان سيتم ترميز الأوامر (prompts) ومعالجة الصوت. إذا كانت القيمة False، فلن يتم تحميل الصوت، وتُعاد الأوامر كنصوص تحتوي على محددات موضع (placeholders) للصوت غير مُوسَّعة. تمريرها مع الصوت إلى المعالج، processor(text=prompts, audio=audio)، يعطي نفس المخرجات كما لو كانت tokenize=True.
- **kwargs — حجج إضافية بالكلمات المفتاحية تُمرَّر إلى [~Qwen3ASRProcessor.apply_chat_template]. يجب تمرير حجج المعالج (مثل text_kwargs، audio_kwargs، …) على شكل processor_kwargs={…}.
يعيد
[BatchFeature] أو list[str]
موجّه واحد لكل ملف صوتي عندما يكون tokenize=False، وإلا فإن المعالج يُخرج مخرجات جاهزة للتقديم إلى [Qwen3ASRForConditionalGeneration.generate]، أو إلى [Qwen3ASRForConditionalGeneration.forward] لحساب الخسارة عندما يُعطى transcription.
جهّز المدخلات للتعرف التلقائي على الكلام دون كتابة قالب المحادثة يدويًا، سواء للاستدلال أو، عند تقديم النسخ، للتدريب.
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: كائن من نوع [BatchFeature] يحتوي علىinput_idsوattention_maskوinput_featuresوinput_features_mask، جاهزة لنموذج المحاذاة الإجبارية.word_lists: قائمة (قائمة لكل عينة) من قوائم الرموز على مستوى الكلمات المستخدمة لبناء المدخلات. مرر هذه إلى [~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)) — قيم التصنيف (logits) من [Qwen3ASRForTokenClassification].
- input_ids (torch.LongTensor من الشكل (batch_size, seq_len)) — معرّفات الرموز المدخلة المستخدمة في المرور الأمامي.
- word_lists (list[list[str]]) — قوائم الرموز على مستوى الكلمة كما تُعاد بواسطة [~Qwen3ASRProcessor.prepare_forced_aligner_inputs].
- timestamp_token_id (int) —
معرّف الرمز (Token ID) الخاص بعلامة
<timestamp>(منmodel.config.timestamp_token_id). - timestamp_segment_time (float، اختياري) — عدد الميلي ثانية لكل فئة طابع زمني. إذا لم يُقدَّم، يتم استخدام self.timestamp_segment_time.
يعيد
list[list[dict]]
قائمة واحدة لكل عينة. تحتوي كل قائمة داخلية على قواميس بمفاتيح "text" (str)، و"start_time" (float، بالثواني)، و"end_time" (float، بالثواني).
فكّ ترميز مخرجات نموذج المحاذاة الإجبارية إلى طوابع زمنية على مستوى الكلمات.
decode
< source >( *argsreturn_format = 'raw'**kwargs )
المعاملات
- return_format (str, اختياري, الافتراضي هو “raw”) —
الخيارات: "raw": إرجاع نصوص مُفكّكة خام من المُرمّز. "parsed": إرجاع قاموس (أو قائمة من القواميس) بمفاتيح "language" و"transcription". "transcription_only": استخراج النص المُحوَّل فقط (بعد <asr_text>). يتم ضبط skip_special_tokens على True بشكل صارم لكل من "parsed" و"transcription_only".
"raw": إرجاع نصوص مُفكّكة خام من المُرمِّز."parsed": إرجاع قاموس (أو قائمة من القواميس) تحتوي على المفاتيح"language"و"transcription"."transcription_only": استخراج النص المنقول فقط (بعد<asr_text>).
يتم ضبط
skip_special_tokensبشكل صارم علىTrueفي حالتي"parsed"و"transcription_only".
مرّر الحُجج إلى دالة فك الترميز (decode) في مُرمّز الرموز (tokenizer) وقم، عند الحاجة، بتحليل مخرجات التعرف على الكلام (ASR).
تُخرج Qwen3 ASR النص المنقول بالصيغة التالية: language <LANG><asr_text>transcribed text
Qwen3ASREncoder
فئة transformers.Qwen3ASREncoder
< source >( config: Qwen3ASREncoderConfig )
المعاملات
- config (Qwen3ASREncoderConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعدادات إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج الصوت الخاص بـ Qwen3 ASR دون أي رأس أو إسقاط في الأعلى.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( input_features: Tensorinput_features_mask: Tensor**kwargs ) → BaseModelOutputWithPooling or tuple(torch.Tensor)
المعاملات
- input_features (
torch.Tensorمن الشكل(batch_size, sequence_length, feature_dim)) — المصفوفات المقابلة لميزات الصوت المدخلة. يمكن الحصول على ميزات الصوت باستخدام Qwen3ASRFeatureExtractor. راجع Qwen3ASRFeatureExtractor.call() للتفاصيل (Qwen3ASRProcessor يستخدم Qwen3ASRFeatureExtractor لمعالجة ملفات الصوت). - input_features_mask (
torch.LongTensorمن الشكل(batch_size, padded_feature_length)) — 1 للإطارات الطيفية الصالحة و0 للتعبئة.
يعيد
BaseModelOutputWithPooling أو tuple(torch.Tensor)
BaseModelOutputWithPooling أو مجموعة مرتبة من
torch.Tensor (في حال تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة اعتماداً على الإعداد (Qwen3ASRConfig) والمدخلات.
تتجاوز طريقة Qwen3ASREncoder الخاصة بالتقديم (forward) الطريقة الخاصة __call__.
على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن
Moduleبدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.
last_hidden_state (
torch.Tensorمن الشكل(batch_size, sequence_length, hidden_size)) — تسلسل حالات مخفية عند مخرج الطبقة الأخيرة من النموذج.pooler_output (
torch.Tensorمن الشكل(batch_size, hidden_size)) — حالة الطبقة المخفية الأخيرة للرمز الأول من التسلسل (رمز التصنيف) بعد المعالجة الإضافية عبر الطبقات المستخدمة في مهمة ما قبل التدريب المساعدة. على سبيل المثال، بالنسبة لعائلة نماذج BERT، تُرجع هذه الخاصية رمز التصنيف بعد معالجته عبر طبقة خطية ودالة تفعيل tanh. تُدرَّب أوزان الطبقة الخطية من هدف التنبؤ بالجملة التالية (التصنيف) أثناء ما قبل التدريب.hidden_states (
tuple(torch.Tensor)، اختياري، يُعاد عند تمريرoutput_hidden_states=Trueأو عند تعيينconfig.output_hidden_states=True) — مجموعة منtorch.Tensor(واحدة لإخراج الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لإخراج كل طبقة) من الشكل(batch_size, sequence_length, hidden_size).حالات النموذج المخفية عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.
attentions (
tuple(torch.Tensor)، اختياري، يُعاد عند تمريرoutput_attentions=Trueأو عند تعيينconfig.output_attentions=True) — مجموعة منtorch.Tensor(واحدة لكل طبقة) بأبعاد(batch_size, num_heads, sequence_length, sequence_length).أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
Qwen3ASRModel
فئة transformers.Qwen3ASRModel
< source >( config: Qwen3ASRConfig )
المعاملات
- config (Qwen3ASRConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. عند التهيئة باستخدام ملف إعدادات، لا يتم تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج Qwen3ASR (مشفر Whisper المُحسَّن، مُسقط متعدد الوسائط، نموذج اللغة Qwen2)، بدون رأس نمذجة اللغة.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneinput_features: typing.Optional[torch.Tensor] = Noneinput_features_mask: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Qwen3ASRModelOutputWithPast or tuple(torch.Tensor)
المعاملات
- input_ids (
torch.LongTensorبشكل(batch_size, sequence_length), اختياري) — مؤشرات رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا.يمكن الحصول على الفهارس باستخدام AutoTokenizer. راجع PreTrainedTokenizer.encode() و PreTrainedTokenizer.call() للتفاصيل.
- input_features (
torch.Tensorمن الشكل(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 لدينا. إذا لم يتم تمرير
past_key_values، فسيتم تهيئة DynamicCache افتراضياً.سيُخرج النموذج نفس صيغة الكاش التي تُمرَّر كمدخل.
عند استخدام
past_key_values، يُتوقَّع من المستخدم إدخالinput_idsغير المعالجة فقط (تلك التي لم تُقدَّم حالات مفاتيحها وقيمها السابقة إلى هذا النموذج) بأبعاد(batch_size, unprocessed_length)بدلاً من جميعinput_idsبأبعاد(batch_size, sequence_length). - inputs_embeds (
torch.Tensorمن الشكل(batch_size, sequence_length, hidden_size)، اختياري) — اختياريًا، بدلاً من تمريرinput_ids، يمكنك اختيار تمرير تمثيل مضمّن مباشرة. وهذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارسinput_idsإلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج. - use_cache (
bool، اختياري) — إذا تم تعيينه إلىTrue، تُعاد حالات المفاتيح والقيمpast_key_valuesويمكن استخدامها لتسريع فك الترميز (انظرpast_key_values).
يعيد
Qwen3ASRModelOutputWithPast أو tuple(torch.Tensor)
نموذج Qwen3ASRModelOutputWithPast أو مجموعة مرتبة من
torch.Tensor (في حال تم تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة
تعتمد على الإعدادات (Qwen3ASRConfig) والمدخلات.
تتجاوز طريقة Qwen3ASRModel الخاصة بالتقديم (forward) الطريقة الخاصة __call__.
على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن
Moduleبدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.
- audio_hidden_states (
torch.Tensor، اختياري) — حالات مخفية صوتية مُسقطَة.
get_audio_features
< source >( input_features: Tensorinput_features_mask: LongTensor**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPooling or tuple(torch.Tensor)
المعاملات
- input_features (
torch.Tensorمن الشكل(batch_size, sequence_length, feature_dim)) — المصفوفات المقابلة لميزات الصوت المدخلة. يمكن الحصول على ميزات الصوت باستخدام Qwen3ASRFeatureExtractor. راجع Qwen3ASRFeatureExtractor.call() للتفاصيل (Qwen3ASRProcessor يستخدم Qwen3ASRFeatureExtractor لمعالجة ملفات الصوت). - input_features_mask (
torch.LongTensorمن الشكل(batch_size, padded_feature_length)) — 1 للإطارات الطيفية الصالحة و0 للتعبئة.
يعيد
BaseModelOutputWithPooling أو tuple(torch.Tensor)
BaseModelOutputWithPooling أو مجموعة مرتبة من
torch.Tensor (في حال تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة اعتماداً على الإعداد (Qwen3ASRConfig) والمدخلات.
تُستخدم هذه الطريقة للحصول على تمثيلات الصوت من الميزات المدخلة (مطياف لوج-ميل).
last_hidden_state (
torch.Tensorمن الشكل(batch_size, sequence_length, hidden_size)) — تسلسل حالات مخفية عند مخرج الطبقة الأخيرة من النموذج.pooler_output (
torch.Tensorمن الشكل(batch_size, hidden_size)) — حالة الطبقة المخفية الأخيرة للرمز الأول من التسلسل (رمز التصنيف) بعد المعالجة الإضافية عبر الطبقات المستخدمة في مهمة ما قبل التدريب المساعدة. على سبيل المثال، بالنسبة لعائلة نماذج BERT، تُرجع هذه الخاصية رمز التصنيف بعد معالجته عبر طبقة خطية ودالة تفعيل tanh. تُدرَّب أوزان الطبقة الخطية من هدف التنبؤ بالجملة التالية (التصنيف) أثناء ما قبل التدريب.hidden_states (
tuple(torch.Tensor)، اختياري، يُعاد عند تمريرoutput_hidden_states=Trueأو عند تعيينconfig.output_hidden_states=True) — مجموعة منtorch.Tensor(واحدة لإخراج الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لإخراج كل طبقة) من الشكل(batch_size, sequence_length, hidden_size).حالات النموذج المخفية عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.
attentions (
tuple(torch.Tensor)، اختياري، يُعاد عند تمريرoutput_attentions=Trueأو عند تعيينconfig.output_attentions=True) — مجموعة منtorch.Tensor(واحدة لكل طبقة) بأبعاد(batch_size, num_heads, sequence_length, sequence_length).أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
get_placeholder_mask
< source >( input_ids: LongTensorinputs_embeds: Tensoraudio_features: Tensor )
يحصل على قناع العلامات الوهمية متعددة الوسائط من input_ids أو inputs_embeds، ويتحقق من أن عدد الرموز الوهمية يساوي طول الميزات متعددة الوسائط. إذا اختلفت الأطوال، يتم رفع خطأ.
Qwen3ASRForConditionalGeneration
فئة transformers.Qwen3ASRForConditionalGeneration
< source >( config: Qwen3ASRConfig )
المعاملات
- config (Qwen3ASRConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. عند التهيئة باستخدام ملف إعدادات، لا يتم تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج Qwen3ASR الذي يتكون من مشفّر صوتي ونموذج لغوي.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneinput_features: typing.Optional[torch.Tensor] = Noneinput_features_mask: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = Nonelogits_to_keep: typing.Union[int, torch.Tensor] = 0**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Qwen3ASRCausalLMOutputWithPast or tuple(torch.Tensor)
المعاملات
- input_ids (
torch.LongTensorبشكل(batch_size, sequence_length), اختياري) — مؤشرات رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا.يمكن الحصول على الفهارس باستخدام AutoTokenizer. راجع PreTrainedTokenizer.encode() و PreTrainedTokenizer.call() للتفاصيل.
- input_features (
torch.Tensorمن الشكل(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 لدينا. إذا لم يتم تمرير
past_key_values، فسيتم تهيئة DynamicCache افتراضياً.سيُخرج النموذج نفس صيغة الكاش التي تُمرَّر كمدخل.
عند استخدام
past_key_values، يُتوقَّع من المستخدم إدخالinput_idsغير المعالجة فقط (تلك التي لم تُقدَّم حالات مفاتيحها وقيمها السابقة إلى هذا النموذج) بأبعاد(batch_size, unprocessed_length)بدلاً من جميعinput_idsبأبعاد(batch_size, sequence_length). - inputs_embeds (
torch.Tensorمن الشكل(batch_size, sequence_length, hidden_size)، اختياري) — اختياريًا، بدلاً من تمريرinput_ids، يمكنك اختيار تمرير تمثيل مضمّن مباشرة. وهذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارسinput_idsإلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج. - labels (
torch.LongTensorمن الشكل(batch_size, sequence_length)، اختياري) — التسميات المستخدمة لحساب خسارة نمذجة اللغة المقنّعة. - use_cache (
bool، اختياري) — إذا تم تعيينه إلىTrue، تُعاد حالات المفاتيح والقيمpast_key_valuesويمكن استخدامها لتسريع فك الترميز (انظرpast_key_values). - logits_to_keep (
Union[int, torch.Tensor]، اختياري، القيمة الافتراضية0) — إذا كانint، يتم حساب logits لآخرlogits_to_keepرموز. إذا كانت القيمة0، يتم حساب logits لجميعinput_ids(حالة خاصة). لا يُحتاج إلى logits إلا للرمز الأخير في عملية التوليد، ويمكن أن يوفر حسابها لذلك الرمز وحده ذاكرة كبيرة، وهو أمر مهم بشكل ملحوظ للتسلسلات الطويلة أو حجم المفردات الكبير. إذا كانtorch.Tensor، يجب أن يكون بعدًا واحدًا (1D) ويتوافق مع الفهارس التي يجب الاحتفاظ بها في بُعد طول التسلسل. يكون هذا مفيدًا عند استخدام تنسيق المصفوفات المعبأة (packed tensor format) (بعد واحد لكل من الدفعة وطول التسلسل).
يعيد
Qwen3ASRCausalLMOutputWithPast أو tuple(torch.Tensor)
Qwen3ASRCausalLMOutputWithPast أو مجموعة مرتبة من
torch.Tensor (في حال تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة
تعتمد على الإعدادات (Qwen3ASRConfig) والمدخلات.
تُعيد طريقة Qwen3ASRForConditionalGeneration الخاصة بالتقديم (forward) تعريف الطريقة الخاصة __call__.
على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن
Moduleبدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.
loss (
torch.Tensorof shape(1,), اختياري, يُعاد عند توفيرlabels) — خسارة نمذجة اللغة (لتوقع الرمز التالي).logits (
torch.Tensorمن الشكل(batch_size, sequence_length, config.vocab_size)) — درجات التنبؤ لرأس نمذجة اللغة.past_key_values (
Cache، اختياري، يُعاد عند تمريرuse_cache=Trueأو عند تعيينconfig.use_cache=True) — إنه كائن من نوع Cache.hidden_states (
tuple[torch.Tensor]، اختياري، يُعاد عند تمريرoutput_hidden_states=Trueأو عند تعيينconfig.output_hidden_states=True) — مجموعة منtorch.Tensor(واحدة لإخراج الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لإخراج كل طبقة) من الشكل(batch_size, sequence_length, hidden_size).حالات النموذج المخفية عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.
attentions (
tuple[torch.Tensor]، اختياري، يُعاد عند تمريرoutput_attentions=Trueأو عند تعيينconfig.output_attentions=True) — مجموعة منtorch.Tensor(واحدة لكل طبقة) بأبعاد(batch_size, num_heads, sequence_length, sequence_length).أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
audio_hidden_states (
torch.Tensor، اختياري) — حالات المخفية لمشفّر الصوت بعد الإسقاط.
Qwen3ASRForTokenClassification
فئة transformers.Qwen3ASRForTokenClassification
< source >( config )
المعاملات
- config ([
[``GenericForTokenClassification``]]) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعدادات إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج Qwen3 ASR مع رأس تصنيف الرموز للتنبؤ بالطوابع الزمنية (المحاذاة الإجبارية).
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق 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.Tensor | 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 لدينا. إذا لم يتم تمرير
past_key_values، فسيتم تهيئة DynamicCache افتراضياً.سيُخرج النموذج نفس صيغة الكاش التي تُمرَّر كمدخل.
عند استخدام
past_key_values، يُتوقَّع من المستخدم إدخالinput_idsغير المعالجة فقط (تلك التي لم تُقدَّم حالات مفاتيحها وقيمها السابقة إلى هذا النموذج) بأبعاد(batch_size, unprocessed_length)بدلاً من جميعinput_idsبأبعاد(batch_size, sequence_length). - inputs_embeds (
torch.Tensorمن الشكل(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بدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.