Diffusers documentation
StableAudio3DiTModel
StableAudio3DiTModel
음성 생성에 사용되는, Stable Audio 3에서 활용되는 rectified-flow 속도 예측 Diffusion Transformer(DiT)입니다.
각 StableAudio3DiTBlock은 다음을 수행합니다:
- Self-attention — 회전 위치 임베딩(RoPE)을 사용한 차등 멀티헤드 어텐션.
- Cross-attention — T5Gemma 텍스트 인코더의 토큰 시퀀스에 주의를 기울입니다.
- Feed-forward — SwiGLU 투영.
모델은 timestep(지수 푸리에 특징 → 선형 투영)과 전역 조건 벡터(StableAudio3DurationEmbedder에서 생성된 길이 임베딩)에 조건화됩니다.
StableAudio3DiTModel
class diffusers.StableAudio3DiTModel
< source >( io_channels: int = 256patch_size: int = 1embed_dim: int = 1536depth: int = 24num_heads: int = 24cond_token_dim: int = 768global_cond_dim: int = 768local_add_cond_dim: int = 257timestep_features_dim: int = 256ff_mult: float = 4.0num_memory_tokens: int = 64use_differential_attention: bool = True )
매개변수
- io_channels (
int, 기본값 256) — 잠재 채널의 수. - patch_size (
int, 기본값 1) — Transformer에 적용하기 전에 사용되는 시간 패치 크기입니다. - embed_dim (
int, 기본값 1536) — Transformer 은닉 차원. - depth (
int, 기본값 24) —StableAudio3DiTBlock레이어의 개수. - num_heads (
int, 기본값 24) — 어텐션 헤드 수. - cond_token_dim (
int, 기본값 768) — cross-attention 컨텍스트 토큰의 차원입니다. - global_cond_dim (
int, 기본값 768) — 전역 길이 임베딩의 차원. - local_add_cond_dim (
int, 기본값 257) — 로컬 가산(inpaint) 텐서의 채널 수. - timestep_features_dim (
int, 기본값 256) — Fourier timestep features의 출력 차원입니다. - ff_mult (
float, 기본값 4.0) — SwiGLU 피드포워드 확장 계수. - num_memory_tokens (
int, 기본값 64) — 학습 가능한 메모리 토큰의 개수. - use_differential_attention (
bool, 기본값True) — 차등 자기/교차 주의를 활성화합니다.
Stable Audio 3의 Diffusion Transformer(DiT) 백본입니다.
모델은 노이즈 오디오 레이턴트 배치, 스칼라 타임스텝, 크로스 어텐션 컨텍스트(투영된 텍스트 및 길이 토큰), 전역 길이 임베딩을 입력으로 받아 속도 필드(rectified-flow 목적함수)를 예측합니다.
조건부 생성:
- Cross-attention 컨텍스트(
encoder_hidden_states)는to_cond_embed에 의해 투사됩니다. - 전역 지속 시간 임베딩(
global_hidden_states)은to_global_embed에 의해 투영된 후, 타임스텝 임베딩과 합산되고,global_cond_embedder에 의해 블록별 AdaLN 변조로 확장됩니다. local_add_cond(inpainting)은to_local_embed에 의해 블록별로 투사됩니다.
num_memory_tokens개의 학습 가능한 토큰은 transformer 내부에서 오디오 시퀀스 앞에 추가되고 출력 투영 전에 제거됩니다.
forward
< source >( hidden_states: Tensortimestep: Tensorencoder_hidden_states: Tensorglobal_hidden_states: Tensorencoder_attention_mask: typing.Optional[torch.Tensor] = Nonelocal_add_cond: typing.Optional[torch.Tensor] = Nonereturn_dict: bool = True ) → StableAudio3DiTModelOutput or tuple
매개변수
- hidden_states (
torch.Tensor) — 노이즈가 포함된 잠재 오디오(batch, io_channels, T). - timestep (
torch.Tensor) —[0, 1]범위의(batch,)형식 Diffusion timestep - encoder_hidden_states (
torch.Tensor) — Cross-attention 컨텍스트(batch, T_ctx, cond_token_dim). - global_hidden_states (
torch.Tensor) — 전역 지속 시간 임베딩(batch, global_cond_dim). - encoder_attention_mask (
torch.Tensor, 선택 사항) — Bool 마스크(batch, T_ctx),True= 유효. - local_add_cond (
torch.Tensor, 선택 사항) — 로컬 가산(인페인팅) 조건(batch, local_add_cond_dim, T). - return_dict (
bool, 기본값True) —StableAudio3DiTModelOutput를 반환할지 여부.
반환값
StableAudio3DiTModelOutput 또는 tuple
hidden_states와 동일한 형태의 예측 속도 필드
StableAudio3DiTBlock
class diffusers.models.transformers.transformer_stable_audio3.StableAudio3DiTBlock
< source >( dim: intcontext_dim: intdim_heads: int = 64use_differential: bool = Trueff_mult: float = 4.0local_add_cond_dim: int = 257 )
단일 SA3 DiT transformer 블록.
작업 순서:
- AdaLN 변조 자기 주의(부분 RoPE, RMS QK-norm)
- 텍스트/길이 컨텍스트에 대한 크로스 어텐션(일반 RMS pre-norm)
- AdaLN 변조 SwiGLU 피드포워드
AdaLN 변조는 to_scale_shift_gate + global_modulation이며, (scale_attn, shift_attn, gate_attn, scale_ff, shift_ff, gate_ff)로 여섯 개의 청크로 나뉩니다. 각 게이트된 분기는 sigmoid(1 - gate)로 스케일링됩니다. 크로스 어텐션은 AdaLN 변조가 적용되지 않으며, 이는 레퍼런스와 일치합니다(cross_attend_norm는 단순한 RMS norm입니다).
local_seq가 제공된 경우(인페인팅), to_local_embed에 의해 블록별로 투영된 후 크로스 어텐션 이후(피드포워드 이전) 잔차 스트림의 오디오 위치에 추가되며, 이는 레퍼런스와 일치합니다.
StableAudio3DiTModelOutput
class diffusers.models.transformers.transformer_stable_audio3.StableAudio3DiTModelOutput
< source >( sample: Tensor )
StableAudio3DiTModel의 출력입니다.