| 密级 | 公开 |
|---|---|
| 版本 | 10D.2 |
AICP ASR TRANS 开发手册
1. 功能介绍#
ASR TRANS 属于语音离线识别场景,用户提交一个或多个待识别的语音文件来创建离线转写任务, ASR TRANS 服务则在后台对所有任务根据优先级进行识别,如果用户需要,可在任务完成后通知用户。用户也可主动查询任务状态,当任务部分完成或全部完成时,用户可以下载部分或全部识别结果。
2. 术语与缩写#
| 术语或缩写 | 说明 |
|---|---|
| taskId, task_id | 转写任务标识 |
| fileIndex, file_index | 音频文件索引,用于标识转写任务中的音频文件 |
| fileId | 上传文件标识 |
| property | 模型特殊串,如 cn_8k_common, cn_16k_common |
本文档中使用 {var} 格式进行变量替换 (variable substitution)
参数约束符号
| 参数约束 | 说明 |
|---|---|
| = | N 选一参数 |
| ✓ | 必选参数 |
| ✗ | 可选参数 |
3. 接口定义#
所有接口使用 access token 进行用户认证,需要在 URL 中给出 appkey 参数,并设置 X-Hci-Access-Token HTTP Header。X-Hci-Access-Token 的值通过系统接口 get-access-token 获取。
下面的接口定义中,不再列出用户认证相关的参数
本文档中,当表示一个音频文件转写完成时,包含成功和失败两种类别的状态。当转写失败时,ASR TRANS 服务不会尝试再次进行转写。
注意: 对于 JSON 类型输入,本文档有如下约定
- 对于所有 boolean 类型字段,默认值均为
false - 名称未在定义范围内的字段均会被忽略
- 对于object 类型字段
- 设置为
null等价于未设置 - 设置为
{}等价于本字段对象的所有字段取默认值
- 设置为
- 对于 array 类型字段,设置为
null等价于未设置
本文档中采用如下风格进行 JSON 格式定义
| 字段 | 类型 | 描述 |
|---|---|---|
| numberKey | number | 数字类型字段 |
| stringKey | string | 字符串字段 |
| booleanKey | boolean | 布尔类型字段 |
| arrayKey | array | 数组类型字段 |
| arrayKey[#] | string | 数组元素为字符串, # 为数组索引 |
| objectArray | array | 数组类型字段 |
| objectArray[#] | object | 组元素为对象, # 为数组索引 |
| objectArray[#].id | number | 数组元素子字段 |
| objectKey | object | 对象类型字段 |
| objectKey.name | string | ... |
| objectKey.subobj | object | ... |
| objectKey.subobj.key | boolean | ... |
对应 JSON 示例如下:
3.1 模型查询#
列出服务支持的 property 列表
3.1.1 URL#
GET http://host[:port]/v10/asr/trans/list_properties
3.1.2 请求#
无请求参数
3.1.3 响应#
响应头 Content-Type 为 application/json,响应内容包含如下字段
| 字段 | 类型 | 描述 |
|---|---|---|
| code | number | 响应状态码, 请参考附录中的响应状态码表 |
| message | string | 响应状态消息 |
| properties | array | property 数组 |
| properties[#] | string | property |
3.2 准备上传#
上传文件数据前先使用本接口获取待上传文件的 ID。上传文件 ID 从创建时刻起 24 小时有效,用户需要在 24 小时内完成文件上传并用其创建转写任务。超过 24 小时,将被自动清理掉。
3.2.1 URL#
POST http://host[:port]/v10/asr/trans/{property}/prepare_upload
3.2.2 请求#
无请求参数
请求头 Content-Type 为 application/json,包含以下字段
| 字段 | 类型 | 必选 | 说明,标 (*) 的为默认值 |
|---|---|---|---|
| name | string | ✓ | 准备上传的文件名称 |
| size | number | ✓ | 准备上传的文件大小 |
| sliceSize | number | ✗ | 分片大小,默认 8388608 (8M), |
| 最小为 1048576 (1M),最大为 67108864 (64M) |
3.2.3 响应#
响应头 Content-Type 为 application/json,响应内容包含如下字段
| 字段 | 类型 | 描述 |
|---|---|---|
| code | number | 响应状态码, 请参考附录中的响应状态码表 |
| message | string | 响应状态消息 |
| fileId | string | 上传文件 Id |
| sliceSize | number | 分片大小 |
| sliceCount | number | 分片个数 |
3.3 分片上传#
使用本接口上传文件分片。所有文件分片上传完成后,可以在任务提交接口的
files 数组中使用 upload://{fileId} 格式的 URL 引用上传的文件。
同一分片在只允许有一个进行中的上传请求;对于已上传的分片,后续上传请求会失败。
所有分片上传后,上传文件 fileId 即可用于创建任务。其对应文件的合并操作将在用 fileId 创建任务时进行。
3.3.1 URL#
POST http://host[:port]/v10/asr/trans/{property}/upload?fileId={...}&sliceIndex={...}
3.3.2 请求#
| 参数名 | 类型 | 必选 | 说明 |
|---|---|---|---|
| fileId | string | ✓ | 准备上传接口返回的文件 Id |
| sliceIndex | number | ✓ | 分片序号,基数为 0 |
请求头 Content-Type 为 application/octet-stream,除最后一个分片外,包体大小必须与准备上传接口返回结果中的 sliceSize 一致;最后一个分片的包体大小可以小于 sliceSize。
建议请求中使用请求头 Expect: 100-continue,这样可以让服务端有机会在客户端发送包体内容前检查请求是否有效,避免请求无效的情况下也需要发送包体内容。请参考这里了解更多。
3.3.3 响应#
响应头 Content-Type 为 application/json,响应内容包含如下字段
| 字段 | 类型 | 描述 |
|---|---|---|
| code | number | 响应状态码, 请参考附录中的响应状态码表 |
| message | string | 响应状态消息 |
3.4 任务提交#
使用本接口提交转写任务
3.4.1 URL#
POST http://host[:port]/v10/asr/trans/{property}/submit
3.4.2 请求#
无请求参数
请求头 Content-Type 为 application/json,包含以下字段
| 字段 | 类型 | 必选 | 说明,标 (*) 的为默认值 |
|---|---|---|---|
| files | array | = | 音频文件 URL 数组,支持的 scheme 有: ftp://, sftp://, http://, https://, file://, upload:// |
| folder | object | = | 音频目录对象,扫描指定的目录以获取音频文件列表 |
| folder.paths | array | ✓ | 音频目录路径数组,长度最小为 1 |
| folder.paths[#] | string | ✓ | 音频目录路径,支持 file://, ftp://, sftp:// |
| folder.exts | array | ✓ | 扩展名数组,长度最小为 1,仅扫描指定扩展名的文件 |
| folder.exts[#] | string | ✓ | 扩展名,例如: .mp3 |
| audioFormat | string | ✓ | 音频文件格式,请参考后面的表格 |
| vocab | string | ✗ | 识别时使用的热词资源 |
| priority | number | ✗ | 任务优先级。浮点类型,默认为 0,可为负数 越小优先级越高 |
| channelCount | number | ✗ | 音频通道数,对裸音频格式可取值:1*, 2。 对于 auto 格式,可以不设置,按实际声道数量处理; 或者设置为 1,多声道音频将会合并为一个声道 |
| notifyUrl | string | ✗ | 转写完成通知回调 URL 设为 "default" 使用配置中的默认回调地址 |
| saveTo | object | ✗ | 转写结果保存至指定位置,可选设置 不设置则将结果缓存 72 小时供用户下载,超时丢弃 缓存时间在 aicp_trans_http 服务配置中可修改 |
| saveTo.path | string | ✓ | 保存位置,可以是 ftp, sftp, file 链接地址或本地路径 在此路径下创建名为 {task_id} 的目录保存转写结果和 清单文件 manifest.json (任务查询接口的输出) |
| saveTo.style | string | ✓ | 结果文件名风格。取值: index, path, name |
| resultType | string | ✗ | 结果类型: JSON*, SRT, TXT |
| outputPinyin | boolean | ✗ | 是否输出拼音,仅对 JSON 结果有效 |
| words | object | ✗ | 输出分词信息,无此项时不输出,仅对 JSON 结果有效 |
| words.type | string | ✗ | 分词类型,取值: WORD*, CHAR |
| words.tpp | boolean | ✗ | 输出原始识别分词结果(false),还是后处理结果(true) |
| sa | object | ✗ | 是否要进行质检相关工作,无此项不做质检工作 |
| sa.diarization | boolean | ✗ | 是否做话者分离,仅对单声道数据有效 |
| sa.checkRole | boolean | ✗ | 如果是双声道音频或者做话者分离,是否做角色类型判断 |
| sa.channelRole | string | ✗ | 针对双声道音频,做角色判断时根据此值输出角色类型 取值: LEFT_AGENT*, RIGHT_AGENT |
| sa.checkEmotion | boolean | ✗ | 是否需要做情绪检测 |
| sa.outputSpeed | boolean | ✗ | 是否输出语速信息 |
| sa.outputVolume | boolean | ✗ | 是否输出音量信息 |
| sa.outputSilence | boolean | ✗ | 是否输出静音段数组 |
| tpp | object | ✗ | 是否要进行后处理 |
| tpp.addPunc | boolean | ✗ | 是否执行打标点后处理 |
| tpp.puncWeight | number | 打标点权重,数值越大,打的标点越多。 范围: [-100, 100],默认值由服务端引擎配置文件设置 | |
| tpp.textSmooth | boolean | ✗ | 是否执行文本顺滑后处理 |
| tpp.digitNorm | boolean | ✗ | 是否执行数字归一化后处理 |
| tpp.wordFilter | boolean | ✗ | 是否执行敏感词过滤后处理 |
| tpp.makeParagraph | boolean | ✗ | 是否执行文本分段,可用于 JSON 结果, 或者 sa 为空时的 TXT 结果 |
audioFormat 支持以下取值,除 auto 外均为裸音频格式
| audioFormat | 采样率 | 采样格式 |
|---|---|---|
| pcm_s16le_16k | 16000 | 小端有符号 16 位整形 PCM 采样 |
| pcm_s16le_8k | 8000 | 小端有符号 16 位整形 PCM 采样 |
| alaw_16k | 16000 | 8 位 a-Law 压缩格式采样 |
| alaw_8k | 8000 | 8 位 a-Law 压缩格式采样 |
| ulaw_16k | 16000 | 8 位 mu-Law 压缩格式采样 |
| ulaw_8k | 8000 | 8 位 mu-Law 压缩格式采样 |
| vox_8k | 8000 | 4 位 Dialogic IMA ADPCM 采样 |
| vox_6k | 6000 | 4 位 Dialogic IMA ADPCM 采样 |
| auto | 未知 | 使用 ffprobe 自动探测音频文件格式 |
saveTo.style 文件名风格
- 所有文件名风格的文件名均由两部分组成
{name}{ext},扩展名{ext}均由resultType决定resultType为 JSON 时,{ext}取.jsonresultType为 SRT 时,{ext}取.srtresultType为 TXT 时,{ext}取.txt
index:{name}取值为{file_index}path:{name}取值为转义后的 URL,转义规则如下:http://,ftp://,upload://等转换为http/,ftp/,upload/, 如果是本地路径,增加前缀file/- 对非安全字符
<,>,:,",|,?,*,~进行转义,格式为~xx, 其中xx为字符的 16 进制值 - 其他字符保持不变
- 例如:
http://www.aicloud.com/dir/dir2/download?id=222转换为http/www.aicloud.com/dir/dir2/download~3fid=222/home/user/a.dat~转换为file/home/user/a.dat~7e
name:{name}取值为路径中的{base_name}- 当使用
folder仅只给出一个路径时,可使用本风格 - 其中
base_name路径中的最后一段,例如:/path/of/a.mp3取值为a.mp3
- 当使用
说明
- folder 和 files 字段为二选一选项,仅可且必须设置其中一个
- 对于 folder 或 files 中的重复项会做去重操作,用户应以响应中返回的最终文件列表为准
- 提交任务时,audioFormat 和 {property} 对应的采样率可以不匹配,服务会自动进行升/降采样。
- 对于 auto 格式,音频文件需满足
- 只能且必须包含一个音频流
- 音频流声道数量只能为 1 或者 2
vocab字段使用的热词资源中通常包含换行符,简单字符串拼接构造的 json 字符串,一般是不符合 json 替换的,请使用正规的 json 库来构建 json 字符串。vocab热词资源如果有格式错误导致无法加载,不会阻碍任务的提交,但后续会根据aicp_asr_trans服务trans.ignore_invalid_vocab配置项的取值,采取以下两种处理方式- 若
trans.ignore_invalid_vocab为true,忽略热词资源错误,任务继续执行。 - 若
trans.ignore_invalid_vocab为false,整个任务失败
- 若
3.4.3 响应#
响应头 Content-Type 为 application/json,响应内容包含如下字段
| 字段 | 类型 | 描述 |
|---|---|---|
| code | number | 响应状态码, 请参考附录中的响应状态码表 |
| message | string | 响应状态消息 |
| taskId | string | 新建任务的 Id |
| priority | number | 任务优先级 |
| files | array | 音频文件数组 |
| files[#] | object | 音频文件对象 |
| files[#].index | number | 音频文件索引,任务内唯一,基数为 0 |
| files[#].path | string | 音频文件 URL 或路径 |
| files[#].code | number | 音频文件状态码 |
| files[#].info | string | 音频文件状态信息 |
对于上传的文件,响应中的 files[#].path 会追加 prepare_upload 接口中设置的文件名,例如:
upload://8/a.mp3
3.5 任务查询#
查询指定转写任务的当前状态信息
3.5.1 URL#
GET http://host[:port]/v10/asr/trans/{property}/query?task={task_id}
3.5.2 请求#
| 参数名 | 类型 | 必选 | 说明 |
|---|---|---|---|
| task | string | ✓ | 转写任务 Id |
3.5.3 响应#
响应头 Content-Type 为 application/json,响应内容包含如下字段
| 字段 | 类型 | 描述 |
|---|---|---|
| code | number | 响应状态码, 请参考附录中的响应状态码表 |
| message | string | 响应状态消息 |
| taskId | string | 新建任务的 Id |
| priority | number | 任务优先级 |
| finished | boolean | 任务是否已完成 |
| createTime | string | 任务创建时间, 遵循 RFC 3339 格式 |
| failure | string | 热词资源前置检查错误消息aicp_asr_trans 配置项 trans.ignore_invalid_vocab 为 false且提交任务时使用了不合法热词资源时此字段存在 |
| files | array | 转写音频文件数组,当 failure 字段存在,无本字段 |
| files[#] | object | 转写音频文件 |
| files[#].index | number | 音频文件索引,任务内唯一,基数为 0 |
| files[#].duration | number | 音频时长,单位: ms 值为 -1 表示音频时长暂时未知 |
| files[#].channels | number | 音频声道数量 值为 -1 表示声道数量暂时未知 |
| files[#].path | string | 音频文件 URL 或路径 |
| files[#].code | number | 音频文件状态码 |
| files[#].info | string | 音频文件状态信息 |
| files[#].startTime | string | 开始转写时间, 遵循 RFC 3339 格式,当开始转写后存在 |
| files[#].finishTime | string | 转写完成时间, 遵循 RFC 3339 格式,当已完成时存在 |
| files[#].progress | number | 转写进度百分比, [0-100] 之间整数,当开始转写后存在 |
3.6 任务取消#
取消指定的转写任务
3.6.1 URL#
GET http://host[:port]/v10/asr/trans/{property}/cancel?task={task_id}
3.6.2 请求#
| 参数名 | 类型 | 必选 | 说明 |
|---|---|---|---|
| task | string | ✓ | 转写任务 Id |
3.6.3 响应#
响应头 Content-Type 为 application/json,响应内容包含如下字段
| 字段 | 类型 | 描述 |
|---|---|---|
| code | number | 响应状态码, 请参考附录中的响应状态码表 |
| message | string | 响应状态消息 |
3.7 结果下载#
下载任务中指定文件或全部文件的转写结果
3.7.1 URL#
GET http://host[:port]/v10/asr/trans/{property}/download?task={task_id}&files={...}&name_style={...}
3.7.2 请求#
| 参数名 | 类型 | 必选 | 说明 |
|---|---|---|---|
| task | string | ✓ | 转写任务 Id |
| files | string | ✗ | 给出待下载文件的索引列表,可以指定多个,用半角逗号隔开 不指定本参数时,下载所有文件 |
| name_style | string | ✗ | 下载多个文件时,指定 zip 压缩包中的文件名风格 支持 index* 和 path 两种风格 |
3.7.3 响应#
响应结果分为以下情况
请求参数不正确时,Content-Type 为
application/json,HTTP 状态码为 400task指定的任务不存在时,Content-Type 为application/json,HTTP 状态码为 404指定了
files且其中某个索引不存在时,Content-Type 为application/json,HTTP 状态码为 404通过指定
files参数只下载一个文件文件已转写成功时,返回转写结果,HTTP 状态码为 200 (OK)
- 当
resultType为JSON时,Content-Type 为application/json - 当
resultType为SRT时,Content-Type 为text/plain - 当
resultType为TXT时,Content-Type 为text/plain
- 当
否则,返回如下字段信息,Content-Type 为
application/json,HTTP 状态码为 406 (Not Acceptable)字段 类型 描述 code number 响应状态码, 请参考附录中的响应状态码表 message string 响应状态消息 file object 音频文件对象 file.index number 音频文件索引,任务内唯一,基数为 0 file.path string 音频文件 URL 或路径 file.code number 音频文件状态码 file.info string 音频文件状态信息 file.startTime string 开始转写时间, 遵循 RFC 3339 格式,当开始转写后存在 file.finishTime string 转写完成时间, 遵循 RFC 3339 格式,当已完成时存在 file.progress number 转写进度百分比, [0-100] 之间整数,当开始转写后存在
未设置
files或者通过指定files参数下载多个文件时- 返回 zip 格式压缩包,响应类型为
application/zip - 压缩包中包含 manifest.json 和已转写成功的结果文件
- manifest.json 内容与任务查询接口响应结果相同
- 结果文件名称的风格由 name_style 参数控制,支持 index 和 path 两种风格,详见任务提交接口的
saveTo.style字段说明
- 返回 zip 格式压缩包,响应类型为
3.8 队列状态#
查看转写任务队列状态,给出转写任务列表
3.8.1 URL#
GET http://host[:port]/v10/asr/trans/{property}/status?type={...}
本操作仅限于 URL 中 {property} 相关的任务
3.8.2 请求#
| 参数名 | 类型 | 必选 | 说明 |
|---|---|---|---|
| type | string | ✗ | 任务类型:可以为 all*, finished, queued 不指定本参数时,默认取 all |
3.8.3 响应#
响应头 Content-Type 为 application/json,响应内容包含如下字段
| 字段 | 类型 | 描述 |
|---|---|---|
| code | number | 响应状态码, 请参考附录中的响应状态码表 |
| message | string | 响应状态消息 |
| tasks | array | 任务数组 |
| tasks[#] | object | 转写任务 |
| tasks[#].taskId | string | 转写任务标识 |
| tasks[#].priority | number | 转写任务优先级 |
| tasks[#].finished | boolean | 转写任务是否已完成 |
| tasks[#].invalidVocab | boolean | 当转写任务因热词不合法失败时,此字段存在且为 true |
3.9 重启任务#
重启指定的或所有的任务。
本操作的使用场景一般为,提交高优先转写任务后,重启所有低优先级任务,以释放资源使高优先级任务尽早执行。否则,只有在正在执行的低优先级任务完成并释放了资源后,高优先级任务才能够开始执行。
3.9.1 URL#
GET http://host[:port]/v10/asr/trans/{property}/restart?tasks={...}
本操作仅限于 URL 中 {property} 相关的任务
3.9.2 请求#
| 参数名 | 类型 | 必选 | 说明 |
|---|---|---|---|
| tasks | string | ✗ | 转写任务 Id 列表,使用半角逗号给隔开 不指定本参数时,重启所有任务 |
3.9.3 响应#
响应头 Content-Type 为 application/json,响应内容包含如下字段
| 字段 | 类型 | 描述 |
|---|---|---|
| code | number | 响应状态码, 请参考附录中的响应状态码表 |
| message | string | 响应状态消息 |
| tasks | array | 被重启的任务列表 |
| tasks[#] | string | 任务 Id |
3.10 回调通知#
回调通知接口由用户实现,aicp_trans_http 会调用此接口通知用户任务已完成
3.10.1 URL#
GET http://host[:port]/{api_path}?task={task_id}
api_path 由用户自行定义。
3.10.2 请求#
| 参数名 | 类型 | 必选 | 说明 |
|---|---|---|---|
| task | string | ✓ | 完成任务的 Id |
| save_status | number | ✗ | 提交任务时未设置 saveTo,无此参数1 表示结果成功保存至 saveTo.path0 表示结果未能成功保存至 saveTo.path,用户应使用结果下载接口获取结果 |
用户在设定 notifyUrl 时,可以有其他参数,例如: http://myserver/api/task_finish_calback?myparam=blahblah,调用回调通知时,会追加 task 参数,实际访问的地址将为:
http://myserver/api/task_finish_calback?myparam=blahblah&task={task_id}
3.10.3 响应#
调用成功时需返回 HTTP 状态码为 200 的响应,对内容无要求。
HTTP 状态码处理逻辑如下:
- 当接口返回
2xxHTTP 状态码时,认为操作成功 - 当接口返回
5xxHTTP 状态码时,认为发生临时性错误,会尝试继续调用通知回调,直到超过指定次数后停止尝试。 - 当接口返回其他 HTTP 状态码时,认为发生永久性失败,不会尝试继续调用通知回调
4. 附录#
4.1 音频文件状态码表#
| 状态码 | 音频文件状态说明 |
|---|---|
| 1000 | 音频文件下载排队中 |
| 1001 | 音频文件下载进行中 |
| 1002 | 音频文件下载失败,等待重试 |
| 2000 | 音频文件转码排队中 |
| 2001 | 音频文件转码进行中 |
| 3000 | 音频文件转写排队中 |
| 3001 | 音频文件转写进行中 |
| 4000 | 音频文件转写成功 |
| 4100 | 下载时未找到音频文件或找不到上传文件 (HTTP 404) |
| 4101 | 音频文件下载失败 |
| 4102 | 上传文件不完整 |
| 4200 | 音频文件格式未知,无法进行格式转换 |
| 4201 | 文件中未找到音频流,无法进行格式转换 |
| 4202 | 文件中找到多个音频流 |
| 4203 | 文件中音频流的声道数量不是 1 或者 2 |
| 4204 | 格式转换失败 |
| 4300 | 音频时长超过最大限制 |
| 4301 | 音频文件无法启动转写识别 |
| 4302 | 音频文件转写识别失败 |
状态转换图 (绿色箭头方向为正常路径)
4.2 响应状态码表#
| 状态码 | HTTP 状态码 | 响应状态说明 |
|---|---|---|
| 10200 | 200 | 操作成功 |
| 10400 | 400 | 请求错误,一般是输入参数不正确 |
| 10404 | 404 | 任务未找到,或上传文件未找到 |
| 10406 | 406 | 因转写失败或者未完成无法下载指定的文件 |
| 10409 | 409 | 文件分片已存在或正在上传中 |
| 10500 | 500 | 内部错误 |
| 10503 | 503 | 临时性错误,用户应尝试重新发送请求 |
任务 ID 正确,但任务
{property}与请求 URL 中的{property}不匹配时会使用 10404 状态码
4.3 JSON 转写结果#
| 字段 | 类型 | 说明 |
|---|---|---|
| silences | array | 静音段数组,sa.outputSilence 设置为 true 时可用 |
| silences[#] | object | 静音段 |
| silences[#].st | number | 静音段开始时间,单位: ms |
| silences[#].et | number | 静音段结束时间,单位: ms |
| sentences | array | 识别结果断句数组 |
| sentences[#] | object | 识别结果断句 |
| sentences[#].st | number | 音频开始时间,单位: ms |
| sentences[#].et | number | 音频结束时间,单位: ms |
| sentences[#].text | string | 断句识别结果。当 tpp.makeParagraph 为 true 时,结果中包含 \n 换行符作为分段边界 |
| sentences[#].py | string | 拼音结果,如果设置了 outputPinyin |
| sentences[#].c | number | 识别结果置信度,范围: [0, 1] |
| sentences[#].words | array | 分词数组,如果设置了 words |
| sentences[#].words[#] | object | 分词 |
| sentences[#].words[#].st | number | 音频开始时间,单位: ms |
| sentences[#].words[#].et | number | 音频结束时间,单位: ms |
| sentences[#].words[#].c | number | 置信度,范围: [0, 1] |
| sentences[#].words[#].w | string | 分词文本 |
| sentences[#].words[#].py | string | 分词拼音,如果设置了 outputPinyin |
| sentences[#].words[#].t | string | 分词类别,详见表后的分词类别说明 |
| sentences[#].sa | object | 质检结果 |
| sentences[#].sa.role | string | 输出 user, agent 或者输出格式如 role_0, role_1 的共 N 个角色。N 目前最大为 2。 请参考 SRT 转写结果 中的说明 |
| sentences[#].sa.speed | number | 语速,如果 sa.outputSpeed 为 true |
| sentences[#].sa.avgVol | number | 平均音量,如果 sa.outputVolume 为 true |
| sentences[#].sa.maxVol | number | 最大音量,如果 sa.outputVolume 为 true |
| sentences[#].sa.emotions | array | 情绪信息数组 如果 sa.checkEmotion 为 true 且有情绪检测结果 |
| sentences[#].sa.emotions[#] | object | 情绪信息 |
| sentences[#].sa.emotions[#].st | number | 音频开始时间,单位: ms |
| sentences[#].sa.emotions[#].et | number | 音频结束时间,单位: ms |
| sentences[#].sa.emotions[#].c | number | 置信度,范围: [0, 1] |
| sentences[#].sa.emotions[#].e | string | HAPPY, ANGRY, SAD, DISGUSTED 四者之一 |
结果中的分词类别包含
| 类别 | 全名 | 说明 |
|---|---|---|
| U | Userword | 用户热词 |
| P | Punctuation | 标点 |
| S | Smoothed | 顺滑词 |
| M | Masked | 被过滤的敏感词 |
| D | DigitNorm | 数字归一化词 |
如果有多个分词类别标识,可以写多个,比如 'UM',但这种情况一般不会出现。当是正常词没有任何特殊标识时, t 项被省略。
4.4 SRT 转写结果#
如果 sa 不为空,sa.darization 为 false, 单通道语音:角色标识都是 role_0。
如果 sa 不为空,sa.darization 为 false, sa.checkRole 为 false,双通道语音:角色标识按照左右声道分别是 role_0, role_1 。
如果 sa 不为空,sa.darization 为 false, sa.checkRole 为 true,双通道语音:角色标识按照左右声道和 sa.channelRole 配置,分别是 agent, user 。
如果 sa 不为空, sa.darization 为 true(此时只针对单通道语音),且 sa.checkRole 为 false:角色按照分出的两种声道,分别是 role_0, role_1。
如果 sa 不为空, sa.darization 为 true(此时只针对单通道语音),且 sa.checkRole 为 true:角色按照分出的两种声道,和自动判断的角色类型,分别是 agent, user。
如果 sa 为空:不需要角色标识。
4.5 TXT 转写结果#
如果 sa 不为空的时候,角色标识和 SRT 一样,例如:
如果 sa 为空且 tpp.makeParagraph 为 false:不需要角色标识,按识别分句每行一句。例如:
如果 sa 为空且 tpp.makeParagraph 为 true:不需要角色标识,按照后处理的分段结果,加入空行。其它的行合并为段落,行之间需要加一个空格,防止其它语种下又没有标点时两个词合并成一个词。例如:
4.6 远端文件访问认证#
提交转写任务时,folder.paths, files, saveTo.path 三个字段均可以添写远端文件地址。
- files 支持的远端地址包括:
- http://, https://
- ftp://
- sftp://
- folder.paths, saveTo.path 支持的远端地址包括
- ftp://
- sftp://
访问远端文件服务时一般需要进行用户认证,离线转写服务允许用户在提交转写任务时在 URL
中提供用户认证信息,例如: ftp://username:password@host/path/of/file,或者只提供用户名
ftp://username@host/path/of/file。对于 http://, https://, sftp://
也可使用同样的格式在 URL 中提供用户认证信息。这种方式存在安全问题,使用此方式时,用户应自行承担风险。
更为安全的方法是通过 aicp_trans_http 的配置文件 aicp_trans_http.toml 提供用户认证信息。相关字段示例如下
5. 版本记录#
| 接口版本 | 平台支持版本 | 组件及支持版本 | 修改内容 |
|---|---|---|---|
| 10.3.0 | 10D.1 | aicp_trans_http 10.6.0 | 支持文件分片上传 |
| 10.2.0 | 10C.0 | aicp_trans_http 10.3.0 | 支持设置标点权重 支持 auto 时多声道合并为单声道识别 |
| 10.1.0 | 10B.1 | aicp_trans_http 10.1.0 | 支持静音列表输出 |
| 10.0.0 | 10B.0 | aicp_trans_http 10.0.0 | 初始版本 |