Transformers documentation

Whisper

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

نُشر هذا النموذج في أوراق HF في 2022-12-06 وسُهم به في Hugging Face Transformers في 2022-10-05.

FlashAttention SDPA

Whisper

Whisper is an encoder-decoder (sequence-to-sequence) transformer pretrained on 680,000 hours of labeled audio data. This amount of pretraining data enables zero-shot performance on audio tasks in English and many other languages. The decoder allows Whisper to map the encoders learned speech representations to useful outputs, such as text, without additional fine-tuning. Whisper just works out of the box.

يمكنك العثور على جميع نقاط التفتيش الأصلية لـ Whisper ضمن مجموعة Whisper.

انقر على نماذج Whisper في الشريط الجانبي الأيمن لمزيد من الأمثلة حول كيفية تطبيق Whisper على مهام صوتية مختلفة.

اضبط use_kernels=True في from_pretrained() لاستبدال الطبقات المدعومة بنوى مُحسَّنة من Hub. راجع تحميل النوى لمعرفة المزيد.

يُظهر المثال أدناه كيفية تحويل الكلام إلى نص تلقائيًا باستخدام Pipeline أو فئة AutoModel.

خط أنابيب
AutoModel
from transformers import pipeline


pipeline = pipeline(
    task="automatic-speech-recognition",
    model="openai/whisper-large-v3-turbo",
    device=0
)
pipeline("https://huggingface.co/datasets/Narsil/asr_dummy/resolve/main/mlk.flac")

ملاحظات

  • Whisper relies on a custom generate for inference, make sure to check the docs below.
  • يمكن استخدام WhisperProcessor لتحضير الصوت وفك ترميز المعرّفات المتنبأ بها إلى نص.

WhisperConfig

فئة transformers.WhisperConfig

< >

( 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 = 0id2label: 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 = Noneis_encoder_decoder: bool = Truevocab_size: int = 51865num_mel_bins: int = 80encoder_layers: int = 4encoder_attention_heads: int = 6decoder_layers: int = 4decoder_attention_heads: int = 6decoder_ffn_dim: int = 1536encoder_ffn_dim: int = 1536encoder_layerdrop: float | int = 0.0decoder_layerdrop: float | int = 0.0decoder_start_token_id: int = 50257use_cache: bool = Trueactivation_function: str = 'gelu'd_model: int = 384dropout: float | int = 0.0attention_dropout: float | int = 0.0activation_dropout: float | int = 0.0init_std: float = 0.02scale_embedding: bool = Falsemax_source_positions: int = 1500max_target_positions: int = 448pad_token_id: int | None = 50256bos_token_id: int | None = 50256eos_token_id: int | list[int] | None = 50256suppress_tokens: list | None = Nonebegin_suppress_tokens: list[int] | tuple[int, ...] | None = (220, 50256)use_weighted_layer_sum: bool = Falseclassifier_proj_size: int = 256apply_spec_augment: bool = Falsemask_time_prob: float | int = 0.05mask_time_length: int = 10mask_time_min_masks: int = 2mask_feature_prob: float | int = 0.0mask_feature_length: int = 10mask_feature_min_masks: int = 0median_filter_width: int = 7tie_word_embeddings: bool = True )

المعاملات

  • is_encoder_decoder (bool، اختياري، القيمة الافتراضية True) — ما إذا كان النموذج يُستخدم كمُشفِّر/مُفكِّك أم لا.
  • vocab_size (int، اختياري، القيمة الافتراضية 51865) — حجم مفردات النموذج. يحدد عدد الرموز المختلفة التي يمكن تمثيلها بواسطة input_ids.
  • num_mel_bins (int، اختياري، القيمة الافتراضية 80) — عدد ميزات mel المستخدمة لكل إطار إدخال. يجب أن يتوافق مع القيمة المستخدمة في فئة AutoFeatureExtractor.
  • encoder_layers (int، اختياري، القيمة الافتراضية 4) — عدد الطبقات المخفية في مُشفِّر Transformer. سيستخدم القيمة نفسها لـ num_layers إذا لم يتم ضبطه.
  • encoder_attention_heads (int, اختياري، القيمة الافتراضية 6) — عدد رؤوس الانتباه لكل طبقة انتباه في مُشفِّر Transformer.
  • decoder_layers (int, اختياري، القيمة الافتراضية 4) — عدد الطبقات المخفية في مُفكِّك Transformer. سيُستخدم نفس قيمة num_layers إذا لم يتم تعيينه.
  • decoder_attention_heads (int، اختياري، القيمة الافتراضية 6) — عدد رؤوس الانتباه لكل طبقة انتباه في مُفكِّك Transformer.
  • decoder_ffn_dim (int, اختياري، القيمة الافتراضية 1536) — أبعاد طبقة "الوسط" (التي تُسمّى غالباً بالطبقة الأمامية) في المُفكِّك.
  • encoder_ffn_dim (int، اختياري، القيمة الافتراضية 1536) — أبعاد طبقة «الوسيطة» (التي تُسمّى غالباً بطبقة التغذية الأمامية) في المُشفِّر.
  • encoder_layerdrop (Union[float, int]، اختياري، القيمة الافتراضية 0.0) — احتمال LayerDrop للمُشفِّر. راجع [ورقة LayerDrop](انظر https://huggingface.co/papers/1909.11556) لمزيد من التفاصيل.
  • decoder_layerdrop (Union[float, int]، اختياري، القيمة الافتراضية 0.0) — احتمال LayerDrop الخاص بفك الترميز. راجع [ورقة LayerDrop](انظر https://huggingface.co/papers/1909.11556) لمزيد من التفاصيل.
  • decoder_start_token_id (int, اختياري، القيمة الافتراضية 50257) — إذا بدأ نموذج المُشفِّر-المُفكِّك (encoder-decoder) عملية فك التشفير برمز مختلف عن bos، فإن هذا هو المعرّف الخاص بذلك الرمز.
  • use_cache (bool، اختياري، القيمة الافتراضية True) — ما إذا كان يجب على النموذج إرجاع قيم المفاتيح/القيم الأخيرة للانتباه (لا تستخدمها جميع النماذج). لا ينطبق إلا إذا كان config.is_decoder=True أو إذا كان النموذج نموذجًا توليديًا يعتمد على المُفكِّك فقط.
  • activation_function (str، اختياري، القيمة الافتراضية gelu) — دالة التنشيط غير الخطية (دالة أو نص) في المُفكِّك. على سبيل المثال، "gelu"، "relu"، "silu"، وغيرها.
  • d_model (int، اختياري، القيمة الافتراضية 384) — حجم طبقات المُشفِّر وطبقة المُجمِّع.
  • dropout (Union[float, int]، اختياري، القيمة الافتراضية 0.0) — النسبة لجميع طبقات dropout.
  • attention_dropout (Union[float, int]، اختياري، القيمة الافتراضية 0.0) — نسبة إسقاط (dropout) لاحتمالات الانتباه.
  • activation_dropout (Union[float, int]، اختياري، القيمة الافتراضية 0.0) — نسبة dropout للتفعيلات داخل الطبقة المتصلة بالكامل.
  • init_std (float، اختياري، القيمة الافتراضية 0.02) — انحراف معياري لمُهيّئ truncated_normal_initializer المستخدم في تهيئة جميع مصفوفات الأوزان.
  • scale_embedding (bool، اختياري، القيمة الافتراضية False) — ما إذا كان سيتم توسيع التضمينات (embeddings) من خلال القسمة على sqrt(d_model).
  • max_source_positions (int، اختياري، القيمة الافتراضية 1500) — أقصى طول تسلسل لميزات مرشحات log-mel filter-bank التي قد يُستخدم هذا النموذج معها.
  • max_target_positions (int، اختياري، القيمة الافتراضية 448) — أقصى طول تسلسل قد يُستخدم مع هذا النموذج. يُنصح عادةً بإعداد هذه القيمة إلى رقم كبير احتياطاً (مثل 512 أو 1024 أو 2048).
  • pad_token_id (int، اختياري، القيمة الافتراضية 50256) — معرّف الرمز المستخدم للتعبئة في المفردات.
  • bos_token_id (int، اختياري، القيمة الافتراضية 50256) — معرّف الرمز المستخدم لبدء البث في المفردات.
  • eos_token_id (Union[int, list[int]]، اختياري، القيمة الافتراضية 50256) — معرّف الرمز المستخدم لنهاية البث في المفردات.
  • suppress_tokens (list[int]، اختياري) — قائمة تحتوي على الرموز غير الصوتية التي سيستخدمها معالج الاحتمالات في دالة generate. يتوافق كل من NON_SPEECH_TOKENS وNON_SPEECH_TOKENS_MULTI مع نموذج english-only ونموذج multilingual على التوالي.
  • begin_suppress_tokens (list[int]، اختياري، القيمة الافتراضية [220,50256]) — قائمة تحتوي على الرموز التي سيتم كبتها في بداية عملية العينة. يتم تهيئتها كرمز " " (blank_token_id) ورمز eos_token_id
  • use_weighted_layer_sum (bool، اختياري، القيمة الافتراضية False) — ما إذا كان سيتم استخدام متوسط مرجح لمخرجات الطبقات مع أوزان متعلمة. لا ينطبق إلا عند استخدام كائن من WhisperForAudioClassification.
  • classifier_proj_size (int، اختياري، القيمة الافتراضية 256) — أبعاد الإسقاط قبل متوسط تجميع الرموز للتصنيف. لا ينطبق إلا عند استخدام كائن من WhisperForAudioClassification.
  • apply_spec_augment (bool، اختياري، القيمة الافتراضية False) — ما إذا كان سيتم تطبيق توسيع البيانات SpecAugment على مخرجات مُشفِّر الميزات. للاطلاع على المرجع، راجع SpecAugment: A Simple Data Augmentation Method for Automatic Speech Recognition.
  • mask_time_prob (float, اختياري، القيمة الافتراضية 0.05) — النسبة المئوية (بين 0 و 1) لجميع متجهات الميزات على محور الزمن التي سيتم إخفاؤها. يولّد إجراء الإخفاء mask_time_prob*len(time_axis)/mask_time_length قناعًا مستقلًا على المحور. إذا استنتجنا من احتمال اختيار كل متجه ميزات كنقطة بداية للمدى الذي سيُخفى، فيجب أن تكون قيمة mask_time_prob هي prob_vector_start*mask_time_length. لاحظ أن التداخل قد يقلل من النسبة الفعلية للمتجهات المخفية. هذا الأمر ذو صلة فقط إذا كانت apply_spec_augment == True.
  • mask_time_length (int، اختياري، القيمة الافتراضية 10) — طول امتداد المتجه على محور الزمن.
  • mask_time_min_masks (int, اختياري، القيمة الافتراضية 2)، — الحد الأدنى لعدد الأقنعة بطول mask_feature_length التي يتم توليدها على محور الزمن، في كل خطوة زمنية، بغض النظر عن mask_feature_prob. لا يكون ذا صلة إلا إذا كان ”mask_time_prob*len(time_axis)/mask_time_length < mask_time_min_masks”
  • mask_feature_prob (float, اختياري، القيمة الافتراضية 0.0) — النسبة المئوية (بين 0 و 1) لجميع متجهات الميزات على طول محور الميزات التي سيتم إخفاؤها. يولّد إجراء الإخفاء mask_feature_prob*len(feature_axis)/mask_time_length أقنعة مستقلة على المحور. إذا كنت تستنتج من احتمال اختيار كل متجه ميزات كبداية للمدى الذي سيُخفى، فيجب أن يكون mask_feature_prob مساوياً لـ prob_vector_start*mask_feature_length. لاحظ أن التداخل قد يقلل من النسبة الفعلية للمتجهات المخفية. هذا الأمر ذو صلة فقط إذا كان apply_spec_augment is True.
  • mask_feature_prob (Union[float, int]، اختياري، القيمة الافتراضية 0.0) — النسبة المئوية (بين 0 و 1) لجميع متجهات الميزات على محور الميزات التي سيتم إخفاؤها. يولّد إجراء الإخفاء mask_feature_prob*len(feature_axis)/mask_time_length أقنعة مستقلة على المحور. إذا كنت تستنتج من احتمال اختيار كل متجه ميزات كنقطة بداية للمدى الذي سيُخفى، فيجب أن تكون قيمة mask_feature_prob هي prob_vector_start*mask_feature_length. لاحظ أن التداخل قد يقلل من النسبة الفعلية للمتجهات المخفية. لا ينطبق هذا إلا إذا كانت قيمة apply_spec_augment هي True.
  • mask_feature_length (int، اختياري، القيمة الافتراضية 10) — طول النطاق المتجهي على محور الميزة.
  • mask_feature_min_masks (int, اختياري، القيمة الافتراضية 0) — الحد الأدنى لعدد الأقنعة بطول mask_feature_length التي يتم توليدها على طول محور الميزة، في كل خطوة زمنية، بغض النظر عن mask_feature_prob. لا ينطبق إلا إذا كان mask_feature_prob*len(feature_axis)/mask_feature_length < mask_feature_min_masks.
  • median_filter_width (int, اختياري، القيمة الافتراضية 7) — عرض مرشح الوسيط المستخدم لتنعيم مخرجات الانتباه المتقاطع عند حساب طوابع زمنية للرموز. يجب أن يكون رقمًا فرديًا.
  • tie_word_embeddings (bool، اختياري، القيمة الافتراضية True) — ما إذا كان يجب ربط ترميزات الأوزان (weight embeddings) وفقاً لخريطة tied_weights_keys الخاصة بالنموذج.

هذه فئة الإعدادات المخزنة لإعدادات نموذج WhisperModel. تُستخدم لاستحداث نموذج Whisper وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى الحصول على إعدادات مشابهة لتلك الخاصة بـ openai/whisper-tiny

ترث كائنات التهيئة من PreTrainedConfig ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ PreTrainedConfig لمزيد من المعلومات.

مثال:

>>> from transformers import WhisperConfig, WhisperModel

>>> # Initializing a Whisper tiny style configuration
>>> configuration = WhisperConfig()

>>> # Initializing a model (with random weights) from the tiny style configuration
>>> model = WhisperModel(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config

WhisperTokenizer

فئة transformers.WhisperTokenizer

< >

( vocab: str | dict[str, int] | None = Nonemerges = Nonenormalizer_file = Noneunk_token = '<|endoftext|>'bos_token = '<|endoftext|>'eos_token = '<|endoftext|>'add_prefix_space = Falselanguage = Nonetask = Nonepredict_timestamps = False**kwargs )

المعاملات

  • vocab_file (str, اختياري) — مسار ملف المفردات.
  • merges_file (str, اختياري) — مسار ملف الدمج.
  • normalizer_file (str, اختياري) — مسار ملف normalizer_file.
  • tokenizer_file (str, اختياري) — مسار ملف tokenizers (يحمل عادةً امتداد .json) الذي يحتوي على كل ما يلزم لتحميل مُجزِّئ الرموز.
  • unk_token (str، اختياري، القيمة الافتراضية "<|endoftext|>") — رمز المجهول. لا يمكن تحويل الرمز غير الموجود في المفردات إلى معرّف، لذا يُعيَّن هذا الرمز بدلاً منه.
  • bos_token (str، اختياري، القيمة الافتراضية "<|endoftext|>") — رمز بداية التسلسل. يُستخدم decoder_start_token_id لضبط الرمز الأول على "<|startoftranscript|>" أثناء التوليد.
  • eos_token (str، اختياري، القيمة الافتراضية "<|endoftext|>") — رمز نهاية التسلسل.
  • add_prefix_space (bool، اختياري، القيمة الافتراضية False) — ما إذا كان سيُضاف مسافة أولية إلى المدخلات أم لا. هذا يتيح التعامل مع الكلمة الأولى تماماً كما يُتعامل مع أي كلمة أخرى. (يكتشف مُجزِّئ Whisper بداية الكلمات بناءً على المسافة التي تسبقها).
  • language (str، اختياري) — لغة النص المنقول. يُضاف رمز معرّف اللغة المقابل إلى بداية التسلسل لمهام التعرف على الكلام متعددة اللغات وترجمة الكلام، فعلى سبيل المثال، بالنسبة للغة الإسبانية يُضاف الرمز "<|es|>" إلى بداية التسلسل. يجب استخدام هذا المعامل فقط للضبط الدقيق متعدد اللغات.
  • task (str, اختياري) — معرّف المهمة الذي يُضاف في بداية التسلسل (إن وُجد). يجب استخدام هذا المعرّف عند الضبط الدقيق متعدد اللغات، مع استخدام "transcribe" للتعرف على الكلام و"translate" لترجمة الكلام.
  • predict_timestamps (bool، اختياري، القيمة الافتراضية False) — ما إذا كان سيتم حذف رمز <|notimestamps|> في بداية التسلسل.

أنشئ مُجزِّئ Whisper "سريع" (مدعوم بمكتبة tokenizers من HuggingFace).

يرث هذا المُجزِّئ من PreTrainedTokenizerFast الذي يحتوي على معظم الطرق الرئيسية. ينبغي للمستخدمين الرجوع إلى هذه الفئة الأصلية لمزيد من المعلومات حول تلك الطرق.

set_prefix_tokens

< >

( language: str | None = Nonetask: str | None = Nonepredict_timestamps: bool | None = None )

المعاملات

  • language (str، اختياري، القيمة الافتراضية None) — لغة نص التحويل الصوتي إلى نص.
  • task (str، اختياري، القيمة الافتراضية None) — معرّف المهمة الذي يُضاف في بداية التسلسل (إن وُجد).
  • predict_timestamps (bool، اختياري، القيمة الافتراضية None) — ما إذا كان سيتم حذف الرمز <|notimestamps|> في بداية التسلسل.

تجاوز الرموز البادئة المضافة إلى بداية تسلسل التسميات. يمكن استخدام هذه الطريقة بشكل مستقل لـ

حدّث رموز البادئة كما هو مطلوب عند الضبط الدقيق. مثال:

>>> # instantiate the tokenizer and set the prefix token to Spanish
>>> tokenizer = WhisperTokenizerFast.from_pretrained("openai/whisper-tiny", language="spanish")
>>> # now switch the prefix token from Spanish to French
>>> tokenizer.set_prefix_tokens(language="french")

get_special_tokens_mask

< >

( token_ids_0: listtoken_ids_1: list[int] | None = Nonealready_has_special_tokens: bool = False ) → list[int]

المعاملات

  • token_ids_0 (list[int]) — قائمة من المعرّفات.
  • token_ids_1 (list[int]، اختياري) — قائمة اختيارية ثانية من المعرّفات لأزواج التسلسلات.
  • already_has_special_tokens (bool، اختياري، القيمة الافتراضية False) — ما إذا كانت قائمة الرموز (tokens) منسّقة مسبقًا برموز خاصة للنموذج أم لا.

يعيد

list[int]

قائمة من الأعداد الصحيحة في المدى [0, 1]: 1 للرمز الخاص، و0 لرمز التسلسل.

استرجاع معرّفات التسلسل من قائمة الرموز التي لم تُضف إليها رموز خاصة. يُستدعى هذا الأسلوب عند إضافة الرموز الخاصة باستخدام أسلوب prepare_for_model في مُجزّئ النص.

save_vocabulary

< >

( save_directory: strfilename_prefix: str | None = None )

batch_decode

< >

( sequences: list[int] | list[list[int]] | np.ndarray | torch.Tensorskip_special_tokens: bool = Falseclean_up_tokenization_spaces: bool | None = None**kwargs ) → list[str]

المعاملات

  • sequences (Union[list[int], list[list[int]], np.ndarray, torch.Tensor]) — قائمة من معرّفات المدخلات المُرمّزة. يمكن الحصول عليها باستخدام طريقة __call__.
  • skip_special_tokens (bool، اختياري، القيمة الافتراضية False) — ما إذا كان يجب إزالة الرموز الخاصة أثناء فك الترميز أم لا.
  • clean_up_tokenization_spaces (bool, اختياري) — ما إذا كان سيتم تنظيف مسافات الترميز أم لا. إذا كانت None، فسيتم افتراض self.clean_up_tokenization_spaces.
  • kwargs (معلمات إضافية بالكلمات المفتاحية، اختيارية) — سيتم تمريرها إلى طريقة فك الترميز المحددة للنموذج الأساسي.

يعيد

list[str]

قائمة الجمل المُفكَّكة.

تحويل قائمة من قوائم معرّفات الرموز إلى قائمة من النصوص عن طريق استدعاء decode.

يُوفَّر هذا الأسلوب من أجل التوافق مع الإصدارات السابقة. يتعامل أسلوب decode الآن مع المدخلات المجمعة بشكل أصلي، لذا يمكنك استخدام decode مباشرة بدلاً من batch_decode.

decode

< >

( token_idsskip_special_tokens: bool = Falseclean_up_tokenization_spaces: bool | None = Noneoutput_offsets: bool = Falsetime_precision: float = 0.02decode_with_timestamps: bool = Falsenormalize: bool = Falsebasic_normalize: bool = Falseremove_diacritics: bool = False**kwargs ) → str

المعاملات

  • token_ids (Union[int, list[int], np.ndarray, torch.Tensor]) — قائمة معرّفات المدخلات المُرمَّزة. يمكن الحصول عليها باستخدام طريقة __call__.
  • skip_special_tokens (bool، اختياري، القيمة الافتراضية False) — ما إذا كان يجب إزالة الرموز الخاصة أثناء فك الترميز. سيقوم بإزالة الرموز السابقة (قبل الاستعلام) إذا كانت موجودة.
  • clean_up_tokenization_spaces (bool, اختياري) — ما إذا كان سيتم تنظيف مسافات الترميز أم لا. إذا كانت None، فسيتم افتراض self.clean_up_tokenization_spaces (المتاح في tokenizer_config).
  • output_offsets (bool، اختياري، القيمة الافتراضية False) — ما إذا كان سيتم إخراج إزاحات الرموز أم لا. يجب ضبط هذا الخيار فقط إذا كانت النموذج قد توقع طوابع زمنية. إذا كانت هناك رموز سابقة (قبل الاستدعاء) لفك ترميزها، فلن تظهر في النص المفكوك إلا إذا احتوت على رموز طوابع زمنية.
  • time_precision (float، اختياري، القيمة الافتراضية 0.02) — النسبة الزمنية لتحويل الرمز إلى وقت.
  • decode_with_timestamps (bool، اختياري، القيمة الافتراضية False) — ما إذا كان سيتم فك الترميز مع تضمين الطوابع الزمنية في النص الخام.
  • normalize (bool، اختياري، القيمة الافتراضية False) — ما إذا كان سيتم تطبيق مُطبِّع النص الإنجليزي على النص المُفكَّك أم لا. لا ينطبق هذا إلا عندما يكون النص المستهدف باللغة الإنجليزية. وإلا، فيجب تطبيق مُطبِّع النص الأساسي.
  • basic_normalize (bool، اختياري، القيمة الافتراضية False) — ما إذا كان سيتم تطبيق مُطبِّع النص الأساسي على النص المُفكَّك. ينطبق على النص المستهدف متعدد اللغات.
  • remove_diacritics (bool, اختياري، القيمة الافتراضية False) — ما إذا كان يجب إزالة التشكيل عند تطبيق مُطبِّع النص الأساسي. قد يؤدي إزالة التشكيل إلى تدمير معلومات في النص المُفكَّك، لذا ينبغي استخدامه بحذر.
  • kwargs (معلمات إضافية بالكلمات المفتاحية، اختيارية) — سيتم تمريرها إلى طريقة فك الترميز المحددة للنموذج الأساسي.

يعيد

str

الجملة المُفكَّكة.

يحوّل تسلسلًا من المعرّفات في نص، باستخدام مُجزّئ الرموز (tokenizer) وقاموس الرموز، مع خيارات لإزالة الرموز الخاصة وتنظيف مسافات تجزئة الرموز.

يشبه ذلك القيام بـ self.convert_tokens_to_string(self.convert_ids_to_tokens(token_ids)).

basic_normalize

< >

( textremove_diacritics = False )

قم بتطبيع نصّ معيّن باستخدام فئة BasicTextNormalizer، التي تُجري تحويلات شائعة على النصوص متعددة اللغات.

normalize

< >

( text )

قم بتطبيع نصّ معيّن باستخدام فئة EnglishTextNormalizer، التي تنفّذ تحويلات شائعة على النصّ الإنجليزي.

WhisperFeatureExtractor

فئة transformers.WhisperFeatureExtractor

< >

( feature_size = 80sampling_rate = 16000hop_length = 160chunk_length = 30n_fft = 400padding_value = 0.0dither = 0.0return_attention_mask = False**kwargs )

المعاملات

  • feature_size (int، اختياري، القيمة الافتراضية 80) — أبعاد الميزة للميزات المستخرجة.
  • sampling_rate (int, اختياري، القيمة الافتراضية 16000) — معدل أخذ العينات الذي يجب أن تُرقَم به ملفات الصوت، ويُعبَّر عنه بالهرتز (Hz).
  • hop_length (int، اختياري، القيمة الافتراضية 160) — طول النوافذ المتداخلة المستخدمة في تحويل فورييه الزمني القصير (STFT) للحصول على معاملات ترددات ميل.
  • chunk_length (int، اختياري، القيمة الافتراضية 30) — الحد الأقصى لعدد المقاطع المكوّنة من sampling_rate عينة، المستخدمة لقصّ تسلسلات الصوت الأطول أو ملء تسلسلات الصوت الأقصر.
  • n_fft (int، اختياري، القيمة الافتراضية 400) — حجم تحويل فورييه.
  • padding_value (float، اختياري، القيمة الافتراضية 0.0) — قيمة الحشو المستخدمة لحشو الصوت. يجب أن تتوافق مع الصمت.
  • dither (float، اختياري، القيمة الافتراضية 0.0) — يضيف تشويشًا (Dithering). بمعنى آخر، يضيف ضوضاء غاوسية صغيرة إلى كل إطار. على سبيل المثال، استخدم 0.0001 لإضافة تشويش بتوزيع طبيعي متمركز حول 0.0 مع انحراف معياري قدره 0.0001 (بافتراض أن نطاق raw_speech هو [-1,+1]). القيمة 0.0 تعني عدم وجود تشويش. للتشويش تأثير مشابه لتأثير spectrogram(mel_floor=...). فهو يقلل من قيم log_mel_fbank العالية للإشارات التي تحتوي على مقاطع صفرية صارمة، عندما يكون هناك قطع VAD في الإشارة.

ينشئ مستخرج ميزات Whisper.

يرث مستخرج الميزات هذا من SequenceFeatureExtractor الذي يحتوي على معظم الطرق الرئيسية. ينبغي للمستخدمين الرجوع إلى هذه الفئة الأصلية لمزيد من المعلومات حول تلك الطرق.

تستخرج هذه الفئة ميزات بنك مرشحات ميل من الكلام الخام باستخدام تنفيذ مخصص عبر numpy لتحويل Short Time Fourier Transform، والذي ينبغي أن يطابق ما يعادله في pytorch وهو torch.stft.

__call__

< >

( raw_speech: numpy.ndarray | list[float] | list[numpy.ndarray] | list[list[float]]truncation: bool = Truepad_to_multiple_of: int | None = Nonereturn_tensors: str | transformers.utils.generic.TensorType | None = Nonereturn_attention_mask: bool | None = Nonepadding: str | None = 'max_length'max_length: int | None = Nonesampling_rate: int | None = Nonedo_normalize: bool | None = Nonedevice: str | None = 'cpu'**kwargs )

المعاملات

  • raw_speech (np.ndarray، list[float]، list[np.ndarray]، list[list[float]]) — التسلسل أو الدفعة من التسلسلات التي سيتم ملؤها. يمكن أن يكون كل تسلسل مصفوفة numpy، أو قائمة من قيم float، أو قائمة من مصفوفات numpy، أو قائمة من قوائم قيم float. يجب أن يكون الصوت أحادي القناة وليس ستيريو، أي قيمة float واحدة لكل خطوة زمنية.
  • truncation (bool، اختياري، الافتراضي True) — يفعّل القصّ لقطع تسلسلات الإدخال الأطول من max_length إلى max_length.
  • pad_to_multiple_of (int, اختياري, الافتراضي هو None) — إذا تم ضبطه، سيتم توسيط التسلسل إلى مضاعف للقيمة المُقدَّمة.

    يُعدّ هذا مفيدًا بشكل خاص لتفعيل استخدام نوى التينسور (Tensor Cores) على أجهزة NVIDIA التي تتمتع بقابلية معالجة >= 7.5 (Volta)، أو على وحدات TPU التي تستفيد من أن تكون أطوال التسلسلات مضاعفات للعدد 128.

  • return_tensors (str أو TensorType, اختياري) — إذا تم تعيينه، فسيُعاد تينسورات بدلاً من قائمة من الأعداد الصحيحة في Python. القيم المقبولة هي:
    • 'pt': إرجاع كائنات torch.Tensor من PyTorch.
    • 'np': إرجاع كائنات np.ndarray من نوع Numpy.
  • return_attention_mask (bool, اختياري) — ما إذا كان يجب إرجاع قناع الانتباه. إذا تُركت القيمة الافتراضية، فسيتم إرجاع قناع الانتباه وفقًا للقيمة الافتراضية الخاصة بمعالج الميزات (feature_extractor) المعني.

    ما هي أقنعة الانتباه؟

    فيما يتعلق بنماذج Whisper، يجب دائمًا تمرير attention_mask عند الاستدلال الدُفعي (batched inference) لتجنب الأخطاء الدقيقة.

  • padding (str أو PaddingStrategy, اختياري, الافتراضي هو 'max_length') — يُفعّل التحكم في الحشو. يقبل القيم التالية: 'longest': الحشو حتى أطول تسلسل في الدفعة (أو بدون حشو إذا تم تقديم تسلسل واحد فقط). 'max_length' (الافتراضي): الحشو حتى الحد الأقصى للطول المحدد بواسطة الحجة max_length أو حتى الحد الأقصى المقبول لطول الإدخال للنموذج إذا لم تُقدَّم تلك الحجة. 'do_not_pad': بدون حشو (أي، يمكنه إخراج دفعة تحتوي على تسلسلات بطول مختلف).
    • 'longest': يتم الحشو حتى أطول تسلسل في الدفعة (أو لا يتم الحشو إذا تم تقديم تسلسل واحد فقط).
    • 'max_length' (الافتراضي): يُكمل النص حتى الطول الأقصى المحدد عبر الحجة max_length أو حتى الطول الأقصى المقبول لإدخال النموذج إذا لم تُقدَّم تلك الحجة.
    • 'do_not_pad': لا يوجد حشو (أي، يمكن إخراج دفعة تحتوي على تسلسلات بطول مختلف).
  • max_length (int, اختياري) — يتحكم في الحد الأقصى للطول الذي ستستخدمه إحدى معاملات القص/الحشو.

    إذا تُرك غير مُعيَّن أو عُدِّل إلى None، فسيتم استخدام الطول الأقصى المُعرَّف مسبقًا للنموذج إذا كان أحد معاملات القص/الحشو يتطلب طولًا أقصى. وإذا لم يكن للنموذج طول إدخال أقصى محدد (مثل XLNet)، فسيتم تعطيل القص/الحشو إلى طول أقصى.

  • sampling_rate (int, اختياري) — معدل أخذ العينات الذي تم به أخذ عينات مدخل raw_speech. يُوصى بشدة بتمرير sampling_rate عند استدعاء الأمامي لمنع الأخطاء الصامتة وتمكين خط أنابيب التعرف التلقائي على الكلام.
  • do_normalize (bool، اختياري، القيمة الافتراضية False) — ما إذا كان سيتم تطبيع المدخلات إلى متوسط صفري وتباين وحدة. يمكن أن يساعد التطبيع في تحسين أداء النموذج بشكل كبير.
  • device (str، اختياري، القيمة الافتراضية 'cpu') — يحدد الجهاز المستخدم لحساب طيف اللوغ-ميل (log-mel spectrogram) لإشارات الصوت في طريقة _torch_extract_fbank_features. (على سبيل المثال، “cpu” أو “cuda”)
  • **kwargs — غير مدعومة بواسطة WhisperFeatureExtractor.call() وتُتجاهل.

الطريقة الرئيسية لتحويل البيانات إلى ميزات (Featurization) وتجهيزها للنموذج، سواءً كانت تسلسلاً واحداً أو عدة تسلسلات. يستخدم التنفيذ مكتبة PyTorch لحساب تحويل فورييه القصير (STFT) إذا كانت متاحة، وإلا فسيتم استخدام طريقة أبطأ تعتمد على NumPy.

WhisperProcessor

فئة transformers.WhisperProcessor

< >

( feature_extractortokenizer )

المعاملات

  • feature_extractor (WhisperFeatureExtractor) — مستخرج الميزات هو مدخل إلزامي.
  • tokenizer (WhisperTokenizer) — المُجزِّئ مدخل إلزامي.

ينشئ كائن WhisperProcessor يجمع مستخرج الميزات ومجزئ الرموز في معالج واحد.

يوفر WhisperProcessor جميع وظائف WhisperFeatureExtractor وWhisperTokenizer. راجع ~WhisperFeatureExtractor و~WhisperTokenizer لمزيد من المعلومات.

__call__

< >

( *args**kwargs )

المعاملات

  • return_tensors (str أو TensorType, اختياري) — إذا تم تعيينه، فسيُعاد تينسورات من إطار عمل محدد. القيم المقبولة هي:
    • 'pt': إرجاع كائنات torch.Tensor من PyTorch.
    • 'np': إرجاع كائنات np.ndarray من NumPy.

from_pretrained

< >

( pretrained_model_name_or_path: str | os.PathLikecache_dir: str | os.PathLike | None = Noneforce_download: bool = Falselocal_files_only: bool = Falsetoken: str | bool | None = Nonerevision: str = 'main'**kwargs )

المعاملات

  • pretrained_model_name_or_path (str أو os.PathLike) — يمكن أن يكون هذا:
    • سلسلة نصية، وهي معرّف النموذج لمُستخرج ميزات مُدرَّب مسبقاً مستضاف داخل مستودع نموذج على huggingface.co.
    • مسار إلى مجلد يحتوي على ملف مستخرج الميزات المحفوظ باستخدام طريقة save_pretrained()، على سبيل المثال ./my_model_directory/.
    • مسار إلى ملف JSON لمُستخرج ميزات محفوظ، على سبيل المثال: ./my_model_directory/preprocessor_config.json.
  • **kwargs — حجج إضافية بالكلمات المفتاحية تُمرَّر إلى كلٍّ من from_pretrained() و ~tokenization_utils_base.PreTrainedTokenizer.from_pretrained.

أنشئ معالجًا مرتبطًا بنموذج مُدرَّب مسبقًا.

تستدعي طريقة الفئة هذه ببساطة مستخرج الميزات from_pretrained() ومعالج الصور ImageProcessingMixin وطريقة المرمّز ~tokenization_utils_base.PreTrainedTokenizer.from_pretrained. يُرجى الرجوع إلى سلاسل التوثيق للطرق المذكورة أعلاه لمزيد من المعلومات.

save_pretrained

< >

( save_directorypush_to_hub: bool = False**kwargs )

المعاملات

  • save_directory (str أو os.PathLike) — المجلد الذي سيتم فيه حفظ ملف مستخرج الميزات بصيغة JSON وملفات المُرمِّز (سيتم إنشاء المجلد إذا لم يكن موجوداً).
  • push_to_hub (bool، اختياري، الافتراضي False) — ما إذا كان سيتم دفع نموذجك إلى مركز نماذج Hugging Face بعد حفظه. يمكنك تحديد المستودع الذي تريد الدفع إليه باستخدام repo_id (سيكون الافتراضي هو اسم save_directory في نطاقك).
  • kwargs (dict[str, Any]، اختياري) — حجج إضافية بأسماء تُمرَّر إلى طريقة push_to_hub().

يحفظ سمات هذا المعالج (مستخرج الميزات، المرمّز…) في المجلد المحدد بحيث يمكن إعادة تحميله باستخدام طريقة from_pretrained().

تستدعي طريقة الفئة هذه ببساطة save_pretrained() و save_pretrained(). يُرجى الرجوع إلى توثيق طرق الاستدعاء أعلاه لمزيد من المعلومات.

batch_decode

< >

( *args**kwargs )

تُمرّر هذه الطريقة جميع معاملاتها إلى batch_decode() الخاصة بـ PreTrainedTokenizer. يُرجى الرجوع إلى سلسلة التوثيق (docstring) لهذه الطريقة لمزيد من المعلومات.

decode

< >

( *args**kwargs )

تُمرّر هذه الطريقة جميع معاملاتها إلى decode() الخاصة بـ PreTrainedTokenizer. يُرجى الرجوع إلى سلسلة التوثيق (docstring) لهذه الطريقة لمزيد من المعلومات.

WhisperModel

فئة transformers.WhisperModel

< >

( config: WhisperConfig )

المعاملات

  • config (WhisperConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعداد إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.

نموذج Whisper الأساسي الذي يُخرج حالات مخفية خام دون أي رأس محدد في الأعلى.

يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

forward

< >

( input_features: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.LongTensor] = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.LongTensor] = Noneencoder_outputs: tuple[tuple[torch.Tensor]] | None = Nonepast_key_values: transformers.cache_utils.Cache | None = Nonedecoder_inputs_embeds: tuple[torch.Tensor] | None = Nonedecoder_position_ids: tuple[torch.LongTensor] | None = Noneuse_cache: bool | None = None**kwargs ) → Seq2SeqModelOutput or tuple(torch.Tensor)

المعاملات

  • input_features (torch.Tensor of shape (batch_size, sequence_length, feature_dim), اختياري) — المصفوفات المقابلة لميزات الصوت المدخلة. يمكن الحصول على ميزات الصوت باستخدام WhisperFeatureExtractor. راجع WhisperFeatureExtractor.call() للتفاصيل (WhisperProcessor يستخدم WhisperFeatureExtractor لمعالجة الملفات الصوتية).
  • attention_mask (torch.LongTensor بشكل (batch_size, sequence_length), اختياري) — قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. القيم المختارة للقناع في [0, 1]:
    • 1 للرموز التي لم تُقنَّع،
    • 0 للرموز التي تم إخفاؤها.

    ما هي أقنعة الانتباه؟

  • decoder_input_ids (torch.LongTensor بشكل (batch_size, target_sequence_length), اختياري) — مؤشرات رموز تسلسل مدخلات المُفكِّك في قاموس النموذج. يمكن الحصول على المؤشرات باستخدام WhisperTokenizer. راجع PreTrainedTokenizer.encode() و PreTrainedTokenizer.call() للتفاصيل. ما هي معرّفات مدخلات المُفكِّك؟ يستخدم Whisper المعرّف decoder_start_token_id كرمز بداية لتوليد decoder_input_ids. إذا تم استخدام past_key_values، فيجب إدخال آخر decoder_input_ids فقط بشكل اختياري (راجع past_key_values).

    يمكن الحصول على الفهارس باستخدام WhisperTokenizer. راجع PreTrainedTokenizer.encode() و PreTrainedTokenizer.call() للحصول على التفاصيل.

    ما هي معرّفات مدخلات المُفكِّك؟

    يستخدم Whisper الرمز decoder_start_token_id كرمز بداية لتوليد decoder_input_ids. إذا تم استخدام past_key_values، فيجب إدخال decoder_input_ids الأخيرة فقط بشكل اختياري (انظر past_key_values).

  • decoder_attention_mask (torch.LongTensor بشكل (batch_size, target_sequence_length), اختياري) — السلوك الافتراضي: إنشاء متجه يتجاهل رموز الحشو في decoder_input_ids. سيتم استخدام قناع سببي أيضًا بشكل افتراضي. إذا كنت ترغب في تغيير سلوك الحشو، فيجب عليك قراءة modeling_whisper._prepare_decoder_attention_mask وتعديله حسب احتياجاتك. راجع الشكل 1 في ورقة BART لمزيد من المعلومات حول الاستراتيجية الافتراضية.

    إذا كنت ترغب في تغيير سلوك الحشو، فينبغي عليك قراءة modeling_whisper._prepare_decoder_attention_mask وتعديله حسب احتياجاتك. راجع الشكل 1 في ورقة BART لمزيد من المعلومات حول الاستراتيجية الافتراضية.

  • encoder_outputs (tuple[tuple[torch.Tensor]]، اختياري) — مجموعة (توبل) تتكون من (last_hidden_state، اختياري: hidden_states، اختياري: attentions) last_hidden_state ذو الشكل (batch_size, sequence_length, hidden_size)، اختياري) هو تسلسل من حالات المخفية (hidden-states) عند مخرج الطبقة الأخيرة من المشفر. يُستخدم في الانتباه المتقاطع (cross-attention) داخل المُفكِّك (decoder).
  • 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).

  • decoder_inputs_embeds (tuple[torch.Tensor] من الشكل (batch_size, target_sequence_length, hidden_size), اختياري) — اختياريًا، بدلاً من تمرير decoder_input_ids يمكنك اختيار تمرير تمثيل مضمّن مباشرة. إذا past_key_values مستخدم، فاختياريًا يجب إدخال آخر decoder_inputs_embeds فقط (انظر past_key_values). هذا مفيد إذا كنت تريد مزيدًا من التحكم في كيفية تحويل decoder_input_ids فهارس إلى المتجهات المرتبطة بها أكثر من مصفوفة البحث التضمينية الداخلية للنموذج.

    إذا لم يتم تعيين كلٍّ من decoder_input_ids وdecoder_inputs_embeds، فإن decoder_inputs_embeds يأخذ قيمة inputs_embeds.

  • decoder_position_ids (torch.LongTensor بشكل (batch_size, sequence_length), اختياري) — مؤشرات مواضع رموز كل تسلسل إدخال في ترميزات المواضع. يتم اختيارها ضمن النطاق [0, config.n_positions - 1].

    ما هي معرّفات المواقع؟

  • use_cache (bool، اختياري) — إذا تم تعيينه إلى True، تُعاد حالات المفاتيح والقيم past_key_values ويمكن استخدامها لتسريع فك الترميز (انظر past_key_values).

يعيد

Seq2SeqModelOutput أو tuple(torch.Tensor)

Seq2SeqModelOutput أو مجموعة مرتبة من torch.Tensor (في حال تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة تعتمد على الإعداد (WhisperConfig) والمدخلات.

تتجاوز طريقة WhisperModel الخاصة بالتقديم (forward) الطريقة الخاصة __call__.

على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن Module بدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.

  • last_hidden_state (torch.Tensor من الشكل (batch_size, sequence_length, hidden_size)) — تسلسل من حالات الإخفاء عند مخرج الطبقة الأخيرة من فاحم النموذج.

    إذا تم استخدام past_key_values، فإن الحالة المخفية الأخيرة فقط من التسلسلات ذات الشكل (batch_size, 1, hidden_size) هي التي تُخرج.

  • past_key_values (EncoderDecoderCache، اختياري، يُعاد عند تمرير use_cache=True أو عند تعيين config.use_cache=True) — إنه كائن من نوع EncoderDecoderCache. لمزيد من التفاصيل، راجع دليل ذاكرة kv.

    تحتوي على حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه الذاتي وكتل الانتباه المتقاطع) يمكن استخدامها (انظر مدخل past_key_values) لتسريع فك الترميز التسلسلي.

  • decoder_hidden_states (tuple(torch.Tensor)، اختياري، يُعاد عند تمرير output_hidden_states=True أو عند تعيين config.output_hidden_states=True) — مجموعة من torch.Tensor (واحدة لإخراج الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لإخراج كل طبقة) بأبعاد (batch_size, sequence_length, hidden_size).

    حالات المخفية (Hidden-states) للوحدة الترميزية (decoder) عند مخرج كل طبقة، بالإضافة إلى مخرجات التضمين الأولي الاختيارية.

  • decoder_attentions (tuple(torch.Tensor)، اختياري، يُعاد عند تمرير output_attentions=True أو عند تعيين config.output_attentions=True) — مجموعة من torch.Tensor (واحدة لكل طبقة) بأبعاد (batch_size, num_heads, sequence_length, sequence_length).

    أوزان الانتباه في المُفكِّك، بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

  • cross_attentions (tuple(torch.Tensor)، اختياري، يُعاد عند تمرير output_attentions=True أو عند تعيين config.output_attentions=True) — مجموعة من torch.Tensor (واحدة لكل طبقة) بأبعاد (batch_size, num_heads, sequence_length, sequence_length).

    أوزان الانتباه لطبقة الانتباه المتقاطع في المُفكِّك، بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه المتقاطع.

  • encoder_last_hidden_state (torch.Tensor من الشكل (batch_size, sequence_length, hidden_size)، اختياري) — تسلسل حالات مخفية عند مخرج الطبقة الأخيرة من مُشفِّر النموذج.

  • encoder_hidden_states (tuple(torch.Tensor)، اختياري، يُعاد عند تمرير output_hidden_states=True أو عند تعيين config.output_hidden_states=True) — مجموعة من torch.Tensor (واحدة لإخراج الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لإخراج كل طبقة) من الشكل (batch_size, sequence_length, hidden_size).

    حالات المخفية للمشفّر عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.

  • encoder_attentions (tuple(torch.Tensor)، اختياري، يُعاد عند تمرير output_attentions=True أو عند تعيين config.output_attentions=True) — مجموعة من torch.Tensor (واحدة لكل طبقة) بأبعاد (batch_size, num_heads, sequence_length, sequence_length).

    أوزان الانتباه في المُشفِّر، بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

مثال:

>>> import torch
>>> from transformers import AutoFeatureExtractor, WhisperModel
>>> from datasets import load_dataset

>>> model = WhisperModel.from_pretrained("openai/whisper-base")
>>> feature_extractor = AutoFeatureExtractor.from_pretrained("openai/whisper-base")
>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
>>> inputs = feature_extractor(ds[0]["audio"]["array"], return_tensors="pt")
>>> input_features = inputs.input_features
>>> decoder_input_ids = torch.tensor([[1, 1]]) * model.config.decoder_start_token_id
>>> last_hidden_state = model(input_features, decoder_input_ids=decoder_input_ids).last_hidden_state
>>> list(last_hidden_state.shape)
[1, 2, 512]

_mask_input_features

< >

( input_features: Tensorattention_mask: typing.Optional[torch.LongTensor] = None )

تُزيل الأقنعة الميزات المستخرجة على محور الزمن و/أو على محور الميزات وفقاً لـ SpecAugment.

WhisperForConditionalGeneration

فئة transformers.WhisperForConditionalGeneration

< >

( config: WhisperConfig )

المعاملات

  • config (WhisperConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعداد إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.

نموذج Whisper مع رأس لنمذجة اللغة. يمكن استخدامه للتعرف التلقائي على الكلام.

يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

forward

< >

( input_features: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.LongTensor] = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.LongTensor] = Noneencoder_outputs: tuple[tuple[torch.Tensor]] | None = Nonepast_key_values: transformers.cache_utils.Cache | None = Nonedecoder_inputs_embeds: tuple[torch.Tensor] | None = Nonedecoder_position_ids: tuple[torch.LongTensor] | None = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = None**kwargs ) → Seq2SeqLMOutput or tuple(torch.Tensor)

المعاملات

  • input_features (torch.Tensor من الشكل (batch_size, sequence_length, feature_dim)، اختياري) — المصفوفات المقابلة لميزات الصوت المدخلة. يمكن الحصول على ميزات الصوت باستخدام WhisperFeatureExtractor. راجع WhisperFeatureExtractor.call() للتفاصيل (WhisperProcessor يستخدم WhisperFeatureExtractor لمعالجة الملفات الصوتية).
  • attention_mask (torch.LongTensor بشكل (batch_size, sequence_length), اختياري) — قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. القيم المختارة للقناع في [0, 1]:
    • 1 للرموز التي لم تُقنَّع،
    • 0 للرموز التي تم إخفاؤها.

    ما هي أقنعة الانتباه؟

  • decoder_input_ids (torch.LongTensor بشكل (batch_size, target_sequence_length), اختياري) — مؤشرات رموز تسلسل مدخلات المُفكِّك في قاموس النموذج. يمكن الحصول على المؤشرات باستخدام WhisperTokenizer. راجع PreTrainedTokenizer.encode() و PreTrainedTokenizer.call() للتفاصيل. ما هي معرّفات مدخلات المُفكِّك؟ يستخدم Whisper المعرّف decoder_start_token_id كرمز بداية لتوليد decoder_input_ids. إذا تم استخدام past_key_values، فيجب إدخال آخر decoder_input_ids فقط بشكل اختياري (راجع past_key_values).

    يمكن الحصول على الفهارس باستخدام WhisperTokenizer. راجع PreTrainedTokenizer.encode() و PreTrainedTokenizer.call() للحصول على التفاصيل.

    ما هي معرّفات مدخلات المُفكِّك؟

    يستخدم Whisper الرمز decoder_start_token_id كرمز بداية لتوليد decoder_input_ids. إذا تم استخدام past_key_values، فيجب إدخال decoder_input_ids الأخيرة فقط بشكل اختياري (انظر past_key_values).

  • decoder_attention_mask (torch.LongTensor بشكل (batch_size, target_sequence_length), اختياري) — السلوك الافتراضي: إنشاء متجه يتجاهل رموز الحشو في decoder_input_ids. سيتم استخدام قناع سببي أيضًا بشكل افتراضي. إذا كنت ترغب في تغيير سلوك الحشو، فيجب عليك قراءة modeling_whisper._prepare_decoder_attention_mask وتعديله حسب احتياجاتك. راجع الشكل 1 في ورقة BART لمزيد من المعلومات حول الاستراتيجية الافتراضية.

    إذا كنت ترغب في تغيير سلوك الحشو، فيجب عليك قراءة modeling_whisper._prepare_decoder_attention_mask وتعديله حسب احتياجاتك. راجع الشكل 1 في ورقة BART لمزيد من المعلومات حول الاستراتيجية الافتراضية.

  • encoder_outputs (tuple[tuple[torch.Tensor]]، اختياري) — مجموعة (توبل) تتكون من (last_hidden_state، اختياري: hidden_states، اختياري: attentions) last_hidden_state ذو الشكل (batch_size, sequence_length, hidden_size)، اختياري) هو تسلسل من حالات المخفية (hidden-states) عند مخرج الطبقة الأخيرة من المشفر. يُستخدم في الانتباه المتقاطع (cross-attention) داخل المُفكِّك (decoder).
  • 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).

  • decoder_inputs_embeds (tuple[torch.Tensor] من الشكل (batch_size, target_sequence_length, hidden_size), اختياري) — اختياريًا، بدلاً من تمرير decoder_input_ids يمكنك اختيار تمرير تمثيل مضمّن مباشرة. إذا past_key_values مستخدم، فاختياريًا يجب إدخال آخر decoder_inputs_embeds فقط (انظر past_key_values). هذا مفيد إذا كنت تريد مزيدًا من التحكم في كيفية تحويل decoder_input_ids فهارس إلى المتجهات المرتبطة بها أكثر من مصفوفة البحث التضمينية الداخلية للنموذج.

    إذا لم يتم تعيين كلٍّ من decoder_input_ids وdecoder_inputs_embeds، فإن decoder_inputs_embeds يأخذ قيمة inputs_embeds.

  • decoder_position_ids (torch.LongTensor بشكل (batch_size, sequence_length), اختياري) — مؤشرات مواضع رموز كل تسلسل إدخال في ترميزات المواضع. يتم اختيارها ضمن النطاق [0, config.n_positions - 1].

    ما هي معرّفات المواقع؟

  • labels (torch.LongTensor من الشكل (batch_size, sequence_length)، اختياري) — التسميات لحساب خسارة نمذجة اللغة. يجب أن تكون الفهارس ضمن [0, ..., config.vocab_size] أو -100 (انظر input_ids docstring). يتم تجاهل الرموز التي فهارسها مضبوطة على -100 (قناع)، وتُحسب الخسارة فقط للرموز التي تسمياتها ضمن [0, ..., config.vocab_size]. يجب أن يكون sequence_length أصغر من أو يساوي config.max_target_positions.
  • use_cache (bool، اختياري) — إذا تم تعيينه إلى True، تُعاد حالات المفاتيح والقيم past_key_values ويمكن استخدامها لتسريع فك الترميز (انظر past_key_values).

يعيد

Seq2SeqLMOutput أو tuple(torch.Tensor)

Seq2SeqLMOutput أو مجموعة مرتبة من torch.Tensor (في حال تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة اعتماداً على الإعداد (WhisperConfig) والمدخلات.

تتجاوز طريقة WhisperForConditionalGeneration الخاصة بالتقديم (forward) الطريقة الخاصة __call__.

على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن Module بدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.

  • loss (torch.Tensor of shape (1,), اختياري, يُعاد عند توفير labels) — خسارة نمذجة اللغة.

  • logits (torch.Tensor من الشكل (batch_size, sequence_length, config.vocab_size)) — درجات التنبؤ لرأس نمذجة اللغة (درجات لكل رمز في المفردات قبل SoftMax).

  • past_key_values (EncoderDecoderCache، اختياري، يُعاد عند تمرير use_cache=True أو عند تعيين config.use_cache=True) — إنه كائن من نوع EncoderDecoderCache. لمزيد من التفاصيل، راجع دليل ذاكرة kv.

    تحتوي على حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه الذاتي وكتل الانتباه المتقاطع) يمكن استخدامها (انظر مدخل past_key_values) لتسريع فك الترميز التسلسلي.

  • decoder_hidden_states (tuple(torch.Tensor)، اختياري، يُعاد عند تمرير output_hidden_states=True أو عند تعيين config.output_hidden_states=True) — مجموعة من torch.Tensor (واحدة لإخراج الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لإخراج كل طبقة) بأبعاد (batch_size, sequence_length, hidden_size).

    حالات المخفية (Hidden states) لمفكّك الترميز (decoder) عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي (initial embedding).

  • decoder_attentions (tuple(torch.Tensor)، اختياري، يُعاد عند تمرير output_attentions=True أو عند تعيين config.output_attentions=True) — مجموعة من torch.Tensor (واحدة لكل طبقة) بأبعاد (batch_size, num_heads, sequence_length, sequence_length).

    أوزان الانتباه في المُفكِّك، بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

  • cross_attentions (tuple(torch.Tensor)، اختياري، يُعاد عند تمرير output_attentions=True أو عند تعيين config.output_attentions=True) — مجموعة من torch.Tensor (واحدة لكل طبقة) بأبعاد (batch_size, num_heads, sequence_length, sequence_length).

    أوزان الانتباه لطبقة الانتباه المتقاطع في المُفكِّك، بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه المتقاطع.

  • encoder_last_hidden_state (torch.Tensor من الشكل (batch_size, sequence_length, hidden_size)، اختياري) — تسلسل حالات مخفية عند مخرج الطبقة الأخيرة من مُشفِّر النموذج.

  • encoder_hidden_states (tuple(torch.Tensor)، اختياري، يُعاد عند تمرير output_hidden_states=True أو عند تعيين config.output_hidden_states=True) — مجموعة من torch.Tensor (واحدة لإخراج الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لإخراج كل طبقة) من الشكل (batch_size, sequence_length, hidden_size).

    حالات المخفية للمشفّر عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي.

  • encoder_attentions (tuple(torch.Tensor)، اختياري، يُعاد عند تمرير output_attentions=True أو عند تعيين config.output_attentions=True) — مجموعة من torch.Tensor (واحدة لكل طبقة) بأبعاد (batch_size, num_heads, sequence_length, sequence_length).

    أوزان الانتباه في المُشفِّر، بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

مثال:

>>> import torch
>>> from transformers import AutoProcessor, WhisperForConditionalGeneration
>>> from datasets import load_dataset

>>> processor = AutoProcessor.from_pretrained("openai/whisper-tiny.en")
>>> model = WhisperForConditionalGeneration.from_pretrained("openai/whisper-tiny.en")

>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")

>>> inputs = processor(ds[0]["audio"]["array"], return_tensors="pt")
>>> input_features = inputs.input_features

>>> generated_ids = model.generate(inputs=input_features)

>>> transcription = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
>>> transcription
' Mr. Quilter is the apostle of the middle classes, and we are glad to welcome his gospel.'

generate

< >

( input_features: typing.Optional[torch.Tensor] = Nonegeneration_config: transformers.generation.configuration_utils.GenerationConfig | None = Nonelogits_processor: transformers.generation.logits_process.LogitsProcessorList | None = Nonestopping_criteria: transformers.generation.stopping_criteria.StoppingCriteriaList | None = Noneprefix_allowed_tokens_fn: collections.abc.Callable[[int, torch.Tensor], list[int]] | None = Nonesynced_gpus: bool = Falsereturn_timestamps: bool | None = Nonetask: str | None = Nonelanguage: str | list[str] | None = Noneis_multilingual: bool | None = Noneprompt_ids: typing.Optional[torch.Tensor] = Noneprompt_condition_type: str | None = Nonecondition_on_prev_tokens: bool | None = Nonetemperature: float | tuple[float, ...] | None = Nonecompression_ratio_threshold: float | None = Nonelogprob_threshold: float | None = Noneno_speech_threshold: float | None = Nonenum_segment_frames: int | None = Noneattention_mask: typing.Optional[torch.Tensor] = Nonetime_precision: float = 0.02time_precision_features: float = 0.01return_token_timestamps: bool | None = Nonereturn_segments: bool = Falsereturn_dict_in_generate: bool | None = Noneforce_unique_generate_call: bool | None = Nonemonitor_progress: collections.abc.Callable[[torch.Tensor], None] | None = None**kwargs ) → ModelOutput or dict[str, Any] or torch.LongTensor

المعاملات

  • input_features (torch.Tensor من الشكل (batch_size, feature_size, sequence_length)، اختياري) — قيمات عشرية لميزات log-mel المستخرجة من موجة الصوت الخام. يمكن الحصول على موجة الصوت الخام عن طريق تحميل ملف صوتي من نوع .flac أو .wav في مصفوفة من النوع list[float] أو numpy.ndarray أو torch.Tensor، على سبيل المثال عبر مكتبة torchcodec (pip install torchcodec) أو مكتبة soundfile (pip install soundfile). لتجهيز المصفوفة إلى input_features، يجب استخدام AutoFeatureExtractor لاستخراج ميزات mel وإضافة الحشو والتحويل إلى tensor من النوع torch.Tensor. راجع call() للتفاصيل.
  • generation_config (GenerationConfig, اختياري) — إعدادات التوليد التي تُستخدم كإعدادات أساسية لاستدعاء التوليد. أي **kwargs مرسلة إلى generate تطابق سمات generation_config ستُلغي قيمها. إذا لم يُقدَّم generation_config، فسيُستخدم الإعداد الافتراضي، الذي يتبع أولوية التحميل التالية: 1) من ملف النموذج generation_config.json، إذا كان موجودًا؛ 2) من إعدادات النموذج. يُرجى ملاحظة أن المعاملات غير المحددة ستورث القيم الافتراضية لـ GenerationConfig، ويجب الرجوع إلى توثيقها لضبط توليد المعاملات.
  • logits_processor (LogitsProcessorList، اختياري) — معالجات logits مخصصة تكمل المعالجات الافتراضية المبنية من المعاملات وإعدادات التوليد. إذا تم تمرير معالج logits تم إنشاؤه مسبقًا باستخدام المعاملات أو إعدادات التوليد، فسيتم طرح خطأ. هذه الميزة مخصصة للمستخدمين المتقدمين.
  • stopping_criteria (StoppingCriteriaList، اختياري) — معايير إيقاف مخصصة تكمل معايير الإيقاف الافتراضية المبنية من الحجوزات وإعدادات التوليد. إذا تم تمرير معيار إيقاف تم إنشاؤه مسبقًا باستخدام الحجوزات أو إعدادات التوليد، فسيتم طرح خطأ. هذه الميزة مخصصة للمستخدمين المتقدمين.
  • prefix_allowed_tokens_fn (Callable[[int, torch.Tensor], list[int]]، اختياري) — إذا تم توفيره، فإن هذه الدالة تُقيّد بحث الحزمة (beam search) على الرموز المسموح بها فقط في كل خطوة. إذا لم يُوفَّر، فلا يُطبَّق أي قيد. تستقبل هذه الدالة حجتين: معرّف الدفعة batch_id و input_ids. يجب أن تُرجع قائمة بالرموز المسموح بها لخطوة التوليد التالية، مشروطةً بمعرّف الدفعة batch_id والرموز المولَّدة سابقًا inputs_ids. يُعدّ هذا الحُجّة مفيدًا للتوليد المقيد المشروط على البادئة، كما هو موصوف في Autoregressive Entity Retrieval.
  • synced_gpus (bool، اختياري، القيمة الافتراضية False) — ما إذا كان يجب مواصلة تشغيل حلقة while حتى max_length (وهو أمر ضروري لتجنب التعطّل مع FullyShardedDataParallel وDeepSpeed ZeRO Stage 3).
  • return_timestamps (bool، اختياري) — ما إذا كان يجب إرجاع الأختام الزمنية مع النص. هذا يُفعّل WhisperTimestampsLogitsProcessor. بالنسبة إلى تسجيلات صوتية أطول من 30 ثانية، من الضروري تعيين return_timestamps=True.
  • task (str, اختياري) — المهمة المستخدمة للتوليد، إما “translate” أو “transcribe”.
  • language (str أو قائمة من str، اختياري) — رمز اللغة المستخدم للتوليد، يمكن أن يكون على شكل <|en|> أو en أو english. في حالة التوليد الدُفعي، يمكن تمرير قائمة من رموز اللغة. يمكنك العثور على جميع رموز اللغة الممكنة في قاموس model.generation_config.lang_to_id.
  • is_multilingual (bool، اختياري) — ما إذا كان النموذج متعدد اللغات أم لا.
  • prompt_ids (torch.Tensor، اختياري) — متجه من الرتبة 1 يحتوي على معرّفات الرموز (token IDs) يتم إنشاؤه عن طريق تمرير النص إلى get_prompt_ids()، ويُقدَّم كموجّه (prompt) لكل مقطع. يمكن استخدام هذا المعامل لتوفير سياق أو "هندسة موجّه" لعملية النسخ الصوتي، مثل قواميس مخصصة أو أسماء علمية، لزيادة احتمال توقع هذه الكلمات بشكل صحيح. لا يمكن استخدامه بالتزامن مع decoder_start_token_id لأنه يستبدل قيمته.
  • prompt_condition_type (str, اختياري) — لا ينطبق إلا على النسخ الطويل. نوع الشرط الخاص بـprompt_ids. تعني قيمة ‘first-segment’ أن المقطع الأول فقط مشروط بـprompt_ids. وتعني قيمة ‘all-segments’ أن كل مقطع مشروط بـprompt_ids. تأكد من تفعيل condition_on_prev_tokens عند استخدام ‘all-segments’. القيمة الافتراضية هي ‘first-segment’. وفي حالة النسخ قصير المدى، تكون قيمة ‘first-segment’ هي الخيار الوحيد الممكن.
  • condition_on_prev_tokens (bool، اختياري) — يُعدّ ذا صلة فقط بالنسخ الصوتي الطويل. يحدد ما إذا كان يجب اشتقاق كل مقطع من المقطع السابق. كما هو موضح في ورقة Whisper، يمكن أن يساعد ذلك في تحسين الأداء.
  • temperature (float أو قائمة من float، اختياري) — درجة الحرارة المستخدمة للتوليد. تمرير قيمة float واحدة مع do_sample=True يُفعّل التوليد باستخدام العيّنة. بالنسبة للنسخ الطويل، يمكن تفعيل درجة الحرارة الاحتياطية عن طريق تمرير قائمة من قيم float مثل (0.0, 0.2, 0.4, 0.6, 0.8, 1.0). كما هو موضح في ورقة Whisper، يمكن أن يساعد ذلك في تحسين الأداء.
  • compression_ratio_threshold (float, اختياري) — يُعدّ هذا الخيار ذا صلة فقط بالنسخ الصوتي الطويل. إذا تم تعريفه، فسيتم حساب معدل ضغط zlib لكل مقطع. إذا كان معدل ضغط المقطع أعلى من compression_ratio_threshold، يتم تفعيل آلية الرجوع إلى درجة حرارة (temperature) بديلة: يُستبعد المقطع المولَّد ويُعاد توليده باستخدام درجة حرارة أعلى. الفكرة الكامنة وراء هذه الميزة هي أن المقاطع ذات معدلات الضغط العالية جدًا تعاني من تكرار كبير. يمكن تقليل التكرار غير المرغوب فيه عن طريق حقن المزيد من العشوائية من خلال زيادة درجة الحرارة. إذا تم تعريف compression_ratio_threshold تأكد من أن temperature هو قائمة من القيم. قيمة شائعة لـ compression_ratio_threshold هي 1.35. كما هو موضح في ورقة Whisper، يمكن أن يساعد ذلك في تحسين الأداء.
  • logprob_threshold (float, اختياري) — يُعدّ هذا الخيار ذا صلة فقط بالنسخ الصوتي الطويل. إذا تم تعريفه، فسيتم حساب متوسط الاحتمال اللوغاريتمي (log-probability) لكل مقطع. إذا كان الاحتمال اللوغاريتمي لمقطع معيّن أقل من logprob_threshold، يتم تفعيل آلية الرجوع إلى درجة الحرارة (temperature fallback): حيث يُستبعد المقطع المولّد ويُعاد توليده باستخدام درجة حرارة أعلى. الفكرة الكامنة وراء هذه الميزة هي أن المقاطع ذات الاحتمال اللوغاريتمي المنخفض يمكن تحسينها عن طريق زيادة العشوائية من خلال رفع درجة الحرارة. إذا تم تعريف logprob_threshold، فتأكد من أن temperature هو قائمة من القيم. قيمة شائعة لـ logprob_threshold هي -1.0. كما هو موضح في ورقة Whisper، يمكن أن يساعد ذلك في تحسين الأداء.
  • no_speech_threshold (float, اختياري) — يُعدّ هذا المعامل ذا صلة فقط بالنسخ الصوتي الطويل. إذا تم تعريفه، يُستخدم رمز "لا يوجد كلام" بالاقتران مع logprob_threshold لتحديد ما إذا كان المقطع يحتوي على صمت فقط. في هذه الحالة، يتم تجاوز النسخ الصوتي لهذا المقطع. كما هو موضح في ورقة Whisper، يمكن أن يساعد ذلك في تحسين الأداء.
  • num_segment_frames (int, اختياري) — عدد الإطارات التي يتكون منها مقطع واحد. إذا لم يُعرَّف، فإن num_segment_frames يتخذ افتراضيًا قيمة خطوة النموذج مضروبة في الحد الأقصى لطول الإدخال.
  • attention_mask (torch.Tensor، اختياري) — يجب تمرير attention_mask عند إجراء النسخ الطويل باستخدام حجم دفعة > 1.
  • time_precision (int، اختياري، القيمة الافتراضية 0.02) — مدة رمز الإخراج بالثواني. على سبيل المثال، يعني 0.02 أن الرمز المولَّد يمثل في المتوسط 20 مللي ثانية.
  • time_precision_features (int، اختياري، القيمة الافتراضية 0.01) — المدة الزمنية التي يمثلها إطار الميزة بالثواني.
  • return_token_timestamps (bool, اختياري) — ما إذا كان يجب إرجاع طوابع زمنية على مستوى الرموز مع النص. يمكن استخدام هذا الخيار مع أو بدون خيار return_timestamps. للحصول على طوابع زمنية على مستوى الكلمات، استخدم مُجزّئ الرموز لتجميع الرموز في كلمات.
  • return_segments (bool، اختياري، القيمة الافتراضية False) — ما إذا كان يجب إرجاع قائمة بجميع المقاطع بشكل إضافي. لاحظ أن هذا الخيار يمكن تفعيله فقط عند إجراء النسخ الطويل.
  • return_dict_in_generate (bool، اختياري، القيمة الافتراضية False) — ما إذا كان يجب إرجاع ModelOutput بدلاً من إرجاع الرموز المولّدة فقط. يُرجى ملاحظة أنه عند إجراء النسخ الطويل، لا يمكن تفعيل return_dict_in_generate إلا عند تعيين return_segments إلى True. في هذه الحالة، تُضاف مخرجات التوليد لكل مقطع إلى المقطع نفسه.
  • force_unique_generate_call (bool، اختياري) — ما إذا كان يجب إجبار استدعاء فريد لطريقة generate() في GenerationMixin الأساسية. هذا مفيد لأغراض فك التشفير المساعد والاختبار لضمان إجراء استدعاء واحد فقط إلى generate() وبالتالي إرجاع معرّفات رموز مدخلات المُفكّك ومعرّفات رموز eos.
  • monitor_progress (Callable[[torch.Tensor], None], اختياري) — إذا تم توفيره، يمكن استدعاء هذه الدالة للإبلاغ عن تقدم عملية النسخ الصوتي. تتلقى الدالة معاملًا من نوع tensor باسم p بأبعاد (n, 2)، حيث n هو حجم الدفعة (batch size). يحتوي p[i, 0] على مؤشر إطار الصوت الذي يتم نسخه حاليًا للعنصر i في الدفعة. يحتوي p[i, 1] على إجمالي عدد الإطارات للعنصر i في الدفعة. لا يُتوقع وجود قيمة إرجاع.
  • kwargs (dict[str, Any], اختياري) — تحديد معلمات بشكل مؤقت لـ generate_config و/أو معلمات إضافية خاصة بالنموذج سيتم تحويلها إلى دالة forward الخاصة بالنموذج. إذا كان النموذج من نوع المُشفِّر-المُفكِّك (encoder-decoder)، فيجب عدم إضافة بادئة للمعلمات الخاصة بالمُشفِّر، بينما يجب إضافة بادئة decoder_ للمعلمات الخاصة بالمُفكِّك.

يعيد

ModelOutput أو dict[str, Any] أو torch.LongTensor

أحد ما يلي:

  • ModelOutput عندما يكون return_dict_in_generate=True و(return_timestamps=False أو force_unique_generate_call=True)، بما في ذلك معرّفات مدخلات المُفكِّك ومعرّف نهاية التسلسل.
  • dict[str, Any] عندما (return_dict_in_generate=True و return_timestamps=True) أو return_segments=True أو return_token_timestamps=True.
  • torch.LongTensor في جميع الحالات الأخرى، باستثناء معرّفات مدخلات المُفكِّك ومعرّف نهاية التسلسل.

الأنواع الممكنة لـ ModelOutput هي:

segments هو قائمة من القوائم (قائمة واحدة لكل عنصر في الدفعة) من segment. وsegment هو قاموس بمفاتيح start وend وtokens وidxs وresult.

  • start: طابع الوقت لبدء المقطع.
  • end: الطابع الزمني لنهاية المقطع.
  • tokens: الرموز الخاصة بالمقطع، باستثناء معرّفات مدخلات المُفكِّك ومعرّف نهاية التسلسل.
  • idxs: الفهرس الابتدائي (مشمول) والفهرس النهائي (غير مشمول) لـtokens للمقطع في الاستدعاء الأساسي لـgenerate() الخاص بـGenerationMixin (الموجود في result).
  • result: نتيجة الاستدعاء الأساسي لـ generate() في GenerationMixin.

عندما يكون return_timestamps=True، فإن return_dict_in_generate=True ينطبق على كل استدعاء لدالة generate() في GenerationMixin الأساسية، مع تخزين المخرجات في result لكل segment.

ينسخ أو يترجم ميزات الإدخال من نوع log-mel إلى تسلسل من معرّفات الرموز (token ids) المولّدة بشكل ذاتي التراجع (auto-regressive).

تُضبط معظم المعلمات التي تتحكم في التوليد في generation_config، والتي إذا لم تُمرَّر، فسيتم ضبطها على إعدادات التوليد الافتراضية للنموذج. يمكنك تجاوز أي generation_config عن طريق تمرير المعلمات المقابلة إلى generate()، على سبيل المثال .generate(inputs, num_beams=4, do_sample=True).

لمراجعة عامة لاستراتيجيات التوليد وأمثلة الأكواد، راجع الدليل التالي.

مثال:

  • Longform transcription: To transcribe or translate audios longer than 30 seconds, process the audio files without truncation and pass all mel features at once to generate. It is necessary to set return_timestamps=True. Indeed, long-form transcription uses a sequential algorithm based on timestamps predictions, with heuristics like compression ratio threshold, log probability threshold and temperature fallback. This algorithm is described in the the Whisper original paper, section 3.8. Long-form Transcription.
>>> import torch
>>> from transformers import AutoProcessor, WhisperForConditionalGeneration
>>> from datasets import load_dataset, Audio

>>> processor = AutoProcessor.from_pretrained("openai/whisper-tiny.en")
>>> model = WhisperForConditionalGeneration.from_pretrained("openai/whisper-tiny.en")
>>> model.cuda()
>>> # load audios > 30 seconds
>>> ds = load_dataset("distil-whisper/meanwhile", "default")["test"]
>>> # resample to 16kHz
>>> ds = ds.cast_column("audio", Audio(sampling_rate=16000))
>>> # take first 8 audios and retrieve array
>>> audio = ds[:8]["audio"]
>>> audio = [x["array"] for x in audio]

>>> # make sure to NOT truncate the input audio, to return the `attention_mask` and to pad to the longest audio
>>> inputs = processor(audio, return_tensors="pt", truncation=False, padding="longest", return_attention_mask=True, sampling_rate=16_000)
>>> inputs = inputs.to("cuda", torch.float32)

>>> # transcribe audio to ids
>>> generated_ids = model.generate(**inputs, return_timestamps=True)

>>> transcription = processor.batch_decode(generated_ids, skip_special_tokens=True)
>>> transcription[0]
" Folks, if you watch the show, you know, I spent a lot of time right over there. Patiently and astutely scrutinizing the boxwood and mahogany chest set of the day's biggest stories developing the central headline pawns, definitely maneuvering an oso topical night to F6, fainting a classic Sicilian, nade door variation on the news, all the while seeing eight moves deep and patiently marshalling the latest press releases into a fisher's shows in Lip Nitsky attack that culminates in the elegant lethal slow-played, all-passant checkmate that is my nightly monologue. But sometimes, sometimes, folks, I. CHEERING AND APPLAUSE Sometimes I startle away, cubside down in the monkey bars of a condemned playground on a super fun site. Get all hept up on goofballs. Rummage that were discarded tag bag of defective toys. Yank out a fist bowl of disembodied doll limbs, toss them on a stained kid's place mat from a defunct dennies. set up a table inside a rusty cargo container down by the Wharf and challenged toothless drifters to the godless bughouse blitz of tournament that is my segment. Meanwhile."

يمكن استخدام استدعاء monitor_progress لمراقبة تقدم عملية النسخ:

>>> from tqdm import tqdm

>>> # prepare inputs like above

>>> # define a callback to monitor the progress of the transcription.
>>> with tqdm(desc="Progress") as pbar:
>>>     def monitor_progress(p_batch):
>>>         i = torch.argmax(p_batch[:, 1])
>>>         p = p_batch[i].detach().cpu()
>>>         pbar.total = int(p[1])
>>>         pbar.n = int(p[0])
>>>         pbar.update()

>>>     # transcribe audio to ids
>>>     generated_ids = model.generate(**inputs, return_timestamps=True, monitor_progress=monitor_progress)

>>> transcription = processor.batch_decode(generated_ids, skip_special_tokens=True)
>>> transcription[0]
Progress:  95%|█████████████████████████████████████████████████████████████████████████████████████████████████▎    | 8497/8901 [00:04<00:00, 2052.79it/s]
" Folks, if you watch the show, you know, I spent a lot of time right over there. Patiently and astutely scrutinizing the boxwood and mahogany chest set of the day's biggest stories developing the central headline pawns, definitely maneuvering an oso topical night to F6, fainting a classic Sicilian, nade door variation on the news, all the while seeing eight moves deep and patiently marshalling the latest press releases into a fisher's shows in Lip Nitsky attack that culminates in the elegant lethal slow-played, all-passant checkmate that is my nightly monologue. But sometimes, sometimes, folks, I. CHEERING AND APPLAUSE Sometimes I startle away, cubside down in the monkey bars of a condemned playground on a super fun site. Get all hept up on goofballs. Rummage that were discarded tag bag of defective toys. Yank out a fist bowl of disembodied doll limbs, toss them on a stained kid's place mat from a defunct dennies. set up a table inside a rusty cargo container down by the Wharf and challenged toothless drifters to the godless bughouse blitz of tournament that is my segment. Meanwhile."
  • نسخة قصيرة: إذا كانت ميزات المدخلات الممرّرة من نوع mel أقل من أو تساوي 30 ثانية، فهناك احتمالان:
    • return_timestamps=False: سيتم نقل النص الكامل للصوت في استدعاء واحد لدالة generate() الخاصة بـ GenerationMixin.
    • return_timestamps=True: سيتم نقل النص الصوتي باستخدام المنطق نفسه المعتمد في نقل النصوص الطويلة.
>>> import torch
>>> from transformers import AutoProcessor, WhisperForConditionalGeneration
>>> from datasets import load_dataset

>>> processor = AutoProcessor.from_pretrained("openai/whisper-tiny.en")
>>> model = WhisperForConditionalGeneration.from_pretrained("openai/whisper-tiny.en")

>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")

>>> inputs = processor(ds[0]["audio"]["array"], return_tensors="pt")
>>> input_features = inputs.input_features

>>> generated_ids = model.generate(inputs=input_features)

>>> transcription = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
>>> transcription
' Mr. Quilter is the apostle of the middle classes, and we are glad to welcome his gospel.'

WhisperForCausalLM

فئة transformers.WhisperForCausalLM

< >

( config: WhisperConfig )

المعاملات

  • config (WhisperConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعداد إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.

مفكك Whisper مع رأس لنمذجة اللغة في الأعلى (طبقة خطية بأوزان مرتبطة بالتضمينات المدخلة).

يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneencoder_outputs: tuple[torch.Tensor] | None = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = None**kwargs ) → CausalLMOutputWithCrossAttentions or tuple(torch.Tensor)

المعاملات

  • 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 للرموز التي تم إخفاؤها.

    ما هي أقنعة الانتباه؟

  • encoder_outputs (torch.Tensor من الشكل (batch_size, sequence_length, hidden_size)، اختياري) — تسلسل حالات الخفاء عند مخرج الطبقة الأخيرة من المُشفِّر. يُستخدم في الانتباه المتقاطع إذا كان النموذج مُهيأً كمُفكِّك.
  • 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)، اختياري) — التسميات لحساب خسارة نمذجة اللغة المقنّعة. يجب أن تكون الفهارس ضمن [0, ..., config.vocab_size] أو -100 (انظر input_ids docstring). يتم تجاهل الرموز التي فهارسها مضبوطة على -100 (مقنّعة)، ولا تُحسب الخسارة إلا للرموز التي تسمياتها ضمن [0, ..., config.vocab_size].
  • use_cache (bool، اختياري) — إذا تم تعيينه إلى True، تُعاد حالات المفاتيح والقيم past_key_values ويمكن استخدامها لتسريع فك الترميز (انظر past_key_values).

يعيد

CausalLMOutputWithCrossAttentions أو tuple(torch.Tensor)

CausalLMOutputWithCrossAttentions أو مجموعة (tuple) من torch.Tensor (في حال تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة تعتمد على الإعداد (WhisperConfig) والمدخلات.

تتجاوز طريقة WhisperForCausalLM الخاصة بالتقديم (forward) الطريقة الخاصة __call__.

على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن Module بدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.

  • loss (torch.Tensor of shape (1,), اختياري, يُعاد عند توفير labels) — خسارة نمذجة اللغة (لتوقع الرمز التالي).

  • logits (torch.Tensor من الشكل (batch_size, sequence_length, config.vocab_size)) — درجات التنبؤ لرأس نمذجة اللغة (درجات لكل رمز في المفردات قبل SoftMax).

  • 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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

  • cross_attentions (tuple(torch.Tensor)، اختياري، يُعاد عند تمرير output_attentions=True أو عند تعيين config.output_attentions=True) — مجموعة من torch.Tensor (واحدة لكل طبقة) بأبعاد (batch_size, num_heads, sequence_length, sequence_length).

    أوزان الانتباه المتقاطع بعد دالة softmax للانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه المتقاطع.

  • past_key_values (Cache، اختياري، يُعاد عند تمرير use_cache=True أو عند تعيين config.use_cache=True) — إنه كائن من نوع Cache. لمزيد من التفاصيل، راجع دليل ذاكرة kv.

    تحتوي على حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه) يمكن استخدامها (انظر مدخل past_key_values) لتسريع فك الترميز التسلسلي.

مثال:

>>> from transformers import WhisperForCausalLM, WhisperForConditionalGeneration, WhisperProcessor
>>> import torch
>>> from datasets import load_dataset

>>> processor = WhisperProcessor.from_pretrained("openai/whisper-large-v2")
>>> model = WhisperForConditionalGeneration.from_pretrained("openai/whisper-large-v2")

>>> assistant_model = WhisperForCausalLM.from_pretrained("distil-whisper/distil-large-v2")

>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
>>> sample = ds[0]["audio"]
>>> input_features = processor(
...     sample["array"], sampling_rate=sample["sampling_rate"], return_tensors="pt"
... ).input_features

>>> predicted_ids = model.generate(input_features, assistant_model=assistant_model)

>>> # decode token ids to text
>>> transcription = processor.batch_decode(predicted_ids, skip_special_tokens=True)[0]
>>> transcription
' Mr. Quilter is the apostle of the middle classes and we are glad to welcome his gospel.'

WhisperForAudioClassification

فئة transformers.WhisperForAudioClassification

< >

( config: WhisperConfig )

المعاملات

  • config (WhisperConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعداد إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.

نموذج Whisper Encoder مع رأس تصنيف تسلسل في الأعلى (طبقة خطية فوق المخرجات المجمّعة) للمهام مثل SUPERB Keyword Spotting.

يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

forward

< >

( input_features: typing.Optional[torch.LongTensor] = Noneencoder_outputs: tuple[tuple[torch.Tensor]] | None = Nonelabels: typing.Optional[torch.LongTensor] = None**kwargs ) → SequenceClassifierOutput or tuple(torch.Tensor)

المعاملات

  • input_features (torch.LongTensor of shape (batch_size, sequence_length, feature_dim), اختياري) — المصفوفات المقابلة لميزات الصوت المدخلة. يمكن الحصول على ميزات الصوت باستخدام WhisperFeatureExtractor. راجع WhisperFeatureExtractor.call() للتفاصيل (WhisperProcessor يستخدم WhisperFeatureExtractor لمعالجة الملفات الصوتية).
  • encoder_outputs (tuple[tuple[torch.Tensor]]، اختياري) — مجموعة (توبل) تتكون من (last_hidden_state، اختياري: hidden_states، اختياري: attentions) last_hidden_state ذو الشكل (batch_size, sequence_length, hidden_size)، اختياري) هو تسلسل من حالات المخفية (hidden-states) عند مخرج الطبقة الأخيرة من المشفر. يُستخدم في الانتباه المتقاطع (cross-attention) داخل المُفكِّك (decoder).
  • labels (torch.LongTensor من الشكل (batch_size,)، اختياري) — التسميات لحساب خسارة تصنيف/الانحدار التسلسلي. يجب أن تكون الفهارس ضمن [0, ..., config.num_labels - 1]. إذا كان config.num_labels == 1 يتم حساب خسارة الانحدار (خسارة متوسط المربع)، وإذا كان config.num_labels > 1 يتم حساب خسارة التصنيف (الإنتروبيا المتقاطعة).

يعيد

SequenceClassifierOutput أو tuple(torch.Tensor)

SequenceClassifierOutput أو مجموعة مرتبة من torch.Tensor (في حال تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة تعتمد على الإعداد (WhisperConfig) والمدخلات.

تتجاوز طريقة WhisperForAudioClassification الخاصة بالتقديم (forward) الطريقة الخاصة __call__.

على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن Module بدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.

  • loss (torch.Tensor من الشكل (1,)، اختياري، يُعاد عند توفير labels) — خسارة التصنيف (أو الانحدار إذا كان config.num_labels==1).

  • logits (torch.Tensor من الشكل (batch_size, config.num_labels)) — درجات التصنيف (أو الانحدار إذا كان config.num_labels==1) (قبل SoftMax).

  • 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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

مثال:

>>> import torch
>>> from transformers import AutoFeatureExtractor, WhisperForAudioClassification
>>> from datasets import load_dataset

>>> feature_extractor = AutoFeatureExtractor.from_pretrained("sanchit-gandhi/whisper-medium-fleurs-lang-id")
>>> model = WhisperForAudioClassification.from_pretrained("sanchit-gandhi/whisper-medium-fleurs-lang-id")

>>> ds = load_dataset("google/fleurs", "all", split="validation", streaming=True)
>>> sample = next(iter(ds))

>>> inputs = feature_extractor(
...     sample["audio"]["array"], sampling_rate=sample["audio"]["sampling_rate"], return_tensors="pt"
... )
>>> input_features = inputs.input_features

>>> with torch.no_grad():
...     logits = model(input_features).logits

>>> predicted_class_ids = torch.argmax(logits).item()
>>> predicted_label = model.config.id2label[predicted_class_ids]
>>> predicted_label
'Afrikaans'
Update on GitHub