feat(asr): 支持讯飞实时语音转写(RTASR)提供商(#842) (#894)

- 新增 asr/xfyun.rs RTASR 流式客户端:signa = Base64(HmacSHA1(MD5(appid+ts), apiKey))
  鉴权,1280B/40ms 分块发送,{"end": true} 收尾,seg_id 去重拼接,断连 partial 兜底,
  鉴权/限流/超时错误分类可读。
- 全链路接入:dictation 主流程、QA 面板、重新转录、取消、设置页凭据预检与
  "验证"探活;凭据 xfyun.app_id / xfyun.api_key 存系统凭据库,不落日志。
- 设置页新增「讯飞实时语音转写」选项(AppID + API Key),5 种语言 i18n。
- 文档:docs/xfyun-asr.md + README/README.zh/USAGE 同步。

已知限制:标准版 RTASR 无请求级热词参数(在讯飞控制台配置),语种默认中文普通话。
This commit is contained in:
Chris233 authored and GitHub committed 2026-08-03 21:37:10 +08:00
1 parent a3d014b687
commit 5be28b1dbd
23 files changed
+1269 -16

No files matched your search

+39
View File
@@ -0,0 +1,39 @@
# OpenLess 讯飞 ASR 配置
OpenLess 支持讯飞开放平台的**实时语音转写(RTASR,标准版)**,用于把录音实时转写成文字。
## 所需服务
- 服务:讯飞开放平台 **实时语音转写(标准版)**
- 接口文档:<https://www.xfyun.cn/doc/asr/rtasr/API.html>
> 说明:录音文件转写(IFASR)、实时语音转写大模型(202 方言 / 37 语种免切)目前
> **未接入**。若你有这些需求,欢迎在 issue #842 留言。
## 凭证获取
1. 登录讯飞开放平台:<https://www.xfyun.cn/>
2. 控制台 → 我的应用 → 创建应用,添加 **实时语音转写** 服务(需先在服务页领取免费额度或购买)。
3. 在服务管理页查看并复制 **AppID** 与 **API Key**。
4. 打开 OpenLess `Settings → Providers → ASR`,选择「讯飞实时语音转写」,填入 AppID 与 API Key。
## 音频约束
- 采样率 16 kHz、位深 16 bit、单声道 PCM(与 OpenLess 录音输出完全一致,无需转码)。
- 支持中文普通话、中英混合与英文;方言/小语种需在讯飞控制台开通后由 `lang` 参数指定,
首期 OpenLess 固定使用中文普通话(`lang=cn`)。
- IP 白名单:若在讯飞控制台开启了 IP 白名单,请把运行 OpenLess 机器的公网 IP 加入,
否则握手会返回 `10105 illegal access`。
## 已知限制
- 标准版 RTASR **没有请求参数级热词**:OpenLess 的词典热词不会传给讯飞,个性化热词
请在讯飞控制台上传。
- 实时出字由服务端驱动:OpenLess 的胶囊 UI 在收尾阶段一次性展示最终文本(与其它
流式 provider 行为一致)。
## 排障
- `10105` / `10110`:AppID / API Key 错误、IP 白名单未放行,或账号未开通实时语音转写服务。
- `10800`:超过授权连接数(并发路数已满)。
- `37005`:超过 15 秒未发送音频(弱网时偶发,可重试)。