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는 Meituan LongCat의 텍스트-오디오 확산 모델입니다. diffusers 통합은 텍스트 조건부 오디오 생성을 위한 표준 DiffusionPipeline 인터페이스를 제공합니다.

이 파이프라인은 LongCat-AudioDiT 참조 구현에서 수정되었습니다: https://github.com/meituan-longcat/LongCat-AudioDiT

이 파이프라인은 diffusers 형식(즉, text_encoder/, transformer/, vae/, tokenizer/, scheduler/ 하위 폴더를 포함하는 형식)의 로컬 디렉터리 또는 Hugging Face Hub 저장소에서 로드하는 것을 지원합니다.

사용

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)

팁

  • audio_duration_s은 출력 길이를 제어하는 가장 직접적인 방법입니다.
  • 생성을 재현 가능하게 하려면 generator=torch.Generator("cuda").manual_seed(42)를 사용하세요.
  • 출력 형상은 (batch, channels, samples)입니다 - .audios[0, 0]을 사용하여 단일 오디오 샘플을 가져올 수 있습니다.
  • pipeline은 모노 오디오(1채널)를 출력합니다. 스테레오가 필요하면 채널을 복제할 수 있습니다: audio.unsqueeze(0).repeat(1, 2, 1).

LongCatAudioDiTPipeline

클래스 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

매개변수

  • prompt (str 또는 list[str]) — 오디오 생성을 안내하는 프롬프트 또는 프롬프트 목록.
  • negative_prompt (str 또는 list[str], 선택 사항) — classifier-free guidance를 위한 negative prompt입니다.
  • audio_duration_s (float, 선택 사항) — 초 단위의 목표 오디오 길이입니다. latents가 제공되면 무시됩니다.
  • latents (torch.Tensor, 선택 사항) — (batch_size, duration, latent_dim) 모양의 사전 생성된 노이즈된 latents입니다.
  • num_inference_steps (int, 기본값 16) — 디노이징 단계 수.
  • guidance_scale (float, 기본값 4.0) — classifier-free guidance의 guidance scale입니다.
  • generator (torch.Generator 또는 list[torch.Generator], 선택 사항) — 랜덤 생성기입니다.
  • output_type (str, 기본값 "np") — 출력 형식: "np", "pt" 또는 "latent".
  • return_dict (bool, 기본값 True) — AudioPipelineOutput를 반환할지 여부.
  • callback_on_step_end (Callable, 선택 사항) — callback_on_step_end_tensor_inputs로 지정된 텐서 입력과 함께 파이프라인, 스텝 인덱스, 타임스텝을 인수로 받아 각 디노이징 스텝의 끝에서 호출되는 함수입니다.
  • callback_on_step_end_tensor_inputs (list, 기본값 ["latents"]) — callback_on_step_end에 전달되는 텐서 입력입니다.

반환값

AudioPipelineOutput 또는 tuple

return_dict가 True인 경우 AudioPipelineOutput, 그렇지 않으면 tuple입니다. tuple을 반환할 때 첫 번째 요소는 생성된 오디오 웨이브폼입니다.

생성을 위해 파이프라인을 호출할 때 호출되는 함수.

예:

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

매개변수

  • pretrained_model_name_or_path (str 또는 os.PathLike, 선택 사항) — 다음 중 하나일 수 있습니다:
    • Hub에 호스팅된 사전 학습된 파이프라인의 repo id(예: CompVis/ldm-text2im-large-256) 문자열
    • save_pretrained()를 사용하여 저장된 파이프라인 가중치가 포함된 디렉터리의 경로(예: ./my_pipeline_directory/)
  • dtype (torch.dtype 또는 dict[str, Union[str, torch.dtype]], 선택 사항) — 기본 torch.dtype를 재정의하여 다른 dtype로 모델을 로드합니다. 서브모델을 서로 다른 dtype로 로드하려면 dict를 전달합니다(예: {'transformer': torch.bfloat16, 'vae': torch.float16}). 지정되지 않은 구성 요소의 기본 dtype는 default로 설정합니다(예: {'transformer': torch.bfloat16, 'default': torch.float16}). 구성 요소가 지정되지 않았고 기본값도 설정되지 않은 경우, torch.float32가 사용됩니다.
  • custom_pipeline (str, 선택 사항) —

    > 🧪 이는 실험적 기능이며 향후 변경될 수 있습니다.

    다음 중 하나일 수 있습니다:

    • Hub에 호스팅된 커스텀 파이프라인의 repo id(예: hf-internal-testing/diffusers-dummy-pipeline)를 나타내는 문자열입니다. 저장소에는 커스텀 파이프라인을 정의하는 pipeline.py 파일이 포함되어야 합니다.
    • 문자열이며, GitHub의 Community 아래에 호스팅된 커뮤니티 파이프라인의 파일 이름입니다. 유효한 파일 이름은 파이프라인 스크립트가 아닌 파일 이름과 일치해야 합니다(clip_guided_stable_diffusion.py가 아닌 clip_guided_stable_diffusion). 커뮤니티 파이프라인은 항상 GitHub의 현재 main 브랜치에서 로드됩니다.
    • 커스텀 파이프라인이 포함된 디렉터리(./my_pipeline_directory/)의 경로입니다. 해당 디렉터리에는 커스텀 파이프라인을 정의하는 pipeline.py 파일이 포함되어 있어야 합니다.

    커스텀 파이프라인을 로드하고 만드는 방법에 대한 자세한 내용은 커스텀 파이프라인 로드 및 추가를 참고하세요.

  • force_download (bool, 선택 사항, 기본값 False) — 모델 가중치 및 구성 파일의 (재)다운로드를 강제할지 여부입니다. 캐시된 버전이 존재하는 경우 이를 무시합니다.
  • cache_dir (Union[str, os.PathLike], 선택) — 표준 캐시를 사용하지 않을 경우, 다운로드된 사전 학습 모델 구성이 캐시되는 디렉터리의 경로입니다.
  • proxies (Dict[str, str], 선택) — 프로토콜 또는 엔드포인트별로 사용할 프록시 서버의 사전입니다. 예를 들어, {'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}와 같습니다. 각 요청 시 프록시가 사용됩니다.
  • output_loading_info(bool, optional, 기본값 False) — 누락된 키, 예상치 못한 키 및 오류 메시지를 포함하는 사전도 함께 반환할지 여부.
  • local_files_only (bool, 선택 사항, 기본값 False) — 로컬 모델 가중치 및 구성 파일만 로드할지 여부를 지정합니다. True로 설정하면 Hub에서 모델을 다운로드하지 않습니다.
  • token (str 또는 bool, 선택 사항) — 원격 파일에 대한 HTTP bearer 인증으로 사용할 토큰입니다. True인 경우, diffusers-cli login에서 생성된 토큰(~/.huggingface에 저장됨)이 사용됩니다.
  • revision (str, 선택 사항, 기본값 "main") — 사용할 특정 모델 버전입니다. Git에서 허용하는 브랜치 이름, 태그 이름, 커밋 ID 또는 기타 식별자일 수 있습니다.
  • custom_revision (str, 선택 사항) — 사용할 특정 모델 버전입니다. Hub에서 커스텀 파이프라인을 로드할 때 revision과 유사하게 브랜치 이름, 태그 이름 또는 커밋 ID를 사용할 수 있습니다. 기본값은 최신 안정 버전의 🤗 Diffusers입니다.
  • mirror (str, 선택 사항) — 중국에서 모델을 다운로드할 때 접근성 문제를 해결하기 위한 미러 소스입니다. 소스의 적시성이나 안전성을 보장하지 않으며, 자세한 정보는 해당 미러 사이트를 참고하세요.
  • device_map (str, 선택 사항) — pipeline의 각 구성 요소를 사용 가능한 장치에 배치하는 방식을 결정하는 전략입니다. 현재 “balanced” device_map만 지원됩니다. 자세한 내용은 여기를 참고하세요.
  • max_memory (Dict, 선택 사항) — 최대 메모리에 대한 디바이스 식별자를 나타내는 사전입니다. 설정되지 않으면 각 GPU의 사용 가능한 최대 메모리와 사용 가능한 CPU RAM이 기본값으로 사용됩니다.
  • offload_folder (str 또는 os.PathLike, 선택 사항) — "disk" 값을 포함하는 device_map의 경우, 가중치를 오프로드할 경로입니다.
  • offload_state_dict (bool, 선택 사항) — True인 경우, CPU state dict의 가중치와 체크포인트의 가장 큰 샤드가 함께 CPU RAM에 맞지 않을 때 RAM 부족을 방지하기 위해 CPU state dict를 임시로 하드 드라이브로 오프로드합니다. 디스크 오프로드가 있는 경우 기본값은 True입니다.
  • low_cpu_mem_usage (bool, 선택 사항, torch 버전이 1.9.0 이상이면 기본값은 True, 그 외에는 False) — 가중치를 초기화하지 않고 사전 학습된 가중치만 로드하여 모델 로딩 속도를 높입니다. 또한 모델 로딩 중 CPU 메모리(피크 메모리 포함)를 모델 크기의 1배를 초과하지 않도록 시도합니다. PyTorch 1.9.0 이상에서만 지원됩니다. PyTorch의 이전 버전을 사용하는 경우 이 인수를 True로 설정하면 오류가 발생합니다.
  • use_safetensors (bool, 선택 사항, 기본값 None) — None으로 설정하면, safetensors 가중치가 사용 가능하고 그리고 safetensors 라이브러리가 설치된 경우에만 safetensors 가중치가 다운로드됩니다. True로 설정하면 모델이 safetensors 가중치에서 강제 로드됩니다. False로 설정하면 safetensors 가중치가 로드되지 않습니다.
  • use_onnx (bool, 선택 사항, 기본값 None) — True로 설정하면 ONNX 가중치가 존재하는 경우 항상 다운로드됩니다. False로 설정하면 ONNX 가중치는 절대 다운로드되지 않습니다. 기본적으로 use_onnx는 _is_onnx 클래스 속성의 기본값을 따르며, 이는 ONNX가 아닌 파이프라인의 경우 False, ONNX 파이프라인의 경우 True입니다. ONNX 가중치에는 .onnx 및 .pb로 끝나는 두 가지 파일이 모두 포함됩니다.
  • kwargs (나머지 키워드 인자 사전, 선택 사항) — 특정 파이프라인 클래스의 파이프라인 구성 요소인 로드 및 저장 가능 변수를 덮어쓸 수 있습니다. 덮어쓴 구성 요소는 파이프라인의 __init__ 메서드에 직접 전달됩니다. 자세한 내용은 아래 예시를 참조하세요.
  • variant (str, 선택 사항) — "fp16" 또는 "ema"와 같이 지정된 variant 파일 이름에서 가중치를 로드합니다.
  • disable_mmap (‘bool’, 선택 사항, 기본값 ‘False’) — Safetensors 모델을 로드할 때 mmap을 비활성화할지 여부입니다. 네트워크 마운트나 하드 드라이브에 모델이 있는 경우 mmap의 seek 동작을 잘 처리하지 못할 수 있으므로, 이 옵션을 사용하면 성능이 더 좋아질 수 있습니다.

PyTorch 확산 파이프라인을 사전 학습된 파이프라인 가중치에서 초기화합니다.

파이프라인은 기본적으로 평가 모드(model.eval())로 설정됩니다.

아래와 같은 오류 메시지가 표시되면 다운스트림 작업을 위해 가중치를 미세 조정해야 합니다:

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.

> 비공개 또는 게이트된 모델을 사용하려면 hf > auth login으로 로그인하세요.

예:

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