Diffusers documentation
LongCat-AudioDiT
LongCat-AudioDiT
LongCat-AudioDiT adalah model difusi teks-ke-audio dari Meituan LongCat. Integrasi diffusers mengungkap antarmuka DiffusionPipeline standar untuk generasi audio yang dikondisikan oleh teks.
Pipeline ini diadaptasi dari implementasi referensi LongCat-AudioDiT: https://github.com/meituan-longcat/LongCat-AudioDiT
Pipeline ini mendukung pemuatan dari direktori lokal atau repositori Hugging Face Hub dalam format diffusers (mengandung subfolder text_encoder/, transformer/, vae/, tokenizer/, dan scheduler/).
Penggunaan
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)Tips
audio_duration_sadalah cara paling langsung untuk mengontrol durasi output.- Gunakan
generator=torch.Generator("cuda").manual_seed(42)untuk membuat proses generasi dapat direproduksi. - Bentuk output adalah
(batch, channels, samples)- gunakan.audios[0, 0]untuk mendapatkan satu sampel audio. - Pipeline menghasilkan audio mono (1 kanal). Jika Anda membutuhkan stereo, Anda dapat menduplikasi kanal:
audio.unsqueeze(0).repeat(1, 2, 1).
LongCatAudioDiTPipeline
kelas 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[str] = ['latents'] ) → AudioPipelineOutput or tuple
Parameter
- prompt (
strataulist[str]) — Prompt atau kumpulan prompt yang memandu generasi audio. - negative_prompt (
strataulist[str], opsional) — Prompt negatif untuk classifier-free guidance. - audio_duration_s (
float, opsional) — Durasi audio target dalam detik. Diabaikan saatlatentsdisediakan. - latents (
torch.Tensor, opsional) — Latents berisik yang telah dibuat sebelumnya dengan bentuk(batch_size, duration, latent_dim). - num_inference_steps (
int, default 16) — Jumlah langkah denoising. - guidance_scale (
float, default 4.0) — Skala panduan untuk classifier-free guidance. - generator (
torch.Generatorataulist[torch.Generator], opsional) — Generator acak. - output_type (
str, defaultnya"np") — Format output:"np","pt", atau"latent". - return_dict (
bool, defaultnyaTrue) — Apakah akan mengembalikanAudioPipelineOutput. - callback_on_step_end (
Callable, opsional) — Fungsi yang dipanggil di akhir setiap langkah denoising dengan pipeline, indeks langkah, timestep, dan input tensor yang ditentukan olehcallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list, defaultnya["latents"]) — Input tensor yang diteruskan kecallback_on_step_end.
Mengembalikan
AudioPipelineOutput atau tuple
AudioPipelineOutput jika return_dict bernilai True,
atau tuple jika tidak. Saat mengembalikan tuple, elemen pertama adalah waveform audio yang dihasilkan.
Fungsi yang dipanggil saat memanggil pipeline untuk generasi.
Contoh:
>>> 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 )
Parameter
- pretrained_model_name_or_path (
stratauos.PathLike, opsional) — Dapat berupa:- String, repo id (misalnya
CompVis/ldm-text2im-large-256) dari pipeline pretrained yang dihosting di Hub. - Path ke direktori (misalnya
./my_pipeline_directory/) yang berisi bobot pipeline yang disimpan menggunakan save_pretrained().
- String, repo id (misalnya
- dtype (
torch.dtypeataudict[str, Union[str, torch.dtype]], opsional) — Timpatorch.dtypebawaan dan muat model dengan dtype lain. Untuk memuat submodel dengan dtype yang berbeda, berikandict(misalnya{'transformer': torch.bfloat16, 'vae': torch.float16}). Atur dtype bawaan untuk komponen yang tidak ditentukan dengandefault(misalnya{'transformer': torch.bfloat16, 'default': torch.float16}). Jika suatu komponen tidak ditentukan dan tidak ada default yang diatur,torch.float32akan digunakan. - custom_pipeline (
str, opsional) —> 🧪 Ini adalah fitur eksperimental dan dapat berubah di masa depan.
Bisa berupa salah satu dari:
- String, repo id (misalnya
hf-internal-testing/diffusers-dummy-pipeline) dari pipeline kustom yang dihosting di Hub. Repositori harus berisi file bernama pipeline.py yang mendefinisikan pipeline kustom tersebut. - String, nama file dari pipeline komunitas yang dihosting di GitHub di bawah
Community. Nama file yang valid harus sesuai dengan nama file dan bukan skrip pipeline (
clip_guided_stable_diffusionbukanclip_guided_stable_diffusion.py). Pipeline komunitas selalu dimuat dari cabang main saat ini di GitHub. - Path ke direktori (
./my_pipeline_directory/) yang berisi pipeline kustom. Direktori tersebut harus berisi file bernamapipeline.pyyang mendefinisikan pipeline kustom.
Untuk informasi lebih lanjut tentang cara memuat dan membuat pipeline kustom, silakan lihat Memuat dan Menambahkan Pipeline Kustom
- String, repo id (misalnya
- force_download (
bool, opsional, defaultFalse) — Apakah akan memaksa (mengunduh ulang) bobot model dan file konfigurasi, menimpa versi yang sudah di-cache jika ada. - cache_dir (
Union[str, os.PathLike], opsional) — Path ke direktori tempat konfigurasi model pretrained yang diunduh di-cache jika cache standar tidak digunakan. - proxies (
Dict[str, str], opsional) — Kamus server proxy untuk digunakan berdasarkan protokol atau endpoint, misalnya,{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}. Proxy digunakan pada setiap permintaan. - output_loading_info(
bool, opsional, defaultnyaFalse) — Apakah akan mengembalikan juga kamus yang berisi kunci yang hilang, kunci yang tidak terduga, dan pesan kesalahan. - local_files_only (
bool, opsional, defaultFalse) — Apakah hanya memuat bobot model dan file konfigurasi lokal atau tidak. Jika diatur keTrue, model tidak akan diunduh dari Hub. - token (
stratau bool, opsional) — Token yang digunakan sebagai otorisasi bearer HTTP untuk file jarak jauh. JikaTrue, token yang dihasilkan daridiffusers-cli login(disimpan di~/.huggingface) akan digunakan. - revision (
str, opsional, default"main") — Versi model spesifik yang akan digunakan. Bisa berupa nama branch, nama tag, commit id, atau identifier apa pun yang diizinkan oleh Git. - custom_revision (
str, opsional) — Versi model spesifik yang akan digunakan. Ini bisa berupa nama branch, nama tag, atau commit id yang serupa denganrevisionsaat memuat pipeline kustom dari Hub. Secara default menggunakan versi 🤗 Diffusers stabil terbaru. - mirror (
str, opsional) — Sumber cermin untuk mengatasi masalah aksesibilitas jika Anda mengunduh model di Tiongkok. Kami tidak menjamin ketepatan waktu atau keamanan sumber, dan Anda harus merujuk ke situs cermin untuk informasi lebih lanjut. - device_map (
str, opsional) — Strategi yang menentukan bagaimana komponen-komponen berbeda dari sebuah pipeline harus ditempatkan pada perangkat yang tersedia. Saat ini, hanyadevice_map“balanced” yang didukung. Lihat ini untuk mengetahui lebih lanjut. - max_memory (
Dict, opsional) — Kamus pengidentifikasi perangkat untuk memori maksimum. Jika tidak diset, nilai defaultnya adalah memori maksimum yang tersedia untuk setiap GPU dan RAM CPU yang tersedia. - offload_folder (
stratauos.PathLike, opsional) — Path untuk meng-offload bobot jika device_map berisi nilai"disk". - offload_state_dict (
bool, opsional) — JikaTrue, state dict CPU akan di-offload sementara ke hard drive untuk menghindari kehabisan RAM CPU jika berat state dict CPU + shard terbesar dari checkpoint tidak muat. Nilainya secara defaultTruejika ada disk offload. - low_cpu_mem_usage (
bool, opsional, defaultnyaTruejika versi torch >= 1.9.0 selain ituFalse) — Percepat pemuatan model dengan hanya memuat bobot pretrained dan tidak menginisialisasi bobot. Ini juga berusaha untuk tidak menggunakan lebih dari 1x ukuran model di memori CPU (termasuk memori puncak) saat memuat model. Hanya didukung untuk PyTorch >= 1.9.0. Jika Anda menggunakan versi PyTorch yang lebih lama, mengatur argumen ini keTrueakan memicu error. - use_safetensors (
bool, opsional, defaultNone) — Jika diset keNone, bobot safetensors akan diunduh jika tersedia dan jika library safetensors terpasang. Jika diset keTrue, model dipaksa dimuat dari bobot safetensors. Jika diset keFalse, bobot safetensors tidak dimuat. - use_onnx (
bool, opsional, defaultnyaNone) — Jika diset keTrue, bobot ONNX akan selalu diunduh jika ada. Jika diset keFalse, bobot ONNX tidak akan pernah diunduh. Secara default,use_onnxmengikuti atribut kelas_is_onnxyang bernilaiFalseuntuk pipeline non-ONNX danTrueuntuk pipeline ONNX. Bobot ONNX mencakup kedua file yang berakhiran.onnxdan.pb. - kwargs (sisa kamus argumen kata kunci, opsional) —
Dapat digunakan untuk menimpa variabel load dan saveable (komponen pipeline dari kelas pipeline tertentu). Komponen yang ditimpa diteruskan langsung ke metode
__init__pipeline. Lihat contoh di bawah untuk informasi lebih lanjut. - variant (
str, opsional) — Muat bobot dari nama file varian yang ditentukan, seperti"fp16"atau"ema". - disable_mmap (‘bool’, opsional, default ‘False’) — Apakah akan menonaktifkan mmap saat memuat model Safetensors. Opsi ini dapat memberikan performa yang lebih baik ketika model berada pada network mount atau hard drive, yang mungkin tidak menangani sifat seeky dari mmap dengan baik.
Instansiasi pipeline difusi PyTorch dari bobot pipeline yang telah dilatih sebelumnya.
Pipeline diatur dalam mode evaluasi (model.eval()) secara default.
Jika Anda menerima pesan kesalahan di bawah ini, Anda perlu melakukan penyesuaian bobot untuk tugas turunan Anda:
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.> Untuk menggunakan model privat atau berpagar, masuk dengan
hf > auth login.
Contoh:
>>> 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