Transformers documentation
Whisper
Bu model 2022-12-06 tarihinde HF papers'ta yayımlanmış ve 2022-10-05 tarihinde Hugging Face Transformers'a katkıda bulunulmuştur.
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=Truedeğ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.
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]Notlar
- Whisper, çıkarım için özel bir
generatekullanı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
< 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 )
Parametreler
- is_encoder_decoder (
bool, isteğe bağlı, varsayılanTrue) — Modelin bir kodlayıcı/çözücü olarak kullanılıp kullanılmadığı. - vocab_size (
int, isteğe bağlı, varsayılan51865) — Modelin sözlük boyutu.input_idsile temsil edilebilecek farklı token sayısını belirler. - num_mel_bins (
int, isteğe bağlı, varsayılan80) — Giriş başına kullanılan mel özellik sayısı.AutoFeatureExtractorsınıfında kullanılan değerle eşleşmelidir. - encoder_layers (
int, isteğe bağlı, varsayılan4) — Transformer kodlayıcısındaki gizli katman sayısı. Ayarlanmazsanum_layersile aynı değeri kullanır. - encoder_attention_heads (
int, isteğe bağlı, varsayılan6) — Transformer kodlayıcısındaki her dikkat katmanı için dikkat başı sayısı. - decoder_layers (
int, isteğe bağlı, varsayılan4) — Transformer decoder'ındaki gizli katman sayısı. Ayarlanmazsanum_layersile aynı değeri kullanır. - decoder_attention_heads (
int, isteğe bağlı, varsayılan6) — Transformer decoder'ındaki her dikkat katmanı için dikkat başı sayısı. - decoder_ffn_dim (
int, isteğe bağlı, varsayılan1536) — Decoder'daki "ara" (genellikle feed-forward olarak adlandırılan) katmanın boyutluluğu. - encoder_ffn_dim (
int, isteğe bağlı, varsayılan1536) — Encoder'daki “ara” (genellikle feed-forward olarak adlandırılan) katmanın boyutu. - encoder_layerdrop (
Union[float, int], isteğe bağlı, varsayılan0.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ılan0.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ılan50257) — Bir encoder-decoder modeli,bosile farklı bir token ile çözmeye başlıyorsa, o token'ın kimliği. - use_cache (
bool, isteğe bağlı, varsayılanTrue) — Modelin son anahtar/değer dikkatlerini (tüm modellerde kullanılmaz) döndürüp döndürmeyeceği. Yalnızcaconfig.is_decoder=Trueolduğunda veya model yalnızca çözücü tabanlı üretken bir model olduğunda geçerlidir. - activation_function (
str, isteğe bağlı, varsayılangelu) — Çö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ılan384) — Kodlayıcı katmanlarının ve pooler katmanının boyutu. - dropout (
Union[float, int], isteğe bağlı, varsayılan0.0) — Tüm dropout katmanları için oran. - attention_dropout (
Union[float, int], isteğe bağlı, varsayılan0.0) — Dikkat olasılıkları için dropout oranı. - activation_dropout (
Union[float, int], isteğe bağlı, varsayılan0.0) — Tamamen bağlı katmandaki aktivasyonlar için dropout oranı. - init_std (
float, isteğe bağlı, varsayılan0.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ılanFalse) — 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ılan50256) — Sözlükte dolgu için kullanılan token kimliği. - bos_token_id (
int, isteğe bağlı, varsayılan50256) — 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ılan50256) — Sözlükte akış sonu için kullanılan token kimliği. - suppress_tokens (
list[int], isteğe bağlı) —generateiş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ıylaenglish-onlyvemultilingualmodellerine 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) veeos_token_idile başlatılır. - use_weighted_layer_sum (
bool, isteğe bağlı, varsayılanFalse) — Öğ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ılanFalse) — Ö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 üzerindemask_time_prob*len(time_axis)/mask_time_lengthadet 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ğeriprob_vector_start*mask_time_lengtholmalıdır. Dikkat edin, örtüşme, maskelenen vektörlerin gerçek yüzdesini azaltabilir. Bu, yalnızcaapply_spec_augment == Trueolduğ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_probdeğerinden bağımsız olarak üretilen,mask_feature_lengthuzunluğ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 üzerindemask_feature_prob*len(feature_axis)/mask_time_lengthadet 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ğeriprob_vector_start*mask_feature_lengtholmalıdır. Dikkat edin, örtüşme, maskelenen vektörlerin gerçek yüzdesini azaltabilir. Bu, yalnızcaapply_spec_augment is Trueise geçerlidir. - mask_feature_prob (
Union[float, int], isteğe bağlı, varsayılan0.0) — Özellik ekseni boyunca maskelenecek tüm özellik vektörlerinin yüzdesi (0 ile 1 arasında). Maskeleme işlemi, eksen üzerindemask_feature_prob*len(feature_axis)/mask_time_lengthbağı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ğeriprob_vector_start*mask_feature_lengtholmalıdır. Dikkat edin, örtüşme, maskelenen vektörlerin gerçek yüzdesini azaltabilir. Bu, yalnızcaapply_spec_augmentdeğeriTrueise 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_probdeğerinden bağımsız olarak, özellik ekseni boyunca üretilenmask_feature_lengthuzunluğundaki maskelerin asgari sayısı. Yalnızcamask_feature_prob*len(feature_axis)/mask_feature_length < mask_feature_min_maskskoş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ılanTrue) — Modelintied_weights_keyseş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.configWhisperTokenizer
sınıf 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 )
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çindecoder_start_token_idkullanılır. - eos_token (
str, isteğe bağlı, varsayılan"<|endoftext|>") — Dizi sonu belirteci. - add_prefix_space (
bool, isteğe bağlı, varsayılanFalse) — 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ılanFalse) — 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
< source >( language: str | None = Nonetask: str | None = Nonepredict_timestamps: bool | None = None )
Parametreler
- language (
str, isteğe bağlı, varsayılanNone) — Transkripsiyon metninin dili. - task (
str, isteğe bağlı, varsayılanNone) — Dizinin başına eklenecek görev tanımlayıcısı (varsa). - predict_timestamps (
bool, isteğe bağlı, varsayılanNone) — 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
< source >( 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ılanFalse) — 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.
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]
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ılanFalse) — Çö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.Noneise, varsayılan olarakself.clean_up_tokenization_spaceskullanı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
< 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
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ılanFalse) — Çö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.Noneise,tokenizer_configiçinde mevcut olanself.clean_up_tokenization_spacesdeğeri varsayılan olarak kullanılır. - output_offsets (
bool, isteğe bağlı, varsayılanFalse) — 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ılanFalse) — Ham metinde zaman damgaları dahil edilerek mi çözümleneceği. - normalize (
bool, isteğe bağlı, varsayılanFalse) — Çö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ılanFalse) — Çözümlenen metne Basic metin normalizasyonunun uygulanıp uygulanmayacağını belirtir. Çok dilli hedef metinlere uygulanabilir. - remove_diacritics (
bool, isteğe bağlı, varsayılanFalse) — 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.
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.
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
< source >( 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ılansampling_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 etkisispectrogram(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__
< 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 )
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ılanTrue) — 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 (
strveya TensorType, isteğe bağlı) — Belirlenirse, Python tamsayı listesi yerine tensörler döndürülür. Kabul edilen değerler şunlardır:'pt': PyTorchtorch.Tensornesnelerini döndürür.'np': Numpynp.ndarraynesnelerini 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.Whisper modelleri için, ince hatalardan kaçınmak amacıyla toplu çıkarım sırasında
attention_maskher zaman iletilmelidir. - padding (
strveya 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_lengthargü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
Noneolarak 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_speechgirdisinin örneklenmiş olduğu örneklem hızı. Sessiz hataları önlemek ve otomatik konuşma tanıma hattına izin vermek için ileri çağrıdasampling_ratedeğerinin geçirilmesi şiddetle önerilir. - do_normalize (
bool, isteğe bağlı, varsayılanFalse) — 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_featuresyö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
< source >( feature_extractortokenizer )
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__
< source >( *args**kwargs )
Parametreler
- return_tensors (
strveya 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': PyTorchtorch.Tensornesnelerini döndürür.'np': NumPynp.ndarraynesnelerini döndürür.
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 )
Parametreler
- pretrained_model_name_or_path (
strveyaos.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_pretrainedfonksiyonları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_pretrainedmetotlarını çağırır. Daha fazla bilgi için yukarıdaki metotların dokümantasyon dizelerine (docstring) başvurun.
save_pretrained
< source >( save_directorypush_to_hub: bool = False**kwargs )
Parametreler
- save_directory (
strveyaos.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ılanFalse) — Modelinizi kaydettikten sonra Hugging Face model hub'ına gönderip göndermeyeceğinizi belirtir. Göndermek istediğiniz depoyurepo_idile belirtebilirsiniz (varsayılan olarak ad alanınızdakisave_directoryadı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.
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.
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
< source >( 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
< 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)
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.
- 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 olarakdecoder_start_token_idkullanır.past_key_valueskullanılıyorsa, isteğe bağlı olarak yalnızca sondecoder_input_idsgirdi 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_maskfonksiyonunu 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 tuplelast_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 genelliklepast_key_valuesdeğerinin, çözümlemenin önceki bir aşamasında model tarafından döndürülenuse_cache=Trueveyaconfig.use_cache=True.Girdi olarak yalnızca Cache örneği kabul edilir, kv cache kılavuzumuza bakın.
past_key_valuesgeçirilmezse, varsayılan olarak DynamicCache başlatılır.Model, girdi olarak verilen aynı önbellek biçimini çıktı olarak üretecektir.
past_key_valueskullanılıyorsa, kullanıcının tüminput_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_idsgeçirmek yerine gömülü bir temsil doğrudan geçirmeyi seçebilirsiniz. Eğerpast_key_valueskullanılıyorsa, isteğe bağlı olarak yalnızca sondecoder_inputs_embedsgirdi olarak verilmelidir (bkz.past_key_values). Bu, modelin dahili gömme arama matrisine kıyasladecoder_input_idsendekslerini ilgili vektörlere dönüştürme biçimi üzerinde daha fazla kontrol istiyorsanız faydalıdır.decoder_input_idsvedecoder_inputs_embedsher ikisi de ayarlanmamışsa,decoder_inputs_embedsinputs_embedsdeğ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]. - use_cache (
bool, isteğe bağlı) —Trueolarak ayarlanırsa,past_key_valuesanahtar 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_valueskullanı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=Truegeçirildiğinde veyaconfig.use_cache=Trueolduğ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_valuesgirdisi) 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=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğ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=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğ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=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —(batch_size, num_heads, sequence_length, sequence_length)biçiminde, her katman için bir adet içerentorch.Tensordemeti.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=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğ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=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğ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
< source >( 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
< source >( 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
< 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)
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.
- 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 olarakdecoder_start_token_idkullanır.past_key_valueskullanılıyorsa, isteğe bağlı olarak yalnızca sondecoder_input_idsgirdi 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_maskfonksiyonunu 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 tuplelast_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 genelliklepast_key_valuesdeğerinin, çözümlemenin önceki bir aşamasında model tarafından döndürülenuse_cache=Trueveyaconfig.use_cache=True.Girdi olarak yalnızca Cache örneği kabul edilir, kv cache kılavuzumuza bakın.
past_key_valuesgeçirilmezse, varsayılan olarak DynamicCache başlatılır.Model, girdi olarak verilen aynı önbellek biçimini çıktı olarak üretecektir.
past_key_valueskullanılıyorsa, kullanıcının tüminput_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_idsgeçirmek yerine gömülü bir temsil doğrudan geçirmeyi seçebilirsiniz. Eğerpast_key_valueskullanılıyorsa, isteğe bağlı olarak yalnızca sondecoder_inputs_embedsgirdi olarak verilmelidir (bkz.past_key_values). Bu, modelin dahili gömme arama matrisine kıyasladecoder_input_idsendekslerini ilgili vektörlere dönüştürme biçimi üzerinde daha fazla kontrol istiyorsanız faydalıdır.decoder_input_idsvedecoder_inputs_embedsher ikisi de ayarlanmamışsa,decoder_inputs_embedsinputs_embedsdeğ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]. - 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_idsdocstring'ine bakın). İndeksleri-100olarak 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ı) —Trueolarak ayarlanırsa,past_key_valuesanahtar 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ı,labelssağ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=Truegeçirildiğinde veyaconfig.use_cache=Trueolduğ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_valuesgirdisi) 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=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğ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=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğ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=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —(batch_size, num_heads, sequence_length, sequence_length)biçiminde, her katman için bir adet içerentorch.Tensordemeti.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=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğ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=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğ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
< 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
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.flacveya.wavses dosyasınılist[float]tipinde bir diziye,numpy.ndarrayveyatorch.Tensoriç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. Diziyiinput_featuresiçin hazırlamak için, mel özelliklerini çıkarmak, dolgu yapmak vetorch.Tensortipinde 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ı.
**kwargsile generate'e,generation_configöznitelikleriyle eşleşen parametreler geçirilirse bunlar geçersiz kılınır.generation_configsağlanmazsa, varsayılan değer kullanılır; bunun yükleme önceliği şu şekildedir: 1) varsageneration_config.jsonmodel 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ğibatch_idveinput_ids. Batch kimliğibatch_idve daha önce üretilen tokenlarinputs_idskoş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ılanFalse) —FullyShardedDataParallelve 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,WhisperTimestampsLogitsProcessorbileşenini etkinleştirir. 30 saniyeden uzun sesler içinreturn_timestamps=Truedeğerinin ayarlanması gerekir. - task (
str, isteğe bağlı) — Üretim için kullanılacak görev, “translate” veya “transcribe”. - language (
strveyastrlistesi, isteğe bağlı) — Üretim için kullanılacak dil belirteci;<|en|>,enveyaenglishbiçiminde olabilir. Toplu üretim için dil belirteçleri listesi geçirilebilir. Kullanılabilecek tüm dil belirteçlerimodel.generation_config.lang_to_idsö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_idile 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_idskoşullu tipi. ‘first-segment’, yalnızca ilk segmentinprompt_idsüzerinde koşullandırıldığını belirtir. ‘all-segments’, her segmentinprompt_idsüzerinde koşullandırıldığını belirtir. ‘all-segments’ içincondition_on_prev_tokensseç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 (
floatveyafloatlistesi, isteğe bağlı) — Üretim için kullanılacak sıcaklık. Tek birfloatdeğeri vedo_sample=Truegeç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_thresholddeğ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_thresholdtanımlıysatemperature'ın bir değerler listesi olduğundan emin olun.compression_ratio_thresholdiç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_thresholddeğ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_thresholdtanımlıysa,temperature'ın değerler listesinden oluştuğundan emin olun.logprob_thresholdiç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_thresholdile 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ışsanum_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_timestampsseç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ılanFalse) — 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ılanFalse) — Sadece üretilen token'ları döndürmek yerine bir ModelOutput döndürülecek mi? Uzun biçimli transkripsiyon yaparken,return_dict_in_generateyalnızcareturn_segmentsTrue 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,nparti boyutunu temsil eden(n, 2)biçimindepadlı bir tensör argümanı alır.p[i, 0],iparti öğesi için şu anda transkribe edilen ses çerçevesinin indeksini içerir.p[i, 1]iseiparti öğ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_configiçin ad hoc parametrelendirme ve/veya modelinforwardfonksiyonuna 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=Trueve (return_timestamps=Falseveyaforce_unique_generate_call=True) olduğunda, decoder giriş kimliklerini ve dizin sonu kimliğini içeren ModelOutput.- (
return_dict_in_generate=Truevereturn_timestamps=True) veyareturn_segments=Trueveyareturn_token_timestamps=Trueisedict[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:resultiçinde mevcut olan, altta yatan GenerationMixin’in generate() çağrısında segmentintokensdizisinin 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_configiçinde ayarlanır; bu parametre geçirilmezse, modelin varsayılan üretim yapılandırması kullanılır.generation_configiç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=Truedeğ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
< source >( 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
< 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)
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.
- 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.
- 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 genelliklepast_key_valuesdeğerinin, çözümlemenin önceki bir aşamasında model tarafından döndürülenuse_cache=Trueveyaconfig.use_cache=True.Girdi olarak yalnızca Cache örneği kabul edilir, kv cache kılavuzumuza bakın.
past_key_valuesgeçirilmezse, varsayılan olarak DynamicCache başlatılır.Model, girdi olarak verilen aynı önbellek biçimini çıktı olarak üretecektir.
past_key_valueskullanılıyorsa, kullanıcının tüminput_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_idsyerine gömülü bir temsil doğrudan geçmeyi tercih edebilirsiniz. Bu,input_idsdizinlerini 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_idsdocstring'ine bakın). Endeksleri-100olarak 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ı) —Trueolarak ayarlanırsa,past_key_valuesanahtar 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ı,labelssağ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=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğ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=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğ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=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —(batch_size, num_heads, sequence_length, sequence_length)biçiminde, her katman için bir adet içerentorch.Tensordemeti.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=Truegeçirildiğinde veyaconfig.use_cache=Trueolduğ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_valuesgirdisi) 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
< source >( 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
< 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)
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 tuplelast_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 == 1ise bir geri dönüş kaybı (Ortalama Kare kaybı) hesaplanır,config.num_labels > 1ise 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ı,labelssağ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=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğ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=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğ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'