Transformers documentation
Gradium Phonon TTS
تمت مساهمة هذا النموذج في Hugging Face Transformers في 2026-10-20.
Gradium Phonon TTS
نظرة عامة
نموذج Gradium Phonon TTS هو عائلة نماذج تحويل النص إلى كلام تعمل على الجهاز من تطوير Gradium، وقد تم تدريبها وفق منهجية Pocket TTS: حيث يقرأ محوّل سببي (causal transformer) موجهًا صوتيًا والنص، ثم يُخرج في كل خطوة كامنًا صوتيًا مستمرًا بعدد أبعاد 32 بمعدل 12.5 هرتز عبر رأس تدفق من خطوة واحدة، بينما يقرر رأس نهاية الكلام متى ينتهي الجمل. يتم فك ترميز الكامونات إلى صوت بمعدل 24 كيلوهرتز بواسطة مُرمِّز الصوت الخاص بـ Pocket TTS الذي يحتفظ به المعالج، وهو PocketTTSProcessor الخاص بـ Pocket TTS.
يختلف عن Pocket TTS في طريقة تكييف الصوت: إذ يتكوّن موجه الصوت من كامنات (latents) ذات 512 بُعداً من مشفّر متحدث (speaker codec) منفصل، ويُضاف متجه متعلّم للمتحدث إلى كل موضع كامن صوتي. لم يتم إصدار مشفّر المتحدث، لذا تأتي الأصوات على شكل كامنات محسوبة مسبقاً (ملف default-voice.safetensors الخاص بكل نقطة تحقق، وفهرس gradium/phonon-voices)، كما أن مُرمّز الصوت (audio tokenizer) يعمل كمفكّك (decoder) فقط: فلا يمكن استنساخ الأصوات من تسجيل.
| نقطة التفتيش | المعاملات | اللغات | رخصة |
|---|---|---|---|
| gradium/phonon-31m-en | 31M | الإنجليزية | Apache 2.0 |
| gradium/phonon-40m-en | 40M | الإنجليزية | CC BY-NC 4.0 |
| gradium/phonon-40m-fr | 40M | الفرنسية | CC BY-NC 4.0 |
| gradium/phonon-40m-de | 40M | الألمانية | CC BY-NC 4.0 |
| gradium/phonon-40m-es | 40M | الإسبانية | CC BY-NC 4.0 |
| gradium/phonon-40m-pt | 40M | البرتغالية | CC BY-NC 4.0 |
| gradium/phonon-40m-multilingual | 40M | الإنجليزية، الفرنسية، الألمانية، الإسبانية، البرتغالية | CC BY-NC 4.0 |
تُحمَّل جميعها بالطريقة نفسها: فالتبديل بين نقاط التفتيش يعني تغيير معرّف المستودع.
تمت مساهمة هذا النموذج من قِبل Eustache Le Bihan. الكود الأصلي هو gradium-ai/xn-ptts.
نصائح للاستخدام
- جهّز المدخلات باستخدام apply_chat_template(): رسالة
userواحدة لكل نص، وعنصر{"type": "audio"}فارغ في موضع الصوت، ومتجهات الصوت الكامنة فيprocessor_kwargs={"audio_prompt_latents": [...]}، معadd_generation_prompt=True. - لا يقوم مُجزِّئ النص بكتابة الأرقام أو الكميات أو الرموز أو العناوين بشكل مفصّل، راجع تطبيع النص.
- يعيد
generateالقيمaudio_latentsوaudio_latents_mask؛ قم بفك ترميزها باستخدام PocketTTSProcessor.decode(). - عينة التوليد كما يفعل وقت تشغيل Gradium:
temperature0.3 (تباين الضوضاء الابتدائية للتدفق)، ويتوقف بعد تجاوزeos_thresholdلقيمة logit نهاية الكلام بقليل.do_sample=Falseيبدأ التدفق من ضوضاء صفرية. - يُحمَّل النموذج في bf16، وهو نوع البيانات الذي تُخزَّن فيه أوزانه؛ مرِّر
dtype=torch.float32على وحدة المعالجة المركزية (CPU) لتطابق بيئة تشغيل Gradium هناك. - قسّم النص الطويل باستخدام PocketTTSProcessor.split_text()، بحيث يحتوي كل جزء على محادثة واحدة.
الاستخدام
الصوت
الصوت هو متجه من الكمونيات (num_frames, 512). كل نقطة تحقق تتضمن صوتًا واحدًا (default-voice.safetensors)، ويحتوي gradium/phonon-voices على نحو مئة صوت إضافي، بجميع اللغات، ولكل منها معرّف صوت خاص به (تُدرج voices.jsonl أسماءها ولغاتها ووصفاتها). يعمل أي صوت مع أي نقطة تحقق.
import torch
from huggingface_hub import hf_hub_download
from safetensors.torch import load_file
from transformers import AutoProcessor, GradiumPhononTTSForConditionalGeneration
model_id = "gradium/phonon-31m-en"
processor = AutoProcessor.from_pretrained(model_id, device_map="auto")
model = GradiumPhononTTSForConditionalGeneration.from_pretrained(model_id, device_map="auto")
def load_voice(voice_id):
"""A voice of gradium/phonon-voices, as latents of shape (num_frames, 512)."""
path = hf_hub_download("gradium/phonon-voices", f"voices/{voice_id}.safetensors")
return load_file(path)["speaker_wavs"][0].T.float()
# Easton (en-us); the checkpoint's own voice: hf_hub_download(model_id, "default-voice.safetensors")
voice = load_voice("LMDIYE0Oa377Qh6Z")
# an empty `audio` item marks the voice
conversation = [
{"role": "user", "content": [{"type": "audio"}, {"type": "text", "text": "Hello from Phonon."}]}
]
inputs = processor.apply_chat_template(
conversation,
tokenize=True,
return_dict=True,
add_generation_prompt=True,
processor_kwargs={"audio_prompt_latents": [voice]},
).to(model.device)
outputs = model.generate(**inputs)
audio = processor.decode(outputs.audio_latents, outputs.audio_latents_mask)
processor.save_audio(audio, "phonon.wav")الدفعات والنص الطويل
معالجة عدة نصوص دفعة واحدة، حيث يمتلك كل نص صوته الخاص، مع تقسيم النص الطويل إلى مقاطع:
text = (
"Phonon is a small text-to-speech model that runs on your device. "
"Long texts are split into sentences, and each chunk is one conversation of the batch."
)
chunks = processor.split_text(text)
texts = chunks + ["And this one is said by another voice."]
voices = [load_voice("LMDIYE0Oa377Qh6Z")] * len(chunks) + [load_voice("NbpkqMVS3CJeq2j8")]
conversations = [
[{"role": "user", "content": [{"type": "audio"}, {"type": "text", "text": text}]}] for text in texts
]
inputs = processor.apply_chat_template(
conversations,
tokenize=True,
return_dict=True,
add_generation_prompt=True,
processor_kwargs={"audio_prompt_latents": voices},
).to(model.device)
outputs = model.generate(**inputs)
audio = processor.decode(outputs.audio_latents, outputs.audio_latents_mask)
processor.save_audio([torch.cat(audio[: len(chunks)]), audio[-1]], ["long.wav", "other.wav"])تطبيع النص
يعمل مُجزِّئ الرموز على تطبيع ما لا يعتمد على اللغة، كما تفعل بيئة التشغيل الخاصة بـ Gradium:
| نص | مُجزِّئ |
|---|---|
“Hello” — it’s here… | "Hello" it's here. |
hello (world); see you 🚀 | Hello, world, see you. |
لا يُملي الأرقام أو الكميات أو الرموز أو العناوين، إذ تعتمد على اللغة:
| نص | مُجزِّئ | بيئة التشغيل الخاصة بـ Gradium |
|---|---|---|
It costs $1,234.56. | It costs $1,234.56. | It costs 1 thousand 234 dollars and 56 cents. |
Write to jean@gradium.ai | Write to jean@gradium.ai. | Write to jean at gradium dot A-I. |
It is 21°C | It is 21°C. | It is 21 degrees Celsius. |
بالنسبة لأولئك، استخدم تطبيع النص في بيئة التشغيل الخاصة بـ Gradium، ptts، أو اكتبها كاملة.
GradiumPhononTTSConfig
فئة transformers.GradiumPhononTTSConfig
< 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 = Noneflow_head_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonevocab_size: int = 4001hidden_size: int = 768num_hidden_layers: int = 6num_attention_heads: int = 12num_key_value_heads: int | None = Nonehead_dim: int | None = Noneintermediate_size: int = 3072hidden_act: str = 'gelu'layer_norm_eps: float = 1e-05attention_bias: bool = Falseattention_dropout: float = 0.0max_position_embeddings: int = 8192rope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = Nonelatent_dim: int = 32pad_token_id: int = 3bos_token_id: int | None = Noneeos_token_id: int | None = Noneaudio_prompt_token_id: int = 5audio_latent_token_id: int = 6audio_bos_token_id: int = 4frame_rate: float = 12.5initializer_range: float = 0.02use_cache: bool = Trueeos_loss_weight: float = 0.1flow_loss_num_samples: int = 4lsd_distill_probability: float = 0.25lsd_diagonal_weight: float = 0.75lsd_time_logit_mean: float = 0.4lsd_time_logit_std: float = 1.0latent_stats_ema_steps: int = 1000latent_stats_ema_decay: float = 0.999audio_prompt_dim: int = 512num_speakers: int = 1num_speakers_vocab_size: int = 32num_speakers_embedding_dim: int = 16duration_delta: float = 0.0duration_delta_embedding_dim: int = 128duration_delta_scale: float = 1000.0duration_delta_max_period: float = 10000.0 )
المعاملات
- flow_head_config (
Union[GradiumPhononTTSFlowHeadConfig, dict]، اختياري) — إعدادات رأس التدفق الذي يستخرج كل حالة كامنة من حالة الخلفية المخفية. - vocab_size (
int، اختياري، القيمة الافتراضية4001) — حجم مفردات النموذج. يحدد عدد الرموز المختلفة التي يمكن تمثيلها بواسطةinput_ids. - hidden_size (
int، اختياري، القيمة الافتراضية768) — أبعاد التمثيلات المخفية. - num_hidden_layers (
int، اختياري، القيمة الافتراضية6) — عدد الطبقات المخفية في مُفكِّك Transformer. - num_attention_heads (
int، اختياري، القيمة الافتراضية12) — عدد رؤوس الانتباه لكل طبقة انتباه في مُفكِّك Transformer. - num_key_value_heads (
int, اختياري) — هذا هو عدد رؤوس key_value التي يجب استخدامها لتنفيذ Grouped Query Attention. إذا كانnum_key_value_heads=num_attention_heads، فسيستخدم النموذج Multi Head Attention (MHA)، وإذا كانnum_key_value_heads=1فسيستخدم النموذج Multi Query Attention (MQA)، وإلا فسيتم استخدام GQA. عند تحويل نقطة تفتيش متعددة الرؤوس إلى نقطة تفتيش GQA، يجب بناء كل مجموعة من رؤوس key و value عن طريق meanpooling جميع الرؤوس الأصلية داخل تلك المجموعة. لمزيد من التفاصيل، راجع هذا الورقة. إذا لم يتم تحديد القيمة، فسيتم افتراضnum_attention_heads. - head_dim (
int، اختياري) — بعد بُعد رأس الانتباه. إذا كان None، فسيتم افتراضه على hidden_size // num_attention_heads - intermediate_size (
int، اختياري، القيمة الافتراضية3072) — أبعاد تمثيلات MLP. - hidden_act (
str، اختياري، القيمة الافتراضيةgelu) — دالة التنشيط غير الخطية (دالة أو نص) في المُفكِّك. على سبيل المثال،"gelu"،"relu"،"silu"، وما إلى ذلك. - layer_norm_eps (
float, اختياري، القيمة الافتراضية 1e-05) — قيمة إيبسلون (Epsilon) لتطبيع الطبقات (Layer Normalizations) في الهيكل الأساسي (backbone). - attention_bias (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان سيتم استخدام انحياز في طبقات الإسقاط للاستعلام والمفتاح والقيمة والمخرجات أثناء الانتباه الذاتي. - attention_dropout (
float، اختياري، القيمة الافتراضية0.0) — نسبة الإسقاط (dropout) لاحتمالات الانتباه. - max_position_embeddings (
int، اختياري، القيمة الافتراضية8192) — أقصى طول تسلسل قد يُستخدم معه هذا النموذج على الإطلاق. - rope_parameters (
Union[~modeling_rope_utils.RopeParameters, dict], اختياري) — قائمة تحتوي على معاملات التهيئة الخاصة بتضمينات RoPE. يجب أن تحتوي القائمة على قيمة لـrope_theta، ومعاملات اختيارية تُستخدم للتوسيع في حال رغبتَ في استخدام RoPE معmax_position_embeddingsأطول. - latent_dim (
int، اختياري، القيمة الافتراضية 32) — أبعاد الكامنات الصوتية التي يستقبلها الهيكل العظمي كمدخلات (audio_latents)؛ وهي تساويlatent_dimالخاص برأس التدفق (flow head) ومُرمِّز الصوت (audio tokenizer). - pad_token_id (
int, اختياري، القيمة الافتراضية3) — معرّف الرمز المستخدم للتعبئة في المفردات. - bos_token_id (
int, اختياري) — معرّف الرمز المستخدم لبدء البث في المفردات. - eos_token_id (
int, اختياري) — معرّف الرمز المستخدم لنهاية التدفق في المفردات. - audio_prompt_token_id (
int, اختياري، القيمة الافتراضية 5) — معرّف الرمز الوهمي لإطارات موجه الصوت فيinput_ids(<|audio_prompt|>). - audio_latent_token_id (
int، اختياري، القيمة الافتراضية 6) — معرّف الرمز البديل لمواقع الكامن الصوتي فيinput_ids(<|audio_latent|>). - audio_bos_token_id (
int, اختياري، القيمة الافتراضية 4) — معرّف الرمز (Token id) للموضع الصوتي الأول، الذي يغلق الاستدعاء (prompt): فهو يحمل كامن BOS المُتعلَّم، الذي تُولَّد منه الإطار الأول (<|audio_bos|>). - frame_rate (
float، اختياري، القيمة الافتراضية 12.5) — عدد كامنات الصوت لكل ثانية من الصوت: يستمدgenerateميزانية الإطارات الافتراضية منه. - initializer_range (
float، اختياري، القيمة الافتراضية0.02) — الانحراف المعياري لـ truncated_normal_initializer المستخدم في تهيئة جميع مصفوفات الأوزان. - use_cache (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب على النموذج إرجاع قيم المفاتيح/القيم الأخيرة للانتباه (لا تستخدمها جميع النماذج). لا ينطبق إلا إذا كانconfig.is_decoder=Trueأو إذا كان النموذج نموذجًا توليديًا يعتمد على المُفكِّك فقط. - eos_loss_weight (
float، اختياري، القيمة الافتراضية 0.1) — وزن خسارة نهاية الكلام في خسارة التدريب. - flow_loss_num_samples (
int، اختياري، القيمة الافتراضية 4) — عدد مرات سحب الضوضاء لكل إطار مستهدف في خسارة التدفق. - lsd_distill_probability (
float، اختياري، القيمة الافتراضية 0.25) — احتمال، في كل خطوة تدريب، لحساب حد التلقائي-التقطير (self-distillation) من دالة فقد LSD (مع إعادة الوزن للحفاظ على الفقد المتوقع)؛ القيمة 1 تعني حسابه في كل خطوة. - lsd_diagonal_weight (
float, اختياري، القيمة الافتراضية 0.75) — وزن الحد القطري (التدفق اللحظي) في دالة فقد LSD؛ بينما يوزن حد التلقائي-التعليم (self-distillation) الجزء المتبقي. - lsd_time_logit_mean (
float، اختياري، القيمة الافتراضية 0.4) — متوسط التوزيع اللوجستي الطبيعي لأزمنة التدفق التي يسحبها خسارة LSD. - lsd_time_logit_std (
float، اختياري، القيمة الافتراضية 1.0) — الانحراف المعياري لتوزيع اللوجيت-الطبيعي لأزمنة التدفق التي يسحبها خسارة LSD. - latent_stats_ema_steps (
int، اختياري، القيمة الافتراضية 1000) — عدد خطوات التدريب الأولى التي يتبع فيهاlatent_meanوlatent_stdمتوسطًا متحركًا أُسّيًا للاتّجاهات المستهدفة؛ القيمة 0 تُبقيهما مجمّدين. - latent_stats_ema_decay (
float، اختياري، القيمة الافتراضية 0.999) — معدل التلاشي للمتوسط المتحرك. - audio_prompt_dim (
int، اختياري، القيمة الافتراضية 512) — بعد كامنات موجه الصوت (audio_prompt_latents)، وهي الكامنات غير المُكمّاة لشفّار المتحدّث في Gradium (وهو مُشفِّر Mimi، وليس مُرمِّز الصوت)، التي تُسقطها البنية الأساسية إلىhidden_size. - num_speakers (
int، اختياري، القيمة الافتراضية 1) — قيمة شرطnum_speakers: صف جدول البحث الخاص به الذي يُضاف إلى كل موضع كامن للصوت. - num_speakers_vocab_size (
int, اختياري، القيمة الافتراضية 32) — عدد صفوف جدول البحثnum_speakers. - num_speakers_embedding_dim (
int، اختياري، القيمة الافتراضية 16) — عرض جدول البحثnum_speakers، المُسقط إلىhidden_size. - duration_delta (
float، اختياري، القيمة الافتراضية 0.0) — قيمة شرطduration_delta، المُضمَّنة جيبيًا ومُضافة إلى كل موضع من مواضع الكمون الصوتي. - duration_delta_embedding_dim (
int, اختياري، القيمة الافتراضية 128) — حجم التضمين الجيبية لـduration_delta، المُسقط إلىhidden_size. - duration_delta_scale (
float، اختياري، القيمة الافتراضية 1000.0) — المعامل المطبَّق علىduration_deltaقبل تضمينه الجيبية. - duration_delta_max_period (
float، اختياري، القيمة الافتراضية 10000.0) — الفترة القصوى للتضمين الجيبوي لـduration_delta.
هذه فئة الإعدادات المخزنة لإعدادات نموذج GradiumPhononTTSModel. تُستخدم لتوليد نموذج Gradium Phonon Tts وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن إنشاء إعدادات باستخدام القيم الافتراضية سيؤدي إلى الحصول على إعدادات مشابهة لتلك الخاصة بـ gradium/phonon-31m-en
ترث كائنات التهيئة من PreTrainedConfig ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ PreTrainedConfig لمزيد من المعلومات.
GradiumPhononTTSFlowHeadConfig
فئة transformers.GradiumPhononTTSFlowHeadConfig
< 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 = 512num_hidden_layers: int = 6latent_dim: int = 32condition_dim: int = 768frequency_embedding_size: int = 256hidden_act: str = 'silu'layer_norm_eps: float = 1e-06rms_norm_eps: float = 1e-05max_period: float = 10000.0flow_type: typing.Literal['lsd', 'drifting'] = 'lsd'loss_weighting_hidden_size: int = 32loss_weighting_num_layers: int = 3 )
المعاملات
- hidden_size (
int، اختياري، القيمة الافتراضية512) — أبعاد التمثيلات المخفية. - num_hidden_layers (
int، اختياري، القيمة الافتراضية6) — عدد الطبقات المخفية في مُفكِّك Transformer. - latent_dim (
int، اختياري، القيمة الافتراضية 32) — أبعاد الكامنات الصوتية المستمرة التي يتنبأ بها الرأس (بعد الكامن لمُرمِّز الصوت). - condition_dim (
int، اختياري، القيمة الافتراضية 768) — بعد حالة الخفاء الأساسية التي يُشترط عليها الرأس (الـhidden_sizeالخاص بالهيكل الأساسي). - frequency_embedding_size (
int، اختياري، القيمة الافتراضية 256) — حجم التضمين الجيبية لأزمنة التدفق. - hidden_act (
str، اختياري، القيمة الافتراضيةsilu) — دالة التنشيط غير الخطية (دالة أو نص) في المُفكِّك. على سبيل المثال،"gelu"،"relu"،"silu"، وغيرها. - layer_norm_eps (
float, اختياري، القيمة الافتراضية 1e-06) — قيمة إيبسلون (Epsilon) في عمليات تطبيع الطبقات داخل الكتل المتبقية والطبقة النهائية. - rms_norm_eps (
float, اختياري، القيمة الافتراضية 1e-05) — قيمة إيبسلون للتطبيع الذي يغلق التضمينات الزمنية. - max_period (
float، اختياري، القيمة الافتراضية 10000.0) — الفترة القصوى للتضمين الزمني الجيبية، والتي يخزّنها نقطة الحفظ على شكلfreqs. - flow_type (
str، اختياري، القيمة الافتراضية"lsd") — الهدف الذي تم تدريب الرأس عليه، وهو ما يحدد طريقة تكييفه وعيّنته."lsd"(التباعد الذاتي لاغرانجي): مُكيَّف على وقتي بداية وانتهاء خطوة التدفق، ويُعَيَّن عبر خطوات أويلر من ضوضاء غاوسية."drifting": لا يوجد تكييف زمني، حيث يُحوِّل الرأس الضوضاء إلى الكمون في استدعاء واحد. - loss_weighting_hidden_size (
int، اختياري، القيمة الافتراضية 32) — عرض شبكة MLP التي تتعلم وزن عدم اليقين لمصطلحات خسارة LSD من أزمنة التدفق (للتدريب فقط). - loss_weighting_num_layers (
int، اختياري، القيمة الافتراضية 3) — عدد الطبقات المخفية لذلك MLP.
هذه فئة الإعدادات المخزنة لإعدادات نموذج GradiumPhononTTSModel. تُستخدم لتوليد نموذج Gradium Phonon Tts وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن إنشاء إعدادات باستخدام القيم الافتراضية سيؤدي إلى الحصول على إعدادات مشابهة لتلك الخاصة بـ gradium/phonon-31m-en
ترث كائنات التهيئة من PreTrainedConfig ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ PreTrainedConfig لمزيد من المعلومات.
GradiumPhononTTSModel
فئة transformers.GradiumPhononTTSModel
< source >( config: GradiumPhononTTSConfig )
المعاملات
- config (GradiumPhononTTSConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. عند التهيئة باستخدام ملف إعدادات، لا يتم تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
هياكل Gradium Phonon TTS الأساسية: محوّل سببي (causal transformer) يعمل على تدفق واحد يتكوّن من موجه الصوت (متغيرات مُشفّرة المتحدّث)، ورموز النص، ومتغيرات الصوت، ويعيد الحالات المخفية المعيارية.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneaudio_prompt_latents: typing.Optional[torch.Tensor] = Noneaudio_prompt_latents_mask: typing.Optional[torch.Tensor] = Noneaudio_latents: typing.Optional[torch.Tensor] = Noneaudio_latents_mask: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPast or tuple(torch.Tensor)
المعاملات
- input_ids (
torch.LongTensorبشكل(batch_size, sequence_length), اختياري) — مؤشرات رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا.يمكن الحصول على الفهارس باستخدام AutoTokenizer. راجع PreTrainedTokenizer.encode() و PreTrainedTokenizer.call() للتفاصيل.
- audio_prompt_latents (
torch.Tensorمن الشكل(batch_size, num_prompt_frames, latent_dim)، اختياري) — كائنات (latents) موجهات الصوت لمُرمِّز الصوت (المُرمَّزة بواسطة المُعالِج، أو منvoices/في نقطة الحفظ)، مُكمَّلة على اليمين حتى أطول صوت في الدفعة، وموزَّعة في مواضعaudio_prompt_token_id. - audio_prompt_latents_mask (
torch.Tensorمن الشكل(batch_size, num_prompt_frames)، اختياري) — قناع لإطارات الصوت (1) مقابل الحشو (0) فيaudio_prompt_latents. - audio_latents (
torch.Tensorمن الشكل(batch_size, num_latents, latent_dim)، اختياري) — كعوب صوتية مُطبَّعة، موزَّعة في مواضعaudio_latent_token_id. أما موضعaudio_bos_token_idالواقع قبلها، والذي يُغلق الأمر (prompt) وتُولَّد منه الإطار الأول، فيحصل دائمًا على كعب BOS المُتعلَّم. - audio_latents_mask (
torch.Tensorمن الشكل(batch_size, num_latents)، اختياري) — قناع لكل صف من الكامنات (1) مقابل الحشو (0) فيaudio_latents، عندما تحتوي الصفوف على أعداد مختلفة من مواضع الكامنة (التدريب). - attention_mask (
torch.Tensorبشكل(batch_size, sequence_length), اختياري) — قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. القيم المختارة للقناع هي[0, 1]:- 1 للرموز التي لم تُقنَّع،
- 0 للرموز التي تم إخفاؤها.
- position_ids (
torch.LongTensorبشكل(batch_size, sequence_length), اختياري) — مؤشرات مواضع رموز كل تسلسل إدخال في تضمينات المواضع. يتم اختيارها ضمن النطاق[0, config.n_positions - 1]. - past_key_values (
~cache_utils.Cache, اختياري) — حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه الذاتي وكتل الانتباه المتقاطع) يمكن استخدامها لتسريع فك الترميز التسلسلي. يتكون هذا عادةً منpast_key_valuesالذي يعيده النموذج في مرحلة سابقة من فك الترميز، عندماuse_cache=Trueأوconfig.use_cache=True.يُسمح فقط بمرجع Cache كمدخل، راجع دليل ذاكرة kv لدينا. إذا لم يتم تمرير
past_key_values، فسيتم تهيئة DynamicCache افتراضياً.سيُخرج النموذج نفس صيغة الكاش التي تُمرَّر كمدخل.
عند استخدام
past_key_values، يُتوقَّع من المستخدم إدخالinput_idsغير المعالجة فقط (تلك التي لم تُقدَّم حالات مفاتيحها وقيمها السابقة إلى هذا النموذج) بأبعاد(batch_size, unprocessed_length)بدلاً من جميعinput_idsبأبعاد(batch_size, sequence_length). - inputs_embeds (
torch.Tensorمن الشكل(batch_size, sequence_length, hidden_size)، اختياري) — اختياريًا، بدلاً من تمريرinput_ids، يمكنك اختيار تمرير تمثيل مضمّن مباشرة. وهذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارسinput_idsإلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج. - use_cache (
bool، اختياري) — إذا تم تعيينه إلىTrue، تُعاد حالات المفاتيح والقيمpast_key_valuesويمكن استخدامها لتسريع فك الترميز (انظرpast_key_values).
يعيد
BaseModelOutputWithPast أو tuple(torch.Tensor)
BaseModelOutputWithPast أو مجموعة (tuple) من
torch.Tensor (إذا تم تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة
تعتمد على الإعداد (GradiumPhononTTSConfig) والمدخلات.
تتجاوز طريقة GradiumPhononTTSModel الخاصة بالتقديم (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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
GradiumPhononTTSForConditionalGeneration
فئة transformers.GradiumPhononTTSForConditionalGeneration
< source >( config: GradiumPhononTTSConfig )
المعاملات
- config (GradiumPhononTTSConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. عند التهيئة باستخدام ملف إعدادات، لا يتم تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج Gradium Phonon TTS لتحويل النص إلى كلام: الهيكل الأساسي، ورأس التدفق الذي يستخرج كامنًا صوتيًا واحدًا في كل خطوة، ورأس نهاية الكلام. يقوم بتوليد كامنات مُرمِّز الصوت، والتي يقوم المُعالج بفك ترميزها إلى صوت بتردد 24 كيلو هرتز.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneaudio_prompt_latents: typing.Optional[torch.Tensor] = Noneaudio_prompt_latents_mask: typing.Optional[torch.Tensor] = Noneaudio_latents: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = Nonelabels_mask: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → GradiumPhononTTSOutputWithPast or tuple(torch.Tensor)
المعاملات
- input_ids (
torch.LongTensorبشكل(batch_size, sequence_length), اختياري) — مؤشرات رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا.يمكن الحصول على الفهارس باستخدام AutoTokenizer. راجع PreTrainedTokenizer.encode() و PreTrainedTokenizer.call() للتفاصيل.
- audio_prompt_latents (
torch.Tensorمن الشكل(batch_size, num_prompt_frames, latent_dim)، اختياري) — قيم latents الخاصة بموجّه الصوت من مُرمّز الصوت، مع حشو يميني، وموزّعة في مواضعaudio_prompt_token_id. - audio_prompt_latents_mask (
torch.Tensorمن الشكل(batch_size, num_prompt_frames)، اختياري) — قناع لإطارات الصوت (1) مقابل الحشو (0) فيaudio_prompt_latents. - audio_latents (
torch.Tensorمن الشكل(batch_size, num_latents, latent_dim)، اختياري) — كائنات صوتية مُطبَّعة، موزَّعة في مواضعaudio_latent_token_id. - labels (
torch.Tensorمن الشكل(batch_size, num_frames, latent_dim)، اختياري) — الكهانات المستهدفة لمُرمِّز الصوت (التدريب)، مع حشو يميني. ينتهي موجه كل صف بموضعaudio_bos_token_idيليه موضع واحد منaudio_latent_token_idلكل إطار: يغذّي النموذج الاستهدافات المُطبَّعة (إجبار المعلم)، ويطبّق خسارة التدفق على مخرجات BOS وجميع الإطارات باستثناء الإطار الأخير، والتي تتنبأ بالإطارات، ويطبّق خسارة نهاية الكلام على جميعها، حيث يكون الأخير هو نهاية الكلام. - labels_mask (
torch.Tensorمن الشكل(batch_size, num_frames)، اختياري) — قناع للإطارات المستهدفة في كل صف (1) مقابل الحشو (0) فيlabels. - attention_mask (
torch.Tensorبشكل(batch_size, sequence_length), اختياري) — قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. القيم المختارة للقناع هي[0, 1]:- 1 للرموز التي لم تُقنَّع،
- 0 للرموز التي تم إخفاؤها.
- position_ids (
torch.LongTensorبشكل(batch_size, sequence_length), اختياري) — مؤشرات مواضع رموز كل تسلسل إدخال في تضمينات المواضع. يتم اختيارها ضمن النطاق[0, config.n_positions - 1]. - past_key_values (
~cache_utils.Cache, اختياري) — حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه الذاتي وكتل الانتباه المتقاطع) يمكن استخدامها لتسريع فك الترميز التسلسلي. يتكون هذا عادةً منpast_key_valuesالذي يعيده النموذج في مرحلة سابقة من فك الترميز، عندماuse_cache=Trueأوconfig.use_cache=True.يُسمح فقط بمرجع Cache كمدخل، راجع دليل ذاكرة kv لدينا. إذا لم يتم تمرير
past_key_values، فسيتم تهيئة DynamicCache افتراضياً.سيُخرج النموذج نفس صيغة الكاش التي تُمرَّر كمدخل.
عند استخدام
past_key_values، يُتوقَّع من المستخدم إدخالinput_idsغير المعالجة فقط (تلك التي لم تُقدَّم حالات مفاتيحها وقيمها السابقة إلى هذا النموذج) بأبعاد(batch_size, unprocessed_length)بدلاً من جميعinput_idsبأبعاد(batch_size, sequence_length). - inputs_embeds (
torch.Tensorمن الشكل(batch_size, sequence_length, hidden_size)، اختياري) — اختياريًا، بدلاً من تمريرinput_ids، يمكنك اختيار تمرير تمثيل مضمّن مباشرة. وهذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارسinput_idsإلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج. - use_cache (
bool، اختياري) — إذا تم تعيينه إلىTrue، تُعاد حالات المفاتيح والقيمpast_key_valuesويمكن استخدامها لتسريع فك الترميز (انظرpast_key_values).
يعيد
GradiumPhononTTSOutputWithPast أو tuple(torch.Tensor)
GradiumPhononTTSOutputWithPast أو مجموعة مرتبة من
torch.Tensor (إذا تم تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة
تعتمد على الإعداد (GradiumPhononTTSConfig) والمدخلات.
تُعيد طريقة GradiumPhononTTSForConditionalGeneration الأمامية تعريف الطريقة الخاصة __call__.
على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن
Moduleبدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.
loss (
torch.Tensorof shape(), اختياري, يُعاد عند تمريرlabels) — خسارة التدريب: خسارة تدفق LSD لللاتنتات المستهدفة بالإضافة إلىconfig.eos_loss_weightمضروبة في خسارة نهاية الكلام.logits (
torch.Tensorمن الشكل(batch_size, sequence_length, 1)) — قيم logits لنهاية الكلام، قيمة واحدة لكل موضع.past_key_values (
Cache، اختياري، يُعاد عند تمريرuse_cache=Trueأو عند تعيينconfig.use_cache=True) — إنه كائن من نوع Cache. لمزيد من التفاصيل، راجع دليل ذاكرة kv.تحتوي على حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه الذاتي) يمكن استخدامها (انظر مدخل
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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
last_hidden_state (
torch.Tensorمن الشكل(batch_size, sequence_length, hidden_size)) — حالات مخفية مُعايرة للنواة، وهي التي تُشترط رأس التدفق.
مثال:
>>> from transformers import AutoProcessor, GradiumPhononTTSForConditionalGeneration
>>> model = GradiumPhononTTSForConditionalGeneration.from_pretrained("gradium/phonon-31m-en")
>>> processor = AutoProcessor.from_pretrained("gradium/phonon-31m-en")
>>> 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] = None**kwargs )
المعاملات
- inputs (
torch.LongTensorمن الشكل(batch_size, sequence_length)، اختياري) —input_idsالمُعدّة بواسطة PocketTTSProcessor. يمكن أيضًا تمريرها على شكلinput_ids=. - kwargs (
dict[str, Any], اختياري) —attention_mask، وموجّه الصوت (audio_prompt_latentsوaudio_prompt_latents_mask، أو ذاكرة مؤقتة لبداية صوتية على شكلpast_key_values، مع الأصوات المرفقة، وبموجّهات نصية فقط)، وframes_after_eosمن المعالج، ومعاملات التوليد (do_sample،temperature،max_new_tokens، …)، ومعاملات Pocket TTS الخاصةnum_flow_stepsوeos_thresholdوmin_frames_before_eos، والتي تُعيَّن افتراضيًا من إعدادات التوليد.
يولّد الكلام. تتجاوز هذه الطريقة generate() لجعل القيمة الافتراضية لـmax_new_tokens تساوي ميزانية الإطارات الخاصة بوقت التشغيل الأصلي، وهي ceil((num_text_tokens / 3 + 2) * frame_rate) لأطول نص في الدفعة. أما كل ما عدا ذلك فيمر عبر خطافات التوليد المعتادة.