microsoft/VibeVoice · error · ValueError
Must pass exactly one of `num_inference_steps` or `timesteps
Error message
Must pass exactly one of `num_inference_steps` or `timesteps`.
What it means
`set_timesteps()` requires exactly one of `num_inference_steps` or `timesteps`; calling with neither (both None) leaves the scheduler with no timestep grid, so it raises ValueError up front. This is an API-contract check copied from diffusers — you must tell the scheduler how many steps (or exactly which timesteps) to run.
Source
Thrown at vibevoice/schedule/dpm_solver.py:341
num_inference_steps: int = None,
device: Union[str, torch.device] = None,
timesteps: Optional[List[int]] = None,
):
"""
Sets the discrete timesteps used for the diffusion chain (to be run before inference).
Args:
num_inference_steps (`int`):
The number of diffusion steps used when generating samples with a pre-trained model.
device (`str` or `torch.device`, *optional*):
The device to which the timesteps should be moved to. If `None`, the timesteps are not moved.
timesteps (`List[int]`, *optional*):
Custom timesteps used to support arbitrary timesteps schedule. If `None`, timesteps will be generated
based on the `timestep_spacing` attribute. If `timesteps` is passed, `num_inference_steps` and `sigmas`
must be `None`, and `timestep_spacing` attribute will be ignored.
"""
if num_inference_steps is None and timesteps is None:
raise ValueError("Must pass exactly one of `num_inference_steps` or `timesteps`.")
if num_inference_steps is not None and timesteps is not None:
raise ValueError("Can only pass one of `num_inference_steps` or `custom_timesteps`.")
if timesteps is not None and self.config.use_karras_sigmas:
raise ValueError("Cannot use `timesteps` with `config.use_karras_sigmas = True`")
if timesteps is not None and self.config.use_lu_lambdas:
raise ValueError("Cannot use `timesteps` with `config.use_lu_lambdas = True`")
if timesteps is not None:
timesteps = np.array(timesteps).astype(np.int64)
else:
# Clipping the minimum of all lambda(t) for numerical stability.
# This is critical for cosine (squaredcos_cap_v2) noise schedule.
clipped_idx = torch.searchsorted(torch.flip(self.lambda_t, [0]), self.config.lambda_min_clipped)
last_timestep = ((self.config.num_train_timesteps - clipped_idx).numpy()).item()
# "linspace", "leading", "trailing" corresponds to annotation of Table 2. of https://arxiv.org/abs/2305.08891
if self.config.timestep_spacing == "linspace":
timesteps = (View on GitHub (pinned to 94da20d98b)
Solutions
- Pass a step count: `scheduler.set_timesteps(30)`.
- If you intended custom timesteps, pass `timesteps=[... , device=...)` list instead.
- Trace where your pipeline computes num_inference_steps and give it a concrete default when config omits it.
Example fix
# before scheduler.set_timesteps() # ValueError # after scheduler.set_timesteps(num_inference_steps=30)
Defensive patterns
Strategy: validation
Validate before calling
if num_inference_steps is None and timesteps is None:
num_inference_steps = 30 # your default
scheduler.set_timesteps(
num_inference_steps=num_inference_steps, timesteps=timesteps
) Prevention
- Always give num_inference_steps a concrete default in config-driven pipelines.
- Fail fast when the config key is missing instead of letting None flow to set_timesteps.
- set_timesteps is mandatory setup — pair scheduler creation and set_timesteps in one function.
When it happens
Trigger: `scheduler.set_timesteps()` with no arguments, or code that conditionally computes `num_inference_steps` and the variable ends up None (e.g., a config key miss), or passing `num_inference_steps=None` explicitly to 'use defaults'.
Common situations: Wrapping the scheduler in a generic pipeline where step count comes from config and the key is absent; refactoring that moves the step-count argument into kwargs and forgets to forward it.
Related errors
- Can only pass one of `num_inference_steps` or `custom_timest
- Cannot use `timesteps` with `config.use_karras_sigmas = True
- Cannot use `timesteps` with `config.use_lu_lambdas = True`
- {self.config.timestep_spacing} is not supported. Please make
- missing `sample` as a required keyword argument
AI-assisted analysis of microsoft/VibeVoice@94da20d98b (2026-08-15).
Data as JSON: /api/errors/d20ac73666ada434.
Report an issue: GitHub.