同声传译 API 文档 您所在的位置:网站首页 讯飞视频翻译 同声传译 API 文档

同声传译 API 文档

2023-09-27 02:07| 来源: 网络整理| 查看: 265

# 同声传译 API 文档 # 接口说明

同声传译(simultaneous interpretation)流式接口,可以将音频流实时翻译为不同语种的文本,并输对应的音频内容,广泛应用于国际论坛、智能会议、智慧教育、跨国交流等场景。

部分接口demo如下,其他开发语言请参照 接口调用流程 进行开发,也欢迎热心的开发者到 讯飞开放平台社区 (opens new window) 分享你们的demo。 同声传译 demo java语言 (opens new window) 同声传译 demo python语言 (opens new window)

集成同声传译API时,需按照以下要求:

内容 说明 传输方式 ws[s] (为提高安全性,强烈推荐wss) 请求地址 [ws(s)]: //ws-api.xf-yun.com/v1/private/simult_interpretation 注:服务器IP不固定,为保证您的接口稳定,请勿通过指定IP的方式调用接口,使用域名方式调用 请求行 GET /v1/private/simult_interpretation HTTP/1.1 接口鉴权 签名机制,详情请参照下方鉴权说明 字符编码 UTF-8 响应格式 统一采用JSON格式 开发语言 任意,只要可以向讯飞云服务发起WebSocket请求的均可 适用范围 任意操作系统,但因不支持跨域不适用于浏览器 音频属性 采样率16k、位长16、单声道 音频格式 pcm 数据发送 建议音频流每40ms发送1280字节 语言种类 支持中文普通话同声传译为英文发音 # 鉴权认证

在调用业务接口时,请求方需要对请求进行签名,服务端通过签名来校验请求的合法性。 通过在请求地址后面加上鉴权相关参数的方式,请注意影响鉴权结果的值有url、apiSecret、apiKey、date,如果调试鉴权,请务必按照示例中给的值进行调试,具体参数如下: http示例url:

https://ws-api.xf-yun.com/v1/private/simultaneous_translation?authorization=YXBpX2tleT0iYXBpa2V5WFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgiLCBhbGdvcml0aG09ImhtYWMtc2hhMjU2IiwgaGVhZGVycz0iaG9zdCBkYXRlIHJlcXVlc3QtbGluZSIsIHNpZ25hdHVyZT0iWkIvWXprQnUwTUV5NEhONVMyd0xQRGxPdGVVK01oQjZ3aWRNaCszNnhLMD0i&host=ws-api.xf-yun.com&date=Mon%2C+13+Dec+2021+03%3A37%3A23+GMT&serviceId=simult_interpretation

鉴权参数:

参数 类型 必须 说明 示例 host string 是 请求主机 itrans.xf-yun.com date string 是 当前时间戳,RFC1123格式("EEE, dd MMM yyyy HH:mm:ss z") Mon, 13 Dec 2021 03:37:23 GMT authorization string 是 使用base64编码的签名相关信息(签名基于hamc-sha256计算) 参考下方详细生成规则 • date参数生成规则:

date必须是UTC+0或GMT时区,RFC1123格式(Mon, 13 Dec 2021 03:37:23 GMT)。 服务端会对date进行时钟偏移检查,最大允许300秒的偏差,超出偏差的请求都将被拒绝。

• authorization参数生成格式:

1)获取接口密钥APIKey 和 APISecret。 在讯飞开放平台控制台,创建一个应用后打开同声传译页面可以获取,均为32位字符串。 2)参数authorization base64编码前(authorization_origin)的格式如下。

api_key="$api_key",algorithm="hmac-sha256",headers="host date request-line",signature="$signature"

其中 api_key 是在控制台获取的APIKey,algorithm 是加密算法(仅支持hmac-sha256),headers 是参与签名的参数(见下方注释)。 signature 是使用加密算法对参与签名的参数签名后并使用base64编码的字符串,详见下方。

注: headers是参与签名的参数,请注意是固定的参数名("host date request-line"),而非这些参数的值。

3)signature的原始字段(signature_origin)规则如下。

signature原始字段由 host,date,request-line三个参数按照格式拼接成, 拼接的格式为(\n为换行符,’:’后面有一个空格):

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

假设

请求url = "https://ws-api.xf-yun.com/v1/private/simultaneous_translation" date = "Mon, 13 Dec 2021 03:37:23 GMT"

那么 signature原始字段(signature_origin)则为:

host: ws-api.xf-yun.com date: Mon, 13 Dec 2021 03:37:23 GMT GET /v1/private/simultaneous_translation HTTP/1.1

4)使用hmac-sha256算法结合apiSecret对signature_origin签名,获得签名后的摘要signature_sha。

signature_sha=hmac-sha256(signature_origin,$apiSecret)

其中 apiSecret 是在控制台获取的APISecret

5)使用base64编码对signature_sha进行编码获得最终的signature。

signature=base64(signature_sha)

假设

APISecret = "apisecretXXXXXXXXXXXXXXXXXXXXXXX" date = "Mon, 13 Dec 2021 03:37:23 GMT"

则signature为

signature="ZB/YzkBu0MEy4HN5S2wLPDlOteU+MhB6widMh+36xK0="

6)根据以上信息拼接authorization base64编码前(authorization_origin)的字符串,示例如下。

api_key="apikeyXXXXXXXXXXXXXXXXXXXXXXXXXX", algorithm="hmac-sha256", headers="host date request-line", signature="ZB/YzkBu0MEy4HN5S2wLPDlOteU+MhB6widMh+36xK0="

注: headers是参与签名的参数,请注意是固定的参数名("host date request-line"),而非这些参数的值。

7)最后再对authorization_origin进行base64编码获得最终的authorization参数。

authorization = base64(authorization_origin) 示例结果为: authorization=YXBpX2tleT0iYXBpa2V5WFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgiLCBhbGdvcml0aG09ImhtYWMtc2hhMjU2IiwgaGVhZGVycz0iaG9zdCBkYXRlIHJlcXVlc3QtbGluZSIsIHNpZ25hdHVyZT0iWkIvWXprQnUwTUV5NEhONVMyd0xQRGxPdGVVK01oQjZ3aWRNaCszNnhLMD0i # 鉴权结果

如果鉴权失败,则根据不同错误类型返回不同HTTP Code状态码,同时携带错误描述信息,详细错误说明如下:

HTTP Code 说明 错误描述信息 解决方法 401 缺少authorization参数 {"message":"Unauthorized"} 检查是否有authorization参数,详情见authorization参数详细生成规则 401 签名参数解析失败 {“message”:”HMAC signature cannot be verified”} 检查签名的各个参数是否有缺失是否正确,特别确认下复制的api_key是否正确 401 签名校验失败 {“message”:”HMAC signature does not match”} 签名验证失败,可能原因有很多。 1. 检查api_key,api_secret 是否正确。 2.检查计算签名的参数host,date,request-line是否按照协议要求拼接。 3. 检查signature签名的base64长度是否正常(正常44个字节)。 403 时钟偏移校验失败 {“message”:”HMAC signature cannot be verified, a valid date or x-date header is required for HMAC Authentication”} 检查服务器时间是否标准,相差5分钟以上会报此错误

时钟偏移校验失败示例:

HTTP/1.1 403 Forbidden Date: Mon, 30 Nov 2020 02:34:33 GMT Content-Length: 116 Content-Type: text/plain; -8 { "message": "HMAC signature does not match, a valid date or x-date header is required for HMAC Authentication" } # 请求参数

在调用业务接口时,都需要在 Http Request Body 中配置以下参数,请求数据均为json字符串。 请注意status的第一次请求取值为0,中间请求取值为1,最后一次请求取值为2。 请求参数示例:

{ "header": { "app_id":"your_app_id", "status": 0, }, "parameter": { "ist": { "accent": "mandarin", "domain": "ist_ed_open", "language": "zh_cn", "vto": 15000, "eos": 150000 }, "streamtrans": { "from": "cn", "to": "en" }, "tts": { "vcn": "x2_john", "tts_results": { "encoding": "raw", "sample_rate": 16000, "channels": 1, "bit_depth": 16, "frame_size": 0 } } }, "payload": { "data": { "audio": "JiuY3iK9AAB...", "encoding": "raw", "sample_rate": 16000, "seq": 1, "status": 0 } } }

请求参数说明:

参数名 类型 必传 描述 header object 是 用于上传平台参数 header.app_id string 是 在讯飞开放平台申请的appid信息 header.status int 是 流式接口请求状态,可选值为:0,1,2。 第一次请求值为0中间请求值为1最后一次请求值为2 parameter object 是 用于上传服务特性参数 parameter.ist object 是 用于上传功能参数 parameter.ist.language string 是 转写语种,可选值:zh_cn parameter.ist.language_type int 否 语言过滤筛选 1:中英文模式,中文英文均可识别(默认) 2:中文模式,可识别出简单英文 3:英文模式,只识别出英文 4:纯中文模式,只识别出中文 注意:中文引擎支持该参数,其他语言不支持。 parameter.ist.domain string 是 应用领域,可选值:ist_ed_open parameter.ist.accent srting 是 口音取值范围,目前固定为mandarin parameter.ist.eos int 否 用于设置端点检测的静默时间,单位是毫秒。即静默多长时间后引擎认为音频结束,取值范围0~99999999 parameter.ist.vto int 否 vad强切控制,单位毫秒,默认15000 parameter.ist.nunum int 否 将返回结果的数字格式规则为阿拉伯数字格式,默认开启 0:关闭 1:开启 parameter.streamtrans object 是 功能参数 parameter.streamtrans.from string 是 源语种 parameter.streamtrans.to string 是 目标语种 parameter.tts object 是 tts功能参数 parameter.tts.vcn string 是 对应同传发音人,有以下可选值:英文女性:x2_catherine英文男性:x2_john成年女性:x2_xiaoguo 成年男性:x2_xiaozhong儿童女声:x2_xiaofang_cts童声开心:x2_mengmenghappy童声自然:x2_mengmengnetural parameter.tts.tts_results object 是 合成响应数据 parameter.tts.tts_results.encoding string 否 音频编码,注意更改生成文件的后缀(如.pcm或.mp3),可选值:raw:合成pcm音频lame:合成mp3音频 parameter.tts.tts_results.sample_rate int 否 采样率,可选值:16000 parameter.tts.tts_results.channels int 否 声道数,可选值:1 parameter.tts.tts_results.bit_depth int 否 位深,可选值:16 payload object 是 数据段,携带请求的数据 payload.data object 是 输入的音频数据格式 payload.data.audio string 是 base64编码后输入的音频数据,数据大小建议保持在:0~10M payload.data.encoding string 是 音频编码,可选值:raw (代表pcm音频) payload.data.sample_rate int 是 音频采样率,可选值:16000 payload.data.seq int 是 标明数据为第几块,取值范围:0~9999999 payload.data.status int 是 数据状态: 0:开始 1:继续 2:结束 # 返回结果

如出现错误码,可到 这里 (opens new window) 查询。 返回参数示例(识别响应):

{ "header": { "code": 0, "message": "success", "sid": "aso000e287f@hu17db2d3721205c3882", "status": 1 }, "payload": { "recognition_results": { "format": "json", "status": 1, "text": "eyJiZyI6MjAw...", "encoding": "utf8" } } }

text字段Base64解码后示例(识别响应):

{ "bg": 200, "ed": 800, "ls": false, "pgs": "rpl", "rg": [ 1, 1 ], "sn": 2, "sub_end": false, "ws": [ { "bg": 20, "cw": [ { "rl": 0, "sc": 0, "w": "科大讯飞", "wb": 20, "wc": 0, "we": 40, "wp": "n" } ] }, { "bg": 40, "cw": [ { "rl": 0, "sc": 0, "w": "是", "wb": 40, "wc": 0, "we": 60, "wp": "n" } ] } ] }

返回参数示例(翻译响应):

{ "header": { "code": 0, "message": "success", "sid": "aso000de6a1@hu17b90e965460212882", "status": 1 }, "payload": { "streamtrans_results": { "text": "eyJzcmMiOiLkuID...", "seq": "5", "status": 1, "encoding": "utf8", "format": "json", "compress": "raw" } } }

text字段Base64解码后示例(翻译响应):

{ "src": "一个面向全球的中文学习爱好者的一个", "dst": " A global Chinese learningenthusiasts for a", "wb": 10, "we": 2480, "is_final": 0 }

返回参数示例(合成响应):

{ "header": { "code": 0, "message": "success", "sid": "aso000de6a1@hu17b90e965460212882", "status": 1 }, "payload": { "tts_results": { "encoding": "raw", "channels": "1", "id": "2", "seq": "3", "audio": "wRUal1l021bJlzu1wI...", "sample_rate": "16000", "status": "1", "bit_depth": "16", "type": "0", "ced": "68" } } }

audio字段为合成后的音频片段,采用base64编码,base64解码后写到文件即可。

返回参数说明(识别):

参数名 类型 描述 header object 用于描述平台特性的参数 header.code int 0表示会话调用成功(并不一定表示服务调用成功,服务是否调用成功以text字段为准)其它表示会话调用异常,详情请参考错误码 header.message string 描述信息 header.sid string 本次会话唯一标识id header.status int 流式接口响应状态,可选值为:0,1,2。 第一次响应值为0中间响应值为1最后一次响应值为2 payload object 数据段,用于携带响应的数据 payload.recognition_results object 识别响应数据块 payload.recognition_results.text string 响应结果,采用base64编码。长度范围:0~1000000 payload.recognition_results.format string 文本格式 payload.recognition_results.encoding string 文本编码 payload.recognition_results.status int 数据状态 0:开始 1:继续 2:结束

text字段base64解码后信息如下(识别),请重点关注:

参数名 类型 描述 bg int 本次输入对应的开始时间戳 ed int 本次输入对应的结束时间戳 sn int 返回结果的序号 pgs string 取值为"apd"时表示该片结果是追加到前面的最终结果,取值 为"rpl" 时表示替换前面的部分结果,替换范围为rg字段。默认值为0 rg array 替换范围 sub_end bool 字句是否结果 ls bool 是否是最后一片结果 wb int 词在本句中的开始时间,单位是帧,中间结果的wb为0 we int 词在本句中的结束时间,单位是帧,中间结果的we为0 wp string 词标识 n-普通词 s-顺滑词(语气词) p-标点 w string 词识别结果

返回参数说明(翻译):

参数名 类型 描述 header object 用于描述平台特性的参数 header.code int 0表示会话调用成功(并不一定表示服务调用成功,服务是否调用成功以text字段为准)其它表示会话调用异常,详情请参考错误码 header.message string 描述信息 header.sid string 本次会话唯一标识id header.status int 流式接口响应状态,可选值为:0,1,2。 第一次响应值为0中间响应值为1最后一次响应值为2 payload object 数据段,用于携带响应的数据 payload.streamtrans_results object 翻译结果 payload.streamtrans_results.text string 文本数据,响应结果,采用base64编码 payload.streamtrans_results.encoding string 文本编码 payload.streamtrans_results.format string 文本格式 payload.streamtrans_results.status int 数据状态 0:开始 1:继续 2:结束

text字段base64解码后信息如下(翻译),请重点关注:

参数名 类型 描述 src string 原文本 dst string 目标文本 wb int 起始偏移量,本次结果对应的开始时间戳,识别结果第一个字符相对原始音频绝对时间戳的偏移时间,单位是毫秒 we int 结束偏移量,本次结果对应的结束时间戳,识别结果第一个字符相对原始音频绝对时间戳的偏移时间,单位是毫秒 is_final int 本次结果是否是最终结果 中间结果:0 确定结果:1

返回参数说明(合成):

参数名 类型 描述 header string 用于描述平台特性的参数 header.code int 0表示会话调用成功(并不一定表示服务调用成功,服务是否调用成功以text字段为准)其它表示会话调用异常,详情请参考错误码 header.message string 描述信息 header.sid Object 本次会话唯一标识id header.status int 流式接口响应状态,可选值为:0,1,2。 第一次响应值为0中间响应值为1最后一次响应值为2 payload obejct 数据段,用于携带响应的数据 payload.tts_results object 合成结果 payload.tts_results.encoding string 音频编码,注意更改生成文件的后缀(如.pcm或.mp3),可选值:raw:合成pcm音频lame:合成mp3音频 payload.tts_results.sample_rate int 采样率,可选值:16000 payload.tts_results.channels int 声道数,可选值:1 payload.tts_results.bit_depth int 位深,可选值:16 payload.tts_results.status int 数据状态 0:开始 1:继续 2:结束 payload.tts_results.seq int 数据序号,标明数据为第几块 。取值范围:0~9999999 payload.tts_results.audio string 响应结果,采用base64编码。长度范围:0~1000000 payload.tts_results.frame_size int 帧大小,取值范围0~1024 # 常见问题 # 同声传译的主要功能是什么?

答:可将不限时长的音频流实时识别并转译成指定的语种和发音。

# 同声传译支持什么语言?

答:目前支持中文-英文的互译,其他语种后续会开放,敬请关注平台动态。

# 同声传译支持什么应用平台?

答:目前支持WebAPI应用平台。

# 同声传译对音频有什么要求吗?

答:采样率为16k、采样深度为16bit、单声道的pcm格式的音频。

# 是否支持源语种的自动识别?

答:目前暂不支持。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有