跳到主要内容

语音流异步识别

1.接口介绍

语音流识别接口支持异步检测方式,提交语音直播流相关信息后,图普会对直播流内容进行识别检测,并通过异步回调的方式告知客户检测结果。

2. 请求

2.1 请求地址

区域请求地址
国内http://api.speech.tuputech.com/v3/recognition/speech/stream/<secretId>
提示

<secretId> 需替换为您的 secretId,请联系我们为您开通 secretId

2.2 请求方法

POST

2.3 请求头

Content-Type: application/json

2.4 请求参数说明

参数名类型是否必填说明
speechStreamArray音频流内容信息,详见 SpeechStream 参数说明
timestampNumber当前的服务器的 Unix 时间戳
nonceNumber随机数
signatureString

RSA-SHA256 算法签名。签名步骤:

  1. 将参与签名的参数(secretIdtimestampnonce)用英文半角逗号 , 拼接,得到 SignString
  2. 使用您的私钥以 RSA-SHA256 算法对 SignString 签名,然后进行 Base64 编码,得到 signature 字符串。
tasksArray指定运行的任务 ID 列表

SpeechStream 参数说明

参数名类型是否必填说明
urlString音频流地址。
支持的协议: RTMP、HLS、HTTP-FLV、RTSP;
支持的容器格式:flv, mkv, mp5, rmvb, avi, wmv, 3gp, ts, mov;
支持的编码格式:AAC、AC-3、ADPCM、AMR、DSD、MP1、MP2、MP3、PCM。
callbackString检测结果的回调地址,支持 http, https
roomIdString房间 ID
userIdString用户 ID
forumIdString板块 ID ,数据 ID
returnPreSpeechBoolean表示需要返回违规音频前一分钟(含违规音频,最长为一分钟)音频链接; 值为 false 时,只需返回违规片段音频链接。默认值为 false
callbackRulesNumber回调规则,不传则默认识别到违规数据时才回调违规数据,详见 CallbackRules 的使用补充说明

(可选) CallbackRules 的使用补充说明

规则对应的回调内容
0默认规则, 识别结果为违规时才回调违规结果,其他规则不回调
1规则 1:回调所有识别结果
2规则 2:任务结束时,主动回调任务结束状态
3使用 规则 1规则 2

2.5 请求示例

json 请求示例

  • 不指定任务
{
"speechStream": [
{
"url": "rtmp://pili-Room-4daedc9c7a5db36c325f6609000c0201",
"callback": "http://www.tupu.com/callback",
"roomId": "111111",
"userId": "23231",
"forumId": "321313"
}
],
"timestamp": 1541499770,
"nonce": 0.8469537531104208,
"signature": "CsIMcHuWqn/QFEnHWcFEhrB7ydcg5xTKawpRpNqA9Nw2WlCVIDR5jDcyUF85"
}
  • 指定识别的任务 ID
{
"speechStream": [
{
"url": "rtmp://pili-Room-4daedc9c7a5db36c325f6609000c0201",
"callback": "http://www.tupu.com/callback",
"roomId": "111111",
"userId": "23231",
"forumId": "321313"
}
],
"timestamp": 1541499770,
"nonce": 0.8469537531104208,
"signature": "CsIMcHuWqn/QFEnHWcFEhrB7ydcg5xTKawpRpNqA9Nw2WlCVIDR5jDcyUF85",
"tasks": [ "5caee6b2a76925c55a09a6d2", "5c8213b9bc807806aab0a574" ]
}

curl 请求示例

  • 不指定任务
curl -X POST --header 'Content-Type: application/json' \
-d '{
"speechStream": [
{
"url": "rtmp://pili-Room-4daedc9c7a5db36c325f6609000c0201",
"callback": "http://www.tupu.com/callback",
"roomId": "111111",
"userId": "23231",
"forumId": "321313"
}
],
"timestamp": 1541499770,
"nonce": 0.8469537531104208,
"signature": "CsIMcHuWqn/QFEnHWcFEhrB7ydcg5xTKawpRpNqA9Nw2WlCVIDR5jDcyUF85"
}' \
'http://api.speech.tuputech.com/v3/recognition/speech/stream/your_secretId'
  • 指定识别的任务 ID
curl -X POST --header 'Content-Type: application/json' \
-d '{
"speechStream": [
{
"url": "rtmp://pili-Room-4daedc9c7a5db36c325f6609000c0201",
"callback": "http://www.tupu.com/callback",
"roomId": "111111",
"userId": "23231",
"forumId": "321313"
}
],
"timestamp": 1541499770,
"nonce": 0.8469537531104208,
"signature": "CsIMcHuWqn/QFEnHWcFEhrB7ydcg5xTKawpRpNqA9Nw2WlCVIDR5jDcyUF85",
"tasks": [ "5caee6b2a76925c55a09a6d2", "5c8213b9bc807806aab0a574" ]
}' \
'http://api.open.tuputech.com/v3/recognition/speech/stream/your_secretId'

3. 同步返回

3.1 返回参数说明

json 参数说明

参数名称类型是否必需说明
resultArray返回结果
codeNumber返回码,0 为调用成功
messageString返回信息
nonceString随机数
timestampString当前的服务器的 Unix 时间戳

Result 参数说明

参数名类型是否必有说明
requestIdString客户提交的音频流的唯一请求 ID,后续可以通过该 ID 查到音频的相关信息
urlString音频流地址
callbackString检测结果的回调地址
roomIdString房间 ID
userIdString用户 ID
forumIdString板块 ID ,数据 ID

3.2 返回示例

{       
"result": [
{
"requestId": "5bcf23077f532488c2ccd6a615578896555130.34123306702281964",
"url": "rtsp://172.26.3.67:8554/dawang_crop_aac.mkv",
"callback": "http://172.25.52.11:8008",
"roomId": "12345",
"userId": "milian",
"forumId": "123456"
}
],
"code": 0,
"message": "success",
"nonce": "0.01627771095362096",
"timestamp": 1552391372490
}

4. (可选) 结束状态回调

说明

仅在 callbackRules 参数设置了状态结束回调时才会在任务结束时回调

4.1 返回结构说明

服务返回信息的公共结构

参数名类型是否必有说明
signatureString

响应内容签名,由图普使用私钥签名,在需要时,您可以通过 图普公钥 进行验签以确保此响应内容来自图普(与您调用接口时使用的公私钥不同)。验签步骤:

  1. json 字段内容为 SignString
  2. signature 字段内容进行 Base64 解码,得到 RawSignature
  3. 使用图普公钥以 SHA256 算法验证 RawSignatureSignString
jsonString响应或回调内容经过 JSON 转义后的字符串

json 参数说明

参数名称类型是否必需说明
codeNumber返回码,0:正常结束(由用户请求关闭的任务), 其他状态码请参考语音状态码
requestIdString任务 ID
statusString任务状态,目前只有 'end'
nonceString随机数
timestampString当前的服务器的 Unix 时间戳
使用建议
  • 当收到回调中存在 status 字段时, 说明任务已结束。
  • code 的值不为 0,则说明是异常结束,可根据 code 的值查询到对应的异常结束类型。

3.2 返回结果示例

{
"code": 0,
"requestId": "61275d377b8d07d33a10cde0",
"status": "end",
"nonce": "0.8954065702381435",
"timestamp": 1629969759333
}

5. 结果回调

音频流提交成功后, 会进行音频的审核,审核出来有违规的数据会回调给调用者,不同的审核任务会回调不同的数据,详见以下任务的回调数据详解: