# LongCat-AudioDiT

LongCat-AudioDiT, Meituan LongCat tarafından geliştirilen bir metinden sese difüzyon modelidir. Diffusers entegrasyonu, metin koşullu ses üretimi için standart bir [DiffusionPipeline](/docs/diffusers/main/tr/api/pipelines/overview#diffusers.DiffusionPipeline) arayüzü sunar.

Bu pipeline, LongCat-AudioDiT referans uygulamasından uyarlanmıştır: https://github.com/meituan-longcat/LongCat-AudioDiT

Bu pipeline, diffusers biçimindeki (içinde `text_encoder/`, `transformer/`, `vae/`, `tokenizer/` ve `scheduler/` alt klasörleri bulunan) yerel bir dizinden veya Hugging Face Hub deposundan yükleme destekler.

## Kullanım

```py
import soundfile as sf
import torch
from diffusers import LongCatAudioDiTPipeline

pipeline = LongCatAudioDiTPipeline.from_pretrained(
    "ruixiangma/LongCat-AudioDiT-1B-Diffusers",
    dtype=torch.float16,
)
pipeline = pipeline.to("cuda")  # or "mps", "xpu", "cpu"

prompt = "A calm ocean wave ambience with soft wind in the background."
audio = pipeline(
    prompt,
    audio_duration_s=5.0,
    num_inference_steps=16,
    guidance_scale=4.0,
    generator=torch.Generator("cuda").manual_seed(42),
).audios[0, 0]

sf.write("longcat.wav", audio, pipeline.sample_rate)
```

## İpuçları

- `audio_duration_s`, çıktı süresini kontrol etmenin en doğrudan yoludur.
- Üretim sürecini tekrarlanabilir kılmak için `generator=torch.Generator("cuda").manual_seed(42)` kullanın.
- Çıktı şekli `(batch, channels, samples)` - tek bir ses örneğini almak için `.audios[0, 0]` kullanın.
- Pipeline mono ses (1 kanal) çıktısı üretir. Stereo gerekiyorsa kanalı kopyalayabilirsiniz: `audio.unsqueeze(0).repeat(1, 2, 1)`.

## LongCatAudioDiTPipeline[[diffusers.LongCatAudioDiTPipeline]]

#### diffusers.LongCatAudioDiTPipeline[[diffusers.LongCatAudioDiTPipeline]]

```python
diffusers.LongCatAudioDiTPipeline(vae: LongCatAudioDiTVae, text_encoder: UMT5EncoderModel, tokenizer: PreTrainedTokenizerBase, transformer: LongCatAudioDiTTransformer, scheduler: diffusers.schedulers.scheduling_flow_match_euler_discrete.FlowMatchEulerDiscreteScheduler | None = None)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/longcat_audio_dit/pipeline_longcat_audio_dit.py#L99)

#### __call__[[diffusers.LongCatAudioDiTPipeline.__call__]]

```python
__call__(prompt: str | list[str], negative_prompt: str | list[str] | None = None, audio_duration_s: float | None = None, latents: typing.Optional[torch.Tensor] = None, num_inference_steps: int = 16, guidance_scale: float = 4.0, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, output_type: str = 'np', return_dict: bool = True, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list = ['latents'])
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/longcat_audio_dit/pipeline_longcat_audio_dit.py#L219)

**Parametreler:**

prompt (`str` veya `list[str]`) : Ses üretimini yönlendiren istem veya istemler.

negative_prompt (`str` veya `list[str]`, *isteğe bağlı*) : Sınıflandırıcı-ücretsiz yönlendirme için negatif istem(ler).

audio_duration_s (`float`, *isteğe bağlı*) : Saniye cinsinden hedef ses süresi. `latents` sağlandığında yok sayılır.

latents (`torch.Tensor`, *isteğe bağlı*) : `(batch_size, duration, latent_dim)` biçiminde önceden oluşturulmuş gürültülü latentler.

num_inference_steps (`int`, varsayılan 16) : Gürültü azaltma adım sayısı.

guidance_scale (`float`, varsayılan 4.0) : Sınıflandırıcı-ücretsiz yönlendirme için yönlendirme ölçeği.

generator (`torch.Generator` veya `list[torch.Generator]`, *isteğe bağlı*) : Rastgele üreteç(ler).

output_type (`str`, varsayılan `"np"`) : Çıktı biçimi: `"np"`, `"pt"` veya `"latent"`.

return_dict (`bool`, varsayılan `True`) : `AudioPipelineOutput` döndürülüp döndürülmeyeceğini belirtir.

callback_on_step_end (`Callable`, *isteğe bağlı*) : `callback_on_step_end_tensor_inputs` ile belirtilen pipeline, adım indeksi, timestep ve girdi tensörleriyle her gürültü azaltma adımının sonunda çağrılan bir işlev.

callback_on_step_end_tensor_inputs (`list`, varsayılan `["latents"]`) : `callback_on_step_end`'e geçirilen Tensor girdileri.

**Dönüş:** [AudioPipelineOutput](/docs/diffusers/main/tr/api/pipelines/audioldm2#diffusers.AudioPipelineOutput) veya `tuple`

`return_dict` True ise [AudioPipelineOutput](/docs/diffusers/main/tr/api/pipelines/audioldm2#diffusers.AudioPipelineOutput), aksi halde `tuple`. Tuple döndürüldüğünde, ilk öğe üretilen ses dalgasıdır.

Üretim için pipeline çağrıldığında tetiklenen işlev.

Örnekler:
```py
>>> import soundfile as sf
>>> import torch
>>> from diffusers import LongCatAudioDiTPipeline

>>> pipe = LongCatAudioDiTPipeline.from_pretrained("ruixiangma/LongCat-AudioDiT-1B-Diffusers")
>>> pipe.to("cuda")

>>> prompt = "A calm ocean wave ambience with soft wind in the background."
>>> audio = pipe(
...     prompt,
...     audio_duration_s=5.0,
...     num_inference_steps=20,
...     guidance_scale=4.0,
...     generator=torch.Generator("cuda").manual_seed(42),
... ).audios[0, 0]
>>> sf.write("output.wav", audio, pipe.sample_rate)
```

#### from_pretrained[[diffusers.LongCatAudioDiTPipeline.from_pretrained]]

```python
from_pretrained(pretrained_model_name_or_path: str | os.PathLike, **kwargs)
```

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

**Parametreler:**

pretrained_model_name_or_path (`str` veya `os.PathLike`, *isteğe bağlı*) : Şunlardan biri olabilir:  - Hub'da barındırılan önceden eğitilmiş bir pipeline'ın *repo kimliği* (örneğin `CompVis/ldm-text2im-large-256`) olan bir dize. - [save_pretrained()](/docs/diffusers/main/tr/api/pipelines/overview#diffusers.DiffusionPipeline.save_pretrained) kullanılarak kaydedilmiş pipeline ağırlıklarını içeren bir *dizin* yolu (örneğin `./my_pipeline_directory/`).

dtype (`torch.dtype` veya `dict[str, Union[str, torch.dtype]]`, *isteğe bağlı*) : Varsayılan `torch.dtype` değerini geçersiz kılar ve modeli başka bir dtype ile yükler. Alt modelleri farklı dtype'lerle yüklemek için bir `dict` iletin (örneğin `{'transformer': torch.bfloat16, 'vae': torch.float16}`). Belirtilmeyen bileşenler için varsayılan dtype değerini `default` ile ayarlayın (örneğin `{'transformer': torch.bfloat16, 'default': torch.float16}`). Bir bileşen belirtilmemiş ve varsayılan bir değer ayarlanmamışsa `torch.float32` kullanılır.

custom_pipeline (`str`, *isteğe bağlı*) : > [!WARNING] > 🧪 Bu deneysel bir özelliktir ve gelecekte değişebilir.  Şunlardan biri olabilir:  - Hub'da barındırılan özel bir pipeline'ın *repo kimliği* (örneğin `hf-internal-testing/diffusers-dummy-pipeline`) olan bir dize. Depo, özel pipeline'ı tanımlayan pipeline.py adında bir dosya içermelidir. - GitHub'da [Community](https://github.com/huggingface/diffusers/tree/main/examples/community) altında barındırılan bir topluluk pipeline'ının *dosya adı* olan bir dize. Geçerli dosya adları, pipeline betiği yerine dosya adıyla eşleşmelidir (`clip_guided_stable_diffusion.py` yerine `clip_guided_stable_diffusion`). Topluluk pipeline'ları her zaman GitHub'ın güncel ana dalından yüklenir. - Özel bir pipeline içeren bir dizine giden yol (`./my_pipeline_directory/`). Dizin, özel pipeline'ı tanımlayan `pipeline.py` adında bir dosya içermelidir.  Özel pipeline'ların nasıl yükleneceği ve oluşturulacağı hakkında daha fazla bilgi için [Özel Pipeline'ların Yüklenmesi ve Eklenmesi](https://huggingface.co/docs/diffusers/using-diffusers/custom_pipeline_overview) bölümüne göz atın

force_download (`bool`, *isteğe bağlı*, varsayılan `False`) : Model ağırlıklarının ve yapılandırma dosyalarının (yeniden) indirilmesinin zorlanıp zorlanmayacağını belirler; önbellekteki sürümler varsa bunların üzerine yazar.

cache_dir (`Union[str, os.PathLike]`, *isteğe bağlı*) : Standart önbellek kullanılmıyorsa, indirilen önceden eğitilmiş model yapılandırmasının önbelleğe alındığı dizinin yolu.

proxies (`Dict[str, str]`, *isteğe bağlı*) : Protokol veya uç nokta bazında kullanılacak vekil sunucuların sözlüğü, örneğin `{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}`. Vekiller her istekte kullanılır.

output_loading_info(`bool`, *isteğe bağlı*, varsayılan `False`) : Eksik anahtarlar, beklenmeyen anahtarlar ve hata mesajlarını içeren bir sözlüğün de döndürülüp döndürülmeyeceğini belirtir.

local_files_only (`bool`, *isteğe bağlı*, varsayılan `False`) : Sadece yerel model ağırlıklarının ve yapılandırma dosyalarının yüklenip yüklenmeyeceğini belirtir. `True` olarak ayarlanırsa, model Hub'dan indirilmez.

token (`str` veya *bool*, *isteğe bağlı*) : Uzaktaki dosyalar için HTTP bearer yetkilendirmesi olarak kullanılacak jeton. `True` ise, `diffusers-cli login` ile oluşturulan jeton (`~/.huggingface` içinde saklanır) kullanılır.

revision (`str`, *isteğe bağlı*, varsayılan `"main"`) : Kullanılacak belirli model sürümü. Bir dal adı, etiket adı, commit kimliği veya Git tarafından izin verilen herhangi bir tanımlayıcı olabilir.

custom_revision (`str`, *isteğe bağlı*) : Kullanılacak belirli model sürümü. Hub'dan özel bir pipeline yüklerken `revision` parametresine benzer şekilde bir dal adı, etiket adı veya commit kimliği olabilir. Varsayılan olarak en son kararlı 🤗 Diffusers sürümü kullanılır.

mirror (`str`, *isteğe bağlı*) : Çin'de bir model indirirken erişilebilirlik sorunlarını çözmek için ayna kaynağı. Kaynağın güncelliğini veya güvenliğini garanti etmiyoruz; daha fazla bilgi için ayna sitesine başvurmalısınız.

device_map (`str`, *isteğe bağlı*) : Bir pipeline'ın farklı bileşenlerinin kullanılabilir cihazlara nasıl yerleştirileceğini belirleyen strateji. Şu anda yalnızca "balanced" `device_map` desteklenmektedir. Daha fazla bilgi için [buraya](https://huggingface.co/docs/diffusers/main/en/tutorials/inference_with_big_models#device-placement) bakın.

max_memory (`Dict`, *isteğe bağlı*) : Maksimum bellek için bir sözlük cihaz tanımlayıcısı. Ayarlanmazsa, varsayılan olarak her GPU için kullanılabilir maksimum bellek ve kullanılabilir CPU RAM'i olacaktır.

offload_folder (`str` veya `os.PathLike`, *isteğe bağlı*) : `"disk"` değerini içeren bir device_map varsa, ağırlıkların taşınacağı yol.

offload_state_dict (`bool`, *isteğe bağlı*) : `True` ise, CPU durum sözlüğünün ağırlığı + checkpoint'in en büyük dilimi sığmıyorsa CPU RAM'inin dolmasını önlemek için CPU durum sözlüğü geçici olarak sabit diske aktarılır. Disk aktarımı varsa varsayılan olarak `True` değerine ayarlanır.

low_cpu_mem_usage (`bool`, *isteğe bağlı*, varsayılan olarak PyTorch sürümü >= 1.9.0 ise `True`, aksi halde `False`) : Ağırlıkları başlatmadan yalnızca önceden eğitilmiş ağırlıkları yükleyerek model yüklemesini hızlandırır. Bu, model yüklenirken (tepe bellek dahil) CPU belleğinde model boyutunun 1 katından fazlasını kullanmamaya da çalışır. Yalnızca PyTorch >= 1.9.0 için desteklenir. PyTorch'un daha eski bir sürümünü kullanıyorsanız, bu argümanı `True` olarak ayarlamak bir hata verecektir.

use_safetensors (`bool`, *isteğe bağlı*, varsayılan `None`) : `None` olarak ayarlanırsa, safetensors ağırlıkları mevcut **ve** safetensors kütüphanesi yüklüyse indirilir. `True` olarak ayarlanırsa, model zorla safetensors ağırlıklarından yüklenir. `False` olarak ayarlanırsa, safetensors ağırlıkları yüklenmez.

use_onnx (`bool`, *isteğe bağlı*, varsayılan `None`) : `True` olarak ayarlanırsa, mevcut olan ONNX ağırlıkları her zaman indirilir. `False` olarak ayarlanırsa, ONNX ağırlıkları asla indirilmez. Varsayılan olarak `use_onnx`, ONNX olmayan hatlar için `False` ve ONNX hatları için `True` olan `_is_onnx` sınıf özniteliğine ayarlanır. ONNX ağırlıkları, `.onnx` ve `.pb` ile biten her iki dosyayı da içerir.

kwargs (kalan anahtar kelime argümanları sözlüğü, *isteğe bağlı*) : Yüklenir ve kaydedilir değişkenleri (belirli pipeline sınıfının pipeline bileşenlerini) geçersiz kılmak için kullanılabilir. Geçersiz kılınan bileşenler doğrudan pipeline'ın `__init__` yöntemine iletilir. Daha fazla bilgi için aşağıdaki örneğe bakın.

variant (`str`, *isteğe bağlı*) : Ağırlıkları, `"fp16"` veya `"ema"` gibi belirtilen bir varyant dosya adından yükler.

disable_mmap ('bool', *isteğe bağlı*, varsayılan 'False') : Bir Safetensors modeli yüklenirken mmap'in devre dışı bırakılıp bırakılmayacağını belirtir. Model bir ağ biriminde veya sabit diskte olduğunda, bu ortamın mmap'in rastgele erişim (seek) davranışını iyi yönetememesi nedeniyle bu seçenek daha iyi performans gösterebilir.

Önceden eğitilmiş pipeline ağırlıklarından bir PyTorch difüzyon pipeline'ı örnekleyin.

Hattın varsayılan olarak değerlendirme modunda (`model.eval()`) ayarlanır.

Aşağıdaki hata mesajını alıyorsanız, aşağı akış göreviniz için ağırlıkları ince ayar yapmanız gerekir:

```
Some weights of UNet2DConditionModel were not initialized from the model checkpoint at stable-diffusion-v1-5/stable-diffusion-v1-5 and are newly initialized because the shapes did not match:
- conv_in.weight: found shape torch.Size([320, 4, 3, 3]) in the checkpoint and torch.Size([320, 9, 3, 3]) in the model instantiated
You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.
```

> [!TIP] > Özel veya [gated](https://huggingface.co/docs/hub/models-gated#gated-models) modelleri kullanmak için oturum açın
`hf > auth login` ile.

Örnekler:

```py
>>> from diffusers import DiffusionPipeline

>>> # Download pipeline from huggingface.co and cache.
>>> pipeline = DiffusionPipeline.from_pretrained("CompVis/ldm-text2im-large-256")

>>> # Download pipeline that requires an authorization token
>>> # For more information on access tokens, please refer to this section
>>> # of the documentation](https://huggingface.co/docs/hub/security-tokens)
>>> pipeline = DiffusionPipeline.from_pretrained("stable-diffusion-v1-5/stable-diffusion-v1-5")

>>> # Use a different scheduler
>>> from diffusers import LMSDiscreteScheduler

>>> scheduler = LMSDiscreteScheduler.from_config(pipeline.scheduler.config)
>>> pipeline.scheduler = scheduler
```

