Transformers documentation
WavLM
Model ini dipublikasikan di HF papers pada 2021-10-26 dan disumbangkan ke Hugging Face Transformers pada 2021-12-16.
WavLM
Ikhtisar
Model WavLM diusulkan dalam WavLM: Large-Scale Self-Supervised Pre-Training for Full Stack Speech Processing oleh 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, Furu Wei.
Abstrak dari makalah tersebut adalah sebagai berikut:
Pembelajaran tanpa pengawasan (SSL) telah mencapai kesuksesan besar dalam pengenalan ucapan, sementara eksplorasi untuk tugas pemrosesan ucapan lainnya masih terbatas. Karena sinyal ucapan mengandung informasi multi-aspek, termasuk identitas pembicara, paralinguistik, konten ucapan, dan lain-lain, mempelajari representasi universal untuk semua tugas ucapan merupakan tantangan. Dalam makalah ini, kami mengusulkan model pra-terlatih baru, WavLM, untuk menyelesaikan tugas-tugas ucapan turunan secara menyeluruh. WavLM dibangun berdasarkan kerangka HuBERT, dengan penekanan pada pemodelan konten ucapan dan pelestarian identitas pembicara. Pertama, kami melengkapi struktur Transformer dengan bias posisi relatif bergerbang untuk meningkatkan kemampuannya pada tugas pengenalan. Untuk diskriminasi pembicara yang lebih baik, kami mengusulkan strategi pelatihan pencampuran ucapan, di mana ucapan tumpang tindih tambahan dibuat secara tanpa pengawasan dan dimasukkan selama pelatihan model. Terakhir, kami memperbesar dataset pelatihan dari 60 ribu jam menjadi 94 ribu jam. WavLM Large mencapai kinerja state-of-the-art pada benchmark SUPERB, dan membawa peningkatan signifikan untuk berbagai tugas pemrosesan ucapan pada benchmark representatif mereka.
Checkpoint yang relevan dapat ditemukan di https://huggingface.co/models?other=wavlm.
Model ini disumbangkan oleh patrickvonplaten. Kode para penulis dapat ditemukan di sini.
Tips penggunaan
- WavLM adalah model ucapan yang menerima array float yang sesuai dengan gelombang mentah dari sinyal ucapan. Silakan gunakan Wav2Vec2Processor untuk ekstraksi fitur.
- Model WavLM dapat di-fine-tune menggunakan connectionist temporal classification (CTC), sehingga output model harus didekode menggunakan Wav2Vec2CTCTokenizer.
- WavLM menunjukkan kinerja yang sangat baik pada tugas verifikasi pembicara, identifikasi pembicara, dan diaritasi pembicara.
Sumber daya
WavLMConfig
kelas 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 )
Parameter
- vocab_size (
int, opsional, default32) — Ukuran kosakata model. Menentukan jumlah token berbeda yang dapat direpresentasikan olehinput_ids. - hidden_size (
int, opsional, default768) — Dimensi dari representasi tersembunyi. - num_hidden_layers (
int, opsional, default12) — Jumlah lapisan tersembunyi dalam decoder Transformer. - num_attention_heads (
int, opsional, default12) — Jumlah attention head untuk setiap lapisan attention di decoder Transformer. - intermediate_size (
int, opsional, default3072) — Dimensi representasi MLP. - hidden_act (
str, opsional, defaultnyagelu) — Fungsi aktivasi non-linear (fungsi atau string) di decoder. Misalnya,"gelu","relu","silu", dan sebagainya. - hidden_dropout (
Union[float, int], opsional, default0.1) — Probabilitas dropout untuk semua lapisan fully connected di embeddings, encoder, dan pooler. - activation_dropout (
Union[float, int], opsional, defaultnya0.1) — Rasio dropout untuk aktivasi di dalam lapisan fully connected. - attention_dropout (
Union[float, int], opsional, default0.1) — Rasio dropout untuk probabilitas perhatian. - feat_proj_dropout (
float, opsional, default 0.0) — Probabilitas dropout untuk output dari encoder fitur. - final_dropout (
float, opsional, default 0.1) — Probabilitas dropout untuk lapisan proyeksi akhir dari WavLMForCTC. - layerdrop (
Union[float, int], opsional, default0.1) — Probabilitas LayerDrop. Lihat [makalah LayerDrop](lihat https://huggingface.co/papers/1909.11556) untuk detail lebih lanjut. - initializer_range (
float, opsional, defaultnya0.02) — Standar deviasi dari truncated_normal_initializer untuk menginisialisasi semua matriks bobot. - layer_norm_eps (
float, opsional, defaultnya1e-05) — Epsilon yang digunakan oleh lapisan normalisasi lapisan. - feat_extract_norm (
str, opsional, default"group") — Norm yang diterapkan pada lapisan konvolusional 1D di feature encoder. Salah satu dari"group"untuk group normalization hanya pada lapisan konvolusional 1D pertama atau"layer"untuk layer normalization pada semua lapisan konvolusional 1D. - 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]ataulist[int], opsional, default(512, 512, 512, 512, 512, 512, 512)) — Tuple dari bilangan bulat yang mendefinisikan jumlah saluran input dan output dari setiap lapisan konvolusional 1D dalam feature encoder. Panjang dari conv_dim mendefinisikan jumlah lapisan konvolusional 1D. - conv_stride (
tuple[int]ataulist[int], opsional, default(5, 2, 2, 2, 2, 2, 2)) — Tuple dari bilangan bulat yang mendefinisikan stride dari setiap lapisan konvolusi 1D dalam feature encoder. Panjang dari conv_stride menentukan jumlah lapisan konvolusi dan harus sesuai dengan panjang dari conv_dim. - conv_kernel (
tuple[int]ataulist[int], opsional, default(10, 3, 3, 3, 3, 3, 3)) — Tuple berisi bilangan bulat yang mendefinisikan ukuran kernel dari setiap lapisan konvolusi 1D dalam feature encoder. Panjang conv_kernel menentukan jumlah lapisan konvolusi dan harus sama dengan panjang conv_dim. - conv_bias (
bool, opsional, defaultnyaFalse) — Apakah lapisan konvolusional 1D memiliki bias. - num_conv_pos_embeddings (
int, opsional, default 128) — Jumlah embedding posisi konvolusional. Menentukan ukuran kernel dari lapisan embedding posisi konvolusional 1D. - num_conv_pos_embedding_groups (
int, opsional, default 16) — Jumlah grup dari lapisan embedding posisional konvolusional 1D. - num_buckets (
int, opsional, default 320) — Jumlah bucket yang digunakan untuk setiap lapisan attention - max_bucket_distance (
int, opsional, default 800) — Jarak bucket maksimum - do_stable_layer_norm (
bool, opsional, defaultFalse) — Apakah akan menerapkan arsitektur layer norm stabil pada encoder Transformer.do_stable_layer_norm is Trueberarti menerapkan layer norm sebelum lapisan attention, sedangkando_stable_layer_norm is Falseberarti menerapkan layer norm setelah lapisan attention. - apply_spec_augment (
bool, opsional, defaultTrue) — Apakah akan menerapkan augmentasi data SpecAugment pada output dari feature encoder. Untuk referensi, lihat SpecAugment: A Simple Data Augmentation Method for Automatic Speech Recognition. - mask_time_prob (
float, opsional, default 0.05) — Probabilitas setiap vektor fitur sepanjang sumbu waktu untuk dipilih sebagai awal rentang vektor yang akan dimasking. Sekitarmask_time_prob * sequence_length // mask_time_lengthvektor fitur akan dimasking sepanjang sumbu waktu. Hal ini hanya relevan jikaapply_spec_augment is True. - mask_time_length (
int, opsional, default 10) — Panjang rentang vektor sepanjang sumbu waktu. - mask_time_min_masks (
int, opsional, default 2), — Jumlah minimum masker dengan panjangmask_feature_lengthyang dihasilkan di sepanjang sumbu waktu, untuk setiap langkah waktu, tanpa memperhatikanmask_feature_prob. Hanya relevan jika ”mask_time_prob*len(time_axis)/mask_time_length < mask_time_min_masks” - mask_feature_prob (
float, opsional, default 0.0) — Probabilitas setiap vektor fitur di sepanjang sumbu fitur untuk dipilih sebagai awal rentang vektor yang akan dimasking. Sekitarmask_time_prob * hidden_size // mask_time_lengthvektor fitur akan dimasking di sepanjang sumbu waktu. Hal ini hanya relevan jikaapply_spec_augment is True. - mask_feature_prob (
Union[float, int], opsional, default0.0) — Persentase (antara 0 dan 1) dari semua vektor fitur di sepanjang sumbu fitur yang akan di-mask. Prosedur masking menghasilkanmask_feature_prob*len(feature_axis)/mask_time_lengthmask independen di sepanjang sumbu tersebut. Jika beralasan dari probabilitas setiap vektor fitur untuk dipilih sebagai awal dari rentang vektor yang akan di-mask, mask_feature_prob seharusnyaprob_vector_start*mask_feature_length. Perhatikan bahwa tumpang tindih dapat mengurangi persentase vektor yang di-mask secara aktual. Hal ini hanya relevan jikaapply_spec_augmentadalahTrue. - mask_feature_length (
int, opsional, default 10) — Panjang rentang vektor di sepanjang sumbu fitur. - num_codevectors_per_group (
int, opsional, default 320) — Jumlah entri dalam setiap codebook kuantisasi (grup). - num_codevector_groups (
int, opsional, default 2) — Jumlah grup codevector untuk kuantisasi product codevector. - contrastive_logits_temperature (
float, opsional, default 0.1) — Suhu kappa dalam kerugian kontras. - num_negatives (
int, opsional, default 100) — Jumlah sampel negatif untuk kerugian kontras (contrastive loss). - codevector_dim (
int, opsional, default 256) — Dimensi dari vektor fitur terkuantisasi. - proj_codevector_dim (
int, opsional, default 256) — Dimensi dari proyeksi akhir untuk fitur kuantisasi maupun fitur transformer. - diversity_loss_weight (
int, opsional, default 0.1) — Bobot komponen loss keragaman codebook. - ctc_loss_reduction (
str, opsional, defaultmean) — Menentukan reduksi yang diterapkan pada outputtorch.nn.CTCLoss. Hanya relevan saat pelatihan. - ctc_zero_infinity (
bool, opsional, defaultFalse) — Apakah akan menolkan (zero) kerugian tak hingga dan gradien terkait daritorch.nn.CTCLoss. Kerugian tak hingga terutama terjadi ketika input terlalu pendek untuk diselaraskan dengan target. Hanya relevan saat melatih instance dari WavLMForCTC. - use_weighted_layer_sum (
bool, opsional, defaultFalse) — Apakah akan menggunakan rata-rata tertimbang dari output lapisan dengan bobot yang dipelajari. Hanya relevan saat menggunakan instance dari WavLMForSequenceClassification. - classifier_proj_size (
int, opsional, default 256) — Dimensi proyeksi sebelum token mean-pooling untuk klasifikasi. - tdnn_dim (
tuple[int]ataulist[int], opsional, defaultnya(512, 512, 512, 512, 1500)) — Tuple dari bilangan bulat yang mendefinisikan jumlah saluran output dari setiap lapisan konvolusional 1D dalam modul TDNN dari model XVector. Panjang dari tdnn_dim mendefinisikan jumlah lapisan TDNN. - tdnn_kernel (
tuple[int]ataulist[int], opsional, defaultnya(5, 3, 3, 1, 1)) — Tuple dari bilangan bulat yang mendefinisikan ukuran kernel dari setiap lapisan konvolusional 1D dalam modul TDNN dari model XVector. Panjang dari tdnn_kernel harus sesuai dengan panjang dari tdnn_dim. - tdnn_dilation (
tuple[int]ataulist[int], opsional, defaultnya(1, 2, 3, 1, 1)) — Tuple dari bilangan bulat yang mendefinisikan faktor dilatasi dari setiap lapisan konvolusional 1D dalam modul TDNN dari model XVector. Panjang tdnn_dilation harus sesuai dengan panjang tdnn_dim. - xvector_output_dim (
int, opsional, default 512) — Dimensi dari vektor embedding XVector. - num_ctc_classes (
int, opsional, default 80) — Menentukan jumlah kelas (token fonem dan token blank) untuk loss CTC pada tingkat fonem. Hanya relevan ketika menggunakan instance dari UniSpeechForPreTraining. - pad_token_id (
int, opsional, default0) — ID token yang digunakan untuk padding dalam kosakata. - bos_token_id (
int, opsional, default1) — ID token yang digunakan untuk awal aliran (beginning-of-stream) dalam kosakata. - eos_token_id (
Union[int, list[int]], opsional, default2) — ID token yang digunakan untuk end-of-stream dalam kosakata. - add_adapter (
bool, opsional, defaultFalse) — Apakah jaringan konvolusional harus ditumpuk di atas Wav2Vec2 Encoder. Hal ini dapat sangat berguna untuk warm-starting Wav2Vec2 untuk model SpeechEncoderDecoder. - adapter_kernel_size (
int, opsional, default 3) — Ukuran kernel dari lapisan konvolusional dalam jaringan adapter. Hanya relevan jikaadd_adapter is True. - adapter_stride (
int, opsional, default 2) — Stride dari lapisan konvolusional dalam jaringan adapter. Hanya relevan jikaadd_adapter is True. - num_adapter_layers (
int, opsional, default 3) — Jumlah lapisan konvolusional yang harus digunakan dalam jaringan adapter. Hanya relevan jikaadd_adapter is True. - output_hidden_size (
int, opsional) — Dimensi dari lapisan output encoder. Jika tidak didefinisikan, nilai defaultnya adalah hidden-size. Hanya relevan jikaadd_adapter is True.
Ini adalah kelas konfigurasi untuk menyimpan konfigurasi dari WavLMModel. Kelas ini digunakan untuk membuat instans model Wavlm berdasarkan argumen yang ditentukan, sehingga mendefinisikan arsitektur model. Membuat instans konfigurasi dengan nilai bawaan akan menghasilkan konfigurasi yang serupa dengan konfigurasi dari microsoft/wavlm-base
Objek konfigurasi mewarisi dari PreTrainedConfig dan dapat digunakan untuk mengontrol output model. Baca dokumentasi dari PreTrainedConfig untuk informasi lebih lanjut.
Contoh:
>>> 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
kelas transformers.WavLMModel
< source >( config: WavLMConfig )
Parameter
- config (WavLMConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
Model Wavlm polos yang menghasilkan hidden-states mentah tanpa head spesifik di atasnya.
Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)
Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.
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)
Parameter
- input_values (
torch.Tensordengan bentuk(batch_size, sequence_length), opsional) — Nilai float dari waveform ucapan mentah input. Nilai dapat diperoleh dengan memuat file audio.flacatau.wavke dalam array bertipelist[float],numpy.ndarrayatautorch.Tensor, misalnya melalui pustaka torchcodec (pip install torchcodec) atau pustaka soundfile (pip install soundfile). Untuk menyiapkan array menjadiinput_values, gunakan AutoProcessor untuk padding dan konversi menjadi tensor bertipetorch.Tensor. Lihat Wav2Vec2Processor.call() untuk detailnya. - attention_mask (
torch.Tensordengan bentuk(batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding. Nilai mask dipilih dari[0, 1]:- 1 untuk token yang tidak dimasker,
- 0 untuk token yang dimasker.
- mask_time_indices (
torch.BoolTensordengan bentuk(batch_size, sequence_length), opsional) — Indeks untuk mem-mask fitur yang diekstrak untuk contrastive loss. Saat dalam mode pelatihan, model belajar memprediksi fitur yang diekstrak dan di-mask dalam ruang config.proj_codevector_dim.
Mengembalikan
Wav2Vec2BaseModelOutput atau tuple(torch.Tensor)
Sebuah Wav2Vec2BaseModelOutput atau tuple dari
torch.Tensor (jika return_dict=False diteruskan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (WavLMConfig) dan input.
Metode forward dari WavLMModel menimpa metode khusus __call__.
Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance
Modulesetelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.
last_hidden_state (
torch.Tensordengan bentuk(batch_size, sequence_length, hidden_size)) — Urutan hidden-states pada keluaran lapisan terakhir model.extract_features (
torch.Tensordengan bentuk(batch_size, sequence_length, conv_dim[-1])) — Urutan vektor fitur yang diekstrak dari lapisan konvolusional terakhir model.hidden_states (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.Tensor(satu untuk output embeddings + satu untuk output setiap layer) dengan bentuk(batch_size, sequence_length, hidden_size).Hidden-states model pada output setiap layer ditambah output embedding awal.
attentions (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.Tensor(satu untuk setiap layer) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length).Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala perhatian diri (self-attention).
WavLMForCTC
kelas transformers.WavLMForCTC
< source >( config: WavLMConfigtarget_lang: str | None = None )
Parameter
- config (WavLMConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
- target_lang (
str, opsional) — ID bahasa dari bobot adapter. Bobot adapter disimpan dalam format adapter..safetensors atau adapter. .bin. Hanya relevan saat menggunakan instance WavLMForCTC dengan adapter. Menggunakan ‘eng’ secara default.
Model WavLM dengan kepala language modeling di atasnya untuk Connectionist Temporal Classification (CTC).
Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)
Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.
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)
Parameter
- input_values (
torch.Tensordengan bentuk(batch_size, sequence_length), opsional) — Nilai float dari waveform ucapan mentah input. Nilai dapat diperoleh dengan memuat file audio.flacatau.wavke dalam array bertipelist[float],numpy.ndarrayatautorch.Tensor, misalnya melalui pustaka torchcodec (pip install torchcodec) atau pustaka soundfile (pip install soundfile). Untuk menyiapkan array menjadiinput_values, gunakan AutoProcessor untuk padding dan konversi menjadi tensor bertipetorch.Tensor. Lihat Wav2Vec2Processor.call() untuk detailnya. - attention_mask (
torch.Tensordengan bentuk(batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding. Nilai mask dipilih dari[0, 1]:- 1 untuk token yang tidak dimasker,
- 0 untuk token yang dimasker.
- labels (
torch.LongTensordengan bentuk(batch_size, target_length), opsional) — Label untuk connectionist temporal classification. Perhatikan bahwatarget_lengthharus lebih kecil atau sama dengan panjang sekuens dari output logits. Indeks dipilih dalam[-100, 0, ..., config.vocab_size - 1]. Semua label yang disetel ke-100diabaikan (diberi mask), loss hanya dihitung untuk label dalam[0, ..., config.vocab_size - 1].
Mengembalikan
CausalLMOutput atau tuple(torch.Tensor)
A CausalLMOutput atau tuple dari
torch.Tensor (jika return_dict=False dilewatkan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (WavLMConfig) dan input.
Metode forward dari WavLMForCTC menimpa metode khusus __call__.
Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance
Modulesetelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.
loss (
torch.Tensordengan bentuk(1,), opsional, dikembalikan saatlabelsdisediakan) — Loss pemodelan bahasa (untuk prediksi token berikutnya).logits (
torch.Tensordengan bentuk(batch_size, sequence_length, config.vocab_size)) — Skor prediksi dari kepala pemodelan bahasa (skor untuk setiap token kosakata sebelum SoftMax).hidden_states (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.Tensor(satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk(batch_size, sequence_length, hidden_size).Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.
attentions (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.Tensor(satu untuk setiap layer) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length).Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala perhatian diri (self-attention).
Contoh:
>>> 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
kelas transformers.WavLMForSequenceClassification
< source >( config: WavLMConfig )
Parameter
- config (WavLMConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
Model WavLM dengan kepala klasifikasi urutan di atasnya (lapisan linear di atas output yang dipool) untuk tugas seperti SUPERB Keyword Spotting.
Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)
Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.
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)
Parameter
- input_values (
torch.Tensordengan bentuk(batch_size, sequence_length)) — Nilai float dari waveform ucapan mentah input. Nilai dapat diperoleh dengan memuat file audio.flacatau.wavke dalam array bertipelist[float],numpy.ndarrayatautorch.Tensor, misalnya melalui pustaka torchcodec (pip install torchcodec) atau pustaka soundfile (pip install soundfile). Untuk menyiapkan array menjadiinput_values, gunakan AutoProcessor untuk padding dan konversi menjadi tensor bertipetorch.Tensor. LihatWavLMProcessor.__call__untuk detailnya. - attention_mask (
torch.Tensordengan bentuk(batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding. Nilai mask dipilih dari[0, 1]:- 1 untuk token yang tidak dimasker,
- 0 untuk token yang dimasker.
- labels (
torch.LongTensordengan bentuk(batch_size,), opsional) — Label untuk menghitung loss klasifikasi/regresi urutan. Indeks harus berada dalam[0, ..., config.num_labels - 1]. Jikaconfig.num_labels == 1, loss regresi dihitung (Mean-Square loss). Jikaconfig.num_labels > 1, loss klasifikasi dihitung (Cross-Entropy).
Mengembalikan
SequenceClassifierOutput atau tuple(torch.Tensor)
SequenceClassifierOutput atau tuple dari
torch.Tensor (jika return_dict=False diteruskan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (WavLMConfig) dan input.
Metode forward dari WavLMForSequenceClassification menimpa metode khusus __call__.
Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance
Modulesetelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.
loss (
torch.Tensordengan bentuk(1,), opsional, dikembalikan saatlabelsdisediakan) — Loss klasifikasi (atau regresi jika config.num_labels==1).logits (
torch.Tensordengan bentuk(batch_size, config.num_labels)) — Skor klasifikasi (atau regresi jika config.num_labels==1) (sebelum SoftMax).hidden_states (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.Tensor(satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk(batch_size, sequence_length, hidden_size).Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.
attentions (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.Tensor(satu untuk setiap layer) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length).Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala perhatian diri (self-attention).
Contoh klasifikasi label tunggal:
>>> 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)
...Contoh klasifikasi multi-label:
>>> 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
kelas transformers.WavLMForAudioFrameClassification
< source >( config: WavLMConfig )
Parameter
- config (WavLMConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
Model Wavlm dengan kepala klasifikasi frame di atasnya untuk tugas seperti Speaker Diarization.
Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)
Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.
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)
Parameter
- input_values (
torch.Tensordengan bentuk(batch_size, sequence_length)) — Nilai float dari waveform ucapan mentah input. Nilai dapat diperoleh dengan memuat file audio.flacatau.wavke dalam array bertipelist[float],numpy.ndarrayatautorch.Tensor, misalnya melalui pustaka torchcodec (pip install torchcodec) atau pustaka soundfile (pip install soundfile). Untuk menyiapkan array menjadiinput_values, gunakan AutoProcessor untuk padding dan konversi menjadi tensor bertipetorch.Tensor. LihatWavLMProcessor.__call__untuk detailnya. - attention_mask (
torch.Tensordengan bentuk(batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding. Nilai mask dipilih dari[0, 1]:- 1 untuk token yang tidak dimasker,
- 0 untuk token yang dimasker.
- labels (
torch.LongTensordengan bentuk(batch_size,), opsional) — Label untuk menghitung loss klasifikasi/regresi urutan. Indeks harus berada dalam[0, ..., config.num_labels - 1]. Jikaconfig.num_labels == 1, loss regresi dihitung (Mean-Square loss). Jikaconfig.num_labels > 1, loss klasifikasi dihitung (Cross-Entropy).
Mengembalikan
TokenClassifierOutput atau tuple(torch.Tensor)
TokenClassifierOutput atau tuple dari
torch.Tensor (jika return_dict=False diteruskan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (WavLMConfig) dan input.
Metode forward dari WavLMForAudioFrameClassification menimpa metode khusus __call__.
Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance
Modulesetelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.
loss (
torch.Tensordengan bentuk(1,), opsional, dikembalikan saatlabelsdisediakan) — Loss klasifikasi.logits (
torch.Tensordengan bentuk(batch_size, sequence_length, config.num_labels)) — Skor klasifikasi (sebelum SoftMax).hidden_states (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.Tensor(satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk(batch_size, sequence_length, hidden_size).Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.
attentions (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.Tensor(satu untuk setiap layer) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length).Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala perhatian diri (self-attention).
Contoh:
>>> 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
kelas transformers.WavLMForXVector
< source >( config: WavLMConfig )
Parameter
- config (WavLMConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
Model WavLM dengan kepala ekstraksi fitur XVector di atasnya untuk tugas seperti Verifikasi Pembicara.
Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)
Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.
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)
Parameter
- input_values (
torch.Tensordengan bentuk(batch_size, sequence_length)) — Nilai float dari waveform ucapan mentah input. Nilai dapat diperoleh dengan memuat file audio.flacatau.wavke dalam array bertipelist[float],numpy.ndarrayatautorch.Tensor, misalnya melalui pustaka torchcodec (pip install torchcodec) atau pustaka soundfile (pip install soundfile). Untuk menyiapkan array menjadiinput_values, gunakan AutoProcessor untuk padding dan konversi menjadi tensor bertipetorch.Tensor. LihatWavLMProcessor.__call__untuk detailnya. - attention_mask (
torch.Tensordengan bentuk(batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding. Nilai mask dipilih dari[0, 1]:- 1 untuk token yang tidak dimasker,
- 0 untuk token yang dimasker.
- labels (
torch.LongTensordengan bentuk(batch_size,), opsional) — Label untuk menghitung loss klasifikasi/regresi urutan. Indeks harus berada dalam[0, ..., config.num_labels - 1]. Jikaconfig.num_labels == 1, loss regresi dihitung (Mean-Square loss). Jikaconfig.num_labels > 1, loss klasifikasi dihitung (Cross-Entropy).
Mengembalikan
XVectorOutput atau tuple(torch.Tensor)
Sebuah XVectorOutput atau tuple dari
torch.Tensor (jika return_dict=False diteruskan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (WavLMConfig) dan input.
Metode forward dari WavLMForXVector menimpa metode khusus __call__.
Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance
Modulesetelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.
loss (
torch.Tensordengan bentuk(1,), opsional, dikembalikan saatlabelsdisediakan) — Loss klasifikasi.logits (
torch.Tensordengan bentuk(batch_size, config.xvector_output_dim)) — Hidden state klasifikasi sebelum AMSoftmax.embeddings (
torch.Tensordengan bentuk(batch_size, config.xvector_output_dim)) — Embedding ucapan yang digunakan untuk pengambilan berbasis kemiripan vektor.hidden_states (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.Tensor(satu untuk output embeddings + satu untuk output setiap layer) dengan bentuk(batch_size, sequence_length, hidden_size).Hidden-states model pada output setiap layer ditambah output embedding awal.
attentions (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.Tensor(satu untuk setiap layer) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length).Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala perhatian diri (self-attention).
Contoh:
>>> 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)
...