背景
OpenLess 的「阿里云百炼」ASR 入口在 UI 上合并为单一 provider(bailian),但后端对模型名做了硬编码白名单,导致百炼控制台/API 文档中大量可用模型无法在软件里使用。
百炼平台本身并不限制只能使用软件下拉列表中的那几个模型;限制来自 OpenLess 的协议路由与校验逻辑。
现状
1. 模型路由白名单(桌面端)
resolve_effective_asr_provider 仅允许以下模型模式,其余直接报错:
fun-asr-realtime* / paraformer-realtime* / sensevoice-realtime* → 经典 WebSocket(bailian.rs)
qwen3-asr-flash-realtime* → Qwen Realtime WebSocket(qwen_realtime.rs)
fun-asr-flash-2026-06-15(精确匹配)→ HTTP 录音文件(dashscope_multimodal.rs)
不支持时会返回类似:
不支持的百炼 ASR 模型:{model}。支持 fun-asr-realtime、paraformer-realtime、sensevoice-realtime、qwen3-asr-flash-realtime 和 fun-asr-flash-2026-06-15
相关代码:openless-all/app/src-tauri/src/coordinator.rs(resolve_effective_asr_provider、validate_dashscope_multimodal_model)
2. 「拉取模型」为静态列表
百炼 ASR 无 /v1/models 类接口,list_provider_models 返回固定 5 项快捷模型,容易让用户误以为百炼只有这些模型可选。
相关代码:openless-all/app/src-tauri/src/commands/providers.rs
3. 移动端更窄
Android/iOS 统一百炼入口不做模型路由,固定走经典 fun-asr-realtime WebSocket。
相关代码:coordinator.rs 中 cfg!(mobile) 分支
百炼已有、但 OpenLess 未支持的典型模型
| 模型 |
官方能力 |
OpenLess 现状 |
fun-asr / fun-asr-mtl |
异步录音文件识别(≤12h,热词、说话人分离) |
❌ 未接 |
qwen3-asr-flash |
非实时同步(≤5min,情感识别) |
❌ 未接 |
qwen3-asr-flash-filetrans |
异步文件转写(≤12h) |
❌ 未接 |
fun-asr-flash-8k-realtime |
8kHz 实时(更低价) |
❌ 明确拒绝 |
同系列快照版(如 fun-asr-realtime-2025-11-07) |
与稳定版同协议 |
⚠️ 可手填前缀匹配,但不在下拉中 |
参考:百炼语音识别模型列表、模型价格
诉求
解除(或显著放宽)百炼 ASR 的模型白名单限制,让用户能使用百炼官方文档中的更多模型,而不仅限于当前 3 条协议 + 5 个快捷项。
建议实现方向
A. 短期(降低误拒)
- 扩展路由规则:按官方文档的「模式 + API」映射自动选择客户端,而非精确枚举:
fun-asr* / fun-asr-mtl*(非 *-realtime*)→ 异步 HTTP 文件转写客户端(新模块)
qwen3-asr-flash(非 realtime/filetrans)→ 同步 multimodal-generation 客户端(可复用/泛化 dashscope_multimodal.rs)
qwen3-asr-flash-filetrans* → 异步 transcription 客户端(新模块)
fun-asr-flash-8k-realtime* → 经典 WebSocket(参数 sample_rate=8000)
- 放宽
fun-asr-flash-* 校验:fun-asr-flash-2026-06-15 改为前缀 fun-asr-flash- 匹配(同系列快照版一并支持)
- 静态模型列表扩充:下拉加入官方在案的主要稳定版 + 常用快照版,并注明「可手填其他已支持前缀的模型 ID」
B. 中期(体验)
- 验证逻辑按协议分发:
validate_asr_provider 根据解析后的 effective provider 走对应连通性检查(目前已有部分逻辑,需与路由一致)
- 移动端对齐桌面路由:mobile 也按模型名选择协议,而非一律
fun-asr-realtime
- 文档:在设置页或
docs/ 说明百炼模型族、协议差异、弱网场景推荐(如 fun-asr-flash-* 非实时更稳)
验收标准
相关文件
openless-all/app/src-tauri/src/coordinator.rs
openless-all/app/src-tauri/src/commands/providers.rs
openless-all/app/src-tauri/src/asr/bailian.rs
openless-all/app/src-tauri/src/asr/qwen_realtime.rs
openless-all/app/src-tauri/src/asr/dashscope_multimodal.rs
openless-all/app/src/pages/settings/ProvidersSection.tsx
动机(用户场景)
- 弱网下希望用更便宜的非实时模型(如
fun-asr-flash-*,0.00022 元/秒)而非强制实时流式
- 希望使用百炼控制台已开通的模型(如
fun-asr 异步、qwen3-asr-flash-filetrans),不必等软件逐个硬编码
- 下拉列表不应被误解为百炼平台的完整模型清单
背景
OpenLess 的「阿里云百炼」ASR 入口在 UI 上合并为单一 provider(
bailian),但后端对模型名做了硬编码白名单,导致百炼控制台/API 文档中大量可用模型无法在软件里使用。百炼平台本身并不限制只能使用软件下拉列表中的那几个模型;限制来自 OpenLess 的协议路由与校验逻辑。
现状
1. 模型路由白名单(桌面端)
resolve_effective_asr_provider仅允许以下模型模式,其余直接报错:fun-asr-realtime*/paraformer-realtime*/sensevoice-realtime*→ 经典 WebSocket(bailian.rs)qwen3-asr-flash-realtime*→ Qwen Realtime WebSocket(qwen_realtime.rs)fun-asr-flash-2026-06-15(精确匹配)→ HTTP 录音文件(dashscope_multimodal.rs)不支持时会返回类似:
相关代码:
openless-all/app/src-tauri/src/coordinator.rs(resolve_effective_asr_provider、validate_dashscope_multimodal_model)2. 「拉取模型」为静态列表
百炼 ASR 无
/v1/models类接口,list_provider_models返回固定 5 项快捷模型,容易让用户误以为百炼只有这些模型可选。相关代码:
openless-all/app/src-tauri/src/commands/providers.rs3. 移动端更窄
Android/iOS 统一百炼入口不做模型路由,固定走经典
fun-asr-realtimeWebSocket。相关代码:
coordinator.rs中cfg!(mobile)分支百炼已有、但 OpenLess 未支持的典型模型
fun-asr/fun-asr-mtlqwen3-asr-flashqwen3-asr-flash-filetransfun-asr-flash-8k-realtimefun-asr-realtime-2025-11-07)参考:百炼语音识别模型列表、模型价格
诉求
解除(或显著放宽)百炼 ASR 的模型白名单限制,让用户能使用百炼官方文档中的更多模型,而不仅限于当前 3 条协议 + 5 个快捷项。
建议实现方向
A. 短期(降低误拒)
fun-asr*/fun-asr-mtl*(非*-realtime*)→ 异步 HTTP 文件转写客户端(新模块)qwen3-asr-flash(非 realtime/filetrans)→ 同步 multimodal-generation 客户端(可复用/泛化dashscope_multimodal.rs)qwen3-asr-flash-filetrans*→ 异步 transcription 客户端(新模块)fun-asr-flash-8k-realtime*→ 经典 WebSocket(参数 sample_rate=8000)fun-asr-flash-*校验:fun-asr-flash-2026-06-15改为前缀fun-asr-flash-匹配(同系列快照版一并支持)B. 中期(体验)
validate_asr_provider根据解析后的 effective provider 走对应连通性检查(目前已有部分逻辑,需与路由一致)fun-asr-realtimedocs/说明百炼模型族、协议差异、弱网场景推荐(如fun-asr-flash-*非实时更稳)验收标准
fun-asr、qwen3-asr-flash、qwen3-asr-flash-filetrans等官方模型时,不再被resolve_effective_asr_provider直接拒绝fun-asr-realtime、qwen3-asr-flash-realtime*、fun-asr-flash-2026-06-15)行为不回归相关文件
openless-all/app/src-tauri/src/coordinator.rsopenless-all/app/src-tauri/src/commands/providers.rsopenless-all/app/src-tauri/src/asr/bailian.rsopenless-all/app/src-tauri/src/asr/qwen_realtime.rsopenless-all/app/src-tauri/src/asr/dashscope_multimodal.rsopenless-all/app/src/pages/settings/ProvidersSection.tsx动机(用户场景)
fun-asr-flash-*,0.00022 元/秒)而非强制实时流式fun-asr异步、qwen3-asr-flash-filetrans),不必等软件逐个硬编码