* 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>