Buckets:

mishig's picture
|
download
raw
55.8 kB

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 Текст в аудио 350M 1.1B 1150k
audioldm2-large Текст в аудио 750M 1.5B 1150k
audioldm2-music Текст в музыку 350M 1.1B 665k
audioldm2-gigaspeech Синтез речи 350M 1.1B 10k
audioldm2-ljspeech Синтез речи 350M 1.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]]

diffusers.AudioLDM2Pipeline[[diffusers.AudioLDM2Pipeline]]

diffusers.AudioLDM2Pipeline(vae: AutoencoderKL, text_encoder: ClapModel, text_encoder_2: transformers.models.t5.modeling_t5.T5EncoderModel | transformers.models.vits.modeling_vits.VitsModel, projection_model: AudioLDM2ProjectionModel, language_model: GPT2LMHeadModel, tokenizer: RobertaTokenizer, tokenizer_2: transformers.models.t5.tokenization_t5.T5Tokenizer | transformers.models.vits.tokenization_vits.VitsTokenizer, feature_extractor: ClapFeatureExtractor, unet: AudioLDM2UNet2DConditionModel, scheduler: KarrasDiffusionSchedulers, vocoder: 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) : авто-регрессионная языковая модель, используемая для генерации последовательности скрытых состояний (hidden-states) на основе проекций выходов двух текстовых энкодеров.

tokenizer (RobertaTokenizer) : Токенизатор для токенизации текста для первого замороженного текстового энкодера.

tokenizer_2 ([~transformers.T5Tokenizer, ~transformers.VitsTokenizer]) : Токенизатор для токенизации текста для второго замороженного текстового энкодера.

feature_extractor (ClapFeatureExtractor) : Извлекатель признаков для предобработки сгенерированных аудиосигналов в лог-мел-спектрограммы для автоматической оценки.

unet (UNet2DConditionModel) : UNet2DConditionModel для удаления шума из закодированных латентов аудио.

scheduler (SchedulerMixin) : планировщик, используемый в сочетании с unet для удаления шума из закодированных латентных представлений аудио. Может быть одним из DDIMScheduler, LMSDiscreteScheduler или PNDMScheduler.

vocoder (SpeechT5HifiGan) : Вокодер класса SpeechT5HifiGan для преобразования латентовых переменных мел-спектрограммы в итоговую аудиоволну.

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

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

call[[diffusers.AudioLDM2Pipeline.call]]

__call__(prompt: str | list[str] = None, transcription: str | list[str] = None, audio_length_in_s: float | None = None, num_inference_steps: int = 200, guidance_scale: float = 3.5, negative_prompt: str | list[str] | None = None, num_waveforms_per_prompt: int | None = 1, eta: float = 0.0, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, generated_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_generated_prompt_embeds: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.LongTensor] = None, negative_attention_mask: typing.Optional[torch.LongTensor] = None, max_new_tokens: int | None = None, return_dict: bool = True, callback: typing.Optional[typing.Callable[[int, int, torch.Tensor], NoneType]] = None, callback_steps: int | None = 1, cross_attention_kwargs: dict[str, typing.Any] | None = None, output_type: str | None = 'np')

Источник

Параметры:

prompt (str или list[str], необязательный) : Промпт или промпты для управления генерацией аудио. Если не задан, необходимо передать prompt_embeds.

transcription (str или list[str], необязательный) --\ Текст для синтеза речи.

audio_length_in_s (int, optional, по умолчанию 10.24) : Длина сгенерированного аудиосэмпла в секундах.

num_inference_steps (int, optional, по умолчанию 200) : Количество шагов денойзинга. Увеличение числа шагов денойзинга обычно приводит к повышению качества аудио за счёт замедления инференса.

guidance_scale (float, optional, по умолчанию 3.5) : Более высокое значение guidance scale побуждает модель генерировать аудио, тесно связанное с текстовым prompt, за счёт снижения качества звука. Guidance scale активируется, когда guidance_scale > 1.

negative_prompt (str или list[str], необязательный) : Промпт или промпты, определяющие, что следует исключить при генерации аудио. Если не задан, необходимо передать negative_prompt_embeds. Игнорируется, если не используется направляющая (guidance_scale < 1).

num_waveforms_per_prompt (int, optional, по умолчанию 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, optional, по умолчанию None) : Количество новых токенов, которые нужно сгенерировать языковой моделью GPT2. Если значение не указано, количество токенов будет взято из конфигурации модели.

return_dict (bool, необязательный, по умолчанию True) : Возвращать ли StableDiffusionPipelineOutput вместо обычного кортежа.

callback (Callable, необязательный) : функция, вызываемая каждые callback_steps шагов во время инференса. Функция вызывается со следующими аргументами: callback(step: int, timestep: int, latents: torch.Tensor).

callback_steps (int, optional, по умолчанию 1) : Частота вызова функции callback. Если не указано, callback вызывается на каждом шаге.

cross_attention_kwargs (dict, необязательный) : Словарь kwargs, который при указании передается в AttentionProcessor, определенный в self.processor.

output_type (str, необязательный, по умолчанию "np") : Формат вывода сгенерированного аудио. Выберите "np", чтобы вернуть массив NumPy np.ndarray, или "pt", чтобы вернуть объект PyTorch torch.Tensor. Установите значение "latent", чтобы вернуть выход latent diffusion model (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[[diffusers.AudioLDM2Pipeline.enable_model_cpu_offload]]

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

Источник

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

encode_prompt[[diffusers.AudioLDM2Pipeline.encode_prompt]]

encode_prompt(prompt, device, num_waveforms_per_prompt, do_classifier_free_guidance, transcription = None, negative_prompt = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, generated_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_generated_prompt_embeds: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.LongTensor] = None, negative_attention_mask: typing.Optional[torch.LongTensor] = None, max_new_tokens: int | None = None)

Источник

Параметры:

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 или 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[[diffusers.AudioLDM2Pipeline.generate_language_model]]

generate_language_model(inputs_embeds: Tensor = None, max_new_tokens: int = 8, **model_kwargs)

Источник

Параметры:

inputs_embeds (torch.Tensor формы (batch_size, sequence_length, hidden_size)) : Последовательность, используемая в качестве промпта для генерации.

max_new_tokens (int) : Количество новых токенов для генерации.

model_kwargs (dict[str, Any], необязательный) : Произвольная параметризация дополнительных аргументов kwargs, специфичных для модели, которые будут переданы в функцию forward модели.

Возвращает: inputs_embeds (torch.Tensorof shape(batch_size, sequence_length, hidden_size)`)

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

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

AudioLDM2ProjectionModel[[diffusers.AudioLDM2ProjectionModel]]

diffusers.AudioLDM2ProjectionModel[[diffusers.AudioLDM2ProjectionModel]]

diffusers.AudioLDM2ProjectionModel(text_encoder_dim, text_encoder_1_dim, langauge_model_dim, use_learned_position_embedding = None, max_seq_length = None)

Источник

Параметры:

text_encoder_dim (int) : Размерность текстовых эмбеддингов от первого текстового энкодера (CLAP).

text_encoder_1_dim (int) : Размерность текстовых эмбеддингов из второго текстового энкодера (T5 или VITS).

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

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

forward[[diffusers.AudioLDM2ProjectionModel.forward]]

forward(hidden_states: typing.Optional[torch.Tensor] = None, hidden_states_1: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.LongTensor] = None, attention_mask_1: typing.Optional[torch.LongTensor] = None)

Источник

Параметры:

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

diffusers.AudioLDM2UNet2DConditionModel[[diffusers.AudioLDM2UNet2DConditionModel]]

diffusers.AudioLDM2UNet2DConditionModel(sample_size: int | None = None, in_channels: int = 4, out_channels: int = 4, flip_sin_to_cos: bool = True, freq_shift: int = 0, down_block_types: tuple[str] = ('CrossAttnDownBlock2D', 'CrossAttnDownBlock2D', 'CrossAttnDownBlock2D', 'DownBlock2D'), mid_block_type: str = 'UNetMidBlock2DCrossAttn', up_block_types: tuple[str] = ('UpBlock2D', 'CrossAttnUpBlock2D', 'CrossAttnUpBlock2D', 'CrossAttnUpBlock2D'), only_cross_attention: bool | tuple[bool] = False, block_out_channels: tuple[int] = (320, 640, 1280, 1280), layers_per_block: int | tuple[int] = 2, downsample_padding: int = 1, mid_block_scale_factor: float = 1, act_fn: str = 'silu', norm_num_groups: int | None = 32, norm_eps: float = 1e-05, cross_attention_dim: int | tuple[int] = 1280, transformer_layers_per_block: int | tuple[int] = 1, attention_head_dim: int | tuple[int] = 8, num_attention_heads: int | tuple[int] | None = None, use_linear_projection: bool = False, class_embed_type: str | None = None, num_class_embeds: int | None = None, upcast_attention: bool = False, resnet_time_scale_shift: str = 'default', time_embedding_type: str = 'positional', time_embedding_dim: int | None = None, time_embedding_act_fn: str | None = None, timestep_post_act: str | None = None, time_cond_proj_dim: int | None = None, conv_in_kernel: int = 3, conv_out_kernel: int = 3, projection_class_embeddings_input_dim: int | None = None, class_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, optional, по умолчанию 0) : Сдвиг частоты, применяемый к временному эмбеддингу.

down_block_types (tuple[str], optional, по умолчанию ("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 или tuple[bool], необязательный, по умолчанию False) : Включать ли self-attention в базовых блоках трансформера, см. BasicTransformerBlock.

block_out_channels (tuple[int], optional, по умолчанию (320, 640, 1280, 1280)) : Кортеж количества выходных каналов для каждого блока.

layers_per_block (int, необязательный, по умолчанию 2) : Количество слоёв в каждом блоке.

downsample_padding (int, optional, по умолчанию 1) : Отступ, используемый для свёртки при уменьшении разрешения.

mid_block_scale_factor (float, необязательный, по умолчанию 1.0) : Коэффициент масштабирования для среднего блока.

act_fn (str, необязательный, по умолчанию "silu") : Функция активации, которую следует использовать.

norm_num_groups (int, optional, по умолчанию 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, optional, по умолчанию 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, optional, по умолчанию 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, optional, по умолчанию 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[[diffusers.AudioLDM2UNet2DConditionModel.forward]]

forward(sample: Tensor, timestep: typing.Union[torch.Tensor, float, int], encoder_hidden_states: Tensor, class_labels: typing.Optional[torch.Tensor] = None, timestep_cond: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, cross_attention_kwargs: dict[str, typing.Any] | None = None, encoder_attention_mask: typing.Optional[torch.Tensor] = None, return_dict: bool = True, encoder_hidden_states_1: typing.Optional[torch.Tensor] = None, encoder_attention_mask_1: typing.Optional[torch.Tensor] = None)

Источник

Параметры:

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

diffusers.AudioPipelineOutput[[diffusers.AudioPipelineOutput]]

diffusers.AudioPipelineOutput(audios: ndarray)

Источник

Параметры:

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

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

Xet Storage Details

Size:
55.8 kB
·
Xet hash:
28d70214d62c6cd8cf532ebae6fb00fb465a01e9050abbe0099cdbaa70774d8a

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.