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