场景说明
在游戏场景中,需要对音频进行切片送审。
计费说明
功能说明
开通 GME3.0内容安全功能,可对通过 GME 产生的音频内容进行内容安全处理。
开通方法
步骤2:开通实时语音场景审核和语音消息场景审核。

配置审核结果回调 url 和验签 key
可以配置您的业务服务端接收审核结果的回调 url,审核结果可以及时触达到此链接。

验签说明
实时语音审核验签说明
回调密钥和验签:
我们会在回调结果的 header 里,添加 sign 字段,您可以根据签名文档进行合法性校验

音频切片文件投递
您需要绑定一个 COS 桶,我们会按15秒一个切片,投递到您的 COS 桶里,后台会指定需要转存的审核命中文件上传到您指定的云存储平台(对象存储 COS,AWS S3 或者 阿里云 OSS)


音频切片文件路径
音频切片默认命名为:
{您的桶名称}/{taskId}/{userId}/audios/{sdkappid}_{roomId}_{userid}_{UTC 时间}.ogg字段含义说明:
字段 | 含义 |
<taskId> | 审核的任务 ID。 |
<sdkappid> | 审核任务的 SdkAppId。 |
<roomId> | 审核的房间号。 |
<userid> | 用户 ID。 |
<UTC 时间> | 当前时间字符串 例如:20250106143143。 |
审核自定义配置
审核策略
您可以编辑需要识别的策略配置。

自定义词
您可以添加自定义词库,添加需要命中的关键词,精确匹配。

审核回调
实时语音审核回调
您可以提供一个接收回调的 HTTP/HTTPS 服务网关来订阅回调消息。当相关事件发生时,审核系统会回调事件通知到您的消息接收服务器。
事件回调消息格式:HTTP/HTTPS POST 请求发送给您的服务器,其中:
字符编码格式:UTF-8。
请求:body 格式为 JSON。
应答:HTTP status code = 200,服务端忽略应答包具体内容
为了协议友好,建议您的应答内容携带 JSON: {"code":0}。
审核回调字段
事件回调消息的 body 中包含以下字段:
字段名 | 类型 | 含义 |
EventGroupId | Number | 事件组 ID, 云端审核固定为11。 |
EventType | Number | 回调通知的事件类型。 |
CallbackTs | Number | 事件回调服务器向您的服务器发出回调请求的 Unix 时间戳,单位为毫秒。 |
EventInfo | JSON Object | 事件信息。 |
审核回调类型
事件类型说明:
字段名 | 类型 | 含义 |
EVENT_TYPE_CLOUD_Moderation_START | 1101 | 云端审核模块启动。 |
EVENT_TYPE_CLOUD_Moderation_STOP | 1102 | 云端审核模块退出。 |
EVENT_TYPE_CLOUD_Moderation_SEND_START | 1103 | 云端审核开始送审。 |
EVENT_TYPE_CLOUD_Moderation_TASK_INFO | 1104 | 审核结果回调。 |
EVENT_TYPE_CLOUD_Moderation_SEND_STOP | 1105 | 云端审核结束送审。 |
EVENT_TYPE_CLOUD_Moderation_UPLOAD_ERROR | 1106 | 云端审核投递模块发生错误。 |
事件信息说明:
字段名 | 类型 | 含义 |
RoomId | String | 房间名(类型与客户端房间号类型一致)。 |
EventTs | Number | 事件发生的 Unix 时间戳,单位为秒 (不建议使用该字段,建议使用 EventMsTs)。 |
EventMsTs | Number | 事件发生的 Unix 时间戳,单位为毫秒。 |
UserId | String | 审核机器人的用户 ID。 |
StreamUserId | String | 当前用户 ID。 |
TaskId | String | 审核任务 ID,一次云端审核任务唯一的 ID。 |
Payload | JSONObject | 根据不同事件类型定义不同。 |
审核事件类型详细说明
事件类型为1101 ,审核任务启动:
EVENT_TYPE_CLOUD_Moderation_START 时 Payload 的定义:
字段名 | 类型 | 含义 |
Status | Number | 0 代表审核模块启动成功,1 代表审核模块启动失败。 |
{"EventGroupId": 11,"EventType": 1101,"CallbackTs": 1726125338219,"EventInfo": {"RoomId": "960025","EventTs": 1726125338,"EventMsTs": 1726125338219,"UserId": "inspect","TaskId": "npVqpdU7sBobiK1iskE3BwlLIebCMrbKUbnL4KrO+8oZWQndib9uvO4Deq9P1NasXGNGNuAE","Payload": {"Status": 0}}}
事件类型为1102,审核任务结束
EVENT_TYPE_CLOUD_Moderation_STOP 时 Payload 的定义:
字段名 | 类型 | 含义 |
LeaveCode | Number | 0:代表审核模块正常调用停止审核退出。 1:审核机器人被客户踢出房间。 2:客户解散房间。 3:服务器将审核机器人踢出。 4:服务器解散房间。 99:代表房间内除了审核机器人没有其他用户流,超过指定时间退出。 100:房间超时退出。 101:同一用户重复进入相同房间导致机器人退出。 |
{"EventGroupId": 11,"EventType": 1102,"CallbackTs": 1729601782073,"EventInfo": {"RoomId": "975626","EventTs": "1729601782","EventMsTs": 1729601782073,"UserId": "SliceTaskDuration1-partner-robot","TaskId": "nHRjqhU7gTG0UIL-MquzG8D0Q+wehTbVTeeIIK-rO+8oZWQndibtueIpQ8A0F3n9PEVRk0rngE","Payload": {"LeaveCode": 99}}}
事件类型为1103,开始送审文件
EVENT_TYPE_CLOUD_Moderation_SEND_START 时 Payload 的定义:
字段名 | 类型 | 含义 |
Status | Number | 0:代表开始送审文件。 |
{"EventGroupId": 11,"EventType": 1103,"CallbackTs": 1726750023538,"EventInfo": {"RoomId": "295210","EventTs": 1726750023,"EventMsTs": 1726750023538,"UserId": "inspect","TaskId": "nHwXIdU7mJvL22pFsXZ-v7OgEzq1OzbNXe9L4K-4pycoZWQndib3ZfzqN7Wq+AdiPLMBLxd0gE","Payload": {"Status": 0}}}
事件类型为1104,审核结果回调
EVENT_TYPE_CLOUD_Moderation_FILE_INFO 时 Payload 的定义:
字段名 | 类型 | 含义 |
DataId | String | 审核任务 ID。 |
MediaType | Number | 1:代表实时语音内容审核。 |
Suggest | Number | 0:建议通过。 1 :建议人工复审。 2:建议屏蔽。 |
Label | String | Normal:正常语音内容 Ad:广告 Porn:色情 Abuse:谩骂 Illegal: 违禁 Politics: 涉政 Terror: 暴恐 Sexy: 性感 Moan: 呻吟/娇喘 Custom: 自定义 |
Audio | String | 用户桶音频路径。 |
AudioText | String | 音频识别文本。 |
CheckDetail | 对象 | 审核详细结果。 |
Keywords | []String | 关键词。 |
Rate | Number | 置信度分数; 示例值:100 |
CheckDetail 的定义
字段名 | 类型 | 含义 |
Label | String | Normal:正常语音内容 Ad:广告 Porn:色情 Abuse:谩骂 Illegal: 违禁 Politics: 涉政 Terror: 暴恐 Sexy: 性感 Moan: 呻吟/娇喘 Custom: 自定义 |
Keywords | []string | 关键词 |
Desc | String | 二级标签 |
Score | Number | 置信度分数; 示例值:100 |
Suggest | Number | 0:建议通过。 1 :建议人工复审。 2:建议屏蔽。 |
音频审核结果示例
{"EventGroupId": 11,"EventType": 1104,"CallbackTs": 1726750309161,"EventInfo": {"RoomId": "963239","EventTs": 1735872251,"EventMsTs": 1735872251524,"UserId": "TRTCModerationCase2-user0","StreamerUserId": "SliceCustomUploadCase6-user0","TaskId": "-m9lm+lU7tOlL2mFgsPuzHeyNThbhZzbJlKQI4K-raO8oZWQndibARGYcSDohF0Zfgo7RNCuGQE.","Payload": {"DataId": "547512114953106866","RequestId": "","MediaType": 1,"Suggest": 2,"Label": "Polity","Image": "","Rate": 100,"Audio": "https://x.xx.com/-m9lm+lU7tOlL2mFgsPuzHeyNThbhZzbJlKQI4K-raO8oZWQndibARGYcSDohF0Zfgo7RNCuGQE./547512114835666354.ogg","AudioText": "XXX认真听取讲解,观看反映延安时期重大战役运筹指挥情况的历史图表,感悟党中央和中央军委的领导智慧和艺术。","CheckDetail": [{"Label": "Polity","Suggest": 2,"Keywords": ["XXX"],"Score": 100,"Desc": "","AudioSegments": {},"ImageLocation": {}}]}}}
事件类型为1105,结束文件送审
EVENT_TYPE_CLOUD_Moderation_SEND_STOP 时 Payload 的定义:
字段名 | 类型 | 含义 |
Status | Number | 结束送审。 |
{"EventGroupId": 11,"EventType": 1105,"CallbackTs": 1726751347072,"EventInfo": {"RoomId": "295211","EventTs": 1726751347,"EventMsTs": 1726751347072,"UserId": "inspect","TaskId": "-nHwXIdU7jx6C00Nt8Vr+3h4GwYdP7zbeHi9L4K-4pycoZWQndibqFeEaV4LvjFqSuQvaAkrNQE.","Payload": {"Status": 0}}}
事件类型为1106,投递文件失败
EVENT_TYPE_CLOUD_Moderation_SEND_ERROR 时 Payload 的定义:
字段名 | 类型 | 含义 |
Code | Number | COS 或者第三方存储错误码。 |
Message | String | COS 或者第三方存储错误消息。 |
{"EventGroupId": 11,"EventType": 1106,"CallbackTs": 1726751347072,"EventInfo": {"RoomId": "295211","EventTs": 1726751347,"EventMsTs": 1726751347072,"UserId": "inspect","TaskId": "-nHwXIdU7jx6C00Nt8Vr+3h4GwYdP7zbeHi9L4K-4pycoZWQndibqFeEaV4LvjFqSuQvaAkrNQE.","Payload": {"Code": 10002,"Message": "BadRequest"}}}
语音消息
语音消息和实时语音是两个不同的功能,语音消息审核结果除了在语音消息接口里直接返回 audit_result 字段外,还会回调您配置的服务端回调 url
语音消息审核验签说明
审核回调结构体 sign 字段是待验签的字段
步骤1:组成待签名的字符串
//待签名字符串body:"biz_id=" +biz_id + "&audit_res=" +audit_res+ "&DataId=" + DataId + "&Label=" + Label
步骤2:使用 sha256签名算法签名
func createSignature(signKey string, body string) string {mac := hmac.New(sha256.New, []byte(signKey))mac.Write([]byte(body))sha := hex.EncodeToString(mac.Sum(nil))return sha}
语音审核结果回调
字段定义:
名称 | 类型 | 描述 |
user_id | Number | 业务方玩家用户 ID |
player_uin | String | 业务方玩家用户 ID,字符串类型 |
biz_id | Number | GME Sdkappid |
sign | String | 签名字符串 |
audit_res | Number | 审核状态,对应如下: 1:审核完成 2:审核中 3:语言不支持 4:没有勾选该语言送审 |
DataId | String | 数据唯一标识 |
HitFlag | Boolean | 是否违规:true 违规,false 不违规 |
Label | String | 审核结果标签,对应如下: normal:正常音频内容 politics: 政治 porn:色情 abuse:谩骂 ad:广告 illegal:违法 terrorism: 暴恐 moan: 呻吟/娇喘 customized:自定义词库 |
AsrText | String | 语音转文本结果 |
Array of ScanDetail | 包含语音消息的审核结果和违规内容 | |
RequestId | String | 唯一请求 ID,用于跟踪查询问题 |
ScanDetail 字段说明:
名称 | 类型 | 描述 |
Label | String | 审核结果标签,对应如下: normal:正常文本 politics:政治 porn:色情 abuse:谩骂 ad:广告 illegal:违法 terrorism: 暴恐 moan: 呻吟/娇喘 customized:自定义词库 |
KeyWords | []String | 命中关键词 |
Rate | String | 置信度分数; 示例值:100 |
StartTime | Number | 违规事件结束时间,单位为秒(s); 示例值:15 |
EndTime | Number | 违规事件结束时间,单位为秒(s); 示例值:15 |
{"user_id": 9920413420219,"player_uin": "9920413420219","biz_id": 1400367018,"sign": "f7067c7020dc384879f273738f76319235d94aef60b7d83cec575a300e548199","audit_res": 1,"DataId": "A1A3E84F-4C9A-4A51-B7EC-10DFBC49959F","HitFlag": true,"Label": "porn","AsrText": "怎么,还想你的奶了?","ScanDetail": [{"Label": "porn","Rate": "72","StartTime": 0,"EndTime": 0}],"RequestId": "a61df1f6-e0e2-4a5b-805c-e277463d7bc3"}