1. 首先准备 Python3.7 运行环境,安装代码指定版本的第三方依赖库;接着在讯飞开放平台获取 APPID、APIKey、APISecret 密钥,并准备好待识别的音频文件;
  2. 然后通过密钥完成鉴权加密,生成 WebSocket 连接 URL;
  3. 之后创建 WebSocket 客户端并与服务端建立连接,连接成功后将音频文件按固定帧大小分帧,以第一帧、中间帧、最后一帧的格式流式发送音频数据;
  4. 最后接收并解析服务端返回的识别结果,提取并输出文字内容,识别完成后自动关闭连接。

过程中可参考官方错误码排查问题,也可在平台配置热词、语种方言。

5.1.4 接口要求

这里主要讲了 API 接口要求,包括:

  • 基础协议与调用地址:
    • 请求协议:支持 ws(WebSocket)/wss(加密 WebSocket),强烈推荐使用 wss 以提升安全性
    • 请求地址:ws[s]://iat.xf-yun.com/v1(中英文语音识别专属接口)
  • 通用规范与鉴权要求:
    • 接口鉴权:采用签名认证机制,需按照官方规则生成鉴权信息后才可调用
    • 字符编码:统一使用 UTF-8 编码
    • 响应格式:服务端返回结果统一为 JSON 格式
    • 开发语言:无限制,只要可向讯飞云服务发起 HTTP 请求的语言均可开发
  • 音频参数要求:
    • 音频属性:采样率支持 16k 或 8K、位长 16bit、单声道
    • 音频格式:支持 pcm(需传参 audio.encoding=raw)、mp3(需传参 audio.encoding=lame
    • 音频长度:单段待识别音频最长不超过 60 秒
5.1.4.1 接口鉴权

本接口采用 URL​ 参数鉴权 机制,是调用服务的前置安全校验:通过在 WebSocket 请求地址后拼接 3 个必填鉴权参数,完成「身份校验 + 防篡改 + 防重放」三重安全防护,仅合法授权用户可成功调用接口。

必填鉴权参数说明:

image.png

authorization 参数完整生成步骤为:

在讯飞开放平台控制台,完成以下操作获取 2 个 32 位核心密钥:

  1. 创建 WebAPI 平台应用
  2. 开通「语音听写(流式版)」服务
  3. 查看并保存:APIKey(身份标识)、APISecret(签名密钥,需严格保密)

生成合规 date 参数:

  • 格式要求:严格遵循 RFC1123 标准,时区必须为 UTC+0/GMT
  • 校验规则:服务端会校验本地时间与服务器时间的偏差,超时请求直接拦截,需确保本地时间同步

构造签名原始字段(signature_origin):按固定规则拼接 3 个参数(\n 为换行符,: 后必须保留 1 个空格):


host: $host\n
date: $date\n
$request-line

字段说明:

  • $host:固定为 iat.xf-yun.com
  • $date:步骤 2 生成的 RFC1123 格式时间
  • $request-line:固定为 GET /v1 HTTP/1.1(对应接口请求路径)

示例:


host: iat.xf-yun.com
date: Tue, 14 May 2024 08:46:48 GMT
GET /v1 HTTP/1.1

接着,使用 hmac-sha256 加密算法,以 APISecret 为密钥,对 signature_origin 进行加密签名:


signature_sha = hmac-sha256(signature_origin, $apiSecret)

对 signature_sha 进行​Base64 编码​,得到可用于拼接的 signature 字符串。

按固定格式拼接(注意引号、空格不可错漏,headers 为固定参数名,不可修改):


api_key="$api_key", algorithm="hmac-sha256", headers="host date request-line", signature="$signature"
  • 关键提示:headers​​的值为固定字符串 "host date request-line",仅代表参与签名的参数名,不是参数实际值

对 authorization_origin 进行​Base64 编码​,得到最终可拼接到 URL 的 authorization 参数

最终请求格式为(推荐使用wss加密协议提升安全性)


ws[s]://iat.xf-yun.com/v1?authorization={authorization}&date={date}&host={host}
5.1.4.2 数据传输示例

更多推荐