Transformers documentation
WavLM
Bu model 2021-10-26 tarihinde HF papers'ta yayımlanmış ve 2021-12-16 tarihinde Hugging Face Transformers'a katkıda bulunmuştur.
WavLM
Genel Bakış
WavLM modeli, Sanyuan Chen, Chengyi Wang, Zhengyang Chen, Yu Wu, Shujie Liu, Zhuo Chen, Jinyu Li, Naoyuki Kanda, Takuya Yoshioka, Xiong Xiao, Jian Wu, Long Zhou, Shuo Ren, Yanmin Qian, Yao Qian, Jian Wu, Michael Zeng ve Furu Wei tarafından WavLM: Large-Scale Self-Supervised Pre-Training for Full Stack Speech Processing makalesinde önerilmiştir.
Makalenin özeti aşağıdaki gibidir:
Özdenetimli öğrenme (SSL), konuşma tanıma alanında büyük başarılar elde etmişken, diğer konuşma işleme görevleri için sınırlı bir keşif çabası gösterilmiştir. Konuşma sinyali, konuşmacı kimliği, paralinguistikler, sözlü içerik gibi çok yönlü bilgiler içerdiğinden, tüm konuşma görevleri için evrensel temsiller öğrenmek zordur. Bu makalede, tam yığın aşağı akış konuşma görevlerini çözmek için yeni bir önceden eğitilmiş model olan WavLM'yi öneriyoruz. WavLM, HuBERT çerçevesi üzerine inşa edilmiş olup hem sözlü içerik modellemesine hem de konuşmacı kimliğinin korunmasına odaklanmaktadır. Öncelikle, tanıma görevlerindeki yeteneğini artırmak için Transformer yapısını kapılı göreli konum sapmasıyla donatıyoruz. Daha iyi konuşmacı ayrımı için, ek olarak üst üste binen cümlelerin denetimsiz olarak oluşturulduğu ve model eğitimi sırasında dahil edildiği bir cümle karıştırma eğitim stratejisi öneriyoruz. Son olarak, eğitim veri setini 60 bin saatten 94 bin saate ölçeklendiriyoruz. WavLM Large, SUPERB benchmark'ında en iyi performansı elde etmekte ve çeşitli konuşma işleme görevlerinin temsilci benchmark'larında önemli iyileştirmeler sağlamaktadır.
İlgili kontrol noktaları https://huggingface.co/models?other=wavlm altında bulunabilir.
Bu model patrickvonplaten tarafından katkıda bulunmuştur. Yazarların kodu burada bulunabilir.
Kullanım ipuçları
- WavLM, ses sinyalinin ham dalga formuna karşılık gelen bir float dizisi kabul eden bir ses modelidir. Özellik çıkarımı için lütfen Wav2Vec2Processor kullanın.
- WavLM modeli, bağlantısal zamansal sınıflandırma (CTC) kullanılarak ince ayarlanabilir; bu nedenle model çıktısının Wav2Vec2CTCTokenizer kullanılarak çözümlenmesi gerekir.
- WavLM, konuşmacı doğrulama, konuşmacı tanıma ve konuşmacı ayrıştırma görevlerinde özellikle iyi performans gösterir.
Kaynaklar
WavLMConfig
sınıf transformers.WavLMConfig
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonevocab_size: int = 32hidden_size: int = 768num_hidden_layers: int = 12num_attention_heads: int = 12intermediate_size: int = 3072hidden_act: str = 'gelu'hidden_dropout: float | int = 0.1activation_dropout: float | int = 0.1attention_dropout: float | int = 0.1feat_proj_dropout: float | int = 0.0final_dropout: float | int = 0.1layerdrop: float | int = 0.1initializer_range: float = 0.02layer_norm_eps: float = 1e-05feat_extract_norm: str = 'group'feat_extract_activation: str = 'gelu'conv_dim: list[int] | tuple[int, ...] = (512, 512, 512, 512, 512, 512, 512)conv_stride: list[int] | tuple[int, ...] = (5, 2, 2, 2, 2, 2, 2)conv_kernel: list[int] | tuple[int, ...] = (10, 3, 3, 3, 3, 2, 2)conv_bias: bool = Falsenum_conv_pos_embeddings: int = 128num_conv_pos_embedding_groups: int = 16num_buckets: int = 320max_bucket_distance: int = 800do_stable_layer_norm: bool = Falseapply_spec_augment: bool = Truemask_time_prob: float | int = 0.05mask_time_length: int = 10mask_time_min_masks: int = 2mask_feature_prob: float | int = 0.0mask_feature_length: int = 10num_codevectors_per_group: int = 320num_codevector_groups: int = 2contrastive_logits_temperature: float = 0.1num_negatives: int = 100codevector_dim: int = 256proj_codevector_dim: int = 256diversity_loss_weight: float = 0.1ctc_loss_reduction: str = 'mean'ctc_zero_infinity: bool = Falseuse_weighted_layer_sum: bool = Falseclassifier_proj_size: int = 256tdnn_dim: list[int] | tuple[int, ...] = (512, 512, 512, 512, 1500)tdnn_kernel: list[int] | tuple[int, ...] = (5, 3, 3, 1, 1)tdnn_dilation: list[int] | tuple[int, ...] = (1, 2, 3, 1, 1)xvector_output_dim: int = 512num_ctc_classes: int = 80pad_token_id: int | None = 0bos_token_id: int | None = 1eos_token_id: int | list[int] | None = 2add_adapter: bool = Falseadapter_kernel_size: int = 3adapter_stride: int = 2num_adapter_layers: int = 3output_hidden_size: int | None = None )
Parametreler
- vocab_size (
int, isteğe bağlı, varsayılan32) — Modelin sözlük boyutu.input_idstarafından temsil edilebilecek farklı token sayısını tanımlar. - hidden_size (
int, isteğe bağlı, varsayılan768) — Gizli temsillerin boyutu. - num_hidden_layers (
int, isteğe bağlı, varsayılan12) — Transformer çözücüdeki gizli katman sayısı. - num_attention_heads (
int, isteğe bağlı, varsayılan12) — Transformer decoder'ındaki her dikkat katmanı için dikkat başı sayısı. - intermediate_size (
int, isteğe bağlı, varsayılan3072) — MLP temsillerinin boyutu. - hidden_act (
str, isteğe bağlı, varsayılangelu) — Çözücüdeki doğrusal olmayan aktivasyon fonksiyonu (fonksiyon veya dize). Örneğin,"gelu","relu","silu"vb. - hidden_dropout (
Union[float, int], isteğe bağlı, varsayılan0.1) — Gömme, kodlayıcı ve havuzlayıcıdaki tüm tam bağlı katmanlar için dropout olasılığı. - activation_dropout (
Union[float, int], isteğe bağlı, varsayılan0.1) — Tamamen bağlı katmandaki aktivasyonlar için dropout oranı. - attention_dropout (
Union[float, int], isteğe bağlı, varsayılan0.1) — Dikkat olasılıkları için dropout oranı. - feat_proj_dropout (
float, isteğe bağlı, varsayılan 0.0) — Özellik kodlayıcısının çıktısı için dropout olasılığı. - final_dropout (
float, isteğe bağlı, varsayılan 0.1) — WavLMForCTC'nin son projeksiyon katmanı için dropout olasılığı. - layerdrop (
Union[float, int], isteğe bağlı, varsayılan0.1) — LayerDrop olasılığı. Daha fazla ayrıntı için [LayerDrop makalesine](bkz. https://huggingface.co/papers/1909.11556) bakın. - initializer_range (
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ı. - layer_norm_eps (
float, isteğe bağlı, varsayılan1e-05) — Katman normalizasyon katmanları tarafından kullanılan epsilon. - feat_extract_norm (
str, isteğe bağlı, varsayılan"group") — Özellik kodlayıcıdaki 1B sarmal katmanlara uygulanacak norm. Sadece ilk 1B sarmal katman için grup normalizasyonu olan"group"veya tüm 1B sarmal katmanlar için katman normalizasyonu olan"layer"değerlerinden biri. - feat_extract_activation (
str,optional, defaults to“gelu”) -- The non-linear activation function (function or string) in the 1D convolutional layers of the feature extractor. If string,“gelu”,“relu”,“selu”and“gelu_new”` are supported. - conv_dim (
tuple[int]veyalist[int], isteğe bağlı, varsayılan(512, 512, 512, 512, 512, 512, 512)) — Özellik kodlayıcıdaki her 1D konvolüsyon katmanının giriş ve çıkış kanal sayısını tanımlayan tamsayılardan oluşan bir demet. conv_dim'in uzunluğu, 1D konvolüsyon katmanlarının sayısını belirler. - conv_stride (
tuple[int]veyalist[int], isteğe bağlı, varsayılan(5, 2, 2, 2, 2, 2, 2)) — Özellik kodlayıcıdaki her 1D konvolüsyon katmanının adımını (stride) tanımlayan tamsayı bir demet. conv_stride'nin uzunluğu, konvolüsyon katmanlarının sayısını belirler ve conv_dim'in uzunluğuyla eşleşmelidir. - conv_kernel (
tuple[int]veyalist[int], isteğe bağlı, varsayılan(10, 3, 3, 3, 3, 3, 3)) — Özellik kodlayıcıdaki her 1D konvolüsyon katmanının çekirdek boyutunu tanımlayan tamsayı bir demet. conv_kernel'in uzunluğu, konvolüsyon katmanlarının sayısını belirler ve conv_dim'in uzunluğuyla eşleşmelidir. - conv_bias (
bool, isteğe bağlı, varsayılanFalse) — 1D konvolüsyonel katmanların bir sapma (bias) içerip içermediğini belirtir. - num_conv_pos_embeddings (
int, isteğe bağlı, varsayılan 128) — Konvolüsyonel konumsal gömme sayısı. 1D konvolüsyonel konumsal gömme katmanının çekirdek boyutunu tanımlar. - num_conv_pos_embedding_groups (
int, isteğe bağlı, varsayılan 16) — 1D konvolüsyonel konumsal gömme katmanının grup sayısı. - num_buckets (
int, isteğe bağlı, varsayılan 320) — Her dikkat katmanı için kullanılacak kovadanın sayısı - max_bucket_distance (
int, isteğe bağlı, varsayılan 800) — Maksimum sepet mesafesi - do_stable_layer_norm (
bool, isteğe bağlı, varsayılanFalse) — Transformer kodlayıcısının stable layer norm mimarisinin uygulanıp uygulanmayacağı.do_stable_layer_norm is True, layer norm'un dikkat katmanından önce uygulanmasına karşılık gelirken,do_stable_layer_norm is Falselayer norm'un dikkat katmanından sonra uygulanmasına karşılık gelir. - apply_spec_augment (
bool, isteğe bağlı, varsayılanTrue) — Ö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 her özellik vektörünün, maskelenecek vektör aralığının başlangıcı olarak seçilme olasılığı. Yaklaşık olarakmask_time_prob * sequence_length // mask_time_lengthözellik vektörü zaman ekseni boyunca maskelenir. Bu, yalnızcaapply_spec_augment is Trueise 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 ekseninde her özellik vektörünün, maskelenecek vektör aralığının başlangıcı olarak seçilme olasılığı. Yaklaşık olarakmask_time_prob * hidden_size // mask_time_lengthözellik vektörü zaman ekseninde maskelenecektir. 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. - num_codevectors_per_group (
int, isteğe bağlı, varsayılan 320) — Her kuantizasyon kod kitabındaki (gruptaki) giriş sayısı. - num_codevector_groups (
int, isteğe bağlı, varsayılan 2) — Ürün kodvektör kuantizasyonu için kodvektör gruplarının sayısı. - contrastive_logits_temperature (
float, isteğe bağlı, varsayılan 0.1) — Karşıtlık kaybındaki kappa sıcaklığı. - num_negatives (
int, isteğe bağlı, varsayılan 100) — Karşıtlık kaybı için negatif örnek sayısı. - codevector_dim (
int, isteğe bağlı, varsayılan 256) — Kantize edilmiş özellik vektörlerinin boyutluluğu. - proj_codevector_dim (
int, isteğe bağlı, varsayılan 256) — Hem kuantize hem de transformer özelliklerinin son projeksiyonunun boyutu. - diversity_loss_weight (
int, isteğe bağlı, varsayılan 0.1) — Kod kitabı çeşitlilik kaybı bileşeninin ağırlığı. - ctc_loss_reduction (
str, isteğe bağlı, varsayılanmean) —torch.nn.CTCLossçıktısına uygulanacak indirgeme yöntemini belirtir. Yalnızca eğitim sırasında geçerlidir. - ctc_zero_infinity (
bool, isteğe bağlı, varsayılanFalse) —torch.nn.CTCLossiçin sonsuz kayıpları ve ilişkili gradyanları sıfırlayacak mı? Sonsuz kayıplar, girdilerin hedeflerle hizalanması için çok kısa olması durumunda ortaya çıkar. Yalnızca bir WavLMForCTC örneğinin eğitimiyle ilgilidir. - 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 WavLMForSequenceClassification bir ö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 boyutluğu. - tdnn_dim (
tuple[int]veyalist[int], isteğe bağlı, varsayılan(512, 512, 512, 512, 1500)) — XVector modelinin TDNN modülündeki her bir 1D konvolüsyon katmanının çıktı kanal sayısını tanımlayan tamsayılardan oluşan bir demet. tdnn_dim'in uzunluğu, TDNN katmanlarının sayısını belirler. - tdnn_kernel (
tuple[int]orlist[int], isteğe bağlı, varsayılan(5, 3, 3, 1, 1)) — XVector modelinin TDNN modülündeki her 1D konvolüsyon katmanının çekirdek boyutunu tanımlayan tamsayılar dizisi. tdnn_kernel'in uzunluğu, tdnn_dim'in uzunluğuyla eşleşmelidir. - tdnn_dilation (
tuple[int]veyalist[int], isteğe bağlı, varsayılan(1, 2, 3, 1, 1)) — XVector modelinin TDNN modülündeki her bir 1D konvolüsyon katmanının genişleme (dilation) çarpanını tanımlayan tamsayı bir demet. tdnn_dilation'ın uzunluğu, tdnn_dim'ın uzunluğuyla eşleşmelidir. - xvector_output_dim (
int, isteğe bağlı, varsayılan 512) — XVector gömme vektörlerinin boyutluluğu. - num_ctc_classes (
int, isteğe bağlı, varsayılan 80) — Fonem düzeyinde CTC kaybı için sınıf sayısını (fonem token'ları ve boş token) belirtir. Yalnızca UniSpeechForPreTraining örneği kullanıldığında geçerlidir. - pad_token_id (
int, isteğe bağlı, varsayılan0) — Sözlükte dolgu için kullanılan token kimliği. - bos_token_id (
int, isteğe bağlı, varsayılan1) — 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ılan2) — Sözlükte akış sonu için kullanılan token kimliği. - add_adapter (
bool, isteğe bağlı, varsayılanFalse) — Wav2Vec2 Encoder'ın üzerine bir konvolüsyonel ağ yığılmalı mı? SpeechEncoderDecoder modelleri için Wav2Vec2'yi ılık başlatmak (warm-start) için çok faydalı olabilir. - adapter_kernel_size (
int, isteğe bağlı, varsayılan 3) — Adapter ağındaki konvolüsyon katmanlarının çekirdek boyutu. Yalnızcaadd_adapter is Trueise geçerlidir. - adapter_stride (
int, isteğe bağlı, varsayılan 2) — Adapter ağındaki konvolüsyon katmanlarının stride değeri. Yalnızcaadd_adapter is Trueise geçerlidir. - num_adapter_layers (
int, isteğe bağlı, varsayılan 3) — Adapter ağında kullanılacak konvolüsyon katmanlarının sayısı. Yalnızcaadd_adapter is Trueise geçerlidir. - output_hidden_size (
int, isteğe bağlı) — Kodlayıcı çıktı katmanının boyutluluğu. Tanımlanmamışsa, bu varsayılan olarak hidden-size değerini alır. Yalnızcaadd_adapter is Trueise geçerlidir.
Bu, bir WavLMModel yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Wavlm modelini örneklemek ve model mimarisini tanımlamak için kullanılır. Varsayılan değerlerle bir yapılandırma örneklendiğinde, microsoft/wavlm-base ile 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 WavLMConfig, WavLMModel
>>> # Initializing a WavLM facebook/wavlm-base-960h style configuration
>>> configuration = WavLMConfig()
>>> # Initializing a model (with random weights) from the facebook/wavlm-base-960h style configuration
>>> model = WavLMModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configWavLMModel
sınıf transformers.WavLMModel
< source >( config: WavLMConfig )
Parametreler
- config (WavLMConfig) — 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 çıkaran çıplak Wavlm 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_values: typing.Optional[torch.Tensor]attention_mask: typing.Optional[torch.Tensor] = Nonemask_time_indices: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Wav2Vec2BaseModelOutput or tuple(torch.Tensor)
Parametreler
- input_values (
torch.Tensor, şekli(batch_size, sequence_length), isteğe bağlı) — Giriş ham ses dalgasının ondalık sayı değerleri. Değerler, bir.flacveya.wavses dosyasınılist[float]türünde bir diziye,numpy.ndarrayveyatorch.Tensoriçine yükleyerek elde edilebilir; örneğin örneğin torchcodec kütüphanesi (pip install torchcodec) veya soundfile kütüphanesi (pip install soundfile) üzerinden. Diziyiinput_valuesiçin hazırlamak için,torch.Tensortüründe bir tensöre dönüştürme ve dolgu (padding) işlemleri için AutoProcessor kullanılmalıdır. Ayrıntılar için Wav2Vec2Processor.call() bölümüne 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.
- mask_time_indices (
torch.BoolTensor, şekli(batch_size, sequence_length), isteğe bağlı) — Karşıtlı kayıp için çıkarılan özellikleri maskelemek üzere kullanılacak indeksler. Eğitim modundayken, model config.proj_codevector_dim uzayında maskelenmiş çıkarılan özellikleri tahmin etmeyi öğrenir.
Dönüş değeri
Wav2Vec2BaseModelOutput veya tuple(torch.Tensor)
Bir Wav2Vec2BaseModelOutput veya bir torch.Tensor demeti (return_dict=False geçirildiğinde veya config.return_dict=False olduğunda), yapılandırmaya (WavLMConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.
WavLMModel 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 son katmanının çıktısındaki gizli durumlar dizisi.extract_features (
torch.Tensor, şekli(batch_size, sequence_length, conv_dim[-1])) — Modelin son konvolüsyon katmanının çıkarılmış özellik vektörlerinin dizisi.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(gömme çıktısı için bir tane + her katman çıktısı için bir tane) içeren bir tuple, şekli(batch_size, sequence_length, hidden_size).Her katmanın çıktısında modelin gizli durumları ve 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.
WavLMForCTC
sınıf transformers.WavLMForCTC
< source >( config: WavLMConfigtarget_lang: str | None = None )
Parametreler
- config (WavLMConfig) — 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.
- target_lang (
str, isteğe bağlı) — Adapter ağırlıklarının dil kimliği. Adapter ağırlıkları adapter..safetensors veya adapter. .bin biçiminde saklanır. Sadece adapter'larla bir WavLMForCTC örneği kullanıldığında geçerlidir. Varsayılan olarak ‘eng’ kullanılır.
Üzerinde Bağlantıcı Zaman Sınıflandırması (CTC) için language modeling kafası bulunan WavLM Modeli.
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_values: typing.Optional[torch.Tensor]attention_mask: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → CausalLMOutput or tuple(torch.Tensor)
Parametreler
- input_values (
torch.Tensor, şekli(batch_size, sequence_length), isteğe bağlı) — Giriş ham ses dalgasının ondalık sayı değerleri. Değerler, bir.flacveya.wavses dosyasınılist[float]türünde bir diziye,numpy.ndarrayveyatorch.Tensoriçine yükleyerek elde edilebilir; örneğin örneğin torchcodec kütüphanesi (pip install torchcodec) veya soundfile kütüphanesi (pip install soundfile) üzerinden. Diziyiinput_valuesiçin hazırlamak için,torch.Tensortüründe bir tensöre dönüştürme ve dolgu (padding) işlemleri için AutoProcessor kullanılmalıdır. Ayrıntılar için Wav2Vec2Processor.call() bölümüne 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.
- labels (
torch.LongTensor, şekli(batch_size, target_length), isteğe bağlı) — Bağlantılı zaman sınıflandırması için etiketler. Not:target_length, çıktı logitlerinin dizi uzunluğundan küçük veya eşit olmalıdır. İndeksler[-100, 0, ..., config.vocab_size - 1]aralığından seçilir.-100olarak ayarlanan tüm etiketler yok sayılır (maske uygulanır); kayıp yalnızca[0, ..., config.vocab_size - 1]aralığındaki etiketler için hesaplanır.
Dönüş değeri
CausalLMOutput veya tuple(torch.Tensor)
Bir CausalLMOutput veya
torch.Tensor demeti (return_dict=False geçirildiğinde veya config.return_dict=False olduğunda), yapılandırmaya (WavLMConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.
WavLMForCTC 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.
Örnek:
>>> from transformers import AutoProcessor, WavLMForCTC
>>> from datasets import load_dataset
>>> import torch
>>> dataset = load_dataset("hf-internal-testing/librispeech_asr_demo", "clean", split="validation")
>>> dataset = dataset.sort("id")
>>> sampling_rate = dataset.features["audio"].sampling_rate
>>> processor = AutoProcessor.from_pretrained("microsoft/wavlm-base")
>>> model = WavLMForCTC.from_pretrained("microsoft/wavlm-base")
>>> # audio file is decoded on the fly
>>> inputs = processor(dataset[0]["audio"]["array"], sampling_rate=sampling_rate, return_tensors="pt")
>>> with torch.no_grad():
... logits = model(**inputs).logits
>>> predicted_ids = torch.argmax(logits, dim=-1)
>>> # transcribe speech
>>> transcription = processor.batch_decode(predicted_ids)
>>> transcription[0]
...
>>> inputs["labels"] = processor(text=dataset[0]["text"], return_tensors="pt").input_ids
>>> # compute loss
>>> loss = model(**inputs).loss
>>> round(loss.item(), 2)
...WavLMForSequenceClassification
sınıf transformers.WavLMForSequenceClassification
< source >( config: WavLMConfig )
Parametreler
- config (WavLMConfig) — 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ığı (toplanmış çıktı üzerinde doğrusal bir katman) bulunan, SUPERB Keyword Spotting gibi görevler için kullanılan WavLM Modeli.
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_values: typing.Optional[torch.Tensor]attention_mask: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → SequenceClassifierOutput or tuple(torch.Tensor)
Parametreler
- input_values (
torch.Tensor, şekli(batch_size, sequence_length)) — Giriş ham ses dalgasının ondalık sayı değerleri. Değerler, bir.flacveya.wavses dosyasınılist[float]türünde 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_valuesiçin hazırlamak için, dolgu vetorch.Tensortüründe bir tensöre dönüştürme işlemleri için AutoProcessor kullanılmalıdır. Ayrıntılar içinWavLMProcessor.__call__bölümüne 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.
- 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 (WavLMConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.
WavLMForSequenceClassification 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.
Tek etiketli sınıflandırma örneği:
>>> import torch
>>> from transformers import AutoTokenizer, WavLMForSequenceClassification
>>> tokenizer = AutoTokenizer.from_pretrained("microsoft/wavlm-base")
>>> model = WavLMForSequenceClassification.from_pretrained("microsoft/wavlm-base")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> with torch.no_grad():
... logits = model(**inputs).logits
>>> predicted_class_id = logits.argmax().item()
>>> model.config.id2label[predicted_class_id]
...
>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = WavLMForSequenceClassification.from_pretrained("microsoft/wavlm-base", num_labels=num_labels)
>>> labels = torch.tensor([1])
>>> loss = model(**inputs, labels=labels).loss
>>> round(loss.item(), 2)
...Çok etiketli sınıflandırma örneği:
>>> import torch
>>> from transformers import AutoTokenizer, WavLMForSequenceClassification
>>> tokenizer = AutoTokenizer.from_pretrained("microsoft/wavlm-base")
>>> model = WavLMForSequenceClassification.from_pretrained("microsoft/wavlm-base", problem_type="multi_label_classification")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> with torch.no_grad():
... logits = model(**inputs).logits
>>> predicted_class_ids = torch.arange(0, logits.shape[-1])[torch.sigmoid(logits).squeeze(dim=0) > 0.5]
>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = WavLMForSequenceClassification.from_pretrained(
... "microsoft/wavlm-base", num_labels=num_labels, problem_type="multi_label_classification"
... )
>>> labels = torch.sum(
... torch.nn.functional.one_hot(predicted_class_ids[None, :].clone(), num_classes=num_labels), dim=1
... ).to(torch.float)
>>> loss = model(**inputs, labels=labels).lossWavLMForAudioFrameClassification
sınıf transformers.WavLMForAudioFrameClassification
< source >( config: WavLMConfig )
Parametreler
- config (WavLMConfig) — 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.
Konuşmacı Ayırt Etme gibi görevler için üstünde bir çerçeve sınıflandırma başlığı bulunan Wavlm Modeli.
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_values: typing.Optional[torch.Tensor]attention_mask: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → TokenClassifierOutput or tuple(torch.Tensor)
Parametreler
- input_values (
torch.Tensor, şekli(batch_size, sequence_length)) — Giriş ham ses dalgasının ondalık sayı değerleri. Değerler, bir.flacveya.wavses dosyasınılist[float]türünde 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_valuesiçin hazırlamak için, dolgu vetorch.Tensortüründe bir tensöre dönüştürme işlemleri için AutoProcessor kullanılmalıdır. Ayrıntılar içinWavLMProcessor.__call__bölümüne 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.
- 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
TokenClassifierOutput veya tuple(torch.Tensor)
Bir TokenClassifierOutput veya
torch.Tensor demeti (eğer return_dict=False geçirildiyse veya config.return_dict=False ise), yapılandırma (WavLMConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.
WavLMForAudioFrameClassification 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 kaybı.logits (
torch.Tensor, şekli(batch_size, sequence_length, config.num_labels)) — Sınıflandırma 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:
>>> from transformers import AutoFeatureExtractor, WavLMForAudioFrameClassification
>>> from datasets import load_dataset
>>> import torch
>>> dataset = load_dataset("hf-internal-testing/librispeech_asr_demo", "clean", split="validation")
>>> dataset = dataset.sort("id")
>>> sampling_rate = dataset.features["audio"].sampling_rate
>>> feature_extractor = AutoFeatureExtractor.from_pretrained("microsoft/wavlm-base")
>>> model = WavLMForAudioFrameClassification.from_pretrained("microsoft/wavlm-base")
>>> # audio file is decoded on the fly
>>> inputs = feature_extractor(dataset[0]["audio"]["array"], return_tensors="pt", sampling_rate=sampling_rate)
>>> with torch.no_grad():
... logits = model(**inputs).logits
>>> probabilities = torch.sigmoid(logits[0])
>>> # labels is a one-hot array of shape (num_frames, num_speakers)
>>> labels = (probabilities > 0.5).long()
>>> labels[0].tolist()
...WavLMForXVector
sınıf transformers.WavLMForXVector
< source >( config: WavLMConfig )
Parametreler
- config (WavLMConfig) — 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.
Konuşmacı Doğrulama gibi görevler için üstünde XVector özellik çıkarma kafası bulunan WavLM Modeli.
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_values: typing.Optional[torch.Tensor]attention_mask: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → XVectorOutput or tuple(torch.Tensor)
Parametreler
- input_values (
torch.Tensor, şekli(batch_size, sequence_length)) — Giriş ham ses dalgasının ondalık sayı değerleri. Değerler, bir.flacveya.wavses dosyasınılist[float]türünde 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_valuesiçin hazırlamak için, dolgu vetorch.Tensortüründe bir tensöre dönüştürme işlemleri için AutoProcessor kullanılmalıdır. Ayrıntılar içinWavLMProcessor.__call__bölümüne 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.
- 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
XVectorOutput veya tuple(torch.Tensor)
XVectorOutput veya bir torch.Tensor demeti (return_dict=False geçirildiğinde veya config.return_dict=False olduğunda), yapılandırmaya (WavLMConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.
WavLMForXVector 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 kaybı.logits (
torch.Tensor, şekli(batch_size, config.xvector_output_dim)) — AMSoftmax öncesi sınıflandırma gizli durumları.embeddings (
torch.Tensor, şekli(batch_size, config.xvector_output_dim)) — Vektör benzerliğine dayalı geri getirme için kullanılan cümle gömme değerleri.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(gömme çıktısı için bir tane + her katman çıktısı için bir tane) içeren bir tuple, şekli(batch_size, sequence_length, hidden_size).Her katmanın çıktısında modelin gizli durumları ve 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:
>>> from transformers import AutoFeatureExtractor, WavLMForXVector
>>> from datasets import load_dataset
>>> import torch
>>> dataset = load_dataset("hf-internal-testing/librispeech_asr_demo", "clean", split="validation")
>>> dataset = dataset.sort("id")
>>> sampling_rate = dataset.features["audio"].sampling_rate
>>> feature_extractor = AutoFeatureExtractor.from_pretrained("microsoft/wavlm-base")
>>> model = WavLMForXVector.from_pretrained("microsoft/wavlm-base")
>>> # audio file is decoded on the fly
>>> inputs = feature_extractor(
... [d["array"] for d in dataset[:2]["audio"]], sampling_rate=sampling_rate, return_tensors="pt", padding=True
... )
>>> with torch.no_grad():
... embeddings = model(**inputs).embeddings
>>> embeddings = torch.nn.functional.normalize(embeddings, dim=-1).cpu()
>>> # the resulting embeddings can be used for cosine similarity-based retrieval
>>> cosine_sim = torch.nn.CosineSimilarity(dim=-1)
>>> similarity = cosine_sim(embeddings[0], embeddings[1])
>>> threshold = 0.7 # the optimal threshold is dataset-dependent
>>> if similarity < threshold:
... print("Speakers are not the same!")
>>> round(similarity.item(), 2)
...