Diffusers documentation
AutoencoderKLMiniMaxH3Audio
AutoencoderKLMiniMaxH3Audio
المشفّر-المفكّك التلقائي للصوت المستخدم في MiniMax-H3 من MiniMax. فهو يستقبل موجة صوتية ويخرج موجة صوتية، دون واجهة أمامية من نوع mel ودون مُصوِّت مستقل: يتكوّن من مُشفّر تلافيف متدرّجة من سلالة DAC، ومشروع انتباه سببي على عرض الحالة الكامنة للتشتت، ومُفكّك BigVGAN.
يقفز المُشفِّر 800 عينة عند 32 كيلوهرتز، أي 40 متغيرًا كامنًا في الثانية، لذا فإن موجة صوتية من 800 * n عينة تُشفَّر إلى n متغيرًا كامنًا. أما الموجات الصوتية التي لا تمثل عددًا صحيحًا من القفزات فتُملأ من اليمين.
تمرّ إسقاط الانتباه السببي عبر مُوجِّه الانتباه، لذا ينطبق set_attention_backend عليه؛ وقناعه هو is_causal=True، وهو ما تحترمه جميع الخلفيات باستثناء _native_npu، إذ لا يقبل نواة هذا الأخير أي علم سببي.
المشفّر-المفكّك التلقائي أحادي، وهو يُطبّع الكمونيات لكل قناة باستخدام latents_mean / latents_std بدلاً من معامل تحجيم قياسي scaling_factor. يحمل MiniMax-H3 الصوت المجسّم كعنصرين في batch، وهو يستهلك دائماً متوسط التوزيع اللاحق (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
فئة 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 )
المعاملات
- encoder_dim (
int، القيمة الافتراضية64) — عرض قناة أول طبقة الالتفاف في المُشفِّر؛ يتضاعف في كل مرحلة من مراحل تقليل الحجم. - encoder_rates (
tuple[int]، القيمة الافتراضية(2, 4, 4, 5, 5)) — خطوات الترميز. حاصل ضربها (800) هو طول القفزة، أي 40 كامنًا/ثانية عند 32 كيلوهرتز. - latent_dim (
int، القيمة الافتراضية2048) — عرض جذع المُشفِّر ومدخل المُفكِّك، قبل/بعد الإسقاطات الكامنة. - latent_channels (
int، القيمة الافتراضية32) — عرض الكامنة الانتشارية، أي قنوات المخرجات لـmean_proj/logs_proj. - num_attention_heads (
int، القيمة الافتراضية8) — عدد الرؤوس في إسقاط الانتباه السببي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)) — حجم نواة الالتفاف المعكوس (Transposed-convolution) لكل مرحلة من مراحل رفع العينة (upsampling). - resblock_kernel_sizes (
tuple[int]، القيمة الافتراضية(3, 7, 11)) — أحجام النوى (Kernel sizes) للكتل المتبقية المتوازية من نوع AMP في كل مرحلة من مراحل رفع العينة (upsampling). - resblock_dilation_sizes (
tuple[tuple[int]])، القيمة الافتراضية((1, 3, 5), (1, 3, 5), (1, 3, 5))) — قيم التمدد (dilations) لكل كتلة AMP. - sampling_rate (
int، القيمة الافتراضية32000) — معدل أخذ عينات الموجة. - latents_mean (
list[float]، اختياري) — متوسط الكامن لكل قناة يستخدمه خط الأنابيب لتطبيع/إلغاء تطبيع الكامنين. - latents_std (
list[float]، اختياري) — انحراف معياري لكل قناة من الكامنات (latents) تستخدمه خط المعالجة (pipeline) لتطبيع الكامنات وإزالة تطبيعها.
المُرمِّز الصوتي التلقائي المستخدم في MiniMax-H3: مُرمِّز تجميعي من سلالة DAC ومُفكِّك BigVGAN، يعمل مباشرة على موجات أحادية التردد 32 كيلو هرتز.
يرث هذا النموذج من ModelMixin. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع النماذج (مثل التحميل أو الحفظ).
encode
< source >( sample: Tensorreturn_dict: bool = True ) → MiniMaxH3AudioEncoderOutput or tuple
المعاملات
- sample (
torch.Tensor) — موجة أحادية (Mono) من الشكل[batch_size, 1, samples]. يمرر MiniMax-H3 قناتي الصوت الستيريو (Stereo) لمقطع مرجعي على شكلbatch_size = 2. - return_dict (
bool، القيمة الافتراضيةTrue) — ما إذا كان يجب إرجاعMiniMaxH3AudioEncoderOutputبدلاً من tuple عادي.
يعيد
MiniMaxH3AudioEncoderOutput أو tuple
اللاحق الكامن على [batch_size, latent_channels, samples / 800].
ترميز موجة صوتية إلى الخلفية الكامنة الصوتية.
يتم أولاً ملء الموجة من اليمين حتى تصبح مضاعفاً لـ hop_length (800 عينة). يستهلك MiniMax-H3 دائماً المتوسط اللاحق (latent_dist.mode()) — ولا يتم تقييم رأس logs_proj أبداً بواسطة خط الأنابيب المرجعي.
decode
< source >( latents: Tensorreturn_dict: bool = True ) → DecoderOutput or tuple
المعاملات
- latents (
torch.Tensor) — قيم latents غير المعيارية ذات الشكل[batch_size, latent_channels, num_frames]. يمرر MiniMax-H3 قناتي stereo كـbatch_size = 2. - return_dict (
bool، القيمة الافتراضيةTrue) — ما إذا كان يجب إرجاع DecoderOutput بدلاً من tuple عادي.
يعيد
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) — موجة أحادية (Mono) بأبعاد[batch_size, 1, samples]. - sample_posterior (
bool، القيمة الافتراضيةFalse) — ما إذا كان سيتم أخذ عينة من التوزيع اللاحق بدلاً من أخذ وضعه. يستخدم MiniMax-H3 الوضع. - return_dict (
bool، القيمة الافتراضيةTrue) — ما إذا كان يجب إرجاع DecoderOutput بدلاً من tuple عادي. - generator (
torch.Generator، اختياري) — المولّد المستخدم عندsample_posterior=True.
يعيد
DecoderOutput أو tuple
موجة الصوت المُعاد إرسالها ذات الشكل [batch_size, 1, num_frames * 800]، والمقيدة بالحدود [-1, 1].
encode ثم decode موجة صوتية.