feat!: collapse Qwen TTS to qwen-audio-3.1-tts-flash (drop qwen-tts, qwen-audio-3.0-tts-plus/flash) - #56
feat!: collapse Qwen TTS to qwen-audio-3.1-tts-flash (drop qwen-tts, qwen-audio-3.0-tts-plus/flash)#56LingXuanYin wants to merge 6 commits into
Conversation
Alibaba retires qwen-tts on 2026-10-10 (https://www.alibabacloud.com/en/notice/model_studio_notice_of_retirement_for_selected_legacy_models_7d9). Pure removal: qwen-audio-3.0-tts-plus/flash already cover the same design+clone shape and are not retiring, so nothing new is added in its place. The actual DashScope-side compatibility mapping (qwen-family target models collapsing onto qwen-audio-3.1-tts-flash) lives in background's qwen_tts_actor.py, not in this SDK -- callers still bypassing the SDK with the old wire model name are covered there regardless.
…-flash Owner decision 2026-09-28: collapse the SDK's Qwen offering down to the one model background's compat map actually terminates on. There is no qwen-audio-3.1-tts-plus (Alibaba only ships a flash tier at 3.1), so plus has no replacement and is removed outright rather than staying on 3.0 as a orphaned tier.
|
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. |
…ains Review findings (Linus-persona pass on this PR): - QWEN_MODELS was a one-element Set; the length check inside validateQwen re-checked membership in a set it could only be called from, making the condition a tautology. Collapsed to a single QWEN_MODEL string constant and dropped the redundant check. - qwenTtsModel(...) was a factory built for 2-3 Qwen tiers with only one caller left; inlined to a literal declaration object matching the neighboring higgs-tts entry's style. Re-exported YAML is byte-identical to the prior factory output (verified via CLI export diff). - README's "no declared Qwen quality/cost ranking" bullet only made sense when there were multiple tiers to rank; replaced with the actual capability loss this migration introduces (no voice-design path for sub-15-code-point text now that qwen-tts is gone). - Documented the cross-repo constraint inline: background's qwen_tts_actor collapses every qwen*-branded target_model onto this one id, so adding another Qwen tier here requires changing that rule first.
Two feat! commits landed on this branch (drop qwen-tts/qwen-audio-3.0-tts-plus, rename flash to qwen-audio-3.1-tts-flash) -- minor bump per this package's pre-1.0 convention for breaking changes.
|
Do not publish before new-api's dramatiq adaptor accepts |
neta-zjj
left a comment
There was a problem hiding this comment.
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" 两句已过时,建议更新。
Alibaba retires
qwen-ttson 2026-10-10: https://www.alibabacloud.com/en/notice/model_studio_notice_of_retirement_for_selected_legacy_models_7d9Migration table
qwen-ttsqwen-audio-3.0-tts-plus/flashalready covered the same design+clone shape.qwen-audio-3.0-tts-plusqwen-audio-3.1-tts-flashqwen-audio-3.1-tts-plustier exists at DashScope; collapsed onto the one surviving Qwen (non-CosyVoice) model.qwen-audio-3.0-tts-flashqwen-audio-3.1-tts-flashReal capability loss, not an SDK-invented restriction:
qwen-ttswas the only Qwen model with no minimum text length for voice-design mode. Every remaining model enforces >=15 Unicode code points (also enforced independently inbackground'sqwen_tts_actor.py:186,_MIN_PREVIEW_TEXT_LEN = 15). Callers doing short-text voice design have no Qwen fallback now -- usehiggs-ttswith a default/reference voice, or lengthen the text. README's Qwen section documents this.Why the rename to 3.1 and not just deleting plus:
background'sqwen_tts_actor.pyindependently collapses everyqwen-branded (non-CosyVoice)target_modelit receives ontoqwen-audio-3.1-tts-flash, so this SDK's declared id now matches what actually executes on the wire instead of silently diverging from it. This requires anew-apichannel that recognizesqwen-audio-3.1-tts-flashby name -- confirmed present (verified live againsthttps://new-api.talesofai.com/v1/models, 2026-09-28) before this PR is safe to publish. Release order: new-api channel config → background deploy → publish this package.Cleanup (review-driven)
QWEN_MODELSwas a one-elementSet; the 15-code-point check insidevalidateQwenre-checked membership in a set it could only be called from (tautology). Collapsed to a singleQWEN_MODELstring constant, dropped the dead check.qwenTtsModel(...)was a factory for 2-3 Qwen tiers with one caller left; inlined to a literal object matching the neighboringhiggs-ttsentry. Re-exported YAML is byte-identical to the prior factory output.background's collapsing rule first).feat!commits on this branch).Verification
tsc --noEmitclean,vitest run207/207,biome check --formatter-enabled=falseclean (all independently re-run after every commit, not just reported).Supersedes #55 (closed; that PR's scope -- adding
qwen3-tts-vc-2026-01-22-- was wrong: that model is also on Alibaba's 2026-10-10 retirement list).