Diffusers documentation

AudioLDM 2

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

and get access to the augmented documentation experience

to get started

AudioLDM 2

AudioLDM 2 diusulkan dalam AudioLDM 2: Learning Holistic Audio Generation with Self-supervised Pretraining oleh Haohe Liu dkk. AudioLDM 2 menerima prompt teks sebagai input dan memprediksi audio yang sesuai. Model ini dapat menghasilkan efek suara, ucapan manusia, dan musik yang dikondisikan oleh teks.

Terinspirasi oleh Stable Diffusion, AudioLDM 2 adalah model latent diffusion model (LDM) teks-ke-audio yang mempelajari representasi audio kontinu dari embedding teks. Dua model pengkode teks digunakan untuk menghitung embedding teks dari input prompt: cabang teks dari CLAP dan pengkode dari Flan-T5. Embedding teks ini kemudian diproyeksikan ke ruang embedding bersama oleh AudioLDM2ProjectionModel. Model GPT2 language model (LM) digunakan untuk memprediksi delapan vektor embedding baru secara auto-regresif, bersyarat pada embedding CLAP dan Flan-T5 yang telah diproyeksikan. Vektor embedding yang dihasilkan dan embedding teks Flan-T5 digunakan sebagai kondisioning cross-attention dalam LDM. UNet dari AudioLDM 2 unik dalam arti bahwa ia menerima dua embedding cross-attention, bukan satu kondisioning cross-attention, seperti pada sebagian besar LDM lainnya.

Abstrak dari makalah tersebut adalah sebagai berikut:

Walaupun generasi audio memiliki kesamaan di antara berbagai jenis audio, seperti ucapan, musik, dan efek suara, merancang model untuk masing-masing jenis memerlukan pertimbangan yang cermat terhadap tujuan dan bias spesifik yang dapat sangat berbeda dari jenis lainnya. Untuk membawa kita lebih dekat ke perspektif terpadu dari generasi audio, makalah ini mengusulkan sebuah kerangka kerja yang memanfaatkan metode pembelajaran yang sama untuk generasi ucapan, musik, dan efek suara. Kerangka kerja kami memperkenalkan representasi umum audio, yang disebut “bahasa audio” (LOA). Setiap audio dapat diterjemahkan ke dalam LOA berdasarkan AudioMAE, sebuah model pembelajaran representasi pra-latih yang diawasi sendiri. Dalam proses generasi, kami menerjemahkan modalitas apa pun ke dalam LOA dengan menggunakan model GPT-2, dan kami melakukan pembelajaran generasi audio yang diawasi sendiri dengan model difusi laten yang dikondisikan pada LOA. Kerangka kerja yang diusulkan secara alami membawa keuntungan seperti kemampuan pembelajaran dalam konteks dan model AudioMAE serta model difusi laten pra-latih yang diawasi sendiri dan dapat digunakan kembali. Eksperimen pada benchmark utama untuk teks-ke-audio, teks-ke-musik, dan teks-ke-ucapan menunjukkan kinerja state-of-the-art atau kompetitif dibandingkan pendekatan sebelumnya. Kode, model pra-latih, dan demo kami tersedia di URL https ini.

Pipeline ini disumbangkan oleh sanchit-gandhi dan Nguyễn Công Tú Anh. Basis kode aslinya dapat ditemukan di haoheliu/audioldm2.

Tips

Memilih checkpoint

AudioLDM2 hadir dalam tiga varian. Dua checkpoint ini dapat diterapkan untuk tugas umum generasi teks-ke-audio. Checkpoint ketiga dilatih secara eksklusif untuk generasi teks-ke-musik.

Semua checkpoint memiliki ukuran model yang sama untuk text encoder dan VAE. Perbedaan terletak pada ukuran dan kedalaman UNet. Lihat tabel di bawah untuk detail ketiga checkpoint:

CheckpointTugasUkuran Model UNetUkuran Total ModelData Pelatihan / h
audioldm2Teks-ke-audio350M1.1B1150k
audioldm2-largeTeks-ke-audio750M1.5B1150k
audioldm2-musicTeks-ke-musik350M1.1B665k
audioldm2-gigaspeechTeks-ke-suara350M1.1B10k
audioldm2-ljspeechTeks-ke-suara350M1.1B

Membangun prompt

  • Input prompt deskriptif paling efektif: gunakan kata sifat untuk menggambarkan suara (misalnya “high quality” atau “clear”) dan buat prompt spesifik dalam konteksnya (misalnya “water stream in a forest” alih-alih “stream”).
  • Sebaiknya gunakan istilah umum seperti “cat” atau “dog” alih-alih nama spesifik atau objek abstrak yang mungkin tidak dikenali oleh model.
  • Menggunakan negative prompt dapat secara signifikan meningkatkan kualitas waveform yang dihasilkan, dengan mengarahkan proses generasi menjauh dari istilah-istilah yang berkorespondensi dengan audio berkualitas buruk. Coba gunakan negative prompt “Low quality.”

Mengontrol inferensi

  • Kualitas sampel audio yang diprediksi dapat dikontrol melalui argumen num_inference_steps; jumlah langkah yang lebih tinggi menghasilkan audio dengan kualitas lebih tinggi, namun dengan biaya inferensi yang lebih lambat.
  • Panjang sampel audio yang diprediksi dapat dikendalikan dengan memvariasikan argumen audio_length_in_s.

Mengevaluasi waveform yang dihasilkan:

  • Kualitas waveform yang dihasilkan dapat bervariasi secara signifikan berdasarkan seed. Coba menghasilkan dengan seed yang berbeda hingga Anda menemukan hasil yang memuaskan.
  • Beberapa waveform dapat dihasilkan sekaligus: atur num_waveforms_per_prompt ke nilai yang lebih besar dari 1. Penilaian otomatis akan dilakukan antara waveform yang dihasilkan dan teks prompt, dan audio akan diurutkan dari yang terbaik hingga terburuk sesuai dengan hasilnya.

Contoh berikut menunjukkan cara membangun generasi musik dan ucapan yang baik menggunakan tips yang disebutkan di atas: contoh.

Pastikan untuk melihat panduan Schedulers untuk mempelajari cara mengeksplorasi tradeoff antara kecepatan dan kualitas scheduler, serta lihat bagian reuse components across pipelines untuk mempelajari cara memuat komponen yang sama secara efisien ke dalam beberapa pipeline.

AudioLDM2Pipeline

kelas diffusers.AudioLDM2Pipeline

< >

( vae: AutoencoderKLtext_encoder: ClapModeltext_encoder_2: transformers.models.t5.modeling_t5.T5EncoderModel | transformers.models.vits.modeling_vits.VitsModelprojection_model: AudioLDM2ProjectionModellanguage_model: GPT2LMHeadModeltokenizer: RobertaTokenizertokenizer_2: transformers.models.t5.tokenization_t5.T5Tokenizer | transformers.models.vits.tokenization_vits.VitsTokenizerfeature_extractor: ClapFeatureExtractorunet: AudioLDM2UNet2DConditionModelscheduler: KarrasDiffusionSchedulersvocoder: SpeechT5HifiGan )

Parameter

  • vae (AutoencoderKL) — Model Variational Auto-Encoder (VAE) untuk mengodekan dan mendekodekan gambar ke dan dari representasi laten.
  • text_encoder (ClapModel) — Text-encoder beku pertama. AudioLDM2 menggunakan model embedding audio-teks gabungan CLAP, khususnya varian laion/clap-htsat-unfused. Cabang teks digunakan untuk mengkodekan prompt teks menjadi embedding prompt. Model audio-teks lengkap digunakan untuk merangking waveform yang dihasilkan terhadap prompt teks dengan menghitung skor kemiripan.
  • text_encoder_2 ([~transformers.T5EncoderModel, ~transformers.VitsModel]) — Text-encoder beku kedua. AudioLDM2 menggunakan encoder dari T5, khususnya varian google/flan-t5-large. Text-encoder beku kedua digunakan untuk TTS. AudioLDM2 menggunakan encoder dari Vits.
  • projection_model (AudioLDM2ProjectionModel) — Model terlatih yang digunakan untuk memproyeksikan secara linear hidden-states dari model text encoder pertama dan kedua serta menyisipkan embedding token SOS dan EOS yang dipelajari. Hidden-states yang diproyeksikan dari kedua text encoder digabungkan (concatenated) untuk memberikan input ke language model. Learned Position Embedding untuk hidden-states Vits
  • language_model (GPT2Model) — Model bahasa auto-regresif yang digunakan untuk menghasilkan urutan hidden-states yang dikondisikan pada output proyeksi dari dua encoder teks.
  • tokenizer (RobertaTokenizer) — Tokenizer untuk melakukan tokenisasi teks bagi text-encoder beku pertama.
  • tokenizer_2 ([~transformers.T5Tokenizer, ~transformers.VitsTokenizer]) — Tokenizer untuk mem-tokenisasi teks bagi text-encoder beku kedua.
  • feature_extractor (ClapFeatureExtractor) — Ekstraktor fitur untuk memproses prapengolahan gelombang audio yang dihasilkan menjadi spektrogram log-mel untuk penilaian otomatis.
  • unet (UNet2DConditionModel) — UNet2DConditionModel untuk menghilangkan noise dari latens audio yang telah dienkod.
  • scheduler (SchedulerMixin) — Scheduler yang digunakan bersama dengan unet untuk menghilangkan noise pada latens audio yang telah dienkod. Bisa berupa salah satu dari DDIMScheduler, LMSDiscreteScheduler, atau PNDMScheduler.
  • vocoder (SpeechT5HifiGan) — Vocoder dari kelas SpeechT5HifiGan untuk mengonversi latens mel-spectrogram menjadi waveform audio akhir.

Pipeline untuk generasi teks-ke-audio menggunakan AudioLDM2.

Model ini mewarisi dari DiffusionPipeline. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan untuk semua pipeline (mengunduh, menyimpan, menjalankan pada perangkat tertentu, dll.).

__call__

< >

( prompt: str | list[str] = Nonetranscription: str | list[str] = Noneaudio_length_in_s: float | None = Nonenum_inference_steps: int = 200guidance_scale: float = 3.5negative_prompt: str | list[str] | None = Nonenum_waveforms_per_prompt: int | None = 1eta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonegenerated_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_generated_prompt_embeds: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.LongTensor] = Nonenegative_attention_mask: typing.Optional[torch.LongTensor] = Nonemax_new_tokens: int | None = Nonereturn_dict: bool = Truecallback: typing.Optional[typing.Callable[[int, int, torch.Tensor], NoneType]] = Nonecallback_steps: int | None = 1cross_attention_kwargs: dict[str, typing.Any] | None = Noneoutput_type: str | None = 'np' ) → StableDiffusionPipelineOutput or tuple

Parameter

  • prompt (str atau list[str], opsional) — Prompt atau prompt-prompt untuk memandu generasi audio. Jika tidak didefinisikan, Anda perlu meneruskan prompt_embeds.
  • transcription (str atau list[str], opsional) —\ Transkrip untuk teks ke suara.
  • audio_length_in_s (int, opsional, default 10.24) — Panjang sampel audio yang dihasilkan dalam detik.
  • num_inference_steps (int, opsional, default 200) — Jumlah langkah denoising. Semakin banyak langkah denoising, biasanya menghasilkan audio dengan kualitas lebih tinggi, namun dengan biaya inferensi yang lebih lambat.
  • guidance_scale (float, opsional, default 3.5) — Nilai guidance scale yang lebih tinggi mendorong model untuk menghasilkan audio yang sangat terkait dengan prompt teks, dengan mengorbankan kualitas suara yang lebih rendah. Guidance scale diaktifkan ketika guidance_scale > 1.
  • negative_prompt (str atau list[str], opsional) — Prompt atau prompt-prompt untuk mengarahkan apa yang tidak boleh disertakan dalam generasi audio. Jika tidak didefinisikan, Anda perlu mengirimkan negative_prompt_embeds sebagai gantinya. Diabaikan saat tidak menggunakan guidance (guidance_scale < 1).
  • num_waveforms_per_prompt (int, opsional, default 1) — Jumlah waveform yang akan dihasilkan per prompt. Jika num_waveforms_per_prompt > 1, maka penilaian otomatis dilakukan antara output yang dihasilkan dan teks prompt. Penilaian ini memberikan peringkat pada waveform yang dihasilkan berdasarkan kemiripan kosinusnya dengan input teks dalam ruang embedding teks-audio gabungan.
  • eta (float, opsional, default 0.0) — Bersesuaian dengan parameter eta (η) dari paper DDIM. Hanya berlaku untuk DDIMScheduler, dan diabaikan pada scheduler lainnya.
  • generator (torch.Generator atau list[torch.Generator], opsional) — torch.Generator untuk membuat generasi menjadi deterministik.
  • latents (torch.Tensor, opsional) — Latents berisik yang telah dibuat sebelumnya dan diambil dari distribusi Gaussian, untuk digunakan sebagai input untuk generasi spektrogram. Dapat digunakan untuk menyesuaikan generasi yang sama dengan prompt yang berbeda. Jika tidak disediakan, tensor latents akan dibuat dengan pengambilan sampel menggunakan generator acak yang diberikan.
  • prompt_embeds (torch.Tensor, opsional) — Embedding teks yang sudah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks (penimbangan prompt). Jika tidak disediakan, embedding teks akan dihasilkan dari argumen input prompt.
  • negative_prompt_embeds (torch.Tensor, opsional) — Embedding teks negatif yang telah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks (penimbangan prompt). Jika tidak disediakan, negative_prompt_embeds akan dibuat dari argumen input negative_prompt.
  • generated_prompt_embeds (torch.Tensor, opsional) — Embedding teks yang telah dibuat sebelumnya dari model bahasa GPT2. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya pembobotan prompt. Jika tidak disediakan, embedding teks akan dibuat dari argumen input prompt.
  • negative_generated_prompt_embeds (torch.Tensor, opsional) — Embedding teks negatif yang telah dibuat sebelumnya dari model bahasa GPT2. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya penimbangan prompt. Jika tidak disediakan, negative_prompt_embeds akan dihitung dari argumen input negative_prompt.
  • attention_mask (torch.LongTensor, opsional) — Attention mask yang sudah dihitung sebelumnya untuk diterapkan pada prompt_embeds. Jika tidak disediakan, attention mask akan dihitung dari argumen input prompt.
  • negative_attention_mask (torch.LongTensor, opsional) — Attention mask yang sudah dihitung sebelumnya untuk diterapkan pada negative_prompt_embeds. Jika tidak disediakan, attention mask akan dihitung dari argumen input negative_prompt.
  • max_new_tokens (int, opsional, default None) — Jumlah token baru yang akan dihasilkan dengan model bahasa GPT2. Jika tidak diberikan, jumlah token akan diambil dari konfigurasi model.
  • return_dict (bool, opsional, default True) — Apakah akan mengembalikan StableDiffusionPipelineOutput alih-alih tuple biasa.
  • callback (Callable, opsional) — Fungsi yang dipanggil setiap callback_steps langkah selama inferensi. Fungsi ini dipanggil dengan argumen berikut: callback(step: int, timestep: int, latents: torch.Tensor).
  • callback_steps (int, opsional, default 1) — Frekuensi pemanggilan fungsi callback. Jika tidak ditentukan, callback dipanggil pada setiap langkah.
  • cross_attention_kwargs (dict, opsional) — Kamus kwargs yang jika ditentukan akan diteruskan ke AttentionProcessor seperti yang didefinisikan dalam self.processor.
  • output_type (str, opsional, defaultnya "np") — Format output dari audio yang dihasilkan. Pilih antara "np" untuk mengembalikan np.ndarray NumPy atau "pt" untuk mengembalikan objek torch.Tensor PyTorch. Atur ke "latent" untuk mengembalikan output model difusi laten (LDM).

Mengembalikan

StableDiffusionPipelineOutput atau tuple

Jika return_dict adalah True, StableDiffusionPipelineOutput dikembalikan, sebaliknya sebuah tuple dikembalikan di mana elemen pertama adalah daftar dengan audio yang dihasilkan.

Fungsi panggilan untuk pipeline pada generasi.

Contoh:

>>> import scipy
>>> import torch
>>> from diffusers import AudioLDM2Pipeline

>>> repo_id = "cvssp/audioldm2"
>>> pipe = AudioLDM2Pipeline.from_pretrained(repo_id, torch_dtype=torch.float16)
>>> pipe = pipe.to("cuda")

>>> # define the prompts
>>> prompt = "The sound of a hammer hitting a wooden surface."
>>> negative_prompt = "Low quality."

>>> # set the seed for generator
>>> generator = torch.Generator("cuda").manual_seed(0)

>>> # run the generation
>>> audio = pipe(
...     prompt,
...     negative_prompt=negative_prompt,
...     num_inference_steps=200,
...     audio_length_in_s=10.0,
...     num_waveforms_per_prompt=3,
...     generator=generator,
... ).audios

>>> # save the best audio sample (index 0) as a .wav file
>>> scipy.io.wavfile.write("techno.wav", rate=16000, data=audio[0])
#Using AudioLDM2 for Text To Speech
>>> import scipy
>>> import torch
>>> from diffusers import AudioLDM2Pipeline

>>> repo_id = "anhnct/audioldm2_gigaspeech"
>>> pipe = AudioLDM2Pipeline.from_pretrained(repo_id, torch_dtype=torch.float16)
>>> pipe = pipe.to("cuda")

>>> # define the prompts
>>> prompt = "A female reporter is speaking"
>>> transcript = "wish you have a good day"

>>> # set the seed for generator
>>> generator = torch.Generator("cuda").manual_seed(0)

>>> # run the generation
>>> audio = pipe(
...     prompt,
...     transcription=transcript,
...     num_inference_steps=200,
...     audio_length_in_s=10.0,
...     num_waveforms_per_prompt=2,
...     generator=generator,
...     max_new_tokens=512,          #Must set max_new_tokens equa to 512 for TTS
... ).audios

>>> # save the best audio sample (index 0) as a .wav file
>>> scipy.io.wavfile.write("tts.wav", rate=16000, data=audio[0])

enable_model_cpu_offload

< >

( gpu_id: int | None = Nonedevice: typing.Union[torch.device, str] = 'cuda' )

Membongkar semua model ke CPU menggunakan accelerate, mengurangi penggunaan memori dengan dampak kecil pada kinerja. Dibandingkan dengan enable_sequential_cpu_offload, metode ini memindahkan satu model utuh ke GPU pada saat metode forward dipanggil, dan model tetap berada di GPU hingga model berikutnya dijalankan. Penghematan memori lebih rendah dibandingkan dengan enable_sequential_cpu_offload, tetapi kinerjanya jauh lebih baik karena eksekusi iteratif dari unet.

encode_prompt

< >

( promptdevicenum_waveforms_per_promptdo_classifier_free_guidancetranscription = Nonenegative_prompt = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonegenerated_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_generated_prompt_embeds: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.LongTensor] = Nonenegative_attention_mask: typing.Optional[torch.LongTensor] = Nonemax_new_tokens: int | None = None ) → prompt_embeds (torch.Tensor)

Parameter

  • prompt (str atau list[str], opsional) — prompt yang akan dienkod
  • transcription (str atau list[str]) — transkripsi teks ke suara
  • device (torch.device) — perangkat torch
  • num_waveforms_per_prompt (int) — jumlah waveform yang harus dihasilkan per prompt
  • do_classifier_free_guidance (bool) — apakah akan menggunakan classifier free guidance atau tidak
  • negative_prompt (str atau list[str], opsional) — Prompt atau prompt-prompt yang tidak digunakan untuk memandu generasi audio. Jika tidak didefinisikan, Anda harus meneruskan negative_prompt_embeds sebagai gantinya. Diabaikan jika tidak menggunakan guidance (yaitu, diabaikan jika guidance_scale kurang dari 1).
  • prompt_embeds (torch.Tensor, opsional) — Embedding teks yang sudah dihitung sebelumnya dari model Flan T5. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya pemberian bobot pada prompt. Jika tidak disediakan, embedding teks akan dihitung dari argumen input prompt.
  • negative_prompt_embeds (torch.Tensor, opsional) — Embedding teks negatif yang telah dihitung sebelumnya dari model Flan T5. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya penimbangan prompt. Jika tidak disediakan, negative_prompt_embeds akan dihitung dari argumen input negative_prompt.
  • generated_prompt_embeds (torch.Tensor, opsional) — Embedding teks yang telah dibuat sebelumnya dari model bahasa GPT2. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya pembobotan prompt. Jika tidak disediakan, embedding teks akan dibuat dari argumen input prompt.
  • negative_generated_prompt_embeds (torch.Tensor, opsional) — Embedding teks negatif yang telah dibuat sebelumnya dari model bahasa GPT2. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya penimbangan prompt. Jika tidak disediakan, negative_prompt_embeds akan dihitung dari argumen input negative_prompt.
  • attention_mask (torch.LongTensor, opsional) — Attention mask yang sudah dihitung sebelumnya untuk diterapkan pada prompt_embeds. Jika tidak disediakan, attention mask akan dihitung dari argumen input prompt.
  • negative_attention_mask (torch.LongTensor, opsional) — Attention mask yang sudah dihitung sebelumnya untuk diterapkan pada negative_prompt_embeds. Jika tidak disediakan, attention mask akan dihitung dari argumen input negative_prompt.
  • max_new_tokens (int, opsional, defaultnya None) — Jumlah token baru yang akan dihasilkan dengan model bahasa GPT2.

Mengembalikan

prompt_embeds (torch.Tensor)

Text embeddings dari model Flan T5. attention_mask (torch.LongTensor): Attention mask yang akan diterapkan pada prompt_embeds. generated_prompt_embeds (torch.Tensor): Text embeddings yang dihasilkan dari model bahasa GPT2.

Mengkodekan prompt menjadi hidden states dari text encoder.

Contoh:

>>> import scipy
>>> import torch
>>> from diffusers import AudioLDM2Pipeline

>>> repo_id = "cvssp/audioldm2"
>>> pipe = AudioLDM2Pipeline.from_pretrained(repo_id, torch_dtype=torch.float16)
>>> pipe = pipe.to("cuda")

>>> # Get text embedding vectors
>>> prompt_embeds, attention_mask, generated_prompt_embeds = pipe.encode_prompt(
...     prompt="Techno music with a strong, upbeat tempo and high melodic riffs",
...     device="cuda",
...     do_classifier_free_guidance=True,
... )

>>> # Pass text embeddings to pipeline for text-conditional audio generation
>>> audio = pipe(
...     prompt_embeds=prompt_embeds,
...     attention_mask=attention_mask,
...     generated_prompt_embeds=generated_prompt_embeds,
...     num_inference_steps=200,
...     audio_length_in_s=10.0,
... ).audios[0]

>>> # save generated audio sample
>>> scipy.io.wavfile.write("techno.wav", rate=16000, data=audio)

generate_language_model

< >

( inputs_embeds: Tensor = Nonemax_new_tokens: int = 8**model_kwargs ) → inputs_embeds (torch.Tensorof shape(batch_size, sequence_length, hidden_size)`)

Parameter

  • inputs_embeds (torch.Tensor dengan bentuk (batch_size, sequence_length, hidden_size)) — Urutan yang digunakan sebagai prompt untuk generasi.
  • max_new_tokens (int) — Jumlah token baru yang akan dihasilkan.
  • model_kwargs (dict[str, Any], opsional) — Parametrisasi ad hoc untuk kwargs spesifik model tambahan yang akan diteruskan ke fungsi forward dari model.

Mengembalikan

inputs_embeds (torch.Tensorof shape(batch_size, sequence_length, hidden_size)`)

Urutan hidden-states yang dihasilkan.

Membuat urutan hidden-states dari model bahasa, dikondisikan pada input embedding.

AudioLDM2ProjectionModel

kelas diffusers.AudioLDM2ProjectionModel

< >

( text_encoder_dimtext_encoder_1_dimlangauge_model_dimuse_learned_position_embedding = Nonemax_seq_length = None )

Parameter

  • text_encoder_dim (int) — Dimensi dari embedding teks dari text encoder pertama (CLAP).
  • text_encoder_1_dim (int) — Dimensi dari text embeddings yang dihasilkan oleh text encoder kedua (T5 atau VITS).
  • langauge_model_dim (int) — Dimensi dari embedding teks yang dihasilkan oleh model bahasa (GPT2).

Model proyeksi linear sederhana untuk memetakan dua embedding teks ke ruang laten bersama. Model ini juga menyisipkan vektor embedding yang dipelajari di awal dan akhir dari masing-masing urutan embedding teks. Setiap variabel yang ditambahkan dengan _1 merujuk pada yang sesuai dengan encoder teks kedua. Selain itu, variabel berasal dari encoder pertama.

forward

< >

( hidden_states: typing.Optional[torch.Tensor] = Nonehidden_states_1: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.LongTensor] = Noneattention_mask_1: typing.Optional[torch.LongTensor] = None ) → AudioLDM2ProjectionModelOutput

Parameter

  • hidden_states (torch.Tensor dengan bentuk (batch_size, sequence_length, text_encoder_dim), opsional) — Embedding teks dari text encoder pertama (CLAP).
  • hidden_states_1 (torch.Tensor dengan bentuk (batch_size, sequence_length_1, text_encoder_1_dim), opsional) — Embedding teks dari text encoder kedua (T5 atau VITS).
  • attention_mask (torch.LongTensor dengan bentuk (batch_size, sequence_length), opsional) — Mask attention untuk hidden_states.
  • attention_mask_1 (torch.LongTensor dengan bentuk (batch_size, sequence_length_1), opsional) — Mask attention untuk hidden_states_1.

Mengembalikan

AudioLDM2ProjectionModelOutput

Embedding teks yang diproyeksikan dari kedua encoder teks, yang digabungkan sepanjang dimensi sekuens, beserta mask perhatian gabungan mereka.

AudioLDM2UNet2DConditionModel

kelas diffusers.AudioLDM2UNet2DConditionModel

< >

( sample_size: int | None = Nonein_channels: int = 4out_channels: int = 4flip_sin_to_cos: bool = Truefreq_shift: int = 0down_block_types: tuple = ('CrossAttnDownBlock2D', 'CrossAttnDownBlock2D', 'CrossAttnDownBlock2D', 'DownBlock2D')mid_block_type: str = 'UNetMidBlock2DCrossAttn'up_block_types: tuple = ('UpBlock2D', 'CrossAttnUpBlock2D', 'CrossAttnUpBlock2D', 'CrossAttnUpBlock2D')only_cross_attention: bool | tuple[bool] = Falseblock_out_channels: tuple = (320, 640, 1280, 1280)layers_per_block: int | tuple[int] = 2downsample_padding: int = 1mid_block_scale_factor: float = 1act_fn: str = 'silu'norm_num_groups: int | None = 32norm_eps: float = 1e-05cross_attention_dim: int | tuple[int] = 1280transformer_layers_per_block: int | tuple[int] = 1attention_head_dim: int | tuple[int] = 8num_attention_heads: int | tuple[int] | None = Noneuse_linear_projection: bool = Falseclass_embed_type: str | None = Nonenum_class_embeds: int | None = Noneupcast_attention: bool = Falseresnet_time_scale_shift: str = 'default'time_embedding_type: str = 'positional'time_embedding_dim: int | None = Nonetime_embedding_act_fn: str | None = Nonetimestep_post_act: str | None = Nonetime_cond_proj_dim: int | None = Noneconv_in_kernel: int = 3conv_out_kernel: int = 3projection_class_embeddings_input_dim: int | None = Noneclass_embeddings_concat: bool = False )

Parameter

  • sample_size (int atau tuple[int, int], opsional, defaultnya None) — Tinggi dan lebar sampel input/output.
  • in_channels (int, opsional, default 4) — Jumlah channel pada sampel input.
  • out_channels (int, opsional, default 4) — Jumlah channel pada output.
  • flip_sin_to_cos (bool, opsional, default False) — Apakah akan membalik sin menjadi cos pada time embedding.
  • freq_shift (int, opsional, default 0) — Pergeseran frekuensi yang diterapkan pada time embedding.
  • down_block_types (tuple[str], opsional, defaultnya ("CrossAttnDownBlock2D", "CrossAttnDownBlock2D", "CrossAttnDownBlock2D", "DownBlock2D")) — Tuple dari blok downsample yang akan digunakan.
  • mid_block_type (str, opsional, defaultnya "UNetMidBlock2DCrossAttn") — Jenis blok untuk bagian tengah UNet, hanya bisa berupa UNetMidBlock2DCrossAttn untuk AudioLDM2.
  • up_block_types (tuple[str], opsional, defaultnya ("UpBlock2D", "CrossAttnUpBlock2D", "CrossAttnUpBlock2D", "CrossAttnUpBlock2D")) — Tuple dari blok upsample yang akan digunakan.
  • only_cross_attention (bool atau tuple[bool], opsional, default False) — Apakah akan menyertakan self-attention dalam blok transformer dasar, lihat BasicTransformerBlock.
  • block_out_channels (tuple[int], opsional, defaultnya (320, 640, 1280, 1280)) — Tuple dari kanal output untuk setiap blok.
  • layers_per_block (int, opsional, default 2) — Jumlah lapisan per blok.
  • downsample_padding (int, opsional, default 1) — Padding yang digunakan untuk konvolusi downsampling.
  • mid_block_scale_factor (float, opsional, default 1.0) — Faktor skala yang digunakan untuk blok tengah.
  • act_fn (str, opsional, defaultnya "silu") — Fungsi aktivasi yang akan digunakan.
  • norm_num_groups (int, opsional, default 32) — Jumlah grup yang digunakan untuk normalisasi. Jika None, lapisan normalisasi dan aktivasi dilewati dalam pascapemrosesan.
  • norm_eps (float, opsional, default 1e-5) — Epsilon yang digunakan untuk normalisasi.
  • cross_attention_dim (int atau tuple[int], opsional, default 1280) — Dimensi dari fitur cross attention.
  • transformer_layers_per_block (int atau tuple[int], opsional, default 1) — Jumlah blok transformer bertipe BasicTransformerBlock. Hanya relevan untuk ~models.unet_2d_blocks.CrossAttnDownBlock2D, ~models.unet_2d_blocks.CrossAttnUpBlock2D, ~models.unet_2d_blocks.UNetMidBlock2DCrossAttn.
  • attention_head_dim (int, opsional, default 8) — Dimensi dari kepala perhatian (attention heads).
  • num_attention_heads (int, opsional) — Jumlah kepala perhatian. Jika tidak didefinisikan, defaultnya adalah attention_head_dim
  • resnet_time_scale_shift (str, opsional, default "default") — Konfigurasi pergeseran skala waktu untuk blok ResNet (lihat ResnetBlock2D). Pilih dari default atau scale_shift.
  • class_embed_type (str, opsional, default None) — Jenis class embedding yang digunakan, yang pada akhirnya dijumlahkan dengan time embeddings. Pilih dari None, "timestep", "identity", "projection", atau "simple_projection".
  • num_class_embeds (int, opsional, default None) — Dimensi input dari matriks embedding yang dapat dipelajari untuk diproyeksikan ke time_embed_dim, saat melakukan kondisioning kelas dengan class_embed_type yang sama dengan None.
  • time_embedding_type (str, opsional, defaultnya positional) — Jenis position embedding yang digunakan untuk timesteps. Pilih dari positional atau fourier.
  • time_embedding_dim (int, opsional, defaultnya None) — Penggantian opsional untuk dimensi dari time embedding yang diproyeksikan.
  • time_embedding_act_fn (str, opsional, defaultnya None) — Fungsi aktivasi opsional yang hanya digunakan sekali pada time embeddings sebelum diteruskan ke bagian lain dari UNet. Pilih dari silu, mish, gelu, dan swish.
  • timestep_post_act (str, opsional, default None) — Fungsi aktivasi kedua yang digunakan dalam penanaman timestep. Pilih dari silu, mish dan gelu.
  • time_cond_proj_dim (int, opsional, defaultnya None) — Dimensi dari lapisan cond_proj dalam embedding timestep.
  • conv_in_kernel (int, opsional, default 3) — Ukuran kernel dari layer conv_in.
  • conv_out_kernel (int, opsional, default 3) — Ukuran kernel dari layer conv_out.
  • projection_class_embeddings_input_dim (int, opsional) — Dimensi dari input class_labels ketika class_embed_type="projection". Wajib diisi ketika class_embed_type="projection".
  • class_embeddings_concat (bool, opsional, default False) — Apakah akan menggabungkan time embeddings dengan class embeddings.

Model 2D UNet bersyarat yang menerima sampel berisik, kondisi, dan timestep, lalu mengembalikan output berbentuk sampel. Dibandingkan dengan UNet2DConditionModel vanilla, varian ini secara opsional menyertakan lapisan self-attention tambahan di setiap blok Transformer, serta beberapa lapisan cross-attention. Model ini juga memungkinkan hingga dua embedding cross-attention, yaitu encoder_hidden_states dan encoder_hidden_states_1.

Model ini mewarisi dari ModelMixin. Periksa dokumentasi kelas induk untuk metode generiknya yang diimplementasikan untuk semua model (seperti mengunduh atau menyimpan).

forward

< >

( sample: Tensortimestep: typing.Union[torch.Tensor, float, int]encoder_hidden_states: Tensorclass_labels: typing.Optional[torch.Tensor] = Nonetimestep_cond: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonecross_attention_kwargs: dict[str, typing.Any] | None = Noneencoder_attention_mask: typing.Optional[torch.Tensor] = Nonereturn_dict: bool = Trueencoder_hidden_states_1: typing.Optional[torch.Tensor] = Noneencoder_attention_mask_1: typing.Optional[torch.Tensor] = None ) → UNet2DConditionOutput or tuple

Parameter

  • sample (torch.Tensor) — Tensor input berisik dengan bentuk berikut (batch, channel, height, width).
  • timestep (torch.Tensor atau float atau int) — Jumlah timestep untuk mendenoise input.
  • encoder_hidden_states (torch.Tensor) — Hidden states encoder dengan bentuk (batch, sequence_length, feature_dim).
  • encoder_attention_mask (torch.Tensor) — Mask cross-attention dengan bentuk (batch, sequence_length) diterapkan pada encoder_hidden_states. Jika True, mask dipertahankan, sedangkan jika False, mask dibuang. Mask akan dikonversi menjadi bias, yang menambahkan nilai negatif besar ke skor attention yang sesuai dengan token “discard”.
  • return_dict (bool, opsional, default True) — Apakah akan mengembalikan UNet2DConditionOutput alih-alih tuple biasa.
  • cross_attention_kwargs (dict, opsional) — Kamus kwargs yang jika ditentukan akan diteruskan ke AttnProcessor.
  • encoder_hidden_states_1 (torch.Tensor, opsional) — Set kedua dari encoder hidden states dengan bentuk (batch, sequence_length_2, feature_dim_2). Dapat digunakan untuk mengondisikan model pada set embeddings yang berbeda dari encoder_hidden_states.
  • encoder_attention_mask_1 (torch.Tensor, opsional) — Mask cross-attention dengan bentuk (batch, sequence_length_2) diterapkan pada encoder_hidden_states_1. Jika True, mask dipertahankan, sedangkan jika False, mask dibuang. Mask akan dikonversi menjadi bias, yang menambahkan nilai negatif besar ke skor perhatian yang sesuai dengan token “buang”.

Mengembalikan

UNet2DConditionOutput atau tuple

Jika return_dict bernilai True, sebuah UNet2DConditionOutput akan dikembalikan, sebaliknya sebuah tuple akan dikembalikan di mana elemen pertama adalah tensor sampel.

Metode forward dari AudioLDM2UNet2DConditionModel.

AudioPipelineOutput

kelas diffusers.AudioPipelineOutput

< >

( audios: ndarray )

Parameter

  • audios (np.ndarray) — Daftar sampel audio yang telah dinoise dari array NumPy dengan bentuk (batch_size, num_channels, sample_rate).

Kelas output untuk pipeline audio.

Update on GitHub