语音反垃圾检测

本文介绍了如何使用Go SDK语音反垃圾接口,检测实时语音流或语音文件中的垃圾内容。

功能描述

语音流检测和语音文件检测均为异步检测,检测结果需要您以轮询或者回调的方式获取。关于调用请求中的检测场景参数scenes,返回结果中的分类参数label,以及操作建议参数suggestion的说明,请参见语音异步检测

语音检测按照检测的语音文件、语音流的时间长度进行计费,计费粒度为分钟,每天累计检测总时长进行计量统计,每天检测总时长不足一分钟的按照一分钟进行计费。

前提条件

已安装Go依赖。关于安装Go依赖的具体操作,请参见安装Go依赖

说明

请一定按照安装Go依赖页面中的版本安装,否则会导致调用失败。

提交语音异步检测任务

接口

描述

支持的地域

VoiceAsyncScanRequest

异步检测语音流或语音文件中是否包含违规内容。

  • 支持的语音流协议:HTTP、RTMP、RTSP

  • 支持的语音流格式:M3U8、FLV

cn-shanghai:华东2(上海)

示例代码

package main

import (
   "encoding/json"
   "fmt"
   "github.com/aliyun/alibaba-cloud-sdk-go/services/green"
   "strconv"
)

func main() {
   /**
    * 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。
    * 常见获取环境变量方式:
    *     获取RAM用户AccessKey ID:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
    *     获取RAM用户AccessKey Secret:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
    */
   client, _err := green.NewClientWithAccessKey(
        "cn-shanghai", 
        "建议从环境变量中获取RAM用户AccessKey ID", 
        "建议从环境变量中获取RAM用户AccessKey Secret")
   if err != nil {
      fmt.Println(err.Error())
      return
   }

   task := map[string]interface{}{"dataId": "检测数据ID", "url": "待检测音频链接地址"}
  // scenes:检测场景,唯一取值:antispam。
   content, _ := json.Marshal(
      map[string]interface{}{
         "tasks": [...]map[string]interface{}{task}, "scenes": [...]string{"antispam"},
         "bizType": "业务场景",
      },
   )

   request := green.CreateVoiceAsyncScanRequest()
   request.SetContent(content)
   response, _err := client.VoiceAsyncScan(request)
   if _err != nil {
      fmt.Println(_err.Error())
      return
   }
   if response.GetHttpStatus() != 200 {
      fmt.Println("response not success. status:" + strconv.Itoa(response.GetHttpStatus()))
   }
   fmt.Println(response.GetHttpContentString())
}

查询语音异步检测结果

接口

描述

支持的地域

VoiceAsyncScanResultsRequest

查询异步语音检测结果。

cn-shanghai:华东2(上海)

示例代码

package main

import (
   "encoding/json"
   "fmt"
   "github.com/aliyun/alibaba-cloud-sdk-go/services/green"
   "strconv"
)

func main() {
   /**
    * 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。
    * 常见获取环境变量方式:
    *     获取RAM用户AccessKey ID:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
    *     获取RAM用户AccessKey Secret:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
    */
   client, _err := green.NewClientWithAccessKey(
        "cn-shanghai", 
        "建议从环境变量中获取RAM用户AccessKey ID", 
        "建议从环境变量中获取RAM用户AccessKey Secret")
   if err != nil {
      fmt.Println(err.Error())
      return
   }

   content, _ := json.Marshal([...]string{"语音异步检测任务ID"})

   request := green.CreateVoiceAsyncScanResultsRequest()
   request.SetContent(content)
   response, _err := client.VoiceAsyncScanResults(request)
   if _err != nil {
      fmt.Println(_err.Error())
      return
   }
   if response.GetHttpStatus() != 200 {
      fmt.Println("response not success. status:" + strconv.Itoa(response.GetHttpStatus()))
   }
   fmt.Println(response.GetHttpContentString())
}

短语音同步检测

接口

描述

支持的地域

VoicesyncscanRequest

查询短语音检测结果。

cn-shanghai:华东2(上海)

示例代码

package main

import (
   "encoding/json"
   "fmt"
   "github.com/aliyun/alibaba-cloud-sdk-go/services/green"
   "strconv"
)

func main() {
   /**
    * 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。
    * 常见获取环境变量方式:
    *     获取RAM用户AccessKey ID:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
    *     获取RAM用户AccessKey Secret:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
    */
   client, _err := green.NewClientWithAccessKey(
        "cn-shanghai", 
        "建议从环境变量中获取RAM用户AccessKey ID", 
        "建议从环境变量中获取RAM用户AccessKey Secret")
   if err != nil {
      fmt.Println(err.Error())
      return
   }

   task := map[string]interface{}{"dataId": "检测数据ID", "url": "待检测音频链接地址"}
  // scenes:检测场景,唯一取值:antispam。
   content, _ := json.Marshal(
      map[string]interface{}{
         "tasks": [...]map[string]interface{}{task}, "scenes": [...]string{"antispam"},
         "bizType": "业务场景",
      },
   )

   request := green.CreateVoiceSyncScanRequest()
   request.SetContent(content)
   response, _err := client.VoiceSyncScan(request)
   if _err != nil {
      fmt.Println(_err.Error())
      return
   }
   if response.GetHttpStatus() != 200 {
      fmt.Println("response not success. status:" + strconv.Itoa(response.GetHttpStatus()))
   }
   fmt.Println(response.GetHttpContentString())
}