Skip to content

token-plan profile advertises speech.synthesize but every voice fails with [cosyvoice:] Engine error [411]; no discoverable voice IDs for the default TTS model #205

Description

@ParallelEntrepreneur

Summary

On the built-in token-plan profile, bl speech synthesize fails for every model/voice/format
combination, while image.generate and video.generate succeed on the same API key. The CLI-side
problem is that nothing in bl makes this discoverable:

  1. bl config show lists speech.synthesize in api_key_capabilities for this profile, so the CLI
    presents TTS as supported.
  2. --list-voices for the profile's own default TTS model returns no list, so there is no way to
    learn a valid voice ID from the CLI.
  3. --list-voices --model cosyvoice-v3-flash does print a catalogue, but every ID from it fails,
    and the model itself 404s on this endpoint. The catalogue is therefore misleading on this profile.

Environment

bl --version 1.25.0
skills version 1.25.0 (bailian-protocol frontmatter)
npm latest 1.25.0
profile token-plan
base_url https://token-plan.ap-southeast-1.maas.aliyuncs.com
default_speech_model qwen-audio-3.0-tts-plus
OS macOS 27.0, arm64

Reproduction

bl speech synthesize --text "Every product needs a backend." --voice Ethan --language en \
  --format mp3 --out out.mp3

Actual

[Model: qwen-audio-3.0-tts-plus] [Voice: Ethan]
Error:       [cosyvoice:]Engine error [411]: TTS speak operation failed
Status:      HTTP 400 (InvalidParameter)
Exit code:   1

Expected: either an MP3, or an error that names which voice IDs are valid for this model/profile.

What was tried

  • Voices Ethan, Serena, Cherry, Chelsie on the default model — all Engine error [411]
  • CosyVoice IDs longtian_v3, longxiaochun_v3, longcheng_v3, longanyang on the default model —
    all Engine error [411]
  • --format mp3 and --format wav — identical
  • With and without --instruction, --rate, --language
  • --model cosyvoice-v3-flashModel not exist (HTTP 404) on this endpoint, although
    --list-voices for that model prints 26+ voice IDs

Image and video generation on the same key and profile succeed, so this is not auth or quota.

Request IDs

  • f1292503-a91f-47b0-841c-aef030aff2e8
  • c6094826-a2a2-4d8a-9d78-23559139e184
  • 69407cc8-34b6-46ce-942c-25f143782b86

Suggested fix

Whichever way the service behaves, the CLI could avoid the dead end:

  • Do not advertise speech.synthesize in api_key_capabilities for a profile where no voice works, or
  • Make --list-voices return the voices valid for the active profile and its default model, and
    scope the cosyvoice-v3-flash catalogue to endpoints where that model exists, and
  • Surface Engine error [411] with a hint that names the likely cause, as other commands do.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions