openclaw - 💡(How to fix) Fix feat(tts): xiaomi voicedesign/voiceclone model support

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

Fix Action

Fix

1. Extend XIAOMI_TTS_MODELS:

// before
const XIAOMI_TTS_MODELS = ["mimo-v2.5-tts", "mimo-v2-tts"];

// after
const XIAOMI_TTS_MODELS = ["mimo-v2.5-tts", "mimo-v2-tts", "mimo-v2.5-tts-voicedesign", "mimo-v2.5-tts-voiceclone"];

2. Conditionally omit voice for voicedesign/voiceclone:

// before
audio: {
    format,
    voice
}

// after
audio: {
    format,
    ...(model.includes("voicedesign") || model.includes("voiceclone") ? {} : { voice })
}

Code Example

// before
const XIAOMI_TTS_MODELS = ["mimo-v2.5-tts", "mimo-v2-tts"];

// after
const XIAOMI_TTS_MODELS = ["mimo-v2.5-tts", "mimo-v2-tts", "mimo-v2.5-tts-voicedesign", "mimo-v2.5-tts-voiceclone"];

---

// before
audio: {
    format,
    voice
}

// after
audio: {
    format,
    ...(model.includes("voicedesign") || model.includes("voiceclone") ? {} : { voice })
}
RAW_BUFFERClick to expand / collapse

Problem

The Xiaomi TTS provider only supports mimo-v2.5-tts and mimo-v2-tts in XIAOMI_TTS_MODELS. The newer mimo-v2.5-tts-voicedesign and mimo-v2.5-tts-voiceclone models are not recognized, so they cannot be selected via config.

Additionally, the voicedesign and voiceclone models do not accept a voice parameter in the audio field — passing it returns HTTP 400 Param Incorrect. The current xiaomiTTS function always includes voice in the request body regardless of model.

Affected file

dist/speech-provider-Cc3hcgqu.js

Reproduction

Set messages.tts.providers.xiaomi.model to mimo-v2.5-tts-voicedesign in openclaw.json. TTS fails silently (model not in list) or returns 400 if the model somehow reaches the API with a voice field.

Fix

1. Extend XIAOMI_TTS_MODELS:

// before
const XIAOMI_TTS_MODELS = ["mimo-v2.5-tts", "mimo-v2-tts"];

// after
const XIAOMI_TTS_MODELS = ["mimo-v2.5-tts", "mimo-v2-tts", "mimo-v2.5-tts-voicedesign", "mimo-v2.5-tts-voiceclone"];

2. Conditionally omit voice for voicedesign/voiceclone:

// before
audio: {
    format,
    voice
}

// after
audio: {
    format,
    ...(model.includes("voicedesign") || model.includes("voiceclone") ? {} : { voice })
}

References

  • Xiaomi MiMo TTS v2.5 docs
  • voicedesign model: describe voice in natural language instead of selecting a preset voice ID
  • voiceclone model: pass base64 audio sample as voice

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING