Diffusers documentation

LongCat-AudioDiT

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.43.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

LongCat-AudioDiT

LongCat-AudioDiT é um modelo de difusão de texto para áudio da Meituan LongCat. A integração com diffusers expõe uma interface padrão DiffusionPipeline para geração de áudio condicionada por texto.

Este pipeline foi adaptado da implementação de referência do LongCat-AudioDiT: https://github.com/meituan-longcat/LongCat-AudioDiT

Este pipeline suporta o carregamento a partir de um diretório local ou de um repositório do Hugging Face Hub no formato diffusers (contendo as subpastas text_encoder/, transformer/, vae/, tokenizer/ e scheduler/).

Uso

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)

Dicas

  • audio_duration_s é a maneira mais direta de controlar a duração da saída.
  • Use generator=torch.Generator("cuda").manual_seed(42) para tornar a geração reproduzível.
  • A forma de saída é (batch, channels, samples) - use .audios[0, 0] para obter uma única amostra de áudio.
  • O pipeline gera áudio mono (1 canal). Se você precisar de estéreo, pode duplicar o canal: audio.unsqueeze(0).repeat(1, 2, 1).

LongCatAudioDiTPipeline

classe 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

Parâmetros

  • prompt (str ou list[str]) — Prompt ou prompts que orientam a geração de áudio.
  • negative_prompt (str ou list[str], opcional) — Prompt(s) negativo(s) para orientação sem classificador.
  • audio_duration_s (float, opcional) — Duração alvo do áudio em segundos. Ignorado quando latents é fornecido.
  • latents (torch.Tensor, opcional) — Latentes ruidosos pré-gerados com forma (batch_size, duration, latent_dim).
  • num_inference_steps (int, padrão 16) — Número de etapas de desruido.
  • guidance_scale (float, padrão 4.0) — Escala de orientação para orientação sem classificador.
  • generator (torch.Generator ou list[torch.Generator], opcional) — Gerador(es) aleatório(s).
  • output_type (str, padrão "np") — Formato de saída: "np", "pt" ou "latent".
  • return_dict (bool, padrão True) — Se deve retornar AudioPipelineOutput.
  • callback_on_step_end (Callable, opcional) — Uma função chamada no final de cada etapa de desruidamento com o pipeline, índice da etapa, timestep e entradas de tensor especificadas por callback_on_step_end_tensor_inputs.
  • callback_on_step_end_tensor_inputs (list, padrão ["latents"]) — Entradas de tensor passadas para callback_on_step_end.

Retorna

AudioPipelineOutput ou tuple

AudioPipelineOutput se return_dict for True, caso contrário, uma tuple. Ao retornar uma tupla, o primeiro elemento é a forma de onda de áudio gerada.

Função invocada ao chamar o pipeline para geração.

Exemplos:

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

Parâmetros

  • pretrained_model_name_or_path (str ou os.PathLike, opcional) — Pode ser:
    • Uma string, o repo id (por exemplo, CompVis/ldm-text2im-large-256) de um pipeline pré-treinado hospedado no Hub.
    • Um caminho para um diretório (por exemplo, ./my_pipeline_directory/) contendo pesos de pipeline salvos usando save_pretrained().
  • dtype (torch.dtype ou dict[str, Union[str, torch.dtype]], opcional) — Substitui o torch.dtype padrão e carrega o modelo com outro dtype. Para carregar submodelos com diferentes dtypes, passe um dict (por exemplo, {'transformer': torch.bfloat16, 'vae': torch.float16}). Defina o dtype padrão para componentes não especificados com default (por exemplo, {'transformer': torch.bfloat16, 'default': torch.float16}). Se um componente não for especificado e nenhum padrão for definido, torch.float32 será usado.
  • custom_pipeline (str, opcional) —

    > 🧪 Este é um recurso experimental e pode mudar no futuro.

    Pode ser:

    • Uma string, o repo id (por exemplo hf-internal-testing/diffusers-dummy-pipeline) de um pipeline personalizado hospedado no Hub. O repositório deve conter um arquivo chamado pipeline.py que define o pipeline personalizado.
    • Uma string, o nome do arquivo de um pipeline da comunidade hospedado no GitHub sob Community. Os nomes de arquivo válidos devem corresponder ao nome do arquivo e não ao script do pipeline (clip_guided_stable_diffusion em vez de clip_guided_stable_diffusion.py). Os pipelines da comunidade são sempre carregados da branch main atual do GitHub.
    • Um caminho para um diretório (./my_pipeline_directory/) contendo um pipeline personalizado. O diretório deve conter um arquivo chamado pipeline.py que define o pipeline personalizado.

    Para mais informações sobre como carregar e criar pipelines personalizados, consulte Carregamento e Adição de Pipelines Personalizados

  • force_download (bool, opcional, padrão False) — Se deve forçar o (re-)download dos pesos do modelo e dos arquivos de configuração, sobrescrevendo as versões em cache, caso existam.
  • cache_dir (Union[str, os.PathLike], opcional) — Caminho para um diretório onde a configuração de um modelo pré-treinado baixado é armazenada em cache, caso o cache padrão não seja utilizado.
  • proxies (Dict[str, str], opcional) — Um dicionário de servidores proxy a serem usados por protocolo ou endpoint, por exemplo, {'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}. Os proxies são usados em cada solicitação.
  • output_loading_info(bool, opcional, padrão False) — Indica se deve ou não retornar também um dicionário contendo chaves ausentes, chaves inesperadas e mensagens de erro.
  • local_files_only (bool, opcional, padrão False) — Se deve carregar apenas os pesos e arquivos de configuração do modelo localmente. Se definido como True, o modelo não será baixado do Hub.
  • token (str ou bool, opcional) — O token a ser usado como autorização de bearer HTTP para arquivos remotos. Se True, o token gerado por diffusers-cli login (armazenado em ~/.huggingface) é utilizado.
  • revision (str, opcional, padrão "main") — A versão específica do modelo a ser usada. Pode ser o nome de um branch, o nome de uma tag, um id de commit ou qualquer identificador permitido pelo Git.
  • custom_revision (str, opcional) — A versão específica do modelo a ser usada. Pode ser um nome de branch, um nome de tag ou um id de commit, semelhante a revision ao carregar um pipeline personalizado do Hub. O padrão é a versão estável mais recente do 🤗 Diffusers.
  • mirror (str, opcional) — Espelho de origem para resolver problemas de acessibilidade se você estiver baixando um modelo na China. Não garantimos a atualidade ou a segurança da origem, e você deve consultar o site do espelho para obter mais informações.
  • device_map (str, opcional) — Estratégia que determina como os diferentes componentes de um pipeline devem ser alocados nos dispositivos disponíveis. Atualmente, apenas o device_map “balanced” é suportado. Consulte este para saber mais.
  • max_memory (Dict, opcional) — Um dicionário com o identificador do dispositivo para a memória máxima. Se não for definido, o padrão será a memória máxima disponível para cada GPU e a RAM disponível na CPU.
  • offload_folder (str ou os.PathLike, opcional) — O caminho para descarregar os pesos se device_map contiver o valor "disk".
  • offload_state_dict (bool, opcional) — Se True, descarrega temporariamente o state dict da CPU para o disco rígido para evitar a falta de RAM da CPU caso o peso do state dict da CPU + o maior shard do checkpoint não caiba. O padrão é True quando há algum offload de disco.
  • low_cpu_mem_usage (bool, opcional, padrão True se a versão do torch >= 1.9.0, caso contrário False) — Acelera o carregamento do modelo carregando apenas os pesos pré-treinados e não inicializando os pesos. Isso também tenta não usar mais do que 1x o tamanho do modelo na memória de CPU (incluindo a memória de pico) durante o carregamento do modelo. Suportado apenas para PyTorch >= 1.9.0. Se você estiver usando uma versão mais antiga do PyTorch, definir este argumento como True causará um erro.
  • use_safetensors (bool, opcional, padrão None) — Se definido como None, os pesos em safetensors são baixados se estiverem disponíveis e se a biblioteca safetensors estiver instalada. Se definido como True, o modelo é carregado forçadamente a partir dos pesos em safetensors. Se definido como False, os pesos em safetensors não são carregados.
  • use_onnx (bool, opcional, padrão None) — Se definido como True, os pesos ONNX sempre serão baixados, se presentes. Se definido como False, os pesos ONNX nunca serão baixados. Por padrão, use_onnx assume o valor do atributo de classe _is_onnx, que é False para pipelines não-ONNX e True para pipelines ONNX. Os pesos ONNX incluem tanto arquivos que terminam em .onnx quanto .pb.
  • kwargs (dicionário restante de argumentos de palavra-chave, opcional) — Pode ser usado para sobrescrever variáveis de carregamento e salvamento (os componentes do pipeline da classe de pipeline específica). Os componentes sobrescritos são passados diretamente para o método __init__ dos pipelines. Veja o exemplo abaixo para mais informações.
  • variant (str, opcional) — Carrega os pesos de um nome de arquivo de variante especificado, como "fp16" ou "ema".
  • disable_mmap (‘bool’, opcional, padrão ‘False’) — Se deve desabilitar o mmap ao carregar um modelo Safetensors. Essa opção pode ter um desempenho melhor quando o modelo está em uma montagem de rede ou em um disco rígido, que podem não lidar bem com a natureza de buscas aleatórias (seek) do mmap.

Instanciar um pipeline de difusão do PyTorch a partir de pesos de pipeline pré-treinados.

O pipeline é definido no modo de avaliação (model.eval()) por padrão.

Se você receber a mensagem de erro abaixo, é necessário ajustar os pesos para sua tarefa de destino:

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.

> Para usar modelos privados ou com acesso restrito, faça login com hf > auth login.

Exemplos:

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