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

Bu model 2022-12-06 tarihinde HF papers'ta yayımlanmış ve 2022-10-05 tarihinde Hugging Face Transformers'a katkıda bulunulmuştur.

FlashAttention SDPA

Whisper

Whisper, 680.000 saatlik etiketli ses verisi üzerinde ön eğitilmiş bir kodlayıcı-çözücü (diziden-diziye) transformer'dır. Bu miktardaki ön eğitim verisi, İngilizce ve birçok diğer dilde ses görevlerinde sıfır atış (zero-shot) performansını mümkün kılar. Çözücü, Whisper'ın kodlayıcının öğrendiği ses temsillerini ek bir ince ayar gerektirmeden metin gibi faydalı çıktılara eşlemesini sağlar. Whisper, kutudan çıktığı gibi çalışır.

Tüm orijinal Whisper kontrol noktalarını Whisper koleksiyonunda bulabilirsiniz.

Whisper'i farklı ses görevlerine nasıl uygulayacağınızla ilgili daha fazla örnek için sağ kenar çubuğundaki Whisper modellerine tıklayın.

from_pretrained() içinde use_kernels=True değerini ayarlayarak desteklenen katmanları Hub'daki optimize edilmiş çekirdeklerle değiştirin. Daha fazla bilgi için Çekirdekleri yükleme bölümüne bakın.

Aşağıdaki örnek, Pipeline veya AutoModel sınıfı ile konuşmanın otomatik olarak metne dönüştürülmesini göstermektedir.

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")

Notlar

  • Whisper, çıkarım için özel bir generate kullanır; aşağıdaki belgeleri kontrol etmeyi unutmayın.
  • WhisperProcessor, ses verilerini hazırlamak ve tahmin edilen kimlikleri tekrar metne dönüştürmek için kullanılabilir.

WhisperConfig

sınıf 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 )

Parametreler

  • is_encoder_decoder (bool, isteğe bağlı, varsayılan True) — Modelin bir kodlayıcı/çözücü olarak kullanılıp kullanılmadığı.
  • vocab_size (int, isteğe bağlı, varsayılan 51865) — Modelin sözlük boyutu. input_ids ile temsil edilebilecek farklı token sayısını belirler.
  • num_mel_bins (int, isteğe bağlı, varsayılan 80) — Giriş başına kullanılan mel özellik sayısı. AutoFeatureExtractor sınıfında kullanılan değerle eşleşmelidir.
  • encoder_layers (int, isteğe bağlı, varsayılan 4) — Transformer kodlayıcısındaki gizli katman sayısı. Ayarlanmazsa num_layers ile aynı değeri kullanır.
  • encoder_attention_heads (int, isteğe bağlı, varsayılan 6) — Transformer kodlayıcısındaki her dikkat katmanı için dikkat başı sayısı.
  • decoder_layers (int, isteğe bağlı, varsayılan 4) — Transformer decoder'ındaki gizli katman sayısı. Ayarlanmazsa num_layers ile aynı değeri kullanır.
  • decoder_attention_heads (int, isteğe bağlı, varsayılan 6) — Transformer decoder'ındaki her dikkat katmanı için dikkat başı sayısı.
  • decoder_ffn_dim (int, isteğe bağlı, varsayılan 1536) — Decoder'daki "ara" (genellikle feed-forward olarak adlandırılan) katmanın boyutluluğu.
  • encoder_ffn_dim (int, isteğe bağlı, varsayılan 1536) — Encoder'daki “ara” (genellikle feed-forward olarak adlandırılan) katmanın boyutu.
  • encoder_layerdrop (Union[float, int], isteğe bağlı, varsayılan 0.0) — Encoder için LayerDrop olasılığı. Daha fazla ayrıntı için [LayerDrop makalesine](bkz. https://huggingface.co/papers/1909.11556) bakın.
  • decoder_layerdrop (Union[float, int], isteğe bağlı, varsayılan 0.0) — Çözücü için LayerDrop olasılığı. Daha fazla ayrıntı için [LayerDrop makalesine](bkz. https://huggingface.co/papers/1909.11556) bakın.
  • decoder_start_token_id (int, isteğe bağlı, varsayılan 50257) — Bir encoder-decoder modeli, bos ile farklı bir token ile çözmeye başlıyorsa, o token'ın kimliği.
  • use_cache (bool, isteğe bağlı, varsayılan True) — Modelin son anahtar/değer dikkatlerini (tüm modellerde kullanılmaz) döndürüp döndürmeyeceği. Yalnızca config.is_decoder=True olduğunda veya model yalnızca çözücü tabanlı üretken bir model olduğunda geçerlidir.
  • activation_function (str, isteğe bağlı, varsayılan gelu) — Çözücüdeki doğrusal olmayan aktivasyon fonksiyonu (fonksiyon veya dize). Örneğin, "gelu", "relu", "silu" vb.
  • d_model (int, isteğe bağlı, varsayılan 384) — Kodlayıcı katmanlarının ve pooler katmanının boyutu.
  • dropout (Union[float, int], isteğe bağlı, varsayılan 0.0) — Tüm dropout katmanları için oran.
  • attention_dropout (Union[float, int], isteğe bağlı, varsayılan 0.0) — Dikkat olasılıkları için dropout oranı.
  • activation_dropout (Union[float, int], isteğe bağlı, varsayılan 0.0) — Tamamen bağlı katmandaki aktivasyonlar için dropout oranı.
  • init_std (float, isteğe bağlı, varsayılan 0.02) — Tüm ağırlık matrislerini başlatmak için kullanılan truncated_normal_initializer'ın standart sapması.
  • scale_embedding (bool, isteğe bağlı, varsayılan False) — Gömme değerlerinin sqrt(d_model) ile bölünerek ölçeklendirilip ölçeklendirilmeyeceğini belirtir.
  • max_source_positions (int, isteğe bağlı, varsayılan 1500) — Bu modelin kullanılabileceği log-mel filtre bankası özelliklerinin maksimum dizi uzunluğu.
  • max_target_positions (int, isteğe bağlı, varsayılan 448) — Bu modelin kullanılabileceği maksimum dizi uzunluğu. Olası durumlara karşı genellikle büyük bir değere ayarlanır (ör. 512, 1024 veya 2048).
  • pad_token_id (int, isteğe bağlı, varsayılan 50256) — Sözlükte dolgu için kullanılan token kimliği.
  • bos_token_id (int, isteğe bağlı, varsayılan 50256) — Sözlükte akış başlangıcı için kullanılan token kimliği.
  • eos_token_id (Union[int, list[int]], isteğe bağlı, varsayılan 50256) — Sözlükte akış sonu için kullanılan token kimliği.
  • suppress_tokens (list[int], isteğe bağlı) — generate işlevinde logit işleyicisi tarafından kullanılacak konuşma dışı tokenları içeren bir liste. NON_SPEECH_TOKENS ve NON_SPEECH_TOKENS_MULTI, sırasıyla english-only ve multilingual modellerine karşılık gelir.
  • begin_suppress_tokens (list[int], isteğe bağlı, varsayılan [220,50256]) — Örnekleme sürecinin başında bastırılacak tokenları içeren bir liste. " " tokeni (blank_token_id) ve eos_token_id ile başlatılır.
  • use_weighted_layer_sum (bool, isteğe bağlı, varsayılan False) — Öğrenilen ağırlıklarla katman çıktıları için ağırlıklı ortalama kullanılıp kullanılmayacağı. Yalnızca WhisperForAudioClassification örneği kullanıldığında geçerlidir.
  • classifier_proj_size (int, isteğe bağlı, varsayılan 256) — Sınıflandırma için token ortalama havuzlamadan önceki projeksiyonun boyutu. Yalnızca WhisperForAudioClassification bir örneği kullanıldığında geçerlidir.
  • apply_spec_augment (bool, isteğe bağlı, varsayılan False) — Özellik kodlayıcısının çıktılarında SpecAugment veri artırma uygulayıp uygulamayacağı. Referans için bkz. SpecAugment: A Simple Data Augmentation Method for Automatic Speech Recognition.
  • mask_time_prob (float, isteğe bağlı, varsayılan 0.05) — Zaman ekseni boyunca maskelenecek tüm özellik vektörlerinin yüzdesi (0 ile 1 arasında). Maskeleme işlemi, eksen üzerinde mask_time_prob*len(time_axis)/mask_time_length adet bağımsız maske üretir. Her bir özellik vektörünün, maskelenecek vektör aralığının başlangıcı olarak seçilme olasılığından yola çıkarak düşünülürse, mask_time_prob değeri prob_vector_start*mask_time_length olmalıdır. Dikkat edin, örtüşme, maskelenen vektörlerin gerçek yüzdesini azaltabilir. Bu, yalnızca apply_spec_augment == True olduğunda geçerlidir.
  • mask_time_length (int, isteğe bağlı, varsayılan 10) — Zaman ekseni boyunca vektör aralığının uzunluğu.
  • mask_time_min_masks (int, isteğe bağlı, varsayılan 2), — Zaman ekseninde, her zaman adımı için, mask_feature_prob değerinden bağımsız olarak üretilen, mask_feature_length uzunluğundaki maskelerin minimum sayısı. Yalnızca ”mask_time_prob*len(time_axis)/mask_time_length < mask_time_min_masks” durumu geçerliyse ilgili.
  • mask_feature_prob (float, isteğe bağlı, varsayılan 0.0) — Özellik ekseni boyunca, maskelenmesi gereken tüm özellik vektörlerinin yüzdesi (0 ile 1 arasında). Maskeleme işlemi, eksen üzerinde mask_feature_prob*len(feature_axis)/mask_time_length adet bağımsız maske üretir. Maskelenecek vektör aralığının başlangıcı olarak seçilecek her özellik vektörünün olasılığından yola çıkarak akıl yürütülürse, mask_feature_prob değeri prob_vector_start*mask_feature_length olmalıdır. Dikkat edin, örtüşme, maskelenen vektörlerin gerçek yüzdesini azaltabilir. Bu, yalnızca apply_spec_augment is True ise geçerlidir.
  • mask_feature_prob (Union[float, int], isteğe bağlı, varsayılan 0.0) — Özellik ekseni boyunca maskelenecek tüm özellik vektörlerinin yüzdesi (0 ile 1 arasında). Maskeleme işlemi, eksen üzerinde mask_feature_prob*len(feature_axis)/mask_time_length bağımsız maske üretir. Maskelenecek vektör aralığının başlangıcı olarak seçilecek her özellik vektörünün olasılığından yola çıkarak akıl yürütülüyorsa, mask_feature_prob değeri prob_vector_start*mask_feature_length olmalıdır. Dikkat edin, örtüşme, maskelenen vektörlerin gerçek yüzdesini azaltabilir. Bu, yalnızca apply_spec_augment değeri True ise geçerlidir.
  • mask_feature_length (int, isteğe bağlı, varsayılan 10) — Özellik ekseni boyunca vektör aralığının uzunluğu.
  • mask_feature_min_masks (int, isteğe bağlı, varsayılan 0) — Her zaman adımında, mask_feature_prob değerinden bağımsız olarak, özellik ekseni boyunca üretilen mask_feature_length uzunluğundaki maskelerin asgari sayısı. Yalnızca mask_feature_prob*len(feature_axis)/mask_feature_length < mask_feature_min_masks koşulu sağlandığında geçerlidir.
  • median_filter_width (int, isteğe bağlı, varsayılan 7) — Token zaman damgalarını hesaplamada çapraz dikkat çıktılarını yumuşatmak için kullanılan medyan filtresinin genişliği. Tek bir sayı olmalıdır.
  • tie_word_embeddings (bool, isteğe bağlı, varsayılan True) — Modelin tied_weights_keys eşlemesine göre ağırlık gömme bağlamalarının yapılıp yapılmayacağı.

Bu, bir WhisperModel yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Whisper modelini örneklemek ve model mimarisini tanımlamak için kullanılır. Varsayılan değerlerle bir yapılandırma örneklendiğinde, openai/whisper-tiny modelinin yapılandırmasına benzer bir yapılandırma elde edilir.

Yapılandırma nesneleri PreTrainedConfig sınıfından devralır ve model çıktılarını kontrol etmek için kullanılabilir. Daha fazla bilgi için PreTrainedConfig belgesini okuyun.

Örnek:

>>> 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

sınıf 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 )

Parametreler

  • vocab_file (str, isteğe bağlı) — Sözlük dosyasının yolu.
  • merges_file (str, isteğe bağlı) — Merges dosyasının yolu.
  • normalizer_file (str, isteğe bağlı) — normalizer_file dosyasının yolu.
  • tokenizer_file (str, isteğe bağlı) — Tokenizer'ı yüklemek için gereken her şeyi içeren tokenizers dosyasının (genellikle .json uzantısına sahiptir) yolu.
  • unk_token (str, isteğe bağlı, varsayılan "<|endoftext|>") — Bilinmeyen jeton. Sözlükte yer almayan bir jeton, bir kimliğe dönüştürülemez ve bunun yerine bu jeton olarak ayarlanır.
  • bos_token (str, isteğe bağlı, varsayılan "<|endoftext|>") — Dizinin başlangıç token'ı. Üretim sırasında ilk token'ı "<|startoftranscript|>" olarak ayarlamak için decoder_start_token_id kullanılır.
  • eos_token (str, isteğe bağlı, varsayılan "<|endoftext|>") — Dizi sonu belirteci.
  • add_prefix_space (bool, isteğe bağlı, varsayılan False) — Girişe başlangıçta bir boşluk eklenip eklenmeyeceğini belirtir. Bu, baştaki kelimenin diğer kelimelerle aynı şekilde işlenmesine olanak tanır. (Whisper tokenizer, kelimelerin başlangıcını ondan önceki boşlukla algılar).
  • language (str, isteğe bağlı) — Transkripsiyon metninin dili. Çok dilli konuşma tanıma ve konuşma çeviri görevlerinde, ilgili dil kimlik belirteci dizinin başına eklenir; örneğin İspanyolca için "<|es|>" belirteci dizinin başına eklenir. Bu, yalnızca çok dilli ince ayar için kullanılmalıdır.
  • task (str, isteğe bağlı) — Dizinin başına eklenecek görev tanımlayıcısı (varsa). Bu, çok dilli ince ayar için, konuşma tanıma için "transcribe" ve konuşma çevirisi için "translate" olarak kullanılmalıdır.
  • predict_timestamps (bool, isteğe bağlı, varsayılan False) — Dizinin başındaki <|notimestamps|> token'ının atlanıp atlanmayacağını belirtir.

HuggingFace'in tokenizers kütüphanesiyle desteklenen “fast” bir Whisper tokenizer'ı oluşturun.

Bu tokenizer, ana yöntemlerin çoğunu içeren PreTrainedTokenizerFast sınıfından devralır. Kullanıcıların bu yöntemler hakkında daha fazla bilgi için bu üst sınıfa başvurması gerekir.

set_prefix_tokens

< >

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

Parametreler

  • language (str, isteğe bağlı, varsayılan None) — Transkripsiyon metninin dili.
  • task (str, isteğe bağlı, varsayılan None) — Dizinin başına eklenecek görev tanımlayıcısı (varsa).
  • predict_timestamps (bool, isteğe bağlı, varsayılan None) — Dizinin başındaki <|notimestamps|> token'ının atlanıp atlanmayacağı.

Etiket dizisinin başına eklenen önek tokenlarını geçersiz kılın. Bu yöntem bağımsız olarak kullanılabilir

İnce ayarlama sırasında gerekli olduğunda önek tokenlarını güncelleyin. Örnek:

>>> # 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]

Parametreler

  • token_ids_0 (list[int]) — Kimlik listesi.
  • token_ids_1 (list[int], isteğe bağlı) — Sıra çiftleri için isteğe bağlı ikinci kimlik listesi.
  • already_has_special_tokens (bool, isteğe bağlı, varsayılan False) — Token listesinin, model için özel token'larla zaten biçimlendirilmiş olup olmadığı.

Dönüş değeri

list[int]

[0, 1] aralığında tamsayıların bir listesi: özel bir jeton için 1, bir dizi jetonu için 0.

Özel tokenler eklenmemiş bir token listesinden dizi kimliklerini alır. Bu yöntem, tokenizer'ın prepare_for_model yöntemi kullanılarak özel tokenler eklenirken çağrılır.

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]

Parametreler

  • sequences (Union[list[int], list[list[int]], np.ndarray, torch.Tensor]) — Tokenize edilmiş girdi kimliklerinin listesi. __call__ yöntemi kullanılarak elde edilebilir.
  • skip_special_tokens (bool, isteğe bağlı, varsayılan False) — Çözümleme sırasında özel tokenların kaldırılıp kaldırılmayacağı.
  • clean_up_tokenization_spaces (bool, isteğe bağlı) — Tokenizasyon boşluklarının temizlenip temizlenmeyeceğini belirtir. None ise, varsayılan olarak self.clean_up_tokenization_spaces kullanılır.
  • kwargs (ek anahtar kelime argümanları, isteğe bağlı) — Altta yatan modele özgü decode yöntemine aktarılacaktır.

Dönüş değeri

list[str]

Çözümlenmiş cümlelerin listesi.

decode çağrısı yaparak token kimlikleri içeren listelerin listesini, dizelerin listesine dönüştürün.

Bu yöntem geriye dönük uyumluluk için sağlanmıştır. decode yöntemi artık toplu girdileri yerel olarak işler, bu nedenle batch_decode yerine doğrudan decode kullanabilirsiniz.

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

Parametreler

  • token_ids (Union[int, list[int], np.ndarray, torch.Tensor]) — Tokenize edilmiş girdi kimliklerinin listesi. __call__ yöntemi kullanılarak elde edilebilir.
  • skip_special_tokens (bool, isteğe bağlı, varsayılan False) — Çözümleme sırasında özel tokenların kaldırılıp kaldırılmayacağını belirtir. Varsa, önceki tokenları (öncesi istem) kaldırır.
  • clean_up_tokenization_spaces (bool, isteğe bağlı) — Tokenizasyon boşluklarının temizlenip temizlenmeyeceğini belirtir. None ise, tokenizer_config içinde mevcut olan self.clean_up_tokenization_spaces değeri varsayılan olarak kullanılır.
  • output_offsets (bool, isteğe bağlı, varsayılan False) — Tokenlerin ofsetlerinin çıktı olarak verilip verilmeyeceğini belirtir. Bu, yalnızca model zaman damgaları tahmin ettiyse ayarlanmalıdır. Çözümlenecek önceki tokenler (prompt öncesi) varsa, bunlar yalnızca zaman damgası tokenleri içeriyorsa çözümlenmiş metinde görünür.
  • time_precision (float, isteğe bağlı, varsayılan 0.02) — Token'dan zamana dönüştürmek için kullanılan zaman oranı.
  • decode_with_timestamps (bool, isteğe bağlı, varsayılan False) — Ham metinde zaman damgaları dahil edilerek mi çözümleneceği.
  • normalize (bool, isteğe bağlı, varsayılan False) — Çözümlenen metne İngilizce metin normalizasyonunun uygulanıp uygulanmayacağı. Yalnızca hedef metin İngilizce olduğunda geçerlidir. Aksi halde, temel metin normalizasyonu uygulanmalıdır.
  • basic_normalize (bool, isteğe bağlı, varsayılan False) — Çözümlenen metne Basic metin normalizasyonunun uygulanıp uygulanmayacağını belirtir. Çok dilli hedef metinlere uygulanabilir.
  • remove_diacritics (bool, isteğe bağlı, varsayılan False) — Basic metin normalizasyon uygulayıcısı kullanılırken diakritik işaretlerin kaldırılıp kaldırılmayacağını belirtir. Diakritik işaretlerin kaldırılması, çözümlenen metindeki bilgiyi bozabilir; bu nedenle dikkatli kullanılmalıdır.
  • kwargs (ek anahtar kelime argümanları, isteğe bağlı) — Altta yatan modele özgü decode yöntemine aktarılacaktır.

Dönüş değeri

str

Çözümlenmiş cümle.

Özel tokenları kaldırma ve tokenizasyon boşluklarını temizleme seçenekleriyle, tokenizer ve sözlük kullanarak bir dizgedeki kimlik dizisini dönüştürür.

self.convert_tokens_to_string(self.convert_ids_to_tokens(token_ids)) işlemine benzer.

basic_normalize

< >

( textremove_diacritics = False )

BasicTextNormalizer sınıfını kullanarak çok dilli metinlerde yaygın dönüşümleri gerçekleştiren bu sınıf aracılığıyla verilen bir dizeni normalize edin.

normalize

< >

( text )

Verilen bir dizeyi, İngilizce metin üzerinde ortak dönüşümleri gerçekleştiren EnglishTextNormalizer sınıfı kullanarak normalize edin.

WhisperFeatureExtractor

sınıf transformers.WhisperFeatureExtractor

< >

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

Parametreler

  • feature_size (int, isteğe bağlı, varsayılan 80) — Çıkarılan özelliklerin boyutu.
  • sampling_rate (int, isteğe bağlı, varsayılan 16000) — Ses dosyalarının dijitalleştirilmesi gereken örnekleme hızı, hertz (Hz) cinsinden ifade edilir.
  • hop_length (int, isteğe bağlı, varsayılan 160) — Mel Frekans katsayılarını elde etmek için kullanılan STFT'nin üst üste binen pencerelerinin uzunluğu.
  • chunk_length (int, isteğe bağlı, varsayılan 30) — Daha uzun veya daha kısa ses dizilerini kırpıp doldurmak için kullanılan sampling_rate örneklikteki parçaların maksimum sayısı.
  • n_fft (int, isteğe bağlı, varsayılan 400) — Fourier dönüşümünün boyutu.
  • padding_value (float, isteğe bağlı, varsayılan 0.0) — Sesin doldurulmasında kullanılan dolgu değeri. Sessizliklere karşılık gelmelidir.
  • dither (float, isteğe bağlı, varsayılan 0.0) — Dithering ekler. Başka bir deyişle, her kareye küçük bir Gauss gürültüsü ekler. Örn. 0.0001 değeri, 0.0 merkezli ve 0.0001 standart sapmalı normal dağılımla dithering eklemek için kullanılır (raw_speech'in [-1,+1] aralığında olduğu varsayılır). 0.0 değeri dithering uygulanmadığı anlamına gelir. Dithering'in etkisi spectrogram(mel_floor=...) ile benzerdir. Sinyalde VAD kesme noktası (cutoff) bulunduğunda, sert-sıfır bölümlere sahip sinyallerin yüksek log_mel_fbank değerlerini azaltır.

Bir Whisper özellik çıkarıcı oluşturur.

Bu özellik çıkarıcı, ana yöntemlerin çoğunu içeren SequenceFeatureExtractor sınıfından devralır. Kullanıcıların bu yöntemler hakkında daha fazla bilgi için bu üst sınıfa başvurması gerekir.

Bu sınıf, ham konuşma verisinden mel-filtre bankası özelliklerini, pytorch'un torch.stft karşılığıyla eşleşmesi gereken özel bir numpy Short Time Fourier Transform uygulaması kullanarak çıkarır.

__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 )

Parametreler

  • raw_speech (np.ndarray, list[float], list[np.ndarray], list[list[float]]) — Doldurulacak (padding) dizi veya dizi grubu. Her dizi, bir numpy dizisi, bir float değerleri listesi, bir numpy dizileri listesi veya float değerleri listeleri listesi olabilir. Tek kanallı (mono) ses olmalı, stereo değil; yani her zaman adımı için tek bir float değer içermelidir.
  • truncation (bool, isteğe bağlı, varsayılan True) — max_length'den uzun giriş dizilerini max_length değerine kısaltmak için kesme işlemini etkinleştirir.
  • pad_to_multiple_of (int, isteğe bağlı, varsayılan olarak None) — Ayarlanırsa, diziyi verilen değerin katına kadar doldurur.

    Bu, hesaplama yeteneği >= 7.5 (Volta) olan NVIDIA donanımlarında Tensor Core kullanımını etkinleştirmek veya 128'in katları olan dizi uzunluklarından faydalanan TPU'lar için özellikle faydalıdır.

  • return_tensors (str veya TensorType, isteğe bağlı) — Belirlenirse, Python tamsayı listesi yerine tensörler döndürülür. Kabul edilen değerler şunlardır:
    • 'pt': PyTorch torch.Tensor nesnelerini döndürür.
    • 'np': Numpy np.ndarray nesnelerini döndürür.
  • return_attention_mask (bool, isteğe bağlı) — Dikkat maskesinin (attention mask) döndürülüp döndürülmeyeceğini belirtir. Varsayılan bırakılırsa, ilgili feature_extractor'ın varsayılanına göre dikkat maskesi döndürülür.

    Dikkat maskeleri nedir?

    Whisper modelleri için, ince hatalardan kaçınmak amacıyla toplu çıkarım sırasında attention_mask her zaman iletilmelidir.

  • padding (str veya PaddingStrategy, isteğe bağlı, varsayılanı 'max_length') — Doldurmayı (padding) etkinleştirir ve kontrol eder. Aşağıdaki değerleri kabul eder:
    • 'longest': Batch içindeki en uzun dizinin uzunluğuna kadar doldur (yalnızca tek bir dizi sağlanıyorsa dolgu yapılmaz).
    • 'max_length' (varsayılan): max_length argümanı ile belirtilen maksimum uzunluğa veya bu argüman verilmediyse modelin kabul edebileceği maksimum girdi uzunluğuna kadar doldurur.
    • 'do_not_pad': Dolgu yok (yani, farklı uzunluklarda diziler içeren bir parti çıktı olarak üretilebilir).
  • max_length (int, isteğe bağlı) — Bir kesme/doldurma parametresi tarafından kullanılacak maksimum uzunluğu kontrol eder.

    Eğer ayarlanmazsa veya None olarak ayarlanırsa, kırpma/dolgu parametrelerinden biri tarafından bir maksimum uzunluk gerekiyorsa, bu, önceden tanımlanmış modelin maksimum uzunluğunu kullanır. Modelin belirli bir maksimum giriş uzunluğu yoksa (XLNet gibi), maksimum uzunluğa kırpma/dolgu devre dışı bırakılır.

  • sampling_rate (int, isteğe bağlı) — raw_speech girdisinin örneklenmiş olduğu örneklem hızı. Sessiz hataları önlemek ve otomatik konuşma tanıma hattına izin vermek için ileri çağrıda sampling_rate değerinin geçirilmesi şiddetle önerilir.
  • do_normalize (bool, isteğe bağlı, varsayılan False) — Girdinin sıfır ortalama ve birim varyansla normalize edilip edilmeyeceği. Normalizasyon, model performansını önemli ölçüde iyileştirmeye yardımcı olabilir.
  • device (str, isteğe bağlı, varsayılan 'cpu') — _torch_extract_fbank_features yönteminde ses sinyallerinin log-mel spektrogramunun hesaplanması için kullanılan cihazı belirtir. (ör. “cpu”, “cuda”)
  • **kwargs — WhisperFeatureExtractor tarafından desteklenmez. call() tarafından yok sayılır.

Bir veya birden fazla diziyi model için öznitelikleştirmek ve hazırlamak için kullanılan ana yöntem. Uygulama, PyTorch kullanılabilirse STFT hesabı için PyTorch'u, aksi takdirde daha yavaş bir NumPy tabanlı yöntemi kullanır.

WhisperProcessor

sınıf transformers.WhisperProcessor

< >

( feature_extractortokenizer )

Parametreler

  • feature_extractor (WhisperFeatureExtractor) — Özellik çıkarıcı zorunlu bir girdidir.
  • tokenizer (WhisperTokenizer) — Tokenizer zorunlu bir girdidir.

Bir özellik çıkarıcıyı ve bir belirteçleyiciyi tek bir işlemciye saran bir WhisperProcessor oluşturur.

WhisperProcessor, WhisperFeatureExtractor ve WhisperTokenizer sınıflarının tüm işlevlerini sunar. Daha fazla bilgi için ~WhisperFeatureExtractor ve ~WhisperTokenizer belgelerine bakın.

__call__

< >

( *args**kwargs )

Parametreler

  • return_tensors (str veya TensorType, isteğe bağlı) — Belirlenirse, belirli bir çerçeveye ait tensörler döndürülür. Kabul edilen değerler şunlardır:
    • 'pt': PyTorch torch.Tensor nesnelerini döndürür.
    • 'np': NumPy np.ndarray nesnelerini döndürür.

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 )

Parametreler

  • pretrained_model_name_or_path (str veya os.PathLike) — Bunlardan biri olabilir:
    • bir dize, huggingface.co'daki bir model deposunda barındırılan ön eğitilmiş bir feature_extractor'ın model kimliği.
    • save_pretrained() yöntemi kullanılarak kaydedilmiş bir özellik çıkarıcı dosyası içeren bir dizinin yolunu, örneğin ./my_model_directory/.
    • kaydedilmiş bir özellik çıkarıcı JSON dosyasına giden bir yol, örneğin ./my_model_directory/preprocessor_config.json.
  • **kwargs — Hem from_pretrained() hem de ~tokenization_utils_base.PreTrainedTokenizer.from_pretrained fonksiyonlarına iletilen ek anahtar kelime argümanları.

Önceden eğitilmiş bir modelle ilişkili bir işlemci örnekleyin.

Bu sınıf metodu, yalnızca özellik çıkarıcının from_pretrained(), görüntü işleyicinin ImageProcessingMixin ve belirteçleştiricinin ~tokenization_utils_base.PreTrainedTokenizer.from_pretrained metotlarını çağırır. Daha fazla bilgi için yukarıdaki metotların dokümantasyon dizelerine (docstring) başvurun.

save_pretrained

< >

( save_directorypush_to_hub: bool = False**kwargs )

Parametreler

  • save_directory (str veya os.PathLike) — Özellik çıkarıcısının JSON dosyasının ve tokenizer dosyalarının kaydedileceği dizin (dizin mevcut değilse oluşturulur).
  • push_to_hub (bool, isteğe bağlı, varsayılan False) — Modelinizi kaydettikten sonra Hugging Face model hub'ına gönderip göndermeyeceğinizi belirtir. Göndermek istediğiniz depoyu repo_id ile belirtebilirsiniz (varsayılan olarak ad alanınızdaki save_directory adını kullanır).
  • kwargs (dict[str, Any], isteğe bağlı) — push_to_hub() yöntemine iletilen ek anahtar kelime argümanları.

Bu işleyicinin (özellik çıkarıcı, sınıflandırıcı…) özniteliklerini, from_pretrained() yöntemiyle yeniden yüklenebilmesi için belirtilen dizinde kaydeder.

Bu sınıf metodu yalnızca save_pretrained() ve save_pretrained() çağrılarını yapar. Daha fazla bilgi için yukarıdaki metodların dokümantasyon dizelerine (docstring) başvurun.

batch_decode

< >

( *args**kwargs )

Bu yöntem, tüm argümanlarını PreTrainedTokenizer'ın batch_decode() yöntemine iletir. Daha fazla bilgi için bu yöntemin docstring'ine başvurun.

decode

< >

( *args**kwargs )

Bu yöntem, tüm argümanlarını PreTrainedTokenizer'ın decode() yöntemine iletir. Daha fazla bilgi için bu yöntemin docstring'ine başvurun.

WhisperModel

sınıf transformers.WhisperModel

< >

( config: WhisperConfig )

Parametreler

  • config (WhisperConfig) — Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için from_pretrained() yöntemine bakın.

Üzerinde herhangi bir özel head olmadan ham hidden-states üreten çıplak Whisper Model.

Bu model PreTrainedModel sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden boyutlandırma, başları budama vb.) için üst sınıf belgelendirmesine bakın.

Bu model aynı zamanda bir PyTorch torch.nn.Module alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.

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)

Parametreler

  • input_features (torch.Tensor, şekli (batch_size, sequence_length, feature_dim), isteğe bağlı) — Giriş ses özelliklerine karşılık gelen tensörler. Ses özellikleri WhisperFeatureExtractor kullanılarak elde edilebilir. Ayrıntılar için WhisperFeatureExtractor.call() bölümüne bakın (WhisperProcessor, sesleri işlemek için WhisperFeatureExtractor kullanır).
  • attention_mask (torch.LongTensor şeklinde (batch_size, sequence_length), isteğe bağlı) — Doldurma (padding) token indekslerinde dikkat (attention) işlemi yapmaktan kaçınmak için kullanılan maske. Seçilen maske değerleri [0, 1]:
    • 1, maskelenmemiş jetonlar için,
    • maskelenmiş jetonlar için 0.

    Dikkat maskeleri nedir?

  • decoder_input_ids (torch.LongTensor şeklinde (batch_size, target_sequence_length), isteğe bağlı) — Sözlükteki decoder giriş dizisi tokenlarının indeksleri. İndeksler WhisperTokenizer kullanılarak elde edilebilir. Ayrıntılar için PreTrainedTokenizer.encode() ve PreTrainedTokenizer.call() yöntemlerine bakın. Decoder giriş ID'leri nedir? Whisper, decoder_input_ids üretimi için başlangıç tokenı olarak decoder_start_token_id kullanır. past_key_values kullanılıyorsa, isteğe bağlı olarak yalnızca son decoder_input_ids girdisi sağlanmalıdır (bkz. past_key_values).

    Dizinler WhisperTokenizer kullanılarak elde edilebilir. Ayrıntılar için PreTrainedTokenizer.encode() ve PreTrainedTokenizer.call() konularına bakın.

    Çözücü girdi kimlikleri nelerdir?

    Whisper, decoder_input_ids üretimi için başlangıç jetonu olarak decoder_start_token_id kullanır. past_key_values kullanılıyorsa, isteğe bağlı olarak yalnızca son decoder_input_ids girdi olarak verilmelidir (bkz. past_key_values).

  • decoder_attention_mask (torch.LongTensor şeklinde (batch_size, target_sequence_length), isteğe bağlı) — Varsayılan davranış: decoder_input_ids. satırında yer alan pad token'larını yok sayan bir tensör oluşturur. Varsayılan olarak nedensel maske de kullanılır. Dolgu (padding) davranışını değiştirmek istiyorsanız, modeling_whisper._prepare_decoder_attention_mask fonksiyonunu inceleyip ihtiyaçlarınıza göre düzenleyin. Varsayılan strateji hakkında daha fazla bilgi için BART makalesindeki 1 numaralı diyagrama bakın.

    Eğer padding davranışını değiştirmek istiyorsanız, modeling_whisper._prepare_decoder_attention_mask fonksiyonunu inceleyip ihtiyaçlarınıza göre düzenlemelisiniz. Varsayılan strateji hakkında daha fazla bilgi için BART makalesindeki 1 numaralı diyagrama bakın.

  • encoder_outputs (tuple[tuple[torch.Tensor]], isteğe bağlı) — (last_hidden_state, isteğe bağlı: hidden_states, isteğe bağlı: attentions) içeren bir tuple last_hidden_state, (batch_size, sequence_length, hidden_size) boyutunda, isteğe bağlı) encoder'ın son katmanının çıktısındaki gizli durumlar dizisidir. Decoder'ın çapraz dikkat (cross-attention) mekanizmasında kullanılır.
  • past_key_values (~cache_utils.Cache, isteğe bağlı) — Sıralı çözümlemeyi hızlandırmak için kullanılabilen önceden hesaplanmış gizli durumlar (self-attention ve cross-attention bloklarındaki anahtar ve değerler). Bu genellikle past_key_values değerinin, çözümlemenin önceki bir aşamasında model tarafından döndürülen use_cache=True veya config.use_cache=True.

    Girdi olarak yalnızca Cache örneği kabul edilir, kv cache kılavuzumuza bakın. past_key_values geçirilmezse, varsayılan olarak DynamicCache başlatılır.

    Model, girdi olarak verilen aynı önbellek biçimini çıktı olarak üretecektir.

    past_key_values kullanılıyorsa, kullanıcının tüm input_ids (şekli (batch_size, sequence_length)) yerine, bu modele geçmiş anahtar değer durumları verilmemiş olan, işlenmemiş input_ids (şekli (batch_size, unprocessed_length)) girmesi beklenir.

  • decoder_inputs_embeds (tuple[torch.Tensor] şeklinde (batch_size, target_sequence_length, hidden_size), isteğe bağlı) — İsteğe bağlı olarak, decoder_input_ids geçirmek yerine gömülü bir temsil doğrudan geçirmeyi seçebilirsiniz. Eğer past_key_values kullanılıyorsa, isteğe bağlı olarak yalnızca son decoder_inputs_embeds girdi olarak verilmelidir (bkz. past_key_values). Bu, modelin dahili gömme arama matrisine kıyasla decoder_input_ids endekslerini ilgili vektörlere dönüştürme biçimi üzerinde daha fazla kontrol istiyorsanız faydalıdır.

    decoder_input_ids ve decoder_inputs_embeds her ikisi de ayarlanmamışsa, decoder_inputs_embeds inputs_embeds değerini alır.

  • decoder_position_ids (torch.LongTensor şeklinde (batch_size, sequence_length), isteğe bağlı) — Girdi dizisindeki her token'ın konum gömme (position embedding) içindeki konum indeksleri. Aralıktan seçilir [0, config.n_positions - 1].

    Pozisyon kimlikleri nedir?

  • use_cache (bool, isteğe bağlı) — True olarak ayarlanırsa, past_key_values anahtar değer durumları döndürülür ve çözümlemeyi hızlandırmak için kullanılabilir (bkz. past_key_values).

Dönüş değeri

Seq2SeqModelOutput veya tuple(torch.Tensor)

Bir Seq2SeqModelOutput veya bir torch.Tensor demeti (return_dict=False geçirildiğinde veya config.return_dict=False olduğunda), yapılandırmaya (WhisperConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.

WhisperModel forward metodu, __call__ özel metodunu geçersiz kılar.

İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine Module örneğini çağırmak gerekir; çünkü önceki, ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.

  • last_hidden_state (torch.Tensor, şekli (batch_size, sequence_length, hidden_size)) — Modelin decoder'ının son katmanının çıktısındaki gizli durumlar dizisi.

    past_key_values kullanılırsa, yalnızca (batch_size, 1, hidden_size) biçimindeki dizilerin son gizli durumu (hidden-state) çıktı olarak verilir.

  • past_key_values (EncoderDecoderCache, isteğe bağlı, use_cache=True geçirildiğinde veya config.use_cache=True olduğunda döndürülür) — Bir EncoderDecoderCache örneğidir. Daha fazla ayrıntı için kv önbellek kılavuzumuza bakın.

    Sıralı çözümlemeyi hızlandırmak için (bkz. past_key_values girdisi) kullanılabilen, önceden hesaplanmış gizli durumları (self-attention bloklarındaki ve cross-attention bloklarındaki anahtar ve değerler) içerir.

  • decoder_hidden_states (tuple(torch.Tensor), isteğe bağlı, output_hidden_states=True geçirildiğinde veya config.output_hidden_states=True olduğunda döndürülür) — torch.Tensor (modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için birer tane) içeren, (batch_size, sequence_length, hidden_size) biçiminde bir demet.

    Her katmanın çıktısında decoder'ın gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.

  • decoder_attentions (tuple(torch.Tensor), isteğe bağlı, output_attentions=True geçirildiğinde veya config.output_attentions=True olduğunda döndürülür) — torch.Tensor (katman başına bir tane) içeren bir tuple, şekli (batch_size, num_heads, sequence_length, sequence_length).

    Dikkat ağırlıkları, dikkat softmax'ından sonra, öz-dikkat kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılan dekoderin

  • cross_attentions (tuple(torch.Tensor), isteğe bağlı, output_attentions=True geçirildiğinde veya config.output_attentions=True olduğunda döndürülür) — (batch_size, num_heads, sequence_length, sequence_length) biçiminde, her katman için bir adet içeren torch.Tensor demeti.

    Dekoderin çapraz dikkat katmanının dikkat ağırlıkları, dikkat softmax'ından sonra, çapraz dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.

  • encoder_last_hidden_state (torch.Tensor, şekli (batch_size, sequence_length, hidden_size), isteğe bağlı) — Modelin kodlayıcısının son katmanının çıktısındaki gizli durumlar dizisi.

  • encoder_hidden_states (tuple(torch.Tensor), isteğe bağlı, output_hidden_states=True geçirildiğinde veya config.output_hidden_states=True olduğunda döndürülür) — torch.Tensor (modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için birer tane) içeren, (batch_size, sequence_length, hidden_size) biçiminde bir demet.

    Her katmanın çıktısında kodlayıcının gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.

  • encoder_attentions (tuple(torch.Tensor), isteğe bağlı, output_attentions=True geçirildiğinde veya config.output_attentions=True olduğunda döndürülür) — torch.Tensor (katman başına bir tane) içeren bir tuple, şekli (batch_size, num_heads, sequence_length, sequence_length).

    Dikkat yumuşatma (attention softmax) sonrasında, öz-dikkat (self-attention) kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılan kodlayıcının dikkat ağırlıkları.

Örnek:

>>> 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 )

Masks, SpecAugment'e göre zaman ekseni boyunca ve/veya özellik ekseni boyunca çıkarılan özellikleri maskeleştirmektedir.

WhisperForConditionalGeneration

sınıf transformers.WhisperForConditionalGeneration

< >

( config: WhisperConfig )

Parametreler

  • config (WhisperConfig) — Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için from_pretrained() yöntemine bakın.

Dil modelleme başlığına sahip Whisper Model. Otomatik konuşma tanıma için kullanılabilir.

Bu model PreTrainedModel sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden boyutlandırma, başları budama vb.) için üst sınıf belgelendirmesine bakın.

Bu model aynı zamanda bir PyTorch torch.nn.Module alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.

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)

Parametreler

  • input_features (torch.Tensor, şekli (batch_size, sequence_length, feature_dim), isteğe bağlı) — Giriş ses özelliklerine karşılık gelen tensörler. Ses özellikleri WhisperFeatureExtractor kullanılarak elde edilebilir. Ayrıntılar için WhisperFeatureExtractor.call() bölümüne bakın (WhisperProcessor, sesleri işlemek için WhisperFeatureExtractor kullanır).
  • attention_mask (torch.LongTensor şeklinde (batch_size, sequence_length), isteğe bağlı) — Doldurma (padding) token indekslerinde dikkat (attention) işlemi yapmaktan kaçınmak için kullanılan maske. Seçilen maske değerleri [0, 1]:
    • 1, maskelenmemiş jetonlar için,
    • maskelenmiş jetonlar için 0.

    Dikkat maskeleri nedir?

  • decoder_input_ids (torch.LongTensor şeklinde (batch_size, target_sequence_length), isteğe bağlı) — Sözlükteki decoder giriş dizisi tokenlarının indeksleri. İndeksler WhisperTokenizer kullanılarak elde edilebilir. Ayrıntılar için PreTrainedTokenizer.encode() ve PreTrainedTokenizer.call() yöntemlerine bakın. Decoder giriş ID'leri nedir? Whisper, decoder_input_ids üretimi için başlangıç tokenı olarak decoder_start_token_id kullanır. past_key_values kullanılıyorsa, isteğe bağlı olarak yalnızca son decoder_input_ids girdisi sağlanmalıdır (bkz. past_key_values).

    Dizinler WhisperTokenizer kullanılarak elde edilebilir. Ayrıntılar için PreTrainedTokenizer.encode() ve PreTrainedTokenizer.call() konularına bakın.

    Çözücü girdi kimlikleri nelerdir?

    Whisper, decoder_input_ids üretimi için başlangıç jetonu olarak decoder_start_token_id kullanır. past_key_values kullanılıyorsa, isteğe bağlı olarak yalnızca son decoder_input_ids girdi olarak verilmelidir (bkz. past_key_values).

  • decoder_attention_mask (torch.LongTensor şeklinde (batch_size, target_sequence_length), isteğe bağlı) — Varsayılan davranış: decoder_input_ids. satırında yer alan pad token'larını yok sayan bir tensör oluşturur. Varsayılan olarak nedensel maske de kullanılır. Dolgu (padding) davranışını değiştirmek istiyorsanız, modeling_whisper._prepare_decoder_attention_mask fonksiyonunu inceleyip ihtiyaçlarınıza göre düzenleyin. Varsayılan strateji hakkında daha fazla bilgi için BART makalesindeki 1 numaralı diyagrama bakın.

    Eğer padding davranışını değiştirmek istiyorsanız, modeling_whisper._prepare_decoder_attention_mask fonksiyonunu inceleyip ihtiyaçlarınıza göre düzenlemelisiniz. Varsayılan strateji hakkında daha fazla bilgi için BART makalesindeki 1 numaralı diyagrama bakın.

  • encoder_outputs (tuple[tuple[torch.Tensor]], isteğe bağlı) — (last_hidden_state, isteğe bağlı: hidden_states, isteğe bağlı: attentions) içeren bir tuple last_hidden_state, (batch_size, sequence_length, hidden_size) boyutunda, isteğe bağlı) encoder'ın son katmanının çıktısındaki gizli durumlar dizisidir. Decoder'ın çapraz dikkat (cross-attention) mekanizmasında kullanılır.
  • past_key_values (~cache_utils.Cache, isteğe bağlı) — Sıralı çözümlemeyi hızlandırmak için kullanılabilen önceden hesaplanmış gizli durumlar (self-attention ve cross-attention bloklarındaki anahtar ve değerler). Bu genellikle past_key_values değerinin, çözümlemenin önceki bir aşamasında model tarafından döndürülen use_cache=True veya config.use_cache=True.

    Girdi olarak yalnızca Cache örneği kabul edilir, kv cache kılavuzumuza bakın. past_key_values geçirilmezse, varsayılan olarak DynamicCache başlatılır.

    Model, girdi olarak verilen aynı önbellek biçimini çıktı olarak üretecektir.

    past_key_values kullanılıyorsa, kullanıcının tüm input_ids (şekli (batch_size, sequence_length)) yerine, bu modele geçmiş anahtar değer durumları verilmemiş olan, işlenmemiş input_ids (şekli (batch_size, unprocessed_length)) girmesi beklenir.

  • decoder_inputs_embeds (tuple[torch.Tensor] şeklinde (batch_size, target_sequence_length, hidden_size), isteğe bağlı) — İsteğe bağlı olarak, decoder_input_ids geçirmek yerine gömülü bir temsil doğrudan geçirmeyi seçebilirsiniz. Eğer past_key_values kullanılıyorsa, isteğe bağlı olarak yalnızca son decoder_inputs_embeds girdi olarak verilmelidir (bkz. past_key_values). Bu, modelin dahili gömme arama matrisine kıyasla decoder_input_ids endekslerini ilgili vektörlere dönüştürme biçimi üzerinde daha fazla kontrol istiyorsanız faydalıdır.

    decoder_input_ids ve decoder_inputs_embeds her ikisi de ayarlanmamışsa, decoder_inputs_embeds inputs_embeds değerini alır.

  • decoder_position_ids (torch.LongTensor şeklinde (batch_size, sequence_length), isteğe bağlı) — Girdi dizisindeki her token'ın konum gömme (position embedding) içindeki konum indeksleri. Aralıktan seçilir [0, config.n_positions - 1].

    Pozisyon kimlikleri nedir?

  • labels (torch.LongTensor, şekli (batch_size, sequence_length), isteğe bağlı) — Dil modelleme kaybını hesaplamak için etiketler. İndeksler [0, ..., config.vocab_size] aralığında olmalı veya -100 olmalıdır (input_ids docstring'ine bakın). İndeksleri -100 olarak ayarlanan tokenlar yok sayılır (maskelenir), kayıp yalnızca etiketleri [0, ..., config.vocab_size] aralığında olan tokenlar için hesaplanır. sequence_length, config.max_target_positions'den küçük veya eşit olmalıdır.
  • use_cache (bool, isteğe bağlı) — True olarak ayarlanırsa, past_key_values anahtar değer durumları döndürülür ve çözümlemeyi hızlandırmak için kullanılabilir (bkz. past_key_values).

Dönüş değeri

Seq2SeqLMOutput veya tuple(torch.Tensor)

Bir Seq2SeqLMOutput veya bir torch.Tensor demeti (return_dict=False geçirildiğinde veya config.return_dict=False olduğunda), yapılandırmaya (WhisperConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.

WhisperForConditionalGeneration forward metodu, __call__ özel metodunu geçersiz kılar.

İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine Module örneğini çağırmak gerekir; çünkü önceki, ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.

  • loss (torch.Tensor, şekli (1,), isteğe bağlı, labels sağlandığında döndürülür) — Dil modelleme kaybı.

  • logits (torch.Tensor, şekli (batch_size, sequence_length, config.vocab_size)) — Dil modelleme başlığının tahmin puanları (SoftMax öncesi her sözlük jetonu için puanlar).

  • past_key_values (EncoderDecoderCache, isteğe bağlı, use_cache=True geçirildiğinde veya config.use_cache=True olduğunda döndürülür) — Bir EncoderDecoderCache örneğidir. Daha fazla ayrıntı için kv önbellek kılavuzumuza bakın.

    Sıralı çözümlemeyi hızlandırmak için (bkz. past_key_values girdisi) kullanılabilen, önceden hesaplanmış gizli durumları (self-attention bloklarındaki ve cross-attention bloklarındaki anahtar ve değerler) içerir.

  • decoder_hidden_states (tuple(torch.Tensor), isteğe bağlı, output_hidden_states=True geçirildiğinde veya config.output_hidden_states=True olduğunda döndürülür) — torch.Tensor (modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için birer tane) içeren, (batch_size, sequence_length, hidden_size) biçiminde bir demet.

    Her katmanın çıktısında ve başlangıç gömme çıktılarında dekodlayıcının gizli durumları.

  • decoder_attentions (tuple(torch.Tensor), isteğe bağlı, output_attentions=True geçirildiğinde veya config.output_attentions=True olduğunda döndürülür) — torch.Tensor (katman başına bir tane) içeren bir tuple, şekli (batch_size, num_heads, sequence_length, sequence_length).

    Dikkat ağırlıkları, dikkat softmax'ından sonra, öz-dikkat kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılan dekoderin

  • cross_attentions (tuple(torch.Tensor), isteğe bağlı, output_attentions=True geçirildiğinde veya config.output_attentions=True olduğunda döndürülür) — (batch_size, num_heads, sequence_length, sequence_length) biçiminde, her katman için bir adet içeren torch.Tensor demeti.

    Dekoderin çapraz dikkat katmanının dikkat ağırlıkları, dikkat softmax'ından sonra, çapraz dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.

  • encoder_last_hidden_state (torch.Tensor, şekli (batch_size, sequence_length, hidden_size), isteğe bağlı) — Modelin kodlayıcısının son katmanının çıktısındaki gizli durumlar dizisi.

  • encoder_hidden_states (tuple(torch.Tensor), isteğe bağlı, output_hidden_states=True geçirildiğinde veya config.output_hidden_states=True olduğunda döndürülür) — torch.Tensor (modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için birer tane) içeren, (batch_size, sequence_length, hidden_size) biçiminde bir demet.

    Her katmanın çıktısında ve başlangıç gömme çıktılarında kodlayıcının gizli durumları.

  • encoder_attentions (tuple(torch.Tensor), isteğe bağlı, output_attentions=True geçirildiğinde veya config.output_attentions=True olduğunda döndürülür) — torch.Tensor (katman başına bir tane) içeren bir tuple, şekli (batch_size, num_heads, sequence_length, sequence_length).

    Dikkat yumuşatma (attention softmax) sonrasında, öz-dikkat (self-attention) kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılan kodlayıcının dikkat ağırlıkları.

Örnek:

>>> 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

Parametreler

  • input_features (torch.Tensor, şekli (batch_size, feature_size, sequence_length), isteğe bağlı) — Ham ses dalga formundan çıkarılan log-mel özelliklerinin kayan değerleri. Ham ses dalga formu, bir .flac veya .wav ses dosyasını list[float] tipinde bir diziye, numpy.ndarray veya torch.Tensor içine yükleyerek elde edilebilir; örneğin torchcodec kütüphanesi (pip install torchcodec) veya soundfile kütüphanesi (pip install soundfile) aracılığıyla. Diziyi input_features için hazırlamak için, mel özelliklerini çıkarmak, dolgu yapmak ve torch.Tensor tipinde bir tensöre dönüştürmek üzere AutoFeatureExtractor kullanılmalıdır. Ayrıntılar için call() bölümüne bakın.
  • generation_config (GenerationConfig, isteğe bağlı) — Üretim çağrısı için temel parametrelendirme olarak kullanılacak üretim yapılandırması. **kwargs ile generate'e, generation_config öznitelikleriyle eşleşen parametreler geçirilirse bunlar geçersiz kılınır. generation_config sağlanmazsa, varsayılan değer kullanılır; bunun yükleme önceliği şu şekildedir: 1) varsa generation_config.json model dosyasından; 2) model yapılandırmasından. Belirtilmeyen parametrelerin GenerationConfig'in varsayılan değerlerini devralacağını ve üretim parametrelendirmesi için bu değerlerin belgesinin kontrol edilmesi gerektiğini lütfen unutmayın.
  • logits_processor (LogitsProcessorList, isteğe bağlı) — Argümanlardan ve üretim yapılandırmasından oluşturulan varsayılan logits işleyicilerini tamamlayan özel logits işleyicileri. Argümanlarla veya bir üretim yapılandırmasıyla zaten oluşturulmuş bir logits işleyicisi geçirilirse bir hata fırlatılır. Bu özellik ileri düzey kullanıcılar için tasarlanmıştır.
  • stopping_criteria (StoppingCriteriaList, isteğe bağlı) — Argümanlardan ve bir generation config'ten oluşturulan varsayılan durdurma kriterlerini tamamlayan özel durdurma kriterleri. Argümanlarla veya bir generation config ile zaten oluşturulmuş bir durdurma kriteri geçirilirse bir hata fırlatılır. Bu özellik ileri düzey kullanıcılar için tasarlanmıştır.
  • prefix_allowed_tokens_fn (Callable[[int, torch.Tensor], list[int]], isteğe bağlı) — Sağlanırsa, bu fonksiyon her adımda beam search'i yalnızca izin verilen tokenlara kısıtlar. Sağlanmazsa hiçbir kısıtlama uygulanmaz. Bu fonksiyon 2 argüman alır: batch kimliği batch_id ve input_ids. Batch kimliği batch_id ve daha önce üretilen tokenlar inputs_ids koşullarına bağlı olarak, bir sonraki üretim adımı için izin verilen tokenların listesini döndürmelidir. Bu argüman, Autoregressive Entity Retrieval makalesinde anlatıldığı gibi, önekle (prefix) koşullu kısıtlı üretim için faydalıdır.
  • synced_gpus (bool, isteğe bağlı, varsayılan False) — FullyShardedDataParallel ve DeepSpeed ZeRO Stage 3 ile ölü kilitlenmeyi (deadlock) önlemek için max_length değerine kadar while döngüsünün çalışmaya devam edip etmeyeceğini belirler.
  • return_timestamps (bool, isteğe bağlı) — Metinle birlikte zaman damgalarının döndürülüp döndürülmeyeceğini belirtir. Bu, WhisperTimestampsLogitsProcessor bileşenini etkinleştirir. 30 saniyeden uzun sesler için return_timestamps=True değerinin ayarlanması gerekir.
  • task (str, isteğe bağlı) — Üretim için kullanılacak görev, “translate” veya “transcribe”.
  • language (str veya str listesi, isteğe bağlı) — Üretim için kullanılacak dil belirteci; <|en|>, en veya english biçiminde olabilir. Toplu üretim için dil belirteçleri listesi geçirilebilir. Kullanılabilecek tüm dil belirteçleri model.generation_config.lang_to_id sözlüğünde bulunabilir.
  • is_multilingual (bool, isteğe bağlı) — Modelin çok dilli olup olmadığı.
  • prompt_ids (torch.Tensor, isteğe bağlı) — get_prompt_ids() işlevine metin geçirilerek oluşturulan ve her parçaya bir istem (prompt) olarak sağlanan, token kimliklerinden oluşan Rank-1 tensör. Bu, transkripsiyon için bir bağlam sağlamak veya “istem mühendisliği” yapmak amacıyla kullanılabilir; örneğin, özel sözlükler veya özel isimler gibi öğeler, bu kelimelerin doğru tahmin edilme olasılığını artırmak için kullanılabilir. decoder_start_token_id ile birlikte kullanılamaz, çünkü bu değeri üzerine yazar.
  • prompt_condition_type (str, isteğe bağlı) — Yalnızca uzun biçimli transkripsiyon için geçerlidir. prompt_ids koşullu tipi. ‘first-segment’, yalnızca ilk segmentin prompt_ids üzerinde koşullandırıldığını belirtir. ‘all-segments’, her segmentin prompt_ids üzerinde koşullandırıldığını belirtir. ‘all-segments’ için condition_on_prev_tokens seçeneğinin etkinleştirildiğinden emin olun. Varsayılan değer ‘first-segment’tir. Kısa süreli transkripsiyonda yalnızca ‘first-segment’ kullanılabilir.
  • condition_on_prev_tokens (bool, isteğe bağlı) — Yalnızca uzun biçimli transkripsiyon için geçerlidir. Her segmentin önceki segmente koşullu olup olmayacağını belirler. Whisper makalesinde gösterildiği üzere, bu, performansı iyileştirmeye yardımcı olabilir.
  • temperature (float veya float listesi, isteğe bağlı) — Üretim için kullanılacak sıcaklık. Tek bir float değeri ve do_sample=True geçirildiğinde örneklemeye dayalı üretim etkinleşir. Uzun biçimli transkripsiyon için, (0.0, 0.2, 0.4, 0.6, 0.8, 1.0) gibi float değerlerinden oluşan bir liste geçirilerek sıcaklık geri dönüşü etkinleştirilebilir. Whisper makalesinde gösterildiği üzere, bu, performansı iyileştirmeye yardımcı olabilir.
  • compression_ratio_threshold (float, isteğe bağlı) — Yalnızca uzun formatlı transkripsiyon için geçerlidir. Tanımlıysa, her segmentin zlib sıkıştırma oranı hesaplanır. Bir segmentin sıkıştırma oranı compression_ratio_threshold değerinden yüksekse, sıcaklık geri dönüşü (temperature fallback) etkinleştirilir: üretilen segment atılır ve üretim daha yüksek bir sıcaklık kullanılarak tekrarlanır. Bu özelliğin arkasındaki mantık, çok yüksek sıkıştırma oranlarına sahip segmentlerin aşırı tekrar (repetition) sorunu yaşamasıdır. İstenmeyen tekrar, sıcaklığı artırarak daha fazla rastgelelik enjekte edilerek azaltılabilir. compression_ratio_threshold tanımlıysa temperature'ın bir değerler listesi olduğundan emin olun. compression_ratio_threshold için yaygın bir değer 1.35'tir. Whisper makalesinde gösterildiği gibi, bu performansın iyileştirilmesine yardımcı olabilir.
  • logprob_threshold (float, isteğe bağlı) — Yalnızca uzun biçimli transkripsiyon için geçerlidir. Tanımlıysa, her segmentin ortalama log-olasılığı hesaplanır. Belirli bir segmentin log-olasılığı logprob_threshold değerinden düşükse, sıcaklık geri dönüşü etkinleştirilir: üretilen segment atılır ve üretim daha yüksek bir sıcaklıkla tekrarlanır. Bu özelliğin arkasındaki mantık, düşük log-olasılığa sahip segmentlerin, sıcaklığı artırarak daha fazla rastgelelik enjekte edilerek iyileştirilebileceğidir. logprob_threshold tanımlıysa, temperature'ın değerler listesinden oluştuğundan emin olun. logprob_threshold için yaygın bir değer -1.0'dır. Whisper makalesinde gösterildiği gibi, bu, performansı iyileştirmeye yardımcı olabilir.
  • no_speech_threshold (float, opsiyonel) — Yalnızca uzun formatlı transkripsiyon için geçerlidir. Tanımlıysa, “no-speech” token’ı logprob_threshold ile birlikte, bir segmentin yalnızca sessizlik içerip içermediğini belirlemek için kullanılır. Bu durumda, bu segmentin transkripsiyonu atlanır. Whisper makalesinde gösterildiği üzere, bu, performansı iyileştirmeye yardımcı olabilir.
  • num_segment_frames (int, isteğe bağlı) — Tek bir segmentin kaç kareden oluştuğunu belirtir. Tanımlanmamışsa num_segment_frames, modelin stride değerinin maksimum giriş uzunluğu ile çarpımı olarak varsayılan değerini alır.
  • attention_mask (torch.Tensor, isteğe bağlı) — attention_mask, batch boyutu > 1 kullanılarak uzun formatlı transkripsiyon yapılırken iletilmelidir.
  • time_precision (int, isteğe bağlı, varsayılan 0.02) — Çıktı token'ının saniye cinsinden süresi. Örn. 0.02, üretilen bir token'ın ortalama 20 ms'ye denk geldiğini ifade eder.
  • time_precision_features (int, isteğe bağlı, varsayılan 0.01) — Bir özellik çerçevesinin saniye cinsinden temsil ettiği süre.
  • return_token_timestamps (bool, isteğe bağlı) — Metinle birlikte token düzeyinde zaman damgalarının döndürülüp döndürülmeyeceğini belirtir. Bu, return_timestamps seçeneğiyle birlikte veya ayrı olarak kullanılabilir. Kelime düzeyinde zaman damgalarını almak için, tokenleri kelimelere gruplamak üzere tokenizer'ı kullanın.
  • return_segments (bool, isteğe bağlı, varsayılan False) — Ayrıca tüm segmentlerin listesinin döndürülüp döndürülmeyeceğini belirtir. Bu seçeneğin yalnızca uzun biçimli transkripsiyon sırasında etkinleştirilebileceğini unutmayın.
  • return_dict_in_generate (bool, isteğe bağlı, varsayılan False) — Sadece üretilen token'ları döndürmek yerine bir ModelOutput döndürülecek mi? Uzun biçimli transkripsiyon yaparken, return_dict_in_generate yalnızca return_segments True olarak ayarlandığında etkinleştirilebilir. Bu durumda her segmentin üretim çıktıları ilgili segmente eklenir.
  • force_unique_generate_call (bool, isteğe bağlı) — Altta yatan GenerationMixin'in generate() metoduna benzersiz bir çağrı yapılmasını zorlayıp zorlamayacağı. Bu, destekli çözümleme (assisted decoding) ve test amaçları için, yalnızca bir kez generate() çağrısı yapılmasını ve dolayısıyla decoder girdi token kimlikleri ile eos token kimliklerinin döndürülmesini sağlamak için kullanışlıdır.
  • monitor_progress (Callable[[torch.Tensor], None], isteğe bağlı) — Sağlanırsa, bu fonksiyon ses transkripsiyonunun ilerlemesini raporlamak için çağrılabilir. Fonksiyon, n parti boyutunu temsil eden (n, 2) biçiminde p adlı bir tensör argümanı alır. p[i, 0], i parti öğesi için şu anda transkribe edilen ses çerçevesinin indeksini içerir. p[i, 1] ise i parti öğesi için toplam çerçeve sayısını içerir. Dönüş değeri beklenmez.
  • kwargs (dict[str, Any], isteğe bağlı) — generate_config için ad hoc parametrelendirme ve/veya modelin forward fonksiyonuna iletilecek ek model özel kwargs'ları. Model bir encoder-decoder modeli ise, encoder'a özgü kwargs'lar öneklenmemeli ve decoder'a özgü kwargs'lar decoder_ önekiyle başlamalıdır.

Dönüş değeri

ModelOutput veya dict[str, Any] veya torch.LongTensor

Aşağıdakilerden biri:

  • return_dict_in_generate=True ve (return_timestamps=False veya force_unique_generate_call=True) olduğunda, decoder giriş kimliklerini ve dizin sonu kimliğini içeren ModelOutput.
  • (return_dict_in_generate=True ve return_timestamps=True) veya return_segments=True veya return_token_timestamps=True ise dict[str, Any].
  • Diğer tüm durumlarda, decoder giriş kimlikleri ve dizin sonu kimliği hariç, torch.LongTensor.

Olası ModelOutput türleri şunlardır:

segments, segment öğelerinden oluşan bir liste listesidir (her batch öğesi için bir liste). segment, start, end, tokens, idxs ve result anahtarlarına sahip bir sözlüktür.

  • start: segmentin başlangıç zaman damgası.
  • end: segmentin bitiş zaman damgası.
  • tokens: decoder giriş kimlikleri ve dizin sonu kimliği hariç, segmentin token'ları.
  • idxs: result içinde mevcut olan, altta yatan GenerationMixin’in generate() çağrısında segmentin tokens dizisinin başlangıç (dahil) ve bitiş (hariç) indeksleri.
  • result: generate() çağrısının altındaki GenerationMixin'in sonucu.

return_timestamps=True olduğunda, return_dict_in_generate=True, altta yatan GenerationMixin'in generate() çağrılarının her birine uygulanır ve çıktılar, her segment'in result alanında saklanır.

Log-mel giriş özelliklerini, otoregresif olarak üretilen token kimliklerinden oluşan bir diziyi transkribe eder veya çevirir.

Çoğu üretim kontrol parametresi, generation_config içinde ayarlanır; bu parametre geçirilmezse, modelin varsayılan üretim yapılandırması kullanılır. generation_config içindeki herhangi bir değeri, generate() fonksiyonuna ilgili parametreleri geçirerek geçersiz kılabilirsiniz, örneğin .generate(inputs, num_beams=4, do_sample=True).

Üretim stratejileri ve kod örneklerinin genel bakışı için şu kılavuza göz atın.

Örnek:

  • Uzun biçimli transkripsiyon: 30 saniyeden uzun sesleri transkribe etmek veya çevirmek için, ses dosyalarını kırpma işlemi uygulamadan işleyin ve tüm mel özelliklerini tek seferde generate'a iletin. return_timestamps=True değerinin ayarlanması gereklidir. Gerçekten de, uzun biçimli transkripsiyon; sıkıştırma oranı eşiği, log olasılık eşiği ve sıcaklık geri dönüşü gibi heuristiklere dayalı, zaman damgası tahminlerine dayalı ardışık bir algoritma kullanır. Bu algoritma, Whisper orijinal makalesinde, 3.8. Uzun Biçimli Transkripsiyon bölümünde açıklanmıştır.
>>> 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 geri çağrısı, transkripsiyonun ilerlemesini izlemek için kullanılabilir:

>>> 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."
  • Kısa biçim transkripsiyon: Geçirilen mel giriş özellikleri 30 saniye veya daha az ise iki olasılık vardır:
    • return_timestamps=False: tüm ses, GenerationMixin'in generate() fonksiyonuna tek bir çağrıyla transkribe edilir.
    • return_timestamps=True: ses, uzun formatlı transkripsiyonla aynı mantık kullanılarak transkribe edilecektir.
>>> 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

sınıf transformers.WhisperForCausalLM

< >

( config: WhisperConfig )

Parametreler

  • config (WhisperConfig) — Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için from_pretrained() yöntemine bakın.

Üzerinde bir dil modelleme başlığı bulunan (giriş gömme ağırlıklarıyla bağlı ağırlıklara sahip doğrusal katman) Whisper çözücü.

Bu model PreTrainedModel sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden boyutlandırma, başları budama vb.) için üst sınıf belgelendirmesine bakın.

Bu model aynı zamanda bir PyTorch torch.nn.Module alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.

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)

Parametreler

  • input_ids (torch.LongTensor şeklinde (batch_size, sequence_length), isteğe bağlı) — Sözlükteki girdi dizisi belirteçlerinin (token) indeksleri. Varsayılan olarak dolgu (padding) yok sayılır.

    Dizinler AutoTokenizer kullanılarak elde edilebilir. Ayrıntılar için PreTrainedTokenizer.encode() ve PreTrainedTokenizer.call() konularına bakın.

    Girdi kimlikleri nelerdir?

  • attention_mask (torch.Tensor şeklinde (batch_size, sequence_length), isteğe bağlı) — Doldurma (padding) token indekslerinde dikkat (attention) işlemi yapmaktan kaçınmak için kullanılan maske. Seçilen maske değerleri [0, 1]:
    • 1, maskelenmemiş jetonlar için,
    • maskelenmiş jetonlar için 0.

    Dikkat maskeleri nedir?

  • encoder_outputs (torch.Tensor, şekli (batch_size, sequence_length, hidden_size), isteğe bağlı) — Kodlayıcının (encoder) son katmanının çıktısındaki gizli durumlar (hidden-states) dizisi. Model bir çözücü (decoder) olarak yapılandırılmışsa çapraz dikkat (cross-attention) için kullanılır.
  • past_key_values (~cache_utils.Cache, isteğe bağlı) — Sıralı çözümlemeyi hızlandırmak için kullanılabilen önceden hesaplanmış gizli durumlar (self-attention ve cross-attention bloklarındaki anahtar ve değerler). Bu genellikle past_key_values değerinin, çözümlemenin önceki bir aşamasında model tarafından döndürülen use_cache=True veya config.use_cache=True.

    Girdi olarak yalnızca Cache örneği kabul edilir, kv cache kılavuzumuza bakın. past_key_values geçirilmezse, varsayılan olarak DynamicCache başlatılır.

    Model, girdi olarak verilen aynı önbellek biçimini çıktı olarak üretecektir.

    past_key_values kullanılıyorsa, kullanıcının tüm input_ids (şekli (batch_size, sequence_length)) yerine, bu modele geçmiş anahtar değer durumları verilmemiş olan, işlenmemiş input_ids (şekli (batch_size, unprocessed_length)) girmesi beklenir.

  • inputs_embeds (torch.Tensor, şekli (batch_size, sequence_length, hidden_size), isteğe bağlı) — İsteğe bağlı olarak, input_ids yerine gömülü bir temsil doğrudan geçmeyi tercih edebilirsiniz. Bu, input_ids dizinlerini ilgili vektörlere dönüştürme biçimi üzerinde modelin dahili gömme arama matrisinden daha fazla kontrol sahibi olmak istiyorsanız faydalıdır.
  • labels (torch.LongTensor, şekli (batch_size, sequence_length), isteğe bağlı) — Maskeli dil modelleme kaybını hesaplamak için etiketler. Endeksler [0, ..., config.vocab_size] aralığında olmalı ya da -100 olmalı (input_ids docstring'ine bakın). Endeksleri -100 olarak ayarlanan tokenlar yok sayılır (maskelenir), kayıp yalnızca etiketleri [0, ..., config.vocab_size] aralığında olan tokenlar için hesaplanır.
  • use_cache (bool, isteğe bağlı) — True olarak ayarlanırsa, past_key_values anahtar değer durumları döndürülür ve çözümlemeyi hızlandırmak için kullanılabilir (bkz. past_key_values).

Dönüş değeri

CausalLMOutputWithCrossAttentions veya tuple(torch.Tensor)

Bir CausalLMOutputWithCrossAttentions veya bir torch.Tensor demeti (return_dict=False geçirildiğinde veya config.return_dict=False olduğunda), yapılandırmaya (WhisperConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.

WhisperForCausalLM forward metodu, __call__ özel metodunu geçersiz kılar.

İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine Module örneğini çağırmak gerekir; çünkü önceki, ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.

  • loss (torch.Tensor, şekli (1,), isteğe bağlı, labels sağlandığında döndürülür) — Dil modelleme kaybı (sonraki token tahmini için).

  • logits (torch.Tensor, şekli (batch_size, sequence_length, config.vocab_size)) — Dil modelleme başlığının tahmin puanları (SoftMax öncesi her sözlük jetonu için puanlar).

  • hidden_states (tuple(torch.Tensor), isteğe bağlı, output_hidden_states=True geçirildiğinde veya config.output_hidden_states=True olduğunda döndürülür) — torch.Tensor (modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için birer tane) içeren, (batch_size, sequence_length, hidden_size) biçiminde bir demet.

    Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.

  • attentions (tuple(torch.Tensor), isteğe bağlı, output_attentions=True geçirildiğinde veya config.output_attentions=True olduğunda döndürülür) — torch.Tensor (katman başına bir tane) içeren bir tuple, şekli (batch_size, num_heads, sequence_length, sequence_length).

    Dikkat softmax'ı sonrası dikkat ağırlıkları, öz-dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.

  • cross_attentions (tuple(torch.Tensor), isteğe bağlı, output_attentions=True geçirildiğinde veya config.output_attentions=True olduğunda döndürülür) — (batch_size, num_heads, sequence_length, sequence_length) biçiminde, her katman için bir adet içeren torch.Tensor demeti.

    Dikkat softmax'ı sonrası çapraz dikkat ağırlıkları, çapraz dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.

  • past_key_values (Cache, isteğe bağlı, use_cache=True geçirildiğinde veya config.use_cache=True olduğunda döndürülür) — Bir Cache örneğidir. Daha fazla ayrıntı için kv cache kılavuzumuza bakın.

    Sıralı çözümlemeyi hızlandırmak için (bkz. past_key_values girdisi) kullanılabilen, önceden hesaplanmış gizli durumları (dikkat bloklarındaki anahtar ve değerler) içerir.

Örnek:

>>> 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

sınıf transformers.WhisperForAudioClassification

< >

( config: WhisperConfig )

Parametreler

  • config (WhisperConfig) — Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için from_pretrained() yöntemine bakın.

Üzerinde bir dizi sınıflandırma başlığı (havuzlanmış çıktı üzerinde doğrusal bir katman) bulunan ve SUPERB Keyword Spotting gibi görevler için kullanılan Whisper Encoder Model.

Bu model PreTrainedModel sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden boyutlandırma, başları budama vb.) için üst sınıf belgelendirmesine bakın.

Bu model aynı zamanda bir PyTorch torch.nn.Module alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.

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)

Parametreler

  • input_features (torch.LongTensor, şekli (batch_size, sequence_length, feature_dim), isteğe bağlı) — Giriş ses özelliklerine karşılık gelen tensörler. Ses özellikleri WhisperFeatureExtractor kullanılarak elde edilebilir. Ayrıntılar için WhisperFeatureExtractor.call() bölümüne bakın (WhisperProcessor, sesleri işlemek için WhisperFeatureExtractor kullanır).
  • encoder_outputs (tuple[tuple[torch.Tensor]], isteğe bağlı) — (last_hidden_state, isteğe bağlı: hidden_states, isteğe bağlı: attentions) içeren bir tuple last_hidden_state, (batch_size, sequence_length, hidden_size) boyutunda, isteğe bağlı) encoder'ın son katmanının çıktısındaki gizli durumlar dizisidir. Decoder'ın çapraz dikkat (cross-attention) mekanizmasında kullanılır.
  • labels (torch.LongTensor, şekli (batch_size,), isteğe bağlı) — Sınıflandırma/geri dönüş kaybını hesaplamak için etiketler. Endeksler [0, ..., config.num_labels - 1] aralığında olmalıdır. config.num_labels == 1 ise bir geri dönüş kaybı (Ortalama Kare kaybı) hesaplanır, config.num_labels > 1 ise bir sınıflandırma kaybı (Çapraz Entropi) hesaplanır.

Dönüş değeri

SequenceClassifierOutput veya tuple(torch.Tensor)

Bir SequenceClassifierOutput veya torch.Tensor demeti (eğer return_dict=False geçirildiyse veya config.return_dict=False ise), yapılandırma (WhisperConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.

WhisperForAudioClassification forward metodu, __call__ özel metodunu geçersiz kılar.

İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine Module örneğini çağırmak gerekir; çünkü önceki, ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.

  • loss (torch.Tensor, şekli (1,), isteğe bağlı, labels sağlandığında döndürülür) — Sınıflandırma (config.num_labels==1 ise regresyon) kaybı.

  • logits (torch.Tensor, şekli (batch_size, config.num_labels)) — Sınıflandırma (veya config.num_labels==1 ise regresyon) puanları (SoftMax öncesi).

  • hidden_states (tuple(torch.Tensor), isteğe bağlı, output_hidden_states=True geçirildiğinde veya config.output_hidden_states=True olduğunda döndürülür) — torch.Tensor (modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için birer tane) içeren, (batch_size, sequence_length, hidden_size) biçiminde bir demet.

    Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.

  • attentions (tuple(torch.Tensor), isteğe bağlı, output_attentions=True geçirildiğinde veya config.output_attentions=True olduğunda döndürülür) — torch.Tensor (katman başına bir tane) içeren bir tuple, şekli (batch_size, num_heads, sequence_length, sequence_length).

    Dikkat softmax'ı sonrası dikkat ağırlıkları, öz-dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.

Örnek:

>>> 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