同花顺智能语音平台提供智能语音交互所需的基础服务,包括语音识别、语音合成、自然语言理解等功能,为企业在多种实际应用场景下,赋予产品“能听、会说、懂你”式的智能人机交互体验。
本平台提供的语音服务适用于多个应用场景,包括智能问答、智能质检、实时语音记录、录音转写等场景,在日常生活、金融、保险、电商等多个领域均可应用。
作为智能交互技术服务平台,我们将致力于为开发者打造全面的智能人机交互解决方案。用户可通过互联网、移动互联网,随时随地享受开放平台提供的全方位的人工智能服务。
{{isZh ? '接入指南' : 'Access Guide'}}
1. {{isZh ? '成为开发者——注册账号,成为同花顺开放平台开发者' : 'Be a developer- register to be a developer of the RoyalFlush Open Platform'}}
{{isZh ? '点击右上角“注册”按钮,填写相关信息注册账号,成为同花顺开放平台开发者。' : 'Click the top-right "Register", register your account, and be a developer of the RoyalFlush Open Platform.'}}
2. {{isZh ? '创建应用——在平台上创建所需服务类型的应用,申请对应的AppID和AppKey' : 'Create an application-create an application of the required service type on the platform and apply for the corresponding AppID and AppKey'}}
2.1 {{ isZh ? '应用申请:' : 'Apply for application:'}}
{{isZh ?'方法一:点击右上角账户下“创建新应用”,填写“应用名称”、“应用描述”,选择对应的“语音服务”,点击提交,即可创建新应用。' : 'Option A: Click "Create New Application" below the top-right account, fill in "Application Name" and "Application Description", select the corresponding "Voice Service", and click "Submit".'}}
{{isZh ? '方法二:点击左上角“产品服务”下具体的服务类型,点击“立即使用”,填写相关信息,点击提交,即可创建新应用。' : 'Option B: Click the specific service type below "Products and Services" in the upper left corner, click "Use Now", fill in relevant information, and click "Submit".'}}
{{isZh ? '其中应用名称要求:App名称-使用的领域,比如:同花顺手机炒股-金融。' : 'The formation of APP name: App name-App domain, ie. RoyalFlush Mobile Stock Trading Platform-Finance.'}}
2.2 {{isZh ? '创建使用' : 'Create and use'}}
{{ isZh ? '创建成功之后可以在 “我的应用” 查看到对应的AppId和AppKey,用于后续的开发接入校验。' : 'If sucessful, you can view the corresponding AppId and AppKey in "My App" for subsequent development access verification.' }}
3. {{ isZh ? '提额申请——当前每秒请求量默认为10,如不满足使用,可以申请提高每秒请求量限额' : 'Request promotion-the current default amount of requests is 10, and can be promoted upon your application' }}
3.1 {{ isZh ? '在“我的应用”中点击应用名称所在行,下方会出现“提额申请”按钮,点击进去,填写“每秒请求量”和“提额原因”点击提交,等待审核。' : 'Click the app name line in "My App", and the "Request Promotion" will pop up. Click it in, fill in the "Request Amount per Second" and "Reason for Request" and submit for approval.' }}
3.2{{ isZh ? '审核通过后即可提高每秒请求量限额。' : 'The request per second will get promoted upon approval' }}
4. {{ isZh ? '开发集成' : 'Development integration' }}
4.1 {{ isZh ? '获取token,发送HTTP请求传入appId以及appSecret,返回结果中的access_token就是申请到的token。' : 'To retrieve token, send HTTP request to appId and appSecret, and the access_token in the returned result is the applied token.' }} {{ isZh ? '获取token的地址:https://b2b-api.10jqka.com.cn/gateway/service-mana/app/login-appkey。(token有效期为24小时,请在应用程序中做好定时获取操作,避免token失效)' : 'Token retrieve link: https://b2b-api.10jqka.com.cn/gateway/service-mana/app/login-appkey. (The token is valid for 24 hours, so fixed retrieve operation must be ensured to prevent token failure)' }}
4.2 {{ isZh ? '获取token之后,在调用识别接口时,需要在请求的header中添加“open-authorization”:"bearer${Your Token}", 即在获取token值前面添加字符串bearer。' : 'After you get the token, when you invoke the identification interface, you need to add "open-authorization" : " bearer ${Your Token}"in the header of the request, i. e., adding the string bearer before getting the token value. '}} {{ isZh ? '例如:获取到的token为XXXX,则在header中添加“open-authorization”:"bearerXXXX"。' : 'For example, if you get a token of XXXX, add "open-authorization" to the header: "bearer XXXX ". '}}
4.3{{ isZh ? '根据不同的API文档,开始开发集成。' : 'Download SDK and API documents in different development platforms and start development integration'}}
语音合成接口将文字信息转化为声音信息,同时提供了众多极具特色的发音人(音库)供您选择。
该语音能力是通过HTTP的方式给开发者提供一个通用的接口。相较于SDK,API具有轻量、跨语言的特点。
内容 | 说明 |
URL | http[s]://b2b-api.10jqka.com.cn/gateway/arsenal/speechSynthesis/tts/v3/b2b/get/result |
请求方式 | POST |
头部信息 | “Content-type”:”application/x-www-form-urlencoded; charset=UTF-8” |
参数 | 类型 | 必填 | 描述 |
text | string | 是 | 文本(文本长度限制最大300个字,包括标点) 多音字可以添加拼音纠正发音。格式:[拼音] 如:朝[chao2]阳区迎着朝[zhao1]阳其中数字1~4分别表示一声到四声,数字5表示轻声 |
app_id | String | 是 | 应用编号,从开放平台申请 |
voice | String | 是 | 声音名称(详情可以在附录一:声音列表中查找) |
sample_rate | int | 否 | 0或1 (注:该参数代表合成音频的采样率,其中0代表16K,1代表8K |
format | int | 否 | 必须使用0 (注:该参数代表合成音频的格式,目前仅支持wav格式,对应参数为0 |
volume | int | 否 | 音量 (0-200默认100 (暂时不支持设置其他值)) |
speed | int | 否 | 语速(取值范围:50-200(默认值100)) |
pitch | int | 否 | 语调(取值范围:-100 — +100 (默认值0)) |
endsil | int | 否 | 结尾静音时长(取值范围:0-5的整数,单位时间为: 50毫秒) |
user_number | int | 否 | 用户请求id |
请求参数示例
{
"text": "你好",
"app_id": "*****",
"voice":"voice_female_xiaohua"
}
参数 | 类型 | 描述 |
status_code | int | 0 表示请求成功,异常请对照异常码 |
status_msg | String | 结果描述 |
data | object | 音频数据以及时间戳(合成结果) |
request_id | string | 请求编号(用于排查问题) |
参数 | 类型 | 描述 |
voiceData | string | 音频数据(返回结果需要Base64解码) |
voiceTime | string | 时间戳 |
参数 | 类型 | 描述 |
txt | string | 合成文字 |
startTime | string | 开始时间 |
endTime | string | 结束时间 |
返回参数示例
{
"status_code": 0,
"status_msg": "操作成功",
"data": {
"voiceData":"****",
"voiceTime": [{
"txt": "SIL",
"startTime": 0.0,
"endTime": 0.025
}, {
"txt": "你",
"startTime": 0.025,
"endTime": 0.225
}, {
"txt": "好",
"startTime": 0.225,
"endTime": 0.55
}, {
"txt": "SIL",
"startTime": 0.55,
"endTime": 0.8125
}]
},
“request_id":"*****”
}
能力说明:
1 强英文能力:可以合成中文同时也可以合成英文以及中英混合的文本。
2 弱英文能力:可以合成单词个数小于或者等于四个的英文文本
3
无英文能力:不能合成文本中包含的英文
名称 | 语种 | 声音名称 | 性别 | 英文能力 |
Lucy | 英语 | voice_female_lucy | 女 | - |
Tom | 英语 | voice_en_m_tom | 男 | - |
小卉 | 普通话 | voice_cn_f_xiaohui | 女 | 无 |
小南 | 普通话 | voice_cn_m_xiaonan | 男 | 无 |
小娜 | 普通话 | voice_cn_f_xiaona | 女 | 无 |
小明 | 普通话 | voice_cn_m_xiaoming | 男 | 无 |
小智 | 普通话 | voice_male_xiaozhi | 男 | 无 |
小木 | 普通话 | voice_cn_m_xiaomu | 男 | 无 |
小泽 | 普通话 | voice_cn_m_xiaoze | 男 | 无 |
小津 | 普通话 | voice_cn_m_xiaojin | 男 | 无 |
小琪 | 普通话 | voice_cn_f_xiaoqi | 女 | 无 |
小西 | 普通话 | voice_cn_m_xiaoxi | 男 | 无 |
小美 | 普通话 | voice_female_xiaomei | 女 | 弱 |
小花 | 普通话 | voice_female_xiaohua | 女 | 弱 |
小天 | 普通话 | voice_male_xiaotian | 男 | 弱 |
小花(标准) | 普通话 | voice_female_ordinary_xiaohua | 女 | 弱 |
小天(标准) | 普通话 | voice_male_ordinary_xiaotian | 男 | 弱 |
异常码 | 说明 |
10001 | 获取请求参数失败 |
10002 | 权限校验失败 |
10003 | 请求量超过上限 |
10004 | 解码线程使用量超过上限 |
10005 | 申请令牌失败 |
10006 | 无有效的文本数据 |
10007 | 合成失败(java程序遇到的其他异常) |
10008 | 合成超时 |
10009 | ip不在白名单内 |
10101 | 引擎异常 |
语音转写将短音频(1分钟以内)或长段音频(3小时以内)数据转换成文本数据,为信息处理和数据挖掘提供基础。
转写的是已录制音频(非实时),音频文件上传成功后进入等待队列,待转写成功后用户即可获取结果,返回结果时间受音频时长以及排队任务量的影响。 如遇转写耗时比平时延长,大概率表示当前时间段出现转写高峰,请耐心等待即可。
该接口是通过REST API的方式给开发者提供一个通用的HTTP接口,基于该接口,开发者可以获取开发平台的语音转写能力,方便开发者使用自己熟悉的编程语言快速集成。
暂无下载
协议 | 域名 |
https | b2b-api.10jqka.com.cn/gateway/arsenal/speechDictation |
注
一句话识别接口,仅支持音频时长在1分钟内的音频进行转写。调用接口后直接返回识别结果。
URL
内容 | 说明 |
URL | {host}/api/v1/asr |
请求方式 | POST |
头部信息 | Content-Type:multipart/form-data |
参数说明
参数名 | 类型 | 是否必传 | 说明 |
app_id | string | 是 | 该参数需在开放平台进行申请 |
engine | int | 是 | 引擎类型码,详见文档底部:引擎类型介绍表 |
audio | String | 是 | 音频文件字节数组base64编码后的字符串 |
audio_suffix | string | 是 | 文件名后缀,支持格式为:wav,mp3,aac,m4a等 |
user_number | string | 否 | 用户id |
has_reprocess | int | 否 | 转写结果是否后处理,0-不处理1-中文数字转阿拉伯数字 默认为0 |
has_pinyin | int | 否 | 转写结果 0表不获取拼音信息,1表示获取,默认为0 |
has_punctuation | int | 否 | 是否获取标点,0-否;1-是 默认为1 |
has_mood | int | 否 | 语气词,0-不处理,1-关闭语气词,2-开启语气词 默认为0 |
返回值
成功
{
"status_code":0,
"status_msg":"操作成功",
"data":{
"emotion":"", //此字段已弃用
"answer":"{"data":[{"bg":100,"ed":200,"text":"你好2018年3月8","pinyin":"",,"modal":0,"gender":"","spk":"","type":"","lang":"","sex":"","emotion":""},{"bg":210,"ed":280,"text":"日","pinyin":"","modal":0,"gender":"","spk":"","type":"","lang":"","sex":"","emotion":""}],"tl":300,"type":"0"}",
"sex":"", //此字段已弃用
"logId":"File_aaad7448a5af408f86ec1e0c5866edae"
}
}
失败
{
"status_code":-1,
"status_msg":"系统异常",
"data":null
}
1、模型列表
参数 | 模型 |
2101 | 中文普通话、通用、16k |
2102 | 英语、通用、16k |
2103 | 中文普通话、金融、16k |
2105 | 中文普通话、会议、16k |
1107 | 中文普通话、智能客服、8k |
2、转写结果字段说明
参数 | 类型 | 说明 |
bg | long | 当前text句子在整个音频中的开始时间 |
ed | long | 当前text句子在整个音频中的结束时间 |
text | String | 识别结果文本 |
tl | long | 音频识别总时长 |
type | int | 0-最终识别结果 1-实时识别结果 |
modal | int | 0-不是语气词 1-是语气词 |
spk | String | 说话人 暂未开放 |
sex | String | 性别识别结果 暂未开放 |
emotion | String | 情绪识别结果 暂未开放 |
语音转写将短音频(1分钟以内)或长段音频(3小时以内)数据转换成文本数据,为信息处理和数据挖掘提供基础。
转写的是已录制音频(非实时),音频文件上传成功后进入等待队列,待转写成功后用户即可获取结果,返回结果时间受音频时长以及排队任务量的影响。 如遇转写耗时比平时延长,大概率表示当前时间段出现转写高峰,请耐心等待即可。
该接口是通过REST API的方式给开发者提供一个通用的HTTP接口,基于该接口,开发者可以获取开发平台的语音转写能力,方便开发者使用自己熟悉的编程语言快速集成。
暂无下载
协议 | 域名 |
https | b2b-api.10jqka.com.cn/gateway/arsenal/speechDictation |
注
录音文件转写接口,支持音频时长在3小时内的音频进行转写。调用接口后返回识别凭证,根据获取到的识别凭证调用获取结果接口,可获取到识别结果。
URL
内容 | 说明 |
URL | {host}/api/v1/file_asr |
请求方式 | POST |
头部信息 | Content-Type:multipart/form-data |
参数说明
参数名 | 类型 | 是否必传 | 说明 |
app_id | string | 是 | 该参数需在开放平台进行申请 |
engine | int | 是 | 引擎类型码,详见文档底部:引擎类型介绍表 |
audio_file | file | 是 | 音频文件,需要带文件后缀名,支持格式为:wav,mp3,aac,m4a等 |
user_number | string | 否 | 用户id |
has_reprocess | int | 否 | 转写结果是否后处理,0-不处理1-中文数字转阿拉伯数字 默认为0 |
has_pinyin | int | 否 | 转写结果 0表不获取拼音信息,1表示获取,默认为0 |
has_punctuation | int | 否 | 是否获取标点,0-否;1-是 默认为1 |
has_mood | int | 否 | 语气词,0-不处理,1-关闭语气词,2-开启语气词 默认为0 |
callback_url | string | 否 | 识别结果回调接口地址,传入此参数则识别完成后会自动调用此接口回调识别结果 |
返回值
成功
{
"status_code":0,
"status_msg":"操作成功",
"data":
{
"fileId":"File_6147c74d0ea1461d9bc020785181fbbb"
}
}
失败
{
"status_code":-1,
"status_msg":"系统异常",
"data":null
}
内容 | 说明 |
URL | {host}/api/v1/answer |
请求方式 | POST |
头部信息 | Content-Type: application/x-www-form-urlencoded;charset=utf-8 |
参数说明
参数 | 类型 | 说明 |
fileId | String | 识别凭证,通过/api/v1/file_asr接口获取 |
返回值
成功
{
"status_code":0,
"status_msg":"操作成功",
"data":{
"emotion":"", //此字段已弃用
"answer":"{"data":[{"bg":100,"ed":200,"text":"你好2018年3月8","pinyin":"",,"modal":0,"gender":"","spk":"","type":"","lang":"","sex":"","emotion":""},{"bg":210,"ed":280,"text":"日","pinyin":"","modal":0,"gender":"","spk":"","type":"","lang":"","sex":"","emotion":""}],"tl":300,"type":"0"}",
"sex":"", //此字段已弃用
"logId": "File_6147c74d0ea1461d9bc020785181fbbb"
}
}
失败
{
"status_code":-1,
"status_msg":"无数据",
"data":null
}
开启识别结果回调
回调接口demo
RestController("/asr")
public class AsrController{
@RequestMapping(value="/callback")
public void callback(@RequestBody String answer) {
System.out.println(answer);
}
}
以上示例的url回调地址:https://{域名}/asr/callback
注:入参必须为 @RequestBody String answer
1、模型列表
参数 | 模型 |
2101 | 中文普通话、通用、16k |
2102 | 英语、通用、16k |
2103 | 中文普通话、金融、16k |
2105 | 中文普通话、会议、16k |
1107 | 中文普通话、智能客服、8k |
2、转写结果字段说明
参数 | 类型 | 说明 |
bg | long | 当前text句子在整个音频中的开始时间 |
ed | long | 当前text句子在整个音频中的结束时间 |
text | String | 识别结果文本 |
tl | long | 音频识别总时长 |
type | int | 0-最终识别结果 1-实时识别结果 |
modal | int | 0-不是语气词 1-是语气词 |
spk | String | 说话人 暂未开放 |
sex | String | 性别识别结果 暂未开放 |
emotion | String | 情绪识别结果 暂未开放 |
{{ isZh ? '支持多句子同时翻译,已经支持包括中文以及英文两种语言。通过调用该接口,将批量的将源语种文字转化为目标语种文字。该能力是通过HTTP API的方式给开发者提供一个通用的接口。' : 'Multiple sentences can be translated (Chinese-English and English Chinese) simultaneously. By calling the API, the source language can be translated into target language in batches. It is to provide a general interface for developers through HTTP API. ' }} {{ isZh ? 'HTTP API适用于一次性交互数据传输的AI服务场景,相较于SDK,API具有轻量、跨语言的特点。' : 'HTTP API applies to AI service scenario of one-time interactive data transmission, and is lightweight and cross-linguistical compared with SDK.' }}
{{ isZh?'批量翻译接入流程主要分为三个部分:':'Batch translation access is mainly divided into three parts: '}}{{ isZh?'接入准备':'Prepare Access'}}-->{{ isZh?'获取Token':'Acquire Token'}}-->{{ isZh?'接口调用':'Call Interface'}}
1. {{isZh?'成为开发者':'Become a developer'}}——{{isZh?'注册账号,成为同花顺开放平台开发者':'Become a developer-register an account and become a developer of the RoyalFlush Open Platform.'}}
{{isZh?'点击右上角“注册”按钮,填写相关信息注册账号,成为同花顺开放平台开发者':'Click the "Register" in the upper right corner, fill in the relevant information to register your account, and become the developer of the RoyalFlush Open Platform.'}}。
2. {{isZh?'创建应用':'Create an application'}}——{{isZh?'在平台上创建所需服务类型的应用,申请对应的AppID和AppKey':'Create an application of the required service type on the Platform and apply for the corresponding AppID and AppKey.'}}
2.1 {{isZh?'应用申请:':'App apply'}}
{{isZh?'申请方法:点击右上角控制台进入我的应用页面,点击左上角的“创建新应用”,填写“应用名称”、“应用描述”,点击提交,即可创建新应用。':'Apply method: Click the console in the upper right corner to enter My Application, click "Create New App" in the upper left corner, fill in "App Name" and "App Description", and click "Submit" to create a new app.'}}
{{isZh?'其中应用名称要求:App名称-使用的领域,比如:同花顺手机炒股-金融。':'App name requirements: App name field e.g. RoyalFlush-finance.'}}
2.2 {{isZh?'创建使用':'Create'}}
{{isZh?'创建成功之后可以在 “我的应用” 查看到对应的AppId和AppKey,用于后续的开发接入校验。':'After successful creation, you can view the corresponding AppId and AppKey in "My Application" for following development access verification.'}}
{{isZh?'提额申请':'Limit-up apply'}}——{{isZh?'当前每秒请求量默认为10,如不满足使用,可以申请提高每秒请求量限额':'The current request amount per second is 10 by default. If not enough, you can apply for upping the limit.'}}
{{isZh?'如有需求,请联系:王海波(wanghaibo3@myhexin.com)、路建宁(lujianning@myhexin.com)':'If you have a limit-up demand, please contact Wang Haibo (wanghaibo3@myhexin.com) or Lu Jianning (lujianning@myhexin.com).'}}
{{ isZh ? '获取token,发送HTTP请求传入appId以及appSecret,返回结果中的access_token就是申请到的token。' : 'To retrieve token, send HTTP request to appId and appSecret, and the access_token in the returned result is the applied token.' }} {{ isZh ? '获取token的地址:https://b2b-api.10jqka.com.cn/gateway/service-mana/app/login-appkey。(token有效期为24小时,请在应用程序中做好定时获取操作,避免token失效)' : 'Token retrieve link: https://b2b-api.10jqka.com.cn/gateway/service-mana/app/login-appkey. (The token is valid for 24 hours, so fixed retrieve operation must be ensured to prevent token failure)' }}
{{isZh?'获取Token:':'Acquire Token:'}}
curl -H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" -X POST -d 'appId=${Your AppId}&appSecret=${Your Appkey}' "https://b2b-api.10jqka.com.cn/gateway/service-mana/app/login-appkey"
{{isZh?'获取Token之后,在后续调用批量翻译接口时,在请求的header中添加"open-authorization":"Bearer${Your Token}",Bearer${Your Token}的意思是在token前面添加Bearer。':'After obtaining the Token, add "open-authorization": "Bearer${Your Token}" in the header of the request when the batch translation interface is called, and Bearer${Your Token} refer to adding a Bearer before the token.'}}
{{isZh?'例如:获取的token为xxxxx,则在请求批量翻译接口时,就需要在header中添加"open-authorization":"Bearerxxxxx"':'E.g. if the token obtained is xxxxx, it is necessary to add "open-authorization": "bearer xxxxx" in the header when requesting the batch translation interface.'}}
{{ isZh ? '集成批量翻译时,需按照以下要求:' : 'Follow the requirements below, when integrating mass translation:' }}
{{isZh ? '内容' : 'Content' }} | {{isZh ? '说明' : 'Description' }} |
{{isZh ? '传输方式' : 'Transmission mode' }} | {{isZh ? 'http[s] (为提高安全性,强烈推荐https)' : 'For security, https are highly recommend ' }} |
{{isZh ? '请求地址' : 'Request address' }} | http[s]://b2b-api.10jqka.com.cn/gateway/arsenal/machineTranslation/batch/get/result |
{{ isZh ? '字符编码' : 'Character encoding' }} | UTF-8 |
{{ isZh ? '响应格式' : 'Reply format' }} | {{ isZh ? '统一采用JSON格式' : 'All adopt JSON format' }} |
{{ isZh ? '开发语言' : 'Development language' }} | {{ isZh ? '任意,只要可以向同花顺云服务发起HTTP请求的均可' : 'Any language, as long as it can initiate an HTTP request to the RoyalFlush cloud service' }} |
{{ isZh ? '适用范围' : 'Coverage' }} | {{ isZh ? '任意操作系统,但因不支持跨域不适用于浏览器,请在后端调用接口' : "Any operating system. But it doesn't apply to browsers as it does not support cross-domain, and please call API at the back end" }} |
{{ isZh ? '注:服务器IP不固定,为保证您的接口稳定,请勿通过指定IP的方式调用接口,使用域名方式调用' : 'Note: the server IP is not fixed. To ensure your interface stable, do not call the interface by specific IP, but by domain name' }}
{{ isZh ? '内容' : 'Content' }} | {{ isZh ? '说明' : 'Description' }} |
URL | http[s]://b2b-api.10jqka.com.cn/gateway/arsenal/machineTranslation/batch/get/result |
{{ isZh ? '请求方式' : 'Request mode' }} | POST |
{{ isZh ? '头部信息' : 'Header' }} | "Content-type":"application/x-www-form-urlencoded; charset=UTF-8" "open-authorization":"Bearer${Your Token}" |
{{ isZh ? '参数' : 'Parameter' }} | {{ isZh ? '类型' : 'Type' }} | {{ isZh ? '必填' : 'Required' }} | {{ isZh ? '描述' : 'Description' }} |
text | string({{isZh?'数组格式':'Array format'}}) | {{ isZh ? '是' : 'Yes' }} | {{ isZh ? '翻译文本(最大限制最大20个句子,所有句子的字符数之和不能超过5000);编码格式:UTF-8' : 'Translated text (maximum: 20 sentences); Encoding format:' }} |
app_id | String | {{ isZh ? '是' : 'Yes' }} | {{ isZh ? '应用编号,从开放平台申请' : 'Application number: apply from the RoyalFlush Open Platform' }} |
from | String | {{ isZh ? '是' : 'Yes' }} | {{ isZh ? '原文语种' : 'Original language' }} |
to | String | {{ isZh ? '是' : 'Yes' }} | {{ isZh ? '译文语种' : 'Target language' }} |
domain | String | {{ isZh ? '是' : 'Yes' }} | {{ isZh ? '领域' : 'Domain' }} |
{{ isZh ? '参数' : 'Parameter' }} | {{ isZh ? '类型' : 'Type' }} | {{ isZh ? '描述' : 'Description' }} |
status_code | int | {{ isZh ? '0 表示请求成功,-1 表示其他异常,-2 表示字数超过限制,-3 权限校验未通过,-4 翻译失败' : '0 for successful request, -1 for other exceptions, -2 the number of words exceeding the limit, -3 failed permission verification, and -4 failed translation' }} |
status_msg | String | {{ isZh ? '提示信息' : 'Prompting message' }} |
data | String({{ isZh ? 'JSON格式' : ' JSON format' }}) | {{ isZh ? '翻译结果' : 'Translation result' }} |
request_id | String | {{ isZh ? '请求编号' : 'Request number' }} |
{{ isZh ? '参数' : 'Parameter' }} | {{ isZh ? '类型' : 'Type' }} | {{ isZh ? '描述' : 'Description' }} |
trans_result | {{isZh?'数组':'Array'}} | {{isZh?'完整的翻译结果。例如:':'Translation results of full sentence. For example:'}}"trans_result": [{"dst": "How you doin '? Yeah, I'm fine ","src": "你好吗?是的,我很好"}] |
result_list | {{isZh?'数组':'Array'}} | {{isZh?'每个分句的翻译结果。例如:':'Translation results of each clause. For example:'}}"result_list": [[{"dst": "How you doin '? ","src": "你好吗?"},{"dst": "Yeah, I'm fine ","src": "是的,我很好"}]] |
{{ isZh ? '语种' : 'Language' }} | {{isZh?language.zhName : language.enName}} |
{{ isZh ? '参数' : 'Parameter' }} | {{language.value}} |
{{ isZh ? '语种' : 'Language' }} | {{isZh?language.zhName : language.enName}} |
{{ isZh ? '参数' : 'Parameter' }} | {{language.value}} |
{{ isZh ? '领域' : 'Domain' }} | {{ isZh ? '参数' : 'Parameter' }} |
{{ isZh ? '金融领域' : 'Finance' }} | default |
{{ isZh ? '专利领域' : 'Patent' }} | patent |
{{ isZh ? '公告领域' : 'Announcement' }} | announcement |
{{ isZh ? '注:当前专利领域仅支持中到英翻译,公告领域仅支持英到中翻译,这两个领域的其他语向翻译将会自动切换默认领域。' : 'Note: Currently, the patent domain only supports Chinese-English translation, and the announcement domain only supports English-Chinese translation. Other linguistic translations in these two domains will automatically switch to the default domain. ' }}
{{isZh?'获取Token:':'Acquire Token'}}
curl -H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" -X POST -d 'appId=${Your AppId}&appSecret=${Your Appkey}' "https://b2b-api.10jqka.com.cn/gateway/service-mana/app/login-appkey"
{{isZh?'根据Token获取翻译结果:':'Translation results based on Token'}}
curl -H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" -H 'open-authorization: Bearer${Your Token}' -X POST -d 'text=["hello","world"]&app_id=${Your AppId}&domain=default&from=zh&to=en' "http://b2b-api.10jqka.com.cn/gateway/arsenal/machineTranslation/batch/get/result"
public static void main(String[] args) throws Exception{
translate();
}
public static void translate(){
String tokenUrl="https://b2b-api.10jqka.com.cn/gateway/service-mana/app/login-appkey";
Map<String,Object> param=new HashMap<>();
param.put("appId","Your appid");
param.put("appSecret","Your appkey");
String authResult=doPost(tokenUrl,param,"");
System.out.println("authResult:"+authResult);
JSONObject authJson= JSONObject.parseObject(authResult);
JSONObject dataJson=authJson.getJSONObject("data");
String access_token=dataJson.getString("access_token"); //{{isZh?'token有效期为24小时,请在应用程序中做好定时获取操作,避免token失效':'Token is valid for 24 hours, so please get it regularly in the app to avoid it invalid'}}
Map<String,Object> paramObject=new HashMap<>();
JSONArray array=new JSONArray();
array.add("Hello, world.");
array.add("Nice to meet you.");
paramObject.put("text",array.toJSONString());
paramObject.put("app_id","Your appid");
paramObject.put("from","en");
paramObject.put("to","zh");
paramObject.put("domain","default");
String url="https://b2b-api.10jqka.com.cn/gateway/arsenal/machineTranslation/batch/get/result";
String auth="Bearer"+access_token;
System.out.println("result:"+doPost(url,paramObject,auth));
}
public static String doPost(String url, Map<String, Object> paramMap,String auth) {
InputStream is = null;
BufferedReader br = null;
String result = null;
HttpClient httpClient = new HttpClient();
httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(15000);
PostMethod postMethod = new PostMethod(url);
postMethod.setRequestHeader("Content-type","application/x-www-form-urlencoded; charset=UTF-8");
postMethod.setRequestHeader("open-authorization",auth);
postMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 60000);
NameValuePair[] nvp = null;
if (null != paramMap && paramMap.size() > 0) {
nvp = new NameValuePair[paramMap.size()];
int index = 0;
Object[] keys=paramMap.keySet().toArray();
for(int i=0;i<keys.length;i++){
String key=(String) keys[i];
nvp[i]=new NameValuePair(key,paramMap.get(key).toString());
}
}
if (null != nvp && nvp.length > 0) {
postMethod.setRequestBody(nvp);
}
try {
int statusCode = httpClient.executeMethod(postMethod);
if (statusCode != HttpStatus.SC_OK) {
System.err.println("Method faild: " + postMethod.getStatusLine());
}
is = postMethod.getResponseBodyAsStream();
br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
StringBuffer sbf = new StringBuffer();
String temp = null;
while ((temp = br.readLine()) != null) {
sbf.append(temp).append("\r\n");
}
result = sbf.toString();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (null != br) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null != is) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
postMethod.releaseConnection();
}
return result;
}
# coding=utf-8
import hashlib
import json
import time
import requests
import sys
appid = 'Your appid'
appkey = 'Your appkey'
def getToken():
tokenUrl = 'https://b2b-api.10jqka.com.cn/gateway/service-mana/app/login-appkey'
param = {}
param['appId'] = appid
param['appSecret'] = appkey
authResult = requests.post(tokenUrl, data=param)
authResult = authResult.content
res = json.loads(authResult)
access_token = ''
if 0 == res['flag']:
access_token = res['data']['access_token']
return access_token
def translate(texts, token):
if '' == token:
return
param = {}
param['app_id'] = appid
param['from'] = 'en'
param['to'] = 'zh'
param['domain'] = 'default'
param['text'] = json.dumps(texts)
headers = {"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", "open-authorization": "Bearer" + token}
url = 'https://b2b-api.10jqka.com.cn/gateway/arsenal/machineTranslation/batch/get/result'
response = requests.post(url, headers=headers, data=param)
Ret = response.content
res = json.loads(Ret)
if 0 == res['status_code']:
res = res['data']
for rst in res['trans_result']:
print(rst['dst'])
if __name__ == '__main__':
token = getToken() #{{isZh?'token有效期为24小时,请在应用程序中做好定时获取操作,避免token失效':'Token is valid for 24 hours, so please get it regularly in the app to avoid it invalid'}}
texts = []
texts.append('Hello, world.')
texts.append('Nice to meet you.')
translate(texts, token)
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Net.Http;
using System.Text.Json.Serialization;
namespace test
{
class Program
{
static void Main(string[] args)
{
translate();
}
public static void translate()
{
using (var httpClient = new HttpClient())
{
String url = "https://b2b-api.10jqka.com.cn/gateway/service-mana/app/login-appkey";
FormUrlEncodedContent body = new FormUrlEncodedContent(new Dictionary<string, string>
{
{ "appId","Your appid"},
{ "appSecret","Your appkey"}
});
var response = httpClient.PostAsync(url, body).Result;
var result = response.Content.ReadAsStringAsync().Result;
JObject jr = (JObject)JsonConvert.DeserializeObject(result);
string data = jr["data"].ToString();
JObject jdata = (JObject)JsonConvert.DeserializeObject(data);
string access_token = jdata["access_token"].ToString();
String auth = "Bearer" + access_token;
String url2 = "https://b2b-api.10jqka.com.cn/gateway/arsenal/machineTranslation/batch/get/result";
var body2 = new FormUrlEncodedContent(new Dictionary<string, string>
{
{ "text","[\"你好\",\"世界\"]"},
{ "app_id","bdbd"},
{ "from","zh"},
{ "to","en"},
{ "domain","default"}
});
doPost(url2,body2,auth);
}
}
private static void doPost(String url, FormUrlEncodedContent body,String auth)
{
using (var httpClient = new HttpClient())
{
//{{isZh?'设置请求头':'Set request headers '}}
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "relativeAddress");
httpClient.DefaultRequestHeaders.Add("open-authorization", auth);
// response
var response = httpClient.PostAsync(url, body).Result;
var result = response.Content.ReadAsStringAsync().Result;
JObject jr = (JObject)JsonConvert.DeserializeObject(result);
string data = jr["data"].ToString();
JObject jdata = (JObject)JsonConvert.DeserializeObject(data);
string trans_result = jdata["trans_result"].ToString();
Console.Write(trans_result);
}
}
}
}
文档翻译API接口提供同花顺文档翻译服务。您只需要通过调用文档翻译API,上传文档,指定源语言与目标语言,通过POST请求方式,就可以将文档中的文字内容进行翻译。
JSONObject paramObject=new JSONObject();
paramObject.put("file",file);
paramObject.put("app_id","****");
paramObject.put("from","en");
paramObject.put("to","zh");
paramObject.put("domain","default");
String url="https://b2b-api.10jqka.com.cn/gateway/arsenal/machineTranslation/api/v2/doc_translate";
JSONObject result= HttpUtil.getResultHttpPost(url,jsonObject);
调用方在集成文档翻译API时,请遵循以下规则
规则 | 描述 |
传输方式 | https |
请求方式 | post |
请求地址 | https://b2b-api.10jqka.com.cn/gateway/arsenal/machineTranslation/api/v2/doc_translate |
字符编码 | UTF-8 |
请求格式 | 表单(multipart/form-data;) |
响应格式 | JSON |
入参说明
参数 | 类型 | 必填 | 描述 |
file | file | 是 | 待翻译文档,需用post multipart/form-data 方式上传 |
param | String | 是 | 翻译参数的json字符串 |
ts | String | 是 | 当前时间戳 |
secretKey | String | 是 | 加密字符串(加密字符串生成规则:加密字符串=MD5(appKey+param+ts) |
param 参数说明
参数 | 类型 | 必填 | 描述 |
appId | String | 是 | 应用编号 |
from | String | 是 | 原文语种, 中文:zh,英文:en |
to | String | 是 | 译文语种,中文:zh,英文:en |
domain | String | 是 | 领域, 默认领域:default,专利领域:patent |
接口返回结果示例
"code": 0,
"note": "操作成功",
"data": {
"originalDTO": {
"imagePath": ["图片地址1" ,"图片地址2" ]
},
"translationDTO": {
"imagePath": ["图片地址1" ,"图片地址2" ]
}
}
接口返回结果参数说明:
出参 | 说明 |
code | 请求结果 (0 表示成功,其他表示异常,) |
note | 提示信息 |
data | 返回数据 |
originalDTO | 原文文档解析结果 |
translationDTO | 翻译后文档解析结果 |
image | 翻译结果图片数据base64编码后字符串数组 |
imagePath | 翻译结果图片地址数组 |
异常码code 说明:
code | 说明 |
0 | 请求成功 |
4000 | 系统异常 |
5000 | 参数异常 |
5001 | 非标注格式文档 |
5002 | 文档大小超过限制(5M) |
6000 | 翻译失败 |