Transformers documentation

UnivNet

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.2).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Model ini dipublikasikan di HF papers pada 2021-06-15 dan disumbangkan ke Hugging Face Transformers pada 2023-11-22.

UnivNet

Ikhtisar

Model UnivNet diusulkan dalam UnivNet: A Neural Vocoder with Multi-Resolution Spectrogram Discriminators for High-Fidelity Waveform Generation oleh Won Jang, Dan Lim, Jaesam Yoon, Bongwan Kin, dan Juntae Kim. Model UnivNet adalah generative adversarial network (GAN) yang dilatih untuk mensintesis waveform ucapan berkefideltasan tinggi. Model UnivNet yang dibagikan di transformers adalah generator, yang memetakan log-mel spectrogram kondisional dan sekuens noise opsional menjadi waveform ucapan (misalnya, sebuah vocoder). Hanya generator yang diperlukan untuk inferensi. discriminator yang digunakan untuk melatih generator tidak diimplementasikan.

Abstrak dari makalah tersebut adalah sebagai berikut:

Sebagian besar voder neural menggunakan mel-spectrogram berbatas pita untuk menghasilkan waveform. Jika fitur spektral pita penuh digunakan sebagai input, voder dapat diberikan informasi akustik sebanyak mungkin. Namun, pada beberapa model yang menggunakan mel-spectrogram pita penuh, terjadi masalah over-smoothing, di mana dihasilkan spectrogram yang tidak tajam. Untuk mengatasi masalah ini, kami mengusulkan UnivNet, sebuah voder neural yang mensintesis waveform berkeandalan tinggi secara real time. Terinspirasi oleh karya-karya di bidang deteksi aktivitas suara, kami menambahkan diskriminator spectrogram multi-resolusi yang menggunakan beberapa magnitudo spectrogram linear yang dihitung menggunakan berbagai set parameter. Dengan menggunakan mel-spectrogram pita penuh sebagai input, kami berharap dapat menghasilkan sinyal beresolusi tinggi dengan menambahkan diskriminator yang menggunakan spectrogram multi-resolusi sebagai input. Dalam evaluasi pada dataset yang berisi informasi tentang ratusan pembicara, UnivNet memperoleh hasil objektif dan subjektif terbaik di antara model-model pesaing, baik untuk pembicara yang sudah dikenal maupun yang belum dikenal. Hasil-hasil ini, termasuk skor subjektif terbaik untuk text-to-speech, menunjukkan potensi adaptasi cepat ke pembicara baru tanpa perlu pelatihan dari awal.

Tips:

  • Argumen noise_sequence untuk UnivNetModel.forward() harus berupa noise Gaussian standar (misalnya dari torch.randn) dengan bentuk ([batch_size], noise_length, model.config.model_in_channels), di mana noise_length harus sesuai dengan dimensi panjang (dimensi 1) dari argumen input_features. Jika tidak diberikan, noise akan dihasilkan secara acak; sebuah torch.Generator dapat diberikan ke argumen generator agar forward pass dapat direproduksi. (Perhatikan bahwa UnivNetFeatureExtractor akan mengembalikan noise yang dihasilkan secara default, sehingga seharusnya tidak perlu menghasilkan noise_sequence secara manual.)
  • Padding yang ditambahkan oleh UnivNetFeatureExtractor dapat dihapus dari output UnivNetModel melalui metode UnivNetFeatureExtractor.batch_decode(), seperti yang ditunjukkan pada contoh penggunaan di bawah ini.
  • Menambahkan padding berupa keheningan di akhir setiap waveform dapat mengurangi artefak di bagian akhir sampel audio yang dihasilkan. Hal ini dapat dilakukan dengan memberikan pad_end = True ke UnivNetFeatureExtractor.call(). Lihat isu ini untuk detail lebih lanjut.

Contoh Penggunaan:

import torch
from datasets import Audio, load_dataset
from scipy.io.wavfile import write

from transformers import UnivNetFeatureExtractor, UnivNetModel


model_id_or_path = "dg845/univnet-dev"
model = UnivNetModel.from_pretrained(model_id_or_path, device_map="auto")
feature_extractor = UnivNetFeatureExtractor.from_pretrained(model_id_or_path)

ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
# Resample the audio to the model and feature extractor's sampling rate.
ds = ds.cast_column("audio", Audio(sampling_rate=feature_extractor.sampling_rate))
# Pad the end of the converted waveforms to reduce artifacts at the end of the output audio samples.
inputs = feature_extractor(
    ds[0]["audio"]["array"], sampling_rate=ds[0]["audio"]["sampling_rate"], pad_end=True, return_tensors="pt"
)

with torch.no_grad():
    audio = model(**inputs)

# Remove the extra padding at the end of the output.
audio = feature_extractor.batch_decode(**audio)[0]
# Convert to wav file
write("sample_audio.wav", feature_extractor.sampling_rate, audio)

Model ini disumbangkan oleh dg845. Sejauh pengetahuan saya, tidak ada rilis kode resmi, tetapi implementasi tidak resmi dapat ditemukan di maum-ai/univnet dengan checkpoint terlatih di sini.

UnivNetConfig

kelas transformers.UnivNetConfig

< >

( 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 = Nonemodel_in_channels: int = 64model_hidden_channels: int = 32num_mel_bins: int = 100resblock_kernel_sizes: list[int] | tuple[int, ...] = (3, 3, 3)resblock_stride_sizes: list[int] | tuple[int, ...] = (8, 8, 4)resblock_dilation_sizes: list | tuple = ((1, 3, 9, 27), (1, 3, 9, 27), (1, 3, 9, 27))kernel_predictor_num_blocks: int = 3kernel_predictor_hidden_channels: int = 64kernel_predictor_conv_size: int = 3kernel_predictor_dropout: float | int = 0.0initializer_range: float = 0.01leaky_relu_slope: float = 0.2 )

Parameter

  • model_in_channels (int, opsional, default 64) — Jumlah channel input untuk jaringan residual UnivNet. Nilai ini harus sesuai dengan noise_sequence.shape[1] dan nilai yang digunakan dalam kelas UnivNetFeatureExtractor.
  • model_hidden_channels (int, opsional, default 32) — Jumlah kanal tersembunyi dari setiap blok residual dalam jaringan residual UnivNet.
  • num_mel_bins (int, opsional, default 100) — Jumlah bin frekuensi pada spektrogram log-mel kondisional. Nilai ini harus sesuai dengan nilai yang digunakan pada kelas UnivNetFeatureExtractor.
  • resblock_kernel_sizes (tuple[int] atau list[int], opsional, default [3, 3, 3]) — Tuple bilangan bulat yang mendefinisikan ukuran kernel dari lapisan konvolusi 1D dalam jaringan residual UnivNet. Panjang resblock_kernel_sizes menentukan jumlah blok resnet dan harus sesuai dengan resblock_stride_sizes dan resblock_dilation_sizes.
  • resblock_stride_sizes (tuple[int] atau list[int], opsional, default [8, 8, 4]) — Tuple berisi bilangan bulat yang mendefinisikan ukuran stride dari lapisan konvolusi 1D dalam jaringan residual UnivNet. Panjang resblock_stride_sizes harus sama dengan panjang resblock_kernel_sizes dan resblock_dilation_sizes.
  • resblock_dilation_sizes (tuple[tuple[int]] atau list[list[int]], opsional, default [[1, 3, 9, 27], [1, 3, 9, 27], [1, 3, 9, 27]]) — Tuple bersarang dari bilangan bulat yang mendefinisikan laju dilatasi dari lapisan konvolusional 1D yang berdilatasi dalam jaringan residual UnivNet. Panjang resblock_dilation_sizes harus sama dengan panjang resblock_kernel_sizes dan resblock_stride_sizes. Panjang setiap daftar bersarang dalam resblock_dilation_sizes mendefinisikan jumlah lapisan konvolusional per blok resnet.
  • kernel_predictor_num_blocks (int, opsional, default 3) — Jumlah blok residual dalam jaringan kernel predictor, yang menghitung kernel dan bias untuk setiap lapisan variabel lokasi convolution dalam jaringan residual UnivNet.
  • kernel_predictor_hidden_channels (int, opsional, default 64) — Jumlah kanal tersembunyi untuk setiap blok residual dalam jaringan kernel predictor.
  • kernel_predictor_conv_size (int, opsional, default 3) — Ukuran kernel dari setiap lapisan konvolusional 1D dalam jaringan kernel predictor.
  • kernel_predictor_dropout (float, opsional, default 0.0) — Probabilitas dropout untuk setiap blok residual dalam jaringan kernel predictor.
  • initializer_range (float, opsional, defaultnya 0.01) — Standar deviasi dari truncated_normal_initializer untuk menginisialisasi semua matriks bobot.
  • leaky_relu_slope (float, opsional, default 0.2) — Sudut kemiringan negatif yang digunakan oleh aktivasi leaky ReLU.

Ini adalah kelas konfigurasi untuk menyimpan konfigurasi dari UnivNetModel. Kelas ini digunakan untuk membuat instans model Univnet berdasarkan argumen yang ditentukan, sehingga mendefinisikan arsitektur model. Membuat instans konfigurasi dengan nilai bawaan akan menghasilkan konfigurasi yang serupa dengan konfigurasi dari dg845/univnet-dev

Objek konfigurasi mewarisi dari PreTrainedConfig dan dapat digunakan untuk mengontrol output model. Baca dokumentasi dari PreTrainedConfig untuk informasi lebih lanjut.

Contoh:

>>> from transformers import UnivNetModel, UnivNetConfig

>>> # Initializing a Tortoise TTS style configuration
>>> configuration = UnivNetConfig()

>>> # Initializing a model (with random weights) from the Tortoise TTS style configuration
>>> model = UnivNetModel(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config

UnivNetFeatureExtractor

kelas transformers.UnivNetFeatureExtractor

< >

( feature_size: int = 1sampling_rate: int = 24000padding_value: float = 0.0do_normalize: bool = Falsenum_mel_bins: int = 100hop_length: int = 256win_length: int = 1024win_function: str = 'hann_window'filter_length: int | None = 1024max_length_s: int = 10fmin: float = 0.0fmax: float | None = Nonemel_floor: float = 1e-09center: bool = Falsecompression_factor: float = 1.0compression_clip_val: float = 1e-05normalize_min: float = -11.512925148010254normalize_max: float = 2.3143386840820312model_in_channels: int = 64pad_end_length: int = 10return_attention_mask = True**kwargs )

Parameter

  • feature_size (int, opsional, default 1) — Dimensi fitur dari fitur yang diekstrak.
  • sampling_rate (int, opsional, default 24000) — Laju sampling yang digunakan untuk mendigitalisasi file audio, dinyatakan dalam hertz (Hz).
  • padding_value (float, opsional, default 0.0) — Nilai yang digunakan untuk mengisi padding saat menerapkan strategi padding yang didefinisikan oleh argumen padding pada UnivNetFeatureExtractor.call(). Nilai ini harus sesuai dengan keheningan audio. Argumen pad_end pada __call__ juga akan menggunakan nilai padding ini.
  • do_normalize (bool, opsional, default False) — Apakah akan melakukan normalisasi Tacotron 2 pada input. Normalisasi dapat membantu meningkatkan kinerja secara signifikan untuk beberapa model.
  • num_mel_bins (int, opsional, default 100) — Jumlah bin frekuensi mel pada fitur spektrogram yang diekstrak. Nilai ini harus sesuai dengan UnivNetModel.config.num_mel_bins.
  • hop_length (int, opsional, default 256) — Jumlah sampel langsung di antara jendela geser. Istilah lain yang sering digunakan dalam banyak paper adalah “shift”. Perhatikan bahwa ini berbeda dari ekstraktor fitur audio lainnya seperti SpeechT5FeatureExtractor yang mengambil hop_length dalam ms.
  • win_length (int, opsional, default 1024) — Jumlah sampel langsung untuk setiap jendela geser. Perhatikan bahwa ini berbeda dari ekstraktor fitur audio lainnya seperti SpeechT5FeatureExtractor yang mengambil win_length dalam ms.
  • win_function (str, opsional, default "hann_window") — Nama untuk fungsi window yang digunakan untuk windowing, harus dapat diakses melalui torch.{win_function}
  • filter_length (int, opsional, default 1024) — Jumlah komponen FFT yang digunakan. Jika None, nilai ini ditentukan menggunakan transformers.audio_utils.optimal_fft_length.
  • max_length_s (int, opsional, default 10) — Panjang maksimum input model dalam detik. Ini digunakan untuk mengisi (padding) audio.
  • fmin (float, opsional, default 0.0) — Frekuensi mel minimum dalam Hz.
  • fmax (float, opsional) — Frekuensi mel maksimum dalam Hz. Jika tidak diatur, defaultnya adalah sampling_rate / 2.
  • mel_floor (float, opsional, default 1e-09) — Nilai minimum dari bank frekuensi mel. Perhatikan bahwa cara UnivNetFeatureExtractor menggunakan mel_floor berbeda dengan di transformers.audio_utils.spectrogram().
  • center (bool, opsional, default False) — Apakah akan melakukan padding pada waveform sehingga frame t berada di tengah waktu t * hop_length. Jika False, frame t akan dimulai pada waktu t * hop_length.
  • compression_factor (float, opsional, default 1.0) — Faktor kompresi multiplikatif untuk kompresi rentang dinamis selama normalisasi spektral.
  • compression_clip_val (float, opsional, default 1e-05) — Nilai clip yang diterapkan pada waveform sebelum menerapkan kompresi rentang dinamis selama normalisasi spektral.
  • normalize_min (float, opsional, default -11.512925148010254) — Nilai min yang digunakan untuk normalisasi linear bergaya Tacotron 2. Defaultnya adalah nilai asli dari implementasi Tacotron 2.
  • normalize_max (float, opsional, default 2.3143386840820312) — Nilai maksimum yang digunakan untuk normalisasi linear bergaya Tacotron 2. Defaultnya adalah nilai asli dari implementasi Tacotron 2.
  • model_in_channels (int, opsional, default 64) — Jumlah channel input untuk model UnivNetModel. Nilai ini harus sesuai dengan UnivNetModel.config.model_in_channels.
  • pad_end_length (int, opsional, default 10) — Jika melakukan padding di akhir setiap waveform, jumlah sampel setara dengan frame spectrogram yang akan ditambahkan. Jumlah sampel yang ditambahkan akan menjadi pad_end_length * hop_length.
  • return_attention_mask (bool, opsional, default True) — Apakah call() harus mengembalikan attention_mask.

Membangun feature extractor UnivNet.

Kelas ini mengekstrak fitur log-mel-filter bank dari ucapan mentah menggunakan short time Fourier Transform (STFT). Implementasi STFT mengikuti yang digunakan oleh TacoTron 2 dan Hifi-GAN.

Feature extractor ini mewarisi dari SequenceFeatureExtractor yang berisi sebagian besar metode utama. Pengguna harus merujuk ke superclass ini untuk informasi lebih lanjut mengenai metode-metode tersebut.

__call__

< >

( raw_speech: numpy.ndarray | list[float] | list[numpy.ndarray] | list[list[float]]sampling_rate: int | None = Nonepadding: bool | str | transformers.utils.generic.PaddingStrategy = Truemax_length: int | None = Nonetruncation: bool = Truepad_to_multiple_of: int | None = Nonereturn_noise: bool = Truegenerator: numpy.random._generator.Generator | None = Nonepad_end: bool = Falsepad_length: int | None = Nonedo_normalize: str | None = Nonereturn_attention_mask: bool | None = Nonereturn_tensors: str | transformers.utils.generic.TensorType | None = None )

Parameter

  • raw_speech (np.ndarray, list[float], list[np.ndarray], list[list[float]]) — Sequens atau batch dari sequens yang akan di-pad. Setiap sequens dapat berupa array numpy, daftar nilai float, daftar array numpy, atau daftar dari daftar nilai float. Harus berupa audio mono channel, bukan stereo, yaitu satu float per timestep.
  • sampling_rate (int, opsional) — Laju sampling di mana input raw_speech disampelkan. Sangat disarankan untuk meneruskan sampling_rate pada panggilan forward untuk mencegah kesalahan yang tidak terdeteksi dan memungkinkan pipeline pengenalan ucapan otomatis.
  • padding (bool, str atau PaddingStrategy, opsional, defaultnya True) — Pilih strategi untuk melakukan padding pada raw_speech waveform (sesuai sisi padding dan indeks padding model) di antara:
    • True atau 'longest': Pad hingga urutan terpanjang dalam batch (atau tanpa padding jika hanya satu urutan yang diberikan).
    • 'max_length': Pad hingga panjang maksimum yang ditentukan dengan argumen max_length atau hingga panjang input maksimum yang dapat diterima oleh model jika argumen tersebut tidak diberikan.
    • False atau 'do_not_pad' (default): Tidak ada padding (yaitu, dapat menghasilkan batch dengan urutan yang panjangnya berbeda).

    Jika pad_end = True, padding tersebut akan dilakukan sebelum strategi padding diterapkan.

  • max_length (int, opsional) — Panjang maksimum dari daftar yang dikembalikan dan secara opsional panjang padding (lihat di atas).
  • truncation (bool, opsional, default True) — Mengaktifkan pemotongan untuk memotong urutan input yang lebih panjang dari max_length menjadi max_length.
  • pad_to_multiple_of (int, opsional) — Jika diset, akan melakukan padding pada urutan hingga menjadi kelipatan dari nilai yang diberikan.

    Ini sangat berguna untuk memungkinkan penggunaan Tensor Cores pada perangkat keras NVIDIA dengan compute capability >= 7.5 (Volta), atau pada TPU yang diuntungkan dari panjang sekuens yang merupakan kelipatan 128.

  • return_noise (bool, opsional, default True) — Apakah akan menghasilkan dan mengembalikan gelombang noise untuk digunakan dalam UnivNetModel.forward().
  • generator (numpy.random.Generator, opsional, default None) — Generator bilangan acak numpy.random.Generator opsional yang digunakan saat menghasilkan noise.
  • pad_end (bool, opsional, default False) — Apakah akan menambahkan padding berupa keheningan di akhir setiap waveform. Hal ini dapat membantu mengurangi artefak di akhir sampel audio yang dihasilkan; lihat https://github.com/seungwonpark/melgan/issues/8 untuk detail lebih lanjut. Padding ini akan dilakukan sebelum strategi padding yang ditentukan dalam padding diterapkan.
  • pad_length (int, opsional, default None) — Jika melakukan padding di akhir setiap waveform, panjang padding dalam frame spektrogram. Jika tidak diatur, nilai ini akan default ke self.config.pad_end_length.
  • do_normalize (bool, opsional) — Apakah akan melakukan normalisasi Tacotron 2 pada input. Normalisasi dapat membantu meningkatkan kinerja secara signifikan untuk beberapa model. Jika tidak diatur, nilai ini akan default ke self.config.do_normalize.
  • return_attention_mask (bool, opsional) — Apakah akan mengembalikan attention mask. Jika dibiarkan pada nilai default, akan mengembalikan attention mask sesuai dengan default feature_extractor tertentu.

    Apa itu attention mask?

  • return_tensors (str atau TensorType, opsional) — Jika diatur, akan mengembalikan tensor alih-alih daftar integer Python. Nilai yang dapat diterima adalah:
    • 'pt': Mengembalikan objek PyTorch torch.np.array.
    • 'np': Mengembalikan objek Numpy np.ndarray.

Metode utama untuk melakukan featurisasi dan persiapan satu atau beberapa sekuens untuk model.

UnivNetModel

kelas transformers.UnivNetModel

< >

( config: UnivNetConfig )

Parameter

  • config (UnivNetConfig) — 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 Univnet 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

< >

( input_features: Tensornoise_sequence: typing.Optional[torch.Tensor] = Nonepadding_mask: typing.Optional[torch.Tensor] = Nonegenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool | None = None**kwargs ) → UnivNetModelOutput or tuple(torch.Tensor)

Parameter

  • input_features (torch.Tensor dengan bentuk (batch_size, sequence_length, feature_dim)) — Tensor yang sesuai dengan fitur audio input. Fitur audio dapat diperoleh menggunakan UnivNetFeatureExtractor. Lihat UnivNetFeatureExtractor.call() untuk detailnya (processor_class menggunakan UnivNetFeatureExtractor untuk memproses audio).
  • noise_sequence (torch.Tensor, opsional) — Tensor yang berisi sekuens noise dari noise Gaussian standar. Dapat di-batch dengan bentuk (batch_size, sequence_length, config.model_in_channels), atau tanpa batch dengan bentuk (sequence_length, config.model_in_channels)`. Jika tidak diberikan, akan dihasilkan secara acak.
  • padding_mask (torch.BoolTensor, opsional) — Mask yang menunjukkan bagian mana dari setiap sequence yang di-pad. Nilai mask dipilih dari [0, 1]:
    • 1 untuk token yang tidak dimasker
    • 0 untuk token yang dimasker

    Mask dapat di-batch dengan bentuk (batch_size, sequence_length) atau tidak di-batch dengan bentuk (sequence_length,).

  • generator (torch.Generator, opsional) — torch generator untuk membuat proses generasi menjadi deterministik. return_dict: Apakah akan mengembalikan subclass ModelOutput alih-alih tuple biasa.
  • return_dict (bool, opsional) — Apakah akan mengembalikan ModelOutput alih-alih tuple biasa.

Mengembalikan

UnivNetModelOutput atau tuple(torch.Tensor)

UnivNetModelOutput atau tuple dari torch.Tensor (jika return_dict=False diteruskan atau ketika config.return_dict=False) yang terdiri dari berbagai elemen tergantung pada konfigurasi (UnivNetConfig) dan input.

Metode forward dari UnivNetModel menimpa metode khusus __call__.

Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance Module setelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.

  • gelombang suara (torch.Tensor dengan bentuk (batch_size, sequence_length)) — Gelombang audio keluaran 1D (mono-channel) yang di-batch.
  • waveform_lengths (torch.Tensor dengan bentuk (batch_size,)) — Panjang batch dalam sampel untuk setiap waveform tanpa padding di waveforms.

Contoh:

>>> from transformers import UnivNetFeatureExtractor, UnivNetModel
>>> from datasets import load_dataset, Audio

>>> model = UnivNetModel.from_pretrained("dg845/univnet-dev")
>>> feature_extractor = UnivNetFeatureExtractor.from_pretrained("dg845/univnet-dev")

>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
>>> # Resample the audio to the feature extractor's sampling rate.
>>> ds = ds.cast_column("audio", Audio(sampling_rate=feature_extractor.sampling_rate))
>>> inputs = feature_extractor(
...     ds[0]["audio"]["array"], sampling_rate=ds[0]["audio"]["sampling_rate"], return_tensors="pt"
... )
>>> audio = model(**inputs).waveforms
>>> list(audio.shape)
[1, 140288]
Update on GitHub