Diffusers documentation

AudioLDM 2

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

and get access to the augmented documentation experience

to get started

AudioLDM 2

AudioLDM 2 был предложен в статье AudioLDM 2: Learning Holistic Audio Generation with Self-supervised Pretraining авторами Haohe Liu и др. AudioLDM 2 принимает текстовый запрос на вход и предсказывает соответствующий аудиосигнал. Он может генерировать звуковые эффекты, речь человека и музыку по текстовому условию.

Вдохновлённый Stable Diffusion, AudioLDM 2 представляет собой модель латентной диффузии (LDM) для генерации аудио по тексту, которая обучает непрерывные представления аудио на основе текстовых эмбеддингов. Для вычисления текстовых эмбеддингов из входного промпта используются две модели текстовых энкодеров: текстовая ветвь CLAP и энкодер Flan-T5. Затем эти текстовые эмбеддинги проецируются в общее пространство эмбеддингов с помощью AudioLDM2ProjectionModel. Модель GPT2 языковой модели (LM) используется для авто-регрессивного предсказания восьми новых векторов эмбеддингов, условно зависящих от спроецированных эмбеддингов CLAP и Flan-T5. Сгенерированные векторы эмбеддингов и текстовые эмбеддинги Flan-T5 применяются в качестве условия для кросс-внимания в LDM. UNet в AudioLDM 2 уникален тем, что принимает два эмбеддинга для кросс-внимания, в отличие от одного условия кросс-внимания, как в большинстве других LDM.

Аннотация к статье следующая:

Although audio generation shares commonalities across different types of audio, such as speech, music, and sound effects, designing models for each type requires careful consideration of specific objectives and biases that can significantly differ from those of other types. To bring us closer to a unified perspective of audio generation, this paper proposes a framework that utilizes the same learning method for speech, music, and sound effect generation. Our framework introduces a general representation of audio, called “language of audio” (LOA). Any audio can be translated into LOA based on AudioMAE, a self-supervised pre-trained representation learning model. In the generation process, we translate any modalities into LOA by using a GPT-2 model, and we perform self-supervised audio generation learning with a latent diffusion model conditioned on LOA. The proposed framework naturally brings advantages such as in-context learning abilities and reusable self-supervised pretrained AudioMAE and latent diffusion models. Experiments on the major benchmarks of text-to-audio, text-to-music, and text-to-speech demonstrate state-of-the-art or competitive performance against previous approaches. Our code, pretrained model, and demo are available at this https URL.

Этот конвейер был предложен sanchit-gandhi и Nguyễn Công Tú Anh. Исходная кодовая база доступна по адресу haoheliu/audioldm2.

Советы

Выбор контрольной точки

AudioLDM2 представлен в трёх вариантах. Два из этих контрольных точек применимы к общей задаче генерации аудио по тексту. Третий контрольный пункт обучен исключительно на генерации музыки по тексту.

Все контрольные точки имеют одинаковый размер модели для текстовых энкодеров и VAE. Они различаются размером и глубиной UNet. См. таблицу ниже для получения подробной информации о трёх контрольных точках:

ЧекпоинтЗадачаРазмер модели UNetОбщий размер моделиДанные для обучения / ч
audioldm2Текст в аудио350M1.1B1150k
audioldm2-largeТекст в аудио750M1.5B1150k
audioldm2-musicТекст в музыку350M1.1B665k
audioldm2-gigaspeechСинтез речи350M1.1B10k
audioldm2-ljspeechСинтез речи350M1.1B

Составление запроса

  • Описательные входные промпты работают лучше всего: используйте прилагательные для описания звука (например, «высокое качество» или «ясный») и делайте промпт контекстно-специфичным (например, «поток воды в лесу» вместо «поток»).
  • Лучше использовать общие термины, такие как «cat» или «dog», вместо конкретных имён или абстрактных объектов, с которыми модель может быть не знакома.
  • Использование негативного промпта может значительно повысить качество генерируемой звуковой волны, направляя процесс генерации в сторону, противоположную терминам, соответствующим аудио низкого качества. Попробуйте использовать негативный промпт «Low quality.»

Управление выводом

  • Качество quality предсказанного аудиосэмпла можно контролировать с помощью аргумента num_inference_steps; большее количество шагов обеспечивает более высокое качество аудио, но замедляет инференс.
  • Длину length предсказанного аудиосample можно контролировать, изменяя аргумент audio_length_in_s.

Оценка сгенерированных волновых форм:

  • Качество сгенерированных волновых форм может значительно варьироваться в зависимости от seed. Попробуйте генерацию с разными seed, пока не получите удовлетворительный результат.
  • Можно сгенерировать несколько волновых форм за один раз: установите num_waveforms_per_prompt в значение, большее 1. Автоматическая оценка будет выполнена между сгенерированными волновыми формами и текстом запроса, а аудиозаписи будут ранжированы от лучших к худшим соответственно.

Приведённый ниже пример демонстрирует, как с помощью упомянутых выше советов создавать качественную музыку и речь: пример.

Обязательно ознакомьтесь с руководством по планировщикам, чтобы узнать, как исследовать баланс между скоростью и качеством планировщика, а также с разделом повторное использование компонентов в разных конвейерах, чтобы узнать, как эффективно загружать одни и те же компоненты в несколько конвейеров.

AudioLDM2Pipeline

класс diffusers.AudioLDM2Pipeline

< >

( vae: AutoencoderKLtext_encoder: ClapModeltext_encoder_2: transformers.models.t5.modeling_t5.T5EncoderModel | transformers.models.vits.modeling_vits.VitsModelprojection_model: AudioLDM2ProjectionModellanguage_model: GPT2LMHeadModeltokenizer: RobertaTokenizertokenizer_2: transformers.models.t5.tokenization_t5.T5Tokenizer | transformers.models.vits.tokenization_vits.VitsTokenizerfeature_extractor: ClapFeatureExtractorunet: AudioLDM2UNet2DConditionModelscheduler: KarrasDiffusionSchedulersvocoder: SpeechT5HifiGan )

Параметры

  • vae (AutoencoderKL) — модель вариационного автоэнкодера (VAE) для кодирования изображений в латентные представления и декодирования из них.
  • text_encoder (ClapModel) — Первый замороженный текстовый энкодер. AudioLDM2 использует модель совместного встраивания аудио и текста CLAP, а именно вариант laion/clap-htsat-unfused. Текстовая ветвь используется для кодирования текстового промпта в промпт-встраивание. Полная модель аудио-текста используется для ранжирования сгенерированных волновых форм по отношению к текстовому промпту путём вычисления оценок сходства.
  • text_encoder_2 ([~transformers.T5EncoderModel, ~transformers.VitsModel]) — Второй замороженный текстовый энкодер. AudioLDM2 использует энкодер T5, а именно вариант google/flan-t5-large. Второй замороженный текстовый энкодер используется для TTS. AudioLDM2 использует энкодер Vits.
  • projection_model (AudioLDM2ProjectionModel) — Обученная модель, используемая для линейного проецирования скрытых состояний из первой и второй моделей текстового кодировщика и вставки обученных эмбеддингов токенов SOS и EOS. Спроецированные скрытые состояния из двух текстовых кодировщиков конкатенируются, чтобы сформировать вход для языковой модели. Обученное позиционное эмбеддинг для скрытых состояний Vits
  • language_model (GPT2Model) — авто-регрессионная языковая модель, используемая для генерации последовательности скрытых состояний, обусловленной проекциями выходов двух текстовых энкодеров.
  • tokenizer (RobertaTokenizer) — Токенизатор для токенизации текста для первого замороженного текстового энкодера.
  • tokenizer_2 ([~transformers.T5Tokenizer, ~transformers.VitsTokenizer]) — Токенизатор для токенизации текста для второго замороженного текстового энкодера.
  • feature_extractor (ClapFeatureExtractor) — Извлекатель признаков для предобработки сгенерированных аудиосигналов в лог-мел-спектрограммы для автоматической оценки.
  • unet (UNet2DConditionModel) — UNet2DConditionModel для удаления шума из закодированных латентных представлений аудио.
  • scheduler (SchedulerMixin) — планировщик, используемый в связке с unet для удаления шума из закодированных латентных представлений аудио. Может быть одним из DDIMScheduler, LMSDiscreteScheduler или PNDMScheduler.
  • vocoder (SpeechT5HifiGan) — Vocoder класса SpeechT5HifiGan для преобразования латентовых переменных мел-спектрограммы в итоговую аудиоволну.

Pipeline для генерации аудио из текста с использованием AudioLDM2.

Эта модель наследуется от DiffusionPipeline. Общую документацию по методам, реализованным для всех пайплайнов (загрузка, сохранение, запуск на конкретном устройстве и т. д.), см. в документации родительского класса.

__call__

< >

( prompt: str | list[str] = Nonetranscription: str | list[str] = Noneaudio_length_in_s: float | None = Nonenum_inference_steps: int = 200guidance_scale: float = 3.5negative_prompt: str | list[str] | None = Nonenum_waveforms_per_prompt: int | None = 1eta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonegenerated_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_generated_prompt_embeds: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.LongTensor] = Nonenegative_attention_mask: typing.Optional[torch.LongTensor] = Nonemax_new_tokens: int | None = Nonereturn_dict: bool = Truecallback: typing.Optional[typing.Callable[[int, int, torch.Tensor], NoneType]] = Nonecallback_steps: int | None = 1cross_attention_kwargs: dict[str, typing.Any] | None = Noneoutput_type: str | None = 'np' ) → StableDiffusionPipelineOutput or tuple

Параметры

  • prompt (str или list[str], необязательный) — Промпт или промпты для управления генерацией аудио. Если не задан, необходимо передать prompt_embeds.
  • transcription (str or list[str], необязательный) —\ Транскрипт для синтеза речи.
  • audio_length_in_s (int, необязательный, по умолчанию 10.24) — Длина сгенерированного аудиосэмпла в секундах.
  • num_inference_steps (int, необязательный, по умолчанию 200) — Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к более высокому качеству аудио за счёт замедления инференса.
  • guidance_scale (float, необязательный, по умолчанию 3.5) — Более высокое значение guidance scale побуждает модель генерировать аудио, тесно связанное с текстовым prompt, за счёт снижения качества звука. Guidance scale включается, когда guidance_scale > 1.
  • negative_prompt (str or list[str], необязательный) — Промпт или промпты, определяющие, что следует исключить при генерации аудио. Если не задан, необходимо передать negative_prompt_embeds. Игнорируется, если не используется направляющий сигнал (guidance_scale < 1).
  • num_waveforms_per_prompt (int, необязательный, по умолчанию 1) — Количество волновых форм, генерируемых на один промпт. Если num_waveforms_per_prompt > 1, выполняется автоматическая оценка между сгенерированными результатами и текстовым промптом. Эта оценка ранжирует сгенерированные волновые формы на основе их косинусного сходства с текстовым входом в совместном пространстве встраиваний текста и аудио.
  • eta (float, необязательный, по умолчанию 0.0) — Соответствует параметру eta (η) из статьи DDIM. Применяется только к DDIMScheduler и игнорируется другими планировщиками.
  • generator (torch.Generator или list[torch.Generator], необязательный) — torch.Generator для обеспечения детерминированности генерации.
  • latents (torch.Tensor, необязательный) — Предварительно сгенерированные шумовые латенты, выбранные из гауссова распределения, которые используются в качестве входных данных для генерации спектрограммы. Можно использовать, чтобы корректировать одну и ту же генерацию с разными промптами. Если не задано, тензор латентов генерируется путём выборки с использованием переданного случайного generator.
  • prompt_embeds (torch.Tensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных (взвешивание промпта). Если не задано, текстовые эмбеддинги генерируются из входного аргумента prompt.
  • negative_prompt_embeds (torch.Tensor, необязательный) — Предварительно сгенерированные эмбеддинги отрицательного текста. Можно использовать для простой настройки текстовых входных данных (взвешивание промпта). Если не задано, negative_prompt_embeds генерируются из входного аргумента negative_prompt.
  • generated_prompt_embeds (torch.Tensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги из языковой модели GPT2. Можно использовать для простой настройки текстовых входных данных, например, для взвешивания промпта. Если не передано, текстовые эмбеддинги будут сгенерированы из входного аргумента prompt.
  • negative_generated_prompt_embeds (torch.Tensor, необязательный) — Предварительно сгенерированные отрицательные текстовые эмбеддинги из языковой модели GPT2. Можно использовать для простой настройки текстовых входов, например для взвешивания промпта. Если не передано, negative_prompt_embeds будет вычислено из входного аргумента negative_prompt.
  • attention_mask (torch.LongTensor, необязательный) — Предварительно вычисленная маска внимания, применяемая к prompt_embeds. Если не задана, маска внимания будет вычислена на основе входного аргумента prompt.
  • negative_attention_mask (torch.LongTensor, необязательный) — Предварительно вычисленная маска внимания, применяемая к negative_prompt_embeds. Если не задана, маска внимания будет вычислена на основе входного аргумента negative_prompt.
  • max_new_tokens (int, необязательный, по умолчанию None) — Количество новых токенов, которые нужно сгенерировать языковой моделью GPT2. Если значение не указано, количество токенов будет взято из конфигурации модели.
  • return_dict (bool, необязательный, по умолчанию True) — Определяет, следует ли возвращать StableDiffusionPipelineOutput вместо обычного кортежа.
  • callback (Callable, необязательный) — Функция, вызываемая каждые callback_steps шагов во время инференса. Функция вызывается со следующими аргументами: callback(step: int, timestep: int, latents: torch.Tensor).
  • callback_steps (int, необязательный, по умолчанию 1) — Частота вызова функции callback. Если не указано, callback вызывается на каждом шаге.
  • cross_attention_kwargs (dict, необязательный) — Словарь kwargs, который при указании передается в AttentionProcessor, определенный в self.processor.
  • output_type (str, необязательный, по умолчанию "np") — Формат вывода сгенерированного аудио. Выберите "np", чтобы вернуть массив NumPy np.ndarray, или "pt", чтобы вернуть объект PyTorch torch.Tensor. Установите значение "latent", чтобы вернуть выход модели латентного диффузионного процесса (LDM).

Возвращает

StableDiffusionPipelineOutput или tuple

Если return_dict равно True, возвращается StableDiffusionPipelineOutput, в противном случае возвращается tuple, где первый элемент — это список с сгенерированным аудио.

Функция вызова конвейера для генерации.

Примеры:

>>> import scipy
>>> import torch
>>> from diffusers import AudioLDM2Pipeline

>>> repo_id = "cvssp/audioldm2"
>>> pipe = AudioLDM2Pipeline.from_pretrained(repo_id, torch_dtype=torch.float16)
>>> pipe = pipe.to("cuda")

>>> # define the prompts
>>> prompt = "The sound of a hammer hitting a wooden surface."
>>> negative_prompt = "Low quality."

>>> # set the seed for generator
>>> generator = torch.Generator("cuda").manual_seed(0)

>>> # run the generation
>>> audio = pipe(
...     prompt,
...     negative_prompt=negative_prompt,
...     num_inference_steps=200,
...     audio_length_in_s=10.0,
...     num_waveforms_per_prompt=3,
...     generator=generator,
... ).audios

>>> # save the best audio sample (index 0) as a .wav file
>>> scipy.io.wavfile.write("techno.wav", rate=16000, data=audio[0])
#Using AudioLDM2 for Text To Speech
>>> import scipy
>>> import torch
>>> from diffusers import AudioLDM2Pipeline

>>> repo_id = "anhnct/audioldm2_gigaspeech"
>>> pipe = AudioLDM2Pipeline.from_pretrained(repo_id, torch_dtype=torch.float16)
>>> pipe = pipe.to("cuda")

>>> # define the prompts
>>> prompt = "A female reporter is speaking"
>>> transcript = "wish you have a good day"

>>> # set the seed for generator
>>> generator = torch.Generator("cuda").manual_seed(0)

>>> # run the generation
>>> audio = pipe(
...     prompt,
...     transcription=transcript,
...     num_inference_steps=200,
...     audio_length_in_s=10.0,
...     num_waveforms_per_prompt=2,
...     generator=generator,
...     max_new_tokens=512,          #Must set max_new_tokens equa to 512 for TTS
... ).audios

>>> # save the best audio sample (index 0) as a .wav file
>>> scipy.io.wavfile.write("tts.wav", rate=16000, data=audio[0])

enable_model_cpu_offload

< >

( gpu_id: int | None = Nonedevice: typing.Union[torch.device, str] = 'cuda' )

Переносит все модели на CPU с помощью accelerate, снижая потребление памяти с минимальным влиянием на производительность. В отличие от enable_sequential_cpu_offload, этот метод перемещает на GPU целую модель за один раз при вызове её метода forward, и модель остаётся на GPU до запуска следующей модели. Экономия памяти меньше, чем при использовании enable_sequential_cpu_offload, но производительность значительно выше благодаря итеративному выполнению unet.

encode_prompt

< >

( promptdevicenum_waveforms_per_promptdo_classifier_free_guidancetranscription = Nonenegative_prompt = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonegenerated_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_generated_prompt_embeds: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.LongTensor] = Nonenegative_attention_mask: typing.Optional[torch.LongTensor] = Nonemax_new_tokens: int | None = None ) → prompt_embeds (torch.Tensor)

Параметры

  • prompt (str или list[str], необязательный) — промпт для кодирования
  • transcription (str или list[str]) — транскрипция текста для синтеза речи
  • device (torch.device) — устройство torch
  • num_waveforms_per_prompt (int) — количество волновых форм, которые должны быть сгенерированы для каждого запроса
  • do_classifier_free_guidance (bool) — использовать ли classifier free guidance
  • negative_prompt (str or list[str], необязательный) — Промпт или промпты, которые не должны направлять генерацию аудио. Если не задан, необходимо передать negative_prompt_embeds. Игнорируется, если не используется направляющее масштабирование (то есть игнорируется, если guidance_scale меньше 1).
  • prompt_embeds (torch.Tensor, необязательный) — Предварительно вычисленные текстовые эмбеддинги из модели Flan T5. Можно использовать для простой настройки текстовых входных данных, например взвешивания промпта. Если не передано, текстовые эмбеддинги будут вычислены из входного аргумента prompt.
  • negative_prompt_embeds (torch.Tensor, необязательный) — Предварительно вычисленные отрицательные текстовые эмбеддинги из модели Flan T5. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не передано, negative_prompt_embeds будет вычислено из входного аргумента negative_prompt.
  • generated_prompt_embeds (torch.Tensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги из языковой модели GPT2. Можно использовать для простой настройки текстовых входных данных, например, для взвешивания промпта. Если не передано, текстовые эмбеддинги будут сгенерированы из входного аргумента prompt.
  • negative_generated_prompt_embeds (torch.Tensor, необязательный) — Предварительно сгенерированные отрицательные текстовые эмбеддинги из языковой модели GPT2. Можно использовать для простой настройки текстовых входов, например для взвешивания промпта. Если не передано, negative_prompt_embeds будет вычислено из входного аргумента negative_prompt.
  • attention_mask (torch.LongTensor, необязательный) — Предварительно вычисленная маска внимания, применяемая к prompt_embeds. Если не задана, маска внимания будет вычислена на основе входного аргумента prompt.
  • negative_attention_mask (torch.LongTensor, необязательный) — Предварительно вычисленная маска внимания, применяемая к negative_prompt_embeds. Если не задана, маска внимания будет вычислена на основе входного аргумента negative_prompt.
  • max_new_tokens (int, необязательный, по умолчанию None) — Количество новых токенов, которые нужно сгенерировать языковой моделью GPT2.

Возвращает

prompt_embeds (torch.Tensor)

Текстовые эмбеддинги из модели Flan T5. attention_mask (torch.LongTensor): Маска внимания, применяемая к prompt_embeds. generated_prompt_embeds (torch.Tensor): Текстовые эмбеддинги, сгенерированные языковой моделью GPT2.

Кодирует промпт в скрытые состояния текстового энкодера.

Пример:

>>> import scipy
>>> import torch
>>> from diffusers import AudioLDM2Pipeline

>>> repo_id = "cvssp/audioldm2"
>>> pipe = AudioLDM2Pipeline.from_pretrained(repo_id, torch_dtype=torch.float16)
>>> pipe = pipe.to("cuda")

>>> # Get text embedding vectors
>>> prompt_embeds, attention_mask, generated_prompt_embeds = pipe.encode_prompt(
...     prompt="Techno music with a strong, upbeat tempo and high melodic riffs",
...     device="cuda",
...     do_classifier_free_guidance=True,
... )

>>> # Pass text embeddings to pipeline for text-conditional audio generation
>>> audio = pipe(
...     prompt_embeds=prompt_embeds,
...     attention_mask=attention_mask,
...     generated_prompt_embeds=generated_prompt_embeds,
...     num_inference_steps=200,
...     audio_length_in_s=10.0,
... ).audios[0]

>>> # save generated audio sample
>>> scipy.io.wavfile.write("techno.wav", rate=16000, data=audio)

generate_language_model

< >

( inputs_embeds: Tensor = Nonemax_new_tokens: int = 8**model_kwargs ) → inputs_embeds (torch.Tensorof shape(batch_size, sequence_length, hidden_size)`)

Параметры

  • inputs_embeds (torch.Tensor формы (batch_size, sequence_length, hidden_size)) — Последовательность, используемая в качестве промпта для генерации.
  • max_new_tokens (int) — Количество новых токенов для генерации.
  • model_kwargs (dict[str, Any], необязательный) — Произвольная параметризация дополнительных аргументов, специфичных для модели, которые будут переданы в функцию forward модели.

Возвращает

inputs_embeds (torch.Tensorof shape(batch_size, sequence_length, hidden_size)`)

Последовательность сгенерированных скрытых состояний.

Генерирует последовательность скрытых состояний из языковой модели, обусловленную входными эмбеддингами.

AudioLDM2ProjectionModel

класс diffusers.AudioLDM2ProjectionModel

< >

( text_encoder_dimtext_encoder_1_dimlangauge_model_dimuse_learned_position_embedding = Nonemax_seq_length = None )

Параметры

  • text_encoder_dim (int) — Размерность текстовых эмбеддингов от первого текстового энкодера (CLAP).
  • text_encoder_1_dim (int) — Размерность текстовых эмбеддингов от второго текстового энкодера (T5 или VITS).
  • langauge_model_dim (int) — Размерность текстовых эмбеддингов, полученных из языковой модели (GPT2).

Простая модель линейного проецирования для отображения двух текстовых эмбеддингов в общее латентное пространство. Она также вставляет обученные векторы эмбеддингов в начало и конец каждой последовательности текстовых эмбеддингов соответственно. Каждая переменная, дополненная _1, относится к соответствующему второму текстовому энкодеру. В противном случае она относится к первому.

forward

< >

( hidden_states: typing.Optional[torch.Tensor] = Nonehidden_states_1: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.LongTensor] = Noneattention_mask_1: typing.Optional[torch.LongTensor] = None ) → AudioLDM2ProjectionModelOutput

Параметры

  • hidden_states (torch.Tensor формы (batch_size, sequence_length, text_encoder_dim), необязательный) — Текстовые эмбеддинги из первого текстового энкодера (CLAP).
  • hidden_states_1 (torch.Tensor формы (batch_size, sequence_length_1, text_encoder_1_dim), необязательный) — Текстовые эмбеддинги из второго текстового энкодера (T5 или VITS).
  • attention_mask (torch.LongTensor формы (batch_size, sequence_length), необязательный) — Маска внимания для hidden_states.
  • attention_mask_1 (torch.LongTensor формы (batch_size, sequence_length_1), необязательный) — Маска внимания для hidden_states_1.

Возвращает

AudioLDM2ProjectionModelOutput

Проекционные текстовые эмбеддинги обоих текстовых энкодеров, склеенные вдоль измерения последовательности, а также их объединённая маска внимания.

AudioLDM2UNet2DConditionModel

класс diffusers.AudioLDM2UNet2DConditionModel

< >

( sample_size: int | None = Nonein_channels: int = 4out_channels: int = 4flip_sin_to_cos: bool = Truefreq_shift: int = 0down_block_types: tuple = ('CrossAttnDownBlock2D', 'CrossAttnDownBlock2D', 'CrossAttnDownBlock2D', 'DownBlock2D')mid_block_type: str = 'UNetMidBlock2DCrossAttn'up_block_types: tuple = ('UpBlock2D', 'CrossAttnUpBlock2D', 'CrossAttnUpBlock2D', 'CrossAttnUpBlock2D')only_cross_attention: bool | tuple[bool] = Falseblock_out_channels: tuple = (320, 640, 1280, 1280)layers_per_block: int | tuple[int] = 2downsample_padding: int = 1mid_block_scale_factor: float = 1act_fn: str = 'silu'norm_num_groups: int | None = 32norm_eps: float = 1e-05cross_attention_dim: int | tuple[int] = 1280transformer_layers_per_block: int | tuple[int] = 1attention_head_dim: int | tuple[int] = 8num_attention_heads: int | tuple[int] | None = Noneuse_linear_projection: bool = Falseclass_embed_type: str | None = Nonenum_class_embeds: int | None = Noneupcast_attention: bool = Falseresnet_time_scale_shift: str = 'default'time_embedding_type: str = 'positional'time_embedding_dim: int | None = Nonetime_embedding_act_fn: str | None = Nonetimestep_post_act: str | None = Nonetime_cond_proj_dim: int | None = Noneconv_in_kernel: int = 3conv_out_kernel: int = 3projection_class_embeddings_input_dim: int | None = Noneclass_embeddings_concat: bool = False )

Параметры

  • sample_size (int или tuple[int, int], необязательный, по умолчанию None) — Высота и ширина входного/выходного образца.
  • in_channels (int, необязательный, по умолчанию 4) — Количество каналов во входном образце.
  • out_channels (int, необязательный, по умолчанию 4) — Количество каналов на выходе.
  • flip_sin_to_cos (bool, необязательный, по умолчанию False) — Определяет, следует ли заменить sin на cos во временном эмбеддинге.
  • freq_shift (int, необязательный, по умолчанию 0) — Сдвиг частоты, применяемый к временному эмбеддингу.
  • down_block_types (tuple[str], необязательный, по умолчанию ("CrossAttnDownBlock2D", "CrossAttnDownBlock2D", "CrossAttnDownBlock2D", "DownBlock2D")) — Кортеж блоков понижающего дискретизирования, которые следует использовать.
  • mid_block_type (str, необязательный, по умолчанию "UNetMidBlock2DCrossAttn") — Тип блока для средней части UNet; для AudioLDM2 допустимо только значение UNetMidBlock2DCrossAttn.
  • up_block_types (tuple[str], необязательный, по умолчанию ("UpBlock2D", "CrossAttnUpBlock2D", "CrossAttnUpBlock2D", "CrossAttnUpBlock2D")) — Кортеж блоков апсемплинга, которые следует использовать.
  • only_cross_attention (bool or tuple[bool], необязательный, по умолчанию False) — Указывает, следует ли включать self-attention в базовых блоках трансформера, см. BasicTransformerBlock.
  • block_out_channels (tuple[int], необязательный, по умолчанию (320, 640, 1280, 1280)) — Кортеж количества выходных каналов для каждого блока.
  • layers_per_block (int, необязательный, по умолчанию 2) — Количество слоев в каждом блоке.
  • downsample_padding (int, необязательный, по умолчанию 1) — Размер отступов для свёртки при уменьшении разрешения.
  • mid_block_scale_factor (float, необязательный, по умолчанию 1.0) — Коэффициент масштабирования для среднего блока.
  • act_fn (str, необязательный, по умолчанию "silu") — Функция активации, которую следует использовать.
  • norm_num_groups (int, необязательный, по умолчанию 32) — количество групп, используемых для нормализации. Если None, слои нормализации и активации пропускаются на этапе постобработки.
  • norm_eps (float, необязательный, по умолчанию 1e-5) — значение эпсилон, используемое для нормализации.
  • cross_attention_dim (int или tuple[int], необязательный, по умолчанию 1280) — Размерность признаков кросс-внимания.
  • transformer_layers_per_block (int или tuple[int], необязательный, по умолчанию 1) — Количество блоков трансформера типа BasicTransformerBlock. Актуально только для ~models.unet_2d_blocks.CrossAttnDownBlock2D, ~models.unet_2d_blocks.CrossAttnUpBlock2D, ~models.unet_2d_blocks.UNetMidBlock2DCrossAttn.
  • attention_head_dim (int, необязательный, по умолчанию 8) — размерность головок внимания.
  • num_attention_heads (int, необязательный) — Количество головок внимания. Если не задано, по умолчанию равно attention_head_dim
  • resnet_time_scale_shift (str, необязательный, по умолчанию "default") — конфигурация сдвига масштаба времени для блоков ResNet (см. ResnetBlock2D). Выберите default или scale_shift.
  • class_embed_type (str, необязательный, по умолчанию None) — Тип классовой эмбеддинга, который в итоге суммируется с временными эмбеддингами. Выберите одно из значений: None, "timestep", "identity", "projection" или "simple_projection".
  • num_class_embeds (int, необязательный, по умолчанию None) — Входное измерение обучаемой матрицы эмбеддингов, проецируемой в time_embed_dim, при выполнении условного кодирования по классу, когда class_embed_type равно None.
  • time_embedding_type (str, необязательный, по умолчанию positional) — Тип позиционного эмбеддинга, используемого для временных шагов. Выберите positional или fourier.
  • time_embedding_dim (int, необязательный, по умолчанию None) — Необязательное переопределение размерности проекции временного эмбеддинга.
  • time_embedding_act_fn (str, необязательный, по умолчанию None) — Необязательная функция активации, применяемая один раз к временным эмбеддингам перед их передачей в остальные слои UNet. Выберите одну из silu, mish, gelu или swish.
  • timestep_post_act (str, необязательный, по умолчанию None) — Вторая функция активации, используемая во вложении временного шага. Выберите из silu, mish и gelu.
  • time_cond_proj_dim (int, необязательный, по умолчанию None) — Размерность слоя cond_proj во встраивании временного шага.
  • conv_in_kernel (int, необязательный, по умолчанию 3) — размер ядра слоя conv_in.
  • conv_out_kernel (int, необязательный, по умолчанию 3) — размер ядра слоя conv_out.
  • projection_class_embeddings_input_dim (int, необязательный) — размерность входа class_labels, когда class_embed_type="projection". Обязателен, если class_embed_type="projection".
  • class_embeddings_concat (bool, необязательный, по умолчанию False) — Соединять ли временные эмбеддинги с эмбеддингами классов.

Условная 2D-модель UNet, которая принимает зашумленный образец, условное состояние и шаг времени и возвращает выход с формой образца. В отличие от стандартной UNet2DConditionModel, этот вариант опционально включает дополнительный слой self-attention в каждом блоке Transformer, а также несколько слоёв cross-attention. Он также допускает до двух cross-attention эмбеддингов: encoder_hidden_states и encoder_hidden_states_1.

Эта модель наследуется от ModelMixin. См. документацию суперкласса для его универсальных методов, реализованных для всех моделей (например, загрузка или сохранение).

forward

< >

( sample: Tensortimestep: typing.Union[torch.Tensor, float, int]encoder_hidden_states: Tensorclass_labels: typing.Optional[torch.Tensor] = Nonetimestep_cond: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonecross_attention_kwargs: dict[str, typing.Any] | None = Noneencoder_attention_mask: typing.Optional[torch.Tensor] = Nonereturn_dict: bool = Trueencoder_hidden_states_1: typing.Optional[torch.Tensor] = Noneencoder_attention_mask_1: typing.Optional[torch.Tensor] = None ) → UNet2DConditionOutput or tuple

Параметры

  • sample (torch.Tensor) — Шумовой входной тензор со следующей формой (batch, channel, height, width).
  • timestep (torch.Tensor или float или int) — Количество шагов для денойзинга входных данных.
  • encoder_hidden_states (torch.Tensor) — Скрытые состояния энкодера с формой (batch, sequence_length, feature_dim).
  • encoder_attention_mask (torch.Tensor) — Маска кросс-внимания формы (batch, sequence_length), применяемая к encoder_hidden_states. Если True, маска сохраняется, иначе, если False, она отбрасывается. Маска преобразуется в смещение (bias), которое добавляет большие отрицательные значения к оценкам внимания, соответствующим токенам «отбрасывания».
  • return_dict (bool, необязательный, по умолчанию True) — Определяет, следует ли возвращать UNet2DConditionOutput вместо обычного кортежа.
  • cross_attention_kwargs (dict, необязательный) — Словарь kwargs, который при указании передается в AttnProcessor.
  • encoder_hidden_states_1 (torch.Tensor, необязательный) — Второй набор скрытых состояний кодировщика с формой (batch, sequence_length_2, feature_dim_2). Может использоваться для условного формирования модели на основе другого набора эмбеддингов, отличного от encoder_hidden_states.
  • encoder_attention_mask_1 (torch.Tensor, необязательный) — Маска кросс-внимания формы (batch, sequence_length_2), применяемая к encoder_hidden_states_1. Если значение True, маска сохраняется, иначе, если False, она отбрасывается. Маска преобразуется в смещение (bias), которое добавляет большие отрицательные значения к оценкам внимания, соответствующим токенам «отбрасывания».

Возвращает

UNet2DConditionOutput или tuple

Если return_dict равно True, возвращается UNet2DConditionOutput, иначе возвращается tuple, где первый элемент — это тензор выборки.

Метод forward модели AudioLDM2UNet2DConditionModel.

AudioPipelineOutput

класс diffusers.AudioPipelineOutput

< >

( audios: ndarray )

Параметры

  • audios (np.ndarray) — Список денезированных аудиосемплов в виде массива NumPy формы (batch_size, num_channels, sample_rate).

Класс вывода для аудиопайплайнов.

Update on GitHub