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 — это диффузионная модель для генерации аудио по тексту от Meituan LongCat. Интеграция с diffusers предоставляет стандартный интерфейс DiffusionPipeline для генерации аудио по текстовому условию.

Этот конвейер адаптирован из эталонной реализации LongCat-AudioDiT: https://github.com/meituan-longcat/LongCat-AudioDiT

Этот конвейер поддерживает загрузку из локального каталога или репозитория Hugging Face Hub в формате diffusers (содержащего подкаталоги text_encoder/, transformer/, vae/, tokenizer/ и scheduler/).

Использование

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], чтобы получить один аудиосэмпл.
  • Пайплайн выводит моноаудио (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.
  • audio_duration_s (float, необязательный) — Целевая длительность аудио в секундах. Игнорируется, если предоставлено latents.
  • latents (torch.Tensor, необязательный) — Предварительно сгенерированные зашумленные латенты формы (batch_size, duration, latent_dim).
  • num_inference_steps (int, по умолчанию 16) — Количество шагов денойзинга.
  • guidance_scale (float, по умолчанию 4.0) — Масштаб руководства для classifier-free guidance.
  • 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

AudioPipelineOutput, если return_dict равно True, иначе — 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, необязательный) — Может быть:
    • Строка, repo id (например, CompVis/ldm-text2im-large-256) предобученного пайплайна, размещенного на Hub.
    • Путь к каталогу (например, ./my_pipeline_directory/), содержащему веса пайплайна, сохранённые с помощью save_pretrained().
  • dtype (torch.dtype или dict[str, Union[str, torch.dtype]], необязательный) — Переопределяет стандартный torch.dtype и загружает модель с другим типом данных. Чтобы загрузить подмодели с разными типами данных, передайте dict (например, {'transformer': torch.bfloat16, 'vae': torch.float16}). Установите стандартный тип данных для компонентов, не указанных явно, с помощью default (например, {'transformer': torch.bfloat16, 'default': torch.float16}). Если компонент не указан и стандартный тип данных не задан, используется torch.float32.
  • custom_pipeline (str, необязательный) —

    > 🧪 Это экспериментальная функция, которая может измениться в будущем.

    Может быть одним из следующих:

    • Строка, repo id (например, hf-internal-testing/diffusers-dummy-pipeline) пользовательского пайплайна, размещенного на Hub. Репозиторий должен содержать файл pipeline.py, в котором определяется пользовательский пайплайн.
    • Строка, имя файла сообщества пайплайна, размещённого на GitHub в разделе Community. Допустимые имена файлов должны соответствовать имени файла, а не имени скрипта пайплайна (clip_guided_stable_diffusion вместо clip_guided_stable_diffusion.py). Пайплайны сообщества всегда загружаются из текущей ветки main на GitHub.
    • Путь к каталогу (./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.
  • custom_revision (str, необязательный) — Конкретная версия модели, которую следует использовать. Это может быть имя ветки, имя тега или идентификатор коммита, аналогично revision при загрузке пользовательского конвейера из Hub. По умолчанию используется последняя стабильная версия 🤗 Diffusers.
  • mirror (str, optional) — Источник зеркала для решения проблем с доступностью при загрузке модели в Китае. Мы не гарантируем актуальность или безопасность источника, поэтому за дополнительной информацией обращайтесь на сайт зеркала.
  • device_map (str, необязательный) — Стратегия, определяющая, как различные компоненты конвейера должны распределяться по доступным устройствам. В настоящее время поддерживается только «balanced» device_map. Подробнее см. здесь.
  • max_memory (Dict, необязательный) — Словарь с идентификаторами устройств и максимальным объемом памяти. Если не задан, по умолчанию используется максимальная доступная память для каждого GPU и доступная оперативная память CPU.
  • offload_folder (str или os.PathLike, необязательный) — Путь для выгрузки весов, если device_map содержит значение "disk".
  • offload_state_dict (bool, необязательный) — Если True, временно выгружает CPU state dict на диск, чтобы избежать нехватки оперативной памяти CPU, если вес CPU state dict + самый большой фрагмент контрольной точки не помещается. По умолчанию True, если используется выгрузка на диск.
  • low_cpu_mem_usage (bool, необязательный, по умолчанию True, если версия torch >= 1.9.0, иначе False) — Ускоряет загрузку модели, загружая только предобученные веса и не инициализируя их. Это также позволяет не использовать более 1x размера модели в оперативной памяти CPU (включая пиковое потребление) при загрузке модели. Поддерживается только для PyTorch >= 1.9.0. Если вы используете более старую версию PyTorch, установка этого аргумента в True вызовет ошибку.
  • use_safetensors (bool, необязательный, по умолчанию None) — Если установлено значение None, веса safetensors загружаются, если они доступны и если библиотека safetensors установлена. Если установлено значение True, модель принудительно загружается из весов safetensors. Если установлено значение False, веса safetensors не загружаются.
  • use_onnx (bool, необязательный, по умолчанию None) — Если установлено в True, веса ONNX всегда будут загружаться, если они присутствуют. Если установлено в False, веса ONNX никогда не будут загружаться. По умолчанию use_onnx принимает значение атрибута класса _is_onnx, которое равно False для не-ONNX конвейеров и True для ONNX конвейеров. К весам ONNX относятся как файлы, заканчивающиеся на .onnx, так и на .pb.
  • kwargs (остальные именованные аргументы в виде словаря, необязательно) — Можно использовать для переопределения переменных загрузки и сохранения (компонентов конвейера конкретного класса конвейера). Переопределённые компоненты передаются непосредственно в метод __init__ конвейера. Подробнее см. пример ниже.
  • variant (str, необязательный) — Загружает веса из файла с указанным вариантом имени, например "fp16" или "ema".
  • disable_mmap (‘bool’, необязательный, по умолчанию ‘False’) — Определяет, следует ли отключать mmap при загрузке модели Safetensors. Этот параметр может обеспечить лучшую производительность, если модель находится на сетевом диске или жёстком диске, которые могут плохо справляться с частыми операциями перемотки, характерными для mmap.

Создайте пайплайн диффузии 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