Transformers documentation
Whisper
نُشر هذا النموذج في أوراق HF في 2022-12-06 وسُهم به في Hugging Face Transformers في 2022-10-05.
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.
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")# pip install datasets
from datasets import load_dataset
from transformers import AutoProcessor, WhisperForConditionalGeneration
processor = AutoProcessor.from_pretrained(
"openai/whisper-large-v3-turbo",
)
model = WhisperForConditionalGeneration.from_pretrained(
"openai/whisper-large-v3-turbo",
device_map="auto",
attn_implementation="sdpa"
)
ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
audio_sample = ds[0]["audio"]
input_features = processor(
audio_sample["array"],
sampling_rate=audio_sample["sampling_rate"],
return_tensors="pt"
).input_features
input_features = input_features.to(model.device, dtype=model.dtype)
predicted_ids = model.generate(input_features, cache_implementation="static")
transcription = processor.batch_decode(predicted_ids, skip_special_tokens=True)
transcription[0]ملاحظات
- Whisper relies on a custom
generatefor inference, make sure to check the docs below. - يمكن استخدام WhisperProcessor لتحضير الصوت وفك ترميز المعرّفات المتنبأ بها إلى نص.
WhisperConfig
فئة transformers.WhisperConfig
< 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 = 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.configWhisperTokenizer
فئة transformers.WhisperTokenizer
< source >( 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
< source >( language: str | None = Nonetask: str | None = Nonepredict_timestamps: bool | None = None )
المعاملات
تجاوز الرموز البادئة المضافة إلى بداية تسلسل التسميات. يمكن استخدام هذه الطريقة بشكل مستقل لـ
حدّث رموز البادئة كما هو مطلوب عند الضبط الدقيق. مثال:
>>> # 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
< source >( 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 في مُجزّئ النص.
batch_decode
< source >( 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
< source >( 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)).
قم بتطبيع نصّ معيّن باستخدام فئة BasicTextNormalizer، التي تُجري تحويلات شائعة على النصوص متعددة اللغات.
قم بتطبيع نصّ معيّن باستخدام فئة EnglishTextNormalizer، التي تنفّذ تحويلات شائعة على النصّ الإنجليزي.
WhisperFeatureExtractor
فئة transformers.WhisperFeatureExtractor
< source >( 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__
< source >( 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
< source >( feature_extractortokenizer )
ينشئ كائن WhisperProcessor يجمع مستخرج الميزات ومجزئ الرموز في معالج واحد.
يوفر WhisperProcessor جميع وظائف WhisperFeatureExtractor وWhisperTokenizer. راجع ~WhisperFeatureExtractor و~WhisperTokenizer لمزيد من المعلومات.
__call__
< source >( *args**kwargs )
المعاملات
- return_tensors (
strأو TensorType, اختياري) — إذا تم تعيينه، فسيُعاد تينسورات من إطار عمل محدد. القيم المقبولة هي:'pt': إرجاع كائناتtorch.Tensorمن PyTorch.'np': إرجاع كائناتnp.ndarrayمن NumPy.
from_pretrained
< source >( 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
< source >( 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() الخاصة بـ PreTrainedTokenizer. يُرجى الرجوع إلى سلسلة التوثيق (docstring) لهذه الطريقة لمزيد من المعلومات.
تُمرّر هذه الطريقة جميع معاملاتها إلى decode() الخاصة بـ PreTrainedTokenizer. يُرجى الرجوع إلى سلسلة التوثيق (docstring) لهذه الطريقة لمزيد من المعلومات.
WhisperModel
فئة transformers.WhisperModel
< source >( config: WhisperConfig )
المعاملات
- config (WhisperConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعداد إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج Whisper الأساسي الذي يُخرج حالات مخفية خام دون أي رأس محدد في الأعلى.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( 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.Tensorof 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
< source >( input_features: Tensorattention_mask: typing.Optional[torch.LongTensor] = None )
تُزيل الأقنعة الميزات المستخرجة على محور الزمن و/أو على محور الميزات وفقاً لـ SpecAugment.
WhisperForConditionalGeneration
فئة transformers.WhisperForConditionalGeneration
< source >( config: WhisperConfig )
المعاملات
- config (WhisperConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعداد إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج Whisper مع رأس لنمذجة اللغة. يمكن استخدامه للتعرف التلقائي على الكلام.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( 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_idsdocstring). يتم تجاهل الرموز التي فهارسها مضبوطة على-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.Tensorof 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
< source >( 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
< source >( config: WhisperConfig )
المعاملات
- config (WhisperConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعداد إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
مفكك Whisper مع رأس لنمذجة اللغة في الأعلى (طبقة خطية بأوزان مرتبطة بالتضمينات المدخلة).
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( 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_idsdocstring). يتم تجاهل الرموز التي فهارسها مضبوطة على-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.Tensorof 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
< source >( config: WhisperConfig )
المعاملات
- config (WhisperConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعداد إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج Whisper Encoder مع رأس تصنيف تسلسل في الأعلى (طبقة خطية فوق المخرجات المجمّعة) للمهام مثل SUPERB Keyword Spotting.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( 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.LongTensorof 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'