密级公开
版本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 类型输入,本文档有如下约定

  1. 对于所有 boolean 类型字段,默认值均为 false
  2. 名称未在定义范围内的字段均会被忽略
  3. 对于object 类型字段
    • 设置为 null 等价于未设置
    • 设置为 {} 等价于本字段对象的所有字段取默认值
  4. 对于 array 类型字段,设置为 null 等价于未设置

本文档中采用如下风格进行 JSON 格式定义

字段类型描述
numberKeynumber数字类型字段
stringKeystring字符串字段
booleanKeyboolean布尔类型字段
arrayKeyarray数组类型字段
arrayKey[#]string数组元素为字符串, # 为数组索引
objectArrayarray数组类型字段
objectArray[#]object组元素为对象, # 为数组索引
objectArray[#].idnumber数组元素子字段
objectKeyobject对象类型字段
objectKey.namestring...
objectKey.subobjobject...
objectKey.subobj.keyboolean...

对应 JSON 示例如下:

{
"numberKey": 10200,
"stringKey": "success",
"booleanKey": false,
"arrayKey": [ "cn_8k_common", "cn_16k_common" ],
"objectArray": [ { "id": 1 }, { "id":2 } ],
"objectKey": {
"name": "myname",
"subobj": { "key": false }
}
}

3.1 模型查询#

列出服务支持的 property 列表

3.1.1 URL#

GET http://host[:port]/v10/asr/trans/list_properties

3.1.2 请求#

无请求参数

3.1.3 响应#

响应头 Content-Typeapplication/json,响应内容包含如下字段

字段类型描述
codenumber响应状态码, 请参考附录中的响应状态码表
messagestring响应状态消息
propertiesarrayproperty 数组
properties[#]stringproperty

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-Typeapplication/json,包含以下字段

字段类型必选说明,标 (*) 的为默认值
namestring准备上传的文件名称
sizenumber准备上传的文件大小
sliceSizenumber分片大小,默认 8388608 (8M),
最小为 1048576 (1M),最大为 67108864 (64M)

3.2.3 响应#

响应头 Content-Typeapplication/json,响应内容包含如下字段

字段类型描述
codenumber响应状态码, 请参考附录中的响应状态码表
messagestring响应状态消息
fileIdstring上传文件 Id
sliceSizenumber分片大小
sliceCountnumber分片个数

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 请求#

参数名类型必选说明
fileIdstring准备上传接口返回的文件 Id
sliceIndexnumber分片序号,基数为 0

请求头 Content-Typeapplication/octet-stream,除最后一个分片外,包体大小必须与准备上传接口返回结果中的 sliceSize 一致;最后一个分片的包体大小可以小于 sliceSize。

建议请求中使用请求头 Expect: 100-continue,这样可以让服务端有机会在客户端发送包体内容前检查请求是否有效,避免请求无效的情况下也需要发送包体内容。请参考这里了解更多。

3.3.3 响应#

响应头 Content-Typeapplication/json,响应内容包含如下字段

字段类型描述
codenumber响应状态码, 请参考附录中的响应状态码表
messagestring响应状态消息

3.4 任务提交#

使用本接口提交转写任务

3.4.1 URL#

POST http://host[:port]/v10/asr/trans/{property}/submit

3.4.2 请求#

无请求参数

请求头 Content-Typeapplication/json,包含以下字段

字段类型必选说明,标 (*) 的为默认值
filesarray=音频文件 URL 数组,支持的 scheme 有:
ftp://, sftp://, http://, https://,
file://, upload://
folderobject=音频目录对象,扫描指定的目录以获取音频文件列表
folder.pathsarray音频目录路径数组,长度最小为 1
folder.paths[#]string音频目录路径,支持 file://, ftp://, sftp://
folder.extsarray扩展名数组,长度最小为 1,仅扫描指定扩展名的文件
folder.exts[#]string扩展名,例如: .mp3
audioFormatstring音频文件格式,请参考后面的表格
vocabstring识别时使用的热词资源
prioritynumber任务优先级。浮点类型,默认为 0,可为负数
越小优先级越高
channelCountnumber音频通道数,对裸音频格式可取值:1*, 2
对于 auto 格式,可以不设置,按实际声道数量处理;
或者设置为 1,多声道音频将会合并为一个声道
notifyUrlstring转写完成通知回调 URL
设为 "default" 使用配置中的默认回调地址
saveToobject转写结果保存至指定位置,可选设置
不设置则将结果缓存 72 小时供用户下载,超时丢弃
缓存时间在 aicp_trans_http 服务配置中可修改
saveTo.pathstring保存位置,可以是 ftp, sftp, file 链接地址或本地路径
在此路径下创建名为 {task_id} 的目录保存转写结果和
清单文件 manifest.json (任务查询接口的输出)
saveTo.stylestring结果文件名风格。取值: index, path, name
resultTypestring结果类型: JSON*, SRT, TXT
outputPinyinboolean是否输出拼音,仅对 JSON 结果有效
wordsobject输出分词信息,无此项时不输出,仅对 JSON 结果有效
words.typestring分词类型,取值: WORD*, CHAR
words.tppboolean输出原始识别分词结果(false),还是后处理结果(true)
saobject是否要进行质检相关工作,无此项不做质检工作
sa.diarizationboolean是否做话者分离,仅对单声道数据有效
sa.checkRoleboolean如果是双声道音频或者做话者分离,是否做角色类型判断
sa.channelRolestring针对双声道音频,做角色判断时根据此值输出角色类型
取值: LEFT_AGENT*, RIGHT_AGENT
sa.checkEmotionboolean是否需要做情绪检测
sa.outputSpeedboolean是否输出语速信息
sa.outputVolumeboolean是否输出音量信息
sa.outputSilenceboolean是否输出静音段数组
tppobject是否要进行后处理
tpp.addPuncboolean是否执行打标点后处理
tpp.puncWeightnumber打标点权重,数值越大,打的标点越多。
范围: [-100, 100],默认值由服务端引擎配置文件设置
tpp.textSmoothboolean是否执行文本顺滑后处理
tpp.digitNormboolean是否执行数字归一化后处理
tpp.wordFilterboolean是否执行敏感词过滤后处理
tpp.makeParagraphboolean是否执行文本分段,可用于 JSON 结果,
或者 sa 为空时的 TXT 结果

audioFormat 支持以下取值,除 auto 外均为裸音频格式

audioFormat采样率采样格式
pcm_s16le_16k16000小端有符号 16 位整形 PCM 采样
pcm_s16le_8k8000小端有符号 16 位整形 PCM 采样
alaw_16k160008 位 a-Law 压缩格式采样
alaw_8k80008 位 a-Law 压缩格式采样
ulaw_16k160008 位 mu-Law 压缩格式采样
ulaw_8k80008 位 mu-Law 压缩格式采样
vox_8k80004 位 Dialogic IMA ADPCM 采样
vox_6k60004 位 Dialogic IMA ADPCM 采样
auto未知使用 ffprobe 自动探测音频文件格式

saveTo.style 文件名风格

  • 所有文件名风格的文件名均由两部分组成 {name}{ext},扩展名 {ext} 均由 resultType 决定
    • resultTypeJSON 时,{ext}.json
    • resultTypeSRT 时,{ext}.srt
    • resultTypeTXT 时,{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

说明

  • folderfiles 字段为二选一选项,仅可且必须设置其中一个
  • 对于 folderfiles 中的重复项会做去重操作,用户应以响应中返回的最终文件列表为准
  • 提交任务时,audioFormat{property} 对应的采样率可以不匹配,服务会自动进行升/降采样
  • 对于 auto 格式,音频文件需满足
    • 只能且必须包含一个音频流
    • 音频流声道数量只能为 1 或者 2
  • vocab 字段使用的热词资源中通常包含换行符,简单字符串拼接构造的 json 字符串,一般是不符合 json 替换的,请使用正规的 json 库来构建 json 字符串。
  • vocab 热词资源如果有格式错误导致无法加载,不会阻碍任务的提交,但后续会根据 aicp_asr_trans 服务 trans.ignore_invalid_vocab 配置项的取值,采取以下两种处理方式
    • trans.ignore_invalid_vocabtrue,忽略热词资源错误,任务继续执行。
    • trans.ignore_invalid_vocabfalse,整个任务失败

3.4.3 响应#

响应头 Content-Typeapplication/json,响应内容包含如下字段

字段类型描述
codenumber响应状态码, 请参考附录中的响应状态码表
messagestring响应状态消息
taskIdstring新建任务的 Id
prioritynumber任务优先级
filesarray音频文件数组
files[#]object音频文件对象
files[#].indexnumber音频文件索引,任务内唯一,基数为 0
files[#].pathstring音频文件 URL 或路径
files[#].codenumber音频文件状态码
files[#].infostring音频文件状态信息

对于上传的文件,响应中的 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 请求#

参数名类型必选说明
taskstring转写任务 Id

3.5.3 响应#

响应头 Content-Typeapplication/json,响应内容包含如下字段

字段类型描述
codenumber响应状态码, 请参考附录中的响应状态码表
messagestring响应状态消息
taskIdstring新建任务的 Id
prioritynumber任务优先级
finishedboolean任务是否已完成
createTimestring任务创建时间, 遵循 RFC 3339 格式
failurestring热词资源前置检查错误消息
aicp_asr_trans 配置项 trans.ignore_invalid_vocabfalse
且提交任务时使用了不合法热词资源时此字段存在
filesarray转写音频文件数组,当 failure 字段存在,无本字段
files[#]object转写音频文件
files[#].indexnumber音频文件索引,任务内唯一,基数为 0
files[#].durationnumber音频时长,单位: ms
值为 -1 表示音频时长暂时未知
files[#].channelsnumber音频声道数量
值为 -1 表示声道数量暂时未知
files[#].pathstring音频文件 URL 或路径
files[#].codenumber音频文件状态码
files[#].infostring音频文件状态信息
files[#].startTimestring开始转写时间, 遵循 RFC 3339 格式,当开始转写后存在
files[#].finishTimestring转写完成时间, 遵循 RFC 3339 格式,当已完成时存在
files[#].progressnumber转写进度百分比, [0-100] 之间整数,当开始转写后存在

3.6 任务取消#

取消指定的转写任务

3.6.1 URL#

GET http://host[:port]/v10/asr/trans/{property}/cancel?task={task_id}

3.6.2 请求#

参数名类型必选说明
taskstring转写任务 Id

3.6.3 响应#

响应头 Content-Typeapplication/json,响应内容包含如下字段

字段类型描述
codenumber响应状态码, 请参考附录中的响应状态码表
messagestring响应状态消息

3.7 结果下载#

下载任务中指定文件或全部文件的转写结果

3.7.1 URL#

GET http://host[:port]/v10/asr/trans/{property}/download?task={task_id}&files={...}&name_style={...}

3.7.2 请求#

参数名类型必选说明
taskstring转写任务 Id
filesstring给出待下载文件的索引列表,可以指定多个,用半角逗号隔开
不指定本参数时,下载所有文件
name_stylestring下载多个文件时,指定 zip 压缩包中的文件名风格
支持 index* 和 path 两种风格

3.7.3 响应#

响应结果分为以下情况

  • 请求参数不正确时,Content-Typeapplication/jsonHTTP 状态码为 400

  • task 指定的任务不存在时,Content-Typeapplication/jsonHTTP 状态码为 404

  • 指定了 files 且其中某个索引不存在时,Content-Typeapplication/jsonHTTP 状态码为 404

  • 通过指定 files 参数只下载一个文件

    • 文件已转写成功时,返回转写结果,HTTP 状态码为 200 (OK)

      • resultTypeJSON 时,Content-Typeapplication/json
      • resultTypeSRT 时,Content-Typetext/plain
      • resultTypeTXT 时,Content-Typetext/plain
    • 否则,返回如下字段信息,Content-Typeapplication/jsonHTTP 状态码为 406 (Not Acceptable)

      字段类型描述
      codenumber响应状态码, 请参考附录中的响应状态码表
      messagestring响应状态消息
      fileobject音频文件对象
      file.indexnumber音频文件索引,任务内唯一,基数为 0
      file.pathstring音频文件 URL 或路径
      file.codenumber音频文件状态码
      file.infostring音频文件状态信息
      file.startTimestring开始转写时间, 遵循 RFC 3339 格式,当开始转写后存在
      file.finishTimestring转写完成时间, 遵循 RFC 3339 格式,当已完成时存在
      file.progressnumber转写进度百分比, [0-100] 之间整数,当开始转写后存在
  • 未设置 files 或者通过指定 files 参数下载多个文件时

    • 返回 zip 格式压缩包,响应类型为 application/zip
    • 压缩包中包含 manifest.json 和已转写成功的结果文件
      • manifest.json 内容与任务查询接口响应结果相同
      • 结果文件名称的风格由 name_style 参数控制,支持 indexpath 两种风格,详见任务提交接口的 saveTo.style 字段说明

3.8 队列状态#

查看转写任务队列状态,给出转写任务列表

3.8.1 URL#

GET http://host[:port]/v10/asr/trans/{property}/status?type={...}

本操作仅限于 URL{property} 相关的任务

3.8.2 请求#

参数名类型必选说明
typestring任务类型:可以为 all*, finished, queued
不指定本参数时,默认取 all

3.8.3 响应#

响应头 Content-Typeapplication/json,响应内容包含如下字段

字段类型描述
codenumber响应状态码, 请参考附录中的响应状态码表
messagestring响应状态消息
tasksarray任务数组
tasks[#]object转写任务
tasks[#].taskIdstring转写任务标识
tasks[#].prioritynumber转写任务优先级
tasks[#].finishedboolean转写任务是否已完成
tasks[#].invalidVocabboolean当转写任务因热词不合法失败时,此字段存在且为 true

3.9 重启任务#

重启指定的或所有的任务。

本操作的使用场景一般为,提交高优先转写任务后,重启所有低优先级任务,以释放资源使高优先级任务尽早执行。否则,只有在正在执行的低优先级任务完成并释放了资源后,高优先级任务才能够开始执行。

3.9.1 URL#

GET http://host[:port]/v10/asr/trans/{property}/restart?tasks={...}

本操作仅限于 URL{property} 相关的任务

3.9.2 请求#

参数名类型必选说明
tasksstring转写任务 Id 列表,使用半角逗号给隔开
不指定本参数时,重启所有任务

3.9.3 响应#

响应头 Content-Typeapplication/json,响应内容包含如下字段

字段类型描述
codenumber响应状态码, 请参考附录中的响应状态码表
messagestring响应状态消息
tasksarray被重启的任务列表
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 请求#

参数名类型必选说明
taskstring完成任务的 Id
save_statusnumber提交任务时未设置 saveTo,无此参数
1 表示结果成功保存至 saveTo.path
0 表示结果未能成功保存至 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 状态码处理逻辑如下:

  • 当接口返回 2xx HTTP 状态码时,认为操作成功
  • 当接口返回 5xx HTTP 状态码时,认为发生临时性错误,会尝试继续调用通知回调,直到超过指定次数后停止尝试。
  • 当接口返回其他 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音频文件转写识别失败

状态转换图 (绿色箭头方向为正常路径)

1000100220003000100120013001400041004101410242004201420242034204430043014302任务新建开始下载被重启下载成功等待转码开始转码被重启转码成功等待转写开始转写被重启转写成功重新下载下载失败等待重试下载失败上传文件不完整格式未知没有音频多个音频声道数量错误格式转换失败音频时长超限启动转写失败转写失败

4.2 响应状态码表#

状态码HTTP 状态码响应状态说明
10200200操作成功
10400400请求错误,一般是输入参数不正确
10404404任务未找到,或上传文件未找到
10406406因转写失败或者未完成无法下载指定的文件
10409409文件分片已存在或正在上传中
10500500内部错误
10503503临时性错误,用户应尝试重新发送请求

任务 ID 正确,但任务 {property} 与请求 URL 中的 {property} 不匹配时会使用 10404 状态码

4.3 JSON 转写结果#

字段类型说明
silencesarray静音段数组,sa.outputSilence 设置为 true 时可用
silences[#]object静音段
silences[#].stnumber静音段开始时间,单位: ms
silences[#].etnumber静音段结束时间,单位: ms
sentencesarray识别结果断句数组
sentences[#]object识别结果断句
sentences[#].stnumber音频开始时间,单位: ms
sentences[#].etnumber音频结束时间,单位: ms
sentences[#].textstring断句识别结果。当 tpp.makeParagraphtrue 时,
结果中包含 \n 换行符作为分段边界
sentences[#].pystring拼音结果,如果设置了 outputPinyin
sentences[#].cnumber识别结果置信度,范围: [0, 1]
sentences[#].wordsarray分词数组,如果设置了 words
sentences[#].words[#]object分词
sentences[#].words[#].stnumber音频开始时间,单位: ms
sentences[#].words[#].etnumber音频结束时间,单位: ms
sentences[#].words[#].cnumber置信度,范围: [0, 1]
sentences[#].words[#].wstring分词文本
sentences[#].words[#].pystring分词拼音,如果设置了 outputPinyin
sentences[#].words[#].tstring分词类别,详见表后的分词类别说明
sentences[#].saobject质检结果
sentences[#].sa.rolestring输出 user, agent 或者输出格式如 role_0,
role_1 的共 N 个角色。N 目前最大为 2
请参考 SRT 转写结果 中的说明
sentences[#].sa.speednumber语速,如果 sa.outputSpeedtrue
sentences[#].sa.avgVolnumber平均音量,如果 sa.outputVolumetrue
sentences[#].sa.maxVolnumber最大音量,如果 sa.outputVolumetrue
sentences[#].sa.emotionsarray情绪信息数组
如果 sa.checkEmotiontrue 且有情绪检测结果
sentences[#].sa.emotions[#]object情绪信息
sentences[#].sa.emotions[#].stnumber音频开始时间,单位: ms
sentences[#].sa.emotions[#].etnumber音频结束时间,单位: ms
sentences[#].sa.emotions[#].cnumber置信度,范围: [0, 1]
sentences[#].sa.emotions[#].estringHAPPY, ANGRY, SAD, DISGUSTED 四者之一

结果中的分词类别包含

类别全名说明
UUserword用户热词
PPunctuation标点
SSmoothed顺滑词
MMasked被过滤的敏感词
DDigitNorm数字归一化词

如果有多个分词类别标识,可以写多个,比如 'UM',但这种情况一般不会出现。当是正常词没有任何特殊标识时, t 项被省略。

4.4 SRT 转写结果#

如果 sa 不为空,sa.darizationfalse, 单通道语音:角色标识都是 role_0

如果 sa 不为空,sa.darizationfalse, sa.checkRolefalse,双通道语音:角色标识按照左右声道分别是 role_0, role_1

如果 sa 不为空,sa.darizationfalse, sa.checkRoletrue,双通道语音:角色标识按照左右声道和 sa.channelRole 配置,分别是 agent, user

如果 sa 不为空, sa.darizationtrue(此时只针对单通道语音),且 sa.checkRolefalse:角色按照分出的两种声道,分别是 role_0, role_1

如果 sa 不为空, sa.darizationtrue(此时只针对单通道语音),且 sa.checkRoletrue:角色按照分出的两种声道,和自动判断的角色类型,分别是 agent, user

1
00:00:00,940 --> 00:00:01,120
user: 嗯。
2
00:00:03,80 --> 00:00:04,480
agent: 那没有别的办法吗?
3
00:00:04,840 --> 00:00:07,240
user: 没有其他办法了,如果您看一下。
4
00:00:08,420 --> 00:00:09,984
agent: 我记得我当时没有。

如果 sa 为空:不需要角色标识。

1
00:00:00,940 --> 00:00:01,120
嗯。
2
00:00:03,80 --> 00:00:04,480
那没有别的办法吗?
3
00:00:04,840 --> 00:00:07,240
没有其他办法了,如果您看一下。
4
00:00:08,420 --> 00:00:09,984
我记得我当时没有。

4.5 TXT 转写结果#

如果 sa 不为空的时候,角色标识和 SRT 一样,例如:

user: 嗯。
agent: 那没有别的办法吗?
user: 没有其他办法了,如果您看一下。
agent: 我记得我当时没有。

如果 sa 为空且 tpp.makeParagraphfalse:不需要角色标识,按识别分句每行一句。例如:

嗯。
那没有别的办法吗?
没有其他办法了,如果您看一下。
我记得我当时没有。

如果 sa 为空且 tpp.makeParagraphtrue:不需要角色标识,按照后处理的分段结果,加入空行。其它的行合并为段落,行之间需要加一个空格,防止其它语种下又没有标点时两个词合并成一个词。例如:

嗯。 那没有别的办法吗?
没有其他办法了,如果您看一下。 我记得我当时没有。

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 提供用户认证信息。相关字段示例如下

# 下载设置
[fetch]
# 用户认证信息数组,访问远端服务器时使用,包括
#
# - 扫描/下载远端服务器上的文件
# - 保存转写结果至远端服务器
#
# 每两个一组,第一个为主机和端口,冒号隔开;第二个为认证信息
# 这里不区分 http, ftp, sftp 协议,因为在一个主机端口上只能提供一种协议的
# 服务,这也要求在 auth_info 中必须给出端口
#
# 主机和端口字符串中可使用 *, ? 通配符,按顺序使用第一个匹配的设置。匹配
# 时,仅涉及 URL 中的 host 和 port 两部分
#
# 认证时,若 URL 中包含用户名和密码,则优先使用 URL 中的用户认证信息,例如:
#
# - http://user:pass@host/xxxx
# - ftp://user:pass@host/xxxx
# - sftp://user:pass@host/xxxx
#
# 否则使用 auth_info 中的用户认证信息
#
# auth_info 中的认证信息为 :agent:xxxx 时使用 ssh-agent 进行认证,第二个
# 冒号后为用户名,仅适用于 sftp 协议。请参考下面的 start_ssh_agent 设置
#
# 当使用 ssh-agent 进行认证时,用户也可在 URL 中给出用户名,以覆盖
# 通过 `:agent:username` 设置的用户名
auth_info = [
"sftphost:22", "username:password",
"ftphost:21", "username:password",
"httphost:80", "username:password",
"httpshost:443", "username:password",
"*:22", ":agent:username",
]
# 是否启动独立的 ssh-agent 管理 ssh 认证私钥,默认值: true
#
# auth_info 设置的认证信息中不包含 :agent:xxx 类别时,本设置会被忽略
#
# 为 false 时,aicp_trans_http 使用通过 SSH_AUTH_SOCK 环境变量指定的事先
# 启动的 ssh-agent 服务
#
# 为 true 时,aicp_trans_http 启动独立的 ssh-agent 服务并设置 SSH_AUTH_SOCK
# 环境变量指向此服务。
#
# start_ssh_agent = true
# 向 ssh-agent 中添加的 ssh 私钥
#
# auth_info 设置的认证信息中不包含 :agent:xxx 类别时,本设置会被忽略
ssh_keys = [
"/path/of/ssh_private_key",
]

5. 版本记录#

接口版本平台支持版本组件及支持版本修改内容
10.3.010D.1aicp_trans_http 10.6.0支持文件分片上传
10.2.010C.0aicp_trans_http 10.3.0支持设置标点权重
支持 auto 时多声道合并为单声道识别
10.1.010B.1aicp_trans_http 10.1.0支持静音列表输出
10.0.010B.0aicp_trans_http 10.0.0初始版本