# AudioLDM 2

AudioLDM 2, Haohe Liu ve diğerleri tarafından [AudioLDM 2: Learning Holistic Audio Generation with Self-supervised Pretraining](https://huggingface.co/papers/2308.05734) 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](https://huggingface.co/docs/diffusers/api/pipelines/stable_diffusion/overview)'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](https://huggingface.co/docs/transformers/main/en/model_doc/clap)'ın metin dalı ve [Flan-T5](https://huggingface.co/docs/transformers/main/en/model_doc/flan-t5)'in kodlayıcısı. Bu metin gömlemleri, ardından bir [AudioLDM2ProjectionModel](https://huggingface.co/docs/diffusers/main/api/pipelines/audioldm2#diffusers.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](https://huggingface.co/docs/transformers/main/en/model_doc/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](https://huggingface.co/docs/diffusers/main/en/api/pipelines/audioldm2#diffusers.AudioLDM2UNet2DConditionModel)'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](https://audioldm.github.io/audioldm2)'de mevcuttur.*

Bu pipeline [sanchit-gandhi](https://huggingface.co/sanchit-gandhi) ve [Nguyễn Công Tú Anh](https://github.com/tuanh123789) tarafından katkı sağlanmıştır. Orijinal kod tabanı [haoheliu/audioldm2](https://github.com/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](https://huggingface.co/cvssp/audioldm2)             | Metinden sese | 350M            | 1.1B             | 1150k             |
| [audioldm2-large](https://huggingface.co/cvssp/audioldm2-large) | Metinden sese | 750M            | 1.5B             | 1150k             |
| [audioldm2-music](https://huggingface.co/cvssp/audioldm2-music) | Metinden müziğe | 350M            | 1.1B             | 665k              |
| [audioldm2-gigaspeech](https://huggingface.co/anhnct/audioldm2_gigaspeech) | Metinden ses | 350M            | 1.1B             |10k              |
| [audioldm2-ljspeech](https://huggingface.co/anhnct/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](https://huggingface.co/docs/diffusers/main/en/api/pipelines/audioldm2#diffusers.AudioLDM2Pipeline.__call__.example).

> [!TIP]
> Scheduler'lar [kılavuzunu](../../using-diffusers/schedulers) 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](../../using-diffusers/loading#reusing-models-in-multiple-pipelines) bölümüne göz atın.

## AudioLDM2Pipeline[[diffusers.AudioLDM2Pipeline]]

#### diffusers.AudioLDM2Pipeline[[diffusers.AudioLDM2Pipeline]]

```python
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](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/audioldm2/pipeline_audioldm2.py#L150)

**Parametreler:**

vae ([AutoencoderKL](/docs/diffusers/main/tr/api/models/autoencoderkl#diffusers.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](https://huggingface.co/docs/transformers/main/en/model_doc/clap#transformers.ClapModel)) : İlk dondurulmuş metin kodlayıcı. AudioLDM2, ortak ses-metin gömme modeli olan [CLAP](https://huggingface.co/docs/transformers/model_doc/clap#transformers.CLAPTextModelWithProjection)'ı, özellikle [laion/clap-htsat-unfused](https://huggingface.co/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](https://huggingface.co/docs/transformers/model_doc/t5#transformers.T5EncoderModel) kodlayıcısını, özellikle [google/flan-t5-large](https://huggingface.co/google/flan-t5-large) varyantını kullanır. TTS için kullanılan ikinci dondurulmuş metin kodlayıcı. AudioLDM2, [Vits](https://huggingface.co/docs/transformers/model_doc/vits#transformers.VitsModel) kodlayıcısını kullanır.

projection_model ([AudioLDM2ProjectionModel](/docs/diffusers/main/tr/api/pipelines/audioldm2#diffusers.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](https://huggingface.co/docs/transformers/main/en/model_doc/gpt2#transformers.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](https://huggingface.co/docs/transformers/main/en/model_doc/led#transformers.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](https://huggingface.co/docs/transformers/main/en/model_doc/clap#transformers.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](/docs/diffusers/main/tr/api/models/unet2d-cond#diffusers.UNet2DConditionModel)) : Kodlanmış ses latentlerini gürültüden arındırmak için kullanılan bir `UNet2DConditionModel`.

scheduler ([SchedulerMixin](/docs/diffusers/main/tr/api/schedulers/overview#diffusers.SchedulerMixin)) : Kodlanmış ses latentlerini gürültüden arındırmak için `unet` ile birlikte kullanılacak bir zamanlayıcı. [DDIMScheduler](/docs/diffusers/main/tr/api/schedulers/ddim#diffusers.DDIMScheduler), [LMSDiscreteScheduler](/docs/diffusers/main/tr/api/schedulers/lms_discrete#diffusers.LMSDiscreteScheduler) veya [PNDMScheduler](/docs/diffusers/main/tr/api/schedulers/pndm#diffusers.PNDMScheduler) olabilir.

vocoder ([SpeechT5HifiGan](https://huggingface.co/docs/transformers/main/en/model_doc/speecht5#transformers.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](/docs/diffusers/main/tr/api/pipelines/overview#diffusers.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__]]

```python
__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](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/audioldm2/pipeline_audioldm2.py#L842)

**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](https://huggingface.co/papers/2010.02502) makalesindeki eta (η) parametresine karşılık gelir. Yalnızca [DDIMScheduler](/docs/diffusers/main/tr/api/schedulers/ddim#diffusers.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`](https://pytorch.org/docs/stable/generated/torch.Generator.html).

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](/docs/diffusers/main/tr/api/pipelines/stable_diffusion/img2img#diffusers.pipelines.stable_diffusion.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`](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py) 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](/docs/diffusers/main/tr/api/pipelines/stable_diffusion/img2img#diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput) veya `tuple`

`return_dict` `True` ise [StableDiffusionPipelineOutput](/docs/diffusers/main/tr/api/pipelines/stable_diffusion/img2img#diffusers.pipelines.stable_diffusion.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:
```py
>>> 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]]

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

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/audioldm2/pipeline_audioldm2.py#L226)

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]]

```python
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](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/audioldm2/pipeline_audioldm2.py#L329)

**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:

```python
>>> 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]]

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

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/audioldm2/pipeline_audioldm2.py#L276)

**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.Tensor` of 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]]

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

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/condition_embedders/condition_embedder_audioldm2.py#L60)

**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]]

```python
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](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/condition_embedders/condition_embedder_audioldm2.py#L104)

**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]]

```python
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](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/audioldm2/modeling_audioldm2.py#L45)

**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](/docs/diffusers/main/tr/api/models/unet2d-cond#diffusers.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](/docs/diffusers/main/tr/api/models/overview#diffusers.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]]

```python
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](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/audioldm2/modeling_audioldm2.py#L494)

**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](/docs/diffusers/main/tr/api/models/unet2d-cond#diffusers.models.unets.unet_2d_condition.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](/docs/diffusers/main/tr/api/models/unet2d-cond#diffusers.models.unets.unet_2d_condition.UNet2DConditionOutput) veya `tuple`

`return_dict` True ise [UNet2DConditionOutput](/docs/diffusers/main/tr/api/models/unet2d-cond#diffusers.models.unets.unet_2d_condition.UNet2DConditionOutput) döndürülür, aksi halde ilk öğesi örnek tensörü olan bir `tuple` döndürülür.

[AudioLDM2UNet2DConditionModel](/docs/diffusers/main/tr/api/pipelines/audioldm2#diffusers.AudioLDM2UNet2DConditionModel) ileri yöntemi.

## AudioPipelineOutput[[diffusers.AudioPipelineOutput]]

#### diffusers.AudioPipelineOutput[[diffusers.AudioPipelineOutput]]

```python
diffusers.AudioPipelineOutput(audios: ndarray)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/pipeline_utils.py#L149)

**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ı.

