Diffusers documentation

LongCat-AudioDiT

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

LongCat-AudioDiT

LongCat-AudioDiT は、Meituan LongCat によるテキストからオーディオを生成する拡散モデルです。diffusers への統合により、テキスト条件付きのオーディオ生成に対して標準的な DiffusionPipeline インターフェースが提供されます。

このパイプラインは、LongCat-AudioDiTの参照実装 https://github.com/meituan-longcat/LongCat-AudioDiT に基づいて適応されました。

このパイプラインは、diffusers 形式(text_encoder/、transformer/、vae/、tokenizer/、scheduler/ サブフォルダを含む)のローカルディレクトリまたは Hugging Face Hub リポジトリからの読み込みをサポートしています。

使用方法

import soundfile as sf
import torch
from diffusers import LongCatAudioDiTPipeline

pipeline = LongCatAudioDiTPipeline.from_pretrained(
    "ruixiangma/LongCat-AudioDiT-1B-Diffusers",
    dtype=torch.float16,
)
pipeline = pipeline.to("cuda")  # or "mps", "xpu", "cpu"

prompt = "A calm ocean wave ambience with soft wind in the background."
audio = pipeline(
    prompt,
    audio_duration_s=5.0,
    num_inference_steps=16,
    guidance_scale=4.0,
    generator=torch.Generator("cuda").manual_seed(42),
).audios[0, 0]

sf.write("longcat.wav", audio, pipeline.sample_rate)

ヒント

  • audio_duration_s は、出力の長さを制御する最も直接的な方法です。
  • 生成を再現可能にするには、generator=torch.Generator("cuda").manual_seed(42) を使用してください。
  • 出力の形状は(batch, channels, samples)です。単一のオーディオサンプルを取得するには.audios[0, 0]を使用します。
  • pipeline はモノラル音声(1チャンネル)を出力します。ステレオが必要な場合は、チャンネルを複製できます: audio.unsqueeze(0).repeat(1, 2, 1)。

LongCatAudioDiTPipeline

class diffusers.LongCatAudioDiTPipeline

< >

( vae: LongCatAudioDiTVaetext_encoder: UMT5EncoderModeltokenizer: PreTrainedTokenizerBasetransformer: LongCatAudioDiTTransformerscheduler: diffusers.schedulers.scheduling_flow_match_euler_discrete.FlowMatchEulerDiscreteScheduler | None = None )

__call__

< >

( prompt: str | list[str]negative_prompt: str | list[str] | None = Noneaudio_duration_s: float | None = Nonelatents: typing.Optional[torch.Tensor] = Nonenum_inference_steps: int = 16guidance_scale: float = 4.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Noneoutput_type: str = 'np'return_dict: bool = Truecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list[str] = ['latents'] ) → AudioPipelineOutput or tuple

パラメータ

  • prompt (str または list[str]) — 音声生成を導くプロンプト、またはプロンプトのリスト。
  • negative_prompt (str または list[str]、省略可) — classifier-free guidance 用のネガティブプロンプト。
  • audio_duration_s (float, 任意) — 秒単位のターゲット音声の長さ。latents が指定されている場合は無視されます。
  • latents (torch.Tensor, 任意) — (batch_size, duration, latent_dim) の形状を持つ、事前生成されたノイズ付き潜変数。
  • num_inference_steps (int、デフォルト値は 16)— デノイジングのステップ数です。
  • guidance_scale (float、デフォルト値は 4.0) — classifier-free guidance のガイダンススケール。
  • generator (torch.Generator または list[torch.Generator]、省略可) — 乱数ジェネレーター。
  • output_type (str、デフォルトは "np") — 出力形式: "np"、"pt"、または "latent"。
  • return_dict (bool、デフォルトはTrue) — AudioPipelineOutputを返すかどうかを指定します。
  • callback_on_step_end (Callable, 省略可) — callback_on_step_end_tensor_inputs で指定されたテンソル入力、パイプライン、ステップインデックス、タイムステップを引数として、各デノイジングステップの終了時に呼び出される関数です。
  • callback_on_step_end_tensor_inputs (list、デフォルトは ["latents"]) — callback_on_step_end に渡されるテンソル入力です。

戻り値

AudioPipelineOutput または tuple

return_dict が True の場合は AudioPipelineOutput、それ以外の場合は tuple を返します。タプルを返す場合、最初の要素は生成された音声波形です。

生成用のパイプラインを呼び出したときに実行される関数。

例:

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

>>> pipe = LongCatAudioDiTPipeline.from_pretrained("ruixiangma/LongCat-AudioDiT-1B-Diffusers")
>>> pipe.to("cuda")

>>> prompt = "A calm ocean wave ambience with soft wind in the background."
>>> audio = pipe(
...     prompt,
...     audio_duration_s=5.0,
...     num_inference_steps=20,
...     guidance_scale=4.0,
...     generator=torch.Generator("cuda").manual_seed(42),
... ).audios[0, 0]
>>> sf.write("output.wav", audio, pipe.sample_rate)

from_pretrained

< >

( pretrained_model_name_or_path: str | os.PathLike**kwargs )

パラメータ

  • pretrained_model_name_or_path (str または os.PathLike, 省略可) — 次のいずれかです。
    • Hub にホストされている事前学習済みパイプラインの repo id(例: CompVis/ldm-text2im-large-256)を表す文字列
    • パイプラインの重みをsave_pretrained()で保存して保存したディレクトリへのパス(例:./my_pipeline_directory/)
  • dtype (torch.dtype または dict[str, Union[str, torch.dtype]]、省略可) — デフォルトの torch.dtype を上書きし、別の dtype でモデルを読み込みます。サブモデルを異なる dtype で読み込む場合は、dict を渡します(例: {'transformer': torch.bfloat16, 'vae': torch.float16})。指定されていないコンポーネントのデフォルト dtype は default で設定します(例: {'transformer': torch.bfloat16, 'default': torch.float16})。コンポーネントが指定されておらず、デフォルトも設定されていない場合は、torch.float32 が使用されます。
  • custom_pipeline (str, 省略可) —

    > 🧪 これは実験的な機能であり、将来変更される可能性があります。

    次のいずれかです:

    • repo id(例: hf-internal-testing/diffusers-dummy-pipeline)の文字列。Hub にホストされているカスタムパイプラインの ID です。リポジトリには、カスタムパイプラインを定義する pipeline.py というファイルが含まれている必要があります。
    • 文字列。GitHub上のCommunityにホストされているコミュニティパイプラインのファイル名です。有効なファイル名は、パイプラインスクリプトではなくファイル名と一致する必要があります(clip_guided_stable_diffusion.pyではなくclip_guided_stable_diffusion)。コミュニティパイプラインは、常にGitHubの現在のmainブランチから読み込まれます。
    • カスタムパイプラインを含むディレクトリへのパス(./my_pipeline_directory/)。このディレクトリには、カスタムパイプラインを定義するpipeline.pyというファイルが含まれている必要があります。

    カスタムパイプラインの読み込みと作成に関する詳細については、カスタムパイプラインの読み込みと追加を参照してください。

  • force_download (bool、任意、デフォルトは False) — モデルの重みおよび設定ファイルを(再)ダウンロードすることを強制するかどうか。キャッシュされたバージョンが存在する場合でも、それらを無視してダウンロードします。
  • cache_dir (Union[str, os.PathLike], 省略可) — 標準のキャッシュを使用しない場合、ダウンロードした事前学習済みモデルの構成がキャッシュされるディレクトリのパス。
  • proxies (Dict[str, str]、省略可) — プロトコルやエンドポイントごとに使用するプロキシサーバーの辞書です。例えば、{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'} のように指定します。各リクエストでこれらのプロキシが使用されます。
  • output_loading_info(bool, optional, デフォルトは False) — 欠落キー、予期しないキー、エラーメッセージを含む辞書を返すかどうかを指定します。
  • local_files_only (bool、任意、デフォルトは False) — ローカルのモデル重みと設定ファイルのみを読み込むかどうかを指定します。True に設定すると、モデルは Hub からダウンロードされません。
  • token (str または bool、省略可能) — リモートファイルの HTTP ベアラ認証に使用するトークンです。True の場合、diffusers-cli login で生成されたトークン(~/.huggingface に保存されています)が使用されます。
  • revision (str、任意、デフォルトは"main") — 使用する特定のモデルのバージョンです。ブランチ名、タグ名、コミット ID、または Git によって許可される任意の識別子を使用できます。
  • custom_revision (str, 任意) — 使用する特定のモデルバージョンです。Hub からカスタムパイプラインを読み込む場合の revision と同様に、ブランチ名、タグ名、またはコミット ID を指定できます。デフォルトでは、最新の安定版の 🤗 Diffusers バージョンが使用されます。
  • mirror (str, 任意) — 中国でモデルをダウンロードする際に、アクセシビリティの問題を解決するためのミラーソースです。ソースの鮮度や安全性を保証するものではなく、詳細についてはミラーサイトをご参照ください。
  • device_map (str, 任意) — パイプラインの各コンポーネントを利用可能なデバイスに配置する方法を指定する戦略です。現在サポートされているのは “balanced” device_map のみです。詳細は こちら をご覧ください。
  • max_memory (Dict, 任意) — 最大メモリを示すデバイスの識別子の辞書です。未設定の場合、各 GPU の利用可能な最大メモリと、利用可能な CPU RAM がデフォルトとして使用されます。
  • offload_folder (str または os.PathLike、省略可) — "disk" が device_map に含まれる場合、重みをオフロードするパス。
  • offload_state_dict (bool、省略可) — Trueの場合、CPU RAMが不足するのを避けるため、CPU state dictの重さとチェックポイントの最大シャードの合計が収まらない場合に、CPU state dictを一時的にハードドライブへオフロードします。ディスクオフロードが存在する場合、デフォルトはTrueです。
  • low_cpu_mem_usage (bool、任意、torch のバージョンが 1.9.0 以上の場合デフォルトは True、それ以外の場合は False) — 重みの初期化を行わず、事前学習済み重みのみを読み込むことで、モデルの読み込みを高速化します。また、モデルの読み込み中に CPU メモリ(ピークメモリを含む)をモデルサイズの 1 倍以下に抑えるよう試みます。PyTorch 1.9.0 以上でのみサポートされています。PyTorch の古いバージョンを使用している場合、この引数を True に設定するとエラーが発生します。
  • use_safetensors (bool、任意、デフォルトは None) — None に設定されている場合、safetensors の重みが利用可能であり かつ safetensors ライブラリがインストールされている場合に、safetensors の重みがダウンロードされます。True に設定されている場合、モデルは safetensors の重みから強制的に読み込まれます。False に設定されている場合、safetensors の重みは読み込まれません。
  • use_onnx (bool、省略可能、デフォルトは None) — True に設定すると、ONNX ウェイトが存在する場合に常にダウンロードされます。False に設定すると、ONNX ウェイトはダウンロードされません。デフォルトでは use_onnx は _is_onnx クラス属性の値をデフォルトとし、非 ONNX パイプラインでは False、ONNX パイプラインでは True になります。ONNX ウェイトには、.onnx および .pb で終わるファイルの両方が含まれます。
  • kwargs (残りのキーワード引数の辞書、任意) — ロードおよびセーブ可能な変数(特定のパイプラインクラスのコンポーネント)を上書きするために使用できます。上書きされたコンポーネントは、パイプラインの__init__メソッドに直接渡されます。詳細は以下の例を参照してください。
  • variant (str、省略可) — "fp16" や "ema" のような指定されたバリアントファイル名から重みをロードします。
  • disable_mmap (‘bool’, 任意、デフォルトは ‘False’) — Safetensors モデルの読み込み時に mmap を無効にするかどうか。モデルがネットワークマウントやハードドライブ上にあり、mmap のランダムアクセス(seek)を適切に処理できない可能性がある場合、このオプションを有効にするとパフォーマンスが向上する場合があります。

事前学習済みのパイプライン重みから、PyTorchの拡散パイプラインをインスタンス化します。

パイプラインはデフォルトで評価モード(model.eval())に設定されます。

以下のエラーメッセージが表示された場合、下流タスク用に重みをファインチューニングする必要があります。

Some weights of UNet2DConditionModel were not initialized from the model checkpoint at stable-diffusion-v1-5/stable-diffusion-v1-5 and are newly initialized because the shapes did not match:
- conv_in.weight: found shape torch.Size([320, 4, 3, 3]) in the checkpoint and torch.Size([320, 9, 3, 3]) in the model instantiated
You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.

> プライベートモデルやゲート付きモデルを使用するには、hf > auth loginでログインしてください。

例:

>>> from diffusers import DiffusionPipeline

>>> # Download pipeline from huggingface.co and cache.
>>> pipeline = DiffusionPipeline.from_pretrained("CompVis/ldm-text2im-large-256")

>>> # Download pipeline that requires an authorization token
>>> # For more information on access tokens, please refer to this section
>>> # of the documentation](https://huggingface.co/docs/hub/security-tokens)
>>> pipeline = DiffusionPipeline.from_pretrained("stable-diffusion-v1-5/stable-diffusion-v1-5")

>>> # Use a different scheduler
>>> from diffusers import LMSDiscreteScheduler

>>> scheduler = LMSDiscreteScheduler.from_config(pipeline.scheduler.config)
>>> pipeline.scheduler = scheduler
Update on GitHub