Diffusers documentation

AudioLDM 2

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

AudioLDM 2

قُدِّم AudioLDM 2 في AudioLDM 2: Learning Holistic Audio Generation with Self-supervised Pretraining بواسطة Haohe Liu وآخرون. يستقبل AudioLDM 2 نصًا كمدخل ويتنبأ بالصوت المقابل. يمكنه توليد مؤثرات صوتية بشرط نصي، وكلام بشري، وموسيقى.

Inspired by Stable Diffusion, AudioLDM 2 is a text-to-audio latent diffusion model (LDM) that learns continuous audio representations from text embeddings. Two text encoder models are used to compute the text embeddings from a prompt input: the text-branch of CLAP and the encoder of Flan-T5. These text embeddings are then projected to a shared embedding space by an AudioLDM2ProjectionModel. A GPT2 language model (LM) is used to auto-regressively predict eight new embedding vectors, conditional on the projected CLAP and Flan-T5 embeddings. The generated embedding vectors and Flan-T5 text embeddings are used as cross-attention conditioning in the LDM. The UNet of AudioLDM 2 is unique in the sense that it takes two cross-attention embeddings, as opposed to one cross-attention conditioning, as in most other LDMs.

ملخص الورقة البحثية هو كالتالي:

على الرغم من أن توليد الصوت يتشارك أوجه تشابه عبر أنواع مختلفة من الصوت، مثل الكلام والموسيقى والمؤثرات الصوتية، فإن تصميم نماذج لكل نوع يتطلب مراعاة دقيقة للأهداف والتحيزات المحددة التي قد تختلف بشكل كبير عن تلك الخاصة بالأنواع الأخرى. ولإقناعنا بمنظور موحّد لتوليد الصوت، تقترح هذه الورقة إطار عمل يستخدم نفس طريقة التعلم لتوليد الكلام والموسيقى والمؤثرات الصوتية. يُقدّم إطار عملنا تمثيلاً عاماً للصوت يُسمى “لغة الصوت” (LOA). يمكن ترجمة أي صوت إلى LOA بناءً على AudioMAE، وهو نموذج تعلّم تمثيلات مُسبق التدريب ذاتي الإشراف. في عملية التوليد، نترجم أي أنماط إلى LOA باستخدام نموذج GPT-2، ونقوم بتعلم توليد الصوت ذاتي الإشراف باستخدام نموذج انتشار كامن مشروط على LOA. يجلب الإطار المقترح مزايا طبيعية مثل قدرات التعلم ضمن السياق، والنماذج المُسبقة التدريب ذاتية الإشراف القابلة لإعادة الاستخدام من AudioMAE ونماذج الانتشار الكامن. تُظهر التجارب على المعايير الرئيسية لتحويل النص إلى صوت، والنص إلى موسيقى، والنص إلى كلام أداءً متقدماً أو تنافسياً مقارنةً بالأساليب السابقة. كودنا، ونموذجنا المُسبق التدريب، وعرضنا التجريبي متاحة في هذا الرابط.

تمت مساهمة خط المعالجة هذا من قِبل sanchit-gandhi و Nguyễn Công Tú Anh. يمكن العثور على قاعدة الكود الأصلية في haoheliu/audioldm2.

نصائح

اختيار نقطة تفتيش

يتوفر AudioLDM2 بثلاثة متغيرات. يمكن تطبيق نقطتي تفتيش من هذه النقاط على المهمة العامة لتوليد الصوت من النص. أما نقطة التفتيش الثالثة فقد تم تدريبها حصريًا على توليد الموسيقى من النص.

تشارك جميع نقاط التفتيش (checkpoints) نفس حجم النموذج لمشفرات النص ووحدة الترميز/فك الترميز (VAE). وتختلف في حجم وعمق وحدة UNet. راجع الجدول أدناه للحصول على تفاصيل حول نقاط التفتيش الثلاث:

نقطة التفتيشالمهمةحجم نموذج UNetالحجم الكلي للنموذجبيانات التدريب / ساعة
audioldm2النص إلى الصوت350M1.1B1150k
audioldm2-largeالنص إلى الصوت750M1.5B1150k
audioldm2-musicالنص إلى الموسيقى350M1.1B665k
audioldm2-gigaspeechالنص إلى كلام350M1.1B10k
audioldm2-ljspeechالنص إلى كلام350M1.1B

بناء الاستعلام

  • تعمل مدخلات الأوامر الوصفية بشكل أفضل: استخدم الصفات لوصف الصوت (مثل “جودة عالية” أو “واضح”) واجعل سياق الأمر محددًا (مثل “جريان الماء في الغابة” بدلاً من “جريان”).
  • من الأفضل استخدام مصطلحات عامة مثل “cat” أو “dog” بدلاً من أسماء محددة أو كائنات مجردة قد لا يكون النموذج على دراية بها.
  • يمكن أن يحسّن استخدام موجّه سلبي بشكل كبير من جودة الموجة الصوتية المولّدة، من خلال توجيه عملية التوليد بعيدًا عن المصطلحات التي تتوافق مع صوت منخفض الجودة. جرّب استخدام موجّه سلبي هو “Low quality.”

التحكم في الاستدلال

  • يمكن التحكم في الجودة لعينة الصوت المتوقعة عبر الحجة num_inference_steps؛ فزيادة عدد الخطوات تمنح صوتاً بجودة أعلى على حساب بطء الاستدلال.
  • يمكن التحكم في الطول لعينة الصوت المتوقعة عن طريق تغيير الحجة audio_length_in_s.

تقييم الموجات المولّدة:

  • يمكن أن يختلف مستوى جودة الموجات الصوتية المولّدة بشكل كبير اعتمادًا على البذرة (seed). جرّب التوليد ببذور مختلفة حتى تجد نتيجة توليد مرضية.
  • يمكن توليد عدة موجات صوتية دفعة واحدة: اضبط num_waveforms_per_prompt على قيمة أكبر من 1. سيتم إجراء تقييم تلقائي بين الموجات الصوتية المولّدة ونص الأمر، ثم ترتيب المقاطع الصوتية من الأفضل إلى الأسوأ بناءً على ذلك.

يُظهر المثال التالي كيفية بناء موسيقى وكلام جيدين باستخدام النصائح المذكورة أعلاه: مثال.

تأكد من الاطلاع على دليل المجدولين لمعرفة كيفية استكشاف التوازن بين سرعة المجدول وجودة النتائج، واطّلع على قسم إعادة استخدام المكونات عبر خطوط الأنابيب لمعرفة كيفية تحميل نفس المكونات بكفاءة في خطوط أنابيب متعددة.

AudioLDM2Pipeline

فئة diffusers.AudioLDM2Pipeline

< >

( vae: AutoencoderKLtext_encoder: ClapModeltext_encoder_2: transformers.models.t5.modeling_t5.T5EncoderModel | transformers.models.vits.modeling_vits.VitsModelprojection_model: AudioLDM2ProjectionModellanguage_model: GPT2LMHeadModeltokenizer: RobertaTokenizertokenizer_2: transformers.models.t5.tokenization_t5.T5Tokenizer | transformers.models.vits.tokenization_vits.VitsTokenizerfeature_extractor: ClapFeatureExtractorunet: AudioLDM2UNet2DConditionModelscheduler: KarrasDiffusionSchedulersvocoder: SpeechT5HifiGan )

المعاملات

  • vae (AutoencoderKL) — نموذج الترميز التبايني التلقائي (VAE) لتشفير وفك تشفير الصور إلى تمثيلات كامنة ومنها.
  • text_encoder (ClapModel) — أول مُشفِّر نصي مجمّد. يستخدم AudioLDM2 نموذج التضمين المشترك للصوت والنص CLAP، وتحديداً النسخة laion/clap-htsat-unfused. يُستخدم فرع النص لتشفير موجه النص إلى تضمين موجه. ويُستخدم نموذج الصوت والنص الكامل لترتيب الموجات الصوتية المولّدة مقابل موجه النص من خلال حساب درجات التشابه.
  • text_encoder_2 ([~transformers.T5EncoderModel, ~transformers.VitsModel]) — المُشفِّر النصي الثاني المُجمَّد. يستخدم AudioLDM2 مُشفِّر T5، وتحديداً النسخة google/flan-t5-large. يُستخدم المُشفِّر النصي الثاني المُجمَّد لأغراض TTS. يستخدم AudioLDM2 مُشفِّر Vits.
  • projection_model (AudioLDM2ProjectionModel) — نموذج مُدرَّب يُستخدم لإسقاط الحالات المخفية (hidden-states) خطيًا من نموذجي ترميز النص الأول والثاني وإدراج تمثيلات رموز SOS و EOS المُتعلَّمة. يتم دمج الحالات المخفية المُسقطة من مُرمِّزي النص لتكوين مدخل نموذج اللغة. تمثيل موضع مُتعلَّم للحالات المخفية الخاصة بـ Vits
  • language_model (GPT2Model) — نموذج لغوي ذاتي التوليد يُستخدم لتوليد تسلسل من حالات المخفية مشروطة على المخرجات المُساقطة من مشفري النص.
  • tokenizer (RobertaTokenizer) — مُقسِّم (Tokenizer) لتقسيم النص الخاص بمُشفِّر النص الأول المُجمَّد.
  • tokenizer_2 ([~transformers.T5Tokenizer, ~transformers.VitsTokenizer]) — مُقسِّم (Tokenizer) لتقسيم النص لمُشفِّر النص الثاني المُجمَّد.
  • feature_extractor (ClapFeatureExtractor) — مستخرج ميزات لمعالجة الموجات الصوتية المولّدة مسبقًا وتحويلها إلى طيف لوجاريتمي-ميلي (log-mel spectrogram) من أجل التقييم التلقائي.
  • unet (UNet2DConditionModel) — نموذج UNet2DConditionModel لإزالة الضوضاء من الكامنات الصوتية المُرمّزة.
  • scheduler (SchedulerMixin) — مجدول يُستخدم بالاقتران مع unet لإزالة الضوضاء من الكامنات الصوتية المُرمّزة. يمكن أن يكون أحد DDIMScheduler أو LMSDiscreteScheduler أو PNDMScheduler.
  • vocoder (SpeechT5HifiGan) — مُصوِّغ صوتي من الفئة SpeechT5HifiGan لتحويل مُتغيِّرات المِطياع المِيلي إلى موجة الصوت النهائية.

خط أنابيب لتوليد الصوت من النص باستخدام AudioLDM2.

يرث هذا النموذج من DiffusionPipeline. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة المُنفَّذة لجميع خطوط الأنابيب (التنزيل، الحفظ، التشغيل على جهاز معين، إلخ).

__call__

< >

( prompt: str | list[str] = Nonetranscription: str | list[str] = Noneaudio_length_in_s: float | None = Nonenum_inference_steps: int = 200guidance_scale: float = 3.5negative_prompt: str | list[str] | None = Nonenum_waveforms_per_prompt: int | None = 1eta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonegenerated_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_generated_prompt_embeds: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.LongTensor] = Nonenegative_attention_mask: typing.Optional[torch.LongTensor] = Nonemax_new_tokens: int | None = Nonereturn_dict: bool = Truecallback: typing.Optional[typing.Callable[[int, int, torch.Tensor], NoneType]] = Nonecallback_steps: int | None = 1cross_attention_kwargs: dict[str, typing.Any] | None = Noneoutput_type: str | None = 'np' ) → StableDiffusionPipelineOutput or tuple

المعاملات

  • prompt (str أو list[str]، اختياري) — الموجّه أو الموجّهات التي توجّه توليد الصوت. إذا لم يُعرَّف، يجب عليك تمرير prompt_embeds.
  • transcription (str أو list[str]، اختياري) —\ النص المُدوَّن لتحويل النص إلى كلام.
  • audio_length_in_s (int، اختياري، القيمة الافتراضية 10.24) — طول عينة الصوت المولّدة بالثواني.
  • num_inference_steps (int، اختياري، القيمة الافتراضية 200) — عدد خطوات إزالة الضوضاء. تؤدي زيادة عدد خطوات إزالة الضوضاء عادةً إلى جودة صوتية أعلى على حساب بطء الاستدلال.
  • guidance_scale (float, اختياري، القيمة الافتراضية 3.5) — تشجع قيمة أعلى لمقياس التوجيه النموذج على توليد صوت مرتبط ارتباطًا وثيقًا بنص prompt على حساب انخفاض جودة الصوت. يتم تفعيل مقياس التوجيه عندما يكون guidance_scale > 1.
  • negative_prompt (str أو list[str]، اختياري) — الموجّه أو الموجّهات التي توجّه ما يجب عدم تضمينه في توليد الصوت. إذا لم يُعرَّف، يجب عليك تمرير negative_prompt_embeds بدلاً من ذلك. يتم تجاهله عند عدم استخدام التوجيه (guidance_scale < 1).
  • num_waveforms_per_prompt (int, اختياري، القيمة الافتراضية 1) — عدد الموجات الصوتية التي سيتم توليدها لكل موجه. إذا كان num_waveforms_per_prompt > 1، يتم إجراء تقييم تلقائي بين المخرجات المولّدة والموجه النصي. يقوم هذا التقييم بترتيب الموجات الصوتية المولّدة بناءً على تشابه جيب التمام (cosine similarity) بينها وبين المدخل النصي في فضاء التضمين المشترك للنص والصوت.
  • eta (float، اختياري، القيمة الافتراضية 0.0) — يتوافق مع المعامل eta (η) من ورقة DDIM. ينطبق فقط على DDIMScheduler، ويُتجاهل في المجدولين الآخرين.
  • generator (torch.Generator أو list[torch.Generator]، اختياري) — torch.Generator لجعل التوليد حتميًا.
  • latents (torch.Tensor، اختياري) — كائنات latents ضجيجية مُولّدة مسبقًا، مُستخرجة من توزيع غاوسي، تُستخدم كمدخلات لتوليد الطيف الصوتي. يمكن استخدامها لتعديل نفس التوليد باستخدام أوامر مختلفة. إذا لم تُقدَّم، يتم توليد كائن latents عن طريق الاستخراج باستخدام مولّد الأرقام العشوائية generator المُقدَّم.
  • prompt_embeds (torch.Tensor، اختياري) — تضمينات نصية مُولَّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة (مثل وزن الموجهات). إذا لم تُقدَّم، يتم توليد التضمينات النصية من معامل الإدخال prompt.
  • negative_prompt_embeds (torch.Tensor، اختياري) — تضمينات نصية سلبية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة (وزن الموجه). إذا لم تُقدَّم، يتم توليد negative_prompt_embeds من معامل الإدخال negative_prompt.
  • generated_prompt_embeds (torch.Tensor، اختياري) — تضمينات نصية مُولَّدة مسبقًا من نموذج اللغة GPT2. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الموجه. إذا لم تُقدَّم، فسيتم توليد تضمينات النص من معامل الإدخال prompt.
  • negative_generated_prompt_embeds (torch.Tensor، اختياري) — تمثيلات نصية سلبية مُولّدة مسبقًا من نموذج اللغة GPT2. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الموجه. إذا لم تُقدَّم، فسيتم حساب negative_prompt_embeds من معامل الإدخال negative_prompt.
  • attention_mask (torch.LongTensor، اختياري) — قناع الانتباه المُحسب مسبقًا الذي سيُطبَّق على prompt_embeds. إذا لم يُقدَّم، فسيتم حساب قناع الانتباه من معامل الإدخال prompt.
  • negative_attention_mask (torch.LongTensor، اختياري) — قناع الانتباه المُحسب مسبقًا الذي سيُطبَّق على negative_prompt_embeds. إذا لم يُقدَّم، فسيتم حساب قناع الانتباه من معامل الإدخال negative_prompt.
  • max_new_tokens (int, اختياري، القيمة الافتراضية هي None) — عدد الرموز الجديدة التي سيتم توليدها باستخدام نموذج GPT2 اللغوي. إذا لم يتم تقديمه، فسيتم أخذ عدد الرموز من إعدادات النموذج.
  • return_dict (bool، اختياري، القيمة الافتراضية True) — ما إذا كان يجب إرجاع StableDiffusionPipelineOutput بدلاً من tuple عادي.
  • callback (Callable، اختياري) — دالة تُستدعى كل callback_steps خطوات أثناء الاستدلال. تُستدعى الدالة مع الحجج التالية: callback(step: int, timestep: int, latents: torch.Tensor).
  • callback_steps (int، اختياري، القيمة الافتراضية 1) — التردد الذي تُستدعى به دالة callback. إذا لم يُحدد، تُستدعى الدالة في كل خطوة.
  • cross_attention_kwargs (dict، اختياري) — قاموس kwargs يُمرَّر إلى AttentionProcessor كما هو معرَّف في self.processor إذا تمَّ تحديده.
  • output_type (str، اختياري، الافتراضي "np") — صيغة مخرجات الصوت المولّد. اختر بين "np" لإرجاع مصفوفة NumPy np.ndarray أو "pt" لإرجاع كائن PyTorch torch.Tensor. اضبطه على "latent" لإرجاع مخرجات نموذج الانتشار الكامن (LDM).

يعيد

StableDiffusionPipelineOutput أو tuple

إذا كان return_dict هو True، يُعاد StableDiffusionPipelineOutput، وإلا يُعاد tuple حيث يكون العنصر الأول قائمة تحتوي على الصوت المولّد.

دالة الاستدعاء call لخط الأنابيب pipeline الخاص بالتوليد.

أمثلة:

>>> import scipy
>>> import torch
>>> from diffusers import AudioLDM2Pipeline

>>> repo_id = "cvssp/audioldm2"
>>> pipe = AudioLDM2Pipeline.from_pretrained(repo_id, torch_dtype=torch.float16)
>>> pipe = pipe.to("cuda")

>>> # define the prompts
>>> prompt = "The sound of a hammer hitting a wooden surface."
>>> negative_prompt = "Low quality."

>>> # set the seed for generator
>>> generator = torch.Generator("cuda").manual_seed(0)

>>> # run the generation
>>> audio = pipe(
...     prompt,
...     negative_prompt=negative_prompt,
...     num_inference_steps=200,
...     audio_length_in_s=10.0,
...     num_waveforms_per_prompt=3,
...     generator=generator,
... ).audios

>>> # save the best audio sample (index 0) as a .wav file
>>> scipy.io.wavfile.write("techno.wav", rate=16000, data=audio[0])
#Using AudioLDM2 for Text To Speech
>>> import scipy
>>> import torch
>>> from diffusers import AudioLDM2Pipeline

>>> repo_id = "anhnct/audioldm2_gigaspeech"
>>> pipe = AudioLDM2Pipeline.from_pretrained(repo_id, torch_dtype=torch.float16)
>>> pipe = pipe.to("cuda")

>>> # define the prompts
>>> prompt = "A female reporter is speaking"
>>> transcript = "wish you have a good day"

>>> # set the seed for generator
>>> generator = torch.Generator("cuda").manual_seed(0)

>>> # run the generation
>>> audio = pipe(
...     prompt,
...     transcription=transcript,
...     num_inference_steps=200,
...     audio_length_in_s=10.0,
...     num_waveforms_per_prompt=2,
...     generator=generator,
...     max_new_tokens=512,          #Must set max_new_tokens equa to 512 for TTS
... ).audios

>>> # save the best audio sample (index 0) as a .wav file
>>> scipy.io.wavfile.write("tts.wav", rate=16000, data=audio[0])

enable_model_cpu_offload

< >

( gpu_id: int | None = Nonedevice: typing.Union[torch.device, str] = 'cuda' )

ينقل جميع النماذج إلى وحدة المعالجة المركزية (CPU) باستخدام accelerate، مما يقلل من استهلاك الذاكرة مع تأثير ضئيل على الأداء. مقارنةً بـ enable_sequential_cpu_offload، تنقل هذه الطريقة نموذجًا كاملًا واحدًا في كل مرة إلى وحدة معالجة الرسوميات (GPU) عند استدعاء طريقة forward الخاصة به، ويبقى النموذج في وحدة معالجة الرسوميات حتى تشغيل النموذج التالي. تكون وفورات الذاكرة أقل مما هي عليه مع enable_sequential_cpu_offload، لكن الأداء يكون أفضل بكثير بسبب التنفيذ التكراري لـ unet.

encode_prompt

< >

( promptdevicenum_waveforms_per_promptdo_classifier_free_guidancetranscription = Nonenegative_prompt = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonegenerated_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_generated_prompt_embeds: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.LongTensor] = Nonenegative_attention_mask: typing.Optional[torch.LongTensor] = Nonemax_new_tokens: int | None = None ) → prompt_embeds (torch.Tensor)

المعاملات

  • prompt (str أو list[str]، اختياري) — الموجّه الذي سيتم ترميزه
  • transcription (str أو list[str]) — نصّ التحويل من نص إلى كلام
  • device (torch.device) — جهاز torch
  • num_waveforms_per_prompt (int) — عدد الموجات الصوتية التي يجب توليدها لكل موجه
  • do_classifier_free_guidance (bool) — ما إذا كان سيتم استخدام classifier free guidance أم لا
  • negative_prompt (str أو list[str]، اختياري) — الموجّه أو الموجّهات التي لا ينبغي استخدامها لتوجيه توليد الصوت. إذا لم يُعرَّف، يجب تمرير negative_prompt_embeds بدلاً من ذلك. يتم تجاهله عند عدم استخدام التوجيه (أي يتم تجاهله إذا كان guidance_scale أقل من 1).
  • prompt_embeds (torch.Tensor، اختياري) — تضمينات نصية محسوبة مسبقًا من نموذج Flan T5. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن المحفز. إذا لم تُقدَّم، فسيتم حساب تضمينات النص من معامل الإدخال prompt.
  • negative_prompt_embeds (torch.Tensor، اختياري) — تضمينات نصية سالبة محسوبة مسبقًا من نموذج Flan T5. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الموجه. إذا لم تُقدَّم، فسيتم حساب negative_prompt_embeds من معامل الإدخال negative_prompt.
  • generated_prompt_embeds (torch.Tensor، اختياري) — تضمينات نصية مُولَّدة مسبقًا من نموذج اللغة GPT2. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الموجه. إذا لم تُقدَّم، فسيتم توليد تضمينات النص من معامل الإدخال prompt.
  • negative_generated_prompt_embeds (torch.Tensor، اختياري) — تمثيلات نصية سلبية مُولّدة مسبقًا من نموذج اللغة GPT2. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الموجه. إذا لم تُقدَّم، فسيتم حساب negative_prompt_embeds من معامل الإدخال negative_prompt.
  • attention_mask (torch.LongTensor، اختياري) — قناع الانتباه المُحسب مسبقًا الذي سيُطبَّق على prompt_embeds. إذا لم يُقدَّم، فسيتم حساب قناع الانتباه من معامل الإدخال prompt.
  • negative_attention_mask (torch.LongTensor، اختياري) — قناع الانتباه المُحسب مسبقًا الذي سيُطبَّق على negative_prompt_embeds. إذا لم يُقدَّم، فسيتم حساب قناع الانتباه من معامل الإدخال negative_prompt.
  • max_new_tokens (int، اختياري، القيمة الافتراضية هي None) — عدد الرموز الجديدة التي سيتم توليدها باستخدام نموذج GPT2 اللغوي.

يعيد

prompt_embeds (torch.Tensor)

تضمينات نصية من نموذج Flan T5. attention_mask (torch.LongTensor): قناع الانتباه الذي سيُطبَّق على prompt_embeds. generated_prompt_embeds (torch.Tensor): تضمينات نصية مُولَّدة من نموذج اللغة GPT2.

يقوم بتشفير الموجه إلى حالات مخفية لمشفّر النص.

مثال:

>>> import scipy
>>> import torch
>>> from diffusers import AudioLDM2Pipeline

>>> repo_id = "cvssp/audioldm2"
>>> pipe = AudioLDM2Pipeline.from_pretrained(repo_id, torch_dtype=torch.float16)
>>> pipe = pipe.to("cuda")

>>> # Get text embedding vectors
>>> prompt_embeds, attention_mask, generated_prompt_embeds = pipe.encode_prompt(
...     prompt="Techno music with a strong, upbeat tempo and high melodic riffs",
...     device="cuda",
...     do_classifier_free_guidance=True,
... )

>>> # Pass text embeddings to pipeline for text-conditional audio generation
>>> audio = pipe(
...     prompt_embeds=prompt_embeds,
...     attention_mask=attention_mask,
...     generated_prompt_embeds=generated_prompt_embeds,
...     num_inference_steps=200,
...     audio_length_in_s=10.0,
... ).audios[0]

>>> # save generated audio sample
>>> scipy.io.wavfile.write("techno.wav", rate=16000, data=audio)

generate_language_model

< >

( inputs_embeds: Tensor = Nonemax_new_tokens: int = 8**model_kwargs ) → inputs_embeds (torch.Tensorof shape(batch_size, sequence_length, hidden_size)`)

المعاملات

  • inputs_embeds (torch.Tensor من الشكل (batch_size, sequence_length, hidden_size)) — التسلسل المستخدم كموجّه (prompt) للتوليد.
  • max_new_tokens (int) — عدد الرموز الجديدة التي سيتم توليدها.
  • model_kwargs (dict[str, Any], اختياري) — تحديد معلمات إضافية مخصصة لنموذج معين، سيتم تمريرها إلى دالة forward الخاصة بالنموذج.

يعيد

inputs_embeds (torch.Tensorof shape(batch_size, sequence_length, hidden_size)`)

تسلسل حالات الخفاء المولّدة.

يولّد تسلسلاً من حالات الخفاء من نموذج اللغة، مشروطاً بمدخلات التضمين.

AudioLDM2ProjectionModel

فئة diffusers.AudioLDM2ProjectionModel

< >

( text_encoder_dimtext_encoder_1_dimlangauge_model_dimuse_learned_position_embedding = Nonemax_seq_length = None )

المعاملات

  • text_encoder_dim (int) — أبعاد التضمينات النصية من مُشفِّر النص الأول (CLAP).
  • text_encoder_1_dim (int) — أبعاد التضمينات النصية من مُشفِّر النص الثاني (T5 أو VITS).
  • langauge_model_dim (int) — أبعاد التضمينات النصية من نموذج اللغة (GPT2).

نموذج إسقاط خطي بسيط لربط تضمينين نصيين بمساحة كامنة مشتركة. كما يقوم بإدراج متجهات تضمين متعلمة في بداية ونهاية كل تسلسل تضمين نصي على التوالي. يشير كل متغير مُضاف إليه _1 إلى المتغير المقابل في مُرمّز النص الثاني. وإلا فهو من المُرمّز الأول.

forward

< >

( hidden_states: typing.Optional[torch.Tensor] = Nonehidden_states_1: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.LongTensor] = Noneattention_mask_1: typing.Optional[torch.LongTensor] = None ) → AudioLDM2ProjectionModelOutput

المعاملات

  • hidden_states (torch.Tensor من الشكل (batch_size, sequence_length, text_encoder_dim)، اختياري) — تمثيلات النص من مُشفِّر النص الأول (CLAP).
  • hidden_states_1 (torch.Tensor من الشكل (batch_size, sequence_length_1, text_encoder_1_dim)، اختياري) — تمثيلات النص من مُشفِّر النص الثاني (T5 أو VITS).
  • attention_mask (torch.LongTensor من الشكل (batch_size, sequence_length)، اختياري) — قناع الانتباه (Attention mask) الخاص بـ hidden_states.
  • attention_mask_1 (torch.LongTensor من الشكل (batch_size, sequence_length_1)، اختياري) — قناع الانتباه (Attention mask) الخاص بـhidden_states_1.

يعيد

AudioLDM2ProjectionModelOutput

تضمينات النص المُتوقَّعة لكلا مشفّري النص، مُلحقةً على طول بُعد التسلسل، وقناع الانتباه المُجمَّع لهما.

AudioLDM2UNet2DConditionModel

فئة diffusers.AudioLDM2UNet2DConditionModel

< >

( sample_size: int | None = Nonein_channels: int = 4out_channels: int = 4flip_sin_to_cos: bool = Truefreq_shift: int = 0down_block_types: tuple = ('CrossAttnDownBlock2D', 'CrossAttnDownBlock2D', 'CrossAttnDownBlock2D', 'DownBlock2D')mid_block_type: str = 'UNetMidBlock2DCrossAttn'up_block_types: tuple = ('UpBlock2D', 'CrossAttnUpBlock2D', 'CrossAttnUpBlock2D', 'CrossAttnUpBlock2D')only_cross_attention: bool | tuple[bool] = Falseblock_out_channels: tuple = (320, 640, 1280, 1280)layers_per_block: int | tuple[int] = 2downsample_padding: int = 1mid_block_scale_factor: float = 1act_fn: str = 'silu'norm_num_groups: int | None = 32norm_eps: float = 1e-05cross_attention_dim: int | tuple[int] = 1280transformer_layers_per_block: int | tuple[int] = 1attention_head_dim: int | tuple[int] = 8num_attention_heads: int | tuple[int] | None = Noneuse_linear_projection: bool = Falseclass_embed_type: str | None = Nonenum_class_embeds: int | None = Noneupcast_attention: bool = Falseresnet_time_scale_shift: str = 'default'time_embedding_type: str = 'positional'time_embedding_dim: int | None = Nonetime_embedding_act_fn: str | None = Nonetimestep_post_act: str | None = Nonetime_cond_proj_dim: int | None = Noneconv_in_kernel: int = 3conv_out_kernel: int = 3projection_class_embeddings_input_dim: int | None = Noneclass_embeddings_concat: bool = False )

المعاملات

  • sample_size (int أو tuple[int, int]، اختياري، القيمة الافتراضية None) — الارتفاع والعرض لعينة الإدخال/الإخراج.
  • in_channels (int، اختياري، القيمة الافتراضية 4) — عدد القنوات في العينة المدخلة.
  • out_channels (int، اختياري، القيمة الافتراضية 4) — عدد القنوات في المخرجات.
  • flip_sin_to_cos (bool، اختياري، القيمة الافتراضية False) — ما إذا كان يجب عكس sin إلى cos في تضمين الوقت.
  • freq_shift (int، اختياري، القيمة الافتراضية 0) — إزاحة التردد التي تُطبَّق على تضمين الوقت.
  • down_block_types (tuple[str]، اختياري، الافتراضي ("CrossAttnDownBlock2D", "CrossAttnDownBlock2D", "CrossAttnDownBlock2D", "DownBlock2D")) — المجموعة المرتبة (tuple) من كتل التقليل (downsample) المراد استخدامها.
  • mid_block_type (str، اختياري، القيمة الافتراضية "UNetMidBlock2DCrossAttn") — نوع الكتلة في منتصف UNet، ولا يمكن أن يكون سوى UNetMidBlock2DCrossAttn في AudioLDM2.
  • up_block_types (tuple[str]، اختياري، القيمة الافتراضية ("UpBlock2D", "CrossAttnUpBlock2D", "CrossAttnUpBlock2D", "CrossAttnUpBlock2D")) — المجموعة المرتبة (tuple) من كتل إعادة التجميع (upsample blocks) التي سيتم استخدامها.
  • only_cross_attention (bool أو tuple[bool]، اختياري، الافتراضي False) — ما إذا كان يجب تضمين الانتباه الذاتي في كتل التحوّل الأساسية، راجع BasicTransformerBlock.
  • block_out_channels (tuple[int]، اختياري، القيمة الافتراضية (320, 640, 1280, 1280)) — مجموعة قنوات الإخراج لكل كتلة.
  • layers_per_block (int، اختياري، القيمة الافتراضية 2) — عدد الطبقات في كل كتلة.
  • downsample_padding (int، اختياري، القيمة الافتراضية 1) — الحشو المستخدم لتحويل الاستيفاء النازل.
  • mid_block_scale_factor (float، اختياري، القيمة الافتراضية 1.0) — معامل المقياس المستخدم للكتلة الوسطى.
  • act_fn (str، اختياري، الافتراضي "silu") — دالة التنشيط المستخدمة.
  • norm_num_groups (int، اختياري، القيمة الافتراضية 32) — عدد المجموعات المستخدمة للتطبيع. إذا كانت None، يتم تجاوز طبقات التطبيع والتفعيل في المعالجة اللاحقة.
  • norm_eps (float، اختياري، القيمة الافتراضية 1e-5) — قيمة الإيبسلون المستخدمة في عملية التطبيع.
  • cross_attention_dim (int أو tuple[int]، اختياري، القيمة الافتراضية 1280) — بعد ميزات الانتباه المتقاطع.
  • transformer_layers_per_block (int أو tuple[int]، اختياري، القيمة الافتراضية 1) — عدد كتل الترانسفورمر من النوع BasicTransformerBlock. ذو صلة فقط بـ ~models.unet_2d_blocks.CrossAttnDownBlock2D، ~models.unet_2d_blocks.CrossAttnUpBlock2D، ~models.unet_2d_blocks.UNetMidBlock2DCrossAttn.
  • attention_head_dim (int، اختياري، القيمة الافتراضية 8) — بُعد رؤوس الانتباه.
  • num_attention_heads (int، اختياري) — عدد رؤوس الانتباه. إذا لم يُعرَّف، يكون الافتراضي attention_head_dim
  • resnet_time_scale_shift (str، اختياري، القيمة الافتراضية "default") — إعداد إزاحة مقياس الوقت لكتل ResNet (انظر ResnetBlock2D). اختر من بين default أو scale_shift.
  • class_embed_type (str، اختياري، القيمة الافتراضية None) — نوع تضمين الفئة المستخدم، والذي يُجمع في النهاية مع تضمينات الوقت. اختر من بين None، "timestep"، "identity"، "projection"، أو "simple_projection".
  • num_class_embeds (int، اختياري، القيمة الافتراضية None) — بعد الإدخال لمصفوفة التضمين القابلة للتعلم التي سيتم إسقاطها إلى time_embed_dim، عند تنفيذ التكييف حسب الفئة مع أن class_embed_type يساوي None.
  • time_embedding_type (str، اختياري، الافتراضي positional) — نوع تضمين الموضع المستخدم لخطوات الزمن. اختر من بين positional أو fourier.
  • time_embedding_dim (int، اختياري، القيمة الافتراضية None) — قيمة اختيارية لتجاوز بُعد تضمين الوقت المُسقط.
  • time_embedding_act_fn (str، اختياري، القيمة الافتراضية None) — دالة تفعيل اختيارية تُستخدم مرة واحدة فقط على تمثيلات الوقت قبل تمريرها إلى بقية UNet. اختر من بين silu، mish، gelu، وswish.
  • timestep_post_act (str، اختياري، القيمة الافتراضية None) — دالة التنشيط الثانية المستخدمة في تضمين خطوة الزمن. اختر من بين silu وmish وgelu.
  • time_cond_proj_dim (int، اختياري، القيمة الافتراضية None) — بعد طبقة cond_proj في تضمين خطوة الزمن.
  • conv_in_kernel (int، اختياري، الافتراضي 3) — حجم النواة لطبقة conv_in.
  • conv_out_kernel (int، اختياري، الافتراضي 3) — حجم النواة لطبقة conv_out.
  • projection_class_embeddings_input_dim (int, اختياري) — بُعد مدخل class_labels عندما يكون class_embed_type="projection". مطلوب عندما يكون class_embed_type="projection".
  • class_embeddings_concat (bool، اختياري، القيمة الافتراضية False) — ما إذا كان يجب دمج تمثيلات الوقت مع تمثيلات الفئة.

نموذج UNet ثنائي الأبعاد مشروط يستقبل عينة ضجيجية، وحالة شرطية، وخطوة زمنية، ويعيد إخراجًا على شكل عينة. مقارنةً بنموذج UNet2DConditionModel الأساسي، يتضمن هذا المتغير اختياريًا طبقة انتباه ذاتي إضافية في كل كتلة Transformer، بالإضافة إلى طبقات انتباه متقاطعة متعددة. كما يسمح حتى بطبقتي تضمين انتباه متقاطع، وهما encoder_hidden_states وencoder_hidden_states_1.

يرث هذا النموذج من ModelMixin. راجع توثيق الفئة الأصلية لمعرفة طرقه العامة المُنفَّذة لجميع النماذج (مثل التنزيل أو الحفظ).

forward

< >

( sample: Tensortimestep: typing.Union[torch.Tensor, float, int]encoder_hidden_states: Tensorclass_labels: typing.Optional[torch.Tensor] = Nonetimestep_cond: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonecross_attention_kwargs: dict[str, typing.Any] | None = Noneencoder_attention_mask: typing.Optional[torch.Tensor] = Nonereturn_dict: bool = Trueencoder_hidden_states_1: typing.Optional[torch.Tensor] = Noneencoder_attention_mask_1: typing.Optional[torch.Tensor] = None ) → UNet2DConditionOutput or tuple

المعاملات

  • sample (torch.Tensor) — مصفوفة الإدخال الضوضائية ذات الشكل التالي (batch, channel, height, width).
  • timestep (torch.Tensor أو float أو int) — عدد خطوات الزمن لإزالة الضوضاء من مدخل.
  • encoder_hidden_states (torch.Tensor) — حالات المُشفِّر المخفية (encoder hidden states) ذات الشكل (batch, sequence_length, feature_dim).
  • encoder_attention_mask (torch.Tensor) — قناع انتباه متقاطع (cross-attention mask) بأبعاد (batch, sequence_length) يُطبَّق على encoder_hidden_states. إذا كان True يُحافظ على القناع، أما إذا كان False فيُستبعد. يُحوَّل القناع إلى انحياز (bias) يضيف قيمًا سالبة كبيرة إلى درجات الانتباه المقابلة لرموز “الاستبعاد”.
  • return_dict (bool، اختياري، القيمة الافتراضية True) — ما إذا كان يجب إرجاع UNet2DConditionOutput بدلاً من tuple عادي.
  • cross_attention_kwargs (dict، اختياري) — قاموس kwargs يُمرَّر إلى AttnProcessor إذا تم تحديده.
  • encoder_hidden_states_1 (torch.Tensor، اختياري) — مجموعة ثانية من حالات المُشفِّر المخفية (encoder hidden states) ذات الشكل (batch, sequence_length_2, feature_dim_2). يمكن استخدامها لتكييف النموذج على مجموعة مختلفة من التضمينات (embeddings) مقارنةً بـ encoder_hidden_states.
  • encoder_attention_mask_1 (torch.Tensor، اختياري) — قناع انتباه متقاطع (cross-attention mask) بأبعاد (batch, sequence_length_2) يُطبَّق على encoder_hidden_states_1. إذا كان True يُحفظ القناع، وإلا إذا كان False يُستبعد. يُحوَّل القناع إلى انحياز (bias)، يُضيف قيمًا سالبة كبيرة إلى درجات الانتباه المقابلة لرموز “الاستبعاد”.

يعيد

UNet2DConditionOutput أو tuple

إذا كان return_dict هو True، يُعاد UNet2DConditionOutput، وإلا يُعاد tuple يكون عنصره الأول هو متجه العينة.

طريقة AudioLDM2UNet2DConditionModel الأمامية.

AudioPipelineOutput

فئة diffusers.AudioPipelineOutput

< >

( audios: ndarray )

المعاملات

  • audios (np.ndarray) — قائمة من عينات الصوت بعد إزالة الضوضاء، على شكل مصفوفة NumPy بأبعاد (batch_size, num_channels, sample_rate).

فئة الإخراج لخطوط أنابيب الصوت.

Update on GitHub