Diffusers documentation
LongCat-AudioDiT
LongCat-AudioDiT
LongCat-AudioDiT là mô hình khuếch tán từ văn bản sang âm thanh của Meituan LongCat. Tích hợp diffusers cung cấp giao diện DiffusionPipeline tiêu chuẩn cho việc tạo âm thanh có điều kiện từ văn bản.
Pipeline này được điều chỉnh từ bản triển khai tham chiếu LongCat-AudioDiT: https://github.com/meituan-longcat/LongCat-AudioDiT
Pipeline này hỗ trợ nạp từ một thư mục cục bộ hoặc kho lưu trữ Hugging Face Hub ở định dạng diffusers (chứa các thư mục con text_encoder/, transformer/, vae/, tokenizer/ và scheduler/).
Cách sử dụng
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)Mẹo
audio_duration_slà cách trực tiếp nhất để kiểm soát thời lượng đầu ra.- Sử dụng
generator=torch.Generator("cuda").manual_seed(42)để đảm bảo quá trình tạo ra có thể tái lập được. - Hình dạng đầu ra là
(batch, channels, samples)- sử dụng.audios[0, 0]để lấy một mẫu âm thanh đơn lẻ. - Pipeline xuất ra âm thanh mono (1 kênh). Nếu bạn cần âm thanh stereo, bạn có thể nhân đôi kênh:
audio.unsqueeze(0).repeat(1, 2, 1).
LongCatAudioDiTPipeline
lớp diffusers.LongCatAudioDiTPipeline
< source >( vae: LongCatAudioDiTVaetext_encoder: UMT5EncoderModeltokenizer: PreTrainedTokenizerBasetransformer: LongCatAudioDiTTransformerscheduler: diffusers.schedulers.scheduling_flow_match_euler_discrete.FlowMatchEulerDiscreteScheduler | None = None )
__call__
< source >( 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
Tham số
- prompt (
strhoặclist[str]) — Prompt hoặc các prompt định hướng cho việc tạo âm thanh. - negative_prompt (
strhoặclist[str], tùy chọn) — Prompt âm cho classifier-free guidance. - audio_duration_s (
float, tùy chọn) — Thời lượng âm thanh đích tính bằng giây. Bỏ qua khilatentsđược cung cấp. - latents (
torch.Tensor, tùy chọn) — Các latents nhiễu đã được tạo trước, có hình dạng(batch_size, duration, latent_dim). - num_inference_steps (
int, mặc định là 16) — Số bước khử nhiễu. - guidance_scale (
float, mặc định là 4.0) — Thang độ dẫn hướng cho classifier-free guidance. - generator (
torch.Generatorhoặclist[torch.Generator], tùy chọn) — Bộ tạo ngẫu nhiên. - output_type (
str, mặc định là"np") — Định dạng đầu ra:"np","pt"hoặc"latent". - return_dict (
bool, mặc định làTrue) — Có nên trả vềAudioPipelineOutputhay không. - callback_on_step_end (
Callable, tùy chọn) — Một hàm được gọi vào cuối mỗi bước khử nhiễu, nhận vào pipeline, chỉ số bước, timestep và các tensor đầu vào được chỉ định bởicallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list, mặc định là["latents"]) — Các tensor đầu vào được truyền chocallback_on_step_end.
Trả về
AudioPipelineOutput hoặc tuple
AudioPipelineOutput nếu return_dict là True,
nếu không thì là một tuple. Khi trả về tuple, phần tử đầu tiên là dạng sóng âm thanh đã tạo.
Hàm được gọi khi gọi pipeline cho việc sinh.
Ví dụ:
>>> 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
< source >( pretrained_model_name_or_path: str | os.PathLike**kwargs )
Tham số
- pretrained_model_name_or_path (
strhoặcos.PathLike, tùy chọn) — Có thể là:- Một chuỗi, repo id (ví dụ
CompVis/ldm-text2im-large-256) của một pipeline được huấn luyện trước có trên Hub. - Đường dẫn đến một thư mục (ví dụ
./my_pipeline_directory/) chứa trọng số pipeline được lưu bằng save_pretrained().
- Một chuỗi, repo id (ví dụ
- dtype (
torch.dtypehoặcdict[str, Union[str, torch.dtype]], tuỳ chọn) — Ghi đètorch.dtypemặc định và nạp mô hình với một dtype khác. Để nạp các mô hình con với các dtype khác nhau, hãy truyền mộtdict(ví dụ{'transformer': torch.bfloat16, 'vae': torch.float16}). Đặt dtype mặc định cho các thành phần không được chỉ định bằngdefault(ví dụ{'transformer': torch.bfloat16, 'default': torch.float16}). Nếu một thành phần không được chỉ định và không có default được đặt,torch.float32sẽ được sử dụng. - custom_pipeline (
str, tuỳ chọn) —> 🧪 Đây là một tính năng thử nghiệm và có thể thay đổi trong tương lai.
Có thể là một trong các lựa chọn sau:
- Một chuỗi, repo id (ví dụ
hf-internal-testing/diffusers-dummy-pipeline) của một pipeline tùy chỉnh được lưu trữ trên Hub. Kho phải chứa một tệp có tên pipeline.py định nghĩa pipeline tùy chỉnh. - Một chuỗi, tên tệp của một pipeline cộng đồng được lưu trữ trên GitHub dưới
Community. Tên tệp hợp lệ phải khớp với tên tệp chứ không phải script pipeline (
clip_guided_stable_diffusionthay vìclip_guided_stable_diffusion.py). Các pipeline cộng đồng luôn được tải từ nhánh main hiện tại trên GitHub. - Đường dẫn đến một thư mục (
./my_pipeline_directory/) chứa một pipeline tùy chỉnh. Thư mục phải chứa một tệp có tên làpipeline.pyđể định nghĩa pipeline tùy chỉnh.
Để biết thêm thông tin về cách tải và tạo các pipeline tùy chỉnh, hãy xem Tải và Thêm các Pipeline tùy chỉnh
- Một chuỗi, repo id (ví dụ
- force_download (
bool, tùy chọn, mặc định làFalse) — Có nên buộc tải lại (re-download) trọng số mô hình và các tệp cấu hình, ghi đè lên các phiên bản đã được lưu trong bộ nhớ đệm nếu chúng tồn tại hay không. - cache_dir (
Union[str, os.PathLike], tùy chọn) — Đường dẫn đến thư mục nơi cấu hình mô hình được huấn luyện trước đã tải xuống được lưu đệm nếu không sử dụng bộ lưu đệm tiêu chuẩn. - proxies (
Dict[str, str], tùy chọn) — Một từ điển các máy chủ proxy để sử dụng theo giao thức hoặc điểm cuối, ví dụ,{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}. Các proxy này được sử dụng cho mỗi yêu cầu. - output_loading_info(
bool, optional, mặc định làFalse) — Có nên trả về một từ điển chứa các khóa bị thiếu, các khóa không mong đợi và thông báo lỗi hay không. - local_files_only (
bool, tùy chọn, mặc định làFalse) — Xác định có chỉ tải trọng số và tệp cấu hình của mô hình từ cục bộ hay không. Nếu đặt thànhTrue, mô hình sẽ không được tải xuống từ Hub. - token (
strhoặc bool, tùy chọn) — Token được sử dụng làm HTTP bearer authorization cho các tệp từ xa. NếuTrue, token được tạo từdiffusers-cli login(được lưu trong~/.huggingface) sẽ được sử dụng. - revision (
str, tùy chọn, mặc định là"main") — Phiên bản mô hình cụ thể cần sử dụng. Nó có thể là tên nhánh, tên thẻ, id commit, hoặc bất kỳ định danh nào được Git cho phép. - custom_revision (
str, tùy chọn) — Phiên bản mô hình cụ thể cần sử dụng. Nó có thể là tên nhánh, tên thẻ, hoặc id commit tương tự nhưrevisionkhi tải một pipeline tùy chỉnh từ Hub. Mặc định là phiên bản 🤗 Diffusers ổn định mới nhất. - mirror (
str, optional) — Nguồn mirror để giải quyết các vấn đề về khả năng truy cập nếu bạn đang tải xuống một model tại Trung Quốc. Chúng tôi không đảm bảo tính kịp thời hay an toàn của nguồn, và bạn nên tham khảo trang web mirror để biết thêm thông tin. - device_map (
str, tùy chọn) — Chiến lược quy định cách các thành phần khác nhau của pipeline nên được đặt trên các thiết bị khả dụng. Hiện tại, chỉ hỗ trợdevice_map“balanced”. Xem đây để biết thêm. - max_memory (
Dict, tùy chọn) — Một từ điển định danh thiết bị cho bộ nhớ tối đa. Nếu không được đặt, giá trị mặc định sẽ là bộ nhớ tối đa khả dụng cho mỗi GPU và RAM CPU khả dụng. - offload_folder (
strhoặcos.PathLike, tùy chọn) — Đường dẫn để offload trọng số nếu device_map chứa giá trị"disk". - offload_state_dict (
bool, tùy chọn) — NếuTrue, sẽ tạm thời offload state dict trên CPU xuống ổ cứng để tránh hết RAM CPU nếu trọng số của state dict trên CPU + shard lớn nhất của checkpoint không vừa. Mặc định làTruekhi có offload xuống đĩa. - low_cpu_mem_usage (
bool, tùy chọn, mặc định làTruenếu phiên bản torch >= 1.9.0, ngược lại làFalse) — Tăng tốc quá trình tải mô hình bằng cách chỉ tải trọng số được huấn luyện trước mà không khởi tạo trọng số. Điều này cũng cố gắng không sử dụng nhiều hơn 1 lần kích thước mô hình trong bộ nhớ CPU (bao gồm bộ nhớ đỉnh) trong khi tải mô hình. Chỉ hỗ trợ cho PyTorch >= 1.9.0. Nếu bạn đang sử dụng phiên bản PyTorch cũ hơn, việc đặt tham số này thànhTruesẽ gây ra lỗi. - use_safetensors (
bool, tùy chọn, mặc định làNone) — Nếu được đặt thànhNone, các trọng số safetensors sẽ được tải xuống nếu chúng có sẵn và nếu thư viện safetensors đã được cài đặt. Nếu được đặt thànhTrue, mô hình sẽ được tải bắt buộc từ các trọng số safetensors. Nếu được đặt thànhFalse, các trọng số safetensors sẽ không được tải. - use_onnx (
bool, tuỳ chọn, mặc định làNone) — Nếu đặt thànhTrue, trọng số ONNX sẽ luôn được tải xuống nếu có. Nếu đặt thànhFalse, trọng số ONNX sẽ không bao giờ được tải xuống. Mặc định,use_onnxcó giá trị mặc định là thuộc tính lớp_is_onnx, vốn làFalseđối với các pipeline không phải ONNX vàTrueđối với các pipeline ONNX. Trọng số ONNX bao gồm cả các tệp kết thúc bằng.onnxvà.pb. - kwargs (từ điển các tham số từ khóa còn lại, tùy chọn) —
Có thể được dùng để ghi đè lên các biến load và saveable (các thành phần pipeline của lớp pipeline cụ thể). Các thành phần bị ghi đè sẽ được truyền trực tiếp vào phương thức
__init__của pipeline. Xem ví dụ bên dưới để biết thêm thông tin. - variant (
str, tùy chọn) — Tải trọng số từ tên tệp biến thể được chỉ định, chẳng hạn như"fp16"hoặc"ema". - disable_mmap (‘bool’, tùy chọn, mặc định là ‘False’) — Có vô hiệu hóa mmap khi tải mô hình Safetensors hay không. Tùy chọn này có thể cho hiệu suất tốt hơn khi mô hình nằm trên ổ đĩa mạng hoặc ổ cứng, những nơi có thể không xử lý tốt tính chất truy cập ngẫu nhiên (seeky) của mmap.
Tạo một pipeline khuếch tán PyTorch từ trọng số pipeline được huấn luyện trước.
Pipeline được đặt ở chế độ đánh giá (model.eval()) theo mặc định.
Nếu bạn nhận được thông báo lỗi bên dưới, bạn cần tinh chỉnh trọng số cho tác vụ hạ nguồn của mình:
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.> Để sử dụng các mô hình riêng tư hoặc được kiểm soát, hãy đăng nhập bằng
hf > auth login.
Ví dụ:
>>> 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