Buckets:

mishig's picture
|
download
raw
41.6 kB

AudioLDM 2

AudioLDM 2, Haohe Liu ve diğerleri tarafından AudioLDM 2: Learning Holistic Audio Generation with Self-supervised Pretraining makalesinde önerilmiştir. AudioLDM 2, bir metin komutunu girdi olarak alır ve buna karşılık gelen sesi tahmin eder. Metin koşullu ses efektleri, insan konuşması ve müzik üretebilir.

Stable Diffusion'dan ilham alan AudioLDM 2, metin gömlemlerinden sürekli ses temsilleri öğrenen bir metinden sese latent difüzyon modeli (LDM)'dir. Girdi olarak verilen istemden metin gömlemlerini hesaplamak için iki metin kodlayıcı modeli kullanılır: CLAP'ın metin dalı ve Flan-T5'in kodlayıcısı. Bu metin gömlemleri, ardından bir AudioLDM2ProjectionModel tarafından paylaşılan bir gömme uzayına yansıtılır. Yansıtılmış CLAP ve Flan-T5 gömlemlerine koşullu olarak, sekiz yeni gömme vektörünü otoregresif olarak tahmin etmek için bir GPT2 doğal dil modeli (LM) kullanılır. Üretilen gömme vektörleri ve Flan-T5 metin gömlemleri, LDM'de çapraz dikkat koşullandırması olarak kullanılır. AudioLDM 2'nin UNet'i, çoğu diğer LDM'de olduğu gibi tek bir çapraz dikkat koşullandırması yerine iki çapraz dikkat gömmesi alması bakımından benzersizdir.

Makalenin özeti aşağıdaki gibidir:

Her ne kadar ses üretimi, konuşma, müzik ve ses efektleri gibi farklı ses türleri arasında ortak noktalar paylaşıyor olsa da, her tür için model tasarımı, diğer türlerden önemli ölçüde farklılık gösterebilen belirli hedeflerin ve önyargıların dikkatli bir şekilde ele alınmasını gerektirir. Ses üretimine yönelik birleşik bir bakış açısına daha yaklaştırmak için bu makale, konuşma, müzik ve ses efekti üretiminde aynı öğrenme yöntemini kullanan bir çerçeve önermektedir. Çerçevemiz, "ses dili" (LOA) olarak adlandırılan genel bir ses temsili tanıtır. Herhangi bir ses, kendiliğinden denetimli ön eğitilmiş temsil öğrenme modeli olan AudioMAE'ye dayalı olarak LOA'ya çevrilebilir. Üretim sürecinde, herhangi bir modaliteyi bir GPT-2 modeli kullanarak LOA'ya çeviriyor ve LOA'ya koşullu bir latent difüzyon modeliyle kendiliğinden denetimli ses üretimi öğrenimi gerçekleştiriyoruz. Önerilen çerçeve, bağlam içi öğrenme yetenekleri ve yeniden kullanılabilir kendiliğinden denetimli ön eğitilmiş AudioMAE ve latent difüzyon modelleri gibi avantajları doğal olarak beraberinde getirir. Metinden sese, metinden müziğe ve metinden konuşmaya yönelik ana referans testlerinde yapılan deneyler, önceki yaklaşımlara karşı en iyi veya rekabetçi performans göstermektedir. Kodumuz, ön eğitilmiş modelimiz ve demo bu https URL'de mevcuttur.

Bu pipeline sanchit-gandhi ve Nguyễn Công Tú Anh tarafından katkı sağlanmıştır. Orijinal kod tabanı haoheliu/audioldm2 adresinde bulunabilir.

İpuçları

Kontrol noktası seçimi

AudioLDM2 üç varyant olarak sunulur. Bu checkpoint'lerden ikisi genel metinden ses üretimi görevine uygundur. Üçüncü checkpoint yalnızca metinden müzik üretimi üzerinde eğitilmiştir.

Tüm checkpoint'ler, metin kodlayıcılar ve VAE için aynı model boyutunu paylaşır. UNet'in boyutu ve derinliğinde farklılık gösterirler. Üç checkpoint hakkında ayrıntılar için aşağıdaki tabloya bakın:

Kontrol Noktası Görev UNet Model Boyutu Toplam Model Boyutu Eğitim Verisi / s
audioldm2 Metinden sese 350M 1.1B 1150k
audioldm2-large Metinden sese 750M 1.5B 1150k
audioldm2-music Metinden müziğe 350M 1.1B 665k
audioldm2-gigaspeech Metinden ses 350M 1.1B 10k
audioldm2-ljspeech Metinden ses 350M 1.1B

Bir istem oluşturma

  • Açıklayıcı prompt girdileri en iyi sonucu verir: sesi tanımlamak için sıfatlar kullanın (ör. "yüksek kaliteli" veya "net") ve promptu bağlama özgü hale getirin (ör. "akış" yerine "orman içindeki su akıntısı").
  • Modelin aşina olmayabileceği belirli isimler veya soyut nesneler yerine "kedi" veya "köpek" gibi genel terimler kullanmak en iyisidir.
  • negatif istem kullanmak, düşük kaliteli sesle ilişkilendirilen terimlerden uzaklaşarak üretilen dalga formunun kalitesini önemli ölçüde artırabilir. "Low quality." (Düşük kalite) gibi bir negatif istem kullanmayı deneyin.

Çıkarımı kontrol etme

  • Tahmin edilen ses örneğinin kalitesi, num_inference_steps argümanı ile kontrol edilebilir; daha yüksek adım sayısı, daha yavaş çıkarım maliyeti karşılığında daha yüksek kalitede ses sağlar.
  • Tahmin edilen ses örneğinin uzunluğu, audio_length_in_s argümanını değiştirerek kontrol edilebilir.

Üretilen dalga formlarının değerlendirilmesi:

  • Üretilen dalga formlarının kalitesi, tohum (seed) değerine bağlı olarak önemli ölçüde farklılık gösterebilir. Memnun edici bir üretim elde edene kadar farklı tohumlarla üretim yapmayı deneyin.
  • Birden fazla dalga formu tek seferde oluşturulabilir: num_waveforms_per_prompt değerini 1'den büyük bir değere ayarlayın. Oluşturulan dalga formları ile istem metni arasında otomatik puanlama yapılacak ve sesler buna göre en iyiden en kötüye sıralanacaktır.

Aşağıdaki örnek, yukarıda belirtilen ipuçlarını kullanarak iyi müzik ve konuşma üretiminin nasıl oluşturulacağını göstermektedir: örnek.

Scheduler'lar kılavuzunu inceleyerek scheduler hızı ve kalitesi arasındaki ödünleşimi nasıl keşfedebileceğinizi öğrenin ve aynı bileşenleri birden fazla pipeline'a nasıl verimli bir şekilde yükleyebileceğinizi öğrenmek için pipeline'lar arasında bileşenleri yeniden kullanma bölümüne göz atın.

AudioLDM2Pipeline[[diffusers.AudioLDM2Pipeline]]

diffusers.AudioLDM2Pipeline[[diffusers.AudioLDM2Pipeline]]

diffusers.AudioLDM2Pipeline(vae: AutoencoderKL, text_encoder: ClapModel, text_encoder_2: transformers.models.t5.modeling_t5.T5EncoderModel | transformers.models.vits.modeling_vits.VitsModel, projection_model: AudioLDM2ProjectionModel, language_model: GPT2LMHeadModel, tokenizer: RobertaTokenizer, tokenizer_2: transformers.models.t5.tokenization_t5.T5Tokenizer | transformers.models.vits.tokenization_vits.VitsTokenizer, feature_extractor: ClapFeatureExtractor, unet: AudioLDM2UNet2DConditionModel, scheduler: KarrasDiffusionSchedulers, vocoder: SpeechT5HifiGan)

Kaynak

Parametreler:

vae (AutoencoderKL) : Görüntüleri latent temsillere kodlamak ve bu temsillerden görüntülere çözmek için kullanılan Varyasyonel Oto-Kodlayıcı (VAE) modeli.

text_encoder (ClapModel) : İlk dondurulmuş metin kodlayıcı. AudioLDM2, ortak ses-metin gömme modeli olan CLAP'ı, özellikle laion/clap-htsat-unfused varyantını kullanır. Metin dalı, metin istemini bir istem gömümüne kodlamak için kullanılır. Tam ses-metin modeli, benzerlik puanları hesaplayarak üretilen dalga formlarını metin istemine göre sıralamak için kullanılır.

text_encoder_2 ([~transformers.T5EncoderModel, ~transformers.VitsModel]) : İkinci dondurulmuş metin kodlayıcı. AudioLDM2, T5 kodlayıcısını, özellikle google/flan-t5-large varyantını kullanır. TTS için kullanılan ikinci dondurulmuş metin kodlayıcı. AudioLDM2, Vits kodlayıcısını kullanır.

projection_model (AudioLDM2ProjectionModel) : Birinci ve ikinci metin kodlayıcı modellerinden gelen gizli durumları doğrusal olarak projekte etmek ve öğrenilmiş SOS ve EOS token gömme değerlerini eklemek için kullanılan eğitilmiş bir model. İki metin kodlayıcısından gelen projekte edilmiş gizli durumlar birleştirilerek dil modeline girdi olarak verilir. Vits gizli durumları için Öğrenilmiş Konum Gömme

language_model (GPT2Model) : İki metin kodlayıcısından gelen projeksiyonlu çıktılara koşullu olarak gizli durumlar dizisi üretmek için kullanılan otomatik regresif bir dil modelidir.

tokenizer (RobertaTokenizer) : İlk dondurulmuş metin kodlayıcısı için metni belirteçlere ayırmak üzere kullanılan belirteç ayırıcı.

tokenizer_2 ([~transformers.T5Tokenizer, ~transformers.VitsTokenizer]) : İkinci dondurulmuş metin kodlayıcısı için metni belirteçlere ayırmak (tokenize) için kullanılan belirteç ayırıcı (tokenizer).

feature_extractor (ClapFeatureExtractor) : Otomatik puanlama için üretilen ses dalga formlarını log-mel spektrogramlarına dönüştürmek üzere ön işleme yapan özellik çıkarıcı.

unet (UNet2DConditionModel) : Kodlanmış ses latentlerini gürültüden arındırmak için kullanılan bir UNet2DConditionModel.

scheduler (SchedulerMixin) : Kodlanmış ses latentlerini gürültüden arındırmak için unet ile birlikte kullanılacak bir zamanlayıcı. DDIMScheduler, LMSDiscreteScheduler veya PNDMScheduler olabilir.

vocoder (SpeechT5HifiGan) : Mel-spektrum latentlerini nihai ses dalgasına dönüştürmek için SpeechT5HifiGan sınıfından bir vokoder.

AudioLDM2 kullanılarak metinden ses üretimi için Pipeline.

Bu model DiffusionPipeline sınıfından devralınmıştır. Tüm pipeline'lar için uygulanan genel yöntemlerin (indirme, kaydetme, belirli bir cihazda çalıştırma vb.) belgelerini üst sınıfın dokümantasyonunda bulabilirsiniz.

call[[diffusers.AudioLDM2Pipeline.call]]

__call__(prompt: str | list[str] = None, transcription: str | list[str] = None, audio_length_in_s: float | None = None, num_inference_steps: int = 200, guidance_scale: float = 3.5, negative_prompt: str | list[str] | None = None, num_waveforms_per_prompt: int | None = 1, eta: float = 0.0, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, generated_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_generated_prompt_embeds: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.LongTensor] = None, negative_attention_mask: typing.Optional[torch.LongTensor] = None, max_new_tokens: int | None = None, return_dict: bool = True, callback: typing.Optional[typing.Callable[[int, int, torch.Tensor], NoneType]] = None, callback_steps: int | None = 1, cross_attention_kwargs: dict[str, typing.Any] | None = None, output_type: str | None = 'np')

Kaynak

Parametreler:

prompt (str veya list[str], isteğe bağlı) : Ses üretimini yönlendirmek için istem veya istemler. Tanımlanmadıysa, prompt_embeds parametresini iletmeniz gerekir.

transcription (str veya list[str], isteğe bağlı) --\ Metinden sese dönüştürme için transkript.

audio_length_in_s (int, isteğe bağlı, varsayılan 10.24) : Üretilen ses örneğinin saniye cinsinden uzunluğu.

num_inference_steps (int, isteğe bağlı, varsayılan 200) : Gürültü azaltma adım sayısı. Daha fazla gürültü azaltma adımı genellikle daha yavaş çıkarım pahasına daha yüksek ses kalitesi sağlar.

guidance_scale (float, opsiyonel, varsayılan 3.5) : Daha yüksek bir guidance scale değeri, modelin ses kalitesinin düşmesi pahasına, prompt ile yakından ilişkili ses üretmesini teşvik eder. Guidance scale, guidance_scale > 1 olduğunda etkinleştirilir.

negative_prompt (str veya list[str], isteğe bağlı) : Ses üretiminde nelerin dahil edilmeyeceğini yönlendirmek için istem veya istemler. Tanımlanmadıysa bunun yerine negative_prompt_embeds parametresini geçmeniz gerekir. Yönlendirme kullanılmadığında (guidance_scale < 1) yok sayılır.

num_waveforms_per_prompt (int, opsiyonel, varsayılan 1) : Her istem için üretilecek dalga formu sayısı. num_waveforms_per_prompt > 1 ise, üretilen çıktılar ile metin istemi arasında otomatik puanlama yapılır. Bu puanlama, üretilen dalga formlarını, ortak metin-ses gömme uzayında metin girdisiyle olan kosinüs benzerliklerine göre sıralar.

eta (float, isteğe bağlı, varsayılan 0.0) : DDIM makalesindeki eta (η) parametresine karşılık gelir. Yalnızca DDIMScheduler için geçerlidir ve diğer zamanlayıcılarda yok sayılır.

generator (torch.Generator veya list[torch.Generator], isteğe bağlı) : Üretimi deterministik hale getirmek için bir torch.Generator.

latents (torch.Tensor, isteğe bağlı) : Spektrogram üretimi için girdi olarak kullanılacak, Gauss dağılımından örneklenen önceden oluşturulmuş gürültülü latentler. Farklı istemlerle aynı üretimi ayarlamak için kullanılabilir. Sağlanmazsa, sağlanan rastgele generator kullanılarak örneklem yoluyla bir latentler tensörü oluşturulur.

prompt_embeds (torch.Tensor, isteğe bağlı) : Önceden oluşturulmuş metin gömme değerleri. Metin girdilerini (istek ağırlıklandırması) kolayca ayarlamak için kullanılabilir. Sağlanmazsa, metin gömme değerleri prompt girdi argümanından üretilir.

negative_prompt_embeds (torch.Tensor, isteğe bağlı) : Ön oluşturulmuş negatif metin gömme değerleri. Metin girdilerini (istek ağırlıklandırması) kolayca ayarlamak için kullanılabilir. Sağlanmazsa, negative_prompt_embeds, negative_prompt girdi argümanından üretilir.

generated_prompt_embeds (torch.Tensor, isteğe bağlı) : GPT2 dil modelinden önceden oluşturulmuş metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, ör. istem ağırlıklandırması. Sağlanmazsa, metin gömme değerleri prompt girdi argümanından oluşturulur.

negative_generated_prompt_embeds (torch.Tensor, isteğe bağlı) : GPT2 dil modelinden önceden oluşturulmuş negatif metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, ör. istem ağırlıklandırması. Sağlanmazsa, negative_prompt_embeds, negative_prompt girdi argümanından hesaplanır.

attention_mask (torch.LongTensor, isteğe bağlı) : prompt_embeds'e uygulanacak önceden hesaplanmış dikkat maskesi. Sağlanmazsa, dikkat maskesi prompt girdi argümanından hesaplanır.

negative_attention_mask (torch.LongTensor, isteğe bağlı) : negative_prompt_embeds'e uygulanacak önceden hesaplanmış dikkat maskesi. Sağlanmazsa, dikkat maskesi negative_prompt girdi argümanından hesaplanır.

max_new_tokens (int, isteğe bağlı, varsayılanı None) : GPT2 dil modeliyle üretilecek yeni token sayısı. Verilmezse, token sayısı modelin yapılandırmasından alınır.

return_dict (bool, isteğe bağlı, varsayılan True) : Düz bir tuple yerine StableDiffusionPipelineOutput döndürülüp döndürülmemesi.

callback (Callable, isteğe bağlı) : Çıkarım sırasında her callback_steps adımda çağrılan bir işlev. İşlev aşağıdaki argümanlarla çağrılır: callback(step: int, timestep: int, latents: torch.Tensor).

callback_steps (int, isteğe bağlı, varsayılan 1) : callback fonksiyonunun çağrılma sıklığı. Belirtilmezse, callback her adımda çağrılır.

cross_attention_kwargs (dict, isteğe bağlı) : Belirtilirse, self.processor içinde tanımlanan AttentionProcessor'ye aktarılan bir kwargs sözlüğü.

output_type (str, isteğe bağlı, varsayılan "np") : Üretilen sesin çıktı biçimi. NumPy np.ndarray döndürmek için "np" veya PyTorch torch.Tensor nesnesi döndürmek için "pt" arasında seçim yapın. Latent difüzyon modeli (LDM) çıktısını döndürmek için "latent" olarak ayarlayın.

Dönüş: StableDiffusionPipelineOutput veya tuple

return_dict True ise StableDiffusionPipelineOutput döndürülür, aksi halde ilk öğesi üretilen sesleri içeren bir liste olan bir tuple döndürülür.

Üretim için pipeline'ın çağrı fonksiyonu.

Örnekler:

>>> 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[[diffusers.AudioLDM2Pipeline.enable_model_cpu_offload]]

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

Kaynak

Offloads all models to CPU using accelerate, reducing memory usage with a low impact on performance. Compared to enable_sequential_cpu_offload, this method moves one whole model at a time to the GPU when its forward method is called, and the model remains in GPU until the next model runs. Memory savings are lower than with enable_sequential_cpu_offload, but performance is much better due to the iterative execution of the unet.

encode_prompt[[diffusers.AudioLDM2Pipeline.encode_prompt]]

encode_prompt(prompt, device, num_waveforms_per_prompt, do_classifier_free_guidance, transcription = None, negative_prompt = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, generated_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_generated_prompt_embeds: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.LongTensor] = None, negative_attention_mask: typing.Optional[torch.LongTensor] = None, max_new_tokens: int | None = None)

Kaynak

Parametreler:

prompt (str veya list[str], isteğe bağlı) : kodlanacak istem

transcription (str veya list[str]) : metinden sese transkripsiyon

device (torch.device) : torch cihaz

num_waveforms_per_prompt (int) : her istek için oluşturulması gereken dalga formu sayısı

do_classifier_free_guidance (bool) : sınıflandırıcı serbest yönlendirmenin (classifier free guidance) kullanılıp kullanılmayacağı

negative_prompt (str veya list[str], isteğe bağlı) : Ses üretimini yönlendirmemek için kullanılan istem veya istemler. Tanımlanmamışsa, bunun yerine negative_prompt_embeds parametresinin geçirilmesi gerekir. Yönlendirme kullanılmadığında (yani guidance_scale değeri 1'den küçükse) yok sayılır.

prompt_embeds (torch.Tensor, isteğe bağlı) : Flan T5 modelinden önceden hesaplanmış metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, ör. istem ağırlıklandırması. Sağlanmazsa, metin gömme değerleri prompt girdi argümanından hesaplanır.

negative_prompt_embeds (torch.Tensor, isteğe bağlı) : Flan T5 modelinden önceden hesaplanmış negatif metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, ör. istem ağırlıklandırması. Sağlanmazsa, negative_prompt_embeds, negative_prompt girdi argümanından hesaplanır.

generated_prompt_embeds (torch.Tensor, isteğe bağlı) : GPT2 dil modelinden önceden oluşturulmuş metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, ör. istem ağırlıklandırması. Sağlanmazsa, metin gömme değerleri prompt girdi argümanından oluşturulur.

negative_generated_prompt_embeds (torch.Tensor, isteğe bağlı) : GPT2 dil modelinden önceden oluşturulmuş negatif metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, ör. istem ağırlıklandırması. Sağlanmazsa, negative_prompt_embeds, negative_prompt girdi argümanından hesaplanır.

attention_mask (torch.LongTensor, isteğe bağlı) : prompt_embeds'e uygulanacak önceden hesaplanmış dikkat maskesi. Sağlanmazsa, dikkat maskesi prompt girdi argümanından hesaplanır.

negative_attention_mask (torch.LongTensor, isteğe bağlı) : negative_prompt_embeds'e uygulanacak önceden hesaplanmış dikkat maskesi. Sağlanmazsa, dikkat maskesi negative_prompt girdi argümanından hesaplanır.

max_new_tokens (int, isteğe bağlı, varsayılanı None) : GPT2 dil modeliyle üretilecek yeni token sayısı.

Dönüş: prompt_embeds (torch.Tensor)

Flan T5 modelinden metin gömlemleri. attention_mask (torch.LongTensor): prompt_embeds uygulaması için dikkat maskesi. generated_prompt_embeds (torch.Tensor): GPT2 dil modelinden üretilen metin gömlemleri.

İsteği metin kodlayıcı gizli durumlarına kodlar.

Örnek:

>>> 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[[diffusers.AudioLDM2Pipeline.generate_language_model]]

generate_language_model(inputs_embeds: Tensor = None, max_new_tokens: int = 8, **model_kwargs)

Kaynak

Parametreler:

inputs_embeds (torch.Tensor, şekli (batch_size, sequence_length, hidden_size)) : Üretim için istem (prompt) olarak kullanılan dizi.

max_new_tokens (int) : Üretilecek yeni token sayısı.

model_kwargs (dict[str, Any], isteğe bağlı) : Modelin forward fonksiyonuna iletilecek, modelle ilgili ek kwargs'ların ad hoc parametrelendirilmesi.

Dönüş: inputs_embeds (torch.Tensorof shape(batch_size, sequence_length, hidden_size)`)

Oluşturulan gizli durumların (hidden-states) dizisi.

Dil modelinden, gömme girdilerine koşullu olarak gizli durumlar dizisi üretir.

AudioLDM2ProjectionModel[[diffusers.AudioLDM2ProjectionModel]]

diffusers.AudioLDM2ProjectionModel[[diffusers.AudioLDM2ProjectionModel]]

diffusers.AudioLDM2ProjectionModel(text_encoder_dim, text_encoder_1_dim, langauge_model_dim, use_learned_position_embedding = None, max_seq_length = None)

Kaynak

Parametreler:

text_encoder_dim (int) : İlk metin kodlayıcısından (CLAP) gelen metin gömme boyutu.

text_encoder_1_dim (int) : İkinci metin kodlayıcısından (T5 veya VITS) gelen metin gömme boyutu.

langauge_model_dim (int) : Dil modelinden (GPT2) gelen metin gömme boyutu.

İki metin gömme vektörünü ortak bir gizli uzaya eşlemek için basit bir doğrusal projeksiyon modeli. Ayrıca, her metin gömme dizisinin başına ve sonuna sırasıyla öğrenilmiş gömme vektörleri ekler. _1 ekiyle biten her değişken, ikinci metin kodlayıcısına karşılık geleni ifade eder. Aksi halde, değişken birinci metin kodlayıcısına aittir.

forward[[diffusers.AudioLDM2ProjectionModel.forward]]

forward(hidden_states: typing.Optional[torch.Tensor] = None, hidden_states_1: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.LongTensor] = None, attention_mask_1: typing.Optional[torch.LongTensor] = None)

Kaynak

Parametreler:

hidden_states (torch.Tensor, şekli (batch_size, sequence_length, text_encoder_dim), isteğe bağlı) : İlk metin kodlayıcısından (CLAP) gelen metin gömme değerleri.

hidden_states_1 (torch.Tensor, şekli (batch_size, sequence_length_1, text_encoder_1_dim), isteğe bağlı) : İkinci metin kodlayıcısından (T5 veya VITS) gelen metin gömme değerleri.

attention_mask (torch.LongTensor, şekli (batch_size, sequence_length), isteğe bağlı) : hidden_states için dikkat maskesi.

attention_mask_1 (torch.LongTensor, şekli (batch_size, sequence_length_1), isteğe bağlı) : hidden_states_1 için dikkat maskesi.

Dönüş: AudioLDM2ProjectionModelOutput

Her iki metin kodlayıcısının da yansıtılmış metin gömme değerleri, diz boyutu boyunca birleştirilmiş hali ve bunların birleşik dikkat maskesi.

AudioLDM2UNet2DConditionModel[[diffusers.AudioLDM2UNet2DConditionModel]]

diffusers.AudioLDM2UNet2DConditionModel[[diffusers.AudioLDM2UNet2DConditionModel]]

diffusers.AudioLDM2UNet2DConditionModel(sample_size: int | None = None, in_channels: int = 4, out_channels: int = 4, flip_sin_to_cos: bool = True, freq_shift: int = 0, down_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] = False, block_out_channels: tuple = (320, 640, 1280, 1280), layers_per_block: int | tuple[int] = 2, downsample_padding: int = 1, mid_block_scale_factor: float = 1, act_fn: str = 'silu', norm_num_groups: int | None = 32, norm_eps: float = 1e-05, cross_attention_dim: int | tuple[int] = 1280, transformer_layers_per_block: int | tuple[int] = 1, attention_head_dim: int | tuple[int] = 8, num_attention_heads: int | tuple[int] | None = None, use_linear_projection: bool = False, class_embed_type: str | None = None, num_class_embeds: int | None = None, upcast_attention: bool = False, resnet_time_scale_shift: str = 'default', time_embedding_type: str = 'positional', time_embedding_dim: int | None = None, time_embedding_act_fn: str | None = None, timestep_post_act: str | None = None, time_cond_proj_dim: int | None = None, conv_in_kernel: int = 3, conv_out_kernel: int = 3, projection_class_embeddings_input_dim: int | None = None, class_embeddings_concat: bool = False)

Kaynak

Parametreler:

sample_size (int veya tuple[int, int], isteğe bağlı, varsayılan None) : Girdi/çıktı örneğinin yüksekliği ve genişliği.

in_channels (int, isteğe bağlı, varsayılan 4) : Girdi örneğindeki kanal sayısı.

out_channels (int, isteğe bağlı, varsayılan 4) : Çıktıdaki kanal sayısı.

flip_sin_to_cos (bool, isteğe bağlı, varsayılan False) : Zaman gömümünde sin'in cos'a çevrilip çevrilmeyeceğini belirtir.

freq_shift (int, isteğe bağlı, varsayılan 0) : Zaman gömümüne uygulanacak frekans kayması.

down_block_types (tuple[str], opsiyonel, varsayılan ("CrossAttnDownBlock2D", "CrossAttnDownBlock2D", "CrossAttnDownBlock2D", "DownBlock2D")) : Kullanılacak indirgeme bloklarının demeti.

mid_block_type (str, isteğe bağlı, varsayılan "UNetMidBlock2DCrossAttn") : UNet'in orta kısmı için blok türü, AudioLDM2 için yalnızca UNetMidBlock2DCrossAttn olabilir.

up_block_types (tuple[str], opsiyonel, varsayılan ("UpBlock2D", "CrossAttnUpBlock2D", "CrossAttnUpBlock2D", "CrossAttnUpBlock2D")) : Kullanılacak örnekleme bloklarının demeti.

only_cross_attention (bool veya tuple[bool], isteğe bağlı, varsayılan False) : Temel transformer bloklarında self-attention'ın dahil edilip edilmeyeceğini belirtir, bkz. BasicTransformerBlock.

block_out_channels (tuple[int], opsiyonel, varsayılan (320, 640, 1280, 1280)) : Her blok için çıktı kanalları demeti.

layers_per_block (int, isteğe bağlı, varsayılan 2) : Blok başına katman sayısı.

downsample_padding (int, isteğe bağlı, varsayılan 1) : Küçültme konvolüsyonu için kullanılacak dolgu.

mid_block_scale_factor (float, isteğe bağlı, varsayılan 1.0) : Orta blok için kullanılacak ölçekleme faktörü.

act_fn (str, isteğe bağlı, varsayılan "silu") : Kullanılacak aktivasyon fonksiyonu.

norm_num_groups (int, isteğe bağlı, varsayılan 32) : Normalizasyon için kullanılacak grup sayısı. None ise, işleme sonrası aşamasında normalizasyon ve aktivasyon katmanları atlanır.

norm_eps (float, opsiyonel, varsayılan 1e-5) : Normalizasyon için kullanılacak epsilon.

cross_attention_dim (int veya tuple[int], isteğe bağlı, varsayılan 1280) : Çapraz dikkat özelliklerinin boyutu.

transformer_layers_per_block (int veya tuple[int], isteğe bağlı, varsayılan 1) : BasicTransformerBlock türündeki transformer bloklarının sayısı. Yalnızca ~models.unet_2d_blocks.CrossAttnDownBlock2D, ~models.unet_2d_blocks.CrossAttnUpBlock2D, ~models.unet_2d_blocks.UNetMidBlock2DCrossAttn için geçerlidir.

attention_head_dim (int, isteğe bağlı, varsayılan 8) : Dikkat başlarının boyutu.

num_attention_heads (int, isteğe bağlı) : Dikkat başlarının sayısı. Tanımlanmamışsa, varsayılan olarak attention_head_dim değerini alır.

resnet_time_scale_shift (str, isteğe bağlı, varsayılan "default") : ResNet blokları için zaman ölçeği kaydırma yapılandırması (bkz. ResnetBlock2D). default veya scale_shift seçeneklerinden birini seçin.

class_embed_type (str, isteğe bağlı, varsayılan None) : Sonunda zaman gömme değerleriyle toplanan sınıf gömme türü. None, "timestep", "identity", "projection" veya "simple_projection" seçeneklerinden birini seçin.

num_class_embeds (int, isteğe bağlı, varsayılan None) : class_embed_type None olduğunda sınıf koşullandırması yapılırken time_embed_dim'e yansıtılacak öğrenilebilir gömme matrisinin giriş boyutu.

time_embedding_type (str, isteğe bağlı, varsayılan positional) : Zaman adımları için kullanılacak konum gömme türü. positional veya fourier seçeneklerinden birini seçin.

time_embedding_dim (int, isteğe bağlı, varsayılan None) : Projelendirilmiş zaman gömme boyutu için isteğe bağlı bir geçersiz kılma.

time_embedding_act_fn (str, isteğe bağlı, varsayılan None) : UNet'in geri kalanına aktarılmadan önce zaman gömme (time embeddings) üzerinde yalnızca bir kez kullanılacak isteğe bağlı aktivasyon fonksiyonu. silu, mish, gelu ve swish arasından seçim yapın.

timestep_post_act (str, isteğe bağlı, varsayılan None) : timestep gömme (embedding) içinde kullanılacak ikinci aktivasyon fonksiyonu. silu, mish ve gelu arasından seçim yapın.

time_cond_proj_dim (int, isteğe bağlı, varsayılan None) : timestep gömme içindeki cond_proj katmanının boyutu.

conv_in_kernel (int, isteğe bağlı, varsayılan 3) : conv_in katmanının çekirdek boyutu.

conv_out_kernel (int, isteğe bağlı, varsayılan 3) : conv_out katmanının çekirdek boyutu.

projection_class_embeddings_input_dim (int, isteğe bağlı) : class_embed_type="projection" olduğunda class_labels girdisinin boyutu. class_embed_type="projection" olduğunda zorunludur.

class_embeddings_concat (bool, isteğe bağlı, varsayılan False) : Zaman gömme vektörlerinin sınıf gömme vektörleriyle birleştirilip birleştirilmeyeceğini belirtir.

Gürültülü bir örnek, koşullu durum ve bir zaman adımı alıp örnek biçiminde bir çıktı döndüren koşullu 2D UNet modeli. Düz UNet2DConditionModel ile karşılaştırıldığında, bu varyant her Transformer bloğunda isteğe bağlı olarak ek bir öz-dikkat katmanı ve birden fazla çapraz-dikkat katmanı içerir. Ayrıca en fazla iki çapraz-dikkat gömme, encoder_hidden_states ve encoder_hidden_states_1, destekler.

Bu model ModelMixin sınıfından devralır. Tüm modeller için uygulanan genel yöntemlerini (indirme veya kaydetme gibi) görmek için üst sınıfın belgelendirmesine bakın.

forward[[diffusers.AudioLDM2UNet2DConditionModel.forward]]

forward(sample: Tensor, timestep: typing.Union[torch.Tensor, float, int], encoder_hidden_states: Tensor, class_labels: typing.Optional[torch.Tensor] = None, timestep_cond: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, cross_attention_kwargs: dict[str, typing.Any] | None = None, encoder_attention_mask: typing.Optional[torch.Tensor] = None, return_dict: bool = True, encoder_hidden_states_1: typing.Optional[torch.Tensor] = None, encoder_attention_mask_1: typing.Optional[torch.Tensor] = None)

Kaynak

Parametreler:

sample (torch.Tensor) : Şekli (batch, channel, height, width) olan gürültülü giriş tensörü.

timestep (torch.Tensor veya float veya int) : Bir girdinin gürültüsünü gidermek için kullanılacak zaman adımı sayısı.

encoder_hidden_states (torch.Tensor) : (batch, sequence_length, feature_dim) biçimindeki kodlayıcı gizli durumları.

encoder_attention_mask (torch.Tensor) : encoder_hidden_states üzerine (batch, sequence_length) biçiminde bir çapraz dikkat maskesi uygulanır. True ise maske korunur, aksi halde False ise atılır. Maske, "at" token'larına karşılık gelen dikkat puanlarına büyük negatif değerler ekleyen bir önyargıya dönüştürülür.

return_dict (bool, isteğe bağlı, varsayılan True) : Düz bir tuple yerine UNet2DConditionOutput döndürülecek mi?

cross_attention_kwargs (dict, isteğe bağlı) : Belirtilirse AttnProcessor'a iletilen bir kwargs sözlüğü.

encoder_hidden_states_1 (torch.Tensor, isteğe bağlı) : (batch, sequence_length_2, feature_dim_2) biçiminde, ikinci bir kodlayıcı gizli durumlar kümesi. Modeli, encoder_hidden_states'ten farklı bir gömme kümesine göre koşullandırmak için kullanılabilir.

encoder_attention_mask_1 (torch.Tensor, isteğe bağlı) : (batch, sequence_length_2) biçiminde bir çapraz dikkat maskesi, encoder_hidden_states_1 üzerine uygulanır. True ise maske korunur, aksi halde False ise atılır. Maske, "at" token'larına karşılık gelen dikkat puanlarına büyük negatif değerler ekleyen bir önyargıya dönüştürülür.

Dönüş: UNet2DConditionOutput veya tuple

return_dict True ise UNet2DConditionOutput döndürülür, aksi halde ilk öğesi örnek tensörü olan bir tuple döndürülür.

AudioLDM2UNet2DConditionModel ileri yöntemi.

AudioPipelineOutput[[diffusers.AudioPipelineOutput]]

diffusers.AudioPipelineOutput[[diffusers.AudioPipelineOutput]]

diffusers.AudioPipelineOutput(audios: ndarray)

Kaynak

Parametreler:

audios (np.ndarray) : (batch_size, num_channels, sample_rate) biçiminde bir NumPy dizisi olan gürültüsü azaltılmış ses örneklerinin listesi.

Ses boru hatları için çıktı sınıfı.

Xet Storage Details

Size:
41.6 kB
·
Xet hash:
dc2a1e331b8f0f78332e5f7f4cdaa29c75990ab518aeeb8c088acefab332ebe6

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.