接口说明

更新时间:
复制 MD 格式

声音事件检测用于识别音频中的背景音乐、哭声、笑声、爆炸声等声音,并返回声音事件的起止时间。

声音事件类型

支持以下声音事件类型:

  • Music:纯背景音乐。

  • Singing:唱歌。

  • Laughter:笑声。

  • Knock:敲门声或敲桌子声。

  • Keyboard:键盘声。

  • Cry:哭泣声。

  • Explosion:爆炸声。

  • Water:水声。

  • SirenAlarm:警笛声。

使用限制

  • 输入音频为 PCM 编码的无压缩 PCM 或 WAV 文件,16 bit 采样位深、单声道。

  • 音频采样率为 16000 Hz。

  • 仅支持实时发送音频数据。

计费和并发限制

声音事件检测提供试用版和商用版。服务版本及计费项请参见计费项,计费方式和升级操作请参见计费方式。并发限制请参见并发和 QPS 说明。

服务地址

访问方式

说明

服务地址

公网访问

所有服务器均可通过公网访问。

wss://nls-gateway-cn-shanghai.aliyuncs.com/ws/v1

上海 ECS 内网访问

适用于华东 2(上海)地域的 ECS 实例,通过 VPC 访问。经典网络不支持访问语音服务。

ws://nls-gateway-cn-shanghai-internal.aliyuncs.com:80/ws/v1

Java SDK 的 NlsClient(String token) 默认使用上海公网服务地址。通过内网访问时,创建 NlsClient 需显式传入内网地址。内网访问不会产生 ECS 实例的公网流量费用。

交互流程

image

1. 鉴权

客户端建立 WebSocket 连接时使用 NLS Token 鉴权。Token 获取方法请参见获取 Token。项目 Appkey 获取方法请参见管理项目;Appkey 与 Token 需属于同一账号。

2. 开始检测

使用 Java SDK 时,通过 CommonRequest 构造函数传入命名空间,通过 setAppKey() 设置 Appkey,通过 addCustomedParam() 设置音频参数。参数说明如下:

参数

类型

说明

namespace

String

命名空间,创建 CommonRequest 时设置为 AudioEventDetection。

format

String

音频编码格式,默认 pcm,支持 pcm 和 wav。

sample_rate

Integer

音频采样率,默认 16000,单位为 Hz。

客户端初始化、监听器实现和音频发送的完整示例请参见Java SDK。以下片段基于已创建的 NlsClient client 和 CommonRequestListener listener,appkey 为项目 Appkey:

CommonRequest request = new CommonRequest(client, listener, "AudioEventDetection");
request.setAppKey(appkey);
request.addCustomedParam("format", "pcm");
request.addCustomedParam("sample_rate", 16000);
request.start();

调用 start() 发起任务。服务端返回 TaskStarted 后,SDK 触发 onStarted 回调。任务失败时,通过 onFailed 回调获取错误信息。

3. 接收识别结果

发送音频数据,通过 CommonRequestListener.onEvent 接收声音事件检测结果。每条 TaskResult 消息可包含声音事件列表,响应示例如下:

{
    "header":{
        "namespace":"AudioEventDetection",
        "name":"TaskResult",
        "status":20000000,
        "message_id":"1727504541a143e2bf8cfc4037d4****",
        "task_id":"f926a956efaf4d30a823abafe97d****",
        "status_text":"Gateway:SUCCESS:Success."
    },
    "payload":{
        "number":1,
        "result":[
            {
                "confidence":0.81,
                "end_time":32000,
                "event_type":"Music",
                "start_time":30000
            }
        ]
    }
}

header 对象

参数

类型

说明

namespace

String

消息所属的命名空间。

name

String

消息名称,TaskResult 表示声音事件检测结果。

status

Integer

服务状态码,20000000 表示成功。错误处理请参见服务状态码。

status_text

String

状态消息。

task_id

String

任务的全局唯一 ID,可用于排查问题。

message_id

String

当前消息的 ID。

payload 对象

参数

类型

说明

number

Integer

当前结果中的声音事件数量。

result

Array

声音事件列表。各元素的字段见下表。

result 数组元素

参数

类型

说明

start_time

Integer

声音事件相对于输入音频起点的开始时间,单位为毫秒。

end_time

Integer

声音事件相对于输入音频起点的结束时间,单位为毫秒。

event_type

String

声音事件类型,见前面的声音事件类型列表。

confidence

Float

当前结果的置信度,取值范围为 [0.0, 1.0],值越大表示置信度越高。

4. 结束检测

音频发送完成后,调用 stop() 发送 StopTask。服务端处理完成后返回 TaskCompleted,SDK 触发 onStopped 回调,表示本次检测任务结束。

服务状态码

响应中的 header.status 表示服务状态。根据状态码和 status_text 处理错误;更多通用错误说明请参见错误码查询。

通用错误码

错误码

原因

解决方法

40000001

身份认证失败。

检查 Token 是否正确、是否已过期。

40000002

无效的消息。

检查发送的消息是否符合接口要求。

40000004

空闲超时。

检查是否连续 10 秒未向服务端发送数据。

40000005

请求数量过多。

检查并发连接数或每秒请求数是否超限。若并发连接数超限,可按需升级商用版,或增加商用版并发资源。

40000000

默认的客户端错误。

根据对应的状态消息排查。

40000010

免费试用期已结束。

如需继续使用,需开通商用版,操作请参见计费方式。

41010120

客户端超时。

客户端连续 10 秒及以上未发送数据,需检查音频发送是否中断。

41160001

采样率参数错误。

按输入音频要求检查采样率,应为 16000 Hz。

41160002

音频格式参数错误。

检查音频格式参数设置。

41160003

音频解码失败。

检查音频格式是否正常。

网关错误码

错误码

原因

解决方法

40010001

不支持的接口。

检查命名空间是否正确,以及接入地址是否提供该服务。

40010002

不支持的指令。

检查发送的指令名称是否符合接口要求。

40010003

无效的指令。

检查指令格式和参数。

40010004

客户端提前断开连接。

检查是否在任务正常完成前关闭了连接。

40010005

任务状态错误。

检查是否发送了当前任务状态无法处理的指令。

配置错误码

错误码

原因

解决方法

40020105

应用不存在。

检查项目 Appkey 是否存在。

40020106

Appkey 与 Token 不匹配。

检查 Appkey 是否正确,且与 Token 属于同一账号。

40020503

RAM 用户鉴权失败。

使用阿里云账号为调用的 RAM 用户授予 POP API 的访问权限。