Diffusers 文件
AudioLDM
並獲得增強的文件體驗
開始使用
AudioLDM
AudioLDM 是由 Haohe Liu 等人在 AudioLDM: Text-to-Audio Generation with Latent Diffusion Models 中提出的。受 Stable Diffusion 的啟發,AudioLDM 是一個文字到音訊的*潛在擴散模型 (LDM)*,它從 CLAP 潛在表示中學習連續的音訊表示。AudioLDM 接收文字提示作為輸入,並預測相應的音訊。它可以生成文字條件音效、人聲和音樂。
論文摘要如下:
文字到音訊 (TTA) 系統最近因其能夠根據文字描述合成通用音訊而受到關注。然而,先前在 TTA 方面的研究在生成質量和高計算成本方面存在限制。在這項研究中,我們提出了 AudioLDM,一個建立在潛在空間上的 TTA 系統,用於從對比語言-音訊預訓練 (CLAP) 潛在表示中學習連續的音訊表示。預訓練的 CLAP 模型使我們能夠使用音訊嵌入訓練 LDM,同時在取樣期間提供文字嵌入作為條件。透過學習音訊訊號及其組合的潛在表示,而無需建模跨模態關係,AudioLDM 在生成質量和計算效率方面都具有優勢。在 AudioCaps 上使用單個 GPU 進行訓練,AudioLDM 在客觀和主觀指標(例如,Fréchet 距離)方面均實現了最先進的 TTA 效能。此外,AudioLDM 是第一個能夠以零樣本方式進行各種文字引導音訊操作(例如,風格遷移)的 TTA 系統。我們的實現和演示可在 https://audioldm.github.io/ 找到。
原始程式碼庫可在 haoheliu/AudioLDM 找到。
提示
在構建提示時,請記住:
- 描述性提示輸入效果最佳;您可以使用形容詞來描述聲音(例如,“高品質”或“清晰”),並使提示上下文具體(例如,“森林中的水流”而不是“水流”)。
- 最好使用“貓”或“狗”等通用術語,而不是模型可能不熟悉的特定名稱或抽象物件。
在推理過程中
- 預測音訊樣本的*質量*可以透過 `num_inference_steps` 引數控制;步數越多,音訊質量越高,但推理速度越慢。
- 預測音訊樣本的*長度*可以透過更改 `audio_length_in_s` 引數來控制。
AudioLDMPipeline
類 diffusers.AudioLDMPipeline
< 源 >( vae: AutoencoderKL text_encoder: ClapTextModelWithProjection tokenizer: typing.Union[transformers.models.roberta.tokenization_roberta.RobertaTokenizer, transformers.models.roberta.tokenization_roberta_fast.RobertaTokenizerFast] unet: UNet2DConditionModel scheduler: KarrasDiffusionSchedulers vocoder: SpeechT5HifiGan )
引數
- vae (AutoencoderKL) — 變分自編碼器 (VAE) 模型,用於將影像編碼和解碼為潛在表示。
- text_encoder (ClapTextModelWithProjection) — 凍結文字編碼器(`ClapTextModelWithProjection`,特別是 laion/clap-htsat-unfused 變體)。
- tokenizer (
PreTrainedTokenizer
) — 用於文字分詞的 RobertaTokenizer。 - unet (UNet2DConditionModel) — 用於對編碼音訊潛在表示進行去噪的 `UNet2DConditionModel`。
- scheduler (SchedulerMixin) — 用於與 `unet` 結合使用的排程器,以對編碼音訊潛在表示進行去噪。可以是 DDIMScheduler、LMSDiscreteScheduler 或 PNDMScheduler 之一。
- vocoder (SpeechT5HifiGan) — `SpeechT5HifiGan` 類的聲碼器。
用於使用 AudioLDM 進行文字到音訊生成的管道。
此模型繼承自 DiffusionPipeline。有關所有管道實現的通用方法(下載、儲存、在特定裝置上執行等),請檢視超類文件。
__call__
< 源 >( prompt: typing.Union[str, typing.List[str]] = None audio_length_in_s: typing.Optional[float] = None num_inference_steps: int = 10 guidance_scale: float = 2.5 negative_prompt: typing.Union[str, typing.List[str], NoneType] = None num_waveforms_per_prompt: typing.Optional[int] = 1 eta: float = 0.0 generator: typing.Union[torch._C.Generator, typing.List[torch._C.Generator], NoneType] = None latents: typing.Optional[torch.Tensor] = None prompt_embeds: typing.Optional[torch.Tensor] = None negative_prompt_embeds: typing.Optional[torch.Tensor] = None return_dict: bool = True callback: typing.Optional[typing.Callable[[int, int, torch.Tensor], NoneType]] = None callback_steps: typing.Optional[int] = 1 cross_attention_kwargs: typing.Optional[typing.Dict[str, typing.Any]] = None output_type: typing.Optional[str] = 'np' ) → AudioPipelineOutput 或 tuple
引數
- prompt (
str
或List[str]
, 可選) — 用於引導音訊生成的提示詞。如果未定義,您需要傳遞 `prompt_embeds`。 - audio_length_in_s (
int
, 可選, 預設為 5.12) — 生成音訊樣本的長度(秒)。 - num_inference_steps (
int
, 可選, 預設為 10) — 去噪步數。更多的去噪步數通常會帶來更高質量的音訊,但推理速度會變慢。 - guidance_scale (
float
, 可選, 預設為 2.5) — 較高的引導尺度值鼓勵模型生成與文字 `prompt` 緊密相關的音訊,但會犧牲較低的音質。當 `guidance_scale > 1` 時啟用引導尺度。 - negative_prompt (
str
或List[str]
, 可選) — 用於引導音訊生成中不包含內容的提示詞。如果未定義,您需要傳遞 `negative_prompt_embeds`。當不使用引導時(`guidance_scale < 1`)則忽略。 - num_waveforms_per_prompt (
int
, 可選, 預設為 1) — 每個提示生成波形的數量。 - eta (
float
, 可選, 預設為 0.0) — 對應於 DDIM 論文中的引數 eta (η)。僅適用於 DDIMScheduler,在其他排程器中忽略。 - generator (
torch.Generator
或List[torch.Generator]
, 可選) — 用於使生成具有確定性的torch.Generator
。 - latents (
torch.Tensor
, 可選) — 預生成的從高斯分佈取樣的噪聲潛在表示,用作影像生成的輸入。可用於使用不同提示調整相同生成。如果未提供,則使用提供的隨機 `generator` 進行取樣生成潛在張量。 - prompt_embeds (
torch.Tensor
, 可選) — 預生成的文字嵌入。可用於輕鬆調整文字輸入(提示權重)。如果未提供,則從 `prompt` 輸入引數生成文字嵌入。 - negative_prompt_embeds (
torch.Tensor
, 可選) — 預生成的負面文字嵌入。可用於輕鬆調整文字輸入(提示權重)。如果未提供,則從 `negative_prompt` 輸入引數生成 `negative_prompt_embeds`。 - return_dict (
bool
, 可選, 預設為True
) — 是否返回 AudioPipelineOutput 而不是普通元組。 - callback (
Callable
, 可選) — 在推理期間每 `callback_steps` 步呼叫的函式。該函式以以下引數呼叫:`callback(step: int, timestep: int, latents: torch.Tensor)`。 - callback_steps (
int
, 可選, 預設為 1) — 呼叫 `callback` 函式的頻率。如果未指定,則在每一步都呼叫回撥。 - cross_attention_kwargs (
dict
, 可選) — 一個 kwargs 字典,如果指定,則傳遞給self.processor
中定義的 `AttentionProcessor`。 - output_type (
str
, 可選, 預設為"np"
) — 生成影像的輸出格式。選擇"np"
返回 NumPy `np.ndarray` 或"pt"
返回 PyTorch `torch.Tensor` 物件。
返回
AudioPipelineOutput 或 tuple
如果 `return_dict` 為 `True`,則返回 AudioPipelineOutput,否則返回一個 `tuple`,其中第一個元素是生成的音訊列表。
用於生成的管道的呼叫函式。
示例
>>> from diffusers import AudioLDMPipeline
>>> import torch
>>> import scipy
>>> repo_id = "cvssp/audioldm-s-full-v2"
>>> pipe = AudioLDMPipeline.from_pretrained(repo_id, torch_dtype=torch.float16)
>>> pipe = pipe.to("cuda")
>>> prompt = "Techno music with a strong, upbeat tempo and high melodic riffs"
>>> audio = pipe(prompt, num_inference_steps=10, audio_length_in_s=5.0).audios[0]
>>> # save the audio sample as a .wav file
>>> scipy.io.wavfile.write("techno.wav", rate=16000, data=audio)
AudioPipelineOutput
類 diffusers.AudioPipelineOutput
< 源 >( audios: ndarray )
音訊流水線的輸出類。