Diffusers documentation
LongCat-AudioDiT
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 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
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
sınıf diffusers.LongCatAudioDiTPipeline
< source >( vae: LongCatAudioDiTVaetext_encoder: UMT5EncoderModeltokenizer: PreTrainedTokenizerBasetransformer: LongCatAudioDiTTransformerscheduler: diffusers.schedulers.scheduling_flow_match_euler_discrete.FlowMatchEulerDiscreteScheduler | None = None )
__call__
< source >( prompt: str | list[str]negative_prompt: str | list[str] | None = Noneaudio_duration_s: float | None = Nonelatents: typing.Optional[torch.Tensor] = Nonenum_inference_steps: int = 16guidance_scale: float = 4.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Noneoutput_type: str = 'np'return_dict: bool = Truecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents'] ) → AudioPipelineOutput or tuple
Parametreler
- prompt (
strveyalist[str]) — Ses üretimini yönlendiren istem veya istemler. - negative_prompt (
strveyalist[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.latentssağ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ü latensler. - 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ı-özgür yönlendirme için yönlendirme ölçeği. - generator (
torch.Generatorveyalist[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ılanTrue) —AudioPipelineOutputdöndürülüp döndürülmemesi. - callback_on_step_end (
Callable, optional) — A function called at the end of each denoising step with the pipeline, step index, timestep, and tensor inputs specified bycallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list, varsayılan["latents"]) —callback_on_step_end'e iletilen girdi tensörleri.
Dönüş değeri
AudioPipelineOutput veya tuple
return_dict True ise 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:
>>> 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
< source >( pretrained_model_name_or_path: str | os.PathLike**kwargs )
Parametreler
- pretrained_model_name_or_path (
strveyaos.PathLike, isteğe bağlı) — Şu olabilir:- Hub'da barındırılan önceden eğitilmiş bir pipeline'ın repo id'si (örneğin
CompVis/ldm-text2im-large-256) olan bir dize. - save_pretrained() kullanılarak kaydedilen pipeline ağırlıklarını içeren bir dizin (örneğin
./my_pipeline_directory/) yoluna
- Hub'da barındırılan önceden eğitilmiş bir pipeline'ın repo id'si (örneğin
- dtype (
torch.dtypeveyadict[str, Union[str, torch.dtype]], isteğe bağlı) — Varsayılantorch.dtypedeğerini geçersiz kılar ve modeli başka bir dtype ile yükler. Alt modelleri farklı dtype'lerle yüklemek için birdictiletin (örneğin{'transformer': torch.bfloat16, 'vae': torch.float16}). Belirtilmeyen bileşenler için varsayılan dtype'idefaultile ayarlayın (örneğin{'transformer': torch.bfloat16, 'default': torch.float16}). Bir bileşen belirtilmemiş ve varsayılan bir değer ayarlanmamışsa,torch.float32kullanılır. - custom_pipeline (
str, isteğe bağlı) —> 🧪 Bu deneysel bir özelliktir ve gelecekte değişebilir.
Şunlardan biri olabilir:
- Bir dize, Hub üzerinde barındırılan özel bir hattın repo id'si (örneğin
hf-internal-testing/diffusers-dummy-pipeline). Depo, özel hattı tanımlayan pipeline.py adında bir dosya içermelidir. - Bir dize, GitHub'da Community altında barındırılan bir topluluk hattının dosya adı. Geçerli dosya adları, hattın betiği değil dosya adıyla eşleşmelidir (
clip_guided_stable_diffusion.pyyerineclip_guided_stable_diffusion). Topluluk hatları her zaman GitHub'ın güncel ana dalından yüklenir. - Özel bir pipeline içeren bir dizine (
./my_pipeline_directory/) giden yol. Dizin, özel pipeline'ı tanımlayanpipeline.pyadında bir dosya içermelidir.
Özel boru hatlarını nasıl yükleyip oluşturacağınız hakkında daha fazla bilgi için Özel Boru Hatlarını Yükleme ve Ekleme bölümüne göz atın.
- Bir dize, Hub üzerinde barındırılan özel bir hattın repo id'si (örneğin
- force_download (
bool, isteğe bağlı, varsayılanFalse) — 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ı) — Protokole veya uç noktaya göre 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, opsiyonel, varsayılan olarakFalse) — Eksik anahtarlar, beklenmeyen anahtarlar ve hata mesajlarını içeren bir sözlüğü de döndürülüp döndürülmeyeceğini belirtir. - local_files_only (
bool, isteğe bağlı, varsayılanFalse) — Yalnızca yerel model ağırlıkları ve yapılandırma dosyalarının yüklenip yüklenmeyeceğini belirtir.Trueolarak ayarlanırsa, model Hub'dan indirilmez. - token (
strveya bool, isteğe bağlı) — Uzak dosyalar için HTTP bearer yetkilendirmesi olarak kullanılacak jeton.Trueise,diffusers-cli loginile oluşturulan jeton (~/.huggingfaceiç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üklerkenrevisionile benzer şekilde bir dal adı, etiket adı veya commit kimliği olabilir. Varsayılan olarak en son kararlı 🤗 Diffusers sürümüdür. - mirror (
str, isteğe bağlı) — Çin'de bir model indirirken erişilebilirlik sorunlarını çözmek için kullanılacak ayna kaynağı. Kaynağın güncelliğini veya güvenliğini garanti etmiyoruz; daha fazla bilgi için lütfen ayna sitesine başvurun. - 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_mapdesteklenmektedir. Daha fazla bilgi için buraya 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 olur. - offload_folder (
strveyaos.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ı) —Trueise, CPU state dict + checkpoint'in en büyük shard'ı sığmıyorsa CPU RAM'inin dolmasını önlemek için CPU state dict'i geçici olarak sabit diske taşır. Disk offload varsa varsayılan olarakTrueolur. - low_cpu_mem_usage (
bool, isteğe bağlı, varsayılan olarak torch sürümü >= 1.9.0 iseTrue, aksi haldeFalse) — Modeli yalnızca önceden eğitilmiş ağırlıkları yükleyerek ve ağırlıkları başlatmadan yüklemeyi 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ıTrueolarak ayarlamak bir hata verecektir. - use_safetensors (
bool, isteğe bağlı, varsayılanNone) —Noneolarak ayarlanırsa, safetensors ağırlıkları mevcut ve safetensors kütüphanesi yüklüyse indirilir.Trueolarak ayarlanırsa, model zorla safetensors ağırlıklarından yüklenir.Falseolarak ayarlanırsa, safetensors ağırlıkları yüklenmez. - use_onnx (
bool, isteğe bağlı, varsayılanNone) —Trueolarak ayarlanırsa, mevcut ise ONNX ağırlıkları her zaman indirilir.Falseolarak ayarlanırsa, ONNX ağırlıkları asla indirilmez. Varsayılan olarakuse_onnx,_is_onnxsınıf özniteliğine eşittir; bu öznitelik ONNX olmayan hatlar içinFalse, ONNX hatlar için iseTruedeğerini alır. ONNX ağırlıkları,.onnxve.pbuzantılı her iki dosyayı da içerir. - kwargs (geri kalan anahtar kelime argümanları sözlüğü, isteğe bağlı) —
Yükleme ve kaydedilebilir 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ğı. Model bir ağ biriminde veya sabit diskte olduğunda, bu ortamın mmap'in sıklıkla konum değiştirme (seek) gerektiren doğası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.> Özel veya korumalı modelleri kullanmak için
hf > auth loginile oturum açın.
Örnekler:
>>> 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