Diffusers documentation

LongCat-AudioDiT

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

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_s adalah 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

< >

( vae: LongCatAudioDiTVaetext_encoder: UMT5EncoderModeltokenizer: PreTrainedTokenizerBasetransformer: LongCatAudioDiTTransformerscheduler: diffusers.schedulers.scheduling_flow_match_euler_discrete.FlowMatchEulerDiscreteScheduler | None = None )

__call__

< >

( 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 (str atau list[str]) — Prompt atau kumpulan prompt yang memandu generasi audio.
  • negative_prompt (str atau list[str], opsional) — Prompt negatif untuk classifier-free guidance.
  • audio_duration_s (float, opsional) — Durasi audio target dalam detik. Diabaikan saat latents disediakan.
  • 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.Generator atau list[torch.Generator], opsional) — Generator acak.
  • output_type (str, defaultnya "np") — Format output: "np", "pt", atau "latent".
  • return_dict (bool, defaultnya True) — Apakah akan mengembalikan AudioPipelineOutput.
  • callback_on_step_end (Callable, opsional) — Fungsi yang dipanggil di akhir setiap langkah denoising dengan pipeline, indeks langkah, timestep, dan input tensor yang ditentukan oleh callback_on_step_end_tensor_inputs.
  • callback_on_step_end_tensor_inputs (list, defaultnya ["latents"]) — Input tensor yang diteruskan ke callback_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

< >

( pretrained_model_name_or_path: str | os.PathLike**kwargs )

Parameter

  • pretrained_model_name_or_path (str atau os.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().
  • dtype (torch.dtype atau dict[str, Union[str, torch.dtype]], opsional) — Timpa torch.dtype bawaan dan muat model dengan dtype lain. Untuk memuat submodel dengan dtype yang berbeda, berikan dict (misalnya {'transformer': torch.bfloat16, 'vae': torch.float16}). Atur dtype bawaan untuk komponen yang tidak ditentukan dengan default (misalnya {'transformer': torch.bfloat16, 'default': torch.float16}). Jika suatu komponen tidak ditentukan dan tidak ada default yang diatur, torch.float32 akan 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_diffusion bukan clip_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 bernama pipeline.py yang mendefinisikan pipeline kustom.

    Untuk informasi lebih lanjut tentang cara memuat dan membuat pipeline kustom, silakan lihat Memuat dan Menambahkan Pipeline Kustom

  • force_download (bool, opsional, default False) — 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, defaultnya False) — Apakah akan mengembalikan juga kamus yang berisi kunci yang hilang, kunci yang tidak terduga, dan pesan kesalahan.
  • local_files_only (bool, opsional, default False) — Apakah hanya memuat bobot model dan file konfigurasi lokal atau tidak. Jika diatur ke True, model tidak akan diunduh dari Hub.
  • token (str atau bool, opsional) — Token yang digunakan sebagai otorisasi bearer HTTP untuk file jarak jauh. Jika True, token yang dihasilkan dari diffusers-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 dengan revision saat 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, hanya device_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 (str atau os.PathLike, opsional) — Path untuk meng-offload bobot jika device_map berisi nilai "disk".
  • offload_state_dict (bool, opsional) — Jika True, 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 default True jika ada disk offload.
  • low_cpu_mem_usage (bool, opsional, defaultnya True jika versi torch >= 1.9.0 selain itu False) — 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 ke True akan memicu error.
  • use_safetensors (bool, opsional, default None) — Jika diset ke None, bobot safetensors akan diunduh jika tersedia dan jika library safetensors terpasang. Jika diset ke True, model dipaksa dimuat dari bobot safetensors. Jika diset ke False, bobot safetensors tidak dimuat.
  • use_onnx (bool, opsional, defaultnya None) — Jika diset ke True, bobot ONNX akan selalu diunduh jika ada. Jika diset ke False, bobot ONNX tidak akan pernah diunduh. Secara default, use_onnx mengikuti atribut kelas _is_onnx yang bernilai False untuk pipeline non-ONNX dan True untuk pipeline ONNX. Bobot ONNX mencakup kedua file yang berakhiran .onnx dan .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
Update on GitHub