语音审核增强版支持SDK方式调用和HTTPS原生方式调用。推荐您使用SDK接入,可免去签名验证以及Body格式构建等细节步骤。本文介绍语音审核增强版接入的方式。
步骤一:开通服务
访问开通服务页面,开通内容(语音)审核增强版服务。接口接入使用后系统会按使用量自动出账,具体信息,请参见计费说明。您也可以购买按量抵扣资源包,资源包相较于后付费存在一定阶梯折扣,适合使用量级可预期和较大的用户。
开通内容(语音)审核增强版服务后,默认付费方式是按量后付费,且按照实际用量结算当日费用,不调用服务不收费。
步骤二:为RAM用户授权
在接入SDK或者API之前,您需要为RAM用户授权。您可以为阿里云账号和RAM用户创建一个访问密钥(AccessKey)。在调用阿里云API时您需要使用AccessKey完成身份验证。获取方式,请参见获取AccessKey。
步骤三:安装并接入语音审核服务
目前支持的接入地域如下:
地域 | 外网接入地址 | 内网接入地址 |
华东2(上海) | green-cip.cn-shanghai.aliyuncs.com | green-cip-vpc.cn-shanghai.aliyuncs.com |
华北2(北京) | green-cip.cn-beijing.aliyuncs.com | green-cip-vpc.cn-beijing.aliyuncs.com |
华东1(杭州) | green-cip.cn-hangzhou.aliyuncs.com | green-cip-vpc.cn-hangzhou.aliyuncs.com |
华南1(深圳) | https://green-cip.cn-shenzhen.aliyuncs.com | green-cip-vpc.cn-shenzhen.aliyuncs.com |
新加坡 | green-cip.ap-southeast-1.aliyuncs.com | green-cip-vpc.ap-southeast-1.aliyuncs.com |
如果需要其他语言的SDK示例代码,您可以通过OpenAPI 开发者门户在线调试工具调试API接口,该工具会自动生成相应API的SDK调用示例代码。在线调试API接口如下:
阿里云SDK代码通过定义ALIBABA_CLOUD_ACCESS_KEY_ID
和ALIBABA_CLOUD_ACCESS_KEY_SECRET
环境变量来创建默认的访问凭证。调用接口时,程序直接访问凭证,读取您的访问密钥(即AccessKey)并自动完成鉴权。您在接入SDK代码示例之前,请先配置环境变量。具体操作,请参见身份验证配置。
Java SDK
支持Java 1.8及以上版本。
原始代码,请参见Java SDK源码或者Java SDK源码(OSS路径)。
在pom.xml中加入相应依赖,就可以在Maven工程中使用SDK。
在dependencies中添加如下依赖:
<dependency> <groupId>com.aliyun</groupId> <artifactId>green20220302</artifactId> <version>2.2.7</version> </dependency>
接入Java SDK。
提交语音检测任务代码示例
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.aliyun.green20220302.Client; import com.aliyun.green20220302.models.VoiceModerationRequest; import com.aliyun.green20220302.models.VoiceModerationResponse; import com.aliyun.green20220302.models.VoiceModerationResponseBody; import com.aliyun.teaopenapi.models.Config; public class VoiceModerationDemo { public static void main(String[] args) throws Exception { Config config = new Config(); /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 常见获取环境变量方式: * 方式一: * 获取RAM用户AccessKey ID:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 获取RAM用户AccessKey Secret:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); * 方式二: * 获取RAM用户AccessKey ID:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 获取RAM用户AccessKey Secret:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ config.setAccessKeyId("建议从环境变量中获取RAM用户AccessKey ID"); config.setAccessKeySecret("建议从环境变量中获取RAM用户AccessKey Secret"); // 接入区域和地址请根据实际情况修改。 config.setRegionId("cn-shanghai"); config.setEndpoint("green-cip.cn-shanghai.aliyuncs.com"); // 连接时超时时间,单位毫秒(ms)。 config.setReadTimeout(6000); // 读取时超时时间,单位毫秒(ms)。 config.setConnectTimeout(3000); // 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。 Client client = new Client(config); JSONObject serviceParameters = new JSONObject(); serviceParameters.put("url", "https://xxxx/xxx/sample.wav"); VoiceModerationRequest voiceModerationRequest = new VoiceModerationRequest(); // 检测类型:audio_media_detection表示语音文件检测,live_stream_detection表示语音直播流检测。 voiceModerationRequest.setService("audio_media_detection"); voiceModerationRequest.setServiceParameters(serviceParameters.toJSONString()); try { VoiceModerationResponse response = client.voiceModeration(voiceModerationRequest); if (response.getStatusCode() == 200) { VoiceModerationResponseBody result = response.getBody(); System.out.println(JSON.toJSONString(result)); System.out.println("requestId = " + result.getRequestId()); System.out.println("code = " + result.getCode()); System.out.println("msg = " + result.getMessage()); Integer code = result.getCode(); if (200 == code) { VoiceModerationResponseBody.VoiceModerationResponseBodyData data = result.getData(); System.out.println("taskId = [" + data.getTaskId() + "]"); } else { System.out.println("voice moderation not success. code:" + code); } } else { System.out.println("response not success. status:" + response.getStatusCode()); } } catch (Exception e) { e.printStackTrace(); } } }
获取语音检测任务代码示例
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.aliyun.green20220302.Client; import com.aliyun.green20220302.models.VoiceModerationResultRequest; import com.aliyun.green20220302.models.VoiceModerationResultResponse; import com.aliyun.green20220302.models.VoiceModerationResultResponseBody; import com.aliyun.teaopenapi.models.Config; public class VoiceModerationResultDemo { public static void main(String[] args) throws Exception { Config config = new Config(); /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 常见获取环境变量方式: * 方式一: * 获取RAM用户AccessKeyID:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 获取RAM用户AccessKeySecret:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); * 方式二: * 获取RAM用户AccessKey ID:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 获取RAM用户AccessKey Secret:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ config.setAccessKeyId("建议从环境变量中获取RAM用户AccessKey ID"); config.setAccessKeySecret("建议从环境变量中获取RAM用户AccessKey Secret"); // 接入区域和地址请根据实际情况修改。 config.setRegionId("cn-shanghai"); config.setEndpoint("green-cip.cn-shanghai.aliyuncs.com"); // 连接时超时时间,单位毫秒(ms)。 config.setReadTimeout(6000); // 读取时超时时间,单位毫秒(ms)。 config.setConnectTimeout(3000); // 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。 Client client = new Client(config); JSONObject serviceParameters = new JSONObject(); // 提交任务时返回的taskId。 serviceParameters.put("taskId", "检测任务返回的taskID"); VoiceModerationResultRequest voiceModerationResultRequest = new VoiceModerationResultRequest(); // 检测类型:audio_media_detection表示语音文件检测,live_stream_detection表示语音直播流检测。 voiceModerationResultRequest.setService("audio_media_detection"); voiceModerationResultRequest.setServiceParameters(serviceParameters.toJSONString()); try { VoiceModerationResultResponse response = client.voiceModerationResult(voiceModerationResultRequest); if (response.getStatusCode() == 200) { VoiceModerationResultResponseBody result = response.getBody(); System.out.println("requestId=" + result.getRequestId()); System.out.println("code=" + result.getCode()); System.out.println("msg=" + result.getMessage()); if (200 == result.getCode()) { VoiceModerationResultResponseBody.VoiceModerationResultResponseBodyData data = result.getData(); System.out.println("sliceDetails = " + JSON.toJSONString(data.getSliceDetails())); System.out.println("taskId = " + data.getTaskId()); System.out.println("url = " + data.getUrl()); } else { System.out.println("voice moderation result not success. code:" + result.getCode()); } } else { System.out.println("response not success. status:" + response.getStatusCode()); } } catch (Exception e) { e.printStackTrace(); } } }
取消直播流检测任务
import com.alibaba.fastjson.JSONObject; import com.aliyun.green20220302.Client; import com.aliyun.green20220302.models.VoiceModerationCancelRequest; import com.aliyun.green20220302.models.VoiceModerationCancelResponse; import com.aliyun.green20220302.models.VoiceModerationCancelResponseBody; import com.aliyun.teaopenapi.models.Config; public class VoiceModerationCancelDemo { public static void main(String[] args) throws Exception { Config config = new Config(); /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 常见获取环境变量方式: * 方式一: * 获取RAM用户AccessKey ID:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 获取RAM用户AccessKey Secret:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); * 方式二: * 获取RAM用户AccessKey ID:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 获取RAM用户AccessKey Secret:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ config.setAccessKeyId("建议从环境变量中获取RAM用户AccessKey ID"); config.setAccessKeySecret("建议从环境变量中获取RAM用户AccessKey Secret"); // 接入区域和地址请根据实际情况修改。 config.setRegionId("cn-shanghai"); config.setEndpoint("green-cip.cn-shanghai.aliyuncs.com"); // 连接时超时时间,单位毫秒(ms)。 config.setReadTimeout(6000); // 读取时超时时间,单位毫秒(ms)。 config.setConnectTimeout(3000); // 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。 Client client = new Client(config); JSONObject serviceParameters = new JSONObject(); // 提交任务时返回的taskId。 serviceParameters.put("taskId", "检测任务返回的taskId"); VoiceModerationCancelRequest voiceModerationCancelRequest = new VoiceModerationCancelRequest(); // 检测类型:audio_media_detection表示语音文件检测,live_stream_detection表示语音直播流检测。 voiceModerationCancelRequest.setService("live_stream_detection"); voiceModerationCancelRequest.setServiceParameters(serviceParameters.toJSONString()); try { VoiceModerationCancelResponse response = client.voiceModerationCancel(voiceModerationCancelRequest); if (response.getStatusCode() == 200) { VoiceModerationCancelResponseBody result = response.getBody(); System.out.println("requestId=" + result.getRequestId()); System.out.println("code=" + result.getCode()); System.out.println("msg=" + result.getMessage()); if (200 != result.getCode()) { System.out.println("voice moderation cancel not success. code:" + result.getCode()); } } else { System.out.println("response not success. status:" + response.getStatusCode()); } } catch (Exception e) { e.printStackTrace(); } } }
Python SDK
支持Python 3.6及以上版本。
原始代码,请参见Python SDK源码。
支持Python 3.6及以上版本。
执行如下命令引入相关依赖。
pip install alibabacloud_green20220302==2.2.7
接入Python SDK。
提交语音检测任务代码示例
# coding=utf-8 # python version >= 3.6 from alibabacloud_green20220302.client import Client from alibabacloud_green20220302 import models from alibabacloud_tea_openapi.models import Config import json config = Config( # 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 # 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 # 常见获取环境变量方式: # 获取RAM用户AccessKey ID:os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'] # 获取RAM用户AccessKey Secret:os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] access_key_id='建议从环境变量中获取RAM用户AccessKey ID', access_key_secret='建议从环境变量中获取RAM用户AccessKey Secret', # 连接超时时间,单位毫秒(ms)。 connect_timeout=10000, # 读超时时间,单位毫秒(ms)。 read_timeout=3000, region_id='cn-shanghai', endpoint='green-cip.cn-shanghai.aliyuncs.com' ) # 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。 clt = Client(config) serviceParameters = { 'url': 'https://xxxx/xxx/sample.wav', } voiceModerationRequest = models.VoiceModerationRequest( # 检测类型:audio_media_detection表示语音文件检测,live_stream_detection表示语音直播流检测。 service='audio_media_detection', service_parameters=json.dumps(serviceParameters) ) try: response = clt.voice_moderation(voiceModerationRequest) if response.status_code == 200: # 调用成功。 # 获取审核结果。 result = response.body print('response success. result:{}'.format(result)) else: print('response not success. status:{} ,result:{}'.format(response.status_code, response)) except Exception as err: print(err)
获取语音检测任务结果
# coding=utf-8 # python version >= 3.6 from alibabacloud_green20220302.client import Client from alibabacloud_green20220302 import models from alibabacloud_tea_openapi.models import Config import json config = Config( # 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 # 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 # 常见获取环境变量方式: # 获取RAM用户AccessKey ID:os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'] # 获取RAM用户AccessKey Secret:os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] access_key_id='建议从环境变量中获取RAM用户AccessKey ID', access_key_secret='建议从环境变量中获取RAM用户AccessKey Secret', # 连接超时时间,单位毫秒(ms)。 connect_timeout=10000, # 读超时时间,单位毫秒(ms)。 read_timeout=3000, region_id='cn-shanghai', endpoint='green-cip.cn-shanghai.aliyuncs.com' ) # 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。 clt = Client(config) # 提交任务时返回的taskId。 serviceParameters = { "taskId": '检测任务返回的taskId' } voiceModerationResultRequest = models.VoiceModerationResultRequest( # 检测类型。 service='audio_media_detection', service_parameters=json.dumps(serviceParameters) ) try: response = clt.voice_moderation_result(voiceModerationResultRequest) if response.status_code == 200: # 调用成功。 # 获取审核结果。 result = response.body print('response success. result:{}'.format(result)) else: print('response not success. status:{} ,result:{}'.format(response.status_code, response)) except Exception as err: print(err)
取消直播流检测任务
# coding=utf-8 # python version >= 3.6 from alibabacloud_green20220302.client import Client from alibabacloud_green20220302 import models from alibabacloud_tea_openapi.models import Config import json config = Config( # 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 # 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 # 常见获取环境变量方式: # 获取RAM用户AccessKey ID:os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'] # 获取RAM用户AccessKey Secret:os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] access_key_id='建议从环境变量中获取RAM用户AccessKey ID', access_key_secret='建议从环境变量中获取RAM用户AccessKey Secret', # 连接超时时间,单位毫秒(ms)。 connect_timeout=10000, # 读超时时间,单位毫秒(ms)。 read_timeout=3000, region_id='cn-shanghai', endpoint='green-cip.cn-shanghai.aliyuncs.com' ) # 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。 clt = Client(config) # 提交任务时返回的taskId。 serviceParameters = { "taskId": '检测任务返回的taskId' } voiceModerationCancelRequest = models.VoiceModerationCancelRequest( # 检测类型。 service='live_stream_detection', service_parameters=json.dumps(serviceParameters) ) try: response = clt.voice_moderation_cancel(voiceModerationCancelRequest) if response.status_code == 200: # 调用成功。 # 获取审核结果。 result = response.body print('response success. result:{}'.format(result)) else: print('response not success. status:{} ,result:{}'.format(response.status_code, response)) except Exception as err: print(err)
PHP SDK
支持PHP 5.6及以上版本。
原始代码,请参见PHP SDK源码。
PHP SDK
支持PHP 5.6及以上版本。
执行如下命令引入相关依赖。
composer require alibabacloud/green-20220302
接入PHP SDK。
提交语音检测任务代码示例
<?php require('vendor/autoload.php'); use AlibabaCloud\SDK\Green\V20220302\Models\VoiceModerationRequest; use AlibabaCloud\Tea\Exception\TeaUnableRetryError; use Darabonba\OpenApi\Models\Config; use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions; use AlibabaCloud\SDK\Green\V20220302\Green; $config = new Config([]); /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 获取RAM用户AccessKey Secret:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ $config->accessKeyId = "建议从环境变量中获取RAM用户AccessKey ID"; $config->accessKeySecret = "建议从环境变量中获取RAM用户AccessKey Secret"; // 接入区域和地址请根据实际情况修改。 $config->regionId = "cn-shanghai"; $config->endpoint = "green-cip.cn-shanghai.aliyuncs.com"; // 设置http代理。 // $config->httpProxy = "http://10.10.xx.xx:xxxx"; // 设置https代理。 // $config->httpsProxy = "http://10.10.xx.xx:xxxx"; // 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。 $client = new Green($config); $request = new VoiceModerationRequest(); // 检测类型:audio_media_detection语音文件检测;live_stream_detection语音直播流检测。 $request->service = "audio_media_detection"; $serviceParameters = array('url' => 'https://xxxx/xxx/sample.wav'); $request->serviceParameters = json_encode($serviceParameters); $runtime = new RuntimeOptions(); $runtime->readTimeout = 6000; $runtime->connectTimeout = 3000; try { $response = $client->voiceModeration($request, $runtime); print_r($response->body); if (200 == $response->statusCode) { $body = $response->body; print_r("requestId = " . $body->requestId); print_r("code = " . $body->code); print_r("message = " . $body->message); if (200 == $body->code) { $data = $body->data; print_r("taskId = " . $data->taskId); } else { print_r("voice moderation not success. code:" . $body->code); } } else { print_r("response not success. code:" . $response->statusCode); } } catch (TeaUnableRetryError $e) { var_dump($e->getMessage()); var_dump($e->getErrorInfo()); var_dump($e->getLastException()); var_dump($e->getLastRequest()); }
获取语音检测任务结果代码示例
<?php require('vendor/autoload.php'); use AlibabaCloud\SDK\Green\V20220302\Models\VoiceModerationResultRequest; use AlibabaCloud\Tea\Exception\TeaUnableRetryError; use Darabonba\OpenApi\Models\Config; use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions; use AlibabaCloud\SDK\Green\V20220302\Green; $config = new Config([]); /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 获取RAM用户AccessKey Secret:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ $config->accessKeyId = "建议从环境变量中获取RAM用户AccessKey ID"; $config->accessKeySecret = "建议从环境变量中获取RAM用户AccessKey Secret"; // 接入区域和地址请根据实际情况修改。 $config->regionId = "cn-shanghai"; $config->endpoint = "green-cip.cn-shanghai.aliyuncs.com"; // 设置http代理。 // $config->httpProxy = "http://10.10.xx.xx:xxxx"; // 设置https代理。 // $config->httpsProxy = "http://10.10.xx.xx:xxxx"; // 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。 $client = new Green($config); $request = new VoiceModerationResultRequest(); // 检测类型:audio_media_detection语音文件检测;live_stream_detection语音直播流检测。 $request->service = "audio_media_detection"; // 提交任务时返回的taskId。 $serviceParameters = array('taskId' => 'au_f_O5z5iaIis3iI0X2oNYj7qa-1x****'); $request->serviceParameters = json_encode($serviceParameters); $runtime = new RuntimeOptions(); $runtime->readTimeout = 6000; $runtime->connectTimeout = 3000; try { $response = $client->voiceModerationResult($request, $runtime); print_r($response->body); if (200 == $response->statusCode) { $body = $response->body; print_r("requestId = " . $body->requestId); print_r("code = " . $body->code); print_r("message = " . $body->message); if (200 == $body->code) { $data = $body->data; print_r("liveId = " . $data->liveId); print_r("sliceDetails = " . $data->sliceDetails); print_r("taskId = " . $data->taskId); print_r("url = " . $data->url); } else { print_r("voice moderation result not success. code:" . $body->code); } } else { print_r("response not success. code:" . $response->statusCode); } } catch (TeaUnableRetryError $e) { var_dump($e->getMessage()); var_dump($e->getErrorInfo()); var_dump($e->getLastException()); var_dump($e->getLastRequest()); }
取消直播流检测任务代码示例
<?php require('vendor/autoload.php'); use AlibabaCloud\SDK\Green\V20220302\Models\VoiceModerationCancelRequest; use AlibabaCloud\Tea\Exception\TeaUnableRetryError; use Darabonba\OpenApi\Models\Config; use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions; use AlibabaCloud\SDK\Green\V20220302\Green; $config = new Config([]); /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 获取RAM用户AccessKey Secret:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ $config->accessKeyId = "建议从环境变量中获取RAM用户AccessKey ID"; $config->accessKeySecret = "建议从环境变量中获取RAM用户AccessKey Secret"; // 接入区域和地址请根据实际情况修改。 $config->regionId = "cn-shanghai"; $config->endpoint = "green-cip.cn-shanghai.aliyuncs.com"; // 设置http代理。 // $config->httpProxy = "http://10.10.xx.xx:xxxx"; // 设置https代理。 // $config->httpsProxy = "http://10.10.xx.xx:xxxx"; // 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。 $client = new Green($config); $request = new VoiceModerationCancelRequest(); // 检测类型:audio_media_detection语音文件检测;live_stream_detection语音直播流检测。 $request->service = "audio_media_detection"; // 提交任务时返回的taskId。 $serviceParameters = array('taskId' => 'au_f_O5z5iaIis3iI0X2oNYj7qa-1x****'); $request->serviceParameters = json_encode($serviceParameters); $runtime = new RuntimeOptions(); $runtime->readTimeout = 6000; $runtime->connectTimeout = 3000; try { $response = $client->voiceModerationCancel($request, $runtime); print_r($response->body); if (200 == $response->statusCode) { $body = $response->body; print_r("requestId = " . $body->requestId); print_r("code = " . $body->code); print_r("message = " . $body->message); if (200 != $body->code) { print_r("voice moderation cancel not success. code:" . $body->code); } } else { print_r("response not success. code:" . $response->statusCode); } } catch (TeaUnableRetryError $e) { var_dump($e->getMessage()); var_dump($e->getErrorInfo()); var_dump($e->getLastException()); var_dump($e->getLastRequest()); }
Go SDK
Go SDK
执行如下命令引入相关依赖。
go get github.com/alibabacloud-go/green-20220302
接入Go SDK。
提交语音检测任务代码示例
package main import ( "encoding/json" "fmt" openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client" green "github.com/alibabacloud-go/green-20220302/client" "github.com/alibabacloud-go/tea/tea" "net/http" ) func main() { config := &openapi.Config{ /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID") * 获取RAM用户AccessKey Secret:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET") */ AccessKeyId: tea.String("建议从环境变量中获取RAM用户AccessKey ID"), AccessKeySecret: tea.String("建议从环境变量中获取RAM用户AccessKey Secret"), // 填写您的接入地域。 RegionId: tea.String("cn-shanghai"), Endpoint: tea.String("green-cip.cn-shanghai.aliyuncs.com"), // 设置http代理。 //HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"), // 设置https代理。 //HttpsProxy: tea.String("https://xx.xx.xx.xx:xxxx"), /** * 请设置超时时间。服务端全链路处理超时时间为10秒,请做相应设置。 * 如果您设置的ReadTimeout小于服务端处理的时间,程序中会获得一个ReadTimeout异常。 */ ConnectTimeout: tea.Int(3000), ReadTimeout: tea.Int(6000), } // 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。 client, _err := green.NewClient(config) if _err != nil { panic(_err) } // 待检测语音URL。 serviceParameters, _ := json.Marshal( map[string]interface{}{ "url": "https://xxxx/xxx/sample.wav", }, ) request := green.VoiceModerationRequest{ // 语音检测service。 Service: tea.String("audio_media_detection"), ServiceParameters: tea.String(string(serviceParameters)), } result, _err := client.VoiceModeration(&request) if _err != nil { panic(_err) } statusCode := tea.IntValue(tea.ToInt(result.StatusCode)) if statusCode == http.StatusOK { voiceModerationResponse := result.Body fmt.Println("response success. response:" + voiceModerationResponse.String()) if tea.IntValue(tea.ToInt(voiceModerationResponse.Code)) == 200 { voiceModerationResponseData := voiceModerationResponse.Data fmt.Println("response taskId:" + tea.StringValue(voiceModerationResponseData.TaskId)) } else { fmt.Println("voice moderation not success. code:" + tea.ToString(tea.Int32Value(voiceModerationResponse.Code))) } } else { fmt.Println("response not success. status:" + tea.ToString(statusCode)) } }
获取语音检测任务结果代码示例
package main import ( "encoding/json" "fmt" openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client" green "github.com/alibabacloud-go/green-20220302/client" "github.com/alibabacloud-go/tea/tea" "net/http" ) func main() { config := &openapi.Config{ /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID") * 获取RAM用户AccessKey Secret:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET") */ AccessKeyId: tea.String("建议从环境变量中获取RAM用户AccessKey ID"), AccessKeySecret: tea.String("建议从环境变量中获取RAM用户AccessKey Secret"), // 填写您的接入地域。 RegionId: tea.String("cn-shanghai"), Endpoint: tea.String("green-cip.cn-shanghai.aliyuncs.com"), // 设置http代理。 // HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"), // 设置https代理。 // HttpsProxy: tea.String("https://xx.xx.xx.xx:xxxx"), /** * 请设置超时时间。服务端全链路处理超时时间为10秒,请做相应设置。 * 如果您设置的ReadTimeout小于服务端处理的时间,程序中会获得一个ReadTimeout异常。 */ ConnectTimeout: tea.Int(3000), ReadTimeout: tea.Int(6000), } // 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。 client, _err := green.NewClient(config) if _err != nil { panic(_err) } serviceParameters, _ := json.Marshal( map[string]interface{}{ "taskId": "<任务ID>", }, ) request := green.VoiceModerationResultRequest{ // 语音检测service。 Service: tea.String("audio_media_detection"), ServiceParameters: tea.String(string(serviceParameters)), } result, _err := client.VoiceModerationResult(&request) if _err != nil { panic(_err) } statusCode := tea.IntValue(tea.ToInt(result.StatusCode)) if statusCode == http.StatusOK { voiceModerationResponse := result.Body fmt.Println("response success. response:" + voiceModerationResponse.String()) if tea.IntValue(tea.ToInt(voiceModerationResponse.Code)) == 200 { resultResponseBodyData := voiceModerationResponse.Data fmt.Println("response liveId:" + tea.StringValue(resultResponseBodyData.LiveId)) fmt.Println("response sliceDetails:" + tea.ToString(resultResponseBodyData.SliceDetails)) } else { fmt.Println("get voice moderation result not success. code:" + tea.ToString(tea.Int32Value(voiceModerationResponse.Code))) } } else { fmt.Println("response not success. status:" + tea.ToString(statusCode)) } }
取消直播流检测任务代码示例
package main import ( "encoding/json" "fmt" openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client" green "github.com/alibabacloud-go/green-20220302/client" "github.com/alibabacloud-go/tea/tea" "net/http" ) func main() { config := &openapi.Config{ /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID") * 获取RAM用户AccessKey Secret:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET") */ AccessKeyId: tea.String("建议从环境变量中获取RAM用户AccessKey ID"), AccessKeySecret: tea.String("建议从环境变量中获取RAM用户AccessKey Secret"), // 填写您的接入地域。 RegionId: tea.String("cn-shanghai"), Endpoint: tea.String("green-cip.cn-shanghai.aliyuncs.com"), // 设置http代理。 // HttpProxy: tea.String("http://10.10.xx.xx:xxxx"), // 设置https代理。 // HttpsProxy: tea.String("https://10.10.xx.xx:xxxx"), /** * 请设置超时时间。服务端全链路处理超时时间为10秒,请做相应设置。 * 如果您设置的ReadTimeout小于服务端处理的时间,程序中会获得一个ReadTimeout异常。 */ ConnectTimeout: tea.Int(3000), ReadTimeout: tea.Int(6000), } // 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。 client, _err := green.NewClient(config) if _err != nil { panic(_err) } serviceParameters, _ := json.Marshal( map[string]interface{}{ "taskId": "<待取消任务ID>", }, ) request := green.VoiceModerationCancelRequest{ // 语音检测service。 Service: tea.String("audio_media_detection"), ServiceParameters: tea.String(string(serviceParameters)), } result, _err := client.VoiceModerationCancel(&request) if _err != nil { panic(_err) } statusCode := tea.IntValue(tea.ToInt(result.StatusCode)) if statusCode == http.StatusOK { cancelResponseBody := result.Body fmt.Println("response success. response:" + cancelResponseBody.String()) if tea.IntValue(tea.ToInt(cancelResponseBody.Code)) != 200 { fmt.Println("voice moderation cancel not success. code:" + tea.ToString(tea.Int32Value(cancelResponseBody.Code))) } } else { fmt.Println("response not success. status:" + tea.ToString(statusCode)) } }
C# SDK
执行如下命令引入相关依赖。
dotnet add package AlibabaCloud.SDK.Green20220302 --version 2.2.7
接入C# SDK。
提交语音检测任务代码示例
using Newtonsoft.Json; using Tea; namespace AlibabaCloud.SDK.Sample { public class Sample { /** * 使用AK&SK初始化账号Client * @param accessKeyId * @param accessKeySecret * @return Client * @throws Exception */ public static AlibabaCloud.SDK.Green20220302.Client CreateClient(string accessKeyId, string accessKeySecret) { AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config { AccessKeyId = accessKeyId, AccessKeySecret = accessKeySecret, }; // 访问的域名。 config.Endpoint = "green-cip.cn-shanghai.aliyuncs.com"; return new AlibabaCloud.SDK.Green20220302.Client(config); } public static void Main(string[] args) { // 工程代码泄露可能会导致AccessKey泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议使用更安全的STS方式。 /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID") * 获取RAM用户AccessKey Secret:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET") */ string accessKeyId = "建议从环境变量中获取RAM用户AccessKey ID", string accessKeySecret = '建议从环境变量中获取RAM用户AccessKey Secret', // 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。 AlibabaCloud.SDK.Green20220302.Client client = CreateClient(accessKeyId, accessKeySecret); // 构建语音检测请求。 AlibabaCloud.SDK.Green20220302.Models.VoiceModerationRequest voiceModerationRequest = new AlibabaCloud.SDK.Green20220302.Models.VoiceModerationRequest(); // 语音检测service。 voiceModerationRequest.Service="audio_media_detection"; Dictionary<String,Object> task=new Dictionary<string, object>(); // 待检测语音链接,公网可访问的URL。 task.Add("url","https://xxxx/xxx/sample.wav"); voiceModerationRequest.ServiceParameters=JsonConvert.SerializeObject(task); // 创建RuntimeObject实例并设置运行参数。 AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions(); runtime.ReadTimeout = 10000; runtime.ConnectTimeout = 10000; try { // 提交语音检测任务。 AlibabaCloud.SDK.Green20220302.Models.VoiceModerationResponse response= client.VoiceModerationWithOptions(voiceModerationRequest, runtime); if(response is not null){ Console.WriteLine("response statusCode : "+response.StatusCode); if (response.Body is not null){ Console.WriteLine("requestId : " + response.Body.RequestId); Console.WriteLine("code : " + response.Body.Code); Console.WriteLine("message : " + response.Body.Message); if(response.Body.Data is not null){ Console.WriteLine("taskId : " + response.Body.Data.TaskId); } } } } catch (TeaException error) { // 如有需要,请打印error。 AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message); Console.WriteLine("error : " + error); } catch (Exception _error) { TeaException error = new TeaException(new Dictionary<string, object> { { "message", _error.Message } }); // 如有需要,请打印error。 AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message); Console.WriteLine("error : " + error); } } } }
获取语音检测任务结果代码示例
using Newtonsoft.Json; using Tea; namespace AlibabaCloud.SDK.Sample { public class Sample { /** * 使用AK&SK初始化账号Client * @param accessKeyId * @param accessKeySecret * @return Client * @throws Exception */ public static AlibabaCloud.SDK.Green20220302.Client CreateClient(string accessKeyId, string accessKeySecret) { AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config { AccessKeyId = accessKeyId, AccessKeySecret = accessKeySecret, }; // 访问的域名。 config.Endpoint = "green-cip.cn-shanghai.aliyuncs.com"; return new AlibabaCloud.SDK.Green20220302.Client(config); } public static void Main(string[] args) { // 工程代码泄露可能会导致AccessKey泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议使用更安全的STS方式。 /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID") * 获取RAM用户AccessKey Secret:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET") */ string accessKeyId = "建议从环境变量中获取RAM用户AccessKey ID", string accessKeySecret = '建议从环境变量中获取RAM用户AccessKey Secret', // 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。 AlibabaCloud.SDK.Green20220302.Client client = CreateClient(accessKeyId, accessKeySecret); // 构建语音检测请求。 AlibabaCloud.SDK.Green20220302.Models.VoiceModerationResultRequest voiceModerationResultRequest = new AlibabaCloud.SDK.Green20220302.Models.VoiceModerationResultRequest(); // 语音检测service。 voiceModerationResultRequest.Service="audio_media_detection"; Dictionary<String,Object> task=new Dictionary<string, object>(); // 待查询结果的任务ID。 task.Add("taskId","<待查询结果的任务ID>"); voiceModerationResultRequest.ServiceParameters=JsonConvert.SerializeObject(task); // 创建RuntimeObject实例并设置运行参数。 AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions(); runtime.ReadTimeout = 10000; runtime.ConnectTimeout = 10000; try { // 提交语音检测任务。 AlibabaCloud.SDK.Green20220302.Models.VoiceModerationResultResponse response= client.VoiceModerationResultWithOptions(voiceModerationResultRequest, runtime); if(response is not null){ Console.WriteLine("response statusCode : "+response.StatusCode); if (response.Body is not null){ Console.WriteLine("requestId : " + response.Body.RequestId); Console.WriteLine("code : " + response.Body.Code); Console.WriteLine("message : " + response.Body.Message); if(response.Body.Data is not null){ Console.WriteLine("taskId : " + response.Body.Data.TaskId); Console.WriteLine("liveId : " + response.Body.Data.LiveId); Console.WriteLine("url : " + response.Body.Data.Url); Console.WriteLine("sliceDetails : " + JsonConvert.SerializeObject(response.Body.Data.SliceDetails)); } } } } catch (TeaException error) { // 如有需要,请打印error。 AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message); Console.WriteLine("error : " + error); } catch (Exception _error) { TeaException error = new TeaException(new Dictionary<string, object> { { "message", _error.Message } }); // 如有需要,请打印error。 AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message); Console.WriteLine("error : " + error); } } } }
取消直播流检测任务代码示例
using Tea; using Newtonsoft.Json; namespace AlibabaCloud.SDK.Sample { public class Sampless { /** * 使用AK&SK初始化账号Client * @param accessKeyId * @param accessKeySecret * @return Client * @throws Exception */ public static AlibabaCloud.SDK.Green20220302.Client CreateClient(string accessKeyId, string accessKeySecret) { AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config { AccessKeyId = accessKeyId, AccessKeySecret = accessKeySecret, }; // 访问的域名。 config.Endpoint = "green-cip.cn-shanghai.aliyuncs.com"; return new AlibabaCloud.SDK.Green20220302.Client(config); } public static void Main(string[] args) { // 工程代码泄露可能会导致AccessKey泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议使用更安全的STS方式。 /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID") * 获取RAM用户AccessKey Secret:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET") */ string accessKeyId = "建议从环境变量中获取RAM用户AccessKey ID", string accessKeySecret = '建议从环境变量中获取RAM用户AccessKey Secret', // 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。 AlibabaCloud.SDK.Green20220302.Client client = CreateClient(accessKeyId, accessKeySecret); // 构建取消直播流任务检测请求。 AlibabaCloud.SDK.Green20220302.Models.VoiceModerationCancelRequest voiceModerationCancelRequest = new AlibabaCloud.SDK.Green20220302.Models.VoiceModerationCancelRequest(); // 语音检测service。 voiceModerationCancelRequest.Service="audio_media_detection"; Dictionary<String,Object> task=new Dictionary<string, object>(); // 待取消直播流检测任务ID。 task.Add("taskId","<待取消直播流检测任务ID>"); voiceModerationCancelRequest.ServiceParameters=JsonConvert.SerializeObject(task); // 创建RuntimeObject实例并设置运行参数。 AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions(); runtime.ReadTimeout = 10000; runtime.ConnectTimeout = 10000; try { // 提交取消语音检测任务请求。 AlibabaCloud.SDK.Green20220302.Models.VoiceModerationCancelResponse response = client.VoiceModerationCancelWithOptions(voiceModerationCancelRequest, runtime); if(response is not null){ Console.WriteLine("response statusCode : "+response.StatusCode); if (response.Body is not null){ Console.WriteLine("requestId : " + response.Body.RequestId); Console.WriteLine("code : " + response.Body.Code); Console.WriteLine("message : " + response.Body.Message); } } } catch (TeaException error) { // 如有需要,请打印error。 AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message); Console.WriteLine("error : " + error); } catch (Exception _error) { TeaException error = new TeaException(new Dictionary<string, object> { { "message", _error.Message } }); // 如有需要,请打印error。 AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message); Console.WriteLine("error : " + error); } } } }
Node.js SDK
执行如下命令引入相关依赖。
npm install @alicloud/pop-core
接入Node.js SDK。
提交语音检测任务代码示例
const RPCClient = require('@alicloud/pop-core').RPCClient; // 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。 var client = new RPCClient({ /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'] * 获取RAM用户AccessKey Secret:process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] */ accessKeyId: '建议从环境变量中获取RAM用户AccessKey ID', accessKeySecret: '建议从环境变量中获取RAM用户AccessKey Secret', endpoint: 'https://green-cip.cn-shanghai.aliyuncs.com', apiVersion: '2022-03-02' }); var params = { // 语音检测service。 "Service": "audio_media_detection", // 待检测语音链接。 "ServiceParameters":JSON.stringify({ "url": "<待检测语音url>", }) } var requestOption = { method: 'POST', formatParams: false, }; client.request('VoiceModeration', params, requestOption).then((result) => { console.log(JSON.stringify(result)); }, (ex) => { console.log(ex); })
获取语音检测任务结果代码示例
const RPCClient = require('@alicloud/pop-core').RPCClient; // 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。 var client = new RPCClient({ /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'] * 获取RAM用户AccessKey Secret:process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] */ accessKeyId: '建议从环境变量中获取RAM用户AccessKey ID', accessKeySecret: '建议从环境变量中获取RAM用户AccessKey Secret', endpoint: 'https://green-cip.cn-shanghai.aliyuncs.com', apiVersion: '2022-03-02' }); var params = { // 语音检测service。 "Service": "audio_media_detection", "ServiceParameters":JSON.stringify({ "taskId": "<待获取语音检测结果的任务ID>", }) } var requestOption = { method: 'POST', formatParams: false, }; client.request('VoiceModerationResult', params, requestOption).then((result) => { console.log(JSON.stringify(result)); }, (ex) => { console.log(ex); })
取消直播流检测任务代码示例
const RPCClient = require('@alicloud/pop-core').RPCClient; // 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。 var client = new RPCClient({ /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'] * 获取RAM用户AccessKey Secret:process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] */ accessKeyId: '建议从环境变量中获取RAM用户AccessKey ID', accessKeySecret: '建议从环境变量中获取RAM用户AccessKey Secret', endpoint: 'https://green-cip.cn-shanghai.aliyuncs.com', apiVersion: '2022-03-02' }); var params = { // 语音检测service。 "Service": "audio_media_detection", // 待取消直播流检测任务ID。 "ServiceParameters":JSON.stringify({ "taskId": "<待取消直播流检测任务ID>", }) } var requestOption = { method: 'POST', formatParams: false, }; client.request('VoiceModerationCancel', params, requestOption).then((result) => { console.log(JSON.stringify(result)); }, (ex) => { console.log(ex); })
HTTPS原生调用
调用方式
服务请求地址:https://green-cip.{region}.aliyuncs.com
协议:HTTPS
方式:POST
公共请求参数
语音审核增强版API接口的入参数包含公共请求参数和具体接口请求参数,公共请求参数是指每一个接口都需要使用到的参数,以下表格是公共请求参数的详细介绍。
名称
类型
是否必须
描述
Format
String
是
返回消息的格式。取值:
JSON(默认值)
XML
Version
String
是
API版本号,使用YYYY-MM-DD日期格式,本版本为2022-03-02。
AccessKeyId
String
是
阿里云颁发给用户的访问服务所用的密钥ID。
Signature
String
是
签名结果串,关于签名的计算方法,请参见下方签名方式。
SignatureMethod
String
是
签名方式,目前支持HMAC-SHA1。
Timestamp
String
是
请求的时间戳。日期格式按照ISO8601标准表示,并需要使用UTC时间。
格式为:yyyy-MM-ddTHH:mm:ssZ。
例如,北京时间2022年12月12日09点13分14秒表示为2022-12-12T01:13:14Z。
SignatureVersion
String
是
签名算法版本,取值为1.0。
SignatureNonce
String
是
唯一随机数,用于防止网络重放攻击。不同请求要使用不同的随机数值。
Action
String
是
取值:
VoiceModeration
VoiceModerationResult
VoiceModerationCancel
公共返回参数
您发送的每次接口调用请求,无论成功与否,系统都会返回唯一识别码(RequestId)。其他返回参数会根据您调用的服务不同而返回不同的参数。
{ "RequestId":"20B935A9-XXXXXXXX-XXXXXXXX0C2", "Message":"SUCCESS", "Data":{ "TaskId":"au_f_O5xxxxxxxxxxxxxxqa-1****" }, "Code":200 }
代码示例
以下返回示例为了便于阅读,做了格式化处理,实际返回结果没有进行换行、缩进等格式化处理。
审核任务代码示例
请求示例
http://green-cip.cn-shanghai.aliyuncs.com/ ?Format=JSON &Version=2022-03-02 &Signature=vpEEL0zFHfxXYzSFV0n7%2FZiFL9o%3D &SignatureMethod=Hmac-SHA1 &SignatureNonce=15215528852396 &SignatureVersion=1.0 &Action=VoiceModeration &AccessKeyId=123****cip &Timestamp=2023-02-03T12:00:00Z &Service=audio_media_detection &ServiceParameters={"url": "https://xxxxxx.aliyuncs.com/sample/****.wav"}
正常返回示例
{ "RequestId":"20B935A9-XXXXXXXX-XXXXXXXX0C2", "Message":"SUCCESS", "Data":{ "TaskId":"au_f_O5xxxxxxxxxxxxxxqa-1x****" }, "Code":200 }
查询任务代码示例
请求示例
http://green-cip.cn-shanghai.aliyuncs.com/ ?Format=JSON &Version=2022-03-02 &Signature=vpEEL0zFHfxXYzSFV0n7%2FZiFL9o%3D &SignatureMethod=Hmac-SHA1 &SignatureNonce=15215528852396 &SignatureVersion=1.0 &Action=VoiceModerationResult &AccessKeyId=123****cip &Timestamp=2023-02-03T12:00:00Z &Service=audio_media_detection &ServiceParameters={"taskId": "au_f_O5zxxxxxxxxxxxxxxxx-1x****"}
正常返回示例
{ "RequestId":"926AD581-XXXXXXXXXXXXXX-7902AE", "Message":"success finished", "Data":{ "SliceDetails":[ { "EndTime":6, "StartTime":0, "Text":"今天天气还不错。", "Labels":"", "Url":"http://xxxx.aliyuncs.com/cip-media/voice/****.wav" } ] }, "Code":200 }
签名方式
语音审核增强版服务会对每个访问的请求进行身份验证,因此,需要在请求中包含签名(Signature)信息。语音审核增强版服务通过使用AccessKey ID和AccessKey Secret进行对称加密的方法来验证请求的发送者身份。
AccessKey ID和AccessKey Secret由阿里云官方颁发给访问者(可以通过阿里云官方网站申请和管理),其中AccessKey ID用于标识访问者身份;AccessKey Secret是用于加密签名字符串和服务器端验证签名字符串的密钥,必须严格保密,只有阿里云和用户知道。
用户在访问时,按照下面的方法对请求进行签名处理:
使用请求参数构造规范化的请求字符串(Canonicalized Query String)。
按照参数名称的字典顺序对请求中所有的请求参数(包括公共请求参数和给定了的请求接口的自定义参数,但不能包括公共请求参数中提到的Signature参数本身)进行排序。
对相关请求参数的名称和值进行编码。名称和值要使用UTF-8字符集进行URL编码。
说明一般支持URL编码的库(比如Java中的java.net.URLEncoder)都是按照application/x-www-form-urlencoded的MIME类型的规则进行编码的。实现时可以直接使用这类方式进行编码,把编码后的字符串中加号(+)替换成%20、星号(*)替换成%2A、%7E替换回波浪号(~),即可得到上述规则描述的编码字符串。
URL编码的编码规则如下:
对于字符A-Z、a-z、0-9以及字符中划线(-)、下划线(_)、半角句号(.)、波浪线(~)不编码。
对于其它字符编码成
%XY
的格式,其中XY是字符对应ASCII码的16进制表示。比如英文的双引号(")对应的编码就是%22
。对于扩展的UTF-8字符,编码成
%XY%ZA…
的格式。需要说明的是英文空格( )要被编码是
%20
,而不是加号(+)。
对编码后的参数名称和值使用英文等号(=)进行连接。
将英文等号连接得到字符串按参数名称的字典顺序依次使用&符号连接,即得到规范化请求字符串。
使用 a.i 构造的规范化字符串按照下面的规则构造用于计算签名的字符串:
StringToSign= HTTPMethod + "&" + percentEncode("/") + "&" + percentEncode(CanonicalizedQueryString)
说明其中HTTPMethod是提交请求用的HTTP方法,比如POST。percentEncode(/)是按照 a.ii 中描述的URL编码规则对字符(/)进行编码得到的值,即
%2F
。percentEncode(CanonicalQueryString)是对 a.i 中构造的规范化请求字符串按 a.ii 中描述的URL编码规则编码后得到的字符串。按照RFC2104的定义,使用上面的用于签名的字符串计算签名HMAC值。
说明注意计算签名时使用的Key就是用户持有的AccessKey Secret并加上一个
&
字符(ASCII:38),使用的哈希算法是SHA1。按照Base64编码规则把上面的HMAC值编码成字符串,即得到签名值(Signature)。
将得到的签名值作为Signature参数添加到请求参数中,即完成对请求签名的过程。
说明得到的签名值在作为最后的请求参数值提交给内容安全服务器时,要和其他参数一样,按照RFC3986的规则进行URL编码。
如果您在使用过程中出现问题,请加入钉群(钉群号:35573806),联系产品技术专家进行咨询。