{"record":{"id":"fb5c9df2bc7240a2","repo":"deezer/spleeter","slug":"f-is-too-large-and-must-be-set-to-at-most-frame-le","errorCode":null,"errorMessage":"F is too large and must be set to at most frame_length/2+1. Decrease F or increase frame_length to fix.","messagePattern":"F is too large and must be set to at most frame_length/2\\+1\\. Decrease F or increase frame_length to fix\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"spleeter/dataset.py","lineNumber":299,"sourceCode":"        self._F = audio_params[\"F\"]\n        self._sample_rate = audio_params[\"sample_rate\"]\n        self._frame_length = audio_params[\"frame_length\"]\n        self._frame_step = audio_params[\"frame_step\"]\n        self._mix_name = audio_params[\"mix_name\"]\n        self._n_channels = audio_params[\"n_channels\"]\n        self._instruments = [self._mix_name] + audio_params[\"instrument_list\"]\n        self._instrument_builders: Optional[List] = None\n        self._chunk_duration = chunk_duration\n        self._audio_adapter = audio_adapter\n        self._audio_params = audio_params\n        self._audio_path = audio_path\n        self._random_seed = random_seed\n\n        self.check_parameters_compatibility()\n\n    def check_parameters_compatibility(self):\n        if self._frame_length / 2 + 1 < self._F:\n            raise ValueError(\n                \"F is too large and must be set to at most frame_length/2+1. \"\n                \"Decrease F or increase frame_length to fix.\"\n            )\n\n        if (\n            self._chunk_duration * self._sample_rate - self._frame_length\n        ) / self._frame_step < self._T:\n            raise ValueError(\n                \"T is too large considering STFT parameters and chunk duratoin. \"\n                \"Make sure spectrogram time dimension of chunks is larger than T \"\n                \"(for instance reducing T or frame_step or increasing chunk duration).\"\n            )\n\n    def expand_path(self, sample: Dict) -> Dict:\n        \"\"\"Expands audio paths for the given sample.\"\"\"\n        return dict(\n            sample,\n            **{","sourceCodeStart":281,"sourceCodeEnd":317,"githubUrl":"https://github.com/deezer/spleeter/blob/c8854001ac8acad34a9bc2bd15f28475541828b1/spleeter/dataset.py#L281-L317","documentation":"`SpleeterDataset.check_parameters_compatibility` validates STFT hyperparameters at construction time. The frequency-bin count F must satisfy `frame_length/2 + 1 >= F`; otherwise a `ValueError` is raised, since the STFT of `frame_length` cannot produce more frequency bins than that.","triggerScenarios":"Constructing `SpleeterDataset(...)` (via its `__init__`) with an `F` parameter greater than `frame_length // 2 + 1` — e.g. F=1025 with frame_length=512.","commonSituations":"Tuning spectrogram/model parameters by hand in a training config copied between models with different frame sizes, mixing parameter sets from different experiments.","solutions":["Lower F to at most `frame_length // 2 + 1`","Or increase `frame_length` so that `frame_length // 2 + 1 >= F`","Re-run training after making F and frame_length consistent"],"exampleFix":"// before\nSpleeterDataset(frame_length=512, F=1025, ...)\n// after\nSpleeterDataset(frame_length=2048, F=1025, ...)  # 2048/2+1 = 1025 >= F","handlingStrategy":"validation","validationCode":"def validate_stft_f(frame_length: int, F: int):\n    if frame_length / 2 + 1 < F:\n        raise ValueError(f'F must be <= frame_length/2+1 (got F={F}, frame_length={frame_length})')\nvalidate_stft_f(frame_length=2048, F=1025)","typeGuard":null,"tryCatchPattern":"try:\n    dataset = SpleeterDataset(frame_length=frame_length, F=F, ...)\nexcept ValueError as e:\n    if 'F is too large' in str(e):\n        F = frame_length // 2 + 1\n        dataset = SpleeterDataset(frame_length=frame_length, F=F, ...)\n    else:\n        raise","preventionTips":["Derive F from frame_length as frame_length//2+1 by default","Keep a single source of truth for STFT params shared across configs","Add unit tests asserting F <= frame_length//2+1 for all training configs"],"tags":["configuration","hyperparameters","stft","value-error"],"backgroundTag":"invalid-stft-parameters","analyzedSha":"c8854001ac8acad34a9bc2bd15f28475541828b1","analyzedAt":"2026-08-28T21:38:40.142Z","schemaVersion":2},"datasetVersion":"2026-08-29T02:17:18.158Z"}