Diffusers documentation

AutoencoderKLMiniMaxH3Audio

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

AutoencoderKLMiniMaxH3Audio

MiniMax의 MiniMax-H3에 사용되는 오디오 오토인코더입니다. 입력과 출력 모두 웨이브폼이며, 멜 프론트엔드나 별도의 보코더가 없습니다. DAC 계통의 스트라이드 컨볼루션 인코더, 디퓨전 잠재 변수 폭으로의 인과적 어텐션 투영, 그리고 BigVGAN 디코더로 구성됩니다.

인코더는 32 kHz에서 800샘플을 건너뛰며, 즉 초당 40개의 latent를 생성합니다. 따라서 800 * n샘플의 웨이브폼은 n개의 latent로 인코딩됩니다. 홉의 정수 배가 아닌 웨이브폼은 오른쪽으로 패딩됩니다.

causal-attention 투영은 attention dispatcher를 통해 처리되므로 set_attention_backend가 적용됩니다. 해당 마스크는 is_causal=True이며, _native_npu를 제외한 모든 백엔드가 이를 준수합니다. _native_npu의 커널은 causal 플래그를 받지 않습니다.

Autoencoder는 mono이며, 스칼라 scaling_factor 대신 latents_mean / latents_std로 채널별로 latents를 정규화합니다. MiniMax-H3는 stereo를 두 개의 batch 항목으로 처리하며, 항상 posterior mean(latent_dist.mode())을 사용하고 샘플은 사용하지 않습니다.

import torch
from diffusers import AutoencoderKLMiniMaxH3Audio

audio_vae = AutoencoderKLMiniMaxH3Audio.from_pretrained(
    "MiniMaxAI/MiniMax-H3", subfolder="audio_vae", dtype=torch.float32
).to("cuda")  # or "mps", "xpu", "cpu"

AutoencoderKLMiniMaxH3Audio

class diffusers.AutoencoderKLMiniMaxH3Audio

< >

( encoder_dim: int = 64encoder_rates: tuple[int, ...] = (2, 4, 4, 5, 5)latent_dim: int = 2048latent_channels: int = 32num_attention_heads: int = 8decoder_dim: int = 1024decoder_rates: tuple[int, ...] = (5, 5, 2, 2, 2, 2, 2)decoder_kernel_sizes: tuple[int, ...] = (9, 9, 4, 4, 4, 4, 4)resblock_kernel_sizes: tuple[int, ...] = (3, 7, 11)resblock_dilation_sizes: tuple[tuple[int, ...], ...] = ((1, 3, 5), (1, 3, 5), (1, 3, 5))sampling_rate: int = 32000latents_mean: list[float] | None = Nonelatents_std: list[float] | None = None )

매개변수

  • encoder_dim (int, 기본값 64) — 인코더의 첫 번째 컨볼루션 채널 폭입니다. 모든 다운샘플링 단계에서 두 배로 증가합니다.
  • encoder_rates (tuple[int], 기본값 (2, 4, 4, 5, 5)) — Encoder의 strides입니다. 이들의 곱(800)은 hop length, 즉 32 kHz에서 40 latents/s를 의미합니다.
  • latent_dim (int, 기본값 2048) — latent projection 전/후의 encoder trunk 및 decoder 입력의 폭입니다.
  • latent_channels (int, 기본값 32) — 확산 잠재 변수의 폭, 즉 mean_proj / logs_proj 출력 채널 수입니다.
  • num_attention_heads (int, 기본값 8) — causal-attention projection pre_block의 헤드 수입니다.
  • decoder_dim (int, 기본값 1024) — BigVGAN의 초기 채널 수입니다. 모든 업샘플링 단계에서 절반으로 줄어듭니다.
  • decoder_rates (tuple[int], 기본값 (5, 5, 2, 2, 2, 2, 2)) — BigVGAN 업샘플링 비율입니다. 이 값들의 곱은 prod(encoder_rates)와 같아야 합니다.
  • decoder_kernel_sizes (tuple[int], 기본값 (9, 9, 4, 4, 4, 4, 4)) — 업샘플링 단계별 전치 합성곱 커널 크기.
  • resblock_kernel_sizes (tuple[int], 기본값 (3, 7, 11)) — 각 업샘플링 단계에서 병렬 AMP 잔차 블록의 커널 크기입니다.
  • resblock_dilation_sizes (tuple[tuple[int]], 기본값 ((1, 3, 5), (1, 3, 5), (1, 3, 5))) — AMP 블록별 dilation 값.
  • sampling_rate (int, 기본값 32000) — Waveform의 샘플링 레이트입니다.
  • latents_mean (list[float], 선택 사항) — 파이프라인이 latents를 정규화/역정규화하는 데 사용하는 채널별 latent 평균입니다.
  • latents_std (list[float], 선택 사항) — 파이프라인이 latents를 정규화/역정규화하는 데 사용하는 채널별 latent 표준 편차입니다.

MiniMax-H3에서 사용하는 오디오 오토인코더: DAC 계통의 컨볼루션 인코더와 BigVGAN 디코더로 구성되며, 모노 32 kHz 웨이브폼을 직접 처리합니다.

이 모델은 ModelMixin에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장 등)에 대해서는 상위 클래스 문서를 확인하세요.

encode

< >

( sample: Tensorreturn_dict: bool = True ) → MiniMaxH3AudioEncoderOutput or tuple

매개변수

  • sample (torch.Tensor) — [batch_size, 1, samples] 형태의 모노 웨이브폼입니다. MiniMax-H3는 참조 클립의 두 스테레오 채널을 batch_size = 2로 전달합니다.
  • return_dict (bool, 기본값 True) — 일반 튜플 대신 MiniMaxH3AudioEncoderOutput을 반환할지 여부.

반환값

MiniMaxH3AudioEncoderOutput 또는 tuple

[batch_size, latent_channels, samples / 800]에 대한 잠재적 사후 분포.

음파를 오디오 잠재적 사후 분포로 인코딩합니다.

파형은 먼저 hop_length(800샘플)의 배수로 오른쪽 패딩됩니다. MiniMax-H3는 항상 후방 mean(latent_dist.mode())를 사용합니다. logs_proj 헤드는 참조 파이프라인에서 평가되지 않습니다.

decode

< >

( latents: Tensorreturn_dict: bool = True ) → DecoderOutput or tuple

매개변수

  • latents (torch.Tensor) — [batch_size, latent_channels, num_frames] 모양의 정규화되지 않은 latents입니다. MiniMax-H3는 두 개의 스테레오 채널을 batch_size = 2로 전달합니다.
  • return_dict (bool, 기본값 True) — 일반 튜플 대신 DecoderOutput를 반환할지 여부.

반환값

DecoderOutput 또는 tuple

[batch_size, 1, num_frames * 800] 형태의 웨이브폼이며, [-1, 1] 범위로 클램프됩니다.

오디오 잠재 변수를 웨이브폼으로 디코딩합니다.

forward

< >

( sample: Tensorsample_posterior: bool = Falsereturn_dict: bool = Truegenerator: typing.Optional[torch.Generator] = None ) → DecoderOutput or tuple

매개변수

  • sample (torch.Tensor) — [batch_size, 1, samples] 모양의 모노 웨이브폼.
  • sample_posterior (bool, 기본값 False) — 모드를 취하는 대신 사후 분포에서 샘플링할지 여부입니다. MiniMax-H3은 모드를 사용합니다.
  • return_dict (bool, 기본값 True) — 일반 튜플 대신 DecoderOutput를 반환할지 여부.
  • generator (torch.Generator, 선택 사항) — sample_posterior=True일 때 사용되는 Generator입니다.

반환값

DecoderOutput 또는 tuple

[batch_size, 1, num_frames * 800] 모양의 왕복 처리된 웨이브폼이며, [-1, 1] 범위로 클램프됩니다.

Encode then decode a waveform.

Update on GitHub