Buckets:
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_objective |
stochastic_sampling |
num_inference_steps |
|---|---|---|---|
stable-audio-3-medium-base |
rectified_flow |
False (deterministik Euler) |
100 (damıtılmamış) |
stable-audio-3-medium (damıtılmış) |
rf_denoiser |
True (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-basebir gated depodur. Dönüştürmeden önce, erişimi olan bir hesaplahf auth loginkomutunu ç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-mediumvestable-audio-3-medium-basehenüz diffusers formatında yayımlanmadığı için (repo id ile yükleme 404 döndürüyor) yerel bir yol kullanır. Yayımlandıktan sonra, repo id yerel yolun yerine geçer.
İpuçları
- CPU veya MPS (Apple Silicon) üzerinde
torch.float32kullanın — MPS üzerindetorch.float16gürültü üretir. - Distilled model (
stable-audio-3-medium) adversarially distilled — guidance, ağırlıklara gömülüdür. Bu checkpoint içinguidance_scale=1.0(varsayılan) değerini bırakın venegative_promptgeçirmeyin; her ikisi de yalnızca distilled olmayanstable-audio-3-medium-basecheckpoint için işe yarar. silence_padding_duration(varsayılan0.0), latent dizinin sonuna sessiz bir pay bırakır. Model bu dolguyu maskelemek üzere eğitilmediyse0.0olarak 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 > 1değerini ayarlayın.
StableAudio3Pipeline[[diffusers.StableAudio3Pipeline]]
diffusers.StableAudio3Pipeline[[diffusers.StableAudio3Pipeline]]
diffusers.StableAudio3Pipeline(vae: AutoencoderSAME, text_encoder: T5GemmaEncoderModel, tokenizer: GemmaTokenizer, duration_embedder: StableAudio3DurationEmbedder, transformer: StableAudio3DiTModel, scheduler: 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]) : Metin kodlayıcı için tokenizer.
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 sınıflandırıcı-özgür yönlendirme (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[[diffusers.StableAudio3Pipeline.call]]
__call__(prompt: typing.Union[str, typing.List[str], NoneType] = None, duration: float = 10.0, num_inference_steps: typing.Optional[int] = None, logsnr_min: float = -6.2, logsnr_max: float = 2.0, silence_padding_duration: float = 0.0, guidance_scale: float = 1.0, negative_prompt: typing.Union[str, typing.List[str], NoneType] = None, num_waveforms_per_prompt: int = 1, generator: typing.Union[torch.Generator, typing.List[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, encoder_attention_mask: typing.Optional[torch.LongTensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_encoder_attention_mask: typing.Optional[torch.LongTensor] = None, return_dict: bool = True, callback_on_step_end: typing.Optional[typing.Callable[[int, int, dict], dict]] = None, callback_on_step_end_tensor_inputs: typing.List[str] = ['latents'], output_type: str = 'pt')
Parametreler:
prompt (str veya list[str], isteğe bağlı) : Metin istemcisi(leri). Tokenizasyonu ve kodlamayı atlamak için bunun yerine prompt_embeds geçirin.
duration (float, varsayılan 10.0) : Saniye cinsinden istenen çıktı süresi.
num_inference_steps (int, optional) : 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 (distilled ping-pong tarzı checkpoint) 8, False ise (distilled olmayan temel checkpoint) 100. 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 saniyelik latent bağlam, modele sınırda bir pay bırakır; çıktı duration değerine geri kırpılır. Varsayılan değer 0.0'dır (devre dışı). Bu dolguyu maskeleyecek şekilde eğitilmiş/distille edilmiş bir model kullanılmadığı sürece artırmayın — aksi halde ek kareler çıktı enerjisini tüketir.
guidance_scale (float, varsayılan 1.0) : Classifier-free guidance ölçeği. 1.0 guidance'ı 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 prompt'a daha sadık kalır.
negative_prompt (str veya list[str], isteğe bağlı) : guidance_scale > 1.0 olduğunda uzaklaşılmak istenen şeyleri 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 üretilecek dalga formu sayısı.
generator (torch.Generator veya list[torch.Generator], opsiyonel) : Ping-pong döngüsünde deterministik üretim ve yeniden gürültüleme için.
latents (torch.Tensor, opsiyonel) : Ön oluşturulmuş başlangıç latentleri. None ise yeni bir Gauss tensörü örneklenir.
prompt_embeds (torch.Tensor, opsiyonel) : Ön hesaplanmış metin gömlemeleri (batch, seq_len, 768).
encoder_attention_mask (torch.LongTensor, isteğe bağlı) : Ön hesaplanmış gömme (embedding) için Boolean maskesi.
negative_prompt_embeds (torch.Tensor, opsiyonel) : negative_prompt yerine kullanılacak, önceden hesaplanmış negatif metin gömme değerleri.
negative_encoder_attention_mask (torch.LongTensor, isteğe bağlı) : Ön hesaplanmış negatif gömme vektörleri için Boole maskesi.
return_dict (bool, varsayılan True) : AudioPipelineOutput veya düz bir tuple döndürür.
callback_on_step_end (Callable, isteğe bağlı) : (self, step_idx, timestep, callback_kwargs) ile her gürültü azaltma adımının sonunda ç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 sözlük döndürmelidir.
callback_on_step_end_tensor_inputs (list[str], varsayılan ["latents"]) : callback_on_step_end'e geçirilen tensörler. self._callback_tensor_inputs'ün bir alt kümesi olmalıdır.
output_type (str, varsayılan "pt") : PyTorch tensörü için "pt", NumPy dizisi için "np" veya çözmeyi atlayıp ham latentleri döndürmek için "latent".
Dönüş: [~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[[diffusers.StableAudio3Pipeline.encode_duration]]
encode_duration(duration: float, device: device, num_waveforms_per_prompt: int, batch_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ı.
Dönüş:
(batch * num_waveforms_per_prompt, output_dim) tensörü.
Süre değerini küresel koşullandırma vektörüne gömün.
encode_prompt[[diffusers.StableAudio3Pipeline.encode_prompt]]
encode_prompt(prompt: typing.Union[str, typing.List[str], NoneType], device: device, num_waveforms_per_prompt: int, prompt_embeds: typing.Optional[torch.Tensor] = None, encoder_attention_mask: typing.Optional[torch.LongTensor] = None)
Parametreler:
prompt : Metin komutu veya komut listesi. prompt_embeds sağlandığında yok sayılır.
device : Hedef cihaz.
num_waveforms_per_prompt : Her istem başına ü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 : Ön hesaplanmış gömceler için Boole maskesi (batch, seq_len); 1 = gerçek token, 0 = dolgu.
Dönüş:
(prompt_embeds, encoder_attention_mask) ikisi de batch * num_waveforms_per_prompt boyutuna döşendi.
Metin istemlerini çapraz dikkat koşullama tensörlerine kodlayın.
prepare_cross_attention[[diffusers.StableAudio3Pipeline.prepare_cross_attention]]
prepare_cross_attention(prompt_embeds: Tensor, encoder_attention_mask: Tensor, global_hidden_states: Tensor)
Dönüş:
(context, context_mask) biçimleri (batch, T_text + 1, dim) ve (batch, T_text + 1).
Ç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 her ikisine ç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[[diffusers.StableAudio3InpaintPipeline]]
diffusers.StableAudio3InpaintPipeline[[diffusers.StableAudio3InpaintPipeline]]
diffusers.StableAudio3InpaintPipeline(vae: AutoencoderSAME, text_encoder: T5GemmaEncoderModel, tokenizer: GemmaTokenizer, duration_embedder: StableAudio3DurationEmbedder, transformer: StableAudio3DiTModel, scheduler: 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]) : Metin kodlayıcı için tokenizer.
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 ((batch, channels, samples) biçiminde torch.Tensor): vae.config.sampling_rate Hz'de referans ses dalgası. mask ((batch, 1, latent_length) biçiminde torch.Tensor): Gizli uzayda çerçeve başına ikili maske. 1 = orijinal sesi koru; 0 = doldurulacak bölge.
call[[diffusers.StableAudio3InpaintPipeline.call]]
__call__(prompt: typing.Union[str, typing.List[str], NoneType] = None, duration: float = 10.0, audio: typing.Optional[torch.Tensor] = None, mask: typing.Optional[torch.Tensor] = None, mask_start_seconds: typing.Union[float, typing.List[float], NoneType] = None, mask_end_seconds: typing.Union[float, typing.List[float], NoneType] = None, num_inference_steps: typing.Optional[int] = None, logsnr_min: float = -6.2, logsnr_max: float = 2.0, silence_padding_duration: float = 0.0, num_waveforms_per_prompt: int = 1, generator: typing.Union[torch.Generator, typing.List[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, encoder_attention_mask: typing.Optional[torch.LongTensor] = None, return_dict: bool = True, callback_on_step_end: typing.Optional[typing.Callable[[int, int, dict], dict]] = None, callback_on_step_end_tensor_inputs: typing.List[str] = ['latents'], output_type: str = 'pt')
Parametreler:
prompt (str veya list[str], isteğe bağlı) : Metin istemcileri.
duration (float, varsayılan 10.0) : Saniye cinsinden çıktı süresi. Referans sesle eşleşmelidir.
audio (torch.Tensor, opsiyonel) : vae.config.sampling_rate Hz'de (batch, channels, samples) boyutlu referans dalga formu. Inpainting için gereklidir.
mask (torch.Tensor, opsiyonel) : 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 sağlanmalıdır.
mask_start_seconds (float veya list[float], isteğe bağlı) : Inpaint 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, optional) : 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 gizli alan payı.
num_waveforms_per_prompt (int, varsayılan 1) : İstek başına dalga formu sayısı.
generator : Yeniden üretilebilirlik için RNG.
latents : Ön oluşturulmuş başlangıç gürültüsü (None → taze örnek).
prompt_embeds : Ön hesaplanmış metin gömme değerleri.
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 geçirilen tensörler. self._callback_tensor_inputs'ün bir alt kümesi olmalıdır.
output_type (str, varsayılan "pt") : "pt" / "np" / "latent".
Dönüş:
[~pipelines.AudioPipelineOutput] ve .audios.
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[[diffusers.StableAudio3InpaintPipeline.encode_duration]]
encode_duration(duration: float, device: device, num_waveforms_per_prompt: int, batch_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ı.
Dönüş:
(batch * num_waveforms_per_prompt, output_dim) tensörü.
Süre değerini küresel koşullandırma vektörüne gömün.
encode_prompt[[diffusers.StableAudio3InpaintPipeline.encode_prompt]]
encode_prompt(prompt: typing.Union[str, typing.List[str], NoneType], device: device, num_waveforms_per_prompt: int, prompt_embeds: typing.Optional[torch.Tensor] = None, encoder_attention_mask: typing.Optional[torch.LongTensor] = None)
Parametreler:
prompt : Metin komutu veya komut listesi. prompt_embeds sağlandığında yok sayılır.
device : Hedef cihaz.
num_waveforms_per_prompt : Her istem başına ü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 : Ön hesaplanmış gömceler için Boole maskesi (batch, seq_len); 1 = gerçek token, 0 = dolgu.
Dönüş:
(prompt_embeds, encoder_attention_mask) ikisi de batch * num_waveforms_per_prompt boyutuna döşendi.
Metin istemlerini çapraz dikkat koşullama tensörlerine kodlayın.
prepare_cross_attention[[diffusers.StableAudio3InpaintPipeline.prepare_cross_attention]]
prepare_cross_attention(prompt_embeds: Tensor, encoder_attention_mask: Tensor, global_hidden_states: Tensor)
Dönüş:
(context, context_mask) biçimleri (batch, T_text + 1, dim) ve (batch, T_text + 1).
Ç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 her ikisine ç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[[diffusers.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.
diffusers.StableAudio3AudioToAudioPipeline[[diffusers.StableAudio3AudioToAudioPipeline]]
diffusers.StableAudio3AudioToAudioPipeline(vae: AutoencoderSAME, text_encoder: T5GemmaEncoderModel, tokenizer: GemmaTokenizer, duration_embedder: StableAudio3DurationEmbedder, transformer: StableAudio3DiTModel, scheduler: 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]) : Metin kodlayıcı için tokenizer.
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 donmuş 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]'in ç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 ((batch, channels, samples) biçiminde torch.Tensor): 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ü (metinden sese eşdeğer); daha düşük değerler referansın daha büyük bir kısmını korur.
call[[diffusers.StableAudio3AudioToAudioPipeline.call]]
__call__(prompt: typing.Union[str, typing.List[str], NoneType] = None, duration: float = 10.0, audio: typing.Optional[torch.Tensor] = None, init_noise_level: float = 1.0, num_inference_steps: typing.Optional[int] = None, logsnr_min: float = -6.2, logsnr_max: float = 2.0, silence_padding_duration: float = 0.0, num_waveforms_per_prompt: int = 1, generator: typing.Union[torch.Generator, typing.List[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, encoder_attention_mask: typing.Optional[torch.LongTensor] = None, return_dict: bool = True, callback_on_step_end: typing.Optional[typing.Callable[[int, int, dict], dict]] = None, callback_on_step_end_tensor_inputs: typing.List[str] = ['latents'], output_type: str = 'pt')
Parametreler:
prompt (str veya list[str], isteğe bağlı) : Metin istemcileri.
duration (float, varsayılan 10.0) : Saniye cinsinden çıktı süresi. Referans sesle eşleşmelidir.
audio (torch.Tensor, isteğe bağlı) : vae.config.sampling_rate Hz'de (batch, channels, samples) boyutlu 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 atar ([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, optional) : 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 gizli alan payı.
num_waveforms_per_prompt (int, varsayılan 1) : İstek başına dalga formu sayısı.
generator : Yeniden üretilebilirlik için RNG.
latents : Ön oluşturulmuş başlangıç gürültüsü (None → taze örnek).
prompt_embeds : Ön hesaplanmış metin gömme değerleri.
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 geçirilen tensörler. self._callback_tensor_inputs'ün bir alt kümesi olmalıdır.
output_type (str, varsayılan "pt") : "pt" / "np" / "latent".
Dönüş:
[~pipelines.AudioPipelineOutput] ve .audios.
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[[diffusers.StableAudio3AudioToAudioPipeline.encode_duration]]
encode_duration(duration: float, device: device, num_waveforms_per_prompt: int, batch_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ı.
Dönüş:
(batch * num_waveforms_per_prompt, output_dim) tensörü.
Süre değerini küresel koşullandırma vektörüne gömün.
encode_prompt[[diffusers.StableAudio3AudioToAudioPipeline.encode_prompt]]
encode_prompt(prompt: typing.Union[str, typing.List[str], NoneType], device: device, num_waveforms_per_prompt: int, prompt_embeds: typing.Optional[torch.Tensor] = None, encoder_attention_mask: typing.Optional[torch.LongTensor] = None)
Parametreler:
prompt : Metin komutu veya komut listesi. prompt_embeds sağlandığında yok sayılır.
device : Hedef cihaz.
num_waveforms_per_prompt : Her istem başına ü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 : Ön hesaplanmış gömceler için Boole maskesi (batch, seq_len); 1 = gerçek token, 0 = dolgu.
Dönüş:
(prompt_embeds, encoder_attention_mask) ikisi de batch * num_waveforms_per_prompt boyutuna döşendi.
Metin istemlerini çapraz dikkat koşullama tensörlerine kodlayın.
prepare_cross_attention[[diffusers.StableAudio3AudioToAudioPipeline.prepare_cross_attention]]
prepare_cross_attention(prompt_embeds: Tensor, encoder_attention_mask: Tensor, global_hidden_states: Tensor)
Dönüş:
(context, context_mask) biçimleri (batch, T_text + 1, dim) ve (batch, T_text + 1).
Ç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 her ikisine ç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[[diffusers.StableAudio3DurationEmbedder]]
diffusers.StableAudio3DurationEmbedder[[diffusers.StableAudio3DurationEmbedder]]
diffusers.StableAudio3DurationEmbedder(output_dim: int = 768, fourier_dim: int = 256, min_val: float = 0.0, max_val: float = 384.0, min_freq: float = 0.5, max_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ırlama işlemi 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 ortamındaki 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[[diffusers.StableAudio3DurationEmbedder.forward]]
forward(seconds: Tensor)
Parametreler:
seconds (torch.Tensor, şekli (batch,)) : Saniye cinsinden süre değerleri.
Dönüş:
torch.Tensor, şekli (batch, output_dim) — süre gömme değerleri.
Xet Storage Details
- Size:
- 37.1 kB
- Xet hash:
- ade07b82305f3bff738fbbfaa2ce5787259cc2e93275dfc68b03cca32adc203b
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.