Skip to content

feat!: move Qwen TTS to the 3.1 ids (flash, plus); drop qwen-tts and the 3.0 ids - #56

Merged
LingXuanYin merged 3 commits into
mainfrom
feat/retire-qwen-tts
Oct 27, 2026
Merged

LingXuanYin merged 3 commits into
mainfrom
feat/retire-qwen-tts

Conversation

@LingXuanYin

@LingXuanYin LingXuanYin commented Sep 28, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

qwen-tts was retired upstream on 2026-10-10 (https://www.alibabacloud.com/en/notice/model_studio_notice_of_retirement_for_selected_legacy_models_7d9). The SDK now declares the two Qwen-Audio-TTS 3.1 ids and drops the older ones.

 built-in speech models
-  qwen-tts                    (retired upstream, no replacement id)
-  qwen-audio-3.0-tts-plus
-  qwen-audio-3.0-tts-flash
+  qwen-audio-3.1-tts-flash    (default; design via voice_prompt, or one-reference clone)
+  qwen-audio-3.1-tts-plus     (same shape; only when the user or a policy selects it)
 openai.audioSpeech validation
-  15-code-point minimum only for the 3.0 models
+  15-code-point minimum for both 3.1 ids
 version
-  0.1.42
+  0.2.0

Three commits on top of main:

  1. 1df5058 collapses Qwen TTS to qwen-audio-3.1-tts-flash (rebased onto main on 2026-10-27, after higgs-tts was removed in feat: remove higgs-tts from the built-in models and audio speech adapter #81 / 0.1.42). The README's model-choice rows point design, clone and default voice at 3.1-flash; the short-text note says input under 15 code points is rejected and the caller should lengthen it; the text-to-speech section names the removed ids.
  2. 72789c3 adds qwen-audio-3.1-tts-plus, Alibaba's quality tier. Both declarations come from one helper; the adapter applies the Qwen checks to both. The README keeps Flash as the default and uses Plus only when the user or an external policy selects it: Alibaba describes Flash as low latency and Plus as quality, but the SDK has not measured either, and the README has not asked agents to infer a ranking from model names since 0.1.x. Each declaration's description states its tier.
  3. d2c9128 review follow-up: the descriptions say what each tier is (Flash: default, Alibaba's low-latency tier; Plus: Alibaba's quality tier, only when the user or an external policy selects it), the README says its table names the default tier, and the Qwen request and input-length tests run over both ids.

Evidence

  • Before 72789c3's source change (tests only): 8 tests fail, e.g. rejects qwen-audio-3.1-tts-plus input below 15 Unicode code points, sends qwen-audio-3.1-tts-plus as given, parses published model declaration files.
    After, on d2c9128 in node:24-slim: typecheck passes, vitest 403 passed (19 files), biome check clean. Deliberate break: with plus removed from the adapter's Qwen set, 6 plus tests fail. Both model YAMLs are regenerated from the built-ins with stringifyBuiltinModelConfig. Live tests not run.
  • Added lines, file names and commit messages were scanned for internal names: clean.

Merge Danger

Door: two-way for the code; a published version stays.

Blast Radius: every caller of the three removed ids, once they upgrade to 0.2.0.

  • ^0.1.x ranges do not pick up 0.2.0, so nobody gets it without an explicit upgrade.
  • The adapter applies the Qwen checks only to the two 3.1 ids. A consumer that loads its own declaration under a removed id (for example a platform declaration named qwen-audio-3.0-tts-plus) must rename it before upgrading, or its speech requests fail validation.
  • Before publishing: the gateway must accept and route both qwen-audio-3.1-tts-flash and qwen-audio-3.1-tts-plus on the production channel, and the speech worker must pass plus through instead of rewriting it to flash.

Supersedes #55 (closed; that PR's scope -- adding qwen3-tts-vc-2026-01-22 -- was wrong: that model is also on the 2026-10-10 retirement list).

@LingXuanYin

Copy link
Copy Markdown
Collaborator Author

Updating scope: also dropping `qwen-audio-3.0-tts-plus` and moving `qwen-audio-3.0-tts-flash` to `qwen-audio-3.1-tts-flash`. Alibaba doesn't ship a 3.1 `-plus` tier, so plus has no replacement and is removed rather than left orphaned on 3.0. This SDK now exposes exactly one Qwen (non-CosyVoice) model, matching what `background`'s compat map already terminates every qwen-family target_model on.

`tsc --noEmit` clean, `vitest run` 207/207, `biome check --formatter-enabled=false` clean.

@LingXuanYin LingXuanYin changed the title feat!: retire qwen-tts, no replacement id feat!: collapse Qwen TTS to qwen-audio-3.1-tts-flash (drop qwen-tts, qwen-audio-3.0-tts-plus/flash) Sep 28, 2026
@LingXuanYin

Copy link
Copy Markdown
Collaborator Author

Do not publish before new-api's dramatiq adaptor accepts qwen-audio-3.1-tts-flash (it is in the channel model list, but the adaptor's model switch does not know it yet, so every call fails with 'not supported by this channel'). cohub also hardcodes the removed ids and needs updating on upgrade. Order: background #110 -> new-api -> router #208 / this PR.

@neta-zjj neta-zjj left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM (7e29d3b). tsc clean, vitest 207/207, biome check .(含 formatter)现已干净。

发布门槛: new-api 适配器支持 qwen-audio-3.1-tts-flash 之前不要合并/发布(见上方评论)。顺序:background #110 → new-api → router #208 / 本 PR。cohub 升级到 0.2.0 时需同步改硬编码的 qwen-tts / qwen-audio-3.0-* id。

Nit:PR 描述里 "confirmed present ... safe to publish" 和 "biome --formatter-enabled=false" 两句已过时,建议更新。

qwen-tts was retired upstream on 2026-10-10, and the speech service already runs every Qwen speech id as qwen-audio-3.1-tts-flash. The SDK now declares only that id: qwen-tts and qwen-audio-3.0-tts-plus are removed, qwen-audio-3.0-tts-flash becomes qwen-audio-3.1-tts-flash, and every request needs at least 15 Unicode code points. Version 0.2.0.

Rebased onto main after higgs-tts was removed there (0.1.42): the README's model-choice rows and the tests that used qwen-tts as sample data now use qwen-audio-3.1-tts-flash, the short-text note no longer points at higgs-tts, and the README says which ids this release removes.
The product adds Alibaba's quality tier of Qwen-Audio-TTS. qwen-audio-3.1-tts-plus has the same request shape as 3.1-flash (voice_prompt design or one-reference clone, at least 15 Unicode code points), so both declarations now come from one helper and the adapter applies the Qwen checks to both ids.

The README keeps Flash as the default and uses Plus only when the user or an external policy selects it. Alibaba describes Flash as low latency and Plus as quality, but the SDK has not measured either, and since 0.1.x the README has not asked agents to infer a ranking from model names. Each declaration's description says its tier, and both model YAMLs are regenerated from the built-ins.
@LingXuanYin LingXuanYin changed the title feat!: collapse Qwen TTS to qwen-audio-3.1-tts-flash (drop qwen-tts, qwen-audio-3.0-tts-plus/flash) feat!: move Qwen TTS to the 3.1 ids (flash, plus); drop qwen-tts and the 3.0 ids Oct 27, 2026
Review follow-up: the descriptions now say what each tier is (Flash: default, Alibaba's low-latency tier; Plus: Alibaba's quality tier, only when the user or an external policy selects it), the README says the table names the default tier and Plus may replace it in any row, the Qwen request and input-length tests run over both ids, and the description test asserts literal strings.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants