fix: write and read audio with soundfile instead of torchaudio
torchaudio 2.11 routes torchaudio.save()/load() through TorchCodec and ignores the `backend` argument, so every generation died at the save step with "ImportError: TorchCodec is required for save_with_torchcodec" after the diffusion had already finished. Reference-audio loading (audio2audio, repaint, extend) and the training dataset loader hit the same wall. soundfile is already a required dependency and covers all four output formats the UI offers, so use it directly rather than pulling in TorchCodec and its native FFmpeg stack: - pipeline_ace_step.save_wav_file(): sf.write(), transposing (channels, samples) -> (samples, channels); drops the now-unused torchaudio import - MusicDCAE.load_audio() and text2music_dataset: sf.read(dtype=float32, always_2d=True), transposed back to (channels, samples) torchaudio is still used for Resample/MelScale transforms, which are unaffected. Verified end to end: 10s generation on an RTX 3060 in 9.7s, output is valid non-silent 48kHz stereo; load_audio round-trips it; wav/mp3/ogg/ flac all write and read back. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
6e3273d049
commit
0584397884
@@ -7,6 +7,7 @@ from loguru import logger
|
||||
import time
|
||||
import traceback
|
||||
import torchaudio
|
||||
import soundfile as sf
|
||||
from pathlib import Path
|
||||
import re
|
||||
from acestep.language_segmentation import LangSegment
|
||||
@@ -398,7 +399,10 @@ class Text2MusicDataset(Dataset):
|
||||
filename = item["filename"]
|
||||
sr = 48000
|
||||
try:
|
||||
audio, sr = torchaudio.load(filename)
|
||||
# soundfile instead of torchaudio.load(): torchaudio 2.11 routes
|
||||
# I/O through TorchCodec, an extra native dependency.
|
||||
_data, sr = sf.read(filename, dtype="float32", always_2d=True)
|
||||
audio = torch.from_numpy(_data.T)
|
||||
except Exception as e:
|
||||
logger.error(f"Failed to load audio {item}: {e}")
|
||||
return None
|
||||
|
||||
Reference in New Issue
Block a user