Skip to content

feat(tts): xiaomi voicedesign/voiceclone model support #87816

Description

@DoiiarX

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Normal backlog priority with limited blast radius.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.impact:auth-providerAuth, provider routing, model choice, or SecretRef resolution may break.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions