机器翻译(新) API 文档

接口说明

  • 机器翻译(新),基于讯飞自主研发的机器翻译引擎,已经支持包括英、日、法、西、俄等多种语言,效果更优质,已在讯飞翻译机上应用并取得优异成绩,详细请参照语种列表 。通过调用该接口,可以将源语种文字转化为目标语种文字,并且支持术语词语的个性化翻译。

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

  • 集成机器翻译(新) API时,需按照以下要求:

内容 说明
传输方式 http[s] (为提高安全性,强烈推荐https)
请求地址 http[s]: //itrans.xf-yun.com/v1/its
注:服务器IP不固定,为保证您的接口稳定,请勿通过指定IP的方式调用接口,使用域名方式调用
请求行 POST /v1/its HTTP/1.1
接口鉴权 签名机制,详情请参照下方接口说明
字符编码 UTF-8
响应格式 统一采用JSON格式
开发语言 任意,只要可以向讯飞云服务发起HTTP请求的均可
适用范围 任意操作系统,但因不支持跨域不适用于浏览器,请在后端调用接口
文本长度 单次文本长度不得超过5000个字符
文本大小 不得超过5000个字符,汉字不超过15000个字节,英文不超过5000字节
文本语言 支持多种语种,详细请参照语种列表

鉴权说明

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

https://itrans.xf-yun.com/v1/its?authorization=YXBpX2tleT0iYXBpa2V5WFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgiLCBhbGdvcml0aG09ImhtYWMtc2hhMjU2IiwgaGVhZGVycz0iaG9zdCBkYXRlIHJlcXVlc3QtbGluZSIsIHNpZ25hdHVyZT0iZjFKQXJBNmt0aGVOUG9mUDRXWDgyNjRxTkZOQkE4SFpCMzFPL2RlSmN1Yz0i&host=itrans.xf-yun.com&date=Thu%2C+18+Nov+2021+03%3A05%3A18+GMT

鉴权参数:

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

• date参数生成规则:

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

• authorization参数生成格式:

1)获取接口密钥APIKey 和 APISecret。
在讯飞开放平台控制台,创建一个应用后打开OCR中英文字识别页面可以获取,均为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://itrans.xf-yun.com/v1/its"
date = "Thu, 18 Nov 2021 03:05:18 GMT"

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

host: itrans.xf-yun.com
date: Thu, 18 Nov 2021 03:05:18 GMT
POST /v1/its 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 = "Thu, 18 Nov 2021 03:05:18 GMT"

则signature为

signature="f1JArA6ktheNPofP4WX8264qNFNBA8HZB31O/deJcuc="

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

api_key="apikeyXXXXXXXXXXXXXXXXXXXXXXXXXX", algorithm="hmac-sha256", headers="host date request-line", signature="f1JArA6ktheNPofP4WX8264qNFNBA8HZB31O/deJcuc="

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

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

authorization = base64(authorization_origin)
示例结果为:
authorization=YXBpX2tleT0iYXBpa2V5WFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgiLCBhbGdvcml0aG09ImhtYWMtc2hhMjU2IiwgaGVhZGVycz0iaG9zdCBkYXRlIHJlcXVlc3QtbGluZSIsIHNpZ25hdHVyZT0iZjFKQXJBNmt0aGVOUG9mUDRXWDgyNjRxTkZOQkE4SFpCMzFPL2RlSmN1Yz0i

鉴权结果

如果鉴权失败,则根据不同错误类型返回不同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; charset=utf-8
{
    "message": "HMAC signature does not match, a valid date or x-date header is required for HMAC Authentication"
}

请求参数

在调用业务接口时,都需要在 Http Request Body 中配置以下参数,请求数据均为json字符串。
请求参数示例:

{
  "header": {
    "app_id": "your_app_id",
    "status": 3,
    "res_id": "your_res_id"
  },
  "parameter": {
    "its": {
      "from": "cn",
      "to": "en",
      "result": {
        
      }
    }
  },
  "payload": {
    "input_data": {
      "encoding": "utf8",
      "status": 3,
      "text": "56eR5aSn6K6v6aOe55qE"
    }
  }
}

请求参数说明:

参数名 类型 必传 描述
header object 用于上传平台参数
header.app_id string 在平台申请的appid信息
header.status int 请求状态,固定取值为:3(一次传完)
header.res_id string 1、个性化术语资源id
2、在机器翻译控制台自定义(翻译术语热词格式为:原文本1|目标文本1,如:开放平台|KFPT,一个术语资源id支持定义多个术语,多个术语之间用换行符间隔)
3、请注意使用参数值和控制台自定义的值保持一致
parameter object 用于上传服务特性参数
parameter.its object 用于上传功能参数
parameter.its.from string 源语种
parameter.its.to string 目标语种
parameter.its.result object 响应结果字段名,固定传{}即可,为保留字段
payload object 用于上传请求数据
payload.input_data object 用于上传相关数据
payload.input_data.encoding string 文本编码,如utf8
payload.input_data.status int 数据状态,固定取值为:3(一次传完)
payload.input_data.text string 待翻译文本的base64编码,字符要大于0且小于5000

返回结果

如出现错误码,可到 这里 查询。 返回参数示例:

{
  "header": {
    "code": 0,
    "message": "success",
    "sid": "its000eac0d@dx17d31b09eb5750f882"
  },
  "payload": {
    "result": {
      "seq": "0",
      "status": "3",
      "text": "eyJmcm9tIjoiY2..."
    }
  }
}

text字段base64解码示例:

{
  "trans_result": {
    "dst": "This is a public place, please don't smoke",
    "src": "这是公共场合,请勿吸烟"
  },
  "from": "cn",
  "to": "en"
}

返回参数说明:

参数名 类型 描述
header object 用于描述平台特性的参数
header.code int 0表示会话调用成功(并不一定表示服务调用成功,服务是否调用成功以text字段为准)
其它表示会话调用异常,详情请参考错误码
header.message string 描述信息
header.sid string 本次会话唯一标识id
payload object 数据段,用于携带响应的数据
payload.result object 响应数据块
payload.result.seq string 响应数据的序号
payload.result.status string 响应数据的数据状态
payload.result.text string 响应数据的base64编码

text字段参数说明:

参数名 类型 描述
trans_result object 翻译结果
trans_result.dst string 目标文本
trans_result.src string 源文本
from string 源语种
to string 目标语种

语种列表

语种 参数 语种 参数 语种 参数
英语 en 捷克语 cs 豪萨语 ha
日语 ja 罗马尼亚语 ro 匈牙利语 hu
韩语 ko 瑞典语 sv 斯瓦希里语 sw
泰语 th 荷兰语 nl 乌兹别克语 uz
俄语 ru 波兰语 pl 祖鲁语 zu
保加利亚语 bg 阿拉伯语 ar 希腊语 el
乌克兰语 uk 波斯语 fa 希伯来语 he
越南语 vi 普什图语 ps 亚美尼亚语 hy
马来语 ms 乌尔都语 ur 格鲁吉亚语 ka
印尼语 id 印地语 hi 广东话 yue
菲律宾语 tl 孟加拉语 bn 彝语 ii
德语 de 外蒙语 nm 壮语 zua
西班牙语 es 外哈语 kk 内蒙语 mn
法语 fr 土耳其语 tr 内哈萨克语 kka

常见问题

机器翻译(新)的新特性有哪些?

答:比如调用接口返回时长上的优化、通过个性化术语资源使用可以做到词语个性化翻译、后面会支持更多的翻译语种。

机器翻译(新)的主要功能是什么?

答:支持文本到文本的机器翻译。

机器翻译(新)支持的文本长度是多少?

答:不能超过5000个字符,即汉语不超过15000个字节,英文不超过5000个字节。