Diffusers documentation
AutoencoderKLMiniMaxH3Audio
AutoencoderKLMiniMaxH3Audio
Bộ tự mã hóa âm thanh được sử dụng trong MiniMax-H3 của MiniMax. Nó nhận đầu vào dạng sóng và xuất ra dạng sóng, không có phần tiền xử lý mel và không có bộ tổng hợp âm thanh (vocoder) riêng biệt: bao gồm bộ mã hóa tích chập có bước nhảy theo dòng dõi DAC, phép chiếu chú ý nhân quả (causal-attention) lên chiều rộng ẩn của mô hình khuếch tán (diffusion), và bộ giải mã BigVGAN.
Bộ mã hóa nhảy 800 mẫu ở 32 kHz, tức là 40 latent mỗi giây, do đó một dạng sóng gồm 800 * n mẫu sẽ được mã hóa thành n latent. Các dạng sóng không phải là số nguyên lần của bước nhảy sẽ được đệm bên phải.
Chiếu chú ý nhân quả đi qua bộ điều phối chú ý, do đó set_attention_backend áp dụng cho nó; mặt nạ của nó là is_causal=True, được mọi backend tuân thủ ngoại trừ _native_npu, trong đó kernel của nó không nhận cờ nhân quả.
Autoencoder là mono, và nó chuẩn hóa latents theo từng kênh bằng latents_mean / latents_std thay vì một scaling_factor vô hướng. MiniMax-H3 xử lý stereo như hai mục batch, và nó luôn sử dụng trung bình hậu nghiệm (latent_dist.mode()), không bao giờ dùng một mẫu.
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
lớp diffusers.AutoencoderKLMiniMaxH3Audio
< source >( 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 )
Tham số
- encoder_dim (
int, mặc định là64) — Độ rộng kênh của lớp tích chập đầu tiên của bộ mã hóa; tăng gấp đôi ở mỗi giai đoạn hạ mẫu. - encoder_rates (
tuple[int], mặc định là(2, 4, 4, 5, 5)) — Các bước nhảy (strides) của bộ mã hóa. Tích của chúng (800) là độ dài bước nhảy (hop length), tức là 40 latent/giây ở 32 kHz. - latent_dim (
int, mặc định là2048) — Chiều rộng của thân encoder và đầu vào của decoder, trước/sau các phép chiếu latent. - latent_channels (
int, mặc định là32) — Độ rộng của latent khuếch tán, tức là số kênh đầu ra củamean_proj/logs_proj. - num_attention_heads (
int, mặc định là8) — Số lượng đầu trong phép chiếu chú ý nhân quảpre_block. - decoder_dim (
int, mặc định là1024) — Số lượng kênh ban đầu của BigVGAN; được giảm một nửa ở mỗi giai đoạn upsampling. - decoder_rates (
tuple[int], mặc định là(5, 5, 2, 2, 2, 2, 2)) — Tốc độ upsampling của BigVGAN. Tích của chúng phải bằngprod(encoder_rates). - decoder_kernel_sizes (
tuple[int], mặc định là(9, 9, 4, 4, 4, 4, 4)) — Kích thước kernel của transposed-convolution cho mỗi giai đoạn upsampling. - resblock_kernel_sizes (
tuple[int], mặc định là(3, 7, 11)) — Kích thước kernel của các khối AMP dư song song ở mỗi giai đoạn lấy mẫu lên. - resblock_dilation_sizes (
tuple[tuple[int]], mặc định là((1, 3, 5), (1, 3, 5), (1, 3, 5))) — Các giá trị dilation cho từng khối AMP. - sampling_rate (
int, mặc định là32000) — Tần số lấy mẫu của dạng sóng. - latents_mean (
list[float], tùy chọn) — Trung bình latent theo từng kênh mà pipeline sử dụng để chuẩn hóa / khử chuẩn hóa latent. - latents_std (
list[float], tùy chọn) — Độ lệch chuẩn tiềm ẩn theo từng kênh mà pipeline sử dụng để chuẩn hóa / khử chuẩn hóa các biến tiềm ẩn.
Autoencoder âm thanh được sử dụng bởi MiniMax-H3: một bộ mã hóa tích chập theo dòng DAC và một bộ giải mã BigVGAN, hoạt động trực tiếp trên dạng sóng mono 32 kHz.
Mô hình này kế thừa từ ModelMixin. Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các mô hình (chẳng hạn như tải xuống hoặc lưu).
encode
< source >( sample: Tensorreturn_dict: bool = True ) → MiniMaxH3AudioEncoderOutput or tuple
Tham số
- sample (
torch.Tensor) — Đường sóng mono có hình dạng[batch_size, 1, samples]. MiniMax-H3 truyền hai kênh stereo của một đoạn tham chiếu dưới dạngbatch_size = 2. - return_dict (
bool, mặc định làTrue) — Có nên trả về mộtMiniMaxH3AudioEncoderOutputthay vì một tuple thông thường hay không.
Trả về
MiniMaxH3AudioEncoderOutput hoặc tuple
Hậu nghiệm tiềm ẩn trên [batch_size, latent_channels, samples / 800].
Mã hóa một dạng sóng thành hậu nghiệm tiềm ẩn của âm thanh.
Tín hiệu sóng được đệm bên phải đến bội số của hop_length (800 mẫu) trước tiên. MiniMax-H3 luôn sử dụng mean hậu nghiệm (latent_dist.mode()) — đầu logs_proj không bao giờ được đánh giá bởi pipeline tham chiếu.
decode
< source >( latents: Tensorreturn_dict: bool = True ) → DecoderOutput or tuple
Tham số
- latents (
torch.Tensor) — Latents đã chuẩn hóa lại với shape[batch_size, latent_channels, num_frames]. MiniMax-H3 truyền hai kênh stereo dưới dạngbatch_size = 2. - return_dict (
bool, mặc định làTrue) — Có nên trả về một DecoderOutput thay vì một tuple thông thường hay không.
Trả về
DecoderOutput hoặc tuple
Dạng sóng có hình dạng [batch_size, 1, num_frames * 800], được kẹp trong khoảng [-1, 1].
Giải mã các ẩn âm thanh thành dạng sóng.
forward
< source >( sample: Tensorsample_posterior: bool = Falsereturn_dict: bool = Truegenerator: typing.Optional[torch.Generator] = None ) → DecoderOutput or tuple
Tham số
- sample (
torch.Tensor) — Đường sóng đơn (mono waveform) có hình dạng[batch_size, 1, samples]. - sample_posterior (
bool, mặc định làFalse) — Có lấy mẫu từ phân phối hậu nghiệm thay vì lấy mode của nó hay không. MiniMax-H3 sử dụng mode. - return_dict (
bool, mặc định làTrue) — Có nên trả về một DecoderOutput thay vì một tuple thông thường hay không. - generator (
torch.Generator, tùy chọn) — Generator được sử dụng khisample_posterior=True.
Trả về
DecoderOutput hoặc tuple
Đường sóng sau khi đi vòng qua có hình dạng [batch_size, 1, num_frames * 800], được kẹp trong khoảng [-1, 1].
Mã hóa rồi giải mã một dạng sóng.