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

Этот конвейер поддерживает загрузку из локального каталога или репозитория 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