Diffusers documentation

Stable Audio 3

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

Stable Audio 3

Stable Audio 3 (SA3), Stability AI tarafından geliştirilen, 44,1 kHz'de yüksek kaliteli stereo ses üreten bir metinden sese modelidir. İki sinyale koşullanan bir rectified-flow DiT kullanır:

  • Metin — dondurulmuş bir T5Gemma kodlayıcı tarafından kodlanır ve çapraz dikkat (cross-attention) yoluyla enjekte edilir.
  • Süre — StableAudio3DurationEmbedder tarafından gömülen ve uyumlu katman normalizasyonu için küresel koşullandırma vektörü olarak kullanılan bir ondalık sayı (saniye).

Ses, AutoencoderSAME otomatik kodlayıcısı tarafından SAME (Semantically-Aligned Music Encoder) ile çözümlenir.

Her iki kontrol noktası da log-SNR-uniform sigma zamanlamasıyla FlowMatchEulerDiscreteScheduler kullanır; yalnızca stochastic_sampling ve varsayılan adım sayısı açısından farklılık gösterirler:

Kontrol Noktasıdiffusion_objectivestochastic_samplingnum_inference_steps
stable-audio-3-medium-baserectified_flowFalse (deterministik Euler)100 (damıtılmamış)
stable-audio-3-medium (damıtılmış)rf_denoiserTrue (ping-pong yeniden gürültü)8 (8 adımda damıtıldı)

Doğru zamanlayıcı yapılandırması, dönüştürülen her kontrol noktasına gömülüdür; bu nedenle num_inference_steps parametresini ayarlamazsanız varsayılan olarak doğru değeri alır. Yalnızca bu değeri geçersiz kılmak istediğinizde parametreyi iletin.

Orijinal kod tabanı: Stability-AI/stable-audio-3.

Orijinal denetim noktalarını dönüştürme

Stability AI kontrol noktaları diffusers biçiminde yayımlanmadığından, bunları yerel olarak dönüştürün. Betik, kontrol noktasının model_config.json dosyasını indirir ve zamanlayıcıyı diffusion_objective alanından seçer:

python scripts/convert_stable_audio_3_to_diffusers.py \
  --checkpoint_path stabilityai/stable-audio-3-medium-base \
  --text_encoder_repo google/t5gemma-b-b-ul2 \
  --output_dir /tmp/sa3-diffusers-euler \
  --dtype float32

stable-audio-3-medium-base bir gated depodur. Dönüştürmeden önce, erişimi olan bir hesapla hf auth login komutunu çalıştırın; aksi takdirde indirme 401 hatasıyla başarısız olur.

Kullanım örneği

Dönüştürülen kontrol noktasını yerel çıktı dizininden yükleyin (soundfile paketini pip install soundfile ile yükleyin):

import torch
import soundfile as sf
from diffusers import StableAudio3Pipeline

pipe = StableAudio3Pipeline.from_pretrained("/tmp/sa3-diffusers-euler", torch_dtype=torch.float32)
pipe = pipe.to("cuda")  # or "mps", "xpu", "cpu"

generator = torch.Generator("cuda").manual_seed(0)
audio = pipe(
    "A gentle piano melody with soft strings in a concert hall",
    duration=10.0,  # seconds; latent length is computed automatically
    generator=generator,
).audios

sf.write("sa3_output.wav", audio[0].T.cpu().float().numpy(), samplerate=44100)

Pipeline ayrıca AutoPipelineForText2Audio ile de kayıtlıdır ve bu, checkpoint'i otomatik olarak StableAudio3Pipeline olarak çözer:

from diffusers import AutoPipelineForText2Audio

pipe = AutoPipelineForText2Audio.from_pretrained("/tmp/sa3-diffusers-euler", torch_dtype=torch.float32)

Örnekler, stabilityai/stable-audio-3-medium ve stable-audio-3-medium-base henüz diffusers formatında yayımlanmadığı için (repo kimliğiyle yükleme 404 döndürüyor) yerel bir yol kullanır. Yayımlandıktan sonra, repo kimliği yerel yolun yerine geçer.

İpuçları

  • CPU veya MPS (Apple Silicon) üzerinde torch.float32 kullanın — MPS üzerinde torch.float16 gürültü üretir.
  • Distilled model (stable-audio-3-medium) adversarially distilled — guidance, ağırlıklara gömülüdür. guidance_scale=1.0 değerini (varsayılan) bırakın ve bu checkpoint için negative_prompt geçmeyin; her ikisi de yalnızca distilled olmayan stable-audio-3-medium-base checkpoint için işe yarar.
  • silence_padding_duration (varsayılan 0.0), latent dizinin sonuna sessiz bir pay bırakır. Model bu dolguyu maskelemek üzere eğitilmediyse 0.0 olarak bırakın; aksi halde ek kareler çıktı enerjisini tüketir ve sonuç kısılır.
  • Her istem başına birden fazla klip oluşturmak için num_waveforms_per_prompt > 1 değerini ayarlayın.

StableAudio3Pipeline

sınıf diffusers.StableAudio3Pipeline

< >

( vae: AutoencoderSAMEtext_encoder: T5GemmaEncoderModeltokenizer: GemmaTokenizerduration_embedder: StableAudio3DurationEmbeddertransformer: StableAudio3DiTModelscheduler: FlowMatchEulerDiscreteScheduler )

Parametreler

  • vae ([AutoencoderSAME]) — Ses latentlerini kodlamak ve çözmek için kullanılan SAME otoenkoderi.
  • text_encoder ([~transformers.T5GemmaEncoderModel]) — Donmuş T5Gemma metin kodlayıcısı (google/t5gemma-b-b-ul2).
  • tokenizer ([~transformers.GemmaTokenizerFast]) — Tokenizer for the text encoder.
  • duration_embedder ([StableAudio3DurationEmbedder]) — duration değerini saniye cinsinden, her DiT bloğundaki AdaLN için küresel bir koşullandırma vektörüne eşler.
  • transformer ([StableAudio3DiTModel]) — Düzeltme akışı hız tahmini DiT.
  • scheduler ([FlowMatchEulerDiscreteScheduler]) — İteratif gürültü azaltma döngüsü için zamanlayıcı. Üretim (damıtılmış) SA3 Medium kontrol noktası tam olarak 8 ping-pong adımı için stochastic_sampling=True kullanır; damıtılmamış temel kontrol noktası ise ~100 deterministik Euler adımı için stochastic_sampling=False kullanır.

Stable Audio 3 kullanılarak metinden ses üretimi için Pipeline.

SA3, ping-pong örneklemeye sahip damıtılmış rectified-flow DiT kullanır. Damıtılmış checkpoint için classifier-free guidance (guidance_scale / negative_prompt) gereksizdir (guidance_scale=1.0, varsayılan değer bırakılmalıdır) ancak damıtılmamış stable-audio-3-medium-base checkpoint için anlamlıdır.

Bu model, [DiffusionPipeline] sınıfından devralır. Tüm pipeline'lar için uygulanan genel yöntemler için üst sınıf belgelendirmesini kontrol edin.

__call__

< >

( prompt: typing.Union[str, typing.List[str], NoneType] = Noneduration: float = 10.0num_inference_steps: typing.Optional[int] = Nonelogsnr_min: float = -6.2logsnr_max: float = 2.0silence_padding_duration: float = 0.0guidance_scale: float = 1.0negative_prompt: typing.Union[str, typing.List[str], NoneType] = Nonenum_waveforms_per_prompt: int = 1generator: typing.Union[torch.Generator, typing.List[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneencoder_attention_mask: typing.Optional[torch.LongTensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_encoder_attention_mask: typing.Optional[torch.LongTensor] = Nonereturn_dict: bool = Truecallback_on_step_end: typing.Optional[typing.Callable[[int, int, dict], dict]] = Nonecallback_on_step_end_tensor_inputs: typing.List[str] = ['latents']output_type: str = 'pt' ) → [~pipelines.AudioPipelineOutput] or tuple

Parametreler

  • prompt (str veya list[str], isteğe bağlı) — Metin istemcileri. Tokenizasyonu ve kodlamayı atlamak için bunun yerine prompt_embeds geçirin.
  • duration (float, varsayılan 10.0) — İstenen çıktı süresi, saniye cinsinden.
  • num_inference_steps (int, isteğe bağlı) — Gürültü azaltma adım sayısı. None (varsayılan) olduğunda, adım sayısı zamanlayıcının stochastic_sampling yapılandırmasından seçilir: True ise 8 (damıtılmış ping-pong tarzı kontrol noktası) ve False ise 100 (damıtılmamış temel kontrol noktası). Değiştirmek için açık bir değer geçirin.
  • logsnr_min (float, varsayılan -6.2) — Gürültü zamanlaması için minimum log-SNR değeri — zamanlamanın yüksek gürültülü başlangıcına eşlenir.
  • logsnr_max (float, varsayılan 2.0) — Gürültü zamanlaması için maksimum log-SNR değeri — zamanlamanın düşük gürültülü ucuna eşlenir.
  • silence_padding_duration (float, varsayılan 0.0) — Hedef içeriğin ötesinde üretilen ek saniye cinsinden latent bağlam; modele sınırda bir pay bırakır; çıktı duration değerine geri kırpılır. Varsayılan 0.0 (devre dışı). Yalnızca model bu dolguyu maskelemek üzere eğitilmiş/distille edilmişse artırın — aksi halde ek kareler çıktı enerjisini tüketir.
  • guidance_scale (float, varsayılan 1.0) — Sınıflandırıcı-ücretsiz yönlendirme ölçeği. 1.0 yönlendirmeyi devre dışı bırakır (varsayılan değer ve damıtılmış SA3 Medium checkpoint için tek mantıklı değer, çünkü CFG'si ağırlıklara gömülüdür). > 1.0 değerleri, damıtılmamış stable-audio-3-medium-base checkpoint için anlamlıdır; daha yüksek değerler, çeşitlilikten ödün vererek istemi daha yakından takip eder.
  • negative_prompt (str veya list[str], isteğe bağlı) — guidance_scale > 1.0 olduğunda uzaklaşılmak istenen unsurları tanımlayan istem(ler). guidance_scale > 1.0 ve ne bu parametre ne de negative_prompt_embeds verildiğinde varsayılan olarak boş bir dize (koşulsuz) kullanılır. guidance_scale <= 1.0 olduğunda yok sayılır.
  • num_waveforms_per_prompt (int, varsayılan 1) — Her istem için oluşturulacak dalga formu sayısı.
  • generator (torch.Generator veya list[torch.Generator], isteğe bağlı) — Ping-pong döngüsünde deterministik üretim ve yeniden gürültüleme için.
  • latents (torch.Tensor, opsiyonel) — Önceden oluşturulmuş başlangıç latensleri. None ise yeni bir Gauss tensörü örneklenir.
  • prompt_embeds (torch.Tensor, opsiyonel) — Önceden hesaplanmış metin gömlemeleri (batch, seq_len, 768).
  • encoder_attention_mask (torch.LongTensor, opsiyonel) — Önceden hesaplanmış gömme (embedding) için mantıksal maske.
  • negative_prompt_embeds (torch.Tensor, isteğe bağlı) — negative_prompt yerine kullanılacak şekilde önceden hesaplanmış negatif metin gömme değerleri.
  • negative_encoder_attention_mask (torch.LongTensor, isteğe bağlı) — Önceden hesaplanmış negatif gömme (embedding) için mantıksal maske.
  • return_dict (bool, varsayılan True) — Bir AudioPipelineOutput veya düz bir tuple döndürür.
  • callback_on_step_end (Callable, isteğe bağlı) — Her gürültü azaltma adımının sonunda (self, step_idx, timestep, callback_kwargs) ile çağrılır; burada callback_kwargs, callback_on_step_end_tensor_inputs içinde listelenen tensörleri içerir. Döngünün geri kalanında kullanılacak (isteğe bağlı olarak değiştirilmiş) tensörleri içeren bir dict döndürmelidir.
  • callback_on_step_end_tensor_inputs (list[str], varsayılan [“latents”]) — callback_on_step_end'e iletilen tensörler. self._callback_tensor_inputs'ün bir alt kümesi olmalıdır.
  • output_type (str, varsayılan "pt") — "pt" bir PyTorch tensörü için, "np" bir NumPy dizisi için veya "latent" çözümlemeyi atlayıp ham latentleri döndürmek için.

Dönüş değeri

[~pipelines.AudioPipelineOutput] veya tuple

.audios, (batch * num_waveforms_per_prompt, audio_channels, samples) biçiminde bir tensör/dizidir.

Bir metin komutundan ses üretin.

Örnekler:

>>> import torch
>>> import soundfile as sf
>>> from diffusers import StableAudio3Pipeline

>>> pipe = StableAudio3Pipeline.from_pretrained("stabilityai/stable-audio-3-medium", torch_dtype=torch.float16)
>>> pipe = pipe.to("cuda")

>>> generator = torch.Generator("cuda").manual_seed(0)
>>> audio = pipe(
...     "A gentle piano melody with soft strings in a concert hall",
...     duration=10.0,
...     generator=generator,
... ).audios

>>> sf.write("output.wav", audio[0].T.cpu().float().numpy(), samplerate=pipe.vae.config.sampling_rate)

encode_duration

< >

( duration: floatdevice: devicenum_waveforms_per_prompt: intbatch_size: int )

Parametreler

  • duration — Saniye cinsinden süre, batch'teki her örneğe uygulanır.
  • device — Hedef cihaz.
  • num_waveforms_per_prompt — Karo çarpanı.
  • batch_size — İstek sayısı.

Süre değerini küresel koşullandırma vektörüne gömün.

encode_prompt

< >

( prompt: typing.Union[str, typing.List[str], NoneType]device: devicenum_waveforms_per_prompt: intprompt_embeds: typing.Optional[torch.Tensor] = Noneencoder_attention_mask: typing.Optional[torch.LongTensor] = None )

Parametreler

  • prompt — Metin istemi veya istemler listesi. prompt_embeds sağlandığında yok sayılır.
  • device — Hedef cihaz.
  • num_waveforms_per_prompt — Her prompt için üretilecek çıktı dalga formu sayısı; koşullama tensörleri buna göre çoğaltılır.
  • prompt_embeds — Ön hesaplanmış metin gömme değerleri (batch, seq_len, hidden_size).
  • encoder_attention_mask — önceden hesaplanmış gömceler için Boole maskesi (batch, seq_len); 1 = gerçek token, 0 = dolgu.

Metin istemlerini çapraz dikkat koşullama tensörlerine kodlayın.

prepare_cross_attention

< >

( prompt_embeds: Tensorencoder_attention_mask: Tensorglobal_hidden_states: Tensor )

Çapraz dikkat bağlamını, süre gömme değerini ek bir jeton olarak ekleyerek oluşturun.

SA3, seconds_total koşullandırıcısını hem küresel (AdaLN) girdiye hem de ikisine de olan çapraz dikkat bağlamına (cross_attention_cond_ids = ["prompt", "seconds_total"]) yönlendirir. Süre gömme (embedding) metin jetonlarının ardından birleştirilir ve dikkat maskesi bir geçerli girişle genişletilir.

StableAudio3InpaintPipeline

sınıf diffusers.StableAudio3InpaintPipeline

< >

( vae: AutoencoderSAMEtext_encoder: T5GemmaEncoderModeltokenizer: GemmaTokenizerduration_embedder: StableAudio3DurationEmbeddertransformer: StableAudio3DiTModelscheduler: FlowMatchEulerDiscreteScheduler )

Parametreler

  • vae ([AutoencoderSAME]) — Ses latentlerini kodlamak ve çözmek için kullanılan SAME otoenkoderi.
  • text_encoder ([~transformers.T5GemmaEncoderModel]) — Donmuş T5Gemma metin kodlayıcısı (google/t5gemma-b-b-ul2).
  • tokenizer ([~transformers.GemmaTokenizerFast]) — Tokenizer for the text encoder.
  • duration_embedder ([StableAudio3DurationEmbedder]) — duration değerini saniye cinsinden, her DiT bloğundaki AdaLN için küresel bir koşullandırma vektörüne eşler.
  • transformer ([StableAudio3DiTModel]) — Düzeltme akışı hız tahmini DiT.
  • scheduler ([FlowMatchEulerDiscreteScheduler]) — İteratif gürültü azaltma döngüsü için zamanlayıcı. Üretim (damıtılmış) SA3 Medium kontrol noktası tam olarak 8 ping-pong adımı için stochastic_sampling=True kullanır; damıtılmamış temel kontrol noktası ise ~100 deterministik Euler adımı için stochastic_sampling=False kullanır.

Stable Audio 3 için ses inpainting hattı.

Metin-ses mantığını [StableAudio3Pipeline] ile paylaşır (# Copied from ile senkronize tutulur). audio ve mask sağlandığında, referans ses dondurulmuş SAME kodlayıcı ile kodlanır ve masked_latent ∥ mask, transformer'ın local_add_cond yolu (to_local_embed) üzerinden her DiT bloğuna yerel-eklemeli koşullama olarak enjekte edilir.

Çağrı imzası uzantısı (bkz. __call__): audio (torch.Tensor, şekli (batch, channels, samples)): vae.config.sampling_rate Hz'de referans ses dalgası. mask (torch.Tensor, şekli (batch, 1, latent_length)): Latent uzayda çerçeve başına ikili maske. 1 = orijinal sesi koru; 0 = doldurulacak bölge.

__call__

< >

( prompt: typing.Union[str, typing.List[str], NoneType] = Noneduration: float = 10.0audio: typing.Optional[torch.Tensor] = Nonemask: typing.Optional[torch.Tensor] = Nonemask_start_seconds: typing.Union[float, typing.List[float], NoneType] = Nonemask_end_seconds: typing.Union[float, typing.List[float], NoneType] = Nonenum_inference_steps: typing.Optional[int] = Nonelogsnr_min: float = -6.2logsnr_max: float = 2.0silence_padding_duration: float = 0.0num_waveforms_per_prompt: int = 1generator: typing.Union[torch.Generator, typing.List[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneencoder_attention_mask: typing.Optional[torch.LongTensor] = Nonereturn_dict: bool = Truecallback_on_step_end: typing.Optional[typing.Callable[[int, int, dict], dict]] = Nonecallback_on_step_end_tensor_inputs: typing.List[str] = ['latents']output_type: str = 'pt' )

Parametreler

  • prompt (str veya list[str], isteğe bağlı) — Metin istemleri.
  • duration (float, varsayılan 10.0) — Saniye cinsinden çıktı süresi. Referans sesle eşleşmelidir.
  • audio (torch.Tensor, optional) — vae.config.sampling_rate Hz'de (batch, channels, samples) boyutlu referans dalga formu. Inpainting için gereklidir.
  • mask (torch.Tensor, optional) — 0 = inpaint bölgesi, 1 = koru olacak şekilde kare başına latent uzay maskesi (batch, 1, L). mask veya mask_start_seconds / mask_end_seconds parametrelerinden biri sağlanmalıdır.
  • mask_start_seconds (float veya list[float], isteğe bağlı) — İnpaint bölgesinin saniye cinsinden başlangıç zaman(lar)ı.
  • mask_end_seconds (float veya list[float], isteğe bağlı) — Inpaint bölgesinin bitiş zaman(lar)ı (mask_start_seconds ile eşleşmelidir).
  • num_inference_steps (int, isteğe bağlı) — Gürültü azaltma adım sayısı. None (varsayılan) olduğunda, adım sayısı zamanlayıcının stochastic_sampling yapılandırmasından seçilir ve [StableAudio3Pipeline] ile eşleşir.
  • logsnr_min (float, varsayılan -6.2) — Gürültü zamanlaması için minimum log-SNR değeri — zamanlamanın yüksek gürültülü başlangıcına eşlenir.
  • logsnr_max (float, varsayılan 2.0) — Gürültü zamanlaması için maksimum log-SNR değeri — zamanlamanın düşük gürültülü ucuna eşlenir.
  • silence_padding_duration (float, varsayılan 0.0) — Hedef içeriğin ardından eklenen sessizlik payı.
  • num_waveforms_per_prompt (int, varsayılan 1) — İstek başına dalga formu sayısı.
  • generator — Yeniden üretilebilirlik için RNG.
  • latents — Önceden oluşturulmuş başlangıç gürültüsü (None → taze örnek).
  • prompt_embeds — Ön hesaplanmış metin gömümleri.
  • encoder_attention_mask — Ön hesaplanmış gömceler için maske.
  • return_dict (bool, varsayılan True) — AudioPipelineOutput veya tuple döndürür.
  • callback_on_step_end (Callable, isteğe bağlı) — Her gürültü azaltma adımının sonunda (self, step_idx, timestep, callback_kwargs) ile çağrılır. Döngünün geri kalanında kullanılacak (isteğe bağlı olarak değiştirilmiş) tensörleri içeren bir sözlük döndürmelidir.
  • callback_on_step_end_tensor_inputs (list[str], varsayılan [“latents”]) — callback_on_step_end'e iletilen tensörler. self._callback_tensor_inputs'ün bir alt kümesi olmalıdır.
  • output_type (str, varsayılan "pt") — "pt" / "np" / "latent".

Bir metin istemi ve referans koşullu olarak inpainted ses üretin.

Örnekler:

>>> import torch
>>> import soundfile as sf
>>> import torchaudio
>>> from diffusers import StableAudio3InpaintPipeline

>>> pipe = StableAudio3InpaintPipeline.from_pretrained(
...     "stabilityai/stable-audio-3-medium", torch_dtype=torch.float16
... )
>>> pipe = pipe.to("cuda")

>>> audio, sr = torchaudio.load("reference.wav")
>>> audio = torchaudio.functional.resample(audio, sr, pipe.vae.config.sampling_rate).unsqueeze(0).to("cuda")

>>> generator = torch.Generator("cuda").manual_seed(0)
>>> audio = pipe(
...     "A gentle piano melody with soft strings in a concert hall",
...     duration=10.0,
...     audio=audio,
...     mask_start_seconds=4.0,
...     mask_end_seconds=6.0,
...     generator=generator,
... ).audios

>>> sf.write("output.wav", audio[0].T.cpu().float().numpy(), samplerate=pipe.vae.config.sampling_rate)

encode_duration

< >

( duration: floatdevice: devicenum_waveforms_per_prompt: intbatch_size: int )

Parametreler

  • duration — Saniye cinsinden süre, batch'teki her örneğe uygulanır.
  • device — Hedef cihaz.
  • num_waveforms_per_prompt — Karo çarpanı.
  • batch_size — İstek sayısı.

Süre değerini küresel koşullandırma vektörüne gömün.

encode_prompt

< >

( prompt: typing.Union[str, typing.List[str], NoneType]device: devicenum_waveforms_per_prompt: intprompt_embeds: typing.Optional[torch.Tensor] = Noneencoder_attention_mask: typing.Optional[torch.LongTensor] = None )

Parametreler

  • prompt — Metin istemi veya istemler listesi. prompt_embeds sağlandığında yok sayılır.
  • device — Hedef cihaz.
  • num_waveforms_per_prompt — Her prompt için üretilecek çıktı dalga formu sayısı; koşullama tensörleri buna göre çoğaltılır.
  • prompt_embeds — Ön hesaplanmış metin gömme değerleri (batch, seq_len, hidden_size).
  • encoder_attention_mask — önceden hesaplanmış gömceler için Boole maskesi (batch, seq_len); 1 = gerçek token, 0 = dolgu.

Metin istemlerini çapraz dikkat koşullama tensörlerine kodlayın.

prepare_cross_attention

< >

( prompt_embeds: Tensorencoder_attention_mask: Tensorglobal_hidden_states: Tensor )

Çapraz dikkat bağlamını, süre gömme değerini ek bir jeton olarak ekleyerek oluşturun.

SA3, seconds_total koşullandırıcısını hem küresel (AdaLN) girdiye hem de ikisine de olan çapraz dikkat bağlamına (cross_attention_cond_ids = ["prompt", "seconds_total"]) yönlendirir. Süre gömme (embedding) metin jetonlarının ardından birleştirilir ve dikkat maskesi bir geçerli girişle genişletilir.

StableAudio3AudioToAudioPipeline

Referans ses kliplerinin bir varyasyonunu üretir: tüm referans, init_noise_level seviyesine kadar gürültülenir ve oradan gürültüsü giderilir; bu, belirli kareleri tam olarak koruyan StableAudio3InpaintPipeline'ın kare bazlı yerel-eklemeli koşullandırmasından farklıdır.

sınıf diffusers.StableAudio3AudioToAudioPipeline

< >

( vae: AutoencoderSAMEtext_encoder: T5GemmaEncoderModeltokenizer: GemmaTokenizerduration_embedder: StableAudio3DurationEmbeddertransformer: StableAudio3DiTModelscheduler: FlowMatchEulerDiscreteScheduler )

Parametreler

  • vae ([AutoencoderSAME]) — Ses latentlerini kodlamak ve çözmek için kullanılan SAME otoenkoderi.
  • text_encoder ([~transformers.T5GemmaEncoderModel]) — Donmuş T5Gemma metin kodlayıcısı (google/t5gemma-b-b-ul2).
  • tokenizer ([~transformers.GemmaTokenizerFast]) — Tokenizer for the text encoder.
  • duration_embedder ([StableAudio3DurationEmbedder]) — duration değerini saniye cinsinden, her DiT bloğundaki AdaLN için küresel bir koşullandırma vektörüne eşler.
  • transformer ([StableAudio3DiTModel]) — Düzeltme akışı hız tahmini DiT.
  • scheduler ([FlowMatchEulerDiscreteScheduler]) — İteratif gürültü azaltma döngüsü için zamanlayıcı. Üretim (damıtılmış) SA3 Medium kontrol noktası tam olarak 8 ping-pong adımı için stochastic_sampling=True kullanır; damıtılmamış temel kontrol noktası ise ~100 deterministik Euler adımı için stochastic_sampling=False kullanır.

Stable Audio 3 için sesten sese varyasyon hattı.

Metin-ses mantığını [StableAudio3Pipeline] ile paylaşır (# Copied from üzerinden senkronize tutulur). Referans sesi dondurulmuş SAME kodlayıcıyla kodlar, init_noise_level'ye göre taze gürültüyle karıştırır ve oradan gürültü giderme işlemine başlar — [StableAudio3InpaintPipeline]'ın çerçeve başına yerel-eklemeli koşullandırmasının aksine, tüm sinyal küresel olarak gürültülenir/gürültüsü giderilir.

Çağrı imzası uzantısı (bkz. __call__): audio (torch.Tensor, şekli (batch, channels, samples)): vae.config.sampling_rate Hz'de referans ses dalgası. init_noise_level (float): Gürültü azaltma işleminden önce referansa karıştırılacak gürültü miktarı. 1.0 = tam gürültü (text-to-audio ile eşdeğer); daha düşük değerler referansın daha büyük bir kısmını korur.

__call__

< >

( prompt: typing.Union[str, typing.List[str], NoneType] = Noneduration: float = 10.0audio: typing.Optional[torch.Tensor] = Noneinit_noise_level: float = 1.0num_inference_steps: typing.Optional[int] = Nonelogsnr_min: float = -6.2logsnr_max: float = 2.0silence_padding_duration: float = 0.0num_waveforms_per_prompt: int = 1generator: typing.Union[torch.Generator, typing.List[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneencoder_attention_mask: typing.Optional[torch.LongTensor] = Nonereturn_dict: bool = Truecallback_on_step_end: typing.Optional[typing.Callable[[int, int, dict], dict]] = Nonecallback_on_step_end_tensor_inputs: typing.List[str] = ['latents']output_type: str = 'pt' )

Parametreler

  • prompt (str veya list[str], isteğe bağlı) — Metin istemleri.
  • duration (float, varsayılan 10.0) — Saniye cinsinden çıktı süresi. Referans sesle eşleşmelidir.
  • audio (torch.Tensor, optional) — vae.config.sampling_rate Hz'de (batch, channels, samples) referans dalga formu. Zorunludur.
  • init_noise_level (float, varsayılan 1.0) — Gürültü seviyesi ((0, 1] aralığında), gürültüden arındırma öncesinde referansa karıştırılır: x_start = (1 - init_noise_level) * reference_latents + init_noise_level * noise. 1.0 değeri referansı tamamen atlar ([StableAudio3Pipeline] ile eşdeğerdir); daha düşük değerler, tam adım sayısını çalıştırmaya devam ederken referansın yapısını giderek daha fazla korur.
  • num_inference_steps (int, isteğe bağlı) — Gürültü azaltma adım sayısı. None (varsayılan) olduğunda, adım sayısı zamanlayıcının stochastic_sampling yapılandırmasından seçilir ve [StableAudio3Pipeline] ile eşleşir.
  • logsnr_min (float, varsayılan -6.2) — Gürültü zamanlaması için minimum log-SNR değeri — zamanlamanın yüksek gürültülü başlangıcına eşlenir.
  • logsnr_max (float, varsayılan 2.0) — Gürültü zamanlaması için maksimum log-SNR değeri — zamanlamanın düşük gürültülü ucuna eşlenir.
  • silence_padding_duration (float, varsayılan 0.0) — Hedef içeriğin ardından eklenen sessizlik payı.
  • num_waveforms_per_prompt (int, varsayılan 1) — İstek başına dalga formu sayısı.
  • generator — Yeniden üretilebilirlik için RNG.
  • latents — Önceden oluşturulmuş başlangıç gürültüsü (None → taze örnek).
  • prompt_embeds — Ön hesaplanmış metin gömümleri.
  • encoder_attention_mask — Ön hesaplanmış gömceler için maske.
  • return_dict (bool, varsayılan True) — AudioPipelineOutput veya tuple döndürür.
  • callback_on_step_end (Callable, isteğe bağlı) — Her gürültü azaltma adımının sonunda (self, step_idx, timestep, callback_kwargs) ile çağrılır. Döngünün geri kalanında kullanılacak (isteğe bağlı olarak değiştirilmiş) tensörleri içeren bir sözlük döndürmelidir.
  • callback_on_step_end_tensor_inputs (list[str], varsayılan [“latents”]) — callback_on_step_end'e iletilen tensörler. self._callback_tensor_inputs'ün bir alt kümesi olmalıdır.
  • output_type (str, varsayılan "pt") — "pt" / "np" / "latent".

Bir metin komutu ve bir referans dalga formuna koşullu bir ses varyasyonu oluşturun.

Örnekler:

>>> import torch
>>> import soundfile as sf
>>> import torchaudio
>>> from diffusers import StableAudio3AudioToAudioPipeline

>>> pipe = StableAudio3AudioToAudioPipeline.from_pretrained(
...     "stabilityai/stable-audio-3-medium", torch_dtype=torch.float16
... )
>>> pipe = pipe.to("cuda")

>>> audio, sr = torchaudio.load("reference.wav")
>>> audio = torchaudio.functional.resample(audio, sr, pipe.vae.config.sampling_rate).unsqueeze(0).to("cuda")

>>> generator = torch.Generator("cuda").manual_seed(0)
>>> audio = pipe(
...     "A gentle piano melody with soft strings in a concert hall",
...     duration=10.0,
...     audio=audio,
...     init_noise_level=0.6,
...     generator=generator,
... ).audios

>>> sf.write("output.wav", audio[0].T.cpu().float().numpy(), samplerate=pipe.vae.config.sampling_rate)

encode_duration

< >

( duration: floatdevice: devicenum_waveforms_per_prompt: intbatch_size: int )

Parametreler

  • duration — Saniye cinsinden süre, batch'teki her örneğe uygulanır.
  • device — Hedef cihaz.
  • num_waveforms_per_prompt — Karo çarpanı.
  • batch_size — İstek sayısı.

Süre değerini küresel koşullandırma vektörüne gömün.

encode_prompt

< >

( prompt: typing.Union[str, typing.List[str], NoneType]device: devicenum_waveforms_per_prompt: intprompt_embeds: typing.Optional[torch.Tensor] = Noneencoder_attention_mask: typing.Optional[torch.LongTensor] = None )

Parametreler

  • prompt — Metin istemi veya istemler listesi. prompt_embeds sağlandığında yok sayılır.
  • device — Hedef cihaz.
  • num_waveforms_per_prompt — Her prompt için üretilecek çıktı dalga formu sayısı; koşullama tensörleri buna göre çoğaltılır.
  • prompt_embeds — Ön hesaplanmış metin gömme değerleri (batch, seq_len, hidden_size).
  • encoder_attention_mask — önceden hesaplanmış gömceler için Boole maskesi (batch, seq_len); 1 = gerçek token, 0 = dolgu.

Metin istemlerini çapraz dikkat koşullama tensörlerine kodlayın.

prepare_cross_attention

< >

( prompt_embeds: Tensorencoder_attention_mask: Tensorglobal_hidden_states: Tensor )

Çapraz dikkat bağlamını, süre gömme değerini ek bir jeton olarak ekleyerek oluşturun.

SA3, seconds_total koşullandırıcısını hem küresel (AdaLN) girdiye hem de ikisine de olan çapraz dikkat bağlamına (cross_attention_cond_ids = ["prompt", "seconds_total"]) yönlendirir. Süre gömme (embedding) metin jetonlarının ardından birleştirilir ve dikkat maskesi bir geçerli girişle genişletilir.

StableAudio3DurationEmbedder

sınıf diffusers.StableAudio3DurationEmbedder

< >

( output_dim: int = 768fourier_dim: int = 256min_val: float = 0.0max_val: float = 384.0min_freq: float = 0.5max_freq: float = 10000.0 )

Parametreler

  • output_dim (int, varsayılan 768) — Çıktı gömme boyutu. DiT'nin global_cond_dim değeriyle eşleşmelidir.
  • fourier_dim (int, varsayılan 256) — Dahili Fourier özellik boyutu (çift olmalıdır).
  • min_val (float, varsayılan 0.0) — Normalizasyon sınırlama işlemi için minimum süre değeri.
  • max_val (float, varsayılan 384.0) — Normalizasyon sınırlaması için maksimum süre değeri. Bu değerin üzerindeki değerler sınırlanır. 384 saniye, seconds_total koşullandırıcısı için üretim SA3 Medium üst sınırıdır.
  • min_freq (float, varsayılan 0.5) — Üstel Fourier tabanı için minimum frekans.
  • max_freq (float, varsayılan 10000.0) — Üstel Fourier tabanı için maksimum frekans.

Süre değerini (saniye cinsinden) Stable Audio 3 DiT için küresel koşullandırma vektörüne gömer (AdaLN girdisi olarak global_hidden_states kullanılır).

SA3 referans uygulamasındaki NumberConditioner(fourier_features_type="expo") bileşenini yeniden oluşturur.

forward

< >

( seconds: Tensor )

Parametreler

  • seconds (torch.Tensor, şekli (batch,)) — Saniye cinsinden süre değerleri.
Update on GitHub