Diffusers documentation
AudioLDM 2
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 tabanlı olarak LOA'ya çevrilebilir. Üretim sürecinde, herhangi bir modaliteyi bir GPT-2 modeli kullanarak LOA'ya çeviriyor ve LOA 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 adresinde 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 kontrol noktaları, metin kodlayıcılar ve VAE için aynı model boyutunu paylaşır. UNet'in boyutu ve derinliğinde farklılık gösterirler. Üç kontrol noktasının 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 “cat” veya “dog” 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.” negatif istemini kullanmayı deneyin.
Çıkarımı kontrol etme
- Tahmin edilen ses örneğinin kalitesi,
num_inference_stepsargü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_sargü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_promptdeğ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
sınıf 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 )
Parametreler
- vae (AutoencoderKL) — Görselleri latent temsillere kodlamak ve bu temsillerden çö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 modelini CLAP kullanır, özellikle laion/clap-htsat-unfused varyantı. 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. İkinci dondurulmuş metin kodlayıcı TTS için kullanılır. 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 ile 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 projeksiyonlanmış çı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
unetile 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
SpeechT5HifiGansınıfından bir vokoder.
AudioLDM2 kullanılarak metinden ses üretimi için Pipeline.
Bu model DiffusionPipeline sınıfından devralı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__
< 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
Parametreler
- prompt (
strveyalist[str], isteğe bağlı) — Ses üretimini yönlendirmek için istem veya istemler. Tanımlanmadıysa,prompt_embedsparametresini iletmeniz gerekir. - transcription (
strveyalist[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, isteğe bağlı, varsayılan 3.5) — Daha yüksek bir guidance scale değeri, modelin ses kalitesinin düşmesi pahasına, metinpromptile yakından ilişkili ses üretmesini teşvik eder. Guidance scale,guidance_scale > 1olduğunda etkinleştirilir. - negative_prompt (
strveyalist[str], isteğe bağlı) — Ses üretiminde nelerin dahil edilmeyeceğini yönlendirmek için kullanılan istem veya istemler. Tanımlanmadıysa, bunun yerinenegative_prompt_embedsparametresini iletmeniz gerekir. Yönlendirme kullanılmadığında (guidance_scale < 1) yok sayılır. - num_waveforms_per_prompt (
int, isteğe bağlı, varsayılan 1) — Her prompt için üretilecek dalga formu sayısı.num_waveforms_per_prompt > 1ise, üretilen çıktılar ile metin promptu arasında otomatik puanlama yapılır. Bu puanlama, üretilen dalga formlarını, ortak metin-ses gömme uzayında metin girdisiyle 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.Generatorveyalist[torch.Generator], isteğe bağlı) — Üretimi deterministik hale getirmek için kullanılan birtorch.Generator. - latents (
torch.Tensor, isteğe bağlı) — Spektrum üretimi için girdi olarak kullanılacak, Gauss dağılımından örneklenen önceden oluşturulmuş gürültülü latensler. Farklı istemlerle aynı üretimi ayarlamak için kullanılabilir. Sağlanmazsa, sağlanan rastgelegeneratorkullanılarak örneklemeye dayalı bir latens tensörü oluşturulur. - prompt_embeds (
torch.Tensor, isteğe bağlı) — Önceden oluşturulmuş metin gömme değerleri. Metin girdilerini kolayca ayarlamak (istifade ağırlıklandırma) için kullanılabilir. Sağlanmazsa, metin gömme değerleripromptgirdi argümanından üretilir. - negative_prompt_embeds (
torch.Tensor, isteğe bağlı) — Önceden 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_promptgirdi argümanından üretilir. - generated_prompt_embeds (
torch.Tensor, isteğe bağlı) — GPT2 dil modelinden önceden oluşturulmuş metin gömümleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, ör. istem ağırlıklandırması. Sağlanmazsa, metin gömümleripromptgirdi 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_promptgirdi argümanından hesaplanır. - attention_mask (
torch.LongTensor, isteğe bağlı) —prompt_embedsuygulaması için önceden hesaplanmış dikkat maskesi. Sağlanmazsa, dikkat maskesipromptgirdi argümanından hesaplanır. - negative_attention_mask (
torch.LongTensor, isteğe bağlı) —negative_prompt_embedsiçin uygulanacak önceden hesaplanmış dikkat maskesi. Sağlanmazsa, dikkat maskesinegative_promptgirdi 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ılanTrue) — 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 hercallback_stepsadı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) —callbackişlevinin çağrılma sıklığı. Belirtilmezse, callback her adımda çağrılır. - cross_attention_kwargs (
dict, isteğe bağlı) — Belirtilirse,self.processoriçinde tanımlananAttentionProcessor'ye iletilen bir kwargs sözlüğü. - output_type (
str, isteğe bağlı, varsayılan"np") — Üretilen sesin çıktı biçimi. NumPynp.ndarraydöndürmek için"np"veya PyTorchtorch.Tensornesnesi döndürmek için"pt"seçin. Latent difüzyon modeli (LDM) çıktısını döndürmek için"latent"olarak ayarlayın.
Dönüş değeri
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
< source >( gpu_id: int | None = Nonedevice: typing.Union[torch.device, str] = 'cuda' )
Tüm modelleri accelerate kullanarak CPU'ya taşır ve performansa düşük etkiyle bellek kullanımını azaltır. enable_sequential_cpu_offload ile karşılaştırıldığında, bu yöntem bir modelin forward metodu çağrıldığında o modeli bir bütün olarak GPU'ya taşır ve model, bir sonraki model çalışana kadar GPU'da kalır. Bellek tasarrufu enable_sequential_cpu_offload ile karşılaştırıldığında daha düşüktür, ancak unet'in iteratif çalıştırılması sayesinde performans çok daha iyidir.
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)
Parametreler
- prompt (
strveyalist[str], isteğe bağlı) — kodlanacak prompt - transcription (
strveyalist[str]) — metinden sese dönüştürülecek metin - device (
torch.device) — torch cihazı - num_waveforms_per_prompt (
int) — her istem başına oluşturulması gereken dalga formu sayısı - do_classifier_free_guidance (
bool) — classifier free guidance kullanılacak mı - negative_prompt (
strveyalist[str], isteğe bağlı) — Ses üretimini yönlendirmemek için kullanılan istem veya istemler. Tanımlanmamışsa, bunun yerinenegative_prompt_embedsgeçirilmelidir. Yönlendirme kullanılmadığında yok sayılır (yaniguidance_scale1'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. prompt ağırlıklandırması. Sağlanmazsa, metin gömme değerleripromptgirdi 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_promptgirdi argümanından hesaplanır. - generated_prompt_embeds (
torch.Tensor, isteğe bağlı) — GPT2 dil modelinden önceden oluşturulmuş metin gömümleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, ör. istem ağırlıklandırması. Sağlanmazsa, metin gömümleripromptgirdi 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_promptgirdi argümanından hesaplanır. - attention_mask (
torch.LongTensor, isteğe bağlı) —prompt_embedsuygulaması için önceden hesaplanmış dikkat maskesi. Sağlanmazsa, dikkat maskesipromptgirdi argümanından hesaplanır. - negative_attention_mask (
torch.LongTensor, isteğe bağlı) —negative_prompt_embedsiçin uygulanacak önceden hesaplanmış dikkat maskesi. Sağlanmazsa, dikkat maskesinegative_promptgirdi 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üş değeri
prompt_embeds (torch.Tensor)
Flan T5 modelinden metin gömlemleri.
attention_mask (torch.LongTensor):
prompt_embeds üzerine uygulanacak 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
< source >( inputs_embeds: Tensor = Nonemax_new_tokens: int = 8**model_kwargs ) → inputs_embeds (torch.Tensorof shape(batch_size, sequence_length, hidden_size)`)
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) — Üretilmesi gereken yeni token sayısı. - model_kwargs (
dict[str, Any], isteğe bağlı) — Modelinforwardfonksiyonuna iletilecek, modelle ilgili ek kwargs'ların ad hoc parametrelendirilmesi.
Dönüş değeri
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
sınıf diffusers.AudioLDM2ProjectionModel
< source >( text_encoder_dimtext_encoder_1_dimlangauge_model_dimuse_learned_position_embedding = Nonemax_seq_length = None )
İ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 eklenen 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
< 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
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_statesiçin dikkat maskesi. - attention_mask_1 (
torch.LongTensor, şekli(batch_size, sequence_length_1), isteğe bağlı) —hidden_states_1için dikkat maskesi.
Dönüş değeri
AudioLDM2ProjectionModelOutput
Her iki metin kodlayıcısının da yansıtılmış metin gömme değerleri, diz boyutu boyunca birleştirilmiş hâli ve bunların birleşik dikkat maskesi.
AudioLDM2UNet2DConditionModel
sınıf 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 )
Parametreler
- sample_size (
intveyatuple[int, int], isteğe bağlı, varsayılanNone) — 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ılanFalse) — Zaman gömme işleminde 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 kaydırması. - down_block_types (
tuple[str], isteğe bağlı, varsayılan("CrossAttnDownBlock2D", "CrossAttnDownBlock2D", "CrossAttnDownBlock2D", "DownBlock2D")) — Kullanılacak örnekleme azaltma 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ızcaUNetMidBlock2DCrossAttnolabilir. - up_block_types (
tuple[str], isteğe bağlı, varsayılan("UpBlock2D", "CrossAttnUpBlock2D", "CrossAttnUpBlock2D", "CrossAttnUpBlock2D")) — Kullanılacak örnekleme bloklarının demeti. - only_cross_attention (
boolortuple[bool], isteğe bağlı, varsayılanFalse) — Temel transformer bloklarında öz-dikkatin (self-attention) dahil edilip edilmeyeceğini belirtir, bkz.BasicTransformerBlock. - block_out_channels (
tuple[int], isteğe bağlı, 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ı.Noneise, son işlemede normalizasyon ve aktivasyon katmanları atlanır. - norm_eps (
float, isteğe bağlı, varsayılan 1e-5) — Normalizasyon için kullanılacak epsilon. - cross_attention_dim (
intveyatuple[int], isteğe bağlı, varsayılan 1280) — Çapraz dikkat (cross attention) özelliklerinin boyutu. - transformer_layers_per_block (
intveyatuple[int], isteğe bağlı, varsayılan 1) —BasicTransformerBlocktüründeki transformer bloklarının sayısı. Yalnızca~models.unet_2d_blocks.CrossAttnDownBlock2D,~models.unet_2d_blocks.CrossAttnUpBlock2D,~models.unet_2d_blocks.UNetMidBlock2DCrossAttniç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 olarakattention_head_dimdeğerini alır. - resnet_time_scale_shift (
str, isteğe bağlı, varsayılan"default") — ResNet blokları için zaman ölçekli kaydırma yapılandırması (bkz.ResnetBlock2D).defaultveyascale_shiftseçeneklerinden birini seçin. - class_embed_type (
str, isteğe bağlı, varsayılanNone) — Zaman gömme değerleriyle nihai olarak toplanacak 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ılanNone) —class_embed_typeNoneolduğunda sınıf koşullandırması yapılırkentime_embed_dim'e yansıtılacak öğrenilebilir gömme matrisinin giriş boyutu. - time_embedding_type (
str, isteğe bağlı, varsayılanpositional) — Adımlar için kullanılacak konum gömme türü.positionalveyafourierseçeneklerinden birini seçin. - time_embedding_dim (
int, isteğe bağlı, varsayılanNone) — 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ılanNone) — UNet'in geri kalanına aktarılmadan önce zaman gömme (embedding) değerlerine yalnızca bir kez uygulanacak isteğe bağlı aktivasyon fonksiyonu.silu,mish,geluveswishseçeneklerinden birini seçin. - timestep_post_act (
str, isteğe bağlı, varsayılanNone) — Zaman adımı gömme (embedding) için kullanılacak ikinci aktivasyon fonksiyonu.silu,mishvegeluarasından seçim yapın. - time_cond_proj_dim (
int, isteğe bağlı, varsayılanNone) — Zaman adımı gömme (embedding) içindekicond_projkatmanının boyutu. - conv_in_kernel (
int, isteğe bağlı, varsayılan3) —conv_inkatmanının çekirdek boyutu. - conv_out_kernel (
int, isteğe bağlı, varsayılan3) —conv_outkatmanının çekirdek boyutu. - projection_class_embeddings_input_dim (
int, isteğe bağlı) —class_embed_type="projection"olduğundaclass_labelsgirdisinin boyutu.class_embed_type="projection"olduğunda zorunludur. - class_embeddings_concat (
bool, isteğe bağlı, varsayılanFalse) — 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 encoder_hidden_states ve encoder_hidden_states_1 olmak üzere en fazla iki çapraz-dikkat gömümüne izin verir.
Bu model ModelMixin sınıfından devralır. Tüm modeller için uygulanan genel yöntemleri (indirme veya kaydetme gibi) görmek için üst sınıfın belgelendirmesine bakın.
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
Parametreler
- sample (
torch.Tensor) — Aşağıdaki şekle sahip gürültülü giriş tensörü(batch, channel, height, width). - timestep (
torch.Tensorveyafloatveyaint) — 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’e(batch, sequence_length)biçiminde bir çapraz dikkat maskesi uygulanır.Trueise maske korunur, aksi haldeFalseise 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ılanTrue) — Düz bir tuple yerine UNet2DConditionOutput döndürülüp döndürülmemesi. - cross_attention_kwargs (
dict, isteğe bağlı) — BelirtilirseAttnProcessor'a iletilen bir kwargs sözlüğü. - encoder_hidden_states_1 (
torch.Tensor, isteğe bağlı) —encoder_hidden_states'e farklı bir gömme kümesine göre modeli koşullandırmak için kullanılabilen,(batch, sequence_length_2, feature_dim_2)biçiminde ikinci bir kodlayıcı gizli durumlar kümesi. - encoder_attention_mask_1 (
torch.Tensor, isteğe bağlı) —encoder_hidden_states_1’e(batch, sequence_length_2)biçiminde bir çapraz dikkat maskesi uygulanır.Trueise maske korunur, aksi haldeFalseise 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üş değeri
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
sınıf diffusers.AudioPipelineOutput
< source >( audios: ndarray )
Ses boru hatları için çıktı sınıfı.