def ScanVoice(self, request): """本接口(ScanVoice)用于提交语音检测任务,检测任务列表最多支持100个。使用前请您登录[控制台 - 服务配置](https://console.cloud.tencent.com/gamegme/conf)开启语音分析服务。 </br></br> <h4><b>功能试用说明:</b></h4> <li>打开前往<a href="https://console.cloud.tencent.com/gamegme/tryout">控制台 - 产品试用</a>免费试用语音分析服务。</li> </br> <h4><b>接口功能说明:</b></h4> <li>支持对语音流或语音文件进行检测,判断其中是否包含违规内容。</li> <li>支持设置回调地址 Callback 获取检测结果,同时支持通过接口(查询语音检测结果)主动轮询获取检测结果。</li> <li>支持场景输入,包括:谩骂、色情、涉政等场景</li> <li>支持批量提交检测任务。检测任务列表最多支持100个。</li> </br> <h4><b>音频文件限制说明:</b></h4> <li>音频文件大小限制:100 M</li> <li>音频文件时长限制:30分钟</li> <li>音频文件格式支持的类型:.wav、.m4a、.amr、.mp3、.aac、.wma、.ogg</li> </br> <h4><b>语音流限制说明:</b></h4> <li>语音流格式支持的类型:.m3u8、.flv</li> <li>语音流支持的传输协议:RTMP、HTTP、HTTPS</li> <li>语音流时长限制:4小时</li> <li>支持音视频流分离并对音频流进行分析</li> </br> <h4 id="Label_Value"><b>Scenes 与 Label 参数说明:</b></h4> <p>提交语音检测任务时,需要指定 Scenes 场景参数,<font color="red">目前要求您设置 Scenes 参数值为:["default"]</font>;而在检测结果中,则包含请求时指定的场景,以及对应类型的检测结果。</p> <table> <thread> <tr> <th>场景</th> <th>描述</th> <th>Label</th> </tr> </thread> <tbody> <tr> <td>语音检测</td> <td>语音检测的检测类型</td> <td> <p>normal:正常文本</p> <p>p**n:色情</p> <p>politics:涉政</p> <p>abuse:谩骂</p> <p>ad :广告</p> <p>terrorism:暴恐</p> <p>contraband :违禁</p> <p>customized:自定义词库。目前白名单开放,如有需要请<a href="https://cloud.tencent.com/apply/p/8809fjcik56">联系我们</a>。</p> </td> </tr> </tbody> </table> </br> <h4 id="Callback_Declare"><b>回调相关说明:</b></h4> <li>如果在请求参数中指定了回调地址参数 Callback,即一个 HTTP(S) 协议接口的 URL,则需要支持 POST 方法,传输数据编码采用 UTF-8。</li> <li>在推送回调数据后,接收到的 HTTP 状态码为 200 时,表示推送成功。</li> <li>HTTP 头参数说明:</li> <table> <thread> <tr> <th>名称</th> <th>类型</th> <th>是否必需</th> <th>描述</th> </tr> </thread> <tbody> <tr> <td>Signatue</td> <td>string</td> <td>是</td> <td>签名,具体见<a href="#Callback_Signatue">签名生成说明</a></td> </tr> </tbody> </table> <ul id="Callback_Signatue"> <li>签名生成说明:</li> <ul> <li>使用 HMAC-SH1 算法, 最终结果做 BASE64 编码;</li> <li>签名原文串为 POST+body 的整个json内容(长度以 Content-Length 为准);</li> <li>签名key为应用的 SecretKey,可以通过控制台查看。</li> </ul> </ul> <li>回调示例如下<font color="red">(详细字段说明见结构: <a href="https://cloud.tencent.com/document/api/607/35375#DescribeScanResult" target="_blank">DescribeScanResult</a>)</font>:</li> <pre><code>{ "Code": 0, "DataId": "1400000000_test_data_id", "ScanFinishTime": 1566720906, "HitFlag": true, "Live": false, "Msg": "", "ScanPiece": [{ "DumpUrl": "", "HitFlag": true, "MainType": "abuse", "RoomId": "123", "OpenId": "xxx", "Info":"", "Offset": 0, "Duration": 3400, "PieceStartTime":1574684231, "ScanDetail": [{ "EndTime": 1110, "KeyWord": "xxx", "Label": "abuse", "Rate": "90.00", "StartTime": 1110 }, { "EndTime": 1380, "KeyWord": "xxx", "Label": "abuse", "Rate": "90.00", "StartTime": 930 }, { "EndTime": 1560, "KeyWord": "xxx", "Label": "abuse", "Rate": "90.00", "StartTime": 930 }, { "EndTime": 2820, "KeyWord": "xxx", "Label": "abuse", "Rate": "90.00", "StartTime": 2490 }] }], "ScanStartTime": 1566720905, "Scenes": [ "default" ], "Status": "Success", "TaskId": "xxx", "Url": "https://xxx/xxx.m4a" } </code></pre> :param request: Request instance for ScanVoice. :type request: :class:`tencentcloud.gme.v20180711.models.ScanVoiceRequest` :rtype: :class:`tencentcloud.gme.v20180711.models.ScanVoiceResponse` """ try: params = request._serialize() body = self.call("ScanVoice", params) response = json.loads(body) if "Error" not in response["Response"]: model = models.ScanVoiceResponse() model._deserialize(response["Response"]) return model else: code = response["Response"]["Error"]["Code"] message = response["Response"]["Error"]["Message"] reqid = response["Response"]["RequestId"] raise TencentCloudSDKException(code, message, reqid) except Exception as e: if isinstance(e, TencentCloudSDKException): raise else: raise TencentCloudSDKException(e.message, e.message)
def ScanVoice(self, request): """This API is used to submit a speech detection task. Up to 100 tasks can be added in the detection task list. Before using this API, please enable the speech analysis service in [Console > Service Configuration](https://console.cloud.tencent.com/gamegme/conf). </br></br> <h4><b>Feature trial description:</b></h4> <li>You can try out the speech analysis service free of charge in <a href="https://console.cloud.tencent.com/gamegme/tryout">Console > Product Trial</a>.</li> </br> <h4><b>API feature description:</b></h4> <li>This API can check audio streams or files for non-compliant content.</li> <li>The detection result can be obtained by setting the callback address (`Callback`) or calling the `DescribeScanResultList` API for polling.</li> <li>The scenario can be specified, such as abusive, pornographic, or politically sensitive information.</li> <li>Detection tasks can be submitted in batches. Up to 100 tasks can be added in the detection task list.</li> </br> <h4><b>Audio file limit description:</b></h4> <li>Audio file size limit: 100 MB</li> <li>Audio file duration limit: 30 minutes</li> <li>Supported audio file formats: .wav, .m4a, .amr, .mp3, .aac, .wma, .ogg</li> </br> <h4><b>Audio stream limit description:</b></h4> <li>Supported audio stream formats: .m3u8, .flv</li> <li>Supported audio stream transfer protocols: RTMP, HTTP, HTTPS</li> <li>Audio stream duration limit: 4 hours</li> <li>Audio/video stream separation and audio stream analysis are supported</li> </br> <h4 id="Label_Value"><b>`Scenes` and `Label` parameter description:</b></h4> <p>When submitting a speech detection task, you need to specify the `Scenes` parameter. <font color="red">You are currently required to set the `Scenes` parameter to `["default"]`</font>. The detection result will contain the scenario specified at the time of request and detection result in the corresponding type.</p> <table> <thread> <tr> <th>Scenario</th> <th>Description</th> <th>Label</th> </tr> </thread> <tbody> <tr> <td>Speech detection</td> <td>Speech detection type</td> <td> <p>normal: normal</p> <p>p**n: pornographic</p> <p>politics: politically sensitive</p> <p>abuse: abusive</p> <p>ad: advertising</p> <p>terrorism: terrorism</p> <p>contraband: prohibited</p> <p>customized: custom keyword library. This feature is only available to whitelisted users. To try it out, please <a href="https://cloud.tencent.com/apply/p/8809fjcik56">contact us</a>.</p> </td> </tr> </tbody> </table> </br> <h4 id="Callback_Declare"><b>Callback description:</b></h4> <li>If the callback address parameter `Callback` (i.e., the URL of an HTTP(S) API) is specified in the request parameters, then the POST method should be supported and transferred data should be encoded with UTF-8.</li> <li>After the callback data is pushed, if the HTTP status code received is 200, the push is successful.</li> <li>HTTP header parameter description:</li> <table> <thread> <tr> <th>Name</th> <th>Type</th> <th>Required</th> <th>Description</th> </tr> </thread> <tbody> <tr> <td>Signatue</td> <td>string</td> <td>Yes</td> <td>Signature. For more information, please see <a href="#Callback_Signatue">Signature generation description</a>.</td> </tr> </tbody> </table> <ul id="Callback_Signatue"> <li>Signature generation description:</li> <ul> <li>The HMAC-SH1 algorithm should be used, and the result should be encoded with Base64;</li> <li>The original signature string is the entire JSON content of POST and body (the length is subject to `Content-Length`);</li> <li>The signature key is the `SecretKey` of the application, which can be viewed in the console.</li> </ul> </ul> <li>Below is a sample callback <font color="red">(for more information on the fields, please see the structure: <a href="https://cloud.tencent.com/document/api/607/35375#DescribeScanResult" target="_blank">DescribeScanResult</a>)</font>:</li> <pre><code>{ "Code": 0, "DataId": "1400000000_test_data_id", "ScanFinishTime": 1566720906, "HitFlag": true, "Live": false, "Msg": "", "ScanPiece": [{ "DumpUrl": "", "HitFlag": true, "MainType": "abuse", "RoomId": "123", "OpenId": "xxx", "Info":"", "Offset": 0, "Duration": 3400, "PieceStartTime":1574684231, "ScanDetail": [{ "EndTime": 1110, "KeyWord": "xxx", "Label": "abuse", "Rate": "90.00", "StartTime": 1110 }, { "EndTime": 1380, "KeyWord": "xxx", "Label": "abuse", "Rate": "90.00", "StartTime": 930 }, { "EndTime": 1560, "KeyWord": "xxx", "Label": "abuse", "Rate": "90.00", "StartTime": 930 }, { "EndTime": 2820, "KeyWord": "xxx", "Label": "abuse", "Rate": "90.00", "StartTime": 2490 }] }], "ScanStartTime": 1566720905, "Scenes": [ "default" ], "Status": "Success", "TaskId": "xxx", "Url": "https://xxx/xxx.m4a" } </code></pre> :param request: Request instance for ScanVoice. :type request: :class:`tencentcloud.gme.v20180711.models.ScanVoiceRequest` :rtype: :class:`tencentcloud.gme.v20180711.models.ScanVoiceResponse` """ try: params = request._serialize() body = self.call("ScanVoice", params) response = json.loads(body) if "Error" not in response["Response"]: model = models.ScanVoiceResponse() model._deserialize(response["Response"]) return model else: code = response["Response"]["Error"]["Code"] message = response["Response"]["Error"]["Message"] reqid = response["Response"]["RequestId"] raise TencentCloudSDKException(code, message, reqid) except Exception as e: if isinstance(e, TencentCloudSDKException): raise else: raise TencentCloudSDKException(e.message, e.message)