接口说明

声音事件检测主要任务是检测识别音频中诸如背景音乐、哭声、笑声、爆炸声之类的声音,并标注出声音的起止时间。

声音事件类型

目前系统支持以下声音类型:

  • Music:纯背景音乐

  • Singing:唱歌

  • Laughter:笑声

  • Knock:敲门声(敲桌子声)

  • Keyboard:键盘声

  • Cry:哭泣声

  • Explosion:爆炸声

  • Water:水声

  • SirenAlarm:警笛声

使用须知

  • 支持的输入格式:PCM编码(无压缩的PCM或WAV文件)、16 bit采样位数、单声道(mono)。

  • 支持的音频采样率:16000 Hz。

  • 目前声音事件检测仅支持实时发包。

服务地址

访问类型

说明

URL

外网访问

所有服务器均可使用外网访问URL(SDK中默认设置了外网访问URL,无需您设置)。

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

阿里云上海ECS内网访问

使用阿里云上海ECS(ECS地域为华东2(上海)),可使用内网访问URL。 ECS的经典网络不能访问AnyTunnel,即不能在内网访问语音服务;如果希望使用AnyTunnel,需要创建专有网络在其内部访问。

说明

  • 使用内网访问方式,将不会产生ECS实例的公网流量费用。

  • 关于ECS的网络类型请参见网络类型

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

交互流程

image

1. 鉴权

客户端在与服务端建立WebSocket连接时,使用Token进行鉴权。Token获取请参见获取Token概述

2. 开始检测

客户端发起请求,服务端确认请求有效。其中在请求消息中进行参数设置,各参数通过SDK中CommonRequest对象的相关set方法设置,含义如下。

参数名称

参数类型

参数说明

namespace

String

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

format

String

音频编码格式,默认值:PCM。支持的格式:PCM、WAV。

sample_rate

Integer

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

3. 接收识别结果

客户端循环发送语音数据,持续接收识别结果。

  • onEvent事件表示服务端检测到声音事件,举例如下:

    {
        "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

    状态码,表示请求是否成功,具体请参见服务状态码

    status_text

    String

    状态消息。

    task_id

    String

    任务全局唯一ID,请记录该值,便于排查问题。

    message_id

    String

    本次消息的ID。

  • payload对象参数说明:

    参数名称

    参数类型

    参数说明

    number

    Integer

    事件数量。

    start_time

    Integer

    音频开始时间戳,单位:ms。

    end_time

    Integer

    音频结束时间戳,单位:ms。

    event_type

    String

    事件类型。

    confidence

    Float

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

4. 结束识别

通知服务端语音数据发送完成,服务端识别结束后通知客户端检测完毕。

服务状态码

在服务的每一次响应中,都包含status字段,即服务状态码。通用错误码、网关错误码、配置错误码各种取值含义如下。

  • 通用错误码

    错误码

    原因

    解决办法

    40000001

    身份认证失败

    检查使用的令牌是否正确,是否过期。

    40000002

    无效的消息

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

    40000004

    空闲超时

    确认是否长时间(10秒)没有发送数据到服务端。

    40000005

    请求数量过多

    检查是否超过了并发连接数或者每秒钟请求数。如果超过并发数,建议从免费版升级到商用版,或者商用版扩容并发资源。

    40000000

    默认的客户端错误码

    检查对应的错误消息。

    40000010

    新用户免费试用3个月已到期

    继续使用需要付费商用,请前往控制台,在服务管理与开通页面,单击目标服务右侧的升级为商用版,进行付费使用。

    41010120

    客户端超时错误

    客户端连续10秒及以上没有发送数据,导致客户端超时错误。

    41160001

    采样率参数错误

    检查采样率参数设置。

    41160002

    音频格式参数设置错误

    检查音频格式参数设置。

    41160003

    音频解码失败

    检查音频格式是否正常。

  • 网关错误码

    错误码

    原因

    解决办法

    40010001

    不支持的接口

    请升级到最新的SDK。

    40010002

    不支持的指令

    请升级到最新的SDK。

    40010003

    无效的指令

    请升级到最新的SDK。

    40010004

    客户端提前断开连接

    检查是否在请求正常完成之前关闭了连接。

    40010005

    任务状态错误

    发送了当前任务状态不能处理的指令。

  • 配置错误码

    错误码

    原因

    解决办法

    40020105

    应用不存在

    解析路由时找不到应用。

    40020106

    Appkey和Token不匹配

    检查应用Appkey是否正确,是否与令牌归属同一个账号。

    40020503

    RAM用户(子账号)鉴权失败

    使用阿里云账号对调用的RAM用户(子账号)授权POP API的访问权限。