Diffusers documentation
AutoencoderKLMiniMaxH3Audio
AutoencoderKLMiniMaxH3Audio
O autoencoder de áudio usado em MiniMax-H3 pela MiniMax. Ele recebe e produz waveforms, sem front-end mel e sem vocoder separado: um encoder convolucional com strides da linhagem DAC, uma projeção com atenção causal para a largura do latente de difusão e um decoder BigVGAN.
O codificador avança 800 amostras a 32 kHz, ou seja, 40 latentes por segundo, de modo que uma forma de onda de 800 * n amostras é codificada em n latentes. Formas de onda que não correspondem a um número inteiro de avanços são preenchidas à direita.
A projeção de atenção causal passa pelo despachador de atenção, portanto set_attention_backend se aplica a ela; sua máscara é is_causal=True, que todos os backends respeitam, exceto _native_npu, cujo kernel não aceita uma flag causal.
O autoencoder é mono e normaliza os latentes por canal com latents_mean / latents_std, em vez de um scaling_factor escalar. O MiniMax-H3 carrega o estéreo como dois itens de batch e sempre consome a média do posterior (latent_dist.mode()), nunca uma amostra.
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
classe 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 )
Parâmetros
- encoder_dim (
int, padrão64) — Largura do canal da primeira convolução do codificador; dobra em cada etapa de downsampling. - encoder_rates (
tuple[int], padrão(2, 4, 4, 5, 5)) — Passos do codificador. O produto deles (800) é o comprimento do salto, ou seja, 40 latentes/s a 32 kHz. - latent_dim (
int, padrão2048) — Largura do tronco do codificador e da entrada do decodificador, antes/depois das projeções latentes. - latent_channels (
int, padrão32) — Largura do latente de difusão, ou seja, os canais de saída demean_proj/logs_proj. - num_attention_heads (
int, padrão8) — Número de cabeças na projeção de atenção causalpre_block. - decoder_dim (
int, padrão1024) — Número inicial de canais do BigVGAN; reduzido pela metade em cada etapa de upsampling. - decoder_rates (
tuple[int], padrão(5, 5, 2, 2, 2, 2, 2)) — Taxas de upsampling do BigVGAN. O produto delas deve ser igual aprod(encoder_rates). - decoder_kernel_sizes (
tuple[int], padrão(9, 9, 4, 4, 4, 4, 4)) — Tamanho do kernel da convolução transposta por estágio de upsampling. - resblock_kernel_sizes (
tuple[int], padrão(3, 7, 11)) — Tamanhos dos kernels dos blocos residuais AMP paralelos em cada etapa de upsampling. - resblock_dilation_sizes (
tuple[tuple[int]], padrão((1, 3, 5), (1, 3, 5), (1, 3, 5))) — Dilatações por bloco AMP. - sampling_rate (
int, padrão32000) — Taxa de amostragem da forma de onda. - latents_mean (
list[float], opcional) — Média latente por canal que o pipeline usa para normalizar/denormalizar os latentes. - latents_std (
list[float], opcional) — Desvio padrão latente por canal que o pipeline usa para normalizar/denormalizar os latentes.
O autoencoder de áudio usado pelo MiniMax-H3: um codificador convolucional de linhagem DAC e um decodificador BigVGAN, operando diretamente em formas de onda mono de 32 kHz.
Este modelo herda de ModelMixin. Consulte a documentação da superclasse para os métodos genéricos que a biblioteca implementa para todos os modelos (como download ou salvamento).
encode
< source >( sample: Tensorreturn_dict: bool = True ) → MiniMaxH3AudioEncoderOutput or tuple
Parâmetros
- sample (
torch.Tensor) — Forma de onda mono com formato[batch_size, 1, samples]. O MiniMax-H3 passa os dois canais estéreo de um clipe de referência comobatch_size = 2. - return_dict (
bool, padrãoTrue) — Se deve retornar umMiniMaxH3AudioEncoderOutputem vez de uma tupla simples.
Retorna
MiniMaxH3AudioEncoderOutput ou tuple
A posterior latente sobre [batch_size, latent_channels, samples / 800].
Codifique uma forma de onda no posterior latente de áudio.
A forma de onda é primeiro preenchida à direita até um múltiplo de hop_length (800 amostras). O MiniMax-H3 sempre consome a média posterior (latent_dist.mode()) — o cabeçalho logs_proj nunca é avaliado pelo pipeline de referência.
decode
< source >( latents: Tensorreturn_dict: bool = True ) → DecoderOutput or tuple
Parâmetros
- latents (
torch.Tensor) — Latentes denormalizados de forma[batch_size, latent_channels, num_frames]. O MiniMax-H3 passa os dois canais estéreo comobatch_size = 2. - return_dict (
bool, padrãoTrue) — Se deve retornar um DecoderOutput em vez de uma tupla simples.
Retorna
DecoderOutput ou tuple
Forma de onda de forma [batch_size, 1, num_frames * 800], limitada a [-1, 1].
Decodifique os latentes de áudio em uma forma de onda.
forward
< source >( sample: Tensorsample_posterior: bool = Falsereturn_dict: bool = Truegenerator: typing.Optional[torch.Generator] = None ) → DecoderOutput or tuple
Parâmetros
- sample (
torch.Tensor) — Forma de onda mono com formato[batch_size, 1, samples]. - sample_posterior (
bool, padrãoFalse) — Se deve amostrar a posterior em vez de tomar seu modo. O MiniMax-H3 usa o modo. - return_dict (
bool, padrãoTrue) — Se deve retornar um DecoderOutput em vez de uma tupla simples. - generator (
torch.Generator, opcional) — Gerador usado quandosample_posterior=True.
Retorna
DecoderOutput ou tuple
A forma de onda de ida e volta, de forma [batch_size, 1, num_frames * 800], limitada a [-1, 1].
Codifique e depois decodifique uma forma de onda.