GME3.0 语音内容安全使用指南

最近更新时间:2026-05-28 15:49:13

我的收藏

场景说明

在游戏场景中,需要对音频进行切片送审。

计费说明

语音内容安全计费,按照时长计费,详情见:语音内容安全服务计费

功能说明

开通 GME3.0内容安全功能,可对通过 GME 产生的音频内容进行内容安全处理。

开通方法

步骤1:进入到 腾讯云游戏多媒体引擎控制台,左侧导航栏选择语音内容安全管理
步骤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"
}