科大讯飞实时语音转写从注册到接入:一份可边实践边更新的教程
这篇不是泛泛介绍 ASR,而是为了把一条很具体的实践路径跑通:第一次使用科大讯飞开放平台,从注册、创建应用、开通实时语音转写,到拿到密钥、跑 SDK/API demo,最后接到我们自己的网页实时字幕服务。
- 实时语音转录怎么接:讯飞、阿里云、火山引擎、腾讯云四条路线:先把国内四家实时 ASR 的 API 形态、服务器分工和 A/B 测试方式拆开。
- 网页录音到 AI 纪要:先选成熟 ASR,再看现成产品:解释为什么我们要把“实时 ASR”和“AI 纪要”分成两层。
我们这条线先选 科大讯飞实时语音转写,优先试官方推荐的 实时语音转写大模型;如果开通或 SDK 路径不顺,再退回 实时语音转写标准版。短语音输入才看 语音听写(流式版),它不是会议长转写主线。
快照时间为 2026-08-10 CST。本文先提 PR,作为实践手册的第一版;后续注册、开通、SDK smoke test、网页 relay、真实口述测试都会继续在同一个 PR 或后续更新里补记录。本文不会保存或展示任何真实 AppID、APIKey、APISecret、Token、密码或代理信息。
先分清三个容易混淆的产品
科大讯飞这里名字比较接近,第一次看很容易混:
| 产品 | 适合什么 | 这次是否主线 | 入口 |
|---|---|---|---|
| 实时语音转写大模型 | 长时间连续音频流,实时返回文字;官方文档说基于星火大模型预训练框架,服务核心是把不限时长语音识别为文字 | 主线优先 | 产品页 / API 文档 / 控制台服务页 |
| 实时语音转写标准版 | 长时间连续音频流,WebSocket 长连接,16k/16bit/mono PCM,建议每 40ms 发送 1280 字节 | 主线备选/对照 | 产品页 / API 文档 |
| 语音听写(流式版) | 1 分钟内即时语音转文字,适合语音输入、短指令、搜索框 | 不是会议主线 | 产品页 / API 文档 / 控制台服务页 |
所以这次实践的判断很简单:
会议 / 长口述 / 实时字幕
-> 实时语音转写大模型
-> 不顺则实时语音转写标准版
短语音输入 / 60 秒以内 dictation
-> 语音听写(流式版)
费用先怎么看
科大讯飞这条不是按 LLM token 算,而是按语音服务自己的免费包、时长套餐、方言/语种授权来算。价格会变,最后以控制台购买页为准;下面只是 2026-08-10 从实时语音转写产品页抓到的大模型套餐快照。
| 套餐 | 服务量 | 有效期 | 页面价格 | 折算单价 |
|---|---|---|---|---|
| 免费包(个人) | 5 小时 | 1 年 | 免费 | 免费 |
| 免费包(企业) | 50 小时 | 1 年 | 免费 | 免费 |
| 套餐一 | 40 小时 | 1 年 | ¥198 | ¥4.95 / 小时 |
| 套餐二 | 1000 小时 | 1 年 | ¥4000 | ¥4.00 / 小时 |
| 套餐三 | 5000 小时 | 1 年 | ¥17500 | ¥3.50 / 小时 |
| 套餐四 | 20000 小时 | 1 年 | ¥60000 | ¥3.00 / 小时 |
| 套餐五 | 100000 小时 | 1 年 | ¥240000 | ¥2.40 / 小时 |
| 套餐六 | 300000 小时 | 1 年 | ¥600000 | ¥2.00 / 小时 |
第一轮实践不建议直接买大套餐。更合理的是:
- 先领取个人 5 小时免费包,或企业 50 小时免费包;
- 用 10–20 秒音频跑通鉴权和音频格式;
- 再用 3–5 分钟真实口述测实时性和中文效果;
- 如果效果确认,再看 40 小时套餐是否足够下一阶段测试;
- 方言、语种、翻译、声纹/角色能力可能有单独授权或额外费用,不要默认包含在基础包里。
你先打开这些网页
第一次操作可以按下面顺序开网页,不需要先写代码。
| 步骤 | 打开地址 | 你要做什么 |
|---|---|---|
| 1 | https://www.xfyun.cn/ | 注册或登录讯飞开放平台账号。 |
| 2 | https://console.xfyun.cn/ | 进入控制台。后面创建应用、查看服务、拿密钥都在这里。 |
| 3 | https://www.xfyun.cn/services/rtasr | 打开“实时语音转写”产品页,看大模型和标准版、免费包、购买入口。 |
| 4 | https://console.xfyun.cn/services/new_rta | 进入“实时语音转写大模型”服务页,尝试领取免费包或开通服务。 |
| 5 | https://www.xfyun.cn/doc/spark/asr_llm/rtasr_llm.html | 看大模型版 API 文档,后端接入会按这个来。 |
| 6 | https://www.xfyun.cn/doc/asr/rtasr/API.html | 看标准版 API 文档,作为备选/对照。 |
| 7 | https://github.com/iFLYTEK-OP/websdk-python | Python SDK 仓库,后续跑最小 demo 用。 |
| 8 | https://github.com/iFLYTEK-OP/websdk-python-demo | Python SDK demo 仓库,里面有 rtasr_test.py。 |
如果某个控制台页面要求登录、实名、企业认证或绑定手机号,正常按它要求操作即可;这里不需要把密码或验证码发给我。
从注册到可调用:人工操作流程
1. 注册 / 登录 / 实名
- 打开 https://www.xfyun.cn/。
- 右上角登录或注册。
- 进入 https://console.xfyun.cn/。
- 如果提示实名认证,按提示完成个人或企业认证。
这一步完成后,只需要告诉我:
已登录控制台 / 已完成实名 / 是否个人账号或企业账号
不要发送密码、短信验证码或完整个人证件信息。
2. 创建应用
在控制台里找“我的应用”或“创建应用”。建议先创建一个专门用于这次实时转写测试的应用,例如:
应用名称:realtime-asr-test
平台类型:WebAPI / 服务端调用
用途:实时语音转写测试
创建后你会看到类似这些材料:
AppID: [REDACTED]
APIKey: [REDACTED]
APISecret: [REDACTED] # 大模型/听写类服务可能需要
注意:**不要把真实值贴到博客、群聊、截图或前端代码里。**如果后续要我帮你部署 demo,我们再用安全方式把它放到服务器环境变量。
3. 开通实时语音转写大模型
打开:
https://console.xfyun.cn/services/new_rta
目标是确认三件事:
- 服务是否已经开通;
- 是否能领取个人/企业免费包;
- 控制台里是否能看到对应应用的 AppID/APIKey/APISecret 或服务授权状态。
如果这个页面没有权限,回到产品页:
https://www.xfyun.cn/services/rtasr
产品页目前同时展示“实时语音转写大模型”和“实时语音转写标准版”,并提供免费包、购买和 SDK 文档入口。
4. 如大模型不顺,再开通标准版
标准版文档入口:
https://www.xfyun.cn/doc/asr/rtasr/API.html
标准版的关键点:
WebSocket: wss://rtasr.xfyun.cn/v1/ws?...
音频: 16k / 16bit / 单声道 / PCM
发包: 建议每 40ms 发送 1280 字节
鉴权: appid + ts + signa
signa: HmacSHA1(MD5(appid + ts), api_key) 后 Base64
标准版只需要 appid + apiKey 就能生成 signa。大模型版文档则写到 AppID、APIKey、APISecret,并使用另一套 signature 参数。
5. 先不要把 IP 白名单打开得太死
讯飞文档提到可以在控制台配置 IP 白名单。测试阶段建议:
- 如果默认关闭白名单,先保持默认;
- 如果必须打开白名单,要填 公网出口 IP,不是局域网 IP;
- 真正上线后再把白名单收紧到服务端公网出口。
我们后续如果部署在 recall.cube,但公网出口可能经过边缘/代理链路,需要实际测到出口 IP 后再填。
SDK 路径:先跑 Python demo
官方 Python SDK 仓库:
https://github.com/iFLYTEK-OP/websdk-python
语音 SDK 包名是:
pip install xfyunsdkspeech
官方 demo 仓库:
https://github.com/iFLYTEK-OP/websdk-python-demo
demo README 里说明:
- 获取能力使用的
APPID、APISecret、APIKey后填写到.env; - 实时语音转写对应主类是
xfyunsdkdemo/speech/rtasr_test.py; - 语音听写对应
xfyunsdkdemo/speech/iat_test.py。
本地最小验证思路
我们不把真实密钥写进命令或 Git 仓库。实际应该类似这样:
python3 -m venv .venv
. .venv/bin/activate
pip install xfyunsdkspeech python-dotenv
然后准备一个本地 .env,只放在测试目录,不提交:
APP_ID=[REDACTED]
API_KEY=[REDACTED]
API_SECRET=[REDACTED]
对于标准版 RtasrClient,SDK README 里示例形态是:
import os
from xfyunsdkspeech.rtasr_client import RtasrClient
client = RtasrClient(
app_id=os.getenv("APP_ID"),
api_key=os.getenv("API_KEY"),
)
with open("sample-16k-16bit-mono.pcm", "rb") as f:
for chunk in client.stream(f):
print(chunk)
这一步的目的不是做最终产品,而是先验证:
- 账号服务已经开通;
- AppID/APIKey 能通过鉴权;
- 音频格式正确;
- 讯飞能返回识别结果;
- 错误码是否与权限、白名单、音频格式相关。
音频样本要求
标准版实时转写要求的是:
采样率:16k
位深:16bit
声道:单声道
格式:pcm_s16le / raw pcm
如果手上是 wav/mp3/m4a,需要先转成 PCM。后续实践时可以用 ffmpeg:
ffmpeg -i input.wav -ac 1 -ar 16000 -f s16le sample-16k-16bit-mono.pcm
如果没有本地音频,我们也可以录一段 10–20 秒中文口述作为 smoke test。
API 路径:后端直接接 WebSocket
SDK 适合第一步验证账号和密钥。真正做网页实时字幕时,我更建议后端直接接 WebSocket,因为要处理:
- 浏览器音频格式转换;
- 密钥保护;
- session 管理;
- partial/final 统一事件;
- 重连、错误码、用量统计;
- 后续切换阿里云/火山/腾讯云 provider。
大模型版 WebSocket 形态
大模型版 API 文档给出的请求地址是:
wss://office-api-ast-dx.iflyaisol.com/ast/communicate/v1?{请求参数}
关键点:
鉴权参数:AppID / APIKey / APISecret 派生 signature
音频: 16k / 16bit / 单声道
发送: 建议每 40ms 发送 1280 字节
超时: 音频发送间隔超过 15 秒会被服务端断开
标准版 WebSocket 形态
标准版请求地址是:
wss://rtasr.xfyun.cn/v1/ws?appid=...&ts=...&signa=...
签名逻辑可以理解成:
baseString = MD5(appid + ts)
signa = Base64(HmacSHA1(baseString, apiKey))
注意:这里的 apiKey 是接口密钥,不能放到浏览器里。
我们自己的产品架构
最终我们不应该让浏览器直接连讯飞。应该是:
浏览器麦克风
-> 我们自己的 WebSocket:wss://realtime-asr.public.wzhecnu.cn/ws
-> 后端读取环境变量里的讯飞密钥
-> 后端连接讯飞 WebSocket
-> 讯飞返回识别结果
-> 后端统一成 transcript.partial / transcript.final
-> 浏览器实时显示字幕
后端环境变量形态大概是:
ASR_PROVIDER=iflytek
IFLYTEK_APP_ID=[REDACTED]
IFLYTEK_API_KEY=[REDACTED]
IFLYTEK_API_SECRET=[REDACTED]
IFLYTEK_PRODUCT=rtasr_llm
前端只知道:
POST /api/asr/session
WebSocket /api/asr/session/{id}/stream
它不接触任何讯飞密钥。
实践分工:你点网页,我写代码
你先做
- 注册/登录:https://www.xfyun.cn/
- 进入控制台:https://console.xfyun.cn/
- 创建一个测试应用。
- 打开实时语音转写产品页:https://www.xfyun.cn/services/rtasr
- 优先进入大模型服务页:https://console.xfyun.cn/services/new_rta
- 领取免费包或完成服务开通。
- 确认控制台里能看到应用对应的 AppID/APIKey/APISecret。
- 不要把密钥发到群聊;只告诉我:
- 账号类型:个人/企业
- 实名是否完成:是/否
- 已创建应用:是/否
- 已开通服务:大模型/标准版/听写/未开通
- 是否领取免费包:是/否
- 控制台是否显示 AppID/APIKey/APISecret:是/否
- 是否开启了 IP 白名单:是/否
我来做
- 写一个最小 Python smoke 脚本,只读取环境变量,不写死密钥。
- 准备 16k/16bit/mono PCM 测试音频。
- 跑 SDK 或 WebSocket demo,记录错误码和返回样例。
- 如果 SDK 不顺,直接按官方 WebSocket 协议写最小客户端。
- 成功后写后端 relay。
- 接一个极简网页:开始录音、实时上屏、停止、保存 transcript。
- 最后再接 AI 纪要,不和 ASR 第一阶段混在一起。
第一轮验收标准
第一轮不要追求完整产品,只要证明“讯飞这条线能跑通”:
| 验收项 | 通过标准 |
|---|---|
| 服务开通 | 控制台显示实时语音转写服务可用 |
| 鉴权 | SDK/API 不再返回无权限、签名错误、白名单错误 |
| 音频格式 | 10–20 秒中文 PCM 能被识别 |
| 实时性 | 发送音频期间持续返回结果,而不是结束后一次性返回 |
| 中文效果 | 能识别普通话口述、项目名、少量中英混杂 |
| 错误记录 | 所有错误码都能对应到权限、签名、白名单、格式或超时 |
常见坑
坑 1:选错产品
如果做会议/直播/长口述,别先选语音听写。语音听写流式版文档写的是 1 分钟内即时语音转文字,最长 60 秒;会议长转写应该看实时语音转写。
坑 2:浏览器直接放密钥
不要把 AppID/APIKey/APISecret 放进前端 JS。即使能跑,也等于公开密钥。
坑 3:音频格式不对
浏览器常见拿到的是 WebM/Opus 或 Float32 PCM,不一定是讯飞要的 16k/16bit/mono PCM。我们要在浏览器端或后端做转换。
坑 4:发包太快或太慢
标准版和大模型版文档都强调建议每 40ms 发送 1280 字节;发送过快可能出错,超过 15 秒不发音频服务端会断开。
坑 5:IP 白名单填了内网 IP
如果打开白名单,要填服务端公网出口 IP,不是 192.168.x.x、10.x.x.x 或本机局域网地址。
坑 6:把免费包当无限额度
免费包只适合 smoke test。后续需要记录音频时长、并发、错误率和费用,避免长时间测试产生意外账单。
后续更新计划
这篇先作为 PR 版总教程。实践推进后,继续补:
- 控制台实际截图对应的步骤说明;
- Python SDK smoke test 命令与结果;
- WebSocket 直接调用最小客户端;
- 网页实时字幕 relay 架构;
- 真实 1 分钟中文口述测试结果;
- 与阿里云/火山引擎同音频 A/B 对比;
- 最终是否采用讯飞作为第一版 provider。
参考入口
- 科大讯飞开放平台:https://www.xfyun.cn/
- 科大讯飞控制台:https://console.xfyun.cn/
- 实时语音转写产品页:https://www.xfyun.cn/services/rtasr
- 实时语音转写大模型 API:https://www.xfyun.cn/doc/spark/asr_llm/rtasr_llm.html
- 实时语音转写标准版 API:https://www.xfyun.cn/doc/asr/rtasr/API.html
- 语音听写产品页:https://www.xfyun.cn/services/voicedictation
- 语音听写流式版 API:https://www.xfyun.cn/doc/asr/voicedictation/API.html
- Python SDK:https://github.com/iFLYTEK-OP/websdk-python
- Python SDK demo:https://github.com/iFLYTEK-OP/websdk-python-demo
- Java SDK:https://github.com/iFLYTEK-OP/websdk-java