当前位置: 首页 > ai >正文

在web应用后端接入内容审核——以腾讯云音频审核为例(Go语言示例)

腾讯云对象存储数据万象(Cloud Infinite,CI)为用户提供图片、视频、语音、文本等文件的内容安全智能审核服务,帮助用户有效识别涉黄、违法违规和广告审核,规避运营风险。本文以音频审核为例给出go语言示例代码与相应结果。

一、预备条件

  1. 获取API密钥,不可泄漏
    https://console.cloud.tencent.com/cam/capi
  2. 将SecretId与SecretKey写到环境变量

二、实现代码

package mainimport ("context""fmt""net/http""net/url""os""path/filepath""github.com/gin-gonic/gin"cos "github.com/tencentyun/cos-go-sdk-v5"
)var cosClient *cos.Clientfunc initCOSClient() error {secretID := os.Getenv("SecretId")secretKey := os.Getenv("SecretKey")if secretID == "" || secretKey == "" {return fmt.Errorf("SecretId and SecretKey environment variables are required")}bu, _ := url.Parse("https://radio-1259203851.cos.ap-shanghai.myqcloud.com")cu, _ := url.Parse("https://radio-1259203851.ci.ap-shanghai.myqcloud.com")b := &cos.BaseURL{BucketURL: bu, CIURL: cu}cosClient = cos.NewClient(b, &http.Client{Transport: &cos.AuthorizationTransport{SecretID:  secretID,SecretKey: secretKey,},})return nil
}func main() {if err := initCOSClient(); err != nil {fmt.Printf("Failed to initialize COS client: %v\n", err)fmt.Println("Please set the following environment variables:")fmt.Println("export SecretId=YOUR_SECRET_ID")fmt.Println("export SecretKey=YOUR_SECRET_KEY")os.Exit(1)}r := gin.Default()// 文件上传接口r.POST("/upload", func(c *gin.Context) {file, err := c.FormFile("file")if err != nil {c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})return}// 保存上传的文件到临时目录tempDir := "temp"if err := os.MkdirAll(tempDir, 0755); err != nil {c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})return}tempFilePath := filepath.Join(tempDir, file.Filename)if err := c.SaveUploadedFile(file, tempFilePath); err != nil {c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})return}// 上传文件到COScosKey := "audios/" + file.Filename_, err = cosClient.Object.PutFromFile(context.Background(), cosKey, tempFilePath, nil)if err != nil {c.JSON(http.StatusInternalServerError, gin.H{"error":   err.Error(),"message": "Failed to upload file to COS",})return}// 提交审核任务opt := &cos.PutAudioAuditingJobOptions{InputObject: cosKey,Conf:        &cos.AudioAuditingJobConf{},}res, _, err := cosClient.CI.PutAudioAuditingJob(context.Background(), opt)if err != nil {c.JSON(http.StatusInternalServerError, gin.H{"error":   err.Error(),"message": "Failed to submit audio auditing job",})return}// 清理临时文件os.Remove(tempFilePath)// 返回任务IDc.JSON(http.StatusOK, gin.H{"job_id":  res.JobsDetail.JobId,"cos_key": cosKey,})})// 查询审核结果接口r.GET("/result/:job_id", func(c *gin.Context) {jobID := c.Param("job_id")// 查询审核结果res, _, err := cosClient.CI.GetAudioAuditingJob(context.Background(), jobID)if err != nil {c.JSON(http.StatusInternalServerError, gin.H{"error":   err.Error(),"message": "Failed to get audio auditing result",})return}c.JSON(http.StatusOK, res)})// 启动服务器r.Run(":8080")
}

三、调用方法

  1. 上传文件
    使用postman,调用以下接口:
http://localhost:8080/upload

在这里插入图片描述

  1. 查询任务
    在这里插入图片描述
    查询任务的结果说明可参考:查询音频审核任务结果,需要重点关注的是result,该字段表示本次判定的审核结果,可以根据该结果,进行后续的操作。有效值:0(审核正常),1 (判定为违规敏感文件),2(疑似敏感,建议人工复核)。
http://www.xdnf.cn/news/2362.html

相关文章:

  • 优考试V4.20机构版【附百度网盘链接】
  • Jenkins(CI/CD工具)
  • 【计算机网络】UDP网络编程、英汉字典以及多线程聊天室编写
  • UML 活动图详解之小轿车启动活动图分析
  • 【dockerredis】用docker容器运行单机redis
  • ASP.NET图片盗链防护指南
  • Java接口默认方法冲突
  • 2025.4.27_C_Struct,Enum,Union
  • 单片机学习笔记9.数码管
  • Redis使用总结
  • 相机DreamCamera2录像模式适配尺寸
  • 使用c++实现一个简易的量子计算,并向外提供服务
  • 一文说清Token这个大模型中的数字乐高积木的作用
  • MIT6.S081 - Lab10 mmap(文件内存映射)
  • 内耗型选手如何能做到不内耗?
  • MySQL最新安装、连接、卸载教程(Windows下)
  • Linux进程学习【环境变量】进程优先级
  • T8332FN凯钰LED驱动芯片多拓扑车规级AEC-Q100
  • 秒杀压测计划 + Kafka 分区设计参考
  • IP地址与子网计算工具
  • 0302洛必达法则-微分中值定理与导数的应用.md
  • 云原生课程-Docker
  • openstack创建虚拟机
  • 什么是模块化区块链?Polkadot 架构解析
  • 在Linux中,使用标准IO库,进行格式化IO操作
  • 深度解析Zemax优化函数:让光学设计从“能用”到“极致”的核心密码
  • 驱动开发硬核特训 · Day 22(下篇): # 深入理解 Power-domain 框架:概念、功能与完整代码剖析
  • I-CON: A Unifying Framework for Representation Learning
  • qt 3d航迹图
  • Scala集合操作与WordCount案例实战总结