RVC-Boss/GPT-SoVITS · error · ValueError
The following condition must be satisfied: min_length >= min
Error message
The following condition must be satisfied: min_length >= min_interval >= hop_size
What it means
ValueError from Slicer.__init__: the audio slicer's parameters must satisfy min_length >= min_interval >= hop_size (values in milliseconds). These derive window geometry — win_size = min(min_interval, 4*hop_size) — and a violation would produce non-sensitive or negative window sizes, so the constructor refuses it immediately.
Source
Thrown at tools/slicer2.py:49
# Calculate power
power = np.mean(np.abs(x) ** 2, axis=-2, keepdims=True)
return np.sqrt(power)
class Slicer:
def __init__(
self,
sr: int,
threshold: float = -40.0,
min_length: int = 5000,
min_interval: int = 300,
hop_size: int = 20,
max_sil_kept: int = 5000,
):
if not min_length >= min_interval >= hop_size:
raise ValueError("The following condition must be satisfied: min_length >= min_interval >= hop_size")
if not max_sil_kept >= hop_size:
raise ValueError("The following condition must be satisfied: max_sil_kept >= hop_size")
min_interval = sr * min_interval / 1000
self.threshold = 10 ** (threshold / 20.0)
self.hop_size = round(sr * hop_size / 1000)
self.win_size = min(round(min_interval), 4 * self.hop_size)
self.min_length = round(sr * min_length / 1000 / self.hop_size)
self.min_interval = round(min_interval / self.hop_size)
self.max_sil_kept = round(sr * max_sil_kept / 1000 / self.hop_size)
def _apply_slice(self, waveform, begin, end):
if len(waveform.shape) > 1:
return waveform[:, begin * self.hop_size : min(waveform.shape[1], end * self.hop_size)]
else:
return waveform[begin * self.hop_size : min(waveform.shape[0], end * self.hop_size)]
# @timeit
def slice(self, waveform):
View on GitHub (pinned to d523079fc0)
Solutions
- Fix parameter ordering: choose hop_size <= min_interval <= min_length (defaults 20 <= 300 <= 5000 ms).
- If you want a bigger hop for speed, raise min_interval/min_length accordingly (e.g. hop 60 → min_interval >= 60).
- Clamp/sort user-supplied values in UI code before constructing Slicer.
- Reset to defaults in the webui advanced panel if unsure.
Example fix
# before slicer = Slicer(32000, min_length=2000, min_interval=3000, hop_size=10) # ValueError # after # enforce ordering hop, interval, length = sorted([hop_size, min_interval, min_length]) slicer = Slicer(32000, min_length=length, min_interval=interval, hop_size=hop)
Defensive patterns
Strategy: validation
Validate before calling
hop, interval, length = sorted([hop_size, min_interval, min_length]) slicer = Slicer(sr, min_length=length, min_interval=interval, hop_size=hop)
Type guard
def valid_slicer_params(min_length: int, min_interval: int, hop_size: int) -> bool:
return min_length >= min_interval >= hop_size Prevention
- Treat the triple as ordered (hop <= interval <= length) when editing configs.
- Clamp-and-sort user-supplied values in UI/config loaders.
- Reset slicing advanced settings to defaults before debugging.
When it happens
Trigger: Constructing Slicer(sr, min_length=..., min_interval=..., hop_size=...) (or calling the slicing webui/API with custom params) where min_interval > min_length or hop_size > min_interval, e.g. Slicer(32000, min_length=5000, min_interval=6000) or hop_size=400 with min_interval=300.
Common situations: User tweaks UVR5/slicing config for very aggressive silence removal and inverts a value; config file edited by hand; defaults overridden partially (large hop for speed) leaving the ordering violated.
Related errors
AI-assisted analysis of RVC-Boss/GPT-SoVITS@d523079fc0 (2026-08-15).
Data as JSON: /api/errors/bff1ac05243ae735.
Report an issue: GitHub.