{"record":{"id":"de47bdef8a9ce51d","repo":"keras-team/keras","slug":"fft-length-must-be-greater-than-or-equal-to-se","errorCode":null,"errorMessage":"`fft_length` must be greater than or equal to  `sequence_length`. Received: `sequence_length`={self.sequence_length}, `fft_length`={self.fft_length}.","messagePattern":"`fft_length` must be greater than or equal to  `sequence_length`\\. Received: `sequence_length`=(.+?), `fft_length`=(.+?)\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"keras/src/layers/preprocessing/mel_spectrogram.py","lineNumber":108,"sourceCode":"        sequence_stride=512,\n        sequence_length=None,\n        window=\"hann\",\n        sampling_rate=16000,\n        num_mel_bins=128,\n        min_freq=20.0,\n        max_freq=None,\n        power_to_db=True,\n        top_db=80.0,\n        mag_exp=2.0,\n        min_power=1e-10,\n        ref_power=1.0,\n        **kwargs,\n    ):\n        self.fft_length = fft_length\n        self.sequence_stride = sequence_stride\n        self.sequence_length = sequence_length or fft_length\n        if self.fft_length < self.sequence_length:\n            raise ValueError(\n                \"`fft_length` must be greater than or equal to  \"\n                f\" `sequence_length`. Received: `sequence_length`=\"\n                f\"{self.sequence_length}, `fft_length`={self.fft_length}.\"\n            )\n        self.window = window\n        self.sampling_rate = sampling_rate\n        self.num_mel_bins = num_mel_bins\n        self.min_freq = min_freq\n        self.max_freq = max_freq or int(sampling_rate / 2)\n        self.power_to_db = power_to_db\n        self.top_db = top_db\n        self.mag_exp = mag_exp\n        self.min_power = min_power\n        self.ref_power = ref_power\n        super().__init__(**kwargs)\n\n    def call(self, inputs):\n        dtype = (","sourceCodeStart":90,"sourceCodeEnd":126,"githubUrl":"https://github.com/keras-team/keras/blob/7a34a03db60bf60042242d6a556fc3be119046a5/keras/src/layers/preprocessing/mel_spectrogram.py#L90-L126","documentation":"MelSpectrogram computes an STFT with a window of fft_length over frames of sequence_length; the window must cover the frame, so __init__ raises when fft_length < sequence_length. Note sequence_length defaults to fft_length when None, which is always safe.","triggerScenarios":"keras.layers.MelSpectrogram(sequence_length=512, fft_length=256); passing an explicit sequence_length larger than fft_length.","commonSituations":"Tuning audio preprocessing hyperparameters; porting librosa parameters where n_fft and win_length semantics differ; config typos swapping the two values.","solutions":["Set fft_length >= sequence_length (e.g. sequence_length=256, fft_length=512)","Leave sequence_length=None so it defaults to fft_length","Double-check parameter names when porting from librosa (n_fft vs win_length)"],"exampleFix":"// before\nlayer = MelSpectrogram(sequence_length=512, fft_length=256)\n// after\nlayer = MelSpectrogram(sequence_length=256, fft_length=512)","handlingStrategy":"validation","validationCode":"sl = sequence_length if sequence_length is not None else fft_length\nassert fft_length >= sl, 'fft_length must be >= sequence_length'","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Leave sequence_length unset to inherit fft_length","Cross-check audio configs against librosa semantics before porting"],"tags":["keras","audio","argument-validation","mel-spectrogram"],"backgroundTag":"invalid-argument-value","analyzedSha":"7a34a03db60bf60042242d6a556fc3be119046a5","analyzedAt":"2026-08-25T21:25:25.994Z","schemaVersion":2},"datasetVersion":"2026-08-26T02:17:13.382Z"}