Voice Moderation 2.0 supports two integration methods: SDK and native HTTPS. The SDK is the recommended approach — it handles signature verification and request body construction for you.
Supported region
Region | Public endpoint | VPC endpoint |
Singapore |
|
|
Supported moderation services
Service code | Use case |
| Audio file moderation |
| Audio live stream moderation |
| Multi-language audio moderation |
Supported SDK languages
Java 1.8 or later
Python 3.6 or later
PHP 5.6 or later
Go
C#
How it works
Voice Moderation 2.0 uses an asynchronous submit-and-poll pattern:
Submit a moderation task with
VoiceModeration. The API returns ataskId.Submit a voice moderation jobPoll for results with
VoiceModerationResult, passing thetaskId.Parse the result — check
riskLevelandsliceDetailsto determine the moderation outcome.
For local audio files without a public URL, first upload the file to a Content Moderation OSS bucket using a temporary token from DescribeUploadToken, then submit the moderation task using the OSS object path.
Prerequisites
Before you begin, make sure you have:
Activated the Voice Moderation 2.0 service. The default billing method is pay-as-you-go. You are charged daily based on actual usage. If you do not call the service, no fees are incurred.
A Resource Access Management (RAM) user with the
AliyunYundunGreenWebFullAccesssystem policy granted. See Create a RAM user and Grant permissions to a RAM user.An AccessKey pair for the RAM user. See Create an AccessKey pair.
The
ALIBABA_CLOUD_ACCESS_KEY_IDandALIBABA_CLOUD_ACCESS_KEY_SECRETenvironment variables set with your RAM user's AccessKey ID and AccessKey secret.
Java SDK
Source code: GitHub | Maven Central
The SDK supports three audio moderation scenarios. All examples use VoiceModeration to submit a task and VoiceModerationResult to retrieve the result.
Detect publicly accessible audio
Use this scenario when the audio file is accessible from a public URL.
Install the dependency
Add the following to your Maven pom.xml:
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>green20220302</artifactId>
<version>2.2.11</version>
</dependency>Submit a moderation task
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();
/**
* An AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M.
* Common methods to obtain environment variables:
* Method 1:
* Obtain the AccessKey ID of your RAM user: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
* Obtain the AccessKey secret of your RAM user: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
* Method 2:
* Obtain the AccessKey ID of your RAM user: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
* Obtain the AccessKey secret of your RAM user: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
*/
config.setAccessKeyId("We recommend that you obtain the AccessKey ID of your RAM user from an environment variable");
config.setAccessKeySecret("We recommend that you obtain the AccessKey secret of your RAM user from an environment variable");
// Modify the region and endpoint as needed.
config.setRegionId("ap-southeast-1");
config.setEndpoint("green-cip.ap-southeast-1.aliyuncs.com");
// Connection timeout period in milliseconds (ms).
config.setReadTimeout(6000);
// Read timeout period in milliseconds (ms).
config.setConnectTimeout(3000);
// Note: To improve moderation performance, reuse the client instance. This avoids repeated connection creation.
Client client = new Client(config);
JSONObject serviceParameters = new JSONObject();
// The taskId returned when the task was submitted.
serviceParameters.put("taskId", "The task ID returned for the moderation task.");
VoiceModerationResultRequest voiceModerationResultRequest = new VoiceModerationResultRequest();
// Moderation type: audio_multilingual_global for multi-language audio moderation.
voiceModerationResultRequest.setService("audio_multilingual_global");
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());
System.out.println("riskLevel = " + data.getRiskLevel());
} 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.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 OssVoiceModerationDemo {
public static void main(String[] args) throws Exception {
Config config = new Config();
/**
* An AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M.
* Common methods to obtain environment variables:
* Method 1:
* Obtain the AccessKey ID of your RAM user: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
* Obtain the AccessKey secret of your RAM user: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
* Method 2:
* Obtain the AccessKey ID of your RAM user: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
* Obtain the AccessKey secret of your RAM user: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
*/
config.setAccessKeyId("We recommend that you obtain the AccessKey ID of your RAM user from an environment variable");
config.setAccessKeySecret("We recommend that you obtain the AccessKey secret of your RAM user from an environment variable");
// Modify the region and endpoint as needed.
config.setRegionId("ap-southeast-1");
config.setEndpoint("green-cip.ap-southeast-1.aliyuncs.com");
// Connection timeout period in milliseconds (ms).
config.setReadTimeout(6000);
// Read timeout period in milliseconds (ms).
config.setConnectTimeout(3000);
// Note: To improve moderation performance, reuse the client instance. This avoids repeated connection creation.
Client client = new Client(config);
JSONObject serviceParameters = new JSONObject();
serviceParameters.put("ossBucketName", "bucket_01");
serviceParameters.put("ossObjectName", "test/test.flv");
serviceParameters.put("ossRegionId", "ap-southeast-1");
VoiceModerationRequest voiceModerationRequest = new VoiceModerationRequest();
// Moderation type. audio_media_detection indicates audio file moderation, and live_stream_detection indicates audio live stream moderation.
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();
/**
* An AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M.
* Common methods to obtain environment variables:
* Method 1:
* Obtain the AccessKey ID of your RAM user: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
* Obtain the AccessKey secret of your RAM user: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
* Method 2:
* Obtain the AccessKey ID of your RAM user: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
* Obtain the AccessKey secret of your RAM user: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
*/
config.setAccessKeyId("We recommend that you obtain the AccessKey ID of your RAM user from an environment variable");
config.setAccessKeySecret("We recommend that you obtain the AccessKey secret of your RAM user from an environment variable");
// Modify the region and endpoint as needed.
config.setRegionId("ap-southeast-1");
config.setEndpoint("green-cip.ap-southeast-1.aliyuncs.com");
// Connection timeout period in milliseconds (ms).
config.setReadTimeout(6000);
// Read timeout period in milliseconds (ms).
config.setConnectTimeout(3000);
// Note: To improve moderation performance, reuse the client instance. This avoids repeated connection creation.
Client client = new Client(config);
JSONObject serviceParameters = new JSONObject();
// The taskId returned when the task was submitted.
serviceParameters.put("taskId", "The task ID returned for the moderation task.");
VoiceModerationResultRequest voiceModerationResultRequest = new VoiceModerationResultRequest();
// Moderation type: audio_multilingual_global for multi-language audio moderation.
voiceModerationResultRequest.setService("audio_multilingual_global");
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());
System.out.println("riskLevel = " + data.getRiskLevel());
} 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.JSON;
import com.aliyun.green20220302.Client;
import com.aliyun.green20220302.models.DescribeUploadTokenResponse;
import com.aliyun.green20220302.models.DescribeUploadTokenResponseBody;
import com.aliyun.green20220302.models.VoiceModerationRequest;
import com.aliyun.green20220302.models.VoiceModerationResponse;
import com.aliyun.green20220302.models.VoiceModerationResponseBody;
import com.aliyun.green20220302.models.VoiceModerationResponseBody.VoiceModerationResponseBodyData;
import com.aliyun.green20220302.models.VoiceModerationResponseBody.VoiceModerationResponseBodyDataResult;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.PutObjectRequest;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.teautil.models.RuntimeOptions;
import java.io.File;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
public class LocalVoiceModerationDemo {
/**Specifies whether the service is deployed in a VPC.*/
public static boolean isVPC = false;
/**The token used to upload the file. The key is the endpoint and the value is the token.*/
public static Map<String, DescribeUploadTokenResponseBody.DescribeUploadTokenResponseBodyData> tokenMap = new HashMap<>();
/**The client used to upload the file.*/
public static OSS ossClient = null;
/**
* Create a client.
*
* @param accessKeyId
* @param accessKeySecret
* @param endpoint
* @return
* @throws Exception
*/
public static Client createClient(String accessKeyId, String accessKeySecret, String endpoint) throws Exception {
Config config = new Config();
config.setAccessKeyId(accessKeyId);
config.setAccessKeySecret(accessKeySecret);
// Modify the endpoint as needed.
config.setEndpoint(endpoint);
return new Client(config);
}
/**
* Create a client to upload a file.
*
* @param tokenData
* @param isVPC
*/
public static void getOssClient(DescribeUploadTokenResponseBody.DescribeUploadTokenResponseBodyData tokenData, boolean isVPC) {
//Note: To improve moderation performance, reuse the client instance. This avoids repeated connection creation.
if (isVPC) {
ossClient = new OSSClientBuilder().build(tokenData.ossInternalEndPoint, tokenData.getAccessKeyId(), tokenData.getAccessKeySecret(), tokenData.getSecurityToken());
} else {
ossClient = new OSSClientBuilder().build(tokenData.ossInternetEndPoint, tokenData.getAccessKeyId(), tokenData.getAccessKeySecret(), tokenData.getSecurityToken());
}
}
/**
* Upload a file.
*
* @param filePath
* @param tokenData
* @return
* @throws Exception
*/
public static String uploadFile(String filePath, DescribeUploadTokenResponseBody.DescribeUploadTokenResponseBodyData tokenData) throws Exception {
String[] split = filePath.split("\\.");
String objectName;
if (split.length > 1) {
objectName = tokenData.getFileNamePrefix() + UUID.randomUUID() + "." + split[split.length - 1];
} else {
objectName = tokenData.getFileNamePrefix() + UUID.randomUUID();
}
PutObjectRequest putObjectRequest = new PutObjectRequest(tokenData.getBucketName(), objectName, new File(filePath));
ossClient.putObject(putObjectRequest);
return objectName;
}
public static VoiceModerationResponse invokeFunction(String accessKeyId, String accessKeySecret, String endpoint) throws Exception {
//Note: To improve moderation performance, reuse the client instance. This avoids repeated connection creation.
Client client = createClient(accessKeyId, accessKeySecret, endpoint);
RuntimeOptions runtime = new RuntimeOptions();
//The full path of the local file. Example: D:/localPath/exampleFile.mp3.
String filePath = "D:/localPath/exampleFile.mp3";
//Obtain a temporary token to upload the file.
if (tokenMap.get(endpoint) == null || tokenMap.get(endpoint).expiration <= System.currentTimeMillis() / 1000) {
DescribeUploadTokenResponse tokenResponse = client.describeUploadToken();
tokenMap.put(endpoint, tokenResponse.getBody().getData());
}
//Create a client to upload the file.
getOssClient(tokenMap.get(endpoint), isVPC);
//Upload the file.
String objectName = uploadFile(filePath, tokenMap.get(endpoint));
// Construct moderation parameters.
Map<String, String> serviceParameters = new HashMap<>();
//The information about the file upload.
serviceParameters.put("ossBucketName", tokenMap.get(endpoint).getBucketName());
serviceParameters.put("ossObjectName", objectName);
serviceParameters.put("dataId", UUID.randomUUID().toString());
VoiceModerationRequest request = new VoiceModerationRequest();
// Moderation type. audio_media_detection indicates audio file moderation.
request.setService("audio_multilingual_global");
request.setServiceParameters(JSON.toJSONString(serviceParameters));
VoiceModerationResponse response = null;
try {
response = client.voiceModerationWithOptions(request, runtime);
} catch (Exception e) {
e.printStackTrace();
}
return response;
}
public static void main(String[] args) throws Exception {
/**
* An AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M.
* Common methods to obtain environment variables:
* Method 1:
* Obtain the AccessKey ID of your RAM user: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
* Obtain the AccessKey secret of your RAM user: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
* Method 2:
* Obtain the AccessKey ID of your RAM user: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
* Obtain the AccessKey secret of your RAM user: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
*/
String accessKeyId = "We recommend that you obtain the AccessKey ID of your RAM user from an environment variable";
String accessKeySecret = "We recommend that you obtain the AccessKey secret of your RAM user from an environment variable";
// Modify the region and endpoint as needed.
VoiceModerationResponse response = invokeFunction(accessKeyId, accessKeySecret, "green-cip.ap-southeast-1.aliyuncs.com");
try {
// Print the moderation result.
if (response != null) {
if (response.getStatusCode() == 200) {
VoiceModerationResponseBody body = response.getBody();
System.out.println(JSON.toJSONString(body));
System.out.println("requestId = " + body.getRequestId());
System.out.println("code = " + body.getCode());
System.out.println("msg = " + body.getMessage());
Integer code = body.getCode();
if (200 == code) {
VoiceModerationResponseBody.VoiceModerationResponseBodyData data = body.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();
/**
* An AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M.
* Common methods to obtain environment variables:
* Method 1:
* Obtain the AccessKey ID of your RAM user: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
* Obtain the AccessKey secret of your RAM user: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
* Method 2:
* Obtain the AccessKey ID of your RAM user: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
* Obtain the AccessKey secret of your RAM user: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
*/
config.setAccessKeyId("We recommend that you obtain the AccessKey ID of your RAM user from an environment variable");
config.setAccessKeySecret("We recommend that you obtain the AccessKey secret of your RAM user from an environment variable");
// Modify the region and endpoint as needed.
config.setRegionId("ap-southeast-1");
config.setEndpoint("green-cip.ap-southeast-1.aliyuncs.com");
// Connection timeout period in milliseconds (ms).
config.setReadTimeout(6000);
// Read timeout period in milliseconds (ms).
config.setConnectTimeout(3000);
// Note: To improve moderation performance, reuse the client instance. This avoids repeated connection creation.
Client client = new Client(config);
JSONObject serviceParameters = new JSONObject();
// The taskId returned when the task was submitted.
serviceParameters.put("taskId", "The task ID returned for the moderation task.");
VoiceModerationResultRequest voiceModerationResultRequest = new VoiceModerationResultRequest();
// Moderation type: audio_multilingual_global for multi-language audio moderation.
voiceModerationResultRequest.setService("audio_multilingual_global");
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();
}
}
}Retrieve the moderation resultRetrieve Voice Moderation Result
Canceling a live stream detection job
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();
/**
* An AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M.
* Common methods to obtain environment variables:
* Method 1:
* Obtain the AccessKey ID of your RAM user: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
* Obtain the AccessKey secret of your RAM user: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
* Method 2:
* Obtain the AccessKey ID of your RAM user: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
* Obtain the AccessKey secret of your RAM user: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
*/
config.setAccessKeyId("We recommend that you obtain the AccessKey ID of your RAM user from an environment variable");
config.setAccessKeySecret("We recommend that you obtain the AccessKey secret of your RAM user from an environment variable");
// Modify the region and endpoint as needed.
config.setRegionId("cn-shanghai");
config.setEndpoint("green-cip.cn-shanghai.aliyuncs.com");
// Connection timeout period in milliseconds (ms).
config.setReadTimeout(6000);
// Read timeout period in milliseconds (ms).
config.setConnectTimeout(3000);
// Note: To improve moderation performance, reuse the client instance. This avoids repeated connection creation.
Client client = new Client(config);
JSONObject serviceParameters = new JSONObject();
// The taskId returned when the task was submitted.
serviceParameters.put("taskId", "The task ID returned for the moderation task.");
VoiceModerationCancelRequest voiceModerationCancelRequest = new VoiceModerationCancelRequest();
// Moderation type. audio_media_detection indicates audio file moderation, and live_stream_detection indicates audio live stream moderation.
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();
}
}
}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();
config.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"));
config.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
config.setRegionId("ap-southeast-1");
config.setEndpoint("green-cip.ap-southeast-1.aliyuncs.com");
config.setReadTimeout(6000);
config.setConnectTimeout(3000);
Client client = new Client(config);
JSONObject serviceParameters = new JSONObject();
serviceParameters.put("taskId", "<task-id>");
VoiceModerationResultRequest request = new VoiceModerationResultRequest();
request.setService("audio_multilingual_global");
request.setServiceParameters(serviceParameters.toJSONString());
try {
VoiceModerationResultResponse response = client.voiceModerationResult(request);
if (response.getStatusCode() == 200) {
VoiceModerationResultResponseBody result = response.getBody();
if (200 == result.getCode()) {
VoiceModerationResultResponseBody.VoiceModerationResultResponseBodyData data = result.getData();
System.out.println("taskId: " + data.getTaskId());
System.out.println("riskLevel: " + data.getRiskLevel());
System.out.println("url: " + data.getUrl());
System.out.println("sliceDetails: " + JSON.toJSONString(data.getSliceDetails()));
} else {
System.out.println("Failed to get result. code: " + result.getCode());
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}Detect local audio
Use this scenario when the audio file is on a local machine without a public URL. The SDK first uploads the file to a Content Moderation OSS bucket using a temporary token, then submits the moderation task using the OSS object path.
Install the dependencies
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>green20220302</artifactId>
<version>2.2.11</version>
</dependency>
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.16.3</version>
</dependency>Submit a moderation task
To retrieve results, use the same VoiceModerationResultDemo from Detect publicly accessible audio.
Canceling a live stream detection task
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();
/**
* An AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M.
* Common methods to obtain environment variables:
* Method 1:
* Obtain the AccessKey ID of your RAM user: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
* Obtain the AccessKey secret of your RAM user: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
* Method 2:
* Obtain the AccessKey ID of your RAM user: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
* Obtain the AccessKey secret of your RAM user: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
*/
config.setAccessKeyId("We recommend that you obtain the AccessKey ID of your RAM user from an environment variable");
config.setAccessKeySecret("We recommend that you obtain the AccessKey secret of your RAM user from an environment variable");
// Modify the region and endpoint as needed.
config.setRegionId("cn-shanghai");
config.setEndpoint("green-cip.cn-shanghai.aliyuncs.com");
// Connection timeout period in milliseconds (ms).
config.setReadTimeout(6000);
// Read timeout period in milliseconds (ms).
config.setConnectTimeout(3000);
// Note: To improve moderation performance, reuse the client instance. This avoids repeated connection creation.
Client client = new Client(config);
JSONObject serviceParameters = new JSONObject();
// The taskId returned when the task was submitted.
serviceParameters.put("taskId", "The task ID returned for the moderation task.");
VoiceModerationCancelRequest voiceModerationCancelRequest = new VoiceModerationCancelRequest();
// Moderation type. audio_media_detection indicates audio file moderation, and live_stream_detection indicates audio live stream moderation.
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();
}
}
}Detect audio stored in OSS
Use this scenario when the audio files are already in an Alibaba Cloud Object Storage Service (OSS) bucket. Grant Content Moderation access to your OSS bucket by creating a service role on the Cloud Resource Access Authorization page.
Install the dependency
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>green20220302</artifactId>
<version>2.2.11</version>
</dependency>Submit a moderation task
To retrieve results, use the same VoiceModerationResultDemo from Detect publicly accessible audio.
Cancel a live stream detection task
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();
/**
* An AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M.
* Common methods to obtain environment variables:
* Method 1:
* Obtain the AccessKey ID of your RAM user: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
* Obtain the AccessKey secret of your RAM user: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
* Method 2:
* Obtain the AccessKey ID of your RAM user: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
* Obtain the AccessKey secret of your RAM user: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
*/
config.setAccessKeyId("We recommend that you obtain the AccessKey ID of your RAM user from an environment variable");
config.setAccessKeySecret("We recommend that you obtain the AccessKey secret of your RAM user from an environment variable");
// Modify the region and endpoint as needed.
config.setRegionId("cn-shanghai");
config.setEndpoint("green-cip.cn-shanghai.aliyuncs.com");
// Connection timeout period in milliseconds (ms).
config.setReadTimeout(6000);
// Read timeout period in milliseconds (ms).
config.setConnectTimeout(3000);
// Note: To improve moderation performance, reuse the client instance. This avoids repeated connection creation.
Client client = new Client(config);
JSONObject serviceParameters = new JSONObject();
// The taskId returned when the task was submitted.
serviceParameters.put("taskId", "The task ID returned for the moderation task.");
VoiceModerationCancelRequest voiceModerationCancelRequest = new VoiceModerationCancelRequest();
// Moderation type. audio_media_detection indicates audio file moderation, and live_stream_detection indicates audio live stream moderation.
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
Source code: PyPI
Requires Python 3.6 or later.
Detect publicly accessible audio
Install the dependency
pip install alibabacloud_green20220302==2.2.11Submit a moderation task
# coding=utf-8
import os
import json
from alibabacloud_green20220302.client import Client
from alibabacloud_green20220302 import models
from alibabacloud_tea_openapi.models import Config
config = Config(
# Load credentials from environment variables.
# Do not hardcode your AccessKey pair in code.
access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
connect_timeout=10000, # ms
read_timeout=3000, # ms
region_id='ap-southeast-1',
endpoint='green-cip.ap-southeast-1.aliyuncs.com'
)
# Reuse the client instance to avoid repeated connection creation.
client = Client(config)
service_parameters = {'url': 'https://example.com/sample.wav'}
request = models.VoiceModerationRequest(
service='audio_multilingual_global',
service_parameters=json.dumps(service_parameters)
)
try:
response = client.voice_moderation(request)
if response.status_code == 200:
result = response.body
if result.code == 200:
print('taskId:', result.data.task_id)
# Use taskId to poll for results.
else:
print('Moderation request failed. code:', result.code)
except Exception as err:
print(err)Retrieve the moderation result
# coding=utf-8
import os
import json
from alibabacloud_green20220302.client import Client
from alibabacloud_green20220302 import models
from alibabacloud_tea_openapi.models import Config
config = Config(
access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
connect_timeout=10000,
read_timeout=3000,
region_id='ap-southeast-1',
endpoint='green-cip.ap-southeast-1.aliyuncs.com'
)
client = Client(config)
service_parameters = {'taskId': '<task-id>'}
request = models.VoiceModerationResultRequest(
service='audio_multilingual_global',
service_parameters=json.dumps(service_parameters)
)
try:
response = client.voice_moderation_result(request)
if response.status_code == 200:
result = response.body
if result.code == 200:
data = result.data
print('taskId:', data.task_id)
print('riskLevel:', data.risk_level)
print('sliceDetails:', data.slice_details)
else:
print('Failed to get result. code:', result.code)
except Exception as err:
print(err)Detect local audio
Install the dependencies
pip install alibabacloud_green20220302==2.2.11
pip install oss2Submit a moderation task
# coding=utf-8
import os
import json
import uuid
import time
import oss2
from alibabacloud_green20220302.client import Client
from alibabacloud_green20220302 import models
from alibabacloud_tea_openapi.models import Config
from alibabacloud_tea_util import models as util_models
is_vpc = False
token_dict = {}
bucket = None
def create_client(access_key_id, access_key_secret, endpoint):
config = Config(
access_key_id=access_key_id,
access_key_secret=access_key_secret,
endpoint=endpoint
)
return Client(config)
def init_oss_bucket(is_vpc, upload_token):
global bucket
auth = oss2.StsAuth(upload_token.access_key_id, upload_token.access_key_secret, upload_token.security_token)
end_point = upload_token.oss_internal_end_point if is_vpc else upload_token.oss_internet_end_point
# Reuse the bucket instance to avoid repeated connection creation.
bucket = oss2.Bucket(auth, end_point, upload_token.bucket_name)
def upload_file(file_path, upload_token):
init_oss_bucket(is_vpc, upload_token)
object_name = upload_token.file_name_prefix + str(uuid.uuid1()) + '.' + file_path.split('.')[-1]
bucket.put_object_from_file(object_name, file_path)
return object_name
def invoke(access_key_id, access_key_secret, endpoint):
# Reuse the client instance to avoid repeated connection creation.
client = create_client(access_key_id, access_key_secret, endpoint)
runtime = util_models.RuntimeOptions()
file_path = '/path/to/exampleFile.mp3'
# Get a temporary upload token (refresh if expired).
upload_token = token_dict.get(endpoint)
if upload_token is None or int(upload_token.expiration) <= int(time.time()):
response = client.describe_upload_token()
upload_token = response.body.data
token_dict[endpoint] = upload_token
object_name = upload_file(file_path, upload_token)
service_parameters = {
'ossBucketName': upload_token.bucket_name,
'ossObjectName': object_name,
'dataId': str(uuid.uuid4())
}
request = models.VoiceModerationRequest(
service='audio_multilingual_global',
service_parameters=json.dumps(service_parameters)
)
try:
return client.voice_moderation_with_options(request, runtime)
except Exception as err:
print(err)
if __name__ == '__main__':
access_key_id = os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID']
access_key_secret = os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
response = invoke(access_key_id, access_key_secret, 'green-cip.ap-southeast-1.aliyuncs.com')
if response and response.status_code == 200:
result = response.body
if result.code == 200:
print('taskId:', result.data.task_id)To retrieve results, use the same pattern from Detect publicly accessible audio.
Detect audio stored in OSS
Create a service role to grant Content Moderation access to your OSS bucket on the Cloud Resource Access Authorization page.
Install the dependency
pip install alibabacloud_green20220302==2.2.11Submit a moderation task
# coding=utf-8
import os
import json
from alibabacloud_green20220302.client import Client
from alibabacloud_green20220302 import models
from alibabacloud_tea_openapi.models import Config
config = Config(
access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
connect_timeout=10000,
read_timeout=3000,
region_id='ap-southeast-1',
endpoint='green-cip.ap-southeast-1.aliyuncs.com'
)
client = Client(config)
service_parameters = {
'ossBucketName': '<your-bucket-name>',
'ossObjectName': 'voice/sample.mp3',
'ossRegionId': 'cn-shanghai'
}
request = models.VoiceModerationRequest(
service='audio_multilingual_global',
service_parameters=json.dumps(service_parameters)
)
try:
response = client.voice_moderation(request)
if response.status_code == 200:
result = response.body
if result.code == 200:
print('taskId:', result.data.task_id)
except Exception as err:
print(err)To retrieve results, use the same pattern from Detect publicly accessible audio.
PHP SDK
Source code: Packagist
Requires PHP 5.6 or later.
Detect publicly accessible audio
Install the dependency
composer require alibabacloud/green-20220302 2.2.10Submit a moderation task
<?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([]);
/**
* An AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M.
* We strongly recommend that you do not save your AccessKey ID and AccessKey secret in your project code. This can lead to an AccessKey pair leak and compromise the security of all resources in your account.
* Common methods to obtain environment variables:
* Obtain the AccessKey ID of your RAM user: getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
* Obtain the AccessKey secret of your RAM user: getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
*/
$config->accessKeyId = "We recommend that you obtain the AccessKey ID of your RAM user from an environment variable";
$config->accessKeySecret = "We recommend that you obtain the AccessKey secret of your RAM user from an environment variable";
// Modify the region and endpoint as needed.
$config->regionId = "ap-southeast-1";
$config->endpoint = "green-cip.ap-southeast-1.aliyuncs.com";
// Set an HTTP proxy.
// $config->httpProxy = "http://10.10.xx.xx:xxxx";
// Set an HTTPS proxy.
// $config->httpsProxy = "http://10.10.xx.xx:xxxx";
// Note: To improve moderation performance, reuse the client instance. This avoids repeated connection creation.
$client = new Green($config);
$request = new VoiceModerationResultRequest();
// Moderation type: audio_multilingual_global for multi-language audio moderation.
$request->service = "audio_multilingual_global";
// The taskId returned when the task was submitted.
$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\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([]);
/**
* An AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M.
* We strongly recommend that you do not save your AccessKey ID and AccessKey secret in your project code. This can lead to an AccessKey pair leak and compromise the security of all resources in your account.
* Common methods to obtain environment variables:
* Obtain the AccessKey ID of your RAM user: getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
* Obtain the AccessKey secret of your RAM user: getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
*/
$config->accessKeyId = "We recommend that you obtain the AccessKey ID of your RAM user from an environment variable";
$config->accessKeySecret = "We recommend that you obtain the AccessKey secret of your RAM user from an environment variable";
// Modify the region and endpoint as needed.
$config->regionId = "ap-southeast-1";
$config->endpoint = "green-cip.ap-southeast-1.aliyuncs.com";
// Set an HTTP proxy.
// $config->httpProxy = "http://10.10.xx.xx:xxxx";
// Set an HTTPS proxy.
// $config->httpsProxy = "http://10.10.xx.xx:xxxx";
// Note: To improve moderation performance, reuse the client instance. This avoids repeated connection creation.
$client = new Green($config);
$request = new VoiceModerationRequest();
// Moderation type: audio_multilingual_global for multi-language audio moderation.
$request->service = "audio_multilingual_global";
$serviceParameters = array(
// The file to be moderated. Example: voice/001.wav
'ossObjectName' => 'voice/001.wav',
// The region where the bucket of the file to be moderated is located. Example: cn-shanghai
'ossRegionId' => 'cn-shanghai',
// The name of the bucket that stores the file to be moderated. Example: bucket001
'ossBucketName' => 'bucket001',
// The unique ID of the data.
'dataId' => uniqid());
$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([]);
/**
* An AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M.
* We strongly recommend that you do not save your AccessKey ID and AccessKey secret in your project code. This can lead to an AccessKey pair leak and compromise the security of all resources in your account.
* Common methods to obtain environment variables:
* Obtain the AccessKey ID of your RAM user: getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
* Obtain the AccessKey secret of your RAM user: getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
*/
$config->accessKeyId = "We recommend that you obtain the AccessKey ID of your RAM user from an environment variable";
$config->accessKeySecret = "We recommend that you obtain the AccessKey secret of your RAM user from an environment variable";
// Modify the region and endpoint as needed.
$config->regionId = "ap-southeast-1";
$config->endpoint = "green-cip.ap-southeast-1.aliyuncs.com";
// Set an HTTP proxy.
// $config->httpProxy = "http://10.10.xx.xx:xxxx";
// Set an HTTPS proxy.
// $config->httpsProxy = "http://10.10.xx.xx:xxxx";
// Note: To improve moderation performance, reuse the client instance. This avoids repeated connection creation.
$client = new Green($config);
$request = new VoiceModerationResultRequest();
// Moderation type: audio_multilingual_global for multi-language audio moderation.
$request->service = "audio_multilingual_global";
// The taskId returned when the task was submitted.
$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\VoiceModerationResponse;
use AlibabaCloud\Tea\Utils\Utils;
use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
use AlibabaCloud\SDK\Green\V20220302\Green;
use AlibabaCloud\SDK\Green\V20220302\Models\VoiceModerationRequest;
use OSS\OssClient;
// Specifies whether the service is deployed in a VPC.
$isVPC = false;
// The token used to upload the file.
$tokenArray = array();
// The client used to upload the file.
$ossClient = null;
/**
* Create a client.
* @param $accessKeyId
* @param $accessKeySecret
* @param $endpoint
* @return Green
*/
function create_client($accessKeyId, $accessKeySecret, $endpoint): Green
{
$config = new Config([
"accessKeyId" => $accessKeyId,
"accessKeySecret" => $accessKeySecret,
// Set an HTTP proxy.
// "httpProxy" => "http://10.10.xx.xx:xxxx",
// Set an HTTPS proxy.
// "httpsProxy" => "https://10.10.xx.xx:xxxx",
"endpoint" => $endpoint,
]);
return new Green($config);
}
/**
* Create a client to upload a file.
* @param $tokenData
* @return void
*/
function create_upload_client($tokenData): void
{
global $isVPC;
global $ossClient;
// Note: To improve moderation performance, reuse the client instance. This avoids repeated connection creation.
if ($isVPC) {
$ossClient = new OssClient($tokenData->accessKeyId, $tokenData->accessKeySecret, $tokenData->ossInternalEndPoint, false, $tokenData->securityToken);
} else {
$ossClient = new OssClient($tokenData->accessKeyId, $tokenData->accessKeySecret, $tokenData->ossInternetEndPoint, false, $tokenData->securityToken);
}
}
/**
* Upload a file.
* @param $fileName
* @param $tokenData
* @return string
* @throws \OSS\Core\OssException
*/
function upload_file($filePath, $tokenData): string
{
global $ossClient;
//Initialize OssClient.
create_upload_client($tokenData);
$split = explode(".", $filePath);
if (count($split) > 1) {
$objectName = $tokenData->fileNamePrefix . uniqid() . "." . explode(".", $filePath)[count($split) - 1];
} else {
$objectName = $tokenData->fileNamePrefix . uniqid();
}
//Upload the file.
$ossClient->uploadFile($tokenData->bucketName, $objectName, $filePath);
return $objectName;
}
/**
* Submit a moderation task.
* @param $accessKeyId
* @param $accessKeySecret
* @param $endpoint
* @return VoiceModerationResponse
* @throws \OSS\Core\OssException
*/
function invoke($accessKeyId, $accessKeySecret, $endpoint): VoiceModerationResponse
{
global $tokenArray;
// Note: To improve moderation performance, reuse the client instance. This avoids repeated connection creation.
$client = create_client($accessKeyId, $accessKeySecret, $endpoint);
// Create a RuntimeObject instance and set runtime parameters.
$runtime = new RuntimeOptions([]);
// The full path of the local file. Example: D:\\localPath\\exampleFile.mp3.
$filePath = "D:\\localPath\\exampleFile.mp3";
//Obtain a temporary token to upload the file.
if (!isset($tokenArray[$endpoint]) || $tokenArray[$endpoint]->expiration <= time()) {
$token = $client->describeUploadToken();
$tokenArray[$endpoint] = $token->body->data;
}
// Upload the file.
$objectName = upload_file($filePath, $tokenArray[$endpoint]);
// Construct moderation parameters.
$request = new VoiceModerationRequest();
// Moderation type: audio_multilingual_global for multi-language audio moderation.
$request->service = "audio_multilingual_global";
// The OSS information about the audio file to be moderated.
$serviceParameters = array(
'ossObjectName' => $objectName,
'ossBucketName' => $tokenArray[$endpoint]->bucketName,
'dataId' => uniqid());
$request->serviceParameters = json_encode($serviceParameters);
// Submit the moderation task.
return $client->voiceModerationWithOptions($request, $runtime);
}
/**
* An AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M.
* We strongly recommend that you do not save your AccessKey ID and AccessKey secret in your project code. This can lead to an AccessKey pair leak and compromise the security of all resources in your account.
* Common methods to obtain environment variables:
* Obtain the AccessKey ID of your RAM user: getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
* Obtain the AccessKey secret of your RAM user: getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
*/
$accessKeyId = 'We recommend that you obtain the AccessKey ID of your RAM user from an environment variable';
$accessKeySecret = 'We recommend that you obtain the AccessKey secret of your RAM user from an environment variable';
// Modify the region and endpoint as needed.
$endpoint = "green-cip.ap-southeast-1.aliyuncs.com";
try {
$response = invoke($accessKeyId, $accessKeySecret, $endpoint);
print_r(json_encode($response->body, JSON_UNESCAPED_UNICODE));
} catch (Exception $e) {
var_dump($e->getMessage());
var_dump($e->getErrorInfo());
var_dump($e->getLastException());
var_dump($e->getLastRequest());
}Retrieve the moderation result
Sample code for canceling a live stream moderation task
<?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([]);
/**
* An AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M.
* We strongly recommend that you do not save your AccessKey ID and AccessKey secret in your project code. This can lead to an AccessKey pair leak and compromise the security of all resources in your account.
* Common methods to obtain environment variables:
* Obtain the AccessKey ID of your RAM user: getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
* Obtain the AccessKey secret of your RAM user: getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
*/
$config->accessKeyId = "We recommend that you obtain the AccessKey ID of your RAM user from an environment variable";
$config->accessKeySecret = "We recommend that you obtain the AccessKey secret of your RAM user from an environment variable";
// Modify the region and endpoint as needed.
$config->regionId = "cn-shanghai";
$config->endpoint = "green-cip.cn-shanghai.aliyuncs.com";
// Set an HTTP proxy.
// $config->httpProxy = "http://10.10.xx.xx:xxxx";
// Set an HTTPS proxy.
// $config->httpsProxy = "http://10.10.xx.xx:xxxx";
// Note: To improve moderation performance, reuse the client instance. This avoids repeated connection creation.
$client = new Green($config);
$request = new VoiceModerationCancelRequest();
// Moderation type. audio_media_detection for audio file moderation, live_stream_detection for audio live stream moderation.
$request->service = "audio_media_detection";
// The taskId returned when the task was submitted.
$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());
}<?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([]);
$config->accessKeyId = getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
$config->accessKeySecret = getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
$config->regionId = "ap-southeast-1";
$config->endpoint = "green-cip.ap-southeast-1.aliyuncs.com";
$client = new Green($config);
$request = new VoiceModerationResultRequest();
$request->service = "audio_multilingual_global";
$serviceParameters = ['taskId' => '<task-id>'];
$request->serviceParameters = json_encode($serviceParameters);
$runtime = new RuntimeOptions();
$runtime->readTimeout = 6000;
$runtime->connectTimeout = 3000;
try {
$response = $client->voiceModerationResult($request, $runtime);
if (200 == $response->statusCode) {
$body = $response->body;
if (200 == $body->code) {
$data = $body->data;
echo "taskId: " . $data->taskId . PHP_EOL;
echo "riskLevel: " . $data->riskLevel . PHP_EOL;
echo "liveId: " . $data->liveId . PHP_EOL;
echo "url: " . $data->url . PHP_EOL;
echo "sliceDetails: " . json_encode($data->sliceDetails) . PHP_EOL;
}
}
} catch (TeaUnableRetryError $e) {
var_dump($e->getMessage());
}Detect local audio
Install the dependencies
composer require alibabacloud/green-20220302 2.2.10
composer require aliyuncs/oss-sdk-phpSubmit a moderation task
To retrieve results, use the same VoiceModerationResultRequest pattern from Detect publicly accessible audio.
Sample code for canceling a live stream moderation task
<?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([]);
/**
* An AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M.
* We strongly recommend that you do not save your AccessKey ID and AccessKey secret in your project code. This can lead to an AccessKey pair leak and compromise the security of all resources in your account.
* Common methods to obtain environment variables:
* Obtain the AccessKey ID of your RAM user: getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
* Obtain the AccessKey secret of your RAM user: getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
*/
$config->accessKeyId = "We recommend that you obtain the AccessKey ID of your RAM user from an environment variable";
$config->accessKeySecret = "We recommend that you obtain the AccessKey secret of your RAM user from an environment variable";
// Modify the region and endpoint as needed.
$config->regionId = "cn-shanghai";
$config->endpoint = "green-cip.cn-shanghai.aliyuncs.com";
// Set an HTTP proxy.
// $config->httpProxy = "http://10.10.xx.xx:xxxx";
// Set an HTTPS proxy.
// $config->httpsProxy = "http://10.10.xx.xx:xxxx";
// Note: To improve moderation performance, reuse the client instance. This avoids repeated connection creation.
$client = new Green($config);
$request = new VoiceModerationCancelRequest();
// Moderation type. audio_media_detection for audio file moderation, live_stream_detection for audio live stream moderation.
$request->service = "audio_media_detection";
// The taskId returned when the task was submitted.
$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());
}Detect audio stored in OSS
Create a service role on the Cloud Resource Access Authorization page.
Install the dependency
composer require alibabacloud/green-20220302 2.2.10Submit a moderation task
<?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([]);
$config->accessKeyId = getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
$config->accessKeySecret = getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
$config->regionId = "ap-southeast-1";
$config->endpoint = "green-cip.ap-southeast-1.aliyuncs.com";
$client = new Green($config);
$request = new VoiceModerationRequest();
$request->service = "audio_multilingual_global";
$serviceParameters = [
'ossObjectName' => 'voice/001.wav',
'ossRegionId' => 'cn-shanghai',
'ossBucketName' => '<your-bucket-name>',
'dataId' => uniqid()
];
$request->serviceParameters = json_encode($serviceParameters);
$runtime = new RuntimeOptions();
$runtime->readTimeout = 6000;
$runtime->connectTimeout = 3000;
try {
$response = $client->voiceModeration($request, $runtime);
if (200 == $response->statusCode && 200 == $response->body->code) {
echo "taskId: " . $response->body->data->taskId . PHP_EOL;
}
} catch (TeaUnableRetryError $e) {
var_dump($e->getMessage());
}To retrieve results, use the same VoiceModerationResultRequest pattern from Detect publicly accessible audio.
Sample code for canceling a live stream moderation task
<?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([]);
/**
* An AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M.
* We strongly recommend that you do not save your AccessKey ID and AccessKey secret in your project code. This can lead to an AccessKey pair leak and compromise the security of all resources in your account.
* Common methods to obtain environment variables:
* Obtain the AccessKey ID of your RAM user: getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
* Obtain the AccessKey secret of your RAM user: getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
*/
$config->accessKeyId = "We recommend that you obtain the AccessKey ID of your RAM user from an environment variable";
$config->accessKeySecret = "We recommend that you obtain the AccessKey secret of your RAM user from an environment variable";
// Modify the region and endpoint as needed.
$config->regionId = "cn-shanghai";
$config->endpoint = "green-cip.cn-shanghai.aliyuncs.com";
// Set an HTTP proxy.
// $config->httpProxy = "http://10.10.xx.xx:xxxx";
// Set an HTTPS proxy.
// $config->httpsProxy = "http://10.10.xx.xx:xxxx";
// Note: To improve moderation performance, reuse the client instance. This avoids repeated connection creation.
$client = new Green($config);
$request = new VoiceModerationCancelRequest();
// Moderation type. audio_media_detection for audio file moderation, live_stream_detection for audio live stream moderation.
$request->service = "audio_media_detection";
// The taskId returned when the task was submitted.
$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
Detect publicly accessible audio
Install the dependency
git clone --branch v2.2.11 github.com/alibabacloud-go/green-20220302/v2Submit a moderation task
package main
import (
"encoding/json"
"fmt"
openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
green "github.com/alibabacloud-go/green-20220302/v3/client"
"github.com/alibabacloud-go/tea/tea"
"net/http"
)
func main() {
config := &openapi.Config{
/**
* An AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M.
* We strongly recommend that you do not save your AccessKey ID and AccessKey secret in your project code. This can lead to an AccessKey pair leak and compromise the security of all resources in your account.
* Common methods to obtain environment variables:
* Obtain the AccessKey ID of your RAM user: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
* Obtain the AccessKey secret of your RAM user: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
*/
AccessKeyId: tea.String("We recommend that you obtain the AccessKey ID of your RAM user from an environment variable"),
AccessKeySecret: tea.String("We recommend that you obtain the AccessKey secret of your RAM user from an environment variable"),
// Specify your region.
RegionId: tea.String("ap-southeast-1"),
Endpoint: tea.String("green-cip.ap-southeast-1.aliyuncs.com"),
// Set an HTTP proxy.
// HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"),
// Set an HTTPS proxy.
// HttpsProxy: tea.String("https://xx.xx.xx.xx:xxxx"),
/**
* Set a timeout period. The server-side timeout period for the entire link is 10 seconds. Set the timeout period accordingly.
* If the ReadTimeout value is less than the server-side processing time, a ReadTimeout exception is returned.
*/
ConnectTimeout: tea.Int(3000),
ReadTimeout: tea.Int(6000),
}
// Note: To improve moderation performance, reuse the client instance. This avoids repeated connection creation.
client, _err := green.NewClient(config)
if _err != nil {
panic(_err)
}
serviceParameters, _ := json.Marshal(
map[string]interface{}{
"taskId": "<Task ID>",
},
)
request := green.VoiceModerationResultRequest{
// The voice moderation service.
Service: tea.String("audio_multilingual_global"),
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/v3/client"
"github.com/alibabacloud-go/tea/tea"
"net/http"
)
func main() {
config := &openapi.Config{
/**
* An AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M.
* We strongly recommend that you do not save your AccessKey ID and AccessKey secret in your project code. This can lead to an AccessKey pair leak and compromise the security of all resources in your account.
* Common methods to obtain environment variables:
* Obtain the AccessKey ID of your RAM user: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
* Obtain the AccessKey secret of your RAM user: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
*/
AccessKeyId: tea.String("We recommend that you obtain the AccessKey ID of your RAM user from an environment variable"),
AccessKeySecret: tea.String("We recommend that you obtain the AccessKey secret of your RAM user from an environment variable"),
// Specify your region.
RegionId: tea.String("ap-southeast-1"),
Endpoint: tea.String("green-cip.ap-southeast-1.aliyuncs.com"),
// Set an HTTP proxy.
//HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"),
// Set an HTTPS proxy.
//HttpsProxy: tea.String("https://xx.xx.xx.xx:xxxx"),
/**
* Set a timeout period. The server-side timeout period for the entire link is 10 seconds. Set the timeout period accordingly.
* If the ReadTimeout value is less than the server-side processing time, a ReadTimeout exception is returned.
*/
ConnectTimeout: tea.Int(3000),
ReadTimeout: tea.Int(6000),
}
// Note: To improve moderation performance, reuse the client instance. This avoids repeated connection creation.
client, _err := green.NewClient(config)
if _err != nil {
panic(_err)
}
// The URL of the audio file to moderate.
serviceParameters, _ := json.Marshal(
map[string]interface{}{
//The region where the OSS bucket that stores the audio file is located. Example: cn-shanghai.
"ossRegionId": "cn-shanghai",
//The name of the OSS bucket that stores the audio file. Example: bucket001.
"ossBucketName":"bucket001",
//The name of the audio file object. Example: voice/001.wav.
"ossObjectName":"voice/001.wav",
//The ID of the data to be moderated.
"dataId": uuid.New().String(),
},
)
request := green.VoiceModerationRequest{
// The voice moderation service.
Service: tea.String("audio_multilingual_global"),
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/v3/client"
"github.com/alibabacloud-go/tea/tea"
"net/http"
)
func main() {
config := &openapi.Config{
/**
* An AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M.
* We strongly recommend that you do not save your AccessKey ID and AccessKey secret in your project code. This can lead to an AccessKey pair leak and compromise the security of all resources in your account.
* Common methods to obtain environment variables:
* Obtain the AccessKey ID of your RAM user: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
* Obtain the AccessKey secret of your RAM user: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
*/
AccessKeyId: tea.String("We recommend that you obtain the AccessKey ID of your RAM user from an environment variable"),
AccessKeySecret: tea.String("We recommend that you obtain the AccessKey secret of your RAM user from an environment variable"),
// Specify your region.
RegionId: tea.String("ap-southeast-1"),
Endpoint: tea.String("green-cip.ap-southeast-1.aliyuncs.com"),
// Set an HTTP proxy.
// HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"),
// Set an HTTPS proxy.
// HttpsProxy: tea.String("https://xx.xx.xx.xx:xxxx"),
/**
* Set a timeout period. The server-side timeout period for the entire link is 10 seconds. Set the timeout period accordingly.
* If the ReadTimeout value is less than the server-side processing time, a ReadTimeout exception is returned.
*/
ConnectTimeout: tea.Int(3000),
ReadTimeout: tea.Int(6000),
}
// Note: To improve moderation performance, reuse the client instance. This avoids repeated connection creation.
client, _err := green.NewClient(config)
if _err != nil {
panic(_err)
}
serviceParameters, _ := json.Marshal(
map[string]interface{}{
"taskId": "<Task ID>",
},
)
request := green.VoiceModerationResultRequest{
// The voice moderation service.
Service: tea.String("audio_multilingual_global"),
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"
green20220302 "github.com/alibabacloud-go/green-20220302/v3/client"
util "github.com/alibabacloud-go/tea-utils/v2/service"
"github.com/alibabacloud-go/tea/tea"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
"github.com/google/uuid"
"net/http"
"os"
"strings"
"time"
)
//The token used to upload the file.
var TokenMap =make(map[string]*green20220302.DescribeUploadTokenResponseBodyData)
//The client used to upload the file.
var Bucket *oss.Bucket
//Specifies whether the service is deployed in a VPC.
var isVPC = false
//Create a client.
func createClient(accessKeyId string, accessKeySecret string, endpoint string) (*green20220302.Client, error) {
config := &openapi.Config{
AccessKeyId: tea.String(accessKeyId),
AccessKeySecret: tea.String(accessKeySecret),
// Set an HTTP proxy.
// HttpProxy: tea.String("http://10.10.xx.xx:xxxx"),
// Set an HTTPS proxy.
// HttpsProxy: tea.String("https://username:password@xxx.xxx.xxx.xxx:9999"),
Endpoint: tea.String(endpoint),
}
//Note: To improve moderation performance, reuse the client instance. This avoids repeated connection creation.
return green20220302.NewClient(config);
}
//Create a client to upload a file.
func createOssClient(tokenData *green20220302.DescribeUploadTokenResponseBodyData) {
if isVPC{
ossClient, err := oss.New(tea.StringValue(tokenData.OssInternalEndPoint), tea.StringValue(tokenData.AccessKeyId), tea.StringValue(tokenData.AccessKeySecret), oss.SecurityToken(tea.StringValue(tokenData.SecurityToken)))
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
Bucket, _ =ossClient.Bucket(tea.StringValue(tokenData.BucketName));
}else {
ossClient, err := oss.New(tea.StringValue(tokenData.OssInternetEndPoint), tea.StringValue(tokenData.AccessKeyId), tea.StringValue(tokenData.AccessKeySecret), oss.SecurityToken(tea.StringValue(tokenData.SecurityToken)))
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
Bucket, _ =ossClient.Bucket(tea.StringValue(tokenData.BucketName));
}
}
//Upload a file.
func uploadFile(filePath string,tokenData *green20220302.DescribeUploadTokenResponseBodyData) (string,error) {
createOssClient(tokenData)
objectName := tea.StringValue(tokenData.FileNamePrefix) + uuid.New().String() + "." + strings.Split(filePath, ".")[1]
//Upload the file.
_err := Bucket.PutObjectFromFile(objectName, filePath)
if _err != nil {
fmt.Println("Error:", _err)
os.Exit(-1)
}
return objectName,_err
}
func invoke(accessKeyId string, accessKeySecret string, endpoint string) (_result *green20220302.VoiceModerationResponse, _err error) {
//Note: To improve moderation performance, reuse the client instance. This avoids repeated connection creation.
client, _err := createClient(accessKeyId, accessKeySecret, endpoint)
if _err != nil {
return nil,_err
}
//Set runtime parameters. The settings take effect only on requests that use this runtime parameter instance.
runtime := &util.RuntimeOptions{}
//The full path of the local file. Example: D:\localPath\exampleFile.wav.
var filePath = "D:\\localPath\\exampleFile.wav"
//Obtain a temporary token to upload the file.
tokenData,ok:=TokenMap[endpoint];
if !ok || tea.Int32Value(tokenData.Expiration) <= int32(time.Now().Unix()) {
//Obtain a temporary token to upload the file.
uploadTokenResponse, _err := client.DescribeUploadToken()
if _err != nil {
return nil,_err
}
tokenData = uploadTokenResponse.Body.Data
TokenMap[endpoint] = tokenData
}
var objectName, _ = uploadFile(filePath,TokenMap[endpoint])
//Construct an audio moderation request.
serviceParameters, _ := json.Marshal(
map[string]interface{}{
"ossBucketName": tea.StringValue(TokenMap[endpoint].BucketName),
"ossObjectName": objectName,
"dataId": uuid.New().String(),
},
)
voiceModerationRequest := &green20220302.VoiceModerationRequest{
// The voice moderation service.
Service: tea.String("audio_multilingual_global"),
ServiceParameters: tea.String(string(serviceParameters)),
}
return client.VoiceModerationWithOptions(voiceModerationRequest, runtime)
}
func main() {
/**
* An AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M.
* We strongly recommend that you do not save your AccessKey ID and AccessKey secret in your project code. This can lead to an AccessKey pair leak and compromise the security of all resources in your account.
* Common methods to obtain environment variables:
* Obtain the AccessKey ID of your RAM user: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
* Obtain the AccessKey secret of your RAM user: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
*/
var accessKeyId= "We recommend that you obtain the AccessKey ID of your RAM user from an environment variable";
var accessKeySecret= "We recommend that you obtain the AccessKey secret of your RAM user from an environment variable";
//Modify the region and endpoint as needed.
var endpoint = "green-cip.ap-southeast-1.aliyuncs.com";
response,_err := invoke(accessKeyId,accessKeySecret,endpoint)
flag := false
if _err != nil {
var err = &tea.SDKError{}
if _t, ok := _err.(*tea.SDKError); ok {
err = _t
if *err.StatusCode == 500 {
flag = true
}
}
}
if response == nil || *response.StatusCode == 500 || *response.Body.Code == 500 {
flag = true
}
//Automatic routing. The region is switched to ap-southeast-1.
if flag {
endpoint = "green-cip.ap-southeast-1.aliyuncs.com";
response, _err = invoke(accessKeyId,accessKeySecret,endpoint)
}
if response != nil {
statusCode := tea.IntValue(tea.ToInt(response.StatusCode))
body := response.Body
voiceModerationResponseData := body.Data
fmt.Println("requestId:" + tea.StringValue(body.RequestId))
if statusCode == http.StatusOK {
fmt.Println("response success. response:" + body.String())
if tea.IntValue(tea.ToInt(body.Code)) == 200 {
result := voiceModerationResponseData.Result
fmt.Println("response dataId:" + tea.StringValue(voiceModerationResponseData.DataId))
for i := 0; i < len(result); i++ {
fmt.Println("response label:" + tea.StringValue(result[i].Label))
fmt.Println("response confidence:" + tea.ToString(tea.Float32Value(result[i].Confidence)))
}
} else {
fmt.Println("voice moderation not success. status" + tea.ToString(body.Code))
}
} else {
fmt.Print("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/v3/client"
"github.com/alibabacloud-go/tea/tea"
"net/http"
)
func main() {
config := &openapi.Config{
/**
* An AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M.
* We strongly recommend that you do not save your AccessKey ID and AccessKey secret in your project code. This can lead to an AccessKey pair leak and compromise the security of all resources in your account.
* Common methods to obtain environment variables:
* Obtain the AccessKey ID of your RAM user: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
* Obtain the AccessKey secret of your RAM user: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
*/
AccessKeyId: tea.String("We recommend that you obtain the AccessKey ID of your RAM user from an environment variable"),
AccessKeySecret: tea.String("We recommend that you obtain the AccessKey secret of your RAM user from an environment variable"),
// Specify your region.
RegionId: tea.String("ap-southeast-1"),
Endpoint: tea.String("green-cip.ap-southeast-1.aliyuncs.com"),
// Set an HTTP proxy.
// HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"),
// Set an HTTPS proxy.
// HttpsProxy: tea.String("https://xx.xx.xx.xx:xxxx"),
/**
* Set a timeout period. The server-side timeout period for the entire link is 10 seconds. Set the timeout period accordingly.
* If the ReadTimeout value is less than the server-side processing time, a ReadTimeout exception is returned.
*/
ConnectTimeout: tea.Int(3000),
ReadTimeout: tea.Int(6000),
}
// Note: To improve moderation performance, reuse the client instance. This avoids repeated connection creation.
client, _err := green.NewClient(config)
if _err != nil {
panic(_err)
}
serviceParameters, _ := json.Marshal(
map[string]interface{}{
"taskId": "<Task ID>",
},
)
request := green.VoiceModerationResultRequest{
// The voice moderation service.
Service: tea.String("audio_multilingual_global"),
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))
}
}
Retrieve the moderation result
Sample code for canceling a live stream moderation task
package main
import (
"encoding/json"
"fmt"
openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
green "github.com/alibabacloud-go/green-20220302/v3/client"
"github.com/alibabacloud-go/tea/tea"
"net/http"
)
func main() {
config := &openapi.Config{
/**
* An AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M.
* We strongly recommend that you do not save your AccessKey ID and AccessKey secret in your project code. This can lead to an AccessKey pair leak and compromise the security of all resources in your account.
* Common methods to obtain environment variables:
* Obtain the AccessKey ID of your RAM user: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
* Obtain the AccessKey secret of your RAM user: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
*/
AccessKeyId: tea.String("We recommend that you obtain the AccessKey ID of your RAM user from an environment variable"),
AccessKeySecret: tea.String("We recommend that you obtain the AccessKey secret of your RAM user from an environment variable"),
// Specify your region.
RegionId: tea.String("cn-shanghai"),
Endpoint: tea.String("green-cip.cn-shanghai.aliyuncs.com"),
// Set an HTTP proxy.
// HttpProxy: tea.String("http://10.10.xx.xx:xxxx"),
// Set an HTTPS proxy.
// HttpsProxy: tea.String("https://10.10.xx.xx:xxxx"),
/**
* Set a timeout period. The server-side timeout period for the entire link is 10 seconds. Set the timeout period accordingly.
* If the ReadTimeout value is less than the server-side processing time, a ReadTimeout exception is returned.
*/
ConnectTimeout: tea.Int(3000),
ReadTimeout: tea.Int(6000),
}
// Note: To improve moderation performance, reuse the client instance. This avoids repeated connection creation.
client, _err := green.NewClient(config)
if _err != nil {
panic(_err)
}
serviceParameters, _ := json.Marshal(
map[string]interface{}{
"taskId": "<The ID of the task to cancel>",
},
)
request := green.VoiceModerationCancelRequest{
// The voice moderation 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))
}
}package main
import (
"encoding/json"
"fmt"
openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
green "github.com/alibabacloud-go/green-20220302/v3/client"
"github.com/alibabacloud-go/tea/tea"
"net/http"
"os"
)
func main() {
config := &openapi.Config{
AccessKeyId: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")),
AccessKeySecret: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")),
RegionId: tea.String("ap-southeast-1"),
Endpoint: tea.String("green-cip.ap-southeast-1.aliyuncs.com"),
ConnectTimeout: tea.Int(3000),
ReadTimeout: tea.Int(6000),
}
client, err := green.NewClient(config)
if err != nil {
panic(err)
}
serviceParameters, _ := json.Marshal(map[string]interface{}{
"taskId": "<task-id>",
})
request := green.VoiceModerationResultRequest{
Service: tea.String("audio_multilingual_global"),
ServiceParameters: tea.String(string(serviceParameters)),
}
result, err := client.VoiceModerationResult(&request)
if err != nil {
panic(err)
}
if tea.IntValue(tea.ToInt(result.StatusCode)) == http.StatusOK {
body := result.Body
if tea.IntValue(tea.ToInt(body.Code)) == 200 {
data := body.Data
fmt.Println("taskId:", tea.StringValue(data.TaskId))
fmt.Println("riskLevel:", tea.StringValue(data.RiskLevel))
fmt.Println("liveId:", tea.StringValue(data.LiveId))
fmt.Println("sliceDetails:", tea.ToString(data.SliceDetails))
}
}
}Detect local audio
Install the dependencies
git clone --branch v2.2.11 github.com/alibabacloud-go/green-20220302/v2
go get github.com/aliyun/aliyun-oss-go-sdk/ossFor the full Go sample code for local audio moderation, generate it using OpenAPI Explorer.
Sample code for canceling a live stream moderation task
package main
import (
"encoding/json"
"fmt"
openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
green "github.com/alibabacloud-go/green-20220302/v3/client"
"github.com/alibabacloud-go/tea/tea"
"net/http"
)
func main() {
config := &openapi.Config{
/**
* An AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M.
* We strongly recommend that you do not save your AccessKey ID and AccessKey secret in your project code. This can lead to an AccessKey pair leak and compromise the security of all resources in your account.
* Common methods to obtain environment variables:
* Obtain the AccessKey ID of your RAM user: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
* Obtain the AccessKey secret of your RAM user: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
*/
AccessKeyId: tea.String("We recommend that you obtain the AccessKey ID of your RAM user from an environment variable"),
AccessKeySecret: tea.String("We recommend that you obtain the AccessKey secret of your RAM user from an environment variable"),
// Specify your region.
RegionId: tea.String("cn-shanghai"),
Endpoint: tea.String("green-cip.cn-shanghai.aliyuncs.com"),
// Set an HTTP proxy.
// HttpProxy: tea.String("http://10.10.xx.xx:xxxx"),
// Set an HTTPS proxy.
// HttpsProxy: tea.String("https://10.10.xx.xx:xxxx"),
/**
* Set a timeout period. The server-side timeout period for the entire link is 10 seconds. Set the timeout period accordingly.
* If the ReadTimeout value is less than the server-side processing time, a ReadTimeout exception is returned.
*/
ConnectTimeout: tea.Int(3000),
ReadTimeout: tea.Int(6000),
}
// Note: To improve moderation performance, reuse the client instance. This avoids repeated connection creation.
client, _err := green.NewClient(config)
if _err != nil {
panic(_err)
}
serviceParameters, _ := json.Marshal(
map[string]interface{}{
"taskId": "<The ID of the task to cancel>",
},
)
request := green.VoiceModerationCancelRequest{
// The voice moderation 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
Source code: NuGet
Detect publicly accessible audio
Install the dependency
dotnet add package AlibabaCloud.SDK.Green20220302 --version 2.2.10Submit a moderation task
using Newtonsoft.Json;
using Tea;
namespace AlibabaCloud.SDK.Sample
{
public class Sample
{
/**
* Use an AccessKey ID and AccessKey secret to initialize the 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,
};
// The endpoint of the service.
config.Endpoint = "green-cip.ap-southeast-1.aliyuncs.com";
return new AlibabaCloud.SDK.Green20220302.Client(config);
}
public static void Main(string[] args)
{
// Hard-coding an AccessKey pair in your project code can lead to an AccessKey pair leak and compromise the security of all resources in your account. The following code is for reference only. We recommend that you use a more secure method, such as using a Security Token Service (STS) token.
/**
* An AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M.
* We strongly recommend that you do not save your AccessKey ID and AccessKey secret in your project code. This can lead to an AccessKey pair leak and compromise the security of all resources in your account.
* Common methods to obtain environment variables:
* Obtain the AccessKey ID of your RAM user: Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID")
* Obtain the AccessKey secret of your RAM user: Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
*/
string accessKeyId = "We recommend that you obtain the AccessKey ID of your RAM user from an environment variable",
string accessKeySecret = 'We recommend that you obtain the AccessKey secret of your RAM user from an environment variable',
// Note: To improve moderation performance, reuse the client instance. This avoids repeated connection creation.
AlibabaCloud.SDK.Green20220302.Client client = CreateClient(accessKeyId, accessKeySecret);
// Construct a voice moderation request.
AlibabaCloud.SDK.Green20220302.Models.VoiceModerationResultRequest voiceModerationResultRequest = new AlibabaCloud.SDK.Green20220302.Models.VoiceModerationResultRequest();
// The voice moderation service.
voiceModerationResultRequest.Service="audio_multilingual_global";
Dictionary<String,Object> task=new Dictionary<string, object>();
// The ID of the task whose result you want to query.
task.Add("taskId","<The ID of the task whose result you want to query>");
voiceModerationResultRequest.ServiceParameters=JsonConvert.SerializeObject(task);
// Create a RuntimeObject instance and set runtime parameters.
AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
runtime.ReadTimeout = 10000;
runtime.ConnectTimeout = 10000;
try
{
// Submit the voice moderation task.
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)
{
// Print the error if necessary.
AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
Console.WriteLine("error : " + error);
}
catch (Exception _error)
{
TeaException error = new TeaException(new Dictionary<string, object>
{
{ "message", _error.Message }
});
// Print the error if necessary.
AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
Console.WriteLine("error : " + error);
}
}
}
}using Newtonsoft.Json;
using Tea;
namespace AlibabaCloud.SDK.Sample
{
public class Sample
{
/**
* Use an AccessKey ID and AccessKey secret to initialize the 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,
};
// The endpoint of the service.
config.Endpoint = "green-cip.ap-southeast-1.aliyuncs.com";
return new AlibabaCloud.SDK.Green20220302.Client(config);
}
public static void Main(string[] args)
{
// Hard-coding an AccessKey pair in your project code can lead to an AccessKey pair leak and compromise the security of all resources in your account. The following code is for reference only. We recommend that you use a more secure method, such as using a Security Token Service (STS) token.
/**
* An AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M.
* We strongly recommend that you do not save your AccessKey ID and AccessKey secret in your project code. This can lead to an AccessKey pair leak and compromise the security of all resources in your account.
* Common methods to obtain environment variables:
* Obtain the AccessKey ID of your RAM user: Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID")
* Obtain the AccessKey secret of your RAM user: Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
*/
string accessKeyId = "We recommend that you obtain the AccessKey ID of your RAM user from an environment variable",
string accessKeySecret = 'We recommend that you obtain the AccessKey secret of your RAM user from an environment variable',
// Note: To improve moderation performance, reuse the client instance. This avoids repeated connection creation.
AlibabaCloud.SDK.Green20220302.Client client = CreateClient(accessKeyId, accessKeySecret);
// Construct a voice moderation request.
AlibabaCloud.SDK.Green20220302.Models.VoiceModerationRequest voiceModerationRequest = new AlibabaCloud.SDK.Green20220302.Models.VoiceModerationRequest();
// The voice moderation service.
voiceModerationRequest.Service="audio_multilingual_global";
Dictionary<String,Object> task=new Dictionary<string, object>();
// Example of passing OSS file parameters.
task.Add("ossBucketName","bucket_01");
task.Add("ossObjectName","test/sample.wav");
task.Add("ossRegionId","cn-shanghai");
voiceModerationRequest.ServiceParameters=JsonConvert.SerializeObject(task);
// Create a RuntimeObject instance and set runtime parameters.
AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
runtime.ReadTimeout = 10000;
runtime.ConnectTimeout = 10000;
try
{
// Submit the voice moderation task.
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)
{
// Print the error if necessary.
AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
Console.WriteLine("error : " + error);
}
catch (Exception _error)
{
TeaException error = new TeaException(new Dictionary<string, object>
{
{ "message", _error.Message }
});
// Print the error if necessary.
AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
Console.WriteLine("error : " + error);
}
}
}
}using Newtonsoft.Json;
using Tea;
namespace AlibabaCloud.SDK.Sample
{
public class Sample
{
/**
* Use an AccessKey ID and AccessKey secret to initialize the 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,
};
// The endpoint of the service.
config.Endpoint = "green-cip.ap-southeast-1.aliyuncs.com";
return new AlibabaCloud.SDK.Green20220302.Client(config);
}
public static void Main(string[] args)
{
// Hard-coding an AccessKey pair in your project code can lead to an AccessKey pair leak and compromise the security of all resources in your account. The following code is for reference only. We recommend that you use a more secure method, such as using a Security Token Service (STS) token.
/**
* An AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M.
* We strongly recommend that you do not save your AccessKey ID and AccessKey secret in your project code. This can lead to an AccessKey pair leak and compromise the security of all resources in your account.
* Common methods to obtain environment variables:
* Obtain the AccessKey ID of your RAM user: Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID")
* Obtain the AccessKey secret of your RAM user: Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
*/
string accessKeyId = "We recommend that you obtain the AccessKey ID of your RAM user from an environment variable",
string accessKeySecret = 'We recommend that you obtain the AccessKey secret of your RAM user from an environment variable',
// Note: To improve moderation performance, reuse the client instance. This avoids repeated connection creation.
AlibabaCloud.SDK.Green20220302.Client client = CreateClient(accessKeyId, accessKeySecret);
// Construct a voice moderation request.
AlibabaCloud.SDK.Green20220302.Models.VoiceModerationResultRequest voiceModerationResultRequest = new AlibabaCloud.SDK.Green20220302.Models.VoiceModerationResultRequest();
// The voice moderation service.
voiceModerationResultRequest.Service="audio_multilingual_global";
Dictionary<String,Object> task=new Dictionary<string, object>();
// The ID of the task whose result you want to query.
task.Add("taskId","<The ID of the task whose result you want to query>");
voiceModerationResultRequest.ServiceParameters=JsonConvert.SerializeObject(task);
// Create a RuntimeObject instance and set runtime parameters.
AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
runtime.ReadTimeout = 10000;
runtime.ConnectTimeout = 10000;
try
{
// Submit the voice moderation task.
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)
{
// Print the error if necessary.
AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
Console.WriteLine("error : " + error);
}
catch (Exception _error)
{
TeaException error = new TeaException(new Dictionary<string, object>
{
{ "message", _error.Message }
});
// Print the error if necessary.
AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
Console.WriteLine("error : " + error);
}
}
}
}using Newtonsoft.Json;
using Tea;
namespace AlibabaCloud.SDK.Sample
{
public class Sample
{
/**
* Use an AccessKey ID and AccessKey secret to initialize the 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,
};
// The endpoint of the service.
config.Endpoint = "green-cip.ap-southeast-1.aliyuncs.com";
return new AlibabaCloud.SDK.Green20220302.Client(config);
}
public static void Main(string[] args)
{
// Hard-coding an AccessKey pair in your project code can lead to an AccessKey pair leak and compromise the security of all resources in your account. The following code is for reference only. We recommend that you use a more secure method, such as using a Security Token Service (STS) token.
/**
* An AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M.
* We strongly recommend that you do not save your AccessKey ID and AccessKey secret in your project code. This can lead to an AccessKey pair leak and compromise the security of all resources in your account.
* Common methods to obtain environment variables:
* Obtain the AccessKey ID of your RAM user: Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID")
* Obtain the AccessKey secret of your RAM user: Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
*/
string accessKeyId = "We recommend that you obtain the AccessKey ID of your RAM user from an environment variable",
string accessKeySecret = 'We recommend that you obtain the AccessKey secret of your RAM user from an environment variable',
// Note: To improve moderation performance, reuse the client instance. This avoids repeated connection creation.
AlibabaCloud.SDK.Green20220302.Client client = CreateClient(accessKeyId, accessKeySecret);
// Construct a voice moderation request.
AlibabaCloud.SDK.Green20220302.Models.VoiceModerationResultRequest voiceModerationResultRequest = new AlibabaCloud.SDK.Green20220302.Models.VoiceModerationResultRequest();
// The voice moderation service.
voiceModerationResultRequest.Service="audio_multilingual_global";
Dictionary<String,Object> task=new Dictionary<string, object>();
// The ID of the task whose result you want to query.
task.Add("taskId","<The ID of the task whose result you want to query>");
voiceModerationResultRequest.ServiceParameters=JsonConvert.SerializeObject(task);
// Create a RuntimeObject instance and set runtime parameters.
AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
runtime.ReadTimeout = 10000;
runtime.ConnectTimeout = 10000;
try
{
// Submit the voice moderation task.
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)
{
// Print the error if necessary.
AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
Console.WriteLine("error : " + error);
}
catch (Exception _error)
{
TeaException error = new TeaException(new Dictionary<string, object>
{
{ "message", _error.Message }
});
// Print the error if necessary.
AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
Console.WriteLine("error : " + error);
}
}
}
}Retrieve the moderation result
using Newtonsoft.Json;
using Tea;
namespace AlibabaCloud.SDK.Sample
{
public class Sample
{
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.ap-southeast-1.aliyuncs.com";
return new AlibabaCloud.SDK.Green20220302.Client(config);
}
public static void Main(string[] args)
{
string accessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID");
string accessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
AlibabaCloud.SDK.Green20220302.Client client = CreateClient(accessKeyId, accessKeySecret);
AlibabaCloud.SDK.Green20220302.Models.VoiceModerationResultRequest request =
new AlibabaCloud.SDK.Green20220302.Models.VoiceModerationResultRequest();
request.Service = "audio_multilingual_global";
Dictionary<string, object> task = new Dictionary<string, object>();
task.Add("taskId", "<task-id>");
request.ServiceParameters = JsonConvert.SerializeObject(task);
AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
runtime.ReadTimeout = 6000;
runtime.ConnectTimeout = 3000;
try
{
AlibabaCloud.SDK.Green20220302.Models.VoiceModerationResultResponse response =
client.VoiceModerationResultWithOptions(request, runtime);
if (response != null && response.Body != null && response.Body.Data != null)
{
if (200 == response.Body.Code)
{
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)
{
AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
}
catch (Exception _error)
{
TeaException error = new TeaException(new Dictionary<string, object>
{
{ "message", _error.Message }
});
AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
}
}
}
}Detect local audio
Install the dependencies
dotnet add package AlibabaCloud.SDK.Green20220302 --version 2.2.10Install the OSS SDK via NuGet: search for Aliyun.OSS.SDK (for .NET Framework) or Aliyun.OSS.SDK.NetCore (for .NET Core) in the NuGet Package Manager.
For the full C# sample code for local audio moderation, generate it using OpenAPI Explorer.
Detect audio stored in OSS
Create a service role on the Cloud Resource Access Authorization page.
Install the dependency
dotnet add package AlibabaCloud.SDK.Green20220302 --version 2.2.10Submit a moderation task
To retrieve results, use the same VoiceModerationResultRequest pattern from Detect publicly accessible audio.
Generate SDK code in other languages
Use OpenAPI Explorer to generate SDK sample code for any supported language. The following API operations are available for online debugging:
VoiceModeration — Submit a voice moderation task
const Green20220302 = require('@alicloud/green20220302'); const OpenApi = require('@alicloud/openapi-client'); const Util = require('@alicloud/tea-util'); // Note: To improve moderation performance, reuse the client instance. This avoids repeated connection creation. // Hard-coding an AccessKey pair in your project code can lead to an AccessKey pair leak and compromise the security of all resources in your account. The following code is for reference only. class Client { static createClient() { const config = new OpenApi.Config({ // Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is configured. accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'], // Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is configured. accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'], endpoint: `green-cip.ap-southeast-1.aliyuncs.com`, }); return new Green20220302.default(config); } static async main() { const client = Client.createClient(); // Construct a request object. const voiceModerationResultRequest = new Green20220302.VoiceModerationResultRequest({ // The voice moderation service. "service": "audio_multilingual_global", "serviceParameters": JSON.stringify({"taskId":"<The ID of the task whose moderation result you want to query>"}) }); // Create a runtime configuration object. const runtime = new Util.RuntimeOptions(); try { // Send the request and obtain the response. const response = await client.voiceModerationResultWithOptions(voiceModerationResultRequest, runtime); console.log(JSON.stringify(response.body)); } catch (error) { // This section is for printing only. Handle exceptions with caution in your project. Do not ignore exceptions. // Error message console.log('Error occurred:', error.message); } } } Client.main();const Green20220302 = require('@alicloud/green20220302'); const OpenApi = require('@alicloud/openapi-client'); const Util = require('@alicloud/tea-util'); // Note: To improve moderation performance, reuse the client instance. This avoids repeated connection creation. // Hard-coding an AccessKey pair in your project code can lead to an AccessKey pair leak and compromise the security of all resources in your account. The following code is for reference only. class Client { static createClient() { const config = new OpenApi.Config({ // Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is configured. accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'], // Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is configured. accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'], endpoint: `green-cip.ap-southeast-1.aliyuncs.com`, }); return new Green20220302.default(config); } static async main() { const client = Client.createClient(); // Construct a request object. const voiceModerationRequest = new Green20220302.VoiceModerationRequest({ // The voice moderation service. "service": "audio_multilingual_global", "serviceParameters": JSON.stringify({ // The region where the bucket that stores the file to be moderated is located. Example: cn-shanghai "ossRegionId": "cn-shanghai", // The name of the bucket that stores the file to be moderated. Example: bucket001 "ossBucketName": "bucket001", // The file to be moderated. Example: voice/001.wav "ossObjectName": "voice/001.wav",}) }); }); // Create a runtime configuration object. const runtime = new Util.RuntimeOptions(); try { // Send the request and obtain the response. const response = await client.voiceModerationWithOptions(voiceModerationRequest, runtime); console.log(JSON.stringify(response.body)); } catch (error) { // This section is for printing only. Handle exceptions with caution in your project. Do not ignore exceptions. // Error message console.log('Error occurred:', error.message); } } } Client.main();const Green20220302 = require('@alicloud/green20220302'); const OpenApi = require('@alicloud/openapi-client'); const Util = require('@alicloud/tea-util'); // Note: To improve moderation performance, reuse the client instance. This avoids repeated connection creation. // Hard-coding an AccessKey pair in your project code can lead to an AccessKey pair leak and compromise the security of all resources in your account. The following code is for reference only. class Client { static createClient() { const config = new OpenApi.Config({ // Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is configured. accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'], // Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is configured. accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'], endpoint: `green-cip.ap-southeast-1.aliyuncs.com`, }); return new Green20220302.default(config); } static async main() { const client = Client.createClient(); // Construct a request object. const voiceModerationResultRequest = new Green20220302.VoiceModerationResultRequest({ // The voice moderation service. "service": "audio_multilingual_global", "serviceParameters": JSON.stringify({"taskId":"<The ID of the task whose moderation result you want to query>"}) }); // Create a runtime configuration object. const runtime = new Util.RuntimeOptions(); try { // Send the request and obtain the response. const response = await client.voiceModerationResultWithOptions(voiceModerationResultRequest, runtime); console.log(JSON.stringify(response.body)); } catch (error) { // This section is for printing only. Handle exceptions with caution in your project. Do not ignore exceptions. // Error message console.log('Error occurred:', error.message); } } } Client.main();const Green20220302 = require('@alicloud/green20220302'); const OpenApi = require('@alicloud/openapi-client'); const { v4: uuidv4 } = require('uuid'); const OSS = require('ali-oss'); const Util = require('@alicloud/tea-util'); const path = require("path"); // Note: To improve moderation performance, reuse the client instance. This avoids repeated connection creation. // Hard-coding an AccessKey pair in your project code can lead to an AccessKey pair leak and compromise the security of all resources in your account. The following code is for reference only. //Specifies whether the service is deployed in a VPC. var isVPC = false; //The token used to upload the file. var tokenDic = new Array(); //The client used to upload the file. var ossClient; //Set the endpoint. var endpoint = 'green-cip.ap-southeast-1.aliyuncs.com' //The path of the local file. var filePath = 'D:\\test\\voice\\cf02.wav' //The moderation service. var service = 'audio_multilingual_global' class Client { static createClient() { const config = new OpenApi.Config({ // Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is configured. accessKeyId: "We recommend that you obtain the AccessKey ID of your RAM user from an environment variable", // Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is configured. accessKeySecret: "We recommend that you obtain the AccessKey secret of your RAM user from an environment variable", endpoint: endpoint, }); return new Green20220302.default(config); } //Create a client to upload a file. static getOssClient(tokenData, isVPC) { if (isVPC) { ossClient = new OSS({ accessKeyId: tokenData['accessKeyId'], accessKeySecret: tokenData['accessKeySecret'], stsToken: tokenData['securityToken'], endpoint: tokenData['ossInternalEndPoint'], bucket: tokenData['bucketName'], }); } else { ossClient = new OSS({ accessKeyId: tokenData['accessKeyId'], accessKeySecret: tokenData['accessKeySecret'], stsToken: tokenData['securityToken'], endpoint: tokenData['ossInternetEndPoint'], bucket: tokenData['bucketName'], }); } } static async main() { const client = Client.createClient(); // Create a runtime configuration object. const runtime = new Util.RuntimeOptions(); //Obtain a temporary token to upload the file. if (tokenDic[endpoint] == null || tokenDic[endpoint]['expiration'] <= Date.parse(new Date() / 1000)) { var tokenResponse = await client.describeUploadTokenWithOptions(runtime) tokenDic[endpoint] = tokenResponse.body.data; } //Obtain the client used to upload the file. this.getOssClient(tokenDic[endpoint], isVPC) var split = filePath.split("."); var objectName; if (split.length > 1) { objectName = tokenDic[endpoint].fileNamePrefix + uuidv4() + "." + split[split.length - 1]; } else { objectName = tokenDic[endpoint].fileNamePrefix + uuidv4(); } //Upload the file. const result = await ossClient.put(objectName, path.normalize(filePath)); // Construct a request object. const voiceModerationRequest = new Green20220302.VoiceModerationRequest({ // The moderation service. "service": service, // The URL to be moderated. "serviceParameters": JSON.stringify({ "ossBucketName": tokenDic[endpoint].bucketName, "ossObjectName": objectName, }) }); try { // Send the request and obtain the response. const response = await client.voiceModerationWithOptions(voiceModerationRequest, runtime); console.log(JSON.stringify(response.body)); } catch (error) { // This section is for printing only. Handle exceptions with caution in your project. Do not ignore exceptions. // Error message console.log('Error occurred:', error.message); } } } Client.main();const Green20220302 = require('@alicloud/green20220302'); const OpenApi = require('@alicloud/openapi-client'); const Util = require('@alicloud/tea-util'); // Note: To improve moderation performance, reuse the client instance. This avoids repeated connection creation. // Hard-coding an AccessKey pair in your project code can lead to an AccessKey pair leak and compromise the security of all resources in your account. The following code is for reference only. class Client { static createClient() { const config = new OpenApi.Config({ // Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is configured. accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'], // Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is configured. accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'], endpoint: `green-cip.ap-southeast-1.aliyuncs.com`, }); return new Green20220302.default(config); } static async main() { const client = Client.createClient(); // Construct a request object. const voiceModerationResultRequest = new Green20220302.VoiceModerationResultRequest({ // The voice moderation service. "service": "audio_multilingual_global", "serviceParameters": JSON.stringify({"taskId":"<The ID of the task whose moderation result you want to query>"}) }); // Create a runtime configuration object. const runtime = new Util.RuntimeOptions(); try { // Send the request and obtain the response. const response = await client.voiceModerationResultWithOptions(voiceModerationResultRequest, runtime); console.log(JSON.stringify(response.body)); } catch (error) { // This section is for printing only. Handle exceptions with caution in your project. Do not ignore exceptions. // Error message console.log('Error occurred:', error.message); } } } Client.main();const Green20220302 = require('@alicloud/green20220302'); const OpenApi = require('@alicloud/openapi-client'); const Util = require('@alicloud/tea-util'); // Note: To improve moderation performance, reuse the client instance. This avoids repeated connection creation. // Hard-coding an AccessKey pair in your project code can lead to an AccessKey pair leak and compromise the security of all resources in your account. The following code is for reference only. class Client { static createClient() { const config = new OpenApi.Config({ // Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is configured. accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'], // Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is configured. accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'], endpoint: `green-cip.ap-southeast-1.aliyuncs.com`, }); return new Green20220302.default(config); } static async main() { const client = Client.createClient(); // Construct a request object. const voiceModerationRequest = new Green20220302.VoiceModerationRequest({ // The voice moderation service. "service": "audio_multilingual_global", // The URL of the audio file to moderate. "serviceParameters": JSON.stringify({"url":"http://aliyundoc.com/test.flv"}) }); // Create a runtime configuration object. const runtime = new Util.RuntimeOptions(); try { // Send the request and obtain the response. const response = await client.voiceModerationWithOptions(voiceModerationRequest, runtime); console.log(JSON.stringify(response.body)); } catch (error) { // This section is for printing only. Handle exceptions with caution in your project. Do not ignore exceptions. // Error message console.log('Error occurred:', error.message); } } } Client.main();// This file is auto-generated, don't edit it. Thanks. using System; using Newtonsoft.Json; using Aliyun.OSS; namespace AlibabaCloud.SDK.Green20220302 { public class VoiceModerationAutoRoute { //The token used to upload the file. public static Dictionary<String, Models.DescribeUploadTokenResponse> tokenDic = new Dictionary<String, Models.DescribeUploadTokenResponse>(); //The client used to upload the file. public static OssClient ossClient = null; //Specifies whether the service is deployed in a VPC. public static Boolean isVPC = false; public static void Main(string[] args) { /** * An AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M. * We strongly recommend that you do not save your AccessKey ID and AccessKey secret in your project code. This can lead to an AccessKey pair leak and compromise the security of all resources in your account. * Common methods to obtain environment variables: * Obtain the AccessKey ID of your RAM user: Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID") * Obtain the AccessKey secret of your RAM user: Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET") */ String accessKeyId = "We recommend that you obtain the AccessKey ID of your RAM user from an environment variable"; String accessKeySecret = "We recommend that you obtain the AccessKey secret of your RAM user from an environment variable"; // Modify the region and endpoint as needed. String endpoint = "green-cip.ap-southeast-1.aliyuncs.com"; Models.VoiceModerationResponse response = invoke( accessKeyId, accessKeySecret, endpoint ); //Automatic routing. The region is switched to ap-southeast-1. if ( response is null || response.Body is null || AlibabaCloud.TeaUtil.Common.EqualNumber( 500, AlibabaCloud.TeaUtil.Common.AssertAsNumber(response.StatusCode) ) || AlibabaCloud.TeaUtil.Common.EqualString( "500", Convert.ToString(response.Body.Code) ) ) { endpoint = "green-cip.ap-southeast-1.aliyuncs.com"; response = invoke(accessKeyId, accessKeySecret, endpoint); ; } Console.WriteLine(response.Body.RequestId); Console.WriteLine(JsonConvert.SerializeObject(response.Body)); } //Create a client. public static Client createClient( String accessKeyId, String accessKeySecret, String endpoint ) { AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config { AccessKeyId = accessKeyId, AccessKeySecret = accessKeySecret, //Set an HTTP proxy. //HttpProxy = "http://10.10.xx.xx:xxxx", //Set an HTTPS proxy. //HttpsProxy = "https://username:password@xxx.xxx.xxx.xxx:9999", //The endpoint of the service. Endpoint = endpoint, }; return new Client(config); } //Create a client to upload a file. private static OssClient getOssClient( Models.DescribeUploadTokenResponse tokenResponse, Boolean isVPC ) { var tokenData = tokenResponse.Body.Data; if (isVPC) { return new OssClient( tokenData.OssInternalEndPoint, tokenData.AccessKeyId, tokenData.AccessKeySecret, tokenData.SecurityToken ); } else { return new OssClient( tokenData.OssInternetEndPoint, tokenData.AccessKeyId, tokenData.AccessKeySecret, tokenData.SecurityToken ); } } //Upload a file. public static String uploadFile( String filePath, Models.DescribeUploadTokenResponse tokenResponse ) { // Create an OssClient instance. ossClient = getOssClient(tokenResponse, isVPC); var tokenData = tokenResponse.Body.Data; String objectName = tokenData.FileNamePrefix + Guid.NewGuid().ToString() + "." + filePath.Split(".").GetValue(1); //Upload the file. ossClient.PutObject(tokenData.BucketName, objectName, filePath); return objectName; } //Submit a moderation request. public static Models.VoiceModerationResponse invoke( String accessKeyId, String accessKeySecret, String endpoint ) { //Note: To improve moderation performance, reuse the client instance. This avoids repeated connection creation. Client client = createClient(accessKeyId, accessKeySecret, endpoint); //Set runtime parameters. The settings take effect only on requests that use this runtime parameter instance. AlibabaCloud.TeaUtil.Models.RuntimeOptions runtimeOptions = new AlibabaCloud.TeaUtil.Models.RuntimeOptions(); //The full path of the local file. Example: D:\localPath\exampleFile.wav. String filePath = "D:\localPath\exampleFile.wav"; try { //Obtain a temporary token to upload the file. if ( !tokenDic.ContainsKey(endpoint) || tokenDic[endpoint].Body.Data.Expiration <= DateTimeOffset.Now.ToUnixTimeSeconds() ) { var tokenResponse = client.DescribeUploadToken(); tokenDic[endpoint] = tokenResponse; } //Upload the file. String objectName = uploadFile(filePath, tokenDic[endpoint]); //Construct a voice moderation request. Models.VoiceModerationRequest voiceModerationRequest = new Models.VoiceModerationRequest(); //The voice moderation service. Example: audio_multilingual_global. voiceModerationRequest.Service = "audio_multilingual_global"; Dictionary<string, object> task = new Dictionary<string, object>(); //The information about the audio file to be moderated. task.Add("ossBucketName", tokenDic[endpoint].Body.Data.BucketName); task.Add("ossObjectName", objectName); //The ID of the data to be moderated. task.Add("dataId", Guid.NewGuid().ToString()); voiceModerationRequest.ServiceParameters = JsonConvert.SerializeObject(task); //Call the API operation to query the moderation result. Models.VoiceModerationResponse response = client.VoiceModerationWithOptions( voiceModerationRequest, runtimeOptions ); return response; } catch (Exception _err) { Console.WriteLine(_err); return null; } } } }# 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( # An AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M. # We strongly recommend that you do not save your AccessKey ID and AccessKey secret in your project code. This can lead to an AccessKey pair leak and compromise the security of all resources in your account. # Common methods to obtain environment variables: # Obtain the AccessKey ID of your RAM user: os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'] # Obtain the AccessKey secret of your RAM user: os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] access_key_id='We recommend that you obtain the AccessKey ID of your RAM user from an environment variable', access_key_secret='We recommend that you obtain the AccessKey secret of your RAM user from an environment variable', # The connection timeout period in milliseconds (ms). connect_timeout=10000, # The read timeout period in milliseconds (ms). read_timeout=3000, region_id='ap-southeast-1', endpoint='green-cip.ap-southeast-1.aliyuncs.com' ) # Note: To improve moderation performance, reuse the client instance. This avoids repeated connection creation. clt = Client(config) # The taskId returned when the task was submitted. serviceParameters = { "taskId": 'The task ID returned for the moderation task' } voiceModerationResultRequest = models.VoiceModerationResultRequest( # Moderation type: audio_multilingual_global for multi-language audio moderation. service='audio_multilingual_global', service_parameters=json.dumps(serviceParameters) ) try: response = clt.voice_moderation_result(voiceModerationResultRequest) if response.status_code == 200: # The call was successful. # Obtain the moderation result. 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( # An AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M. # We strongly recommend that you do not save your AccessKey ID and AccessKey secret in your project code. This can lead to an AccessKey pair leak and compromise the security of all resources in your account. # Common methods to obtain environment variables: # Obtain the AccessKey ID of your RAM user: os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'] # Obtain the AccessKey secret of your RAM user: os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] access_key_id='We recommend that you obtain the AccessKey ID of your RAM user from an environment variable', access_key_secret='We recommend that you obtain the AccessKey secret of your RAM user from an environment variable', # The connection timeout period in milliseconds (ms). connect_timeout=10000, # The read timeout period in milliseconds (ms). read_timeout=3000, region_id='ap-southeast-1', endpoint='green-cip.ap-southeast-1.aliyuncs.com' ) # Note: To improve moderation performance, reuse the client instance. This avoids repeated connection creation. clt = Client(config) serviceParameters = { 'ossBucketName': 'bucket_01', 'ossObjectName': 'test/test.mp3', 'ossRegionId': 'cn-shanghai' } voiceModerationRequest = models.VoiceModerationRequest( # Moderation type: audio_multilingual_global for multi-language audio moderation. service='audio_multilingual_global', service_parameters=json.dumps(serviceParameters) ) try: response = clt.voice_moderation(voiceModerationRequest) if response.status_code == 200: # The call was successful. # Obtain the moderation result. 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( # An AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M. # We strongly recommend that you do not save your AccessKey ID and AccessKey secret in your project code. This can lead to an AccessKey pair leak and compromise the security of all resources in your account. # Common methods to obtain environment variables: # Obtain the AccessKey ID of your RAM user: os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'] # Obtain the AccessKey secret of your RAM user: os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] access_key_id='We recommend that you obtain the AccessKey ID of your RAM user from an environment variable', access_key_secret='We recommend that you obtain the AccessKey secret of your RAM user from an environment variable', # The connection timeout period in milliseconds (ms). connect_timeout=10000, # The read timeout period in milliseconds (ms). read_timeout=3000, region_id='ap-southeast-1', endpoint='green-cip.ap-southeast-1.aliyuncs.com' ) # Note: To improve moderation performance, reuse the client instance. This avoids repeated connection creation. clt = Client(config) # The taskId returned when the task was submitted. serviceParameters = { "taskId": 'The task ID returned for the moderation task' } voiceModerationResultRequest = models.VoiceModerationResultRequest( # Moderation type: audio_multilingual_global for multi-language audio moderation. service='audio_multilingual_global', service_parameters=json.dumps(serviceParameters) ) try: response = clt.voice_moderation_result(voiceModerationResultRequest) if response.status_code == 200: # The call was successful. # Obtain the moderation result. 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 from alibabacloud_tea_util import models as util_models import json import uuid import oss2 import time import os # Specifies whether the service is deployed in a VPC. is_vpc = False # The token used to upload the file. The key is the endpoint and the value is the token. token_dict = dict() # The client used to upload the file. bucket = None # Create a client. def create_client(access_key_id, access_key_secret, endpoint): config = Config( access_key_id=access_key_id, access_key_secret=access_key_secret, # Set an HTTP proxy. # http_proxy='http://10.10.xx.xx:xxxx', # Set an HTTPS proxy. # https_proxy='https://10.10.xx.xx:xxxx', # Modify the endpoint as needed. endpoint=endpoint ) return Client(config) # Create a client to upload a file. def create_oss_bucket(is_vpc, upload_token): global token_dict global bucket auth = oss2.StsAuth(upload_token.access_key_id, upload_token.access_key_secret, upload_token.security_token) if (is_vpc): end_point = upload_token.oss_internal_end_point else: end_point = upload_token.oss_internet_end_point # Note: To improve moderation performance, reuse the bucket instance. This avoids repeated connection creation. bucket = oss2.Bucket(auth, end_point, upload_token.bucket_name) # Upload a file. def upload_file(file_name, upload_token): create_oss_bucket(is_vpc, upload_token) object_name = upload_token.file_name_prefix + str(uuid.uuid1()) + '.' + file_name.split('.')[-1] bucket.put_object_from_file(object_name, file_name) return object_name def invoke_function(access_key_id, access_key_secret, endpoint): # Note: To improve moderation performance, reuse the client instance. This avoids repeated connection creation. client = create_client(access_key_id, access_key_secret, endpoint) # Create a RuntimeObject instance and set runtime parameters. runtime = util_models.RuntimeOptions() # The full path of the local file. Example: D:\localPath\exampleFile.mp3 file_path = 'D:\localPath\exampleFile.mp3' # Obtain a temporary token to upload the file. upload_token = token_dict.setdefault(endpoint, None) if (upload_token == None) or int(upload_token.expiration) <= int(time.time()): response = client.describe_upload_token() upload_token = response.body.data token_dict[endpoint] = upload_token # Upload the file. object_name = upload_file(file_path, upload_token) # Construct moderation parameters. service_parameters = { # The name of the bucket in which the file to be moderated is stored. 'ossBucketName': upload_token.bucket_name, # The file to be moderated. 'ossObjectName': object_name, # The unique ID of the data. 'dataId': str(uuid.uuid4()) } voice_moderation_request = models.VoiceModerationRequest( # The audio moderation service. The value is the service code that is configured for the rule in the Voice Moderation 2.0 console. Example: audio_multilingual_global. service='audio_multilingual_global', service_parameters=json.dumps(service_parameters) ) try: return client.voice_moderation_with_options(voice_moderation_request, runtime) except Exception as err: print(err) if __name__ == '__main__': # An AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M. # We strongly recommend that you do not save your AccessKey ID and AccessKey secret in your project code. This can lead to an AccessKey pair leak and compromise the security of all resources in your account. # Common methods to obtain environment variables: # Obtain the AccessKey ID of your RAM user: os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'] # Obtain the AccessKey secret of your RAM user: os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] access_key_id = 'We recommend that you obtain the AccessKey ID of your RAM user from an environment variable' access_key_secret = 'We recommend that you obtain the AccessKey secret of your RAM user from an environment variable' # Modify the region and endpoint as needed. response = invoke_function(access_key_id, access_key_secret, 'green-cip.ap-southeast-1.aliyuncs.com') if response.status_code == 200: # The call was successful. # Obtain the moderation result. result = response.body print('response success. result:{}'.format(result)) if result.code == 200: result_data = result.data print('result: {}'.format(result_data)) else: print('response not success. status:{} ,result:{}'.format(response.status_code, response))# 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( # An AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M. # We strongly recommend that you do not save your AccessKey ID and AccessKey secret in your project code. This can lead to an AccessKey pair leak and compromise the security of all resources in your account. # Common methods to obtain environment variables: # Obtain the AccessKey ID of your RAM user: os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'] # Obtain the AccessKey secret of your RAM user: os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] access_key_id='We recommend that you obtain the AccessKey ID of your RAM user from an environment variable', access_key_secret='We recommend that you obtain the AccessKey secret of your RAM user from an environment variable', # The connection timeout period in milliseconds (ms). connect_timeout=10000, # The read timeout period in milliseconds (ms). read_timeout=3000, region_id='ap-southeast-1', endpoint='green-cip.ap-southeast-1.aliyuncs.com' ) # Note: To improve moderation performance, reuse the client instance. This avoids repeated connection creation. clt = Client(config) # The taskId returned when the task was submitted. serviceParameters = { "taskId": 'The task ID returned for the moderation task' } voiceModerationResultRequest = models.VoiceModerationResultRequest( # Moderation type: audio_multilingual_global for multi-language audio moderation. service='audio_multilingual_global', service_parameters=json.dumps(serviceParameters) ) try: response = clt.voice_moderation_result(voiceModerationResultRequest) if response.status_code == 200: # The call was successful. # Obtain the moderation result. 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( # An AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M. # We strongly recommend that you do not save your AccessKey ID and AccessKey secret in your project code. This can lead to an AccessKey pair leak and compromise the security of all resources in your account. # Common methods to obtain environment variables: # Obtain the AccessKey ID of your RAM user: os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'] # Obtain the AccessKey secret of your RAM user: os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] access_key_id='We recommend that you obtain the AccessKey ID of your RAM user from an environment variable', access_key_secret='We recommend that you obtain the AccessKey secret of your RAM user from an environment variable', # The connection timeout period in milliseconds (ms). connect_timeout=10000, # The read timeout period in milliseconds (ms). read_timeout=3000, region_id='ap-southeast-1', endpoint='green-cip.ap-southeast-1.aliyuncs.com' ) # Note: To improve moderation performance, reuse the client instance. This avoids repeated connection creation. clt = Client(config) serviceParameters = { 'url': 'https://xxxx/xxx/sample.wav', } voiceModerationRequest = models.VoiceModerationRequest( # Moderation type: audio_multilingual_global for multi-language audio moderation. service='audio_multilingual_global', service_parameters=json.dumps(serviceParameters) ) try: response = clt.voice_moderation(voiceModerationRequest) if response.status_code == 200: # The call was successful. # Obtain the moderation result. 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)
Usage notes
Reuse client instances. Creating a new client for each request creates unnecessary connections. Initialize one client per endpoint and reuse it across requests.
Load credentials from environment variables. Set
ALIBABA_CLOUD_ACCESS_KEY_IDandALIBABA_CLOUD_ACCESS_KEY_SECRETas environment variables. Do not hardcode AccessKey values in your code.Upload token expiration. Temporary upload tokens from
DescribeUploadTokenexpire. Check theexpirationfield and refresh the token before it expires.VPC endpoints. If your application runs in a VPC, use the VPC endpoint (
green-cip-vpc.ap-southeast-1.aliyuncs.com) to avoid public network egress costs.