Files
openless/docs/bailian-asr-models.md
T
8f49971874 feat(asr): support additional Bailian speech models (#866)
* 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>
2026-08-02 18:55:03 +08:00

2.5 KiB

Alibaba Bailian ASR models

OpenLess uses one Alibaba Bailian provider and selects the DashScope protocol from the model name. Configure the API key, region or workspace endpoint, and model in Settings > Providers.

Mode Model examples Behavior
Realtime WebSocket fun-asr-realtime, fun-asr-flash-8k-realtime, paraformer-realtime-v2, sensevoice-realtime-v1 Streams text while recording. OpenLess downsamples 16 kHz recorder audio for 8 kHz models.
Qwen realtime qwen3-asr-flash-realtime, versioned snapshots Streams text through the Qwen Realtime WebSocket API.
Synchronous recording fun-asr-flash-*, qwen3-asr-flash, qwen-audio-3.0-asr-flash Sends the recording after capture and waits for one synchronous response. These models are intended for short recordings (qwen-audio-*-streaming variants are not supported).
Asynchronous file transcription fun-asr, fun-asr-mtl, versioned snapshots, paraformer-v2 Uploads the recording, starts an asynchronous task, polls it, then downloads the transcript.

Future dated snapshots that retain one of these model prefixes are routed to the same protocol, so they can be entered manually before they are added to the model picker.

Endpoints

The default endpoint is dashscope.aliyuncs.com. A workspace or regional host may also be entered, for example https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com. OpenLess preserves the host and derives the protocol-specific path and scheme automatically.

API keys are region-specific. The endpoint and API key must belong to the same region.

Temporary uploads

Asynchronous models require a URL. OpenLess obtains a temporary upload policy from DashScope, uploads the local WAV to the returned OSS host, and submits the resulting oss:// URL with X-DashScope-OssResourceResolve: enable.

Alibaba documents this temporary storage as a development and low-concurrency facility. It is rate limited, and uploaded URLs expire after 48 hours. OpenLess uploads one file per completed recording; it does not retain or reuse the temporary URL.

For deployment or high-concurrency use, use stable Alibaba Cloud OSS storage and the official DashScope API directly.

References