Hmbown/CodeWhale · error · anyhow::Error
mimo-v2.5-tts-voicedesign requires --voice-prompt or --instr
Error message
mimo-v2.5-tts-voicedesign requires --voice-prompt or --instruction to describe the voice
What it means
Voice-design guard: when the resolved model contains "voicedesign" (mimo-v2.5-tts-voicedesign), the command needs a natural-language description of the voice supplied via `--voice-prompt` or `--instruction` (combined by combine_speech_instructions). Without one the design model has nothing to synthesize a voice from, so the CLI bails.
Source
Thrown at crates/tui/src/lib.rs:7392
voice_prompt.is_some(),
);
let model_lower = model.to_ascii_lowercase();
if !model_lower.contains("tts") {
bail!(
"speech requires a TTS model (examples: {}); got {model}",
SPEECH_MODEL_EXAMPLES.join(", ")
);
}
let is_voice_design = model_lower.contains("voicedesign");
let is_voice_clone = model_lower.contains("voiceclone");
let instruction = combine_speech_instructions(instruction, voice_prompt);
if is_voice_design
&& instruction
.as_deref()
.is_none_or(|value| value.trim().is_empty())
{
bail!(
"mimo-v2.5-tts-voicedesign requires --voice-prompt or --instruction to describe the voice"
);
}
let voice = if let Some(clone_path) = clone_voice {
Some(encode_voice_clone_sample_data_uri(&clone_path)?)
} else if is_voice_design {
None
} else if let Some(value) = voice.filter(|value| !value.trim().is_empty()) {
Some(value)
} else if is_voice_clone {
bail!("mimo-v2.5-tts-voiceclone requires --clone-voice <mp3|wav> or --voice <data-uri>");
} else {
Some(DEFAULT_VOICE.to_string())
};
let format = normalize_speech_format(&format).with_context(|| {
format!("Unsupported speech format '{format}' (allowed: wav, mp3, pcm16)")
})?;View on GitHub (pinned to 0c42157ee5)
Solutions
- Add `--voice-prompt "..."` describing the target voice (tone, gender, pace)
- Or add `--instruction "..."`; when both are present they are merged
- If you did not want voice design, switch the model back to mimo-v2.5-tts
Example fix
// before $ codewhale speech --model mimo-v2.5-tts-voicedesign Error: mimo-v2.5-tts-voicedesign requires --voice-prompt or --instruction to describe the voice // after $ codewhale speech --model mimo-v2.5-tts-voicedesign --voice-prompt 'calm male narrator, slow pace'
Defensive patterns
Strategy: validation
Validate before calling
case "$MODEL" in *voicedesign*)
[ -n "${VOICE_PROMPT}${INSTRUCTION}" ] || { echo 'voicedesign needs --voice-prompt or --instruction' >&2; exit 2; } ;;
esac Prevention
- Treat a voice description as mandatory input wherever the design model is used
- Keep prompts in variables so the flag is never accidentally dropped
When it happens
Trigger: `codewhale speech --model mimo-v2.5-tts-voicedesign` (or inference selecting it via --voice-prompt) with neither `--voice-prompt` nor `--instruction`, or both blank after trimming.
Common situations: Switching from plain TTS to voice design and assuming a default voice applies; passing --instruction containing only whitespace.
Understand the failure class
Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.
Related errors
- mimo-v2.5-tts-voiceclone requires --clone-voice <mp3|wav> or
- speech synthesis requires provider 'xiaomi-mimo' (current: {
- `speech` requires provider = "xiaomi-mimo" (current: {}). Ru
- Use either --clone-voice or --voice for cloned voice data, n
- speech requires a TTS model (examples: {}); got {model}
AI-assisted analysis of Hmbown/CodeWhale@0c42157ee5 (2026-08-20).
Data as JSON: /api/errors/619d47c1b6f3c182.
Report an issue: GitHub.