語音審核2.0版支援SDK方式調用和HTTPS原生方式調用。推薦您使用SDK接入,可免去簽名驗證以及Body格式構建等細節步驟。本文介紹語音審核2.0版接入的方式。
步驟一:開通服務
訪問開通服務頁面,開通內容(語音)審核2.0版服務。介面接入使用後系統會按使用量自動出賬
開通內容(語音)審核2.0版服務後,預設付費方式是按量後付費,且按照實際用量結算當日費用,不調用服務不收費。
步驟二:為RAM使用者授權
在接入SDK或者API之前,您需要為RAM使用者授權。您可以為阿里雲帳號和RAM使用者建立一個存取金鑰(AccessKey)。在調用阿里雲API時您需要使用AccessKey完成身分識別驗證。擷取方式,請參見擷取AccessKey。
操作步驟
步驟三:安裝並接入語音審核服務
目前支援的接入地區如下:
地區 | 外網接入地址 | 內網接入地址 |
新加坡 | green-cip.ap-southeast-1.aliyuncs.com | green-cip-vpc.ap-southeast-1.aliyuncs.com |
如果需要其他語言的SDK範例程式碼,您可以通過OpenAPI 開發人員門戶線上調試工具調試API介面,該工具會自動產生相應API的SDK調用範例程式碼。線上調試API介面如下:
阿里雲SDK代碼通過定義ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET環境變數來建立預設的訪問憑證。調用介面時,程式直接存取憑證,讀取您的存取金鑰(即AccessKey)並自動完成鑒權。您在接入SDK程式碼範例之前,請先配置環境變數。具體操作,請參見身分識別驗證配置。
Java SDK
支援Java 1.8及以上版本。
原始代碼,請參見Java SDK源碼或者Java SDK源碼(OSS路徑)。
支援以下三種類型的音頻檢測。
對公網可訪問音頻進行檢測
使用情境
當需要審核的音頻可通過公網連結訪問時,音頻審核2.0版服務可通過音頻URL擷取檔案後進行審核。
在dependencies中添加如下依賴:
<dependency> <groupId>com.aliyun</groupId> <artifactId>green20220302</artifactId> <version>2.21.1</version> </dependency>接入Java SDK。
提交語音檢測任務程式碼範例
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.aliyun.green20220302.Client; import com.aliyun.green20220302.models.VoiceModerationRequest; import com.aliyun.green20220302.models.VoiceModerationResponse; import com.aliyun.green20220302.models.VoiceModerationResponseBody; import com.aliyun.teaopenapi.models.Config; public class VoiceModerationDemo { public static void main(String[] args) throws Exception { Config config = new Config(); /** * 阿里雲帳號AccessKey擁有所有API的存取權限,建議您使用RAM使用者進行API訪問或日常營運。 * 常見擷取環境變數方式: * 方式一: * 擷取RAM使用者AccessKey ID:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 擷取RAM使用者AccessKey Secret:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); * 方式二: * 擷取RAM使用者AccessKey ID:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 擷取RAM使用者AccessKey Secret:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ config.setAccessKeyId("建議從環境變數中擷取RAM使用者AccessKey ID"); config.setAccessKeySecret("建議從環境變數中擷取RAM使用者AccessKey Secret"); // 接入地區和地址請根據實際情況修改。 config.setRegionId("ap-southeast-1"); config.setEndpoint("green-cip.ap-southeast-1.aliyuncs.com"); // 串連時逾時時間,單位毫秒(ms)。 config.setReadTimeout(6000); // 讀取時逾時時間,單位毫秒(ms)。 config.setConnectTimeout(3000); // 注意:此處執行個體化的client儘可能重複使用,提升檢測效能。避免重複建立串連。 Client client = new Client(config); JSONObject serviceParameters = new JSONObject(); serviceParameters.put("url", "https://xxxx/xxx/sample.wav"); VoiceModerationRequest voiceModerationRequest = new VoiceModerationRequest(); // 檢測類型:audio_multilingual_global 音頻媒體多語言服務。 voiceModerationRequest.setService("audio_multilingual_global"); voiceModerationRequest.setServiceParameters(serviceParameters.toJSONString()); try { VoiceModerationResponse response = client.voiceModeration(voiceModerationRequest); if (response.getStatusCode() == 200) { VoiceModerationResponseBody result = response.getBody(); System.out.println(JSON.toJSONString(result)); System.out.println("requestId = " + result.getRequestId()); System.out.println("code = " + result.getCode()); System.out.println("msg = " + result.getMessage()); Integer code = result.getCode(); if (200 == code) { VoiceModerationResponseBody.VoiceModerationResponseBodyData data = result.getData(); System.out.println("taskId = [" + data.getTaskId() + "]"); } else { System.out.println("voice moderation not success. code:" + code); } } else { System.out.println("response not success. status:" + response.getStatusCode()); } } catch (Exception e) { e.printStackTrace(); } } }擷取語音檢測任務程式碼範例
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.aliyun.green20220302.Client; import com.aliyun.green20220302.models.VoiceModerationResultRequest; import com.aliyun.green20220302.models.VoiceModerationResultResponse; import com.aliyun.green20220302.models.VoiceModerationResultResponseBody; import com.aliyun.teaopenapi.models.Config; public class VoiceModerationResultDemo { public static void main(String[] args) throws Exception { Config config = new Config(); /** * 阿里雲帳號AccessKey擁有所有API的存取權限,建議您使用RAM使用者進行API訪問或日常營運。 * 常見擷取環境變數方式: * 方式一: * 擷取RAM使用者AccessKeyID:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 擷取RAM使用者AccessKeySecret:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); * 方式二: * 擷取RAM使用者AccessKey ID:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 擷取RAM使用者AccessKey Secret:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ config.setAccessKeyId("建議從環境變數中擷取RAM使用者AccessKey ID"); config.setAccessKeySecret("建議從環境變數中擷取RAM使用者AccessKey Secret"); // 接入地區和地址請根據實際情況修改。 config.setRegionId("ap-southeast-1"); config.setEndpoint("green-cip.ap-southeast-1.aliyuncs.com"); // 串連時逾時時間,單位毫秒(ms)。 config.setReadTimeout(6000); // 讀取時逾時時間,單位毫秒(ms)。 config.setConnectTimeout(3000); // 注意:此處執行個體化的client儘可能重複使用,提升檢測效能。避免重複建立串連。 Client client = new Client(config); JSONObject serviceParameters = new JSONObject(); // 提交任務時返回的taskId。 serviceParameters.put("taskId", "檢測任務返回的taskID"); VoiceModerationResultRequest voiceModerationResultRequest = new VoiceModerationResultRequest(); // 檢測類型:audio_multilingual_global 音頻媒體多語言服務。 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(); } } }
對本地音頻進行檢測
使用情境
當您需要審核的音頻在本地機器且無公網訪問連結,您可以將音頻上傳到Alibaba Content Security Service提供的Object Storage Service Bucket中,音頻審核2.0版服務可直接存取Object Storage Service,擷取到音頻內容後進行審核。
在dependencies中添加如下依賴:
<dependency> <groupId>com.aliyun</groupId> <artifactId>green20220302</artifactId> <version>2.21.1</version> </dependency>安裝OSS SDK:
<dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>3.16.3</version> </dependency>接入Java SDK。
提交語音檢測任務程式碼範例
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 { /**服務是否部署在vpc上*/ public static boolean isVPC = false; /**檔案上傳token endpoint->token*/ public static Map<String, DescribeUploadTokenResponseBody.DescribeUploadTokenResponseBodyData> tokenMap = new HashMap<>(); /**上傳檔案請求用戶端*/ public static OSS ossClient = null; /** * 建立請求用戶端 * * @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); // 接入地區和地址請根據實際情況修改 config.setEndpoint(endpoint); return new Client(config); } /** * 建立上傳檔案請求用戶端 * * @param tokenData * @param isVPC */ public static void getOssClient(DescribeUploadTokenResponseBody.DescribeUploadTokenResponseBodyData tokenData, boolean isVPC) { //注意,此處執行個體化的client請儘可能重複使用,避免重複建立串連,提升檢測效能。 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()); } } /** * 上傳檔案 * * @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 { //注意,此處執行個體化的client請儘可能重複使用,避免重複建立串連,提升檢測效能。 Client client = createClient(accessKeyId, accessKeySecret, endpoint); RuntimeOptions runtime = new RuntimeOptions(); //本地檔案的完整路徑,例如D:/localPath/exampleFile.mp3。 String filePath = "D:/localPath/exampleFile.mp3"; //擷取檔案上傳token if (tokenMap.get(endpoint) == null || tokenMap.get(endpoint).expiration <= System.currentTimeMillis() / 1000) { DescribeUploadTokenResponse tokenResponse = client.describeUploadToken(); tokenMap.put(endpoint, tokenResponse.getBody().getData()); } //上傳檔案請求用戶端 getOssClient(tokenMap.get(endpoint), isVPC); //上傳檔案 String objectName = uploadFile(filePath, tokenMap.get(endpoint)); // 檢測參數構造。 Map<String, String> serviceParameters = new HashMap<>(); //檔案上傳資訊 serviceParameters.put("ossBucketName", tokenMap.get(endpoint).getBucketName()); serviceParameters.put("ossObjectName", objectName); serviceParameters.put("dataId", UUID.randomUUID().toString()); VoiceModerationRequest request = new VoiceModerationRequest(); // 檢測類型:audio_media_detection表示語音檔案檢測。 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 { /** * 阿里雲帳號AccessKey擁有所有API的存取權限,建議您使用RAM使用者進行API訪問或日常營運。 * 常見擷取環境變數方式: * 方式一: * 擷取RAM使用者AccessKey ID:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 擷取RAM使用者AccessKey Secret:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); * 方式二: * 擷取RAM使用者AccessKey ID:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 擷取RAM使用者AccessKey Secret:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ String accessKeyId = "建議從環境變數中擷取RAM使用者AccessKey ID"; String accessKeySecret = "建議從環境變數中擷取RAM使用者AccessKey Secret"; // 接入地區和地址請根據實際情況修改。 VoiceModerationResponse response = invokeFunction(accessKeyId, accessKeySecret, "green-cip.ap-southeast-1.aliyuncs.com"); try { // 列印檢測結果。 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(); /** * 阿里雲帳號AccessKey擁有所有API的存取權限,建議您使用RAM使用者進行API訪問或日常營運。 * 常見擷取環境變數方式: * 方式一: * 擷取RAM使用者AccessKeyID:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 擷取RAM使用者AccessKeySecret:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); * 方式二: * 擷取RAM使用者AccessKey ID:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 擷取RAM使用者AccessKey Secret:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ config.setAccessKeyId("建議從環境變數中擷取RAM使用者AccessKey ID"); config.setAccessKeySecret("建議從環境變數中擷取RAM使用者AccessKey Secret"); // 接入地區和地址請根據實際情況修改。 config.setRegionId("ap-southeast-1"); config.setEndpoint("green-cip.ap-southeast-1.aliyuncs.com"); // 串連時逾時時間,單位毫秒(ms)。 config.setReadTimeout(6000); // 讀取時逾時時間,單位毫秒(ms)。 config.setConnectTimeout(3000); // 注意:此處執行個體化的client儘可能重複使用,提升檢測效能。避免重複建立串連。 Client client = new Client(config); JSONObject serviceParameters = new JSONObject(); // 提交任務時返回的taskId。 serviceParameters.put("taskId", "檢測任務返回的taskID"); VoiceModerationResultRequest voiceModerationResultRequest = new VoiceModerationResultRequest(); // 檢測類型:audio_multilingual_global 音頻媒體多語言服務。 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(); } } }
對OSS音頻進行檢測
使用情境
如果您需要審核的音頻檔案已經儲存在阿里雲Object Storage Service中,您可授權建立服務角色,允許Alibaba Content Security Service服務訪問Object Storage Service。音頻審核2.0版服務會通過服務角色擷取到Object Storage Service的檔案後進行審核。訪問雲資源訪問授權頁面建立服務角色。
在dependencies中添加如下依賴:
<dependency> <groupId>com.aliyun</groupId> <artifactId>green20220302</artifactId> <version>2.21.1</version> </dependency>接入Java SDK。
提交語音檢測任務程式碼範例
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.aliyun.green20220302.Client; import com.aliyun.green20220302.models.VoiceModerationRequest; import com.aliyun.green20220302.models.VoiceModerationResponse; import com.aliyun.green20220302.models.VoiceModerationResponseBody; import com.aliyun.teaopenapi.models.Config; public class OssVoiceModerationDemo { public static void main(String[] args) throws Exception { Config config = new Config(); /** * 阿里雲帳號AccessKey擁有所有API的存取權限,建議您使用RAM使用者進行API訪問或日常營運。 * 常見擷取環境變數方式: * 方式一: * 擷取RAM使用者AccessKey ID:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 擷取RAM使用者AccessKey Secret:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); * 方式二: * 擷取RAM使用者AccessKey ID:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 擷取RAM使用者AccessKey Secret:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ config.setAccessKeyId("建議從環境變數中擷取RAM使用者AccessKey ID"); config.setAccessKeySecret("建議從環境變數中擷取RAM使用者AccessKey Secret"); // 接入地區和地址請根據實際情況修改。 config.setRegionId("ap-southeast-1"); config.setEndpoint("green-cip.ap-southeast-1.aliyuncs.com"); // 串連時逾時時間,單位毫秒(ms)。 config.setReadTimeout(6000); // 讀取時逾時時間,單位毫秒(ms)。 config.setConnectTimeout(3000); // 注意:此處執行個體化的client儘可能重複使用,提升檢測效能。避免重複建立串連。 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(); // 檢測類型:audio_media_detection表示語音檔案檢測,live_stream_detection表示語音直播流檢測。 voiceModerationRequest.setService("audio_media_detection"); voiceModerationRequest.setServiceParameters(serviceParameters.toJSONString()); try { VoiceModerationResponse response = client.voiceModeration(voiceModerationRequest); if (response.getStatusCode() == 200) { VoiceModerationResponseBody result = response.getBody(); System.out.println(JSON.toJSONString(result)); System.out.println("requestId = " + result.getRequestId()); System.out.println("code = " + result.getCode()); System.out.println("msg = " + result.getMessage()); Integer code = result.getCode(); if (200 == code) { VoiceModerationResponseBody.VoiceModerationResponseBodyData data = result.getData(); System.out.println("taskId = [" + data.getTaskId() + "]"); } else { System.out.println("voice moderation not success. code:" + code); } } else { System.out.println("response not success. status:" + response.getStatusCode()); } } catch (Exception e) { e.printStackTrace(); } } }擷取語音檢測任務程式碼範例
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.aliyun.green20220302.Client; import com.aliyun.green20220302.models.VoiceModerationResultRequest; import com.aliyun.green20220302.models.VoiceModerationResultResponse; import com.aliyun.green20220302.models.VoiceModerationResultResponseBody; import com.aliyun.teaopenapi.models.Config; public class VoiceModerationResultDemo { public static void main(String[] args) throws Exception { Config config = new Config(); /** * 阿里雲帳號AccessKey擁有所有API的存取權限,建議您使用RAM使用者進行API訪問或日常營運。 * 常見擷取環境變數方式: * 方式一: * 擷取RAM使用者AccessKeyID:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 擷取RAM使用者AccessKeySecret:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); * 方式二: * 擷取RAM使用者AccessKey ID:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 擷取RAM使用者AccessKey Secret:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ config.setAccessKeyId("建議從環境變數中擷取RAM使用者AccessKey ID"); config.setAccessKeySecret("建議從環境變數中擷取RAM使用者AccessKey Secret"); // 接入地區和地址請根據實際情況修改。 config.setRegionId("ap-southeast-1"); config.setEndpoint("green-cip.ap-southeast-1.aliyuncs.com"); // 串連時逾時時間,單位毫秒(ms)。 config.setReadTimeout(6000); // 讀取時逾時時間,單位毫秒(ms)。 config.setConnectTimeout(3000); // 注意:此處執行個體化的client儘可能重複使用,提升檢測效能。避免重複建立串連。 Client client = new Client(config); JSONObject serviceParameters = new JSONObject(); // 提交任務時返回的taskId。 serviceParameters.put("taskId", "檢測任務返回的taskID"); VoiceModerationResultRequest voiceModerationResultRequest = new VoiceModerationResultRequest(); // 檢測類型:audio_multilingual_global 音頻媒體多語言服務。 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(); } } }
Python SDK
支援Python 3.6及以上版本。
原始代碼,請參見Python SDK源碼。
支援以下三種類型的音頻檢測。
對公網可訪問音頻進行檢測
使用情境
當需要審核的音頻可通過公網連結訪問時,音頻審核2.0版服務可通過音頻URL擷取檔案後進行審核。
執行如下命令引入相關依賴。
pip install alibabacloud_green20220302==2.22.0接入Python SDK。
提交語音檢測任務程式碼範例
# coding=utf-8 # python version >= 3.6 from alibabacloud_green20220302.client import Client from alibabacloud_green20220302 import models from alibabacloud_tea_openapi.models import Config import json config = Config( # 阿里雲帳號AccessKey擁有所有API的存取權限,建議您使用RAM使用者進行API訪問或日常營運。 # 強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。 # 常見擷取環境變數方式: # 擷取RAM使用者AccessKey ID:os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'] # 擷取RAM使用者AccessKey Secret:os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] access_key_id='建議從環境變數中擷取RAM使用者AccessKey ID', access_key_secret='建議從環境變數中擷取RAM使用者AccessKey Secret', # 連線逾時時間,單位毫秒(ms)。 connect_timeout=10000, # 讀逾時時間,單位毫秒(ms)。 read_timeout=3000, region_id='ap-southeast-1', endpoint='green-cip.ap-southeast-1.aliyuncs.com' ) # 注意:此處執行個體化的client儘可能重複使用,提升檢測效能。避免重複建立串連。 clt = Client(config) serviceParameters = { 'url': 'https://xxxx/xxx/sample.wav', } voiceModerationRequest = models.VoiceModerationRequest( # 檢測類型:audio_multilingual_global 音頻媒體多語言服務。 service='audio_multilingual_global', service_parameters=json.dumps(serviceParameters) ) try: response = clt.voice_moderation(voiceModerationRequest) if response.status_code == 200: # 調用成功。 # 擷取審核結果。 result = response.body print('response success. result:{}'.format(result)) else: print('response not success. status:{} ,result:{}'.format(response.status_code, response)) except Exception as err: print(err)擷取語音檢測任務結果
# coding=utf-8 # python version >= 3.6 from alibabacloud_green20220302.client import Client from alibabacloud_green20220302 import models from alibabacloud_tea_openapi.models import Config import json config = Config( # 阿里雲帳號AccessKey擁有所有API的存取權限,建議您使用RAM使用者進行API訪問或日常營運。 # 強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。 # 常見擷取環境變數方式: # 擷取RAM使用者AccessKey ID:os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'] # 擷取RAM使用者AccessKey Secret:os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] access_key_id='建議從環境變數中擷取RAM使用者AccessKey ID', access_key_secret='建議從環境變數中擷取RAM使用者AccessKey Secret', # 連線逾時時間,單位毫秒(ms)。 connect_timeout=10000, # 讀逾時時間,單位毫秒(ms)。 read_timeout=3000, region_id='ap-southeast-1', endpoint='green-cip.ap-southeast-1.aliyuncs.com' ) # 注意:此處執行個體化的client儘可能重複使用,提升檢測效能。避免重複建立串連。 clt = Client(config) # 提交任務時返回的taskId。 serviceParameters = { "taskId": '檢測任務返回的taskId' } voiceModerationResultRequest = models.VoiceModerationResultRequest( # 檢測類型 audio_multilingual_global 音頻媒體多語言服務。 service='audio_multilingual_global', service_parameters=json.dumps(serviceParameters) ) try: response = clt.voice_moderation_result(voiceModerationResultRequest) if response.status_code == 200: # 調用成功。 # 擷取審核結果。 result = response.body print('response success. result:{}'.format(result)) else: print('response not success. status:{} ,result:{}'.format(response.status_code, response)) except Exception as err: print(err)取消直播流檢測任務
對本地音頻進行檢測
使用情境
當您需要審核的音頻在本地機器且無公網訪問連結,您可以將音頻上傳到Alibaba Content Security Service提供的Object Storage Service Bucket中,音頻審核2.0版服務可直接存取Object Storage Service,擷取到音頻內容後進行審核。
執行如下命令引入相關依賴。
pip install alibabacloud_green20220302==2.22.0安裝OSS SDK:
pip install oss2接入Python SDK。
提交語音檢測任務程式碼範例
# coding=utf-8 # python version >= 3.6 from alibabacloud_green20220302.client import Client from alibabacloud_green20220302 import models from alibabacloud_tea_openapi.models import Config from alibabacloud_tea_util import models as util_models import json import uuid import oss2 import time import os # 服務是否部署在vpc上 is_vpc = False # 檔案上傳token endpoint->token token_dict = 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, # 設定http代理。 # http_proxy='http://10.10.xx.xx:xxxx', # 設定https代理。 # https_proxy='https://10.10.xx.xx:xxxx', # 接入地區和地址請根據實際情況修改。 endpoint=endpoint ) return Client(config) # 建立檔案上傳用戶端 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 # 注意:此處執行個體化的bucket請儘可能重複使用,避免重複建立串連,提升檢測效能。 bucket = oss2.Bucket(auth, end_point, upload_token.bucket_name) # 上傳檔案 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): # 注意:此處執行個體化的client請儘可能重複使用,避免重複建立串連,提升檢測效能。 client = create_client(access_key_id, access_key_secret, endpoint) # 建立RuntimeObject執行個體並設定運行參數。 runtime = util_models.RuntimeOptions() # 本地檔案的完整路徑,例如D:\localPath\exampleFile.mp3 file_path = 'D:\localPath\exampleFile.mp3' # 擷取檔案上傳token 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 # 上傳檔案 object_name = upload_file(file_path, upload_token) # 檢測參數構造。 service_parameters = { # 待檢測檔案所在bucket名稱。 'ossBucketName': upload_token.bucket_name, # 待檢測檔案。 'ossObjectName': object_name, # 資料唯一標識 'dataId': str(uuid.uuid4()) } voice_moderation_request = models.VoiceModerationRequest( # 音頻檢測service:Alibaba Content Security Service控制台音頻增強版規則配置的serviceCode,樣本: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__': # 阿里雲帳號AccessKey擁有所有API的存取權限,建議您使用RAM使用者進行API訪問或日常營運。 # 強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。 # 常見擷取環境變數方式: # 擷取RAM使用者AccessKey ID:os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'] # 擷取RAM使用者AccessKey Secret:os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] access_key_id = '建議從環境變數中擷取RAM使用者AccessKey ID' access_key_secret = '建議從環境變數中擷取RAM使用者AccessKey Secret' # 接入地區和地址請根據實際情況修改。 response = invoke_function(access_key_id, access_key_secret, 'green-cip.ap-southeast-1.aliyuncs.com') if response.status_code == 200: # 調用成功。 # 擷取審核結果。 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( # 阿里雲帳號AccessKey擁有所有API的存取權限,建議您使用RAM使用者進行API訪問或日常營運。 # 強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。 # 常見擷取環境變數方式: # 擷取RAM使用者AccessKey ID:os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'] # 擷取RAM使用者AccessKey Secret:os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] access_key_id='建議從環境變數中擷取RAM使用者AccessKey ID', access_key_secret='建議從環境變數中擷取RAM使用者AccessKey Secret', # 連線逾時時間,單位毫秒(ms)。 connect_timeout=10000, # 讀逾時時間,單位毫秒(ms)。 read_timeout=3000, region_id='ap-southeast-1', endpoint='green-cip.ap-southeast-1.aliyuncs.com' ) # 注意:此處執行個體化的client儘可能重複使用,提升檢測效能。避免重複建立串連。 clt = Client(config) # 提交任務時返回的taskId。 serviceParameters = { "taskId": '檢測任務返回的taskId' } voiceModerationResultRequest = models.VoiceModerationResultRequest( # 檢測類型 audio_multilingual_global 音頻媒體多語言服務。 service='audio_multilingual_global', service_parameters=json.dumps(serviceParameters) ) try: response = clt.voice_moderation_result(voiceModerationResultRequest) if response.status_code == 200: # 調用成功。 # 擷取審核結果。 result = response.body print('response success. result:{}'.format(result)) else: print('response not success. status:{} ,result:{}'.format(response.status_code, response)) except Exception as err: print(err)取消直播流檢測任務
對OSS音頻進行檢測
使用情境
如果您需要審核的音頻檔案已經儲存在阿里雲Object Storage Service中,您可授權建立服務角色,允許Alibaba Content Security Service服務訪問Object Storage Service。音頻審核2.0版服務會通過服務角色擷取到Object Storage Service的檔案後進行審核。訪問雲資源訪問授權頁面建立服務角色。
執行如下命令引入相關依賴。
pip install alibabacloud_green20220302==2.22.0接入Python SDK。
提交語音檢測任務程式碼範例
# coding=utf-8 # python version >= 3.6 from alibabacloud_green20220302.client import Client from alibabacloud_green20220302 import models from alibabacloud_tea_openapi.models import Config import json config = Config( # 阿里雲帳號AccessKey擁有所有API的存取權限,建議您使用RAM使用者進行API訪問或日常營運。 # 強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。 # 常見擷取環境變數方式: # 擷取RAM使用者AccessKey ID:os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'] # 擷取RAM使用者AccessKey Secret:os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] access_key_id='建議從環境變數中擷取RAM使用者AccessKey ID', access_key_secret='建議從環境變數中擷取RAM使用者AccessKey Secret', # 連線逾時時間,單位毫秒(ms)。 connect_timeout=10000, # 讀逾時時間,單位毫秒(ms)。 read_timeout=3000, region_id='ap-southeast-1', endpoint='green-cip.ap-southeast-1.aliyuncs.com' ) # 注意:此處執行個體化的client儘可能重複使用,提升檢測效能。避免重複建立串連。 clt = Client(config) serviceParameters = { 'ossBucketName': 'bucket_01', 'ossObjectName': 'test/test.mp3', 'ossRegionId': 'cn-shanghai' } voiceModerationRequest = models.VoiceModerationRequest( # 檢測類型:audio_multilingual_global 音頻媒體多語言服務。 service='audio_multilingual_global', service_parameters=json.dumps(serviceParameters) ) try: response = clt.voice_moderation(voiceModerationRequest) if response.status_code == 200: # 調用成功。 # 擷取審核結果。 result = response.body print('response success. result:{}'.format(result)) else: print('response not success. status:{} ,result:{}'.format(response.status_code, response)) except Exception as err: print(err)擷取語音檢測任務結果
# coding=utf-8 # python version >= 3.6 from alibabacloud_green20220302.client import Client from alibabacloud_green20220302 import models from alibabacloud_tea_openapi.models import Config import json config = Config( # 阿里雲帳號AccessKey擁有所有API的存取權限,建議您使用RAM使用者進行API訪問或日常營運。 # 強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。 # 常見擷取環境變數方式: # 擷取RAM使用者AccessKey ID:os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'] # 擷取RAM使用者AccessKey Secret:os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] access_key_id='建議從環境變數中擷取RAM使用者AccessKey ID', access_key_secret='建議從環境變數中擷取RAM使用者AccessKey Secret', # 連線逾時時間,單位毫秒(ms)。 connect_timeout=10000, # 讀逾時時間,單位毫秒(ms)。 read_timeout=3000, region_id='ap-southeast-1', endpoint='green-cip.ap-southeast-1.aliyuncs.com' ) # 注意:此處執行個體化的client儘可能重複使用,提升檢測效能。避免重複建立串連。 clt = Client(config) # 提交任務時返回的taskId。 serviceParameters = { "taskId": '檢測任務返回的taskId' } voiceModerationResultRequest = models.VoiceModerationResultRequest( # 檢測類型 audio_multilingual_global 音頻媒體多語言服務。 service='audio_multilingual_global', service_parameters=json.dumps(serviceParameters) ) try: response = clt.voice_moderation_result(voiceModerationResultRequest) if response.status_code == 200: # 調用成功。 # 擷取審核結果。 result = response.body print('response success. result:{}'.format(result)) else: print('response not success. status:{} ,result:{}'.format(response.status_code, response)) except Exception as err: print(err)取消直播流檢測任務
PHP SDK
支援PHP 5.6及以上版本。
原始代碼,請參見PHP SDK源碼。
支援以下三種類型的音頻檢測。
對公網可訪問音頻進行檢測
使用情境
當需要審核的音頻可通過公網連結訪問時,音頻審核2.0版服務可通過音頻URL擷取檔案後進行審核。
執行如下命令引入相關依賴。
composer require alibabacloud/green-20220302 2.22.0接入PHP SDK。
提交語音檢測任務程式碼範例
<?php require('vendor/autoload.php'); use AlibabaCloud\SDK\Green\V20220302\Models\VoiceModerationRequest; use AlibabaCloud\Tea\Exception\TeaUnableRetryError; use Darabonba\OpenApi\Models\Config; use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions; use AlibabaCloud\SDK\Green\V20220302\Green; $config = new Config([]); /** * 阿里雲帳號AccessKey擁有所有API的存取權限,建議您使用RAM使用者進行API訪問或日常營運。 * 強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。 * 常見擷取環境變數方式: * 擷取RAM使用者AccessKey ID:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 擷取RAM使用者AccessKey Secret:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ $config->accessKeyId = "建議從環境變數中擷取RAM使用者AccessKey ID"; $config->accessKeySecret = "建議從環境變數中擷取RAM使用者AccessKey Secret"; // 接入地區和地址請根據實際情況修改。 $config->regionId = "ap-southeast-1"; $config->endpoint = "green-cip.ap-southeast-1.aliyuncs.com"; // 設定http代理。 // $config->httpProxy = "http://10.10.xx.xx:xxxx"; // 設定https代理。 // $config->httpsProxy = "http://10.10.xx.xx:xxxx"; // 注意:此處執行個體化的client儘可能重複使用,提升檢測效能。避免重複建立串連。 $client = new Green($config); $request = new VoiceModerationRequest(); // 檢測類型:audio_multilingual_global 音頻媒體多語言服務。 $request->service = "audio_multilingual_global"; $serviceParameters = array('url' => 'https://xxxx/xxx/sample.wav'); $request->serviceParameters = json_encode($serviceParameters); $runtime = new RuntimeOptions(); $runtime->readTimeout = 6000; $runtime->connectTimeout = 3000; try { $response = $client->voiceModeration($request, $runtime); print_r($response->body); if (200 == $response->statusCode) { $body = $response->body; print_r("requestId = " . $body->requestId); print_r("code = " . $body->code); print_r("message = " . $body->message); if (200 == $body->code) { $data = $body->data; print_r("taskId = " . $data->taskId); } else { print_r("voice moderation not success. code:" . $body->code); } } else { print_r("response not success. code:" . $response->statusCode); } } catch (TeaUnableRetryError $e) { var_dump($e->getMessage()); var_dump($e->getErrorInfo()); var_dump($e->getLastException()); var_dump($e->getLastRequest()); }擷取語音檢測任務結果程式碼範例
<?php require('vendor/autoload.php'); use AlibabaCloud\SDK\Green\V20220302\Models\VoiceModerationResultRequest; use AlibabaCloud\Tea\Exception\TeaUnableRetryError; use Darabonba\OpenApi\Models\Config; use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions; use AlibabaCloud\SDK\Green\V20220302\Green; $config = new Config([]); /** * 阿里雲帳號AccessKey擁有所有API的存取權限,建議您使用RAM使用者進行API訪問或日常營運。 * 強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。 * 常見擷取環境變數方式: * 擷取RAM使用者AccessKey ID:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 擷取RAM使用者AccessKey Secret:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ $config->accessKeyId = "建議從環境變數中擷取RAM使用者AccessKey ID"; $config->accessKeySecret = "建議從環境變數中擷取RAM使用者AccessKey Secret"; // 接入地區和地址請根據實際情況修改。 $config->regionId = "ap-southeast-1"; $config->endpoint = "green-cip.ap-southeast-1.aliyuncs.com"; // 設定http代理。 // $config->httpProxy = "http://10.10.xx.xx:xxxx"; // 設定https代理。 // $config->httpsProxy = "http://10.10.xx.xx:xxxx"; // 注意:此處執行個體化的client儘可能重複使用,提升檢測效能。避免重複建立串連。 $client = new Green($config); $request = new VoiceModerationResultRequest(); // 檢測類型:audio_multilingual_global 音頻媒體多語言服務。 $request->service = "audio_multilingual_global"; // 提交任務時返回的taskId。 $serviceParameters = array('taskId' => 'au_f_O5z5iaIis3iI0X2oNYj7qa-1x****'); $request->serviceParameters = json_encode($serviceParameters); $runtime = new RuntimeOptions(); $runtime->readTimeout = 6000; $runtime->connectTimeout = 3000; try { $response = $client->voiceModerationResult($request, $runtime); print_r($response->body); if (200 == $response->statusCode) { $body = $response->body; print_r("requestId = " . $body->requestId); print_r("code = " . $body->code); print_r("message = " . $body->message); if (200 == $body->code) { $data = $body->data; print_r("liveId = " . $data->liveId); print_r("sliceDetails = " . $data->sliceDetails); print_r("riskLevel = " . $data->riskLevel); 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()); }
對本地音頻進行檢測
使用情境
當您需要審核的音頻在本地機器且無公網訪問連結,您可以將音頻上傳到Alibaba Content Security Service提供的Object Storage Service Bucket中,音頻審核2.0版服務可直接存取Object Storage Service,擷取到音頻內容後進行審核。
執行如下命令引入相關依賴。
composer require alibabacloud/green-20220302 2.22.0安裝OSS SDK:
composer require aliyuncs/oss-sdk-php接入PHP SDK。
提交語音檢測任務程式碼範例
<?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; // 服務是否部署在VPC上 $isVPC = false; // 檔案上傳token $tokenArray = array(); // 檔案上傳請求用戶端 $ossClient = null; /** * 建立請求用戶端 * @param $accessKeyId * @param $accessKeySecret * @param $endpoint * @return Green */ function create_client($accessKeyId, $accessKeySecret, $endpoint): Green { $config = new Config([ "accessKeyId" => $accessKeyId, "accessKeySecret" => $accessKeySecret, // 設定HTTP代理。 // "httpProxy" => "http://10.10.xx.xx:xxxx", // 設定HTTPS代理。 // "httpsProxy" => "https://10.10.xx.xx:xxxx", "endpoint" => $endpoint, ]); return new Green($config); } /** * 建立檔案上傳用戶端 * @param $tokenData * @return void */ function create_upload_client($tokenData): void { global $isVPC; global $ossClient; // 注意:此處執行個體化的client請儘可能重複使用,避免重複建立串連,提升檢測效能。 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); } } /** * 上傳檔案 * @param $fileName * @param $tokenData * @return string * @throws \OSS\Core\OssException */ function upload_file($filePath, $tokenData): string { global $ossClient; //初始化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(); } //上傳檔案 $ossClient->uploadFile($tokenData->bucketName, $objectName, $filePath); return $objectName; } /** * 提交檢測任務 * @param $accessKeyId * @param $accessKeySecret * @param $endpoint * @return VoiceModerationResponse * @throws \OSS\Core\OssException */ function invoke($accessKeyId, $accessKeySecret, $endpoint): VoiceModerationResponse { global $tokenArray; // 注意:此處執行個體化的client請儘可能重複使用,避免重複建立串連,提升檢測效能。 $client = create_client($accessKeyId, $accessKeySecret, $endpoint); // 建立RuntimeObject執行個體並設定運行參數。 $runtime = new RuntimeOptions([]); // 本地檔案的完整路徑,例如D:\\localPath\\exampleFile.mp3。 $filePath = "D:\\localPath\\exampleFile.mp3"; //擷取檔案上傳token if (!isset($tokenArray[$endpoint]) || $tokenArray[$endpoint]->expiration <= time()) { $token = $client->describeUploadToken(); $tokenArray[$endpoint] = $token->body->data; } // 上傳檔案 $objectName = upload_file($filePath, $tokenArray[$endpoint]); // 檢測參數構造。 $request = new VoiceModerationRequest(); // 檢測類型:audio_multilingual_global 音頻媒體多語言服務。 $request->service = "audio_multilingual_global"; // 待檢測音頻Oss資訊。 $serviceParameters = array( 'ossObjectName' => $objectName, 'ossBucketName' => $tokenArray[$endpoint]->bucketName, 'dataId' => uniqid()); $request->serviceParameters = json_encode($serviceParameters); // 提交檢測 return $client->voiceModerationWithOptions($request, $runtime); } /** * 阿里雲帳號AccessKey擁有所有API的存取權限,建議您使用RAM使用者進行API訪問或日常營運。 * 強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。 * 常見擷取環境變數方式: * 擷取RAM使用者AccessKey ID:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 擷取RAM使用者AccessKey Secret:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ $accessKeyId = '建議從環境變數中擷取RAM使用者AccessKey ID'; $accessKeySecret = '建議從環境變數中擷取RAM使用者AccessKey Secret'; // 接入地區和地址請根據實際情況修改 $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()); }擷取語音檢測任務結果程式碼範例
<?php require('vendor/autoload.php'); use AlibabaCloud\SDK\Green\V20220302\Models\VoiceModerationResultRequest; use AlibabaCloud\Tea\Exception\TeaUnableRetryError; use Darabonba\OpenApi\Models\Config; use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions; use AlibabaCloud\SDK\Green\V20220302\Green; $config = new Config([]); /** * 阿里雲帳號AccessKey擁有所有API的存取權限,建議您使用RAM使用者進行API訪問或日常營運。 * 強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。 * 常見擷取環境變數方式: * 擷取RAM使用者AccessKey ID:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 擷取RAM使用者AccessKey Secret:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ $config->accessKeyId = "建議從環境變數中擷取RAM使用者AccessKey ID"; $config->accessKeySecret = "建議從環境變數中擷取RAM使用者AccessKey Secret"; // 接入地區和地址請根據實際情況修改。 $config->regionId = "ap-southeast-1"; $config->endpoint = "green-cip.ap-southeast-1.aliyuncs.com"; // 設定http代理。 // $config->httpProxy = "http://10.10.xx.xx:xxxx"; // 設定https代理。 // $config->httpsProxy = "http://10.10.xx.xx:xxxx"; // 注意:此處執行個體化的client儘可能重複使用,提升檢測效能。避免重複建立串連。 $client = new Green($config); $request = new VoiceModerationResultRequest(); // 檢測類型:audio_multilingual_global 音頻媒體多語言服務。 $request->service = "audio_multilingual_global"; // 提交任務時返回的taskId。 $serviceParameters = array('taskId' => 'au_f_O5z5iaIis3iI0X2oNYj7qa-1x****'); $request->serviceParameters = json_encode($serviceParameters); $runtime = new RuntimeOptions(); $runtime->readTimeout = 6000; $runtime->connectTimeout = 3000; try { $response = $client->voiceModerationResult($request, $runtime); print_r($response->body); if (200 == $response->statusCode) { $body = $response->body; print_r("requestId = " . $body->requestId); print_r("code = " . $body->code); print_r("message = " . $body->message); if (200 == $body->code) { $data = $body->data; print_r("liveId = " . $data->liveId); print_r("sliceDetails = " . $data->sliceDetails); print_r("taskId = " . $data->taskId); print_r("url = " . $data->url); } else { print_r("voice moderation result not success. code:" . $body->code); } } else { print_r("response not success. code:" . $response->statusCode); } } catch (TeaUnableRetryError $e) { var_dump($e->getMessage()); var_dump($e->getErrorInfo()); var_dump($e->getLastException()); var_dump($e->getLastRequest()); }
對OSS音頻進行檢測
使用情境
如果您需要審核的音頻檔案已經儲存在阿里雲Object Storage Service中,您可授權建立服務角色,允許Alibaba Content Security Service服務訪問Object Storage Service。音頻審核2.0版服務會通過服務角色擷取到Object Storage Service的檔案後進行審核。訪問雲資源訪問授權頁面建立服務角色。
執行如下命令引入相關依賴。
composer require alibabacloud/green-20220302 2.22.0接入PHP SDK。
提交語音檢測任務程式碼範例
<?php require('vendor/autoload.php'); use AlibabaCloud\SDK\Green\V20220302\Models\VoiceModerationRequest; use AlibabaCloud\Tea\Exception\TeaUnableRetryError; use Darabonba\OpenApi\Models\Config; use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions; use AlibabaCloud\SDK\Green\V20220302\Green; $config = new Config([]); /** * 阿里雲帳號AccessKey擁有所有API的存取權限,建議您使用RAM使用者進行API訪問或日常營運。 * 強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。 * 常見擷取環境變數方式: * 擷取RAM使用者AccessKey ID:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 擷取RAM使用者AccessKey Secret:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ $config->accessKeyId = "建議從環境變數中擷取RAM使用者AccessKey ID"; $config->accessKeySecret = "建議從環境變數中擷取RAM使用者AccessKey Secret"; // 接入地區和地址請根據實際情況修改。 $config->regionId = "ap-southeast-1"; $config->endpoint = "green-cip.ap-southeast-1.aliyuncs.com"; // 設定http代理。 // $config->httpProxy = "http://10.10.xx.xx:xxxx"; // 設定https代理。 // $config->httpsProxy = "http://10.10.xx.xx:xxxx"; // 注意:此處執行個體化的client儘可能重複使用,提升檢測效能。避免重複建立串連。 $client = new Green($config); $request = new VoiceModerationRequest(); // 檢測類型:audio_multilingual_global 音頻媒體多語言服務。 $request->service = "audio_multilingual_global"; $serviceParameters = array( // 待檢測檔案。 樣本:voice/001.wav 'ossObjectName' => 'voice/001.wav', // 待檢測檔案所在bucket的地區。 樣本:cn-shanghai 'ossRegionId' => 'cn-shanghai', // 待檢測檔案所在bucket名稱。樣本:bucket001 'ossBucketName' => 'bucket001', // 資料唯一標識。 '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([]); /** * 阿里雲帳號AccessKey擁有所有API的存取權限,建議您使用RAM使用者進行API訪問或日常營運。 * 強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。 * 常見擷取環境變數方式: * 擷取RAM使用者AccessKey ID:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 擷取RAM使用者AccessKey Secret:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ $config->accessKeyId = "建議從環境變數中擷取RAM使用者AccessKey ID"; $config->accessKeySecret = "建議從環境變數中擷取RAM使用者AccessKey Secret"; // 接入地區和地址請根據實際情況修改。 $config->regionId = "ap-southeast-1"; $config->endpoint = "green-cip.ap-southeast-1.aliyuncs.com"; // 設定http代理。 // $config->httpProxy = "http://10.10.xx.xx:xxxx"; // 設定https代理。 // $config->httpsProxy = "http://10.10.xx.xx:xxxx"; // 注意:此處執行個體化的client儘可能重複使用,提升檢測效能。避免重複建立串連。 $client = new Green($config); $request = new VoiceModerationResultRequest(); // 檢測類型:audio_multilingual_global 音頻媒體多語言服務。 $request->service = "audio_multilingual_global"; // 提交任務時返回的taskId。 $serviceParameters = array('taskId' => 'au_f_O5z5iaIis3iI0X2oNYj7qa-1x****'); $request->serviceParameters = json_encode($serviceParameters); $runtime = new RuntimeOptions(); $runtime->readTimeout = 6000; $runtime->connectTimeout = 3000; try { $response = $client->voiceModerationResult($request, $runtime); print_r($response->body); if (200 == $response->statusCode) { $body = $response->body; print_r("requestId = " . $body->requestId); print_r("code = " . $body->code); print_r("message = " . $body->message); if (200 == $body->code) { $data = $body->data; print_r("liveId = " . $data->liveId); print_r("sliceDetails = " . $data->sliceDetails); print_r("taskId = " . $data->taskId); print_r("url = " . $data->url); } else { print_r("voice moderation result not success. code:" . $body->code); } } else { print_r("response not success. code:" . $response->statusCode); } } catch (TeaUnableRetryError $e) { var_dump($e->getMessage()); var_dump($e->getErrorInfo()); var_dump($e->getLastException()); var_dump($e->getLastRequest()); }
Go SDK
支援以下三種類型的音頻檢測。
對公網可訪問音頻進行檢測
使用情境
當需要審核的音頻可通過公網連結訪問時,音頻審核2.0版服務可通過音頻URL擷取檔案後進行審核。
執行如下命令引入相關依賴。
go get github.com/alibabacloud-go/green-20220302/v2接入Go SDK。
提交語音檢測任務程式碼範例
package main import ( "encoding/json" "fmt" openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client" green "github.com/alibabacloud-go/green-20220302/client" "github.com/alibabacloud-go/tea/tea" "net/http" ) func main() { config := &openapi.Config{ /** * 阿里雲帳號AccessKey擁有所有API的存取權限,建議您使用RAM使用者進行API訪問或日常營運。 * 強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。 * 常見擷取環境變數方式: * 擷取RAM使用者AccessKey ID:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID") * 擷取RAM使用者AccessKey Secret:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET") */ AccessKeyId: tea.String("建議從環境變數中擷取RAM使用者AccessKey ID"), AccessKeySecret: tea.String("建議從環境變數中擷取RAM使用者AccessKey Secret"), // 填寫您的接入地區。 RegionId: tea.String("ap-southeast-1"), Endpoint: tea.String("green-cip.ap-southeast-1.aliyuncs.com"), // 設定http代理。 //HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"), // 設定https代理。 //HttpsProxy: tea.String("https://xx.xx.xx.xx:xxxx"), /** * 請設定逾時時間。服務端全鏈路處理逾時時間為10秒,請做相應設定。 * 如果您設定的ReadTimeout小於服務端處理的時間,程式中會獲得一個ReadTimeout異常。 */ ConnectTimeout: tea.Int(3000), ReadTimeout: tea.Int(6000), } // 注意:此處執行個體化的client儘可能重複使用,提升檢測效能。避免重複建立串連。 client, _err := green.NewClient(config) if _err != nil { panic(_err) } // 待檢測語音URL。 serviceParameters, _ := json.Marshal( map[string]interface{}{ "url": "https://xxxx/xxx/sample.wav", }, ) request := green.VoiceModerationRequest{ // 語音檢測service。 Service: tea.String("audio_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/client" "github.com/alibabacloud-go/tea/tea" "net/http" ) func main() { config := &openapi.Config{ /** * 阿里雲帳號AccessKey擁有所有API的存取權限,建議您使用RAM使用者進行API訪問或日常營運。 * 強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。 * 常見擷取環境變數方式: * 擷取RAM使用者AccessKey ID:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID") * 擷取RAM使用者AccessKey Secret:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET") */ AccessKeyId: tea.String("建議從環境變數中擷取RAM使用者AccessKey ID"), AccessKeySecret: tea.String("建議從環境變數中擷取RAM使用者AccessKey Secret"), // 填寫您的接入地區。 RegionId: tea.String("ap-southeast-1"), Endpoint: tea.String("green-cip.ap-southeast-1.aliyuncs.com"), // 設定http代理。 // HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"), // 設定https代理。 // HttpsProxy: tea.String("https://xx.xx.xx.xx:xxxx"), /** * 請設定逾時時間。服務端全鏈路處理逾時時間為10秒,請做相應設定。 * 如果您設定的ReadTimeout小於服務端處理的時間,程式中會獲得一個ReadTimeout異常。 */ ConnectTimeout: tea.Int(3000), ReadTimeout: tea.Int(6000), } // 注意:此處執行個體化的client儘可能重複使用,提升檢測效能。避免重複建立串連。 client, _err := green.NewClient(config) if _err != nil { panic(_err) } serviceParameters, _ := json.Marshal( map[string]interface{}{ "taskId": "<任務ID>", }, ) request := green.VoiceModerationResultRequest{ // 語音檢測service。 Service: tea.String("audio_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)) } }
對本地音頻進行檢測
使用情境
當您需要審核的音頻在本地機器且無公網訪問連結,您可以將音頻上傳到Alibaba Content Security Service提供的Object Storage Service Bucket中,音頻審核2.0版服務可直接存取Object Storage Service,擷取到音頻內容後進行審核。
執行如下命令引入相關依賴。
go get github.com/alibabacloud-go/green-20220302/v2安裝OSS SDK:
go get github.com/aliyun/aliyun-oss-go-sdk/oss接入Go SDK。
提交語音檢測任務程式碼範例
package main import ( "encoding/json" "fmt" openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client" green20220302 "github.com/alibabacloud-go/green-20220302/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" ) //檔案上傳token var TokenMap =make(map[string]*green20220302.DescribeUploadTokenResponseBodyData) //檔案上傳用戶端 var Bucket *oss.Bucket //服務是否部署在VPC上 var isVPC = false //建立請求用戶端 func createClient(accessKeyId string, accessKeySecret string, endpoint string) (*green20220302.Client, error) { config := &openapi.Config{ AccessKeyId: tea.String(accessKeyId), AccessKeySecret: tea.String(accessKeySecret), // 設定HTTP代理。 // HttpProxy: tea.String("http://10.10.xx.xx:xxxx"), // 設定HTTPS代理。 // HttpsProxy: tea.String("https://username:password@xxx.xxx.xxx.xxx:9999"), Endpoint: tea.String(endpoint), } //注意,此處執行個體化的client請儘可能重複使用,避免重複建立串連,提升檢測效能。 return green20220302.NewClient(config); } //建立上傳檔案用戶端 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)); } } //上傳檔案 func uploadFile(filePath string,tokenData *green20220302.DescribeUploadTokenResponseBodyData) (string,error) { createOssClient(tokenData) objectName := tea.StringValue(tokenData.FileNamePrefix) + uuid.New().String() + "." + strings.Split(filePath, ".")[1] //上傳檔案 _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) { //注意,此處執行個體化的client請儘可能重複使用,避免重複建立串連,提升檢測效能。 client, _err := createClient(accessKeyId, accessKeySecret, endpoint) if _err != nil { return nil,_err } //運行時參數設定,僅對使用了該運行時參數執行個體的請求有效 runtime := &util.RuntimeOptions{} //本地檔案的完整路徑,例如D:\localPath\exampleFile.wav。 var filePath = "D:\\localPath\\exampleFile.wav" //擷取檔案上傳臨時token tokenData,ok:=TokenMap[endpoint]; if !ok || tea.Int32Value(tokenData.Expiration) <= int32(time.Now().Unix()) { //擷取檔案上傳臨時token uploadTokenResponse, _err := client.DescribeUploadToken() if _err != nil { return nil,_err } tokenData = uploadTokenResponse.Body.Data TokenMap[endpoint] = tokenData } var objectName, _ = uploadFile(filePath,TokenMap[endpoint]) //構建音頻檢測請求。 serviceParameters, _ := json.Marshal( map[string]interface{}{ "ossBucketName": tea.StringValue(TokenMap[endpoint].BucketName), "ossObjectName": objectName, "dataId": uuid.New().String(), }, ) voiceModerationRequest := &green20220302.VoiceModerationRequest{ // 語音檢測service。 Service: tea.String("audio_multilingual_global"), ServiceParameters: tea.String(string(serviceParameters)), } return client.VoiceModerationWithOptions(voiceModerationRequest, runtime) } func main() { /** * 阿里雲帳號AccessKey擁有所有API的存取權限,建議您使用RAM使用者進行API訪問或日常營運。 * 強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。 * 常見擷取環境變數方式: * 擷取RAM使用者AccessKey ID:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID") * 擷取RAM使用者AccessKey Secret:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET") */ var accessKeyId= "建議從環境變數中擷取RAM使用者AccessKey ID"; var accessKeySecret= "建議從環境變數中擷取RAM使用者AccessKey Secret"; //接入地區和地址請根據實際情況修改 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 } //自動路由,地區切換至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/client" "github.com/alibabacloud-go/tea/tea" "net/http" ) func main() { config := &openapi.Config{ /** * 阿里雲帳號AccessKey擁有所有API的存取權限,建議您使用RAM使用者進行API訪問或日常營運。 * 強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。 * 常見擷取環境變數方式: * 擷取RAM使用者AccessKey ID:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID") * 擷取RAM使用者AccessKey Secret:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET") */ AccessKeyId: tea.String("建議從環境變數中擷取RAM使用者AccessKey ID"), AccessKeySecret: tea.String("建議從環境變數中擷取RAM使用者AccessKey Secret"), // 填寫您的接入地區。 RegionId: tea.String("ap-southeast-1"), Endpoint: tea.String("green-cip.ap-southeast-1.aliyuncs.com"), // 設定http代理。 // HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"), // 設定https代理。 // HttpsProxy: tea.String("https://xx.xx.xx.xx:xxxx"), /** * 請設定逾時時間。服務端全鏈路處理逾時時間為10秒,請做相應設定。 * 如果您設定的ReadTimeout小於服務端處理的時間,程式中會獲得一個ReadTimeout異常。 */ ConnectTimeout: tea.Int(3000), ReadTimeout: tea.Int(6000), } // 注意:此處執行個體化的client儘可能重複使用,提升檢測效能。避免重複建立串連。 client, _err := green.NewClient(config) if _err != nil { panic(_err) } serviceParameters, _ := json.Marshal( map[string]interface{}{ "taskId": "<任務ID>", }, ) request := green.VoiceModerationResultRequest{ // 語音檢測service。 Service: tea.String("audio_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)) } }
對OSS音頻進行檢測
使用情境
如果您需要審核的音頻檔案已經儲存在阿里雲Object Storage Service中,您可授權建立服務角色,允許Alibaba Content Security Service服務訪問Object Storage Service。音頻審核2.0版服務會通過服務角色擷取到Object Storage Service的檔案後進行審核。訪問雲資源訪問授權頁面建立服務角色。
執行如下命令引入相關依賴。
go get github.com/alibabacloud-go/green-20220302/v2接入Go SDK。
提交語音檢測任務程式碼範例
package main import ( "encoding/json" "fmt" openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client" green "github.com/alibabacloud-go/green-20220302/client" "github.com/alibabacloud-go/tea/tea" "net/http" ) func main() { config := &openapi.Config{ /** * 阿里雲帳號AccessKey擁有所有API的存取權限,建議您使用RAM使用者進行API訪問或日常營運。 * 強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。 * 常見擷取環境變數方式: * 擷取RAM使用者AccessKey ID:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID") * 擷取RAM使用者AccessKey Secret:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET") */ AccessKeyId: tea.String("建議從環境變數中擷取RAM使用者AccessKey ID"), AccessKeySecret: tea.String("建議從環境變數中擷取RAM使用者AccessKey Secret"), // 填寫您的接入地區。 RegionId: tea.String("ap-southeast-1"), Endpoint: tea.String("green-cip.ap-southeast-1.aliyuncs.com"), // 設定http代理。 //HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"), // 設定https代理。 //HttpsProxy: tea.String("https://xx.xx.xx.xx:xxxx"), /** * 請設定逾時時間。服務端全鏈路處理逾時時間為10秒,請做相應設定。 * 如果您設定的ReadTimeout小於服務端處理的時間,程式中會獲得一個ReadTimeout異常。 */ ConnectTimeout: tea.Int(3000), ReadTimeout: tea.Int(6000), } // 注意:此處執行個體化的client儘可能重複使用,提升檢測效能。避免重複建立串連。 client, _err := green.NewClient(config) if _err != nil { panic(_err) } // 待檢測語音URL。 serviceParameters, _ := json.Marshal( map[string]interface{}{ //待檢測音訊OSSbucket所在region。樣本:cn-shanghai "ossRegionId": "cn-shanghai", //待檢測音訊OSSbucket名稱。樣本:bucket001 "ossBucketName":"bucket001", //待檢測音訊Object名稱。樣本:voice/001.wav "ossObjectName":"voice/001.wav", //待檢測資料的ID。 "dataId": uuid.New().String(), }, ) request := green.VoiceModerationRequest{ // 語音檢測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/client" "github.com/alibabacloud-go/tea/tea" "net/http" ) func main() { config := &openapi.Config{ /** * 阿里雲帳號AccessKey擁有所有API的存取權限,建議您使用RAM使用者進行API訪問或日常營運。 * 強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。 * 常見擷取環境變數方式: * 擷取RAM使用者AccessKey ID:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID") * 擷取RAM使用者AccessKey Secret:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET") */ AccessKeyId: tea.String("建議從環境變數中擷取RAM使用者AccessKey ID"), AccessKeySecret: tea.String("建議從環境變數中擷取RAM使用者AccessKey Secret"), // 填寫您的接入地區。 RegionId: tea.String("ap-southeast-1"), Endpoint: tea.String("green-cip.ap-southeast-1.aliyuncs.com"), // 設定http代理。 // HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"), // 設定https代理。 // HttpsProxy: tea.String("https://xx.xx.xx.xx:xxxx"), /** * 請設定逾時時間。服務端全鏈路處理逾時時間為10秒,請做相應設定。 * 如果您設定的ReadTimeout小於服務端處理的時間,程式中會獲得一個ReadTimeout異常。 */ ConnectTimeout: tea.Int(3000), ReadTimeout: tea.Int(6000), } // 注意:此處執行個體化的client儘可能重複使用,提升檢測效能。避免重複建立串連。 client, _err := green.NewClient(config) if _err != nil { panic(_err) } serviceParameters, _ := json.Marshal( map[string]interface{}{ "taskId": "<任務ID>", }, ) request := green.VoiceModerationResultRequest{ // 語音檢測service。 Service: tea.String("audio_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)) } }
C# SDK
原始代碼,請參見C# SDK源碼。
支援以下三種類型的音頻檢測。
對公網可訪問音頻進行檢測
使用情境
當需要審核的音頻可通過公網連結訪問時,音頻審核2.0版服務可通過音頻URL擷取檔案後進行審核。
執行如下命令引入相關依賴。
dotnet add package AlibabaCloud.SDK.Green20220302 --version 2.22.0接入C# SDK。
提交語音檢測任務程式碼範例
using Newtonsoft.Json; using Tea; namespace AlibabaCloud.SDK.Sample { public class Sample { /** * 使用AK&SK初始化帳號Client * @param accessKeyId * @param accessKeySecret * @return Client * @throws Exception */ public static AlibabaCloud.SDK.Green20220302.Client CreateClient(string accessKeyId, string accessKeySecret) { AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config { AccessKeyId = accessKeyId, AccessKeySecret = accessKeySecret, }; // 訪問的網域名稱。 config.Endpoint = "green-cip.ap-southeast-1.aliyuncs.com"; return new AlibabaCloud.SDK.Green20220302.Client(config); } public static void Main(string[] args) { // 工程代碼泄露可能會導致AccessKey泄露,並威脅帳號下所有資源的安全性。以下程式碼範例僅供參考,建議使用更安全的STS方式。 /** * 阿里雲帳號AccessKey擁有所有API的存取權限,建議您使用RAM使用者進行API訪問或日常營運。 * 強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。 * 常見擷取環境變數方式: * 擷取RAM使用者AccessKey ID:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID") * 擷取RAM使用者AccessKey Secret:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET") */ string accessKeyId = "建議從環境變數中擷取RAM使用者AccessKey ID", string accessKeySecret = '建議從環境變數中擷取RAM使用者AccessKey Secret', // 注意:此處執行個體化的client儘可能重複使用,提升檢測效能。避免重複建立串連。 AlibabaCloud.SDK.Green20220302.Client client = CreateClient(accessKeyId, accessKeySecret); // 構建語音檢測請求。 AlibabaCloud.SDK.Green20220302.Models.VoiceModerationRequest voiceModerationRequest = new AlibabaCloud.SDK.Green20220302.Models.VoiceModerationRequest(); // 語音檢測service。 voiceModerationRequest.Service="audio_multilingual_global"; Dictionary<String,Object> task=new Dictionary<string, object>(); // 待檢測語音連結,公網可訪問的URL。 task.Add("url","https://xxxx/xxx/sample.wav"); voiceModerationRequest.ServiceParameters=JsonConvert.SerializeObject(task); // 建立RuntimeObject執行個體並設定運行參數。 AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions(); runtime.ReadTimeout = 10000; runtime.ConnectTimeout = 10000; try { // 提交語音檢測任務。 AlibabaCloud.SDK.Green20220302.Models.VoiceModerationResponse response= client.VoiceModerationWithOptions(voiceModerationRequest, runtime); if(response is not null){ Console.WriteLine("response statusCode : "+response.StatusCode); if (response.Body is not null){ Console.WriteLine("requestId : " + response.Body.RequestId); Console.WriteLine("code : " + response.Body.Code); Console.WriteLine("message : " + response.Body.Message); if(response.Body.Data is not null){ Console.WriteLine("taskId : " + response.Body.Data.TaskId); } } } } catch (TeaException error) { // 如有需要,請列印error。 AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message); Console.WriteLine("error : " + error); } catch (Exception _error) { TeaException error = new TeaException(new Dictionary<string, object> { { "message", _error.Message } }); // 如有需要,請列印error。 AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message); Console.WriteLine("error : " + error); } } } }擷取語音檢測任務結果程式碼範例
using Newtonsoft.Json; using Tea; namespace AlibabaCloud.SDK.Sample { public class Sample { /** * 使用AK&SK初始化帳號Client * @param accessKeyId * @param accessKeySecret * @return Client * @throws Exception */ public static AlibabaCloud.SDK.Green20220302.Client CreateClient(string accessKeyId, string accessKeySecret) { AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config { AccessKeyId = accessKeyId, AccessKeySecret = accessKeySecret, }; // 訪問的網域名稱。 config.Endpoint = "green-cip.ap-southeast-1.aliyuncs.com"; return new AlibabaCloud.SDK.Green20220302.Client(config); } public static void Main(string[] args) { // 工程代碼泄露可能會導致AccessKey泄露,並威脅帳號下所有資源的安全性。以下程式碼範例僅供參考,建議使用更安全的STS方式。 /** * 阿里雲帳號AccessKey擁有所有API的存取權限,建議您使用RAM使用者進行API訪問或日常營運。 * 強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。 * 常見擷取環境變數方式: * 擷取RAM使用者AccessKey ID:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID") * 擷取RAM使用者AccessKey Secret:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET") */ string accessKeyId = "建議從環境變數中擷取RAM使用者AccessKey ID", string accessKeySecret = '建議從環境變數中擷取RAM使用者AccessKey Secret', // 注意:此處執行個體化的client儘可能重複使用,提升檢測效能。避免重複建立串連。 AlibabaCloud.SDK.Green20220302.Client client = CreateClient(accessKeyId, accessKeySecret); // 構建語音檢測請求。 AlibabaCloud.SDK.Green20220302.Models.VoiceModerationResultRequest voiceModerationResultRequest = new AlibabaCloud.SDK.Green20220302.Models.VoiceModerationResultRequest(); // 語音檢測service。 voiceModerationResultRequest.Service="audio_multilingual_global"; Dictionary<String,Object> task=new Dictionary<string, object>(); // 待查詢結果的任務ID。 task.Add("taskId","<待查詢結果的任務ID>"); voiceModerationResultRequest.ServiceParameters=JsonConvert.SerializeObject(task); // 建立RuntimeObject執行個體並設定運行參數。 AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions(); runtime.ReadTimeout = 10000; runtime.ConnectTimeout = 10000; try { // 提交語音檢測任務。 AlibabaCloud.SDK.Green20220302.Models.VoiceModerationResultResponse response= client.VoiceModerationResultWithOptions(voiceModerationResultRequest, runtime); if(response is not null){ Console.WriteLine("response statusCode : "+response.StatusCode); if (response.Body is not null){ Console.WriteLine("requestId : " + response.Body.RequestId); Console.WriteLine("code : " + response.Body.Code); Console.WriteLine("message : " + response.Body.Message); if(response.Body.Data is not null){ Console.WriteLine("taskId : " + response.Body.Data.TaskId); Console.WriteLine("liveId : " + response.Body.Data.LiveId); Console.WriteLine("url : " + response.Body.Data.Url); Console.WriteLine("sliceDetails : " + JsonConvert.SerializeObject(response.Body.Data.SliceDetails)); } } } } catch (TeaException error) { // 如有需要,請列印error。 AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message); Console.WriteLine("error : " + error); } catch (Exception _error) { TeaException error = new TeaException(new Dictionary<string, object> { { "message", _error.Message } }); // 如有需要,請列印error。 AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message); Console.WriteLine("error : " + error); } } } }
對本地音頻進行檢測
使用情境
當您需要審核的音頻在本地機器且無公網訪問連結,您可以將音頻上傳到Alibaba Content Security Service提供的Object Storage Service Bucket中,音頻審核2.0版服務可直接存取Object Storage Service,擷取到音頻內容後進行審核。
執行如下命令引入相關依賴。
dotnet add package AlibabaCloud.SDK.Green20220302 --version 2.22.0安裝OSS SDK:
NuGet方式安裝 1.如果您的Visual Studio沒有安裝NuGet,請先安裝NuGet。 2.在Visual Studio中建立或者開啟已有的專案,選擇工具 > NuGet封裝管理員 > 管理解決方案的NuGet程式包。 3.搜尋aliyun.oss.sdk,在結果中找到Aliyun.OSS.SDK(適用於.NET Framework)或Aliyun.OSS.SDK.NetCore(適用於.Net Core),選擇最新版本,單擊安裝。接入C# SDK。
提交語音檢測任務程式碼範例
// 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 { //檔案上傳token public static Dictionary<String, Models.DescribeUploadTokenResponse> tokenDic = new Dictionary<String, Models.DescribeUploadTokenResponse>(); //檔案上傳用戶端 public static OssClient ossClient = null; //服務是否部署在VPC上 public static Boolean isVPC = false; public static void Main(string[] args) { /** * 阿里雲帳號AccessKey擁有所有API的存取權限,建議您使用RAM使用者進行API訪問或日常營運。 * 強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。 * 常見擷取環境變數方式: * 擷取RAM使用者AccessKey ID:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID") * 擷取RAM使用者AccessKey Secret:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET") */ String accessKeyId = "建議從環境變數中擷取RAM使用者AccessKey ID"; String accessKeySecret = "建議從環境變數中擷取RAM使用者AccessKey Secret"; // 接入地區和地址請根據實際情況修改 String endpoint = "green-cip.ap-southeast-1.aliyuncs.com"; Models.VoiceModerationResponse response = invoke( accessKeyId, accessKeySecret, endpoint ); //自動路由,地區切換至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)); } //建立請求用戶端 public static Client createClient( String accessKeyId, String accessKeySecret, String endpoint ) { AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config { AccessKeyId = accessKeyId, AccessKeySecret = accessKeySecret, //設定HTTP代理。 //HttpProxy = "http://10.10.xx.xx:xxxx", //設定HTTPS代理。 //HttpsProxy = "https://username:password@xxx.xxx.xxx.xxx:9999", //訪問的網域名稱。 Endpoint = endpoint, }; return new Client(config); } //建立檔案上傳用戶端 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 ); } } //上傳檔案 public static String uploadFile( String filePath, Models.DescribeUploadTokenResponse tokenResponse ) { // 構造OssClient執行個體。 ossClient = getOssClient(tokenResponse, isVPC); var tokenData = tokenResponse.Body.Data; String objectName = tokenData.FileNamePrefix + Guid.NewGuid().ToString() + "." + filePath.Split(".").GetValue(1); //上傳檔案 ossClient.PutObject(tokenData.BucketName, objectName, filePath); return objectName; } //提交檢測請求 public static Models.VoiceModerationResponse invoke( String accessKeyId, String accessKeySecret, String endpoint ) { //注意,此處執行個體化的client請儘可能重複使用,避免重複建立串連,提升檢測效能。 Client client = createClient(accessKeyId, accessKeySecret, endpoint); //運行時參數設定,僅對使用了該運行時參數執行個體的請求有效 AlibabaCloud.TeaUtil.Models.RuntimeOptions runtimeOptions = new AlibabaCloud.TeaUtil.Models.RuntimeOptions(); //本地檔案的完整路徑,例如D:\localPath\exampleFile.wav。 String filePath = "D:\localPath\exampleFile.wav"; try { //擷取檔案上傳臨時token if ( !tokenDic.ContainsKey(endpoint) || tokenDic[endpoint].Body.Data.Expiration <= DateTimeOffset.Now.ToUnixTimeSeconds() ) { var tokenResponse = client.DescribeUploadToken(); tokenDic[endpoint] = tokenResponse; } //上傳檔案 String objectName = uploadFile(filePath, tokenDic[endpoint]); //構建音頻檢測請求 Models.VoiceModerationRequest voiceModerationRequest = new Models.VoiceModerationRequest(); //音頻檢測service樣本:audio_multilingual_global voiceModerationRequest.Service = "audio_multilingual_global"; Dictionary<string, object> task = new Dictionary<string, object>(); //待檢測音頻資訊 task.Add("ossBucketName", tokenDic[endpoint].Body.Data.BucketName); task.Add("ossObjectName", objectName); //待檢測資料的ID task.Add("dataId", Guid.NewGuid().ToString()); voiceModerationRequest.ServiceParameters = JsonConvert.SerializeObject(task); //調用API擷取檢測結果 Models.VoiceModerationResponse response = client.VoiceModerationWithOptions( voiceModerationRequest, runtimeOptions ); return response; } catch (Exception _err) { Console.WriteLine(_err); return null; } } } }擷取語音檢測任務結果程式碼範例
using Newtonsoft.Json; using Tea; namespace AlibabaCloud.SDK.Sample { public class Sample { /** * 使用AK&SK初始化帳號Client * @param accessKeyId * @param accessKeySecret * @return Client * @throws Exception */ public static AlibabaCloud.SDK.Green20220302.Client CreateClient(string accessKeyId, string accessKeySecret) { AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config { AccessKeyId = accessKeyId, AccessKeySecret = accessKeySecret, }; // 訪問的網域名稱。 config.Endpoint = "green-cip.ap-southeast-1.aliyuncs.com"; return new AlibabaCloud.SDK.Green20220302.Client(config); } public static void Main(string[] args) { // 工程代碼泄露可能會導致AccessKey泄露,並威脅帳號下所有資源的安全性。以下程式碼範例僅供參考,建議使用更安全的STS方式。 /** * 阿里雲帳號AccessKey擁有所有API的存取權限,建議您使用RAM使用者進行API訪問或日常營運。 * 強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。 * 常見擷取環境變數方式: * 擷取RAM使用者AccessKey ID:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID") * 擷取RAM使用者AccessKey Secret:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET") */ string accessKeyId = "建議從環境變數中擷取RAM使用者AccessKey ID", string accessKeySecret = '建議從環境變數中擷取RAM使用者AccessKey Secret', // 注意:此處執行個體化的client儘可能重複使用,提升檢測效能。避免重複建立串連。 AlibabaCloud.SDK.Green20220302.Client client = CreateClient(accessKeyId, accessKeySecret); // 構建語音檢測請求。 AlibabaCloud.SDK.Green20220302.Models.VoiceModerationResultRequest voiceModerationResultRequest = new AlibabaCloud.SDK.Green20220302.Models.VoiceModerationResultRequest(); // 語音檢測service。 voiceModerationResultRequest.Service="audio_multilingual_global"; Dictionary<String,Object> task=new Dictionary<string, object>(); // 待查詢結果的任務ID。 task.Add("taskId","<待查詢結果的任務ID>"); voiceModerationResultRequest.ServiceParameters=JsonConvert.SerializeObject(task); // 建立RuntimeObject執行個體並設定運行參數。 AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions(); runtime.ReadTimeout = 10000; runtime.ConnectTimeout = 10000; try { // 提交語音檢測任務。 AlibabaCloud.SDK.Green20220302.Models.VoiceModerationResultResponse response= client.VoiceModerationResultWithOptions(voiceModerationResultRequest, runtime); if(response is not null){ Console.WriteLine("response statusCode : "+response.StatusCode); if (response.Body is not null){ Console.WriteLine("requestId : " + response.Body.RequestId); Console.WriteLine("code : " + response.Body.Code); Console.WriteLine("message : " + response.Body.Message); if(response.Body.Data is not null){ Console.WriteLine("taskId : " + response.Body.Data.TaskId); Console.WriteLine("liveId : " + response.Body.Data.LiveId); Console.WriteLine("url : " + response.Body.Data.Url); Console.WriteLine("sliceDetails : " + JsonConvert.SerializeObject(response.Body.Data.SliceDetails)); } } } } catch (TeaException error) { // 如有需要,請列印error。 AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message); Console.WriteLine("error : " + error); } catch (Exception _error) { TeaException error = new TeaException(new Dictionary<string, object> { { "message", _error.Message } }); // 如有需要,請列印error。 AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message); Console.WriteLine("error : " + error); } } } }
對OSS音頻進行檢測
使用情境
如果您需要審核的音頻檔案已經儲存在阿里雲Object Storage Service中,您可授權建立服務角色,允許Alibaba Content Security Service服務訪問Object Storage Service。音頻審核2.0版服務會通過服務角色擷取到Object Storage Service的檔案後進行審核。訪問雲資源訪問授權頁面建立服務角色。
執行如下命令引入相關依賴。
dotnet add package AlibabaCloud.SDK.Green20220302 --version 2.22.0接入C# SDK。
提交語音檢測任務程式碼範例
using Newtonsoft.Json; using Tea; namespace AlibabaCloud.SDK.Sample { public class Sample { /** * 使用AK&SK初始化帳號Client * @param accessKeyId * @param accessKeySecret * @return Client * @throws Exception */ public static AlibabaCloud.SDK.Green20220302.Client CreateClient(string accessKeyId, string accessKeySecret) { AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config { AccessKeyId = accessKeyId, AccessKeySecret = accessKeySecret, }; // 訪問的網域名稱。 config.Endpoint = "green-cip.ap-southeast-1.aliyuncs.com"; return new AlibabaCloud.SDK.Green20220302.Client(config); } public static void Main(string[] args) { // 工程代碼泄露可能會導致AccessKey泄露,並威脅帳號下所有資源的安全性。以下程式碼範例僅供參考,建議使用更安全的STS方式。 /** * 阿里雲帳號AccessKey擁有所有API的存取權限,建議您使用RAM使用者進行API訪問或日常營運。 * 強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。 * 常見擷取環境變數方式: * 擷取RAM使用者AccessKey ID:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID") * 擷取RAM使用者AccessKey Secret:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET") */ string accessKeyId = "建議從環境變數中擷取RAM使用者AccessKey ID", string accessKeySecret = '建議從環境變數中擷取RAM使用者AccessKey Secret', // 注意:此處執行個體化的client儘可能重複使用,提升檢測效能。避免重複建立串連。 AlibabaCloud.SDK.Green20220302.Client client = CreateClient(accessKeyId, accessKeySecret); // 構建語音檢測請求。 AlibabaCloud.SDK.Green20220302.Models.VoiceModerationRequest voiceModerationRequest = new AlibabaCloud.SDK.Green20220302.Models.VoiceModerationRequest(); // 語音檢測service。 voiceModerationRequest.Service="audio_multilingual_global"; Dictionary<String,Object> task=new Dictionary<string, object>(); // OSS檔案傳參樣本。 task.Add("ossBucketName","bucket_01"); task.Add("ossObjectName","test/sample.wav"); task.Add("ossRegionId","cn-shanghai"); voiceModerationRequest.ServiceParameters=JsonConvert.SerializeObject(task); // 建立RuntimeObject執行個體並設定運行參數。 AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions(); runtime.ReadTimeout = 10000; runtime.ConnectTimeout = 10000; try { // 提交語音檢測任務。 AlibabaCloud.SDK.Green20220302.Models.VoiceModerationResponse response= client.VoiceModerationWithOptions(voiceModerationRequest, runtime); if(response is not null){ Console.WriteLine("response statusCode : "+response.StatusCode); if (response.Body is not null){ Console.WriteLine("requestId : " + response.Body.RequestId); Console.WriteLine("code : " + response.Body.Code); Console.WriteLine("message : " + response.Body.Message); if(response.Body.Data is not null){ Console.WriteLine("taskId : " + response.Body.Data.TaskId); } } } } catch (TeaException error) { // 如有需要,請列印error。 AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message); Console.WriteLine("error : " + error); } catch (Exception _error) { TeaException error = new TeaException(new Dictionary<string, object> { { "message", _error.Message } }); // 如有需要,請列印error。 AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message); Console.WriteLine("error : " + error); } } } }擷取語音檢測任務結果程式碼範例
using Newtonsoft.Json; using Tea; namespace AlibabaCloud.SDK.Sample { public class Sample { /** * 使用AK&SK初始化帳號Client * @param accessKeyId * @param accessKeySecret * @return Client * @throws Exception */ public static AlibabaCloud.SDK.Green20220302.Client CreateClient(string accessKeyId, string accessKeySecret) { AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config { AccessKeyId = accessKeyId, AccessKeySecret = accessKeySecret, }; // 訪問的網域名稱。 config.Endpoint = "green-cip.ap-southeast-1.aliyuncs.com"; return new AlibabaCloud.SDK.Green20220302.Client(config); } public static void Main(string[] args) { // 工程代碼泄露可能會導致AccessKey泄露,並威脅帳號下所有資源的安全性。以下程式碼範例僅供參考,建議使用更安全的STS方式。 /** * 阿里雲帳號AccessKey擁有所有API的存取權限,建議您使用RAM使用者進行API訪問或日常營運。 * 強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。 * 常見擷取環境變數方式: * 擷取RAM使用者AccessKey ID:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID") * 擷取RAM使用者AccessKey Secret:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET") */ string accessKeyId = "建議從環境變數中擷取RAM使用者AccessKey ID", string accessKeySecret = '建議從環境變數中擷取RAM使用者AccessKey Secret', // 注意:此處執行個體化的client儘可能重複使用,提升檢測效能。避免重複建立串連。 AlibabaCloud.SDK.Green20220302.Client client = CreateClient(accessKeyId, accessKeySecret); // 構建語音檢測請求。 AlibabaCloud.SDK.Green20220302.Models.VoiceModerationResultRequest voiceModerationResultRequest = new AlibabaCloud.SDK.Green20220302.Models.VoiceModerationResultRequest(); // 語音檢測service。 voiceModerationResultRequest.Service="audio_multilingual_global"; Dictionary<String,Object> task=new Dictionary<string, object>(); // 待查詢結果的任務ID。 task.Add("taskId","<待查詢結果的任務ID>"); voiceModerationResultRequest.ServiceParameters=JsonConvert.SerializeObject(task); // 建立RuntimeObject執行個體並設定運行參數。 AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions(); runtime.ReadTimeout = 10000; runtime.ConnectTimeout = 10000; try { // 提交語音檢測任務。 AlibabaCloud.SDK.Green20220302.Models.VoiceModerationResultResponse response= client.VoiceModerationResultWithOptions(voiceModerationResultRequest, runtime); if(response is not null){ Console.WriteLine("response statusCode : "+response.StatusCode); if (response.Body is not null){ Console.WriteLine("requestId : " + response.Body.RequestId); Console.WriteLine("code : " + response.Body.Code); Console.WriteLine("message : " + response.Body.Message); if(response.Body.Data is not null){ Console.WriteLine("taskId : " + response.Body.Data.TaskId); Console.WriteLine("liveId : " + response.Body.Data.LiveId); Console.WriteLine("url : " + response.Body.Data.Url); Console.WriteLine("sliceDetails : " + JsonConvert.SerializeObject(response.Body.Data.SliceDetails)); } } } } catch (TeaException error) { // 如有需要,請列印error。 AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message); Console.WriteLine("error : " + error); } catch (Exception _error) { TeaException error = new TeaException(new Dictionary<string, object> { { "message", _error.Message } }); // 如有需要,請列印error。 AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message); Console.WriteLine("error : " + error); } } } }
Node.js SDK
原始代碼,請參見Node.js SDK源碼。
支援以下三種類型的音頻檢測。
對公網可訪問音頻進行檢測
使用情境
當需要審核的音頻可通過公網連結訪問時,音頻審核2.0版服務可通過音頻URL擷取檔案後進行審核。
執行如下命令引入相關依賴。
npm install @alicloud/green20220302@2.22.0接入Node.js SDK。
提交語音檢測任務程式碼範例
const Green20220302 = require('@alicloud/green20220302'); const OpenApi = require('@alicloud/openapi-client'); const Util = require('@alicloud/tea-util'); // 注意:此處執行個體化的client儘可能重複使用,提升檢測效能。避免重複建立串連。 // 工程代碼泄露可能會導致 AccessKey 泄露,並威脅帳號下所有資源的安全性。以下程式碼範例僅供參考。 class Client { static createClient() { const config = new OpenApi.Config({ // 必填,請確保代碼運行環境設定了環境變數 ALIBABA_CLOUD_ACCESS_KEY_ID。 accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'], // 必填,請確保代碼運行環境設定了環境變數 ALIBABA_CLOUD_ACCESS_KEY_SECRET。 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(); // 構造請求對象 const voiceModerationRequest = new Green20220302.VoiceModerationRequest({ // 語音檢測service。 "service": "audio_multilingual_global", // 待檢測語音連結。 "serviceParameters": JSON.stringify({"url":"http://aliyundoc.com/test.flv"}) }); // 建立運行時設定物件 const runtime = new Util.RuntimeOptions(); try { // 發起請求並擷取響應 const response = await client.voiceModerationWithOptions(voiceModerationRequest, runtime); console.log(JSON.stringify(response.body)); } catch (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'); // 注意:此處執行個體化的client儘可能重複使用,提升檢測效能。避免重複建立串連。 // 工程代碼泄露可能會導致 AccessKey 泄露,並威脅帳號下所有資源的安全性。以下程式碼範例僅供參考。 class Client { static createClient() { const config = new OpenApi.Config({ // 必填,請確保代碼運行環境設定了環境變數 ALIBABA_CLOUD_ACCESS_KEY_ID。 accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'], // 必填,請確保代碼運行環境設定了環境變數 ALIBABA_CLOUD_ACCESS_KEY_SECRET。 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(); // 構造請求對象 const voiceModerationResultRequest = new Green20220302.VoiceModerationResultRequest({ // 語音檢測service。 "service": "audio_multilingual_global", "serviceParameters": JSON.stringify({"taskId":"<待擷取語音檢測結果的任務ID>"}) }); // 建立運行時設定物件 const runtime = new Util.RuntimeOptions(); try { // 發起請求並擷取響應 const response = await client.voiceModerationResultWithOptions(voiceModerationResultRequest, runtime); console.log(JSON.stringify(response.body)); } catch (error) { // 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。 // 錯誤 message console.log('Error occurred:', error.message); } } } Client.main();
對本地音頻進行檢測
使用情境
當您需要審核的音頻在本地機器且無公網訪問連結,您可以將音頻上傳到Alibaba Content Security Service提供的Object Storage Service Bucket中,音頻審核2.0版服務可直接存取Object Storage Service,擷取到音頻內容後進行審核。
執行如下命令引入相關依賴。
npm install @alicloud/green20220302@2.22.0安裝OSS SDK:
npm install ali-oss --save接入Node.js SDK。
提交語音檢測任務程式碼範例
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"); // 注意:此處執行個體化的client儘可能重複使用,提升檢測效能。避免重複建立串連。 // 工程代碼泄露可能會導致 AccessKey 泄露,並威脅帳號下所有資源的安全性。以下程式碼範例僅供參考。 //服務是否部署在VPC上 var isVPC = false; //檔案上傳token var tokenDic = new Array(); //檔案上傳用戶端 var ossClient; //設定endpoint var endpoint = 'green-cip.ap-southeast-1.aliyuncs.com' //本地檔案路徑 var filePath = 'D:\\test\\voice\\cf02.wav' //檢測service var service = 'audio_multilingual_global' class Client { static createClient() { const config = new OpenApi.Config({ // 必填,請確保代碼運行環境設定了環境變數 ALIBABA_CLOUD_ACCESS_KEY_ID。 accessKeyId: "建議從環境變數中擷取RAM使用者AccessKey ID", // 必填,請確保代碼運行環境設定了環境變數 ALIBABA_CLOUD_ACCESS_KEY_SECRET。 accessKeySecret: "建議從環境變數中擷取RAM使用者AccessKey Secret", endpoint: endpoint, }); return new Green20220302.default(config); } //建立檔案上傳用戶端 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(); // 建立運行時設定物件 const runtime = new Util.RuntimeOptions(); //擷取上傳檔案token if (tokenDic[endpoint] == null || tokenDic[endpoint]['expiration'] <= Date.parse(new Date() / 1000)) { var tokenResponse = await client.describeUploadTokenWithOptions(runtime) tokenDic[endpoint] = tokenResponse.body.data; } //擷取上傳檔案用戶端 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(); } //上傳檔案 const result = await ossClient.put(objectName, path.normalize(filePath)); // 構造請求對象 const voiceModerationRequest = new Green20220302.VoiceModerationRequest({ // 檢測service。 "service": service, // 待檢測連結。 "serviceParameters": JSON.stringify({ "ossBucketName": tokenDic[endpoint].bucketName, "ossObjectName": objectName, }) }); try { // 發起請求並擷取響應 const response = await client.voiceModerationWithOptions(voiceModerationRequest, runtime); console.log(JSON.stringify(response.body)); } catch (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'); // 注意:此處執行個體化的client儘可能重複使用,提升檢測效能。避免重複建立串連。 // 工程代碼泄露可能會導致 AccessKey 泄露,並威脅帳號下所有資源的安全性。以下程式碼範例僅供參考。 class Client { static createClient() { const config = new OpenApi.Config({ // 必填,請確保代碼運行環境設定了環境變數 ALIBABA_CLOUD_ACCESS_KEY_ID。 accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'], // 必填,請確保代碼運行環境設定了環境變數 ALIBABA_CLOUD_ACCESS_KEY_SECRET。 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(); // 構造請求對象 const voiceModerationResultRequest = new Green20220302.VoiceModerationResultRequest({ // 語音檢測service。 "service": "audio_multilingual_global", "serviceParameters": JSON.stringify({"taskId":"<待擷取語音檢測結果的任務ID>"}) }); // 建立運行時設定物件 const runtime = new Util.RuntimeOptions(); try { // 發起請求並擷取響應 const response = await client.voiceModerationResultWithOptions(voiceModerationResultRequest, runtime); console.log(JSON.stringify(response.body)); } catch (error) { // 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。 // 錯誤 message console.log('Error occurred:', error.message); } } } Client.main();
對OSS音頻進行檢測
使用情境
如果您需要審核的音頻檔案已經儲存在阿里雲Object Storage Service中,您可授權建立服務角色,允許Alibaba Content Security Service服務訪問Object Storage Service。音頻審核2.0版服務會通過服務角色擷取到Object Storage Service的檔案後進行審核。訪問雲資源訪問授權頁面建立服務角色。
執行如下命令引入相關依賴。
npm install @alicloud/green20220302@2.22.0接入Node.js SDK。
提交語音檢測任務程式碼範例
const Green20220302 = require('@alicloud/green20220302'); const OpenApi = require('@alicloud/openapi-client'); const Util = require('@alicloud/tea-util'); // 注意:此處執行個體化的client儘可能重複使用,提升檢測效能。避免重複建立串連。 // 工程代碼泄露可能會導致 AccessKey 泄露,並威脅帳號下所有資源的安全性。以下程式碼範例僅供參考。 class Client { static createClient() { const config = new OpenApi.Config({ // 必填,請確保代碼運行環境設定了環境變數 ALIBABA_CLOUD_ACCESS_KEY_ID。 accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'], // 必填,請確保代碼運行環境設定了環境變數 ALIBABA_CLOUD_ACCESS_KEY_SECRET。 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(); // 構造請求對象 const voiceModerationRequest = new Green20220302.VoiceModerationRequest({ // 語音檢測service。 "service": "audio_multilingual_global", "serviceParameters": JSON.stringify({ // 待檢測檔案所在bucket的地區。 樣本:cn-shanghai "ossRegionId": "cn-shanghai", // 待檢測檔案所在bucket名稱。樣本:bucket001 "ossBucketName": "bucket001", // 待檢測檔案。 樣本:voice/001.wav "ossObjectName": "voice/001.wav",}) }); }); // 建立運行時設定物件 const runtime = new Util.RuntimeOptions(); try { // 發起請求並擷取響應 const response = await client.voiceModerationWithOptions(voiceModerationRequest, runtime); console.log(JSON.stringify(response.body)); } catch (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'); // 注意:此處執行個體化的client儘可能重複使用,提升檢測效能。避免重複建立串連。 // 工程代碼泄露可能會導致 AccessKey 泄露,並威脅帳號下所有資源的安全性。以下程式碼範例僅供參考。 class Client { static createClient() { const config = new OpenApi.Config({ // 必填,請確保代碼運行環境設定了環境變數 ALIBABA_CLOUD_ACCESS_KEY_ID。 accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'], // 必填,請確保代碼運行環境設定了環境變數 ALIBABA_CLOUD_ACCESS_KEY_SECRET。 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(); // 構造請求對象 const voiceModerationResultRequest = new Green20220302.VoiceModerationResultRequest({ // 語音檢測service。 "service": "audio_multilingual_global", "serviceParameters": JSON.stringify({"taskId":"<待擷取語音檢測結果的任務ID>"}) }); // 建立運行時設定物件 const runtime = new Util.RuntimeOptions(); try { // 發起請求並擷取響應 const response = await client.voiceModerationResultWithOptions(voiceModerationResultRequest, runtime); console.log(JSON.stringify(response.body)); } catch (error) { // 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。 // 錯誤 message console.log('Error occurred:', error.message); } } } Client.main();
HTTPS原生調用
調用方式
服務要求地址:https://green-cip.{region}.aliyuncs.com
協議:HTTPS
方式:POST
公用請求參數
語音審核增強版API介面的入參數包含公用請求參數和具體介面請求參數,公用請求參數是指每一個介面都需要使用到的參數,以下表格是公用請求參數的詳細介紹。
名稱
類型
是否必須
描述
Format
String
是
返回訊息的格式。取值:
JSON(預設值)
XML
Version
String
是
API版本號碼,使用YYYY-MM-DD日期格式,本版本為2022-03-02。
AccessKeyId
String
是
阿里雲頒發給使用者的訪問服務所用的密鑰ID。
Signature
String
是
簽名結果串,關於簽名的計算方法,請參見下方簽名方式。
SignatureMethod
String
是
簽名方式,目前支援HMAC-SHA1。
Timestamp
String
是
請求的時間戳記。日期格式按照ISO8601標準表示,並需要使用UTC時間。
格式為:yyyy-MM-ddTHH:mm:ssZ。
例如,北京時間2022年12月12日09點13分14秒錶示為2022-12-12T01:13:14Z。
SignatureVersion
String
是
簽名演算法版本,取值為1.0。
SignatureNonce
String
是
唯一隨機數,用於防止網路重放攻擊。不同請求要使用不同的隨機數值。
Action
String
是
取值:
VoiceModeration
VoiceModerationResult
公用返回參數
您發送的每次介面調用請求,無論成功與否,系統都會返回唯一識別碼(RequestId)。其他返回參數會根據您調用的服務不同而返回不同的參數。
{ "RequestId":"20B935A9-XXXXXXXX-XXXXXXXX0C2", "Message":"SUCCESS", "Data":{ "TaskId":"au_f_O5xxxxxxxxxxxxxxqa-1****" }, "Code":200 }程式碼範例
以下返回樣本為了便於閱讀,做了格式化處理,實際返回結果沒有進行換行、縮排等格式化處理。
審核任務程式碼範例
請求樣本
http://green-cip.ap-southeast-1.aliyuncs.com/ ?Format=JSON &Version=2022-03-02 &Signature=vpEEL0zFHfxXYzSFV0n7%2FZiFL9o%3D &SignatureMethod=Hmac-SHA1 &SignatureNonce=15215528852396 &SignatureVersion=1.0 &Action=VoiceModeration &AccessKeyId=123****cip &Timestamp=2023-02-03T12:00:00Z &Service=audio_multilingual_global &ServiceParameters={"url": "https://xxxxxx.aliyuncs.com/sample/****.wav"}正常返回樣本
{ "RequestId":"20B935A9-XXXXXXXX-XXXXXXXX0C2", "Message":"SUCCESS", "Data":{ "TaskId":"au_f_O5xxxxxxxxxxxxxxqa-1x****" }, "Code":200 }查詢任務程式碼範例
請求樣本
http://green-cip.ap-southeast-1.aliyuncs.com/ ?Format=JSON &Version=2022-03-02 &Signature=vpEEL0zFHfxXYzSFV0n7%2FZiFL9o%3D &SignatureMethod=Hmac-SHA1 &SignatureNonce=15215528852396 &SignatureVersion=1.0 &Action=VoiceModerationResult &AccessKeyId=123****cip &Timestamp=2023-02-03T12:00:00Z &Service=audio_multilingual_global &ServiceParameters={"taskId": "au_f_O5zxxxxxxxxxxxxxxxx-1x****"}正常返回樣本
{ "RequestId":"926AD581-XXXXXXXXXXXXXX-7902AE", "Message":"success finished", "Data":{ "SliceDetails":[ { "EndTime":6, "StartTime":0, "Text":"今天天氣還不錯。", "Labels":"", "Url":"http://xxxx.aliyuncs.com/cip-media/voice/****.wav" } ] }, "Code":200 }
簽名方式
語音審核增強版服務會對每個訪問的請求進行身分識別驗證,因此,需要在請求中包含簽名(Signature)資訊。語音審核增強版服務通過使用AccessKey ID和AccessKey Secret進行對稱式加密的方法來驗證請求的寄件者身份。
AccessKey ID和AccessKey Secret由阿里雲官方頒發給訪問者(可以通過阿里雲官方網站申請和管理),其中AccessKey ID用於標識訪問者身份;AccessKey Secret是用於加密簽名字串和伺服器端驗證簽名字串的密鑰,必須嚴格保密,只有阿里雲和使用者知道。
使用者在訪問時,按照下面的方法對請求進行簽名處理:
使用請求參數構造正常化的請求字串(Canonicalized Query String)。
按照參數名稱的字典順序對請求中所有的請求參數(包括公用請求參數和給定了的請求介面的自訂參數,但不能包括公用請求參數中提到的Signature參數本身)進行排序。
對相關請求參數的名稱和值進行編碼。名稱和值要使用UTF-8字元集進行URL編碼。
說明一般支援URL編碼的庫(比如Java中的java.net.URLEncoder)都是按照application/x-www-form-urlencoded的MIME類型的規則進行編碼的。實現時可以直接使用這類方式進行編碼,把編碼後的字串中加號(+)替換成%20、星號(*)替換成%2A、%7E替換回波浪號(~),即可得到上述規則描述的編碼字串。
URL編碼的編碼規則如下:
對於字元A-Z、a-z、0-9以及字元中劃線(-)、底線(_)、半形句號(.)、波浪線(~)不編碼。
對於其它字元編碼成
%XY的格式,其中XY是字元對應ASCII碼的16進位表示。比如英文的雙引號(")對應的編碼就是%22。對於擴充的UTF-8字元,編碼成
%XY%ZA…的格式。需要說明的是英文空格( )要被編碼是
%20,而不是加號(+)。
對編碼後的參數名稱和值使用英文等號(=)進行串連。
將英文等號串連得到字串按參數名稱的字典順序依次使用&符號串連,即得到正常化請求字串。
使用 a.i 構造的正常化字串按照下面的規則構造用於計算簽名的字串:
StringToSign= HTTPMethod + "&" + percentEncode("/") + "&" + percentEncode(CanonicalizedQueryString)說明其中HTTPMethod是提交請求用的HTTP方法,比如POST。percentEncode(/)是按照 a.ii 中描述的URL編碼規則對字元(/)進行編碼得到的值,即
%2F。percentEncode(CanonicalQueryString)是對 a.i 中構造的正常化請求字串按 a.ii 中描述的URL編碼規則編碼後得到的字串。按照RFC2104的定義,使用上面的用於簽名的字串計算簽名HMAC值。
說明注意計算簽名時使用的Key就是使用者持有的AccessKey Secret並加上一個
&字元(ASCII:38),使用的雜湊演算法是SHA1。按照Base64編碼規則把上面的HMAC值編碼成字串,即得到簽名值(Signature)。
將得到的簽名值作為Signature參數添加到請求參數中,即完成對請求籤名的過程。
說明得到的簽名值在作為最後的請求參數值提交給Alibaba Content Security Service伺服器時,要和其他參數一樣,按照RFC3986的規則進行URL編碼。