Skip to content

Can't reproduce the results #12

Description

@YiYang-SCUT

I can't reproduce the results of the audio editing in the demo page, I didn't change any parameter in your source code and the content of the inference.py, and in particular I get poor inversion results, can you help me with this, I'd appreciate it if you would!

import os
os.environ["CUDA_VISIBLE_DEVICES"] = "2"

from audioldm2.p2p_pipeline import AudioLDM2Pipeline
from diffusers import DDIMScheduler, DDIMInverseScheduler
import torch
import nltk
import IPython
import soundfile as sf
import datetime
from lpmc.music_captioning import captioning
from audioldm2.embedding_calculator import EmbeddingCalculator

model_ckpt = "cvssp/audioldm2"
pipeline = AudioLDM2Pipeline.from_pretrained(model_ckpt,
torch_dtype=torch.float32).to("cuda")
pipeline.scheduler = DDIMScheduler.from_config(pipeline.scheduler.config)
pipeline.inverse_scheduler = DDIMInverseScheduler.from_config(pipeline.scheduler.config)
RANDOM_SEED = 42

before_concept = "saxophone"
after_concept = "piano"

get text input

select_audio = "sax_2"
audio_path = f"sample_audio/{select_audio}.wav"
caption = captioning.captioning(audio_path)
prompt = EmbeddingCalculator.postprocessing_caption(caption, before_concept)
print(prompt)

embedding_calculator = EmbeddingCalculator(embedding_model=pipeline, prompt_length=len(nltk.word_tokenize(prompt)))

source_embeddings, generated_source_embeddings, target_embeddings, generated_target_embeddings = embedding_calculator(
before_concept,
after_concept,)

get latent

g_cpu = torch.Generator().manual_seed(RANDOM_SEED)
inv_latents, audio_origin = pipeline.invert(prompt, audio_path=audio_path, generator=g_cpu, guidance_scale=1)

g_cpu = torch.Generator().manual_seed(RANDOM_SEED)
audios_before_, audios_after_ = pipeline(
prompt,
negative_prompt="low quality",
source_embeddings=source_embeddings,
generated_source_embeddings=generated_source_embeddings,
target_embeddings=target_embeddings,
generated_target_embeddings=generated_target_embeddings,
num_inference_steps=100,
audio_length_in_s=10,
guidance_scale=3.5,
cross_attention_guidance_amount=0.04,
generator=g_cpu,
# num_waveforms_per_prompt=3,
before_concept=before_concept,
after_concept=after_concept,
latents=inv_latents,
)

audios_before, audios_after = audios_before_.audios[0], audios_after_.audios[0]

IPython.display.display(IPython.display.Audio(audios_before, rate=16000))
IPython.display.display(IPython.display.Audio(audios_after, rate=16000))

save

current_time = datetime.datetime.now().strftime("%m%d%H%M%S")
os.makedirs("outputs", exist_ok=True)

sf.write(f"outputs/{select_audio}to{after_concept}_before.wav", audios_before, 16000)
sf.write(f"outputs/{select_audio}to{after_concept}_after.wav", audios_after, 16000)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions