Transformers documentation
VibeVoice
نُشر هذا النموذج في أوراق HF في 26 أغسطس 2025، وأُضيف إلى مكتبة Hugging Face Transformers في 27 أغسطس 2026.
VibeVoice
نظرة عامة
VibeVoice هو إطار عمل جديد لتوليد كلام عالي الدقة وطويل المدة لمتحدثين متعددين، وذلك من خلال توظيف نهج الانتشار (diffusion) للرمز التالي ضمن بنية نموذج لغة كبير (LLM). وقد صُمم لالتقاط "الروح" الحقيقية للمحادثة، وهو مناسب بشكل خاص لتوليد محتوى صوتي مثل البودكاست والكتب الصوتية متعددة المشاركين.
يتوفر نقطتا تفتيش للنموذج في:
تمت مساهمة هذا النموذج من قِبل Eric Bezzam.
البنية

يتكامل إطار عمل VibeVoice مع ثلاثة مكونات رئيسية:
- مُرمّزات الكلام المستمرة: مُرمّزات صوتية ودلالية متخصصة، حيث يستخدم المُرمّز الصوتي نموذج $\sigma$-VAE لتحقيق ضغط منخفض للغاية (7.5 رمز/ثانية، 3200x) من أجل قابلية التوسع والوفاء، بينما يستخدم المُرمّز الدلالي مهمة بديلة للتعرف الآلي على الكلام لاستخراج ميزات تركز على المحتوى.
- نموذج اللغة الكبير (LLM): يستخدم Qwen2.5 (في إصداري 1.5B و7B) كنموذج تسلسل أساسي.
- رأس الانتشار على مستوى الرموز: مشروط بحالة النموذج اللغوي الكبيرة المخفية، وهو مسؤول عن التنبؤ بخصائص VAE المستمرة بطريقة التدفق.
يتوفر نقطة الفحص الأصلية لنموذج VibeVoice-1.5B تحت منظمة Microsoft على Hugging Face.
الميزات الرئيسية
- التركيب الطويل: يمكنه تركيب محادثات كلامية متعددة المتحدثين تصل مدتها إلى 90 دقيقة.
- حوار متعدد المتحدثين: قادر على توليد صوت يحتوي على ما يصل إلى 4 متحدثين.
- جودة متقدمة: يتفوق على الخطوط الأساسية في المقاييس الذاتية والموضوعية على حد سواء.
- ضغط عالٍ: يُحقَّق بواسطة مُرمِّز صوتي جديد يعمل بمعدل إطارات منخفض للغاية يبلغ 7.5 هرتز.
- نموذج LLM قابل للتوسع: يؤدي توسيع النموذج الأساسي LLM من 1.5 مليار إلى 7 مليارات إلى تحسين كبير في الجودة الإدراكية.
الاستخدام
الإعداد
يُعدّ جدولة الضوضاء ضروريًا لأن توليد الصوت يعتمد على عملية الانتشار. وأبسط طريقة (والتي اتبعها مطوّر النموذج) هي استخدام جدولة ضوضاء من مكتبة diffusers. وبشكل افتراضي، سيقوم النموذج بإنشاء جدولة ضوضاء داخليًا باستخدام diffusers.
pip install diffusers
pip install soundfile # for saving audioتحميل النموذج
from transformers import AutoProcessor, AutoModelForTextToWaveform
model_id = "vibevoice/VibeVoice-1.5B-hf" # "vibevoice/VibeVoice-7B-hf"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForTextToWaveform.from_pretrained(model_id)النص إلى كلام (TTS)
import os
from transformers import AutoProcessor, AutoModelForTextToWaveform
model_id = "vibevoice/VibeVoice-1.5B-hf" # "vibevoice/VibeVoice-7B-hf"
text = "Hello, nice to meet you. How are you?"
# Load model
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForTextToWaveform.from_pretrained(model_id, device_map="auto")
# Prepare input
conversation = [{"role": "0", "content": [{"type": "text", "text": text}]}]
inputs = processor.apply_chat_template(
conversation, return_dict=True, tokenize=True, add_generation_prompt=True,
).to(model.device, model.dtype)
# Generate!
audio = model.generate(**inputs)
# Save to file
file_name = f"{os.path.basename(model_id)}_tts.wav"
processor.save_audio(audio, file_name)
print(f"Saved output to {file_name}")استنساخ الصوت في TTS
يمكن استنساخ صوت من خلال تقديم صوت مرجعي إلى جانب النص داخل قاموس قالب المحادثة.
import os
from transformers import AutoProcessor, AutoModelForTextToWaveform, set_seed
model_id = "vibevoice/VibeVoice-1.5B-hf" # "vibevoice/VibeVoice-7B-hf"
text = "Hello, nice to meet you. How are you?"
set_seed(42) # for deterministic results
# Load model
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForTextToWaveform.from_pretrained(model_id, device_map="auto")
sampling_rate = processor.feature_extractor.sampling_rate
# Prepare input
conversation = [
{
"role": "0",
"content": [
{"type": "text", "text": text},
{
"type": "audio",
"url": "https://huggingface.co/datasets/bezzam/vibevoice_samples/resolve/main/voices/en-Alice_woman.wav",
},
],
}
]
inputs = processor.apply_chat_template(
conversation, return_dict=True, tokenize=True, add_generation_prompt=True,
).to(model.device, model.dtype)
# Generate!
audio = model.generate(**inputs)
# Save to file
fn = f"{os.path.basename(model_id)}_tts_clone.wav"
processor.save_audio(audio, fn)
print(f"Saved output to {fn}")إنشاء بودكاست من نص
فيما يلي مثال لتوليد محادثة بين متحدثين، حيث يتم استنساخ أصواتهما من خلال تقديم صوت مرجعي لكل معرف دور فريد في قالب المحادثة.
استخدم المثال أدناه أيضاً خيار monitor_progress لتتبع تقدم التوليد.
import os
import time
from transformers import AutoProcessor, AutoModelForTextToWaveform
model_id = "vibevoice/VibeVoice-1.5B-hf" # "vibevoice/VibeVoice-7B-hf"
max_new_tokens = 400 # `None` to ensure full generation
# create conversation with an audio for the first time a speaker appears to clone that particular voice
conversation = [
{
"role": "0",
"content": [
{
"type": "text", "text": "Hello everyone, and welcome to the VibeVoice podcast. I'm your host, Linda, and today we're getting into one of the biggest debates in all of sports: who's the greatest basketball player of all time? I'm so excited to have Thomas here to talk about it with me.",
},
{
"type": "audio", "url": "https://huggingface.co/datasets/bezzam/vibevoice_samples/resolve/main/voices/en-Alice_woman.wav",
},
],
},
{
"role": "1",
"content": [
{
"type": "text", "text": "Thanks so much for having me, Linda. You're absolutely right—this question always brings out some seriously strong feelings.",
},
{
"type": "audio", "url": "https://huggingface.co/datasets/bezzam/vibevoice_samples/resolve/main/voices/en-Frank_man.wav",
},
],
},
{
"role": "0",
"content": [
{
"type": "text", "text": "Okay, so let's get right into it. For me, it has to be Michael Jordan. Six trips to the Finals, six championships. That kind of perfection is just incredible.",
},
],
},
{
"role": "1",
"content": [
{
"type": "text", "text": "Oh man, the first thing that always pops into my head is that shot against the Cleveland Cavaliers back in '89. Jordan just rises, hangs in the air forever, and just sinks it",
},
],
},
]
# Load model
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForTextToWaveform.from_pretrained(model_id, device_map="auto")
# prepare inputs
inputs = processor.apply_chat_template(
conversation, return_dict=True, tokenize=True, add_generation_prompt=True,
).to(model.device, model.dtype)
# Generate audio with a progress bar to track generation
model.generation_config.max_new_tokens = max_new_tokens
start_time = time.time()
audio = model.generate(**inputs, monitor_progress=True)
generation_time = time.time() - start_time
print(f"Generation time: {generation_time:.2f} seconds")
# Save audio
fn = f"{os.path.basename(model_id)}_script.wav"
processor.save_audio(audio, fn)
print(f"Saved output to {fn}")الاستدلال المجمّع
لمعالجة الدفعات، يمكن تمرير قائمة من المحادثات إلى processor.apply_chat_template:
import os
import time
from transformers import AutoProcessor, AutoModelForTextToWaveform
model_id = "vibevoice/VibeVoice-1.5B-hf" # "vibevoice/VibeVoice-7B-hf"
max_new_tokens = 400 # `None` to ensure full generation
conversation = [
[
{
"role": "0",
"content": [
{
"type": "text", "text": "Hello everyone, and welcome to the VibeVoice podcast. I'm your host, Linda, and today we're getting into one of the biggest debates in all of sports: who's the greatest basketball player of all time? I'm so excited to have Thomas here to talk about it with me.",
},
{
"type": "audio",
"url": "https://huggingface.co/datasets/bezzam/vibevoice_samples/resolve/main/voices/en-Alice_woman.wav",
},
],
},
{
"role": "1",
"content": [
{
"type": "text", "text": "Thanks so much for having me, Linda.",
},
{
"type": "audio", "url": "https://huggingface.co/datasets/bezzam/vibevoice_samples/resolve/main/voices/en-Frank_man.wav",
},
],
},
],
[
{
"role": "0",
"content": [
{
"type": "text", "text": "Hello and welcome to Planet in Peril. I'm your host, Alice. We're here today to discuss a really sobering new report that looks back at the last ten years of climate change. I'm joined by our expert panel. Welcome Carter, Frank, and Maya.",
},
{
"type": "audio", "url": "https://huggingface.co/datasets/bezzam/vibevoice_samples/resolve/main/voices/en-Alice_woman.wav",
},
],
},
{
"role": "1",
"content": [
{"type": "text", "text": "Hi Alice, it's great to be here. I'm Carter."},
{
"type": "audio", "url": "https://huggingface.co/datasets/bezzam/vibevoice_samples/resolve/main/voices/en-Carter_man.wav",
},
],
},
{
"role": "2",
"content": [
{"type": "text", "text": "Hello, uh, I'm Frank. Good to be on."},
{
"type": "audio", "url": "https://huggingface.co/datasets/bezzam/vibevoice_samples/resolve/main/voices/en-Frank_man.wav",
},
],
},
{
"role": "3",
"content": [
{"type": "text", "text": "And I'm Maya. Thanks for having me."},
{
"type": "audio", "url": "https://huggingface.co/datasets/bezzam/vibevoice_samples/resolve/main/voices/en-Maya_woman.wav",
},
],
},
],
]
# Load model
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForTextToWaveform.from_pretrained(model_id, device_map="auto")
# prepare inputs
inputs = processor.apply_chat_template(
conversation, return_dict=True, tokenize=True, add_generation_prompt=True,
).to(model.device, model.dtype)
# Generate audio with a progress bar to track generation
model.generation_config.max_new_tokens = max_new_tokens
start_time = time.time()
audio = model.generate(**inputs, monitor_progress=True)
generation_time = time.time() - start_time
print(f"Generation time: {generation_time:.2f} seconds")
# Save audio
output_dir = f"{os.path.basename(model_id)}_batch"
processor.save_audio(audio, output_dir)
print(f"Saved output to {output_dir}")استخدام خط الأنابيب
يمكن أيضًا تحميل VibeVoice كخط أنابيب. كما نُبيّن أدناه كيفية ضبط معاملات الانتشار.
import os
import soundfile as sf
from transformers import pipeline
model_id = "vibevoice/VibeVoice-1.5B-hf" # "vibevoice/VibeVoice-7B-hf"
text = "Hello, nice to meet you. How are you?"
pipe = pipeline("text-to-speech", model=model_id)
# Generate!
conversation = [
{
"role": "0",
"content": [
{"type": "text", "text": text},
{
"type": "audio", "url": "https://huggingface.co/datasets/bezzam/vibevoice_samples/resolve/main/voices/en-Alice_woman.wav",
},
],
}
]
# optional kwargs for generation
generate_kwargs = {"guidance_scale": 1.3, "num_diffusion_steps": 10}
output = pipe(conversation, generate_kwargs=generate_kwargs)
# Save to file
fn = f"{os.path.basename(model_id)}_pipeline.wav"
sf.write(fn, output["audio"], output["sampling_rate"])
print(f"Saved output to {fn}")التدريب
يمكن تدريب VibeVoice باستخدام الخسارة المُخرَجة من النموذج.
from transformers import AutoProcessor, AutoModelForTextToWaveform
model_id = "vibevoice/VibeVoice-1.5B-hf" # "vibevoice/VibeVoice-7B-hf"
# Load model and processor
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForTextToWaveform.from_pretrained(
model_id,
diffusion_loss_weight=0.75, # by default, equal weighting (0.5) of language modeling loss (CE) and diffusion loss is applied
device_map="auto"
)
model.train()
# Prepare batch of 2
conversation = [
[
{
"role": "0",
"content": [
{
"type": "text", "text": "VibeVoice is this novel framework designed for generating expressive, long-form, multi-speaker, conversational audio.",
},
{
"type": "audio", "url": "https://huggingface.co/datasets/bezzam/vibevoice_samples/resolve/main/realtime_model/vibevoice_tts_german.wav",
},
],
}
],
# NOTE: multiple speakers not supported yet
[
{
"role": "0",
"content": [
{
"type": "text", "text": "Hello everyone and welcome to the VibeVoice podcast. I'm your host, Alex, and today we're getting into one of the biggest debates in all of sports: who's the greatest basketball player of all time? I'm so excited to have Sam here to talk about it with me. Thanks so much for having me, Alex. And you're absolutely right. This question always brings out some seriously strong feelings. Okay, so let's get right into it. For me, it has to be Michael Jordan. Six trips to the finals, six championships. That kind of perfection is just incredible. Oh man, the first thing that always pops into my head is that shot against the Cleveland Cavaliers back in '89. Jordan just rises, hangs in the air forever, and just sinks it.",
},
{
"type": "audio",
"url": "https://huggingface.co/datasets/bezzam/vibevoice_samples/resolve/main/example_output/VibeVoice-1.5B_output.wav",
},
],
}
],
]
# Process with apply_chat_template and output_labels=True for training
inputs = processor.apply_chat_template(
conversation,
tokenize=True,
return_dict=True,
processor_kwargs={"output_labels": True},
).to(model.device, model.dtype)
# Forward pass
outputs = model(**inputs, ddpm_batch_multiplier=2, num_diffusion_steps=2)
print(f"Total loss: {outputs.loss.item():.4f}")
# Backward pass
outputs.loss.backward()Torch compile
يمكن تجميع النموذج باستخدام torch.compile للحصول على استنتاج أسرع. يلزم إجراء بعض عمليات الإحماء قبل أن يصل النموذج المُجمَّع إلى سرعته الكاملة.
على بطاقة A100 مع حجم دفعة 4، لاحظنا تسريعًا بنسبة ~1.5x بين الاستدلال المُجمَّع وغير المُجمَّع، راجع هذا النص البرمجي.
import os
import time
import torch
from transformers import AutoModelForTextToWaveform, AutoProcessor, CompileConfig
model_id = "vibevoice/VibeVoice-1.5B-hf" # "vibevoice/VibeVoice-7B-hf"
num_warmup = 5
max_new_tokens = 128
torch.set_float32_matmul_precision("high")
# Load processor + model
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForTextToWaveform.from_pretrained(model_id, dtype=torch.bfloat16, device_map="auto").eval()
# Prepare inputs
conversation = [
[
{
"role": "0",
"content": [
{"type": "text", "text": "VibeVoice is a novel framework for generating expressive audio."},
{
"type": "audio", "url": "https://huggingface.co/datasets/bezzam/vibevoice_samples/resolve/main/realtime_model/vibevoice_tts_german.wav",
},
],
}
],
] * 4 # batch size 4
inputs = processor.apply_chat_template(
conversation, tokenize=True, return_dict=True, add_generation_prompt=True,
).to(model.device, model.dtype)
compile_config = CompileConfig(mode="default", dynamic=False)
generate_kwargs = dict(
**inputs,
max_new_tokens=max_new_tokens,
cache_implementation="static",
compile_config=compile_config,
)
# Warmup
print("Warming up...")
warmup_start = time.time()
with torch.inference_mode():
for _ in range(num_warmup):
torch.compiler.cudagraph_mark_step_begin()
_ = model.generate(**generate_kwargs)
torch.cuda.synchronize()
print(f"Warmup complete in {time.time() - warmup_start:.2f}s. Ready!")
# Apply model
with torch.inference_mode():
torch.compiler.cudagraph_mark_step_begin()
audio = model.generate(**generate_kwargs)
output_folder = f"{os.path.basename(model_id)}_compiled_output"
processor.save_audio(audio, output_folder)
print(f"Saved output to {output_folder}")VibeVoiceConfig
فئة transformers.VibeVoiceConfig
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Noneaudio_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonesemantic_model_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonetext_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonediffusion_head_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonepad_token_id: int = 151643eos_token_id: int = 151643audio_bos_token_id: int = 151652audio_eos_token_id: int = 151653audio_token_id: int = 151654diffusion_loss_weight: float = 0.5 )
المعاملات
- audio_config (
Union[dict, ~configuration_utils.PreTrainedConfig], اختياري) — كائن الإعداد أو قاموس العمود الفقري الصوتي. - semantic_model_config (
Union[AutoConfig, dict]، اختياري) — كائن الإعدادات أو قاموس مُشفِّر مُجزِّئ الكلمات الدلالية. يستخرج هذا المُجزِّئ الميزات الدلالية من الصوت. - text_config (
Union[dict, ~configuration_utils.PreTrainedConfig]، اختياري) — كائن الإعدادات أو قاموس العمود الفقري النصي. - diffusion_head_config (
Union[VibeVoiceDiffusionHeadConfig, dict], اختياري) — كائن الإعداد أو قاموس رأس الانتشار المستخدم لتوليد الكميات الصوتية. - pad_token_id (
int، اختياري، القيمة الافتراضية151643) — معرّف الرمز المستخدم للتعبئة في المفردات. - eos_token_id (
int، اختياري، القيمة الافتراضية151643) — معرّف الرمز المستخدم لنهاية البث في المفردات. - audio_bos_token_id (
int, اختياري، القيمة الافتراضية 151652) — معرّف الرمز الذي يشير إلى بداية رموز الصوت. - audio_eos_token_id (
int، اختياري، القيمة الافتراضية 151653) — معرّف الرمز الذي يشير إلى نهاية رموز الصوت. - audio_token_id (
int، اختياري، القيمة الافتراضية151654) — مؤشر رمز الصوت المستخدم كعنصر نائب للصوت المُدخل. - diffusion_loss_weight (
float, اختياري، القيمة الافتراضية 0.5) — وزن خسارة الانتشار في حساب الخسارة الإجمالية. تُوزَّن خسارة الانتروبيا المتقاطعة لرأس نمذجة اللغة بـ(1 - diffusion_loss_weight).
هذه فئة الإعدادات المخزنة لإعدادات VibeVoiceForConditionalGeneration. تُستخدم لإنشاء نموذج Vibevoice وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن إنشاء إعدادات باستخدام القيم الافتراضية سيؤدي إلى الحصول على إعدادات مشابهة لتلك الخاصة بـ vibevoice/VibeVoice-1.5B-hf
ترث كائنات التهيئة من PreTrainedConfig ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ PreTrainedConfig لمزيد من المعلومات.
>>> from transformers import VibeVoiceForConditionalGeneration, VibeVoiceConfig
>>> # Initializing a VibeVoice configuration
>>> configuration = VibeVoiceConfig()
>>> # Initializing a 1.5B model with random weights
>>> model = VibeVoiceForConditionalGeneration(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configVibeVoiceDiffusionHeadConfig
فئة transformers.VibeVoiceDiffusionHeadConfig
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonehidden_size: int = 1536latent_size: int = 64num_hidden_layers: int = 4intermediate_size: int = 4608rms_norm_eps: float = 1e-05hidden_act: str = 'silu'frequency_embedding_size: int = 256diffusion_max_period: int = 10000mlp_bias: bool = False )
المعاملات
- hidden_size (
int، اختياري، القيمة الافتراضية1536) — أبعاد التمثيلات المخفية. - latent_size (
int، اختياري، القيمة الافتراضية 64) — أبعاد الكامنات الصوتية التي يقوم الرأس بإزالة الضوضاء منها. - num_hidden_layers (
int، اختياري، القيمة الافتراضية4) — عدد الطبقات المخفية في مُفكِّك Transformer. - intermediate_size (
int، اختياري، القيمة الافتراضية4608) — بعد تمثيلات MLP. - rms_norm_eps (
float، اختياري، القيمة الافتراضية1e-05) — قيمة الإيبسلون المستخدمة في طبقات تطبيع rms. - hidden_act (
str، اختياري، القيمة الافتراضيةsilu) — دالة التنشيط غير الخطية (دالة أو نص) في المُفكِّك. على سبيل المثال،"gelu"،"relu"،"silu"، وغيرها. - frequency_embedding_size (
int, اختياري، القيمة الافتراضية 256) — حجم التضمين الترددي الجيبية (sinusoidal) لتشفير خطوة الزمن (timestep) في رأس الانتشار (diffusion head). - diffusion_max_period (
int، اختياري، القيمة الافتراضية 10000) — الفترة القصوى لتضمين التردد الجيبية في رأس الانتشار. - mlp_bias (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان سيتم استخدام انحياز في طبقات up_proj وdown_proj وgate_proj ضمن طبقات MLP.
هذه فئة الإعدادات المخزنة لإعدادات VibeVoiceForConditionalGeneration. تُستخدم لإنشاء نموذج Vibevoice وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن إنشاء إعدادات باستخدام القيم الافتراضية سيؤدي إلى الحصول على إعدادات مشابهة لتلك الخاصة بـ vibevoice/VibeVoice-1.5B-hf
ترث كائنات التهيئة من PreTrainedConfig ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ PreTrainedConfig لمزيد من المعلومات.
VibeVoiceProcessor
فئة transformers.VibeVoiceProcessor
< source >( feature_extractortokenizerchat_template = Noneaudio_bos_token = '<|vision_start|>'audio_eos_token = '<|vision_end|>'audio_token = '<|vision_pad|>' )
المعاملات
- feature_extractor (
VibeVoiceAcousticTokenizerFeatureExtractor) — مستخرج الميزات هو مدخل إلزامي. - tokenizer (
Qwen2TokenizerFast) — المُجزِّئ مدخل إلزامي. - chat_template (
str) — قالب Jinja لتحويل قوائم الرسائل في المحادثة إلى نص قابل للتجزئة. - audio_bos_token (
str، اختياري، القيمة الافتراضية"<|vision_start|>") — الرمز المستخدم للإشارة إلى بداية توليد الصوت. - audio_eos_token (
str، اختياري، القيمة الافتراضية"<|vision_end|>") — الرمز المستخدم للإشارة إلى نهاية توليد الصوت. - audio_token (
str، اختياري، القيمة الافتراضية"<|vision_pad|>") — الرمز المستخدم للإشارة إلى مواصلة توليد الصوت.
ينشئ VibeVoiceProcessor الذي يجمع بين مستخرج الميزات ومجزئ الرموز في معالج واحد.
يوفر VibeVoiceProcessor جميع وظائف VibeVoiceAcousticTokenizerFeatureExtractor وQwen2TokenizerFast. راجع ~VibeVoiceAcousticTokenizerFeatureExtractor و~Qwen2TokenizerFast لمزيد من المعلومات.
__call__
< source >( text: str | list[str] | list[list[str]]audio: typing.Union[numpy.ndarray, ForwardRef('torch.Tensor'), collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence['torch.Tensor'], NoneType] = Noneoutput_labels: bool | None = False**kwargs: *<class 'transformers.models.vibevoice.processing_vibevoice.VibeVoiceProcessorKwargs'> ) → BatchFeature
المعاملات
- text (
str,List[str]) — النص (أو النصوص) المُدخل للمعالجة، والذي يُعدّ عادةً بواسطة apply_chat_template مع وضع رموز محجوزة (placeholders) لتوكنات الصوت. - audio (
List[Union[str, np.ndarray]], اختياري) — عينات صوتية لاستنساخ صوت المتحدث. يجب أن تتطابق مع عدد رموز الصوت المحجوزة في النص. - output_labels (
bool، اختياري، الافتراضي=False) — ما إذا كان يجب إرجاع التسميات للتدريب. - **kwargs — حجج إضافية بالكلمات المفتاحية تُمرَّر إلى مُجزِّئ النص ومستخرج الميزات.
- return_tensors (
strأو TensorType, اختياري) — إذا تم تعيينه، فسيُعاد تينسورات من إطار عمل محدد. القيم المقبولة هي:'pt': إرجاع كائناتtorch.Tensorمن PyTorch.'np': إرجاع كائناتnp.ndarrayمن NumPy.
- **kwargs (ProcessingKwargs، اختياري) — خيارات معالجة إضافية لكل نمط (نص، صور، مقاطع فيديو، صوت). تُدرج المعلمات الخاصة بالنموذج أعلاه؛ راجع فئة TypedDict للحصول على القائمة الكاملة للحجج المدعومة.
يعيد
BatchFeature يحتوي على الحقول التالية:
- input_ids — قائمة معرّفات الرموز التي تُغذّى بها النموذج.
- attention_mask — قائمة بالفهارس تحدد الرموز التي يجب على النموذج الانتباه إليها (عندما يكون
return_attention_mask=True). - input_values — قائمة بقيم الصوت التي تُغذّى بها النموذج. تُعاد عندما لا تكون
audioمساوية لـNone. - padding_mask — قائمة من الفهارس تحدد إطارات الصوت التي يجب أن يوليها النموذج اهتمامه.
تُعاد عندما لا تكون
audioقيمةNone. - labels — تسميات لتدريب نموذج اللغة. يتم إخفاء رموز الحشو ورموز الانتشار الصوتي باستخدام القيمة
-100 (حيث تُستبدل تمثيلات رموز الانتشار الصوتي بخصائص الصوت، لذا فإن هوية هذه الرموز لا تُعد هدفًا ذا معنى).
تُحافظ رموز بداية/نهاية الصوت (bos/eos) ورمز نهاية النص (eos) على وضعها كأهداف حتى يتعلم نموذج اللغة متى يبدأ
الإنشاء ومتى يتوقف. تُعاد هذه التسميات عند تعيين
output_labels=True. - acoustic_loss_mask — قناع منطقي للمواقع التي يُحسب فيها خسارة الانتشار. تكون قيمته True في مواقع رموز انتشار الصوت. يُعاد عند تعيين
output_labels=True.
VibeVoiceForConditionalGeneration
فئة transformers.VibeVoiceForConditionalGeneration
< source >( config: VibeVoiceConfig )
المعاملات
- config (VibeVoiceConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعدادات إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج VibeVoice، الذي يتكون من نموذج لغوي، ومُرمِّزات صوتية، ومُوصِّلات، ورأس انتشار.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( input_ids: LongTensor = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = Nonelogits_to_keep: int | slice = 0input_values: typing.Optional[torch.Tensor] = Nonepadding_mask: typing.Optional[torch.BoolTensor] = Noneacoustic_loss_mask: typing.Optional[torch.BoolTensor] = Nonenoise_scheduler: object | None = Noneddpm_batch_multiplier: int = 4num_diffusion_steps: int = 10sample: bool = True**kwargs ) → VibeVoiceCausalLMOutputWithPast or tuple(torch.Tensor)
المعاملات
- input_ids (
torch.LongTensorبشكل(batch_size, sequence_length), اختياري) — مؤشرات رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا.يمكن الحصول على الفهارس باستخدام AutoTokenizer. راجع PreTrainedTokenizer.encode() و PreTrainedTokenizer.call() للتفاصيل.
- inputs_embeds (
torch.Tensorمن الشكل(batch_size, sequence_length, hidden_size)، اختياري) — اختياريًا، بدلاً من تمريرinput_ids، يمكنك اختيار تمرير تمثيل مضمّن مباشرة. وهذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارسinput_idsإلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج. - labels (
torch.LongTensorمن الشكل(batch_size, sequence_length)، اختياري) — التسميات لحساب خسارة نمذجة اللغة المقنّعة. يجب أن تكون الفهارس ضمن[0, ..., config.vocab_size]أو -100 (انظرinput_idsdocstring). يتم تجاهل الرموز التي فهارسها مضبوطة على-100(مقنّعة)، ولا تُحسب الخسارة إلا للرموز التي تسمياتها ضمن[0, ..., config.vocab_size]. - logits_to_keep (
Union[int, slice], اختياري، القيمة الافتراضية0) — إذا كانint، يتم حساب القيم اللوجستية (logits) لآخرlogits_to_keepرموز. إذا كانت القيمة0، يتم حساب القيم اللوجستية لجميعinput_ids(حالة خاصة). لا تكون قيم اللوجستيات للرمز الأخير فقط هي المطلوبة للتوليد، ويمكن أن يوفر حسابها لذلك الرمز وحده ذاكرة كبيرة، وهو أمر ذو أهمية كبيرة للتسلسلات الطويلة أو حجم المفردات الكبير. إذا كانtorch.Tensor، يجب أن يكون بعدًا واحدًا (1D) ويتوافق مع الفهارس التي يجب الاحتفاظ بها في بُعد طول التسلسل. يكون هذا مفيدًا عند استخدام تنسيق المصفوفات المعبأة (packed tensor format) (بعد واحد لكل من الدفعة وطول التسلسل). - input_values (
torch.Tensor، اختياري) — موجة صوتية مُعالَجة مسبقًا لاستنساخ الصوت. - padding_mask (
torch.BoolTensor، اختياري) — أقنعة تُظهر الإطارات المدخلة الصالحة. - acoustic_loss_mask (
torch.BoolTensor، اختياري) — قناع لحساب خسارة الانتشار على الرموز الصوتية المحددة فقط. - noise_scheduler (
object، اختياري) — مطلوب للتدريب لحساب أهداف الضوضاء لخسارة الانتشار. افتراضياً، يستخدم إعدادات مجدول الضوضاء المحددة فيgeneration_configالخاص بالنموذج. - ddpm_batch_multiplier (
int، اختياري، القيمة الافتراضية 4) — للتدريب، عدد عينات الضوضاء التي يجب توليدها لكل رمز صوتي لحساب خسارة الانتشار، مما قد يساعد في استقرار التدريب. - num_diffusion_steps (
int, اختياري، القيمة الافتراضية 10) — للتدريب، عدد خطوات الانتشار المستخدمة. تكون القيمة الافتراضية 10 إذا لم تُقدَّم. - sample (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب إضافة ضوضاء غاوسية إلى الكمّات الصوتية، كما في النموذج الأصلي (σ-VAE: يتم سحب مقياس الضوضاء لكل عنصر في الدفعة من N(0،vae_std)). إذا كانت القيمة False، يُستخدم مخرج المُشفِّر كما هو، وبالتالي يكون المخرج حتمياً.
يعيد
VibeVoiceCausalLMOutputWithPast أو tuple(torch.Tensor)
VibeVoiceCausalLMOutputWithPast أو مجموعة مرتبة من
torch.Tensor (في حال تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة
تعتمد على الإعدادات (VibeVoiceConfig) والمدخلات.
تتجاوز طريقة VibeVoiceForConditionalGeneration الخاصة بالتقديم (forward) الطريقة الخاصة __call__.
على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن
Moduleبدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.
last_hidden_state (
torch.Tensorمن الشكل(batch_size, sequence_length, hidden_size)) — تسلسل حالات مخفية عند مخرج الطبقة الأخيرة من النموذج.إذا تم استخدام
past_key_values، فإن الحالة المخفية الأخيرة فقط من التسلسلات ذات الشكل(batch_size, 1, hidden_size)هي التي تُخرج.past_key_values (
Cache، اختياري، يُعاد عند تمريرuse_cache=Trueأو عند تعيينconfig.use_cache=True) — إنه كائن من نوع Cache. لمزيد من التفاصيل، راجع دليل ذاكرة kv.تحتوي على حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه الذاتي، وفي كتل الانتباه المتقاطع اختياريًا إذا كان
config.is_encoder_decoder=True) يمكن استخدامها (انظر مدخلpast_key_values) لتسريع فك الترميز التسلسلي.hidden_states (
tuple(torch.Tensor)، اختياري، يُعاد عند تمريرoutput_hidden_states=Trueأو عند تعيينconfig.output_hidden_states=True) — مجموعة منtorch.Tensor(واحدة لإخراج الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لإخراج كل طبقة) من الشكل(batch_size, sequence_length, hidden_size).حالات النموذج المخفية عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.
attentions (
tuple(torch.Tensor)، اختياري، يُعاد عند تمريرoutput_attentions=Trueأو عند تعيينconfig.output_attentions=True) — مجموعة منtorch.Tensor(واحدة لكل طبقة) بأبعاد(batch_size, num_heads, sequence_length, sequence_length).أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
loss (
torch.Tensorof shape(1,), اختياري, يُعاد عند توفيرlabels) — خسارة نمذجة اللغة (لتوقع الرمز التالي).logits (
torch.Tensorمن الشكل(batch_size, sequence_length, config.vocab_size)) — درجات التنبؤ لرأس نمذجة اللغة (درجات لكل رمز في المفردات قبل SoftMax).audio_features (
torch.Tensorمن الشكل(batch_size, sequence_length, feature_size)، اختياري) — ميزات صوتية مستخرجة يمكن استخدامها لتكييف نموذج اللغة.
مثال:
>>> from transformers import AutoProcessor, VibeVoiceForConditionalGeneration
>>> model = VibeVoiceForConditionalGeneration.from_pretrained("vibevoice/VibeVoice-1.5B-hf")
>>> processor = AutoProcessor.from_pretrained("vibevoice/VibeVoice-1.5B-hf")
>>> inputs = processor(text="Hello, my dog is cute", return_tensors="pt")
>>> # generate speech
>>> speech = model(inputs["input_ids"])generate
< source >( inputs: typing.Optional[torch.Tensor] = Nonegeneration_config: transformers.generation.configuration_utils.GenerationConfig | None = Nonelogits_processor: transformers.generation.logits_process.LogitsProcessorList | None = Nonestopping_criteria: transformers.generation.stopping_criteria.StoppingCriteriaList | None = Noneprefix_allowed_tokens_fn: collections.abc.Callable[[int, torch.Tensor], list[int]] | None = Nonesynced_gpus: bool | None = Noneassistant_model: typing.Optional[ForwardRef('PreTrainedModel')] = Nonestreamer: typing.Optional[ForwardRef('BaseStreamer')] = Nonenegative_prompt_ids: typing.Optional[torch.Tensor] = Nonenegative_prompt_attention_mask: typing.Optional[torch.Tensor] = Nonecustom_generate: str | collections.abc.Callable | None = None**kwargs ) → ModelOutput or torch.LongTensor
المعاملات
- inputs (
torch.Tensorبأشكال متغيرة حسب النمط، اختياري) — التسلسل المستخدم كموجّه للتوليد أو كمدخلات للنموذج إلى المُشفِّر. إذا كانتNoneفسيُهيّئ الدالة هذا التسلسل باستخدامbos_token_idوحجم دفعة يساوي 1. بالنسبة لنماذج المُفكِّك فقط، يجب أن تكونinputsبصيغةinput_ids. أما بالنسبة لنماذج المُشفِّر-المُفكِّك، فيمكن أن يمثل inputs أيّاً منinput_idsأوinput_valuesأوinput_featuresأوpixel_values. - generation_config (GenerationConfig, اختياري) —
إعدادات التوليد التي تُستخدم كإعدادات أساسية لاستدعاء التوليد. أي
**kwargsمرر إلى generate تطابق سماتgeneration_configستُلغي قيمها. إذا لم يُقدَّمgeneration_config، فسيُستخدم الإعداد الافتراضي، الذي له أولوية تحميل كالتالي: 1) من ملف النموذجgeneration_config.json، إن وُجد؛ 2) من إعدادات النموذج. يُرجى ملاحظة أن المعاملات غير المحددة ستورث القيم الافتراضية لـ GenerationConfig، والتي يجب الرجوع إلى توثيقها لتهيئة التوليد. - logits_processor (
LogitsProcessorList، اختياري) — معالجات logits مخصصة تكمل المعالجات الافتراضية المبنية من المعاملات وإعدادات التوليد. إذا تم تمرير معالج logits تم إنشاؤه مسبقًا باستخدام المعاملات أو إعدادات التوليد، فسيتم طرح خطأ. هذه الميزة مخصصة للمستخدمين المتقدمين. - stopping_criteria (
StoppingCriteriaList، اختياري) — معايير إيقاف مخصصة تكمل معايير الإيقاف الافتراضية المبنية من الحجج وإعدادات التوليد. إذا تم تمرير معيار إيقاف تم إنشاؤه مسبقًا باستخدام الحجج أو إعدادات التوليد، فسيتم طرح خطأ. إذا كان معيار الإيقاف الخاص بك يعتمد على مدخلscores، فتأكد من تمريرreturn_dict_in_generate=True, output_scores=Trueإلىgenerate. هذه الميزة مخصصة للمستخدمين المتقدمين. - prefix_allowed_tokens_fn (
Callable[[int, torch.Tensor], list[int]]، اختياري) — إذا تم توفيره، فإن هذه الدالة تُقيّد بحث الحزمة (beam search) على الرموز المسموح بها فقط في كل خطوة. إذا لم يُوفَّر، فلا يُطبَّق أي قيد. تستقبل هذه الدالة حجتين: معرّف الدفعةbatch_idوinput_ids. يجب أن تُرجع قائمة بالرموز المسموح بها لخطوة التوليد التالية، مشروطةً بمعرّف الدفعةbatch_idوالرموز المولَّدة سابقًاinputs_ids. يُعدّ هذا الحُجّة مفيدًا للتوليد المقيد المشروط على البادئة، كما هو موصوف في Autoregressive Entity Retrieval. - synced_gpus (
bool, اختياري) — ما إذا كان يجب مواصلة تشغيل حلقة while حتى max_length. ما لم يتم تجاوز هذا العلم، فسيتم تعيينه إلىTrueعند استخدامFullyShardedDataParallelأو DeepSpeed ZeRO Stage 3 مع عدة وحدات معالجة رسومية لتجنب التعطّل إذا انتهت وحدة معالجة رسومية واحدة من التوليد قبل وحدات المعالجة الرسومية الأخرى. وإلا، فالقيمة الافتراضية هيFalse. - assistant_model (
PreTrainedModel، اختياري) — نموذج مساعد يمكن استخدامه لتسريع عملية التوليد. يجب أن يكون لدى النموذج المساعد نفس المرمّز (tokenizer) تمامًا. يتحقق التسريع عندما يكون التنبؤ بالرموز المرشحة باستخدام النموذج المساعد أسرع بكثير من تشغيل التوليد باستخدام النموذج الذي تستدعي منه generate. وعليه، يجب أن يكون النموذج المساعد أصغر بكثير. - streamer (
BaseStreamer، اختياري) — كائن Streamer الذي سيُستخدم لبثّ التسلسلات المولّدة. يتم تمرير الرموز المولّدة عبرstreamer.put(token_ids)، ويتحمّل الـ streamer مسؤولية أي معالجة إضافية. - negative_prompt_ids (
torch.LongTensorمن الشكل(batch_size, sequence_length)، اختياري) — الموجّه السلبي المطلوب لبعض المعالجات مثل CFG. يجب أن يتطابق حجم الدفعة مع حجم دفعة الإدخال. هذه ميزة تجريبية، وقد تخضع لتغييرات كاسرة في واجهة برمجة التطبيقات في الإصدارات المستقبلية. - negative_prompt_attention_mask (
torch.LongTensorof shape(batch_size, sequence_length), اختياري) — Attention_mask الخاص بـnegative_prompt_ids. - custom_generate (
strأوCallable, اختياري) — أحد ما يلي:str(اسم مستودع Hugging Face Hub): يشغّل دالةgenerateالمخصصة المعرّفة فيcustom_generate/generate.pyداخل ذلك المستودع بدلاً من طريقةgenerateالقياسية. يستبدل المستودع منطق التوليد بالكامل، وقد يختلف نوع الإرجاع.str(مسار المستودع المحلي): نفس ما سبق لكن من مسار محلي. كما تتطلب المجلدات المحليةtrust_remote_code=Trueلأنcustom_generate/generate.pyالمحلي يُنفَّذ.Callable: سيقومgenerateبتنفيذ خطوات إعداد المدخلات المعتادة، ثم استدعاء الدالة القابلة للاستدعاء المُقدَّمة لتشغيل حلقة فك الترميز. لمزيد من المعلومات، راجع التوثيق.
- kwargs (
dict[str, Any], اختياري) — تحديد معلمات بشكل مؤقت لـgeneration_configو/أو معلمات إضافية خاصة بالنموذج سيتم تحويلها إلى دالةforwardالخاصة بالنموذج. إذا كان النموذج من نوع المُشفِّر-المُفكِّك (encoder-decoder)، فيجب عدم إضافة بادئة للمعلمات الخاصة بالمُشفِّر، بينما يجب إضافة بادئة decoder_ للمعلمات الخاصة بالمُفكِّك.
يعيد
ModelOutput أو torch.LongTensor
ModelOutput (إذا كان return_dict_in_generate=True
أو عندما يكون config.return_dict_in_generate=True) أو torch.LongTensor.
إذا لم يكن النموذج نموذجاً من نوع المُشفِّر-المُفكِّك (model.config.is_encoder_decoder=False)، فإن أنواع ModelOutput الممكنة هي:
إذا كان النموذج من نوع مُشفِّر-مُفكِّك (encoder-decoder) (model.config.is_encoder_decoder=True)، فإن أنواع ModelOutput الممكنة هي:
يولّد تسلسلات من معرّفات الرموز (token ids) للنماذج التي تحتوي على رأس لنمذجة اللغة.
تُضبط معظم المعلمات التي تتحكم في التوليد في
generation_config، والتي إذا لم تُمرَّر، فسيتم ضبطها على إعدادات التوليد الافتراضية للنموذج. يمكنك تجاوز أيgeneration_configعن طريق تمرير المعلمات المقابلة إلى generate()، على سبيل المثال.generate(inputs, num_beams=4, do_sample=True).لمراجعة عامة لاستراتيجيات التوليد وأمثلة الأكواد، راجع الدليل التالي.
VibeVoiceModel
فئة transformers.VibeVoiceModel
< source >( config: VibeVoiceConfig )
المعاملات
- config (VibeVoiceConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعدادات إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج VibeVoice الذي يتكون من مُرمّزات صوتية وهيكل أساسي لنموذج لغة كبير (LLM)، دون رأس لنمذجة اللغة.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( input_ids: LongTensor = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneinput_values: typing.Optional[torch.Tensor] = Nonepadding_mask: typing.Optional[torch.BoolTensor] = Nonesample: bool = True**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPast or tuple(torch.Tensor)
المعاملات
- input_ids (
torch.LongTensorبشكل(batch_size, sequence_length), اختياري) — مؤشرات رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا.يمكن الحصول على الفهارس باستخدام AutoTokenizer. راجع PreTrainedTokenizer.encode() و PreTrainedTokenizer.call() للتفاصيل.
- inputs_embeds (
torch.Tensorمن الشكل(batch_size, sequence_length, hidden_size)، اختياري) — اختياريًا، بدلاً من تمريرinput_ids، يمكنك اختيار تمرير تمثيل مضمّن مباشرة. وهذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارسinput_idsإلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج. - input_values (
torch.Tensorمن الشكل(batch_size, sequence_length)، اختياري) — قيم رقمية عشرية لموجة الصوت الخام المدخلة. يمكن الحصول على هذه القيم عن طريق تحميل ملف صوتي من نوع.flacأو.wavفي مصفوفة من النوعlist[float]أوnumpy.ndarrayأوtorch.Tensor، على سبيل المثال باستخدام مكتبة torchcodec (pip install torchcodec) أو مكتبة soundfile (pip install soundfile). لتجهيز المصفوفة إلىinput_values، يجب استخدام AutoProcessor لإضافة الحشو والتحويل إلى تينسور من النوعtorch.Tensor. راجع VibeVoiceProcessor.call() للتفاصيل. - padding_mask (
torch.Tensorمن الشكل(batch_size, padded_audio_length)) — قناع الحشو لإزالة الأجزاء المحشوة من الصوت. - sample (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب إضافة ضوضاء غاوسية إلى الكمّات الصوتية، كما في النموذج الأصلي (σ-VAE: يتم سحب مقياس الضوضاء لكل عنصر في الدفعة من N(0،vae_std)). إذا كانت القيمة False، يُستخدم مخرج المُشفِّر كما هو، وبالتالي يكون المخرج حتمياً.
يعيد
BaseModelOutputWithPast أو tuple(torch.Tensor)
BaseModelOutputWithPast أو مجموعة مرتبة من
torch.Tensor (في حال تمرير return_dict=False أو عندما يكون config.return_dict=False) تتكون من عناصر مختلفة
تعتمد على الإعداد (VibeVoiceConfig) والمدخلات.
تُعيد طريقة VibeVoiceModel الخاصة بالتقديم (forward) تعريف الطريقة الخاصة __call__.
على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن
Moduleبدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.
last_hidden_state (
torch.Tensorمن الشكل(batch_size, sequence_length, hidden_size)) — تسلسل حالات مخفية عند مخرج الطبقة الأخيرة من النموذج.إذا تم استخدام
past_key_values، فإن الحالة المخفية الأخيرة فقط من التسلسلات ذات الشكل(batch_size, 1, hidden_size)هي التي تُخرج.past_key_values (
Cache، اختياري، يُعاد عند تمريرuse_cache=Trueأو عند تعيينconfig.use_cache=True) — إنه كائن من نوع Cache. لمزيد من التفاصيل، راجع دليل ذاكرة kv.تحتوي على حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه الذاتي، وفي كتل الانتباه المتقاطع اختياريًا إذا كان
config.is_encoder_decoder=True) يمكن استخدامها (انظر مدخلpast_key_values) لتسريع فك الترميز التسلسلي.hidden_states (
tuple(torch.Tensor)، اختياري، يُعاد عند تمريرoutput_hidden_states=Trueأو عند تعيينconfig.output_hidden_states=True) — مجموعة منtorch.Tensor(واحدة لإخراج الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لإخراج كل طبقة) من الشكل(batch_size, sequence_length, hidden_size).حالات النموذج المخفية عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.
attentions (
tuple(torch.Tensor)، اختياري، يُعاد عند تمريرoutput_attentions=Trueأو عند تعيينconfig.output_attentions=True) — مجموعة منtorch.Tensor(واحدة لكل طبقة) بأبعاد(batch_size, num_heads, sequence_length, sequence_length).أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
get_audio_features
< source >( input_values: Tensorpadding_mask: Tensorsample: bool = True**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPooling or tuple(torch.Tensor)
المعاملات
- input_values (
torch.Tensor) — قيمات عشرية (float) لموجة الصوت (المُطَبَّعة). - padding_mask (
torch.Tensorمن الشكل(batch_size, padded_audio_length)) — قناع الحشو لإزالة الأجزاء المحشوة من الصوت. - sample (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب إضافة ضوضاء غاوسية إلى الكمّات الصوتية، كما في النموذج الأصلي (σ-VAE: يتم سحب مقياس الضوضاء لكل عنصر في الدفعة من N(0،vae_std)). إذا كانت القيمة False، يُستخدم مخرج المُشفِّر كما هو، وبالتالي يكون المخرج حتمياً.
يعيد
BaseModelOutputWithPooling أو tuple(torch.Tensor)
BaseModelOutputWithPooling أو مجموعة مرتبة من
torch.Tensor (في حال تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة
تعتمد على الإعداد (VibeVoiceConfig) والمدخلات.
تُستخدم هذه الطريقة للحصول على تمثيلات الصوت (التي تحل محل رموز الصوت الوهمية في تسلسل الإدخال) والميزات الصوتية (المستخدمة كهدف للانتشار) من موجة الصوت المدخلة.
last_hidden_state (
torch.Tensorمن الشكل(batch_size, sequence_length, hidden_size)) — تسلسل حالات مخفية عند مخرج الطبقة الأخيرة من النموذج.pooler_output (
torch.Tensorمن الشكل(batch_size, hidden_size)) — حالة الطبقة المخفية الأخيرة للرمز الأول من التسلسل (رمز التصنيف) بعد المعالجة الإضافية عبر الطبقات المستخدمة في مهمة ما قبل التدريب المساعدة. على سبيل المثال، بالنسبة لعائلة نماذج BERT، تُرجع هذه الخاصية رمز التصنيف بعد معالجته عبر طبقة خطية ودالة تفعيل tanh. تُدرَّب أوزان الطبقة الخطية من هدف التنبؤ بالجملة التالية (التصنيف) أثناء ما قبل التدريب.hidden_states (
tuple(torch.Tensor)، اختياري، يُعاد عند تمريرoutput_hidden_states=Trueأو عند تعيينconfig.output_hidden_states=True) — مجموعة منtorch.Tensor(واحدة لإخراج الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لإخراج كل طبقة) من الشكل(batch_size, sequence_length, hidden_size).حالات النموذج المخفية عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.
attentions (
tuple(torch.Tensor)، اختياري، يُعاد عند تمريرoutput_attentions=Trueأو عند تعيينconfig.output_attentions=True) — مجموعة منtorch.Tensor(واحدة لكل طبقة) بأبعاد(batch_size, num_heads, sequence_length, sequence_length).أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
get_placeholder_mask
< source >( input_ids: LongTensorinputs_embeds: Tensoraudio_features: Tensor )
يحصل على قناع العلامات الوهمية متعددة الوسائط من input_ids أو inputs_embeds، ويتحقق من أن عدد الرموز الوهمية يساوي طول الميزات متعددة الوسائط. إذا اختلفت الأطوال، يتم رفع خطأ.