Skip to content

feat(asr): 支持 Qwen-Audio-3.0-ASR-Flash 整段转写 - #876

Merged
appergb merged 1 commit into
Open-Less:betafrom
MurphyLo:feat/qwen-audio-asr-flash
Aug 2, 2026
Merged

feat(asr): 支持 Qwen-Audio-3.0-ASR-Flash 整段转写#876
appergb merged 1 commit into
Open-Less:betafrom
MurphyLo:feat/qwen-audio-asr-flash

Conversation

@MurphyLo

@MurphyLo MurphyLo commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

User description

摘要

为阿里云百炼 ASR 增加 qwen-audio-3.0-asr-flash 模型支持。

该模型复用现有 DashScope multimodal-generation/generation 录音文件转写实现。

参考文档:
https://help.aliyun.com/en/model-studio/non-realtime-speech-recognition-user-guide

新增

  • 在阿里云百炼模型列表中增加 qwen-audio-3.0-asr-flash
  • 增加该模型的路由和配置校验。
  • 增加对应的请求体、模型路由及白名单测试。

测试计划

  • INSTALL=0 ./scripts/build-mac.sh
  • macOS ARM64 release 构建成功并生成 DMG。
  • 在 OpenLess 中选择 qwen-audio-3.0-asr-flash,完成录音并确认转写结果正常插入。

PR Type

Enhancement, Tests


Description

  • Add qwen-audio-3.0-asr-flash to DashScope batch ASR

  • Unify routing, validation, and provider model lists

  • Update frontend recorded-file detection for new model

  • Extend tests for routing, validation, and request body


Diagram Walkthrough

flowchart LR
  A["Bailian model selected"] --> B{"Is qwen-audio-3.0-asr-flash or fun-asr-flash?"}
  B -- "Yes" --> C["DashScope multimodal ASR client"]
  B -- "No" --> D["Other Bailian protocol"]
  C --> E["Recorded-file batch transcription"]
Loading

File Walkthrough

Relevant files
Enhancement
dashscope_multimodal.rs
Add qwen-audio model constant and validation                         

openless-all/app/src-tauri/src/asr/dashscope_multimodal.rs

  • Add QWEN_AUDIO_MODEL constant for the new model
  • Introduce is_supported_model helper for both models
  • Extend body-shape tests to cover the new model
+23/-12 
providers.rs
Expose qwen-audio model in provider model lists                   

openless-all/app/src-tauri/src/commands/providers.rs

  • Add new model to the Bailian provider model list
  • Add new model to DashScope multimodal static aliases
  • Update connectivity sample comment to cover both models
+7/-2     
coordinator.rs
Route and validate qwen-audio multimodal ASR model             

openless-all/app/src-tauri/src/coordinator.rs

  • Route qwen-audio-3.0-asr-flash to multimodal provider
  • Use is_supported_model in routing and validation
  • Update error messages with new supported models
  • Add routing and validation tests
+22/-5   
ProvidersSection.tsx
Recognize qwen-audio model as recorded-file ASR                   

openless-all/app/src/pages/settings/ProvidersSection.tsx

  • Recognize new model as recorded-file ASR in UI
  • Add comment that vocabulary field is not yet wired
+4/-2     

@github-actions

Copy link
Copy Markdown
Contributor

PR Reviewer Guide 🔍

Here are some key observations to aid the review process:

⏱️ Estimated effort to review: 2 🔵🔵⚪⚪⚪
🧪 PR contains tests
🔒 No security concerns identified
⚡ No major issues detected

@appergb appergb 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.

已审查 Qwen-Audio 3.0 ASR 路由、模型校验、请求体与响应解析;阿里云官方文档确认该模型复用现有同步 multimodal-generation 协议。已在最新 beta 上与 #874/#875 联合验证:819 个 Rust 测试、26 个前端/契约测试及生产构建通过。

@appergb
appergb merged commit 10ff058 into Open-Less:beta Aug 2, 2026
1 check passed
H-Chris233 added a commit to LauraGPT/openless that referenced this pull request Aug 2, 2026
Resolve conflicts with Open-Less#876 (qwen-audio-3.0-asr-flash batch support):
- route qwen-audio-3.0-asr-flash through protocol_for_model as
  DashScopeBatchProtocol::Multimodal (streaming variants stay rejected)
- drop is_supported_model in favor of protocol_for_model everywhere
- keep PR's async transcription / polling / 8k downsample changes intact
H-Chris233 added a commit to LauraGPT/openless that referenced this pull request Aug 2, 2026
…-Less#866)

Merge with beta Open-Less#876 brought qwen-audio-3.0-asr-flash into the model
picker and protocol routing; keep the model reference doc in sync and
note that -streaming variants are not supported.
H-Chris233 added a commit that referenced this pull request Aug 2, 2026
* feat(asr): support more Bailian speech models

* test(asr): cover final 8k downsample phase

* fix(asr): address review findings on Bailian model routing (#866)

- route paraformer-8k-realtime / sensevoice-8k-realtime to classic WebSocket,
  matching the 8k downsample naming space in bailian.rs
- downsample 16k->8k with pairwise averaging (first-order low-pass) instead of
  pure decimation to reduce aliasing; drop the lone tail sample on flush
- cap async provider validation at 120s (60s poll) instead of 660s so the
  validate button cannot block for nearly 11 minutes
- join async transcript segments with a space so latin-script words do not
  get glued together

* fix(asr): drop qwen3-asr-flash-filetrans and harden async polling (#866)

- qwen3-asr-flash-filetrans only accepts public URLs per DashScope docs; it
  is incompatible with the local-recording temporary OSS + oss:// path, so
  reject it in protocol_for_model / routing / picker / docs instead of
  shipping a model that would silently fail on real recordings
- simplify async_transcription_body / extract_async_result_url to the
  single fun-asr results shape
- add bounded retry (exponential backoff, deadline-capped) to async task
  polling and result download so one transient network blip does not
  discard an entire recording

* docs(asr): list qwen-audio-3.0-asr-flash as a synchronous model (#866)

Merge with beta #876 brought qwen-audio-3.0-asr-flash into the model
picker and protocol routing; keep the model reference doc in sync and
note that -streaming variants are not supported.

---------

Co-authored-by: LauraGPT <lauragpt@users.noreply.github.com>
Co-authored-by: Chris233 <h-chris233@outlook.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants