Diffusers 文件

AudioLDM

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

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 )

引數

用於使用 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' ) AudioPipelineOutputtuple

引數

  • prompt (strList[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 (strList[str], 可選) — 用於引導音訊生成中不包含內容的提示詞。如果未定義,您需要傳遞 `negative_prompt_embeds`。當不使用引導時(`guidance_scale < 1`)則忽略。
  • num_waveforms_per_prompt (int, 可選, 預設為 1) — 每個提示生成波形的數量。
  • eta (float, 可選, 預設為 0.0) — 對應於 DDIM 論文中的引數 eta (η)。僅適用於 DDIMScheduler,在其他排程器中忽略。
  • generator (torch.GeneratorList[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` 物件。

返回

AudioPipelineOutputtuple

如果 `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 )

引數

  • audios (np.ndarray) — 降噪後的音訊樣本列表,一個形狀為 `(batch_size, num_channels, sample_rate)` 的 NumPy 陣列。

音訊流水線的輸出類。

< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.