deezer/spleeter · error · SpleeterError

Configuration file {descriptor} not found

Error message

Configuration file {descriptor} not found

What it means

When the descriptor does not use the embedded 'spleeter:' prefix, load_configuration treats it as a plain filesystem path to a JSON configuration file and raises SpleeterError if os.path.exists says the file is not there. It means the path you supplied (relative or absolute) does not resolve to an existing file from the current working directory. It is a pre-flight check so users get a clear message instead of an open() FileNotFoundError.

Source

Thrown at spleeter/utils/configuration.py:49

        Dict:
            Loaded description as dict.

    Raises:
        ValueError:
            If required embedded configuration does not exists.
        SpleeterError:
            If required configuration file does not exists.
    """
    # Embedded configuration reading.
    if descriptor.startswith(_EMBEDDED_CONFIGURATION_PREFIX):
        name = descriptor[len(_EMBEDDED_CONFIGURATION_PREFIX) :]
        if not loader.is_resource(resources, f"{name}.json"):
            raise SpleeterError(f"No embedded configuration {name} found")
        with loader.open_text(resources, f"{name}.json") as stream:
            return json.load(stream)
    # Standard file reading.
    if not exists(descriptor):
        raise SpleeterError(f"Configuration file {descriptor} not found")
    with open(descriptor, "r") as stream:
        return json.load(stream)

View on GitHub (pinned to c8854001ac)

Solutions

  1. Verify the file exists at that exact path (ls/pathlib.Path(descriptor).exists()) and fix the spelling
  2. Use an absolute path built from a known anchor, e.g. Path(__file__).parent / 'configs' / 'my.json', to be CWD-independent
  3. If you meant a bundled config, prefix it: 'spleeter:2stems' instead of a bare path
  4. In containers/CI, confirm the config file or volume is actually copied/mounted into the runtime environment

Example fix

// before
params = load_configuration('stems_config.json')  # not found from this CWD
// after
from pathlib import Path
params = load_configuration(str(Path(__file__).parent / 'configs' / 'stems_config.json'))
Defensive patterns

Strategy: validation

Validate before calling

from os.path import exists

descriptor = 'configs/my_stems.json'
assert exists(descriptor), f'Configuration file not found: {descriptor} (cwd-dependent)'

Try / catch

from spleeter import SpleeterError
try:
    params = load_configuration(descriptor)
except SpleeterError as e:
    if 'not found' in str(e):
        print(f'Check path/cwd for {descriptor}; or use an embedded spleeter:<name> config')
    else:
        raise

Prevention

When it happens

Trigger: Calling load_configuration('configs/my.json') or Separator('configs/my.json') (training entry points call this too) where the path is misspelled, relative to the wrong CWD, or the file was never created.

Common situations: Running a training script from a different working directory than the one the relative config path assumes; renamed or deleted config files; passing an embedded-style name without the 'spleeter:' prefix (e.g. '2stems.json' expecting it to resolve to a bundled config); container images where the config volume was not mounted.

Related errors


AI-assisted analysis of deezer/spleeter@c8854001ac (2026-08-28). Data as JSON: /api/errors/94d59d6417b52159. Report an issue: GitHub.