{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "#/components/schemas/FourierDenoisingPlan",
  "title": "FourierDenoisingPlan",
  "type": "object",
  "properties": {
    "enabled": {
      "type": "boolean",
      "description": "Whether Fourier denoising is enabled. Note that this is experimental and may not work as expected.",
      "default": false
    },
    "mediaDetectionEnabled": {
      "type": "boolean",
      "description": "Whether automatic media detection is enabled. When enabled, the filter will automatically\ndetect consistent background TV/music/radio and switch to more aggressive filtering settings.\nOnly applies when enabled is true.",
      "example": true,
      "default": true
    },
    "staticThreshold": {
      "type": "number",
      "description": "Static threshold in dB used as fallback when no baseline is established.",
      "example": -35,
      "minimum": -80,
      "maximum": 0,
      "default": -35
    },
    "baselineOffsetDb": {
      "type": "number",
      "description": "How far below the rolling baseline to filter audio, in dB.\nLower values (e.g., -10) are more aggressive, higher values (e.g., -20) are more conservative.",
      "example": -15,
      "minimum": -30,
      "maximum": -5,
      "default": -15
    },
    "windowSizeMs": {
      "type": "number",
      "description": "Rolling window size in milliseconds for calculating the audio baseline.\nLarger windows adapt more slowly but are more stable.",
      "example": 3000,
      "minimum": 1000,
      "maximum": 30000,
      "default": 3000
    },
    "baselinePercentile": {
      "type": "number",
      "description": "Percentile to use for baseline calculation (1-99).\nHigher percentiles (e.g., 85) focus on louder speech, lower percentiles (e.g., 50) include quieter speech.",
      "example": 85,
      "minimum": 1,
      "maximum": 99,
      "default": 85
    }
  }
}