Diffusers documentation
AudioLDM 2
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:
| Checkpoint | Tugas | Ukuran Model UNet | Ukuran Total Model | Data Pelatihan / h |
|---|---|---|---|---|
| audioldm2 | Teks-ke-audio | 350M | 1.1B | 1150k |
| audioldm2-large | Teks-ke-audio | 750M | 1.5B | 1150k |
| audioldm2-music | Teks-ke-musik | 350M | 1.1B | 665k |
| audioldm2-gigaspeech | Teks-ke-suara | 350M | 1.1B | 10k |
| audioldm2-ljspeech | Teks-ke-suara | 350M | 1.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_promptke 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
< source >( 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) —
UNet2DConditionModeluntuk menghilangkan noise dari latens audio yang telah dienkod. - scheduler (SchedulerMixin) —
Scheduler yang digunakan bersama dengan
unetuntuk menghilangkan noise pada latens audio yang telah dienkod. Bisa berupa salah satu dari DDIMScheduler, LMSDiscreteScheduler, atau PNDMScheduler. - vocoder (SpeechT5HifiGan) —
Vocoder dari kelas
SpeechT5HifiGanuntuk 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__
< source >( 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 (
strataulist[str], opsional) — Prompt atau prompt-prompt untuk memandu generasi audio. Jika tidak didefinisikan, Anda perlu meneruskanprompt_embeds. - transcription (
strataulist[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 denganpromptteks, dengan mengorbankan kualitas suara yang lebih rendah. Guidance scale diaktifkan ketikaguidance_scale > 1. - negative_prompt (
strataulist[str], opsional) — Prompt atau prompt-prompt untuk mengarahkan apa yang tidak boleh disertakan dalam generasi audio. Jika tidak didefinisikan, Anda perlu mengirimkannegative_prompt_embedssebagai gantinya. Diabaikan saat tidak menggunakan guidance (guidance_scale < 1). - num_waveforms_per_prompt (
int, opsional, default 1) — Jumlah waveform yang akan dihasilkan per prompt. Jikanum_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.Generatorataulist[torch.Generator], opsional) —torch.Generatoruntuk 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 menggunakangeneratoracak 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 inputprompt. - 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_embedsakan dibuat dari argumen inputnegative_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 inputprompt. - 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 inputnegative_prompt. - attention_mask (
torch.LongTensor, opsional) — Attention mask yang sudah dihitung sebelumnya untuk diterapkan padaprompt_embeds. Jika tidak disediakan, attention mask akan dihitung dari argumen inputprompt. - negative_attention_mask (
torch.LongTensor, opsional) — Attention mask yang sudah dihitung sebelumnya untuk diterapkan padanegative_prompt_embeds. Jika tidak disediakan, attention mask akan dihitung dari argumen inputnegative_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, defaultTrue) — Apakah akan mengembalikan StableDiffusionPipelineOutput alih-alih tuple biasa. - callback (
Callable, opsional) — Fungsi yang dipanggil setiapcallback_stepslangkah selama inferensi. Fungsi ini dipanggil dengan argumen berikut:callback(step: int, timestep: int, latents: torch.Tensor). - callback_steps (
int, opsional, default 1) — Frekuensi pemanggilan fungsicallback. Jika tidak ditentukan, callback dipanggil pada setiap langkah. - cross_attention_kwargs (
dict, opsional) — Kamus kwargs yang jika ditentukan akan diteruskan keAttentionProcessorseperti yang didefinisikan dalamself.processor. - output_type (
str, opsional, defaultnya"np") — Format output dari audio yang dihasilkan. Pilih antara"np"untuk mengembalikannp.ndarrayNumPy atau"pt"untuk mengembalikan objektorch.TensorPyTorch. 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
< source >( 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
< source >( 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 (
strataulist[str], opsional) — prompt yang akan dienkod - transcription (
strataulist[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 (
strataulist[str], opsional) — Prompt atau prompt-prompt yang tidak digunakan untuk memandu generasi audio. Jika tidak didefinisikan, Anda harus meneruskannegative_prompt_embedssebagai gantinya. Diabaikan jika tidak menggunakan guidance (yaitu, diabaikan jikaguidance_scalekurang dari1). - 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 inputprompt. - 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 inputnegative_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 inputprompt. - 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 inputnegative_prompt. - attention_mask (
torch.LongTensor, opsional) — Attention mask yang sudah dihitung sebelumnya untuk diterapkan padaprompt_embeds. Jika tidak disediakan, attention mask akan dihitung dari argumen inputprompt. - negative_attention_mask (
torch.LongTensor, opsional) — Attention mask yang sudah dihitung sebelumnya untuk diterapkan padanegative_prompt_embeds. Jika tidak disediakan, attention mask akan dihitung dari argumen inputnegative_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
< source >( 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.Tensordengan 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 fungsiforwarddari 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
< source >( text_encoder_dimtext_encoder_1_dimlangauge_model_dimuse_learned_position_embedding = Nonemax_seq_length = None )
Parameter
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
< source >( 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.Tensordengan bentuk(batch_size, sequence_length, text_encoder_dim), opsional) — Embedding teks dari text encoder pertama (CLAP). - hidden_states_1 (
torch.Tensordengan bentuk(batch_size, sequence_length_1, text_encoder_1_dim), opsional) — Embedding teks dari text encoder kedua (T5 atau VITS). - attention_mask (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Mask attention untukhidden_states. - attention_mask_1 (
torch.LongTensordengan bentuk(batch_size, sequence_length_1), opsional) — Mask attention untukhidden_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
< source >( 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 (
intatautuple[int, int], opsional, defaultnyaNone) — 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, defaultFalse) — 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 berupaUNetMidBlock2DCrossAttnuntuk AudioLDM2. - up_block_types (
tuple[str], opsional, defaultnya("UpBlock2D", "CrossAttnUpBlock2D", "CrossAttnUpBlock2D", "CrossAttnUpBlock2D")) — Tuple dari blok upsample yang akan digunakan. - only_cross_attention (
boolatautuple[bool], opsional, defaultFalse) — Apakah akan menyertakan self-attention dalam blok transformer dasar, lihatBasicTransformerBlock. - 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. JikaNone, lapisan normalisasi dan aktivasi dilewati dalam pascapemrosesan. - norm_eps (
float, opsional, default 1e-5) — Epsilon yang digunakan untuk normalisasi. - cross_attention_dim (
intatautuple[int], opsional, default 1280) — Dimensi dari fitur cross attention. - transformer_layers_per_block (
intatautuple[int], opsional, default 1) — Jumlah blok transformer bertipeBasicTransformerBlock. 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 adalahattention_head_dim - resnet_time_scale_shift (
str, opsional, default"default") — Konfigurasi pergeseran skala waktu untuk blok ResNet (lihatResnetBlock2D). Pilih daridefaultatauscale_shift. - class_embed_type (
str, opsional, defaultNone) — Jenis class embedding yang digunakan, yang pada akhirnya dijumlahkan dengan time embeddings. Pilih dariNone,"timestep","identity","projection", atau"simple_projection". - num_class_embeds (
int, opsional, defaultNone) — Dimensi input dari matriks embedding yang dapat dipelajari untuk diproyeksikan ketime_embed_dim, saat melakukan kondisioning kelas denganclass_embed_typeyang sama denganNone. - time_embedding_type (
str, opsional, defaultnyapositional) — Jenis position embedding yang digunakan untuk timesteps. Pilih daripositionalataufourier. - time_embedding_dim (
int, opsional, defaultnyaNone) — Penggantian opsional untuk dimensi dari time embedding yang diproyeksikan. - time_embedding_act_fn (
str, opsional, defaultnyaNone) — Fungsi aktivasi opsional yang hanya digunakan sekali pada time embeddings sebelum diteruskan ke bagian lain dari UNet. Pilih darisilu,mish,gelu, danswish. - timestep_post_act (
str, opsional, defaultNone) — Fungsi aktivasi kedua yang digunakan dalam penanaman timestep. Pilih darisilu,mishdangelu. - time_cond_proj_dim (
int, opsional, defaultnyaNone) — Dimensi dari lapisancond_projdalam embedding timestep. - conv_in_kernel (
int, opsional, default3) — Ukuran kernel dari layerconv_in. - conv_out_kernel (
int, opsional, default3) — Ukuran kernel dari layerconv_out. - projection_class_embeddings_input_dim (
int, opsional) — Dimensi dari inputclass_labelsketikaclass_embed_type="projection". Wajib diisi ketikaclass_embed_type="projection". - class_embeddings_concat (
bool, opsional, defaultFalse) — 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
< source >( 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.Tensorataufloatatauint) — 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 padaencoder_hidden_states. JikaTrue, mask dipertahankan, sedangkan jikaFalse, mask dibuang. Mask akan dikonversi menjadi bias, yang menambahkan nilai negatif besar ke skor attention yang sesuai dengan token “discard”. - return_dict (
bool, opsional, defaultTrue) — Apakah akan mengembalikan UNet2DConditionOutput alih-alih tuple biasa. - cross_attention_kwargs (
dict, opsional) — Kamus kwargs yang jika ditentukan akan diteruskan keAttnProcessor. - 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 dariencoder_hidden_states. - encoder_attention_mask_1 (
torch.Tensor, opsional) — Mask cross-attention dengan bentuk(batch, sequence_length_2)diterapkan padaencoder_hidden_states_1. JikaTrue, mask dipertahankan, sedangkan jikaFalse, 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
< source >( audios: ndarray )
Kelas output untuk pipeline audio.