Diffusers documentation
AutoencoderKLMiniMaxH3Audio
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
< source >( encoder_dim: int = 64encoder_rates: tuple = (2, 4, 4, 5, 5)latent_dim: int = 2048latent_channels: int = 32num_attention_heads: int = 8decoder_dim: int = 1024decoder_rates: tuple = (5, 5, 2, 2, 2, 2, 2)decoder_kernel_sizes: tuple = (9, 9, 4, 4, 4, 4, 4)resblock_kernel_sizes: tuple = (3, 7, 11)resblock_dilation_sizes: tuple = ((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 projectionpre_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
< source >( 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]에 대한 잠재적 사후 분포.
Encode a waveform into the audio latent posterior.
파형은 먼저 hop_length(800샘플)의 배수로 오른쪽 패딩됩니다. MiniMax-H3는 항상 후방 mean(latent_dist.mode())를 사용합니다. logs_proj 헤드는 참조 파이프라인에서 평가되지 않습니다.
decode
< source >( 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
< source >( 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.