{"record":{"id":"b15deada34d0a6e4","repo":"deezer/spleeter","slug":"invalid-mask-extension-parameter-extension","errorCode":null,"errorMessage":"Invalid mask_extension parameter {extension}","messagePattern":"Invalid mask_extension parameter (.+?)","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"spleeter/model/__init__.py","lineNumber":420,"sourceCode":"            tf.Tensor:\n                Extended mask\n\n        Raises:\n            ValueError:\n                If invalid mask_extension parameter is set.\n        \"\"\"\n        extension = self._params[\"mask_extension\"]\n        # Extend with average\n        # (dispatch according to energy in the processed band)\n        if extension == \"average\":\n            extension_row = tf.reduce_mean(mask, axis=2, keepdims=True)\n        # Extend with 0\n        # (avoid extension artifacts but not conservative separation)\n        elif extension == \"zeros\":\n            mask_shape = tf.shape(mask)\n            extension_row = tf.zeros((mask_shape[0], mask_shape[1], 1, mask_shape[-1]))\n        else:\n            raise ValueError(f\"Invalid mask_extension parameter {extension}\")\n        n_extra_row = self._frame_length // 2 + 1 - self._F\n        extension = tf.tile(extension_row, [1, 1, n_extra_row, 1])\n        return tf.concat([mask, extension], axis=2)\n\n    def _build_masks(self):\n        \"\"\"\n        Compute masks from the output spectrograms of the model.\n        \"\"\"\n        output_dict = self.model_outputs\n        stft_feature = self.stft_feature\n        separation_exponent = self._params[\"separation_exponent\"]\n        output_sum = (\n            tf.reduce_sum(\n                [e ** separation_exponent for e in output_dict.values()], axis=0\n            )\n            + self.EPSILON\n        )\n        out = {}","sourceCodeStart":402,"sourceCodeEnd":438,"githubUrl":"https://github.com/deezer/spleeter/blob/c8854001ac8acad34a9bc2bd15f28475541828b1/spleeter/model/__init__.py#L402-L438","documentation":"_extend_mask pads frequency masks to the full frame length using either 'average' or 'zeros' extension; any other mask_extension value raises ValueError. The value comes from the model parameters, typically set in the separator configuration.","triggerScenarios":"Configuring model.params.mask_extension (or passing it programmatically) with a value other than 'average' or 'zeros', e.g. 'zero', 'Zeros', 'mirror', or 'repeat'.","commonSituations":"Typos in config files; users guessing valid extension modes; configs ported from other separation tools with different mask-extension vocabularies.","solutions":["Set mask_extension to exactly 'average' or 'zeros' in the configuration","Fix case/typo issues (e.g. 'zeros' not 'zero' or 'Zeros')","Omit the key to use the default extension if one is defined","Check the _extend_mask source branch chain for the accepted literals"],"exampleFix":"// before (config)\n{\"params\": {\"mask_extension\": \"zero\"}}\n// after\n{\"params\": {\"mask_extension\": \"zeros\"}}","handlingStrategy":"validation","validationCode":"VALID_EXTENSIONS = {'average', 'zeros'}\next = params.get('mask_extension')\nif ext is not None and ext not in VALID_EXTENSIONS:\n    raise ValueError(f\"mask_extension must be one of {VALID_EXTENSIONS}, got {ext!r}\")","typeGuard":"def has_valid_mask_extension(params: dict) -> bool:\n    ext = params.get('mask_extension')\n    return ext is None or ext in ('average', 'zeros')","tryCatchPattern":"try:\n    separator.separate(...)  # builds model with configured mask_extension\nexcept ValueError as e:\n    if 'Invalid mask_extension' in str(e):\n        raise ConfigError(f\"mask_extension must be 'average' or 'zeros': {e}\") from e\n    raise","preventionTips":["Use only 'average' or 'zeros' exactly (lowercase) in configs","Validate config keys against a schema (jsonschema/pydantic) before use","Prefer official pre-trained model configs where mask_extension is preset","Grep your config for near-misses ('zero', 'Zero', 'repeat')"],"tags":["python","valueerror","configuration","mask-extension","spleeter"],"backgroundTag":"invalid-enum-value","analyzedSha":"c8854001ac8acad34a9bc2bd15f28475541828b1","analyzedAt":"2026-08-28T21:38:40.142Z","schemaVersion":2},"datasetVersion":"2026-08-29T02:17:18.158Z"}