# 实时语音转写大模型

# 1. 概述

# 1.1 功能整体概述

实时语音转写大模型版,是基于星火大模型预训练技术框架训练的识别大模型,服务核心功能为语音识别,即将不限时长的语音识别为文字内容。

# 1.2 接口协议整体概述

实时转写服务分为两种类型的协议:

  • 一种是 websoket(简称 ws)协议,用于实时地将音频输入到服务端,并通过 websocket 协议实时获取转写结果、翻译结果。
  • 一种是 http 接口协议,用于操作一些辅助功能,比如:声纹注册。
内容 说明
请求协议 ws[s](为提高安全性,强烈推荐 wss)
请求地址 wss://office-api-ast-dx.iflyaisol.com/ast/communicate/v1?{请求参数}
接口鉴权 签名机制,详见数字签名
字符编码 UTF-8
响应格式 统一采用 JSON 格式
开发语言 任意,只要可以向讯飞云服务发起 WebSocket 请求的均可
音频属性 采样率 16k、位长 16bit、单声道
音频格式 pcm
数据发送 建议音频流每 40ms 发送 1280 字节
语言种类 中英 + 202种方言混合识别

# 2. 音频转写接口

实时语音转写接口调用包括两个阶段:握手阶段和实时通信阶段。

# 2.1 握手阶段

websocket 协议带参请求:

wss://office-api-ast-dx.iflyaisol.com/ast/communicate/v1?{请求参数}

常见的实际生产的一个 ws 握手请求的 url 示例如下,含义为实时转写 pcm 格式 16000 采样率的实时转写结果:

wss://office-api-ast-dx.iflyaisol.com/ast/communicate/v1?accessKeyId=bb1542cda0ab4696031e2f3244206479&appId=27cc644f&uuid=664e7e56f779492ca75a58839914164b&utc=2025-09-04T15%3A38%3A07%2B0800&audio_encode=pcm_s16le&lang=autodialect&samplerate=16000&signature=4PuTRjRmWbJecdZQoANVA4I9B0s%3D

# 请求参数格式

key1=value1&key2=value2…(key 和 value 都需要进行 urlencode)

# 业务参数说明

字段名称 类型 是否必须 字段说明
appId string 讯飞开放平台应用id,从开放平台控制台 (opens new window)获取
accessKeyId string 讯飞开放平台应用key,从开放平台控制台 (opens new window)获取
uuid string 自定义字段,用于标识业务侧不同用户
utc string 当前时间,格式为:2025-09-04T15%3A38%3A07%2B0800
signature String 签名规则生成的签名字符串
lang String 可选范围:
autodialect:支持中英 + 202 种方言免切识别
autominor:支持 37 个语种免切识别 (暂需联系人工对接)
audio_encode String 1. pcm 格式,传参是 pcm_s16le,代表 16k16bit 原始音频流
2. speex 格式,支持 speex-7speex-10
3. opus 格式(推荐),传参为 opus-wb
samplerate long 采样率,仅在客户端音频为 pcm 时必须传入,支持 16000、8000
role_type short 是否开启说话人分离:
0:关闭说话人分离(默认)
2:开启实时角色分离
pd String 领域个性化参数,优化特定领域识别效果:
法律:court、
金融:finance、
医疗:medical、
科技:tech、
体育:sport、
教育:edu、
运营商:isp、
政府:gov、
游戏:game、
电商:ecom、
军事:mil、
企业:com、
生活:life、
娱乐:ent、
人文历史:culture、
汽车:car
trackMode Short 按声道分轨转写模式:
1- 不分轨模式;
2- 双声道分轨模式;
默认为1
备注:如果转写任务使用双声道分轨模式,角色分离(roleType)功能失效。
转写结果字段请参考getResult接口协议定义字段。
eng_punc String 标点过滤控制字段,默认返回标点,punc=0 会过滤结果中的标点
eng_vad_mdn int vad 远近场切换:
不传或传 1 代表远场,传 2 代表近场

# signature 生成

  1. 获取 baseString,步骤如下:

    • 将所有请求参数(不包含 signature)按参数名进行升序排序
    • 对每个参数的键和值分别进行 URL 编码
    • 按照 "编码后的键=编码后的值&" 的格式拼接所有参数
    • 移除最后一个多余的 "&" 符号,得到 baseString
    示例: accessKeyId=XXX&appId=XXX&lang=cn&utc=2025-03-24T00%3A01%3A19%2B0800&uuid=edf53e32-6533-4d6a-acd3-fe4df14ee332
    
  2. 以 accessKeySecret 为密钥,对 baseString 进行 HmacSHA1 加密,得到二进制字节数组

  3. 对 HmacSHA1 加密后的字节数组进行 Base64 编码,得到最终的 signature

    示例: IrrzsJeOFk1NGfJHW6SkHUoN9CU=
    

# 2.2 实时通信阶段

握手成功后,进入实时通信阶段,客户端主动操作有两种:上传数据和上传结束标识,被动操作有两种:接收转写结果和错误。

  • 上传数据:实时转写过程中,客户端不断构造 binary message 发送到服务端,内容是音频的二进制数据。建议音频流每 40ms 发送 1280 字节,发送过快可能导致引擎出错;音频发送间隔超时时间为 15 秒,超时服务端报错并主动断开连接。
  • 上传结束标志:音频数据上传完成后,客户端需发送一个结束标识,并且制定会话sessionId:
    {"end": true, "sessionId": "d49ddd6f-c451-35ea-b8c4-2c75af837caa"}
    

# 2.3 返回结果说明

返回结果为 JSON 格式,具体字段说明如下:

参数 类型 说明
action string 结果标识:started 握手,result 结果,error 异常
code string 结果码(见错误码)
data string 结果数据
desc string 描述
sid string 会话 ID

# 2.3.1 转写结果

字段 含义 详细描述
data.cn.st.bg 句子开始时间 中间结果的 bg 为准确值
data.cn.st.ed 句子结束时间 中间结果的 ed 为 0
data.cn.st.rt.ws.cw.w 词识别内容 具体的转写结果
data.cn.st.rt.ws.cw.lg 转写识别的语言 lang 为 autominor 时返回当前识别的语言
data.cn.st.rt.ws.cw.wp 词标识 n-普通词;s-顺滑词;p-标点;g-分段标识
data.cn.st.rt.ws.cw.wb 词开始时间 中间结果的 wb 为 0
data.cn.st.rt.ws.cw.we 词结束时间 中间结果的 we 为 0
data.cn.st.rt.ws.cw.rl 角色分离标识 只有角色分离功能打开时出现,角色切换时变化
data.cn.st.type 结果类型标识 0-确定性结果;1-中间结果
data.seg_id 返回消息号 从 0 开始
data.cn、data.cn.st 音频段结果 无实际意义,按此结构解析
data.cn.st.rt 返回音频转写结果 音频转写结果内容从此字段解析
data.ls 是否为转写最终结果 true 表示最后一帧,false 表示非最后一帧

# 2.3.2 返回结果示例

  • 正常结果
    {
        "msg_type": "result",
        "res_type": "asr",
        "data": {
            "seg_id": 0,
            "cn": {
                "st": {
                    "rt": [
                        {
                            "ws": [
                                {
                                    "cw": [
                                        {
                                            "w": "项",
                                            "wp": "n",
                                            "rl": 0,
                                            "lg": "cn"
                                        }
                                    ],
                                    "wb": 15,
                                    "we": 64
                                },
                                {
                                    "cw": [
                                        {
                                            "w": "兽",
                                            "wp": "n",
                                            "lg": "cn"
                                        }
                                    ],
                                    "wb": 65,
                                    "we": 95
                                },
                                {
                                    "cw": [
                                        {
                                            "w": "南",
                                            "wp": "n",
                                            "lg": "cn"
                                        }
                                    ],
                                    "wb": 96,
                                    "we": 147
                                }
                            ]
                        }
                    ],
                    "bg": 930,
                    "type": "0",
                    "ed": 2590
                }
            },
            "ls": false
        }
    }
    
  • 异常结果
    {
        "data": {
            "desc": "功能异常",
            "detail": {
                "domain": "ist_ed_test"
            },
            "fnType": "ast",
            "normal": false
        },
        "msg_type": "result",
        "res_type": "frc"
    }
    

# 3. 辅助功能接口

# 3.1 个性化热词

为提高用户在自身业务场景的识别准确度,支持在控制台 (opens new window)上传专业词汇,以提高相应的识别权重。

# 3.2 角色分离

角色分离提供两种主要模式:盲分和声纹分离:

  • 盲分:应用于说话人群不固定,无法确认对应身份的场景。
  • 声纹分离:应用于说话人固定,需要清晰区分出具体是谁说了什么内容的场景。(即将上线,敬请期待)

# 4. 语种列表

语种 描述
autodialect 自动识别中英,以及中文下的202种方言:
合肥话、芜湖话、皖北话、铜陵话、安庆话、黄山话、滁州话、六安话、池州话、宣城话、粤语、北京话、福州话、闽南语、莆仙话、延平话、宁德话、永安话、兰州话、白银话、天水话、武威话、张掖话、平凉话、酒泉话、庆阳话、定西话、韶关话、潮汕话、客家话、桂南平话、柳州话、桂北平话、桂林话、来宾话、贵阳话、六盘水话、遵义话、安顺话、毕节话、铜仁话、海口话、海南话、儋州话、石家庄话、唐山话、秦皇岛话、邯郸话、邢台话、保定话、张家口话、承德话、沧州话、廊坊话、衡水话、太原话、郑州话、开封话、洛阳话、平顶山话、安阳话、鹤壁话、新乡话、焦作话、濮阳话、许昌话、漯河话、三门峡话、南阳话、商丘话、信阳话、周口话、驻马店话、东北话、武汉话、黄石话、十堰话、宜昌话、襄阳话、鄂州话、荆门话、孝感话、荆州话、黄冈话、咸宁话、随州话、长沙话、湘潭话、衡阳话、邵阳话、岳阳话、常德话、张家界话、益阳话、郴州话、永州话、怀化话、娄底话、延吉话、南京话、无锡话、徐州话、常州话、苏州话、南通话、连云港话、淮安话、盐城话、扬州话、镇江话、泰州话、宿迁话、靖江话、启海话、南昌话、景德镇话、萍乡话、九江话、新余话、鹰潭话、赣州话、吉安话、宜春话、抚州话、上饶话、大连话、丹东话、营口话、朝阳话、晋语、包头话、赤峰话、鄂尔多斯话、银川话、石嘴山话、吴忠话、固原话、中卫话、西宁话、海东话、济南话、青岛话、淄博话、枣庄话、东营话、烟台话、潍坊话、济宁话、泰安话、威海话、日照话、临沂话、德州话、聊城话、滨州话、菏泽话、莱芜话、大同话、阳泉话、长治话、晋城话、朔州话、晋中话、运城话、忻州话、临汾话、吕梁话、汾阳话、西安话、铜川话、宝鸡话、咸阳话、渭南话、延安话、汉中话、榆林话、安康话、商洛话、上海话、四川话、台湾话、天津话、乌鲁木齐话、吐鲁番话、哈密话、云南话、曲靖话、玉溪话、保山话、昭通话、杭州话、宁波话、温州话、嘉兴话、湖州话、绍兴话、金华话、衢州话、舟山话、台州话、丽水话、重庆话
autominor 自动识别37种语种:
中文、英文、日语、韩语、俄语、法语、西班牙语、阿拉伯语、德语、泰语、越南语、印地语、葡萄牙语、意大利语、马来语、印尼语、菲律宾语、土耳其语、希腊语、捷克语、乌尔都语、孟加拉语、泰米尔语、乌克兰语、哈萨克语、乌兹别克语、波兰语、蒙语、斯瓦西里语、豪撒语、波斯语、荷兰语、瑞典语、罗马尼亚语、保加利亚语、维语、藏语

# 5. 代码示例

Python 代码示例 (opens new window)

Java 代码示例 (opens new window)

# 6. 错误码表

错误码 描述
35001 账号鉴权失败
35002 用量不足
35003 内部错误
35004 appId 不存在
35005 appId 已禁用
35006 appId 当前并发路数已满
35007 内部错误
35008 内部错误
35009 内部错误
35010 accessKeyId 不存在
35011 内部错误
35012 内部错误
35013 时区格式错误
35014 时间戳偏差过大
35015 参数为空
35016 参数格式错误
35017 accessKeyId 不匹配
35018 内部错误
35019 AccessSource 不对
35020 语种不支持
35021 sourceinfo 字段长度超过限制(128 字符)
35022 转写用量超过最大限制
35030 签名已过期
35031 账号已过期
35099 未知错误
37000 参数错误
37001 初始化连接引擎失败
37002 引擎没有空余路数
37003 普通翻译无法使用
37004 流式翻译无法使用
37005 客户端长时间未传音频
37006 流式翻译并发数达到上限
37007 单次转写音频时长已达上限(8 小时)
37008 引擎异常断连
37009 已收到引擎返回的最后一帧结果
37010 用户发送 end 后继续发送数据
37011 发送的 text 文本非 json 结构
37012 客户端握手成功后直接发送 end=true,属于异常请求
100001 上传音频速度超出限制
100002 签名错误
100003 热词必须为中文
100004 热词超过长度限制
100005 热词超过总数限制
100006 热词分隔符不能连续出现
100007 热词校验失败
100008 热词上传失败
100009 热词保存失败
100010 热词为空
100011 热词加载失败
100012 UTC 偏差过大
100013 appId 为空
100014 热词 Id 错误
100015 参数错误
100016 accessKeyId 错误
100017 修改密钥失败
100018 不支持当前语种
100019 当前账号未开通当前语种转写能力
100020 当前 appId 和 accessKeyId 不匹配
100021 音频解码错误
999999 内部服务错误
在线咨询
体验中心