audiocraft icon indicating copy to clipboard operation
audiocraft copied to clipboard

ImportError: cannot import name 'SegmentWithAttributes' from partially initialized module 'audiocraft.modules.conditioners' (most likely due to a circular import)

Open Vargol opened this issue 1 year ago • 1 comments

Hi, hit the following error on a pull from main and a small edit in transformer.py to remove the xformers import (not every one uses linux and Nvidia you know :-) )

(facebook) Vargol:MacMiniM18Gb facebook % python audio.py                                                                                          
Traceback (most recent call last):
  File "/Volumes/Sabrent Media/Documents/Source/Python/facebook/audio.py", line 2, in <module>
    from audiocraft.models import MusicGen
  File "/Volumes/Sabrent Media/Documents/Source/Python/facebook/audiocraft/audiocraft/models/__init__.py", line 10, in <module>
    from . import builders, loaders
  File "/Volumes/Sabrent Media/Documents/Source/Python/facebook/audiocraft/audiocraft/models/builders.py", line 19, in <module>
    from .lm import LMModel
  File "/Volumes/Sabrent Media/Documents/Source/Python/facebook/audiocraft/audiocraft/models/lm.py", line 19, in <module>
    from ..modules.conditioners import (
  File "/Volumes/Sabrent Media/Documents/Source/Python/facebook/audiocraft/audiocraft/modules/conditioners.py", line 31, in <module>
    from ..data.audio import audio_read
  File "/Volumes/Sabrent Media/Documents/Source/Python/facebook/audiocraft/audiocraft/data/__init__.py", line 10, in <module>
    from . import audio, audio_dataset, info_audio_dataset, music_dataset, sound_dataset
  File "/Volumes/Sabrent Media/Documents/Source/Python/facebook/audiocraft/audiocraft/data/info_audio_dataset.py", line 19, in <module>
    from ..modules.conditioners import SegmentWithAttributes, ConditioningAttributes
ImportError: cannot import name 'SegmentWithAttributes' from partially initialized module 'audiocraft.modules.conditioners' (most likely due to a circular import) (/Volumes/Sabrent Media/Documents/Source/Python/facebook/audiocraft/audiocraft/modules/conditioners.py)
(facebook) Vargol:MacMiniM18Gb facebook % 

audio.py is

import torchaudio
from audiocraft.models import MusicGen
from audiocraft.data.audio import audio_write

model = MusicGen.get_pretrained('small')
model.set_generation_params(duration=8)  # generate 8 seconds.
descriptions = ['happy rock', 'energetic EDM', 'sad jazz']
wav = model.generate(descriptions)  # generates 3 samples.

for idx, one_wav in enumerate(wav):
    # Will save under {idx}.wav, with loudness normalization at -14 db LUFS.
    audio_write(f'{idx}', one_wav.cpu(), model.sample_rate, strategy="loudness", loudness_compressor=True)

Vargol avatar Aug 04 '23 09:08 Vargol

Hi @Vargol, Can you make sure that you are running on Python 3.9 as mentionned in https://github.com/facebookresearch/audiocraft#installation. I have just had the same issue and I realised I was running Python 3.11. After downgrading it worked.

Drabble avatar Nov 27 '23 15:11 Drabble