跳到主要内容

科大讯飞实时语音转写从注册到接入:一份可边实践边更新的教程

· 阅读需 14 分钟

这篇不是泛泛介绍 ASR,而是为了把一条很具体的实践路径跑通:第一次使用科大讯飞开放平台,从注册、创建应用、开通实时语音转写,到拿到密钥、跑 SDK/API demo,最后接到我们自己的网页实时字幕服务。

同主题前情
一句话结论

我们这条线先选 科大讯飞实时语音转写,优先试官方推荐的 实时语音转写大模型;如果开通或 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 / 小时

第一轮实践不建议直接买大套餐。更合理的是:

  1. 先领取个人 5 小时免费包,或企业 50 小时免费包;
  2. 用 10–20 秒音频跑通鉴权和音频格式;
  3. 再用 3–5 分钟真实口述测实时性和中文效果;
  4. 如果效果确认,再看 40 小时套餐是否足够下一阶段测试;
  5. 方言、语种、翻译、声纹/角色能力可能有单独授权或额外费用,不要默认包含在基础包里。

你先打开这些网页

第一次操作可以按下面顺序开网页,不需要先写代码。

步骤打开地址你要做什么
1https://www.xfyun.cn/注册或登录讯飞开放平台账号。
2https://console.xfyun.cn/进入控制台。后面创建应用、查看服务、拿密钥都在这里。
3https://www.xfyun.cn/services/rtasr打开“实时语音转写”产品页,看大模型和标准版、免费包、购买入口。
4https://console.xfyun.cn/services/new_rta进入“实时语音转写大模型”服务页,尝试领取免费包或开通服务。
5https://www.xfyun.cn/doc/spark/asr_llm/rtasr_llm.html看大模型版 API 文档,后端接入会按这个来。
6https://www.xfyun.cn/doc/asr/rtasr/API.html看标准版 API 文档,作为备选/对照。
7https://github.com/iFLYTEK-OP/websdk-pythonPython SDK 仓库,后续跑最小 demo 用。
8https://github.com/iFLYTEK-OP/websdk-python-demoPython SDK demo 仓库,里面有 rtasr_test.py

如果某个控制台页面要求登录、实名、企业认证或绑定手机号,正常按它要求操作即可;这里不需要把密码或验证码发给我。

从注册到可调用:人工操作流程

1. 注册 / 登录 / 实名

  1. 打开 https://www.xfyun.cn/。
  2. 右上角登录或注册。
  3. 进入 https://console.xfyun.cn/。
  4. 如果提示实名认证,按提示完成个人或企业认证。

这一步完成后,只需要告诉我:

已登录控制台 / 已完成实名 / 是否个人账号或企业账号

不要发送密码、短信验证码或完整个人证件信息。

2. 创建应用

在控制台里找“我的应用”或“创建应用”。建议先创建一个专门用于这次实时转写测试的应用,例如:

应用名称:realtime-asr-test
平台类型:WebAPI / 服务端调用
用途:实时语音转写测试

创建后你会看到类似这些材料:

AppID: [REDACTED]
APIKey: [REDACTED]
APISecret: [REDACTED] # 大模型/听写类服务可能需要

注意:**不要把真实值贴到博客、群聊、截图或前端代码里。**如果后续要我帮你部署 demo,我们再用安全方式把它放到服务器环境变量。

3. 开通实时语音转写大模型

打开:

https://console.xfyun.cn/services/new_rta

目标是确认三件事:

  1. 服务是否已经开通;
  2. 是否能领取个人/企业免费包;
  3. 控制台里是否能看到对应应用的 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 里说明:

  • 获取能力使用的 APPIDAPISecretAPIKey 后填写到 .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)

这一步的目的不是做最终产品,而是先验证:

  1. 账号服务已经开通;
  2. AppID/APIKey 能通过鉴权;
  3. 音频格式正确;
  4. 讯飞能返回识别结果;
  5. 错误码是否与权限、白名单、音频格式相关。

音频样本要求

标准版实时转写要求的是:

采样率: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

它不接触任何讯飞密钥。

实践分工:你点网页,我写代码

你先做

  1. 注册/登录:https://www.xfyun.cn/
  2. 进入控制台:https://console.xfyun.cn/
  3. 创建一个测试应用。
  4. 打开实时语音转写产品页:https://www.xfyun.cn/services/rtasr
  5. 优先进入大模型服务页:https://console.xfyun.cn/services/new_rta
  6. 领取免费包或完成服务开通。
  7. 确认控制台里能看到应用对应的 AppID/APIKey/APISecret。
  8. 不要把密钥发到群聊;只告诉我:
- 账号类型:个人/企业
- 实名是否完成:是/否
- 已创建应用:是/否
- 已开通服务:大模型/标准版/听写/未开通
- 是否领取免费包:是/否
- 控制台是否显示 AppID/APIKey/APISecret:是/否
- 是否开启了 IP 白名单:是/否

我来做

  1. 写一个最小 Python smoke 脚本,只读取环境变量,不写死密钥。
  2. 准备 16k/16bit/mono PCM 测试音频。
  3. 跑 SDK 或 WebSocket demo,记录错误码和返回样例。
  4. 如果 SDK 不顺,直接按官方 WebSocket 协议写最小客户端。
  5. 成功后写后端 relay。
  6. 接一个极简网页:开始录音、实时上屏、停止、保存 transcript。
  7. 最后再接 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.x10.x.x.x 或本机局域网地址。

坑 6:把免费包当无限额度

免费包只适合 smoke test。后续需要记录音频时长、并发、错误率和费用,避免长时间测试产生意外账单。

后续更新计划

这篇先作为 PR 版总教程。实践推进后,继续补:

  1. 控制台实际截图对应的步骤说明;
  2. Python SDK smoke test 命令与结果;
  3. WebSocket 直接调用最小客户端;
  4. 网页实时字幕 relay 架构;
  5. 真实 1 分钟中文口述测试结果;
  6. 与阿里云/火山引擎同音频 A/B 对比;
  7. 最终是否采用讯飞作为第一版 provider。

参考入口