All Products
Search
Document Center

AI Guardrails:Voice Moderation 2.0 SDK dan integrasi

Last Updated:May 28, 2026

Voice Moderation 2.0 mendukung dua metode integrasi: SDK dan HTTPS native. SDK merupakan pendekatan yang direkomendasikan karena secara otomatis menangani verifikasi signature dan konstruksi request body.

Wilayah yang didukung

Wilayah

Titik akhir publik

Titik akhir VPC

Kode layanan yang didukung

China (Shanghai)

green-cip.cn-shanghai.aliyuncs.com

green-cip-vpc.cn-shanghai.aliyuncs.com

audio_media_detection_ec, live_stream_detection_ec

China (Shenzhen)

green-cip.cn-shenzhen.aliyuncs.com

green-cip-vpc.cn-shenzhen.aliyuncs.com

audio_media_detection_ec, live_stream_detection_ec

China (Hangzhou)

green-cip.cn-hangzhou.aliyuncs.com

green-cip-vpc.cn-hangzhou.aliyuncs.com

audio_media_detection_ec, live_stream_detection_ec

China (Beijing)

green-cip.cn-beijing.aliyuncs.com

green-cip-vpc.cn-beijing.aliyuncs.com

audio_media_detection_ec, live_stream_detection_ec

Singapura

green-cip.ap-southeast-1.aliyuncs.com

green-cip-vpc.ap-southeast-1.aliyuncs.com

audio_multilingual_global, audio_detection_byllm_global, live_detection_byllm_global, stream_multilingual_global, audio_detection_byllm_cb, stream_detection_byllm_cb, stream_multilingual_cb, audio_media_detection_cb, audio_media_detection_ec, live_stream_detection_ec

AS (Virginia)

green-cip.us-east-1.aliyuncs.com

green-cip-vpc.us-east-1.aliyuncs.com

audio_multilingual_global

Catatan

Saat mengatur parameter service dalam permintaan VoiceModeration, gunakan kode layanan yang didukung di wilayah yang Anda pilih. Penggunaan kode layanan yang tidak didukung akan mengembalikan error.

Bahasa SDK yang didukung

  • Java 1.8 atau lebih baru

  • Python 3.6 atau lebih baru

  • PHP 5.6 atau lebih baru

  • Go

  • C#

Cara kerja

Voice Moderation 2.0 menggunakan pola asinkron submit-and-poll:

  1. Kirimkan tugas moderasi dengan VoiceModeration. API mengembalikan taskId.Kirimkan tugas moderasi suara

  2. Poll hasilnya dengan VoiceModerationResult, dengan menyertakan taskId.

  3. Uraikan hasilnya — periksa riskLevel dan sliceDetails untuk menentukan hasil moderasi.

Untuk file audio lokal tanpa URL publik, unggah terlebih dahulu ke bucket OSS Content Moderation menggunakan token sementara dari DescribeUploadToken, lalu kirimkan tugas moderasi menggunakan path objek OSS.

Prasyarat

Sebelum memulai, pastikan Anda telah:

  • Mengaktifkan layanan Voice Moderation 2.0. Metode penagihan default adalah pay-as-you-go. Anda dikenai biaya harian berdasarkan penggunaan aktual. Jika Anda tidak memanggil layanan ini, tidak ada biaya yang dikenakan.

  • Memiliki Pengguna Resource Access Management (RAM) dengan kebijakan sistem AliyunYundunGreenWebFullAccess yang diberikan. Lihat Buat Pengguna RAM dan Berikan izin kepada Pengguna RAM.

  • Memiliki Pasangan Kunci Akses untuk Pengguna RAM tersebut. Lihat Buat Pasangan Kunci Akses.

  • Mengatur variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET dengan ID AccessKey dan Rahasia AccessKey Pengguna RAM Anda.

SDK Alibaba Cloud membuat kredensial default dengan membaca variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET. Saat memanggil operasi API, program membaca AccessKey Anda dari variabel ini dan secara otomatis menyelesaikan autentikasi. Sebelum menggunakan contoh kode SDK, Anda harus mengonfigurasi variabel lingkungan terlebih dahulu. Untuk informasi selengkapnya, lihat Konfigurasi kredensial autentikasi.

Java SDK

Kode sumber: GitHub | Maven Central

SDK mendukung tiga skenario moderasi audio. Semua contoh menggunakan VoiceModeration untuk mengirimkan tugas dan VoiceModerationResult untuk mengambil hasilnya.

Deteksi audio yang dapat diakses publik

Gunakan skenario ini ketika file audio dapat diakses melalui URL publik.

Instal dependensi

Tambahkan berikut ini ke pom.xml Maven Anda:

<dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>green20220302</artifactId>
  <version>3.3.3</version>
</dependency>

Kirimkan tugas moderasi

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();
        /**
         * Pasangan Kunci Akses Akun Alibaba Cloud memiliki izin untuk semua operasi API. Menggunakan kredensial ini untuk melakukan operasi merupakan operasi berisiko tinggi. Kami menyarankan Anda menggunakan Pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
         * Metode umum untuk mendapatkan variabel lingkungan:
         * Metode 1:
         *     Dapatkan ID AccessKey Pengguna RAM Anda: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
         *     Dapatkan Rahasia AccessKey Pengguna RAM Anda: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
         * Metode 2:
         *     Dapatkan ID AccessKey Pengguna RAM Anda: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
         *     Dapatkan Rahasia AccessKey Pengguna RAM Anda: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
         */
        config.setAccessKeyId("Kami menyarankan Anda mendapatkan ID AccessKey Pengguna RAM Anda dari variabel lingkungan");
        config.setAccessKeySecret("Kami menyarankan Anda mendapatkan Rahasia AccessKey Pengguna RAM Anda dari variabel lingkungan");
        // Ubah wilayah dan titik akhir sesuai kebutuhan.
        config.setRegionId("ap-southeast-1");
        config.setEndpoint("green-cip.ap-southeast-1.aliyuncs.com");
        // Periode timeout koneksi dalam milidetik (ms).
        config.setReadTimeout(6000);
        // Periode timeout baca dalam milidetik (ms).
        config.setConnectTimeout(3000);

        // Catatan: Untuk meningkatkan kinerja moderasi, gunakan kembali instance client. Ini menghindari pembuatan koneksi berulang.
        Client client = new Client(config);

        JSONObject serviceParameters = new JSONObject();
        // taskId yang dikembalikan saat tugas dikirimkan.
        serviceParameters.put("taskId", "ID tugas yang dikembalikan untuk tugas moderasi.");


        VoiceModerationResultRequest voiceModerationResultRequest = new VoiceModerationResultRequest();
        // Jenis moderasi: audio_multilingual_global untuk moderasi audio multibahasa.
        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("kode=" + 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("hasil moderasi suara tidak berhasil. kode:" + result.getCode());
                }
            } else {
                System.out.println("respons tidak berhasil. status:" + response.getStatusCode());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.aliyun.green20220302.Client;
import com.aliyun.green20220302.models.VoiceModerationRequest;
import com.aliyun.green20220302.models.VoiceModerationResponse;
import com.aliyun.green20220302.models.VoiceModerationResponseBody;
import com.aliyun.teaopenapi.models.Config;


public class OssVoiceModerationDemo {

    public static void main(String[] args) throws Exception {
        Config config = new Config();
        /**
         * Pasangan Kunci Akses Akun Alibaba Cloud memiliki izin untuk semua operasi API. Menggunakan kredensial ini untuk melakukan operasi merupakan operasi berisiko tinggi. Kami menyarankan Anda menggunakan Pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
         * Metode umum untuk mendapatkan variabel lingkungan:
         * Metode 1:
         *     Dapatkan ID AccessKey Pengguna RAM Anda: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
         *     Dapatkan Rahasia AccessKey Pengguna RAM Anda: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
         * Metode 2:
         *     Dapatkan ID AccessKey Pengguna RAM Anda: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
         *     Dapatkan Rahasia AccessKey Pengguna RAM Anda: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
         */
        config.setAccessKeyId("Kami menyarankan Anda mendapatkan ID AccessKey Pengguna RAM Anda dari variabel lingkungan");
        config.setAccessKeySecret("Kami menyarankan Anda mendapatkan Rahasia AccessKey Pengguna RAM Anda dari variabel lingkungan");
        // Ubah wilayah dan titik akhir sesuai kebutuhan.
        config.setRegionId("ap-southeast-1");
        config.setEndpoint("green-cip.ap-southeast-1.aliyuncs.com");
        // Periode timeout koneksi dalam milidetik (ms).
        config.setReadTimeout(6000);
        // Periode timeout baca dalam milidetik (ms).
        config.setConnectTimeout(3000);
   
        // Catatan: Untuk meningkatkan kinerja moderasi, gunakan kembali instance client. Ini menghindari pembuatan koneksi berulang.
        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();
        // Jenis moderasi. audio_media_detection menunjukkan moderasi file audio, dan live_stream_detection menunjukkan moderasi stream audio langsung.
        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("kode = " + 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("moderasi suara tidak berhasil. kode:" + code);
                }
            } else {
                System.out.println("respons tidak berhasil. 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();
        /**
         * Pasangan Kunci Akses Akun Alibaba Cloud memiliki izin untuk semua operasi API. Menggunakan kredensial ini untuk melakukan operasi merupakan operasi berisiko tinggi. Kami menyarankan Anda menggunakan Pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
         * Metode umum untuk mendapatkan variabel lingkungan:
         * Metode 1:
         *     Dapatkan ID AccessKey Pengguna RAM Anda: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
         *     Dapatkan Rahasia AccessKey Pengguna RAM Anda: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
         * Metode 2:
         *     Dapatkan ID AccessKey Pengguna RAM Anda: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
         *     Dapatkan Rahasia AccessKey Pengguna RAM Anda: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
         */
        config.setAccessKeyId("Kami menyarankan Anda mendapatkan ID AccessKey Pengguna RAM Anda dari variabel lingkungan");
        config.setAccessKeySecret("Kami menyarankan Anda mendapatkan Rahasia AccessKey Pengguna RAM Anda dari variabel lingkungan");
        // Ubah wilayah dan titik akhir sesuai kebutuhan.
        config.setRegionId("ap-southeast-1");
        config.setEndpoint("green-cip.ap-southeast-1.aliyuncs.com");
        // Periode timeout koneksi dalam milidetik (ms).
        config.setReadTimeout(6000);
        // Periode timeout baca dalam milidetik (ms).
        config.setConnectTimeout(3000);

        // Catatan: Untuk meningkatkan kinerja moderasi, gunakan kembali instance client. Ini menghindari pembuatan koneksi berulang.
        Client client = new Client(config);

        JSONObject serviceParameters = new JSONObject();
        // taskId yang dikembalikan saat tugas dikirimkan.
        serviceParameters.put("taskId", "ID tugas yang dikembalikan untuk tugas moderasi.");


        VoiceModerationResultRequest voiceModerationResultRequest = new VoiceModerationResultRequest();
        // Jenis moderasi: audio_multilingual_global untuk moderasi audio multibahasa.
        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("kode=" + 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("hasil moderasi suara tidak berhasil. kode:" + result.getCode());
                }
            } else {
                System.out.println("respons tidak berhasil. status:" + response.getStatusCode());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
import com.alibaba.fastjson.JSON;
import com.aliyun.green20220302.Client;
import com.aliyun.green20220302.models.DescribeUploadTokenResponse;
import com.aliyun.green20220302.models.DescribeUploadTokenResponseBody;
import com.aliyun.green20220302.models.VoiceModerationRequest;
import com.aliyun.green20220302.models.VoiceModerationResponse;
import com.aliyun.green20220302.models.VoiceModerationResponseBody;
import com.aliyun.green20220302.models.VoiceModerationResponseBody.VoiceModerationResponseBodyData;
import com.aliyun.green20220302.models.VoiceModerationResponseBody.VoiceModerationResponseBodyDataResult;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.PutObjectRequest;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.teautil.models.RuntimeOptions;

import java.io.File;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;


public class LocalVoiceModerationDemo {
    /**Menentukan apakah layanan dideploy di VPC.*/
    public static boolean isVPC = false;

    /**Token yang digunakan untuk mengunggah file. Kunci adalah titik akhir dan nilai adalah token.*/
    public static Map<String, DescribeUploadTokenResponseBody.DescribeUploadTokenResponseBodyData> tokenMap = new HashMap<>();

    /**Client yang digunakan untuk mengunggah file.*/
    public static OSS ossClient = null;

    /**
     * Buat client.
     *
     * @param accessKeyId
     * @param accessKeySecret
     * @param endpoint
     * @return
     * @throws Exception
     */
    public static Client createClient(String accessKeyId, String accessKeySecret, String endpoint) throws Exception {
        Config config = new Config();
        config.setAccessKeyId(accessKeyId);
        config.setAccessKeySecret(accessKeySecret);
        // Ubah titik akhir sesuai kebutuhan.
        config.setEndpoint(endpoint);
        return new Client(config);
    }

    /**
     * Buat client untuk mengunggah file.
     *
     * @param tokenData
     * @param isVPC
     */
    public static void getOssClient(DescribeUploadTokenResponseBody.DescribeUploadTokenResponseBodyData tokenData, boolean isVPC) {
        //Catatan: Untuk meningkatkan kinerja moderasi, gunakan kembali instance client. Ini menghindari pembuatan koneksi berulang.
        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());
        }
    }

    /**
     * Unggah file.
     *
     * @param filePath
     * @param tokenData
     * @return
     * @throws Exception
     */
    public static String uploadFile(String filePath, DescribeUploadTokenResponseBody.DescribeUploadTokenResponseBodyData tokenData) throws Exception {
        String[] split = filePath.split("\\.");
        String objectName;
        if (split.length > 1) {
            objectName = tokenData.getFileNamePrefix() + UUID.randomUUID() + "." + split[split.length - 1];
        } else {
            objectName = tokenData.getFileNamePrefix() + UUID.randomUUID();
        }
        PutObjectRequest putObjectRequest = new PutObjectRequest(tokenData.getBucketName(), objectName, new File(filePath));
        ossClient.putObject(putObjectRequest);
        return objectName;
    }

    public static VoiceModerationResponse invokeFunction(String accessKeyId, String accessKeySecret, String endpoint) throws Exception {
        //Catatan: Untuk meningkatkan kinerja moderasi, gunakan kembali instance client. Ini menghindari pembuatan koneksi berulang.
        Client client = createClient(accessKeyId, accessKeySecret, endpoint);
        RuntimeOptions runtime = new RuntimeOptions();

        //Path lengkap file lokal. Contoh: D:/localPath/exampleFile.mp3.
        String filePath = "D:/localPath/exampleFile.mp3";
        //Dapatkan token sementara untuk mengunggah file.
        if (tokenMap.get(endpoint) == null || tokenMap.get(endpoint).expiration <= System.currentTimeMillis() / 1000) {
            DescribeUploadTokenResponse tokenResponse = client.describeUploadToken();
            tokenMap.put(endpoint, tokenResponse.getBody().getData());
        }
        //Buat client untuk mengunggah file.
        getOssClient(tokenMap.get(endpoint), isVPC);

        //Unggah file.
        String objectName = uploadFile(filePath, tokenMap.get(endpoint));

        // Konstruksi parameter moderasi.
        Map<String, String> serviceParameters = new HashMap<>();
        //Informasi tentang pengunggahan file.
        serviceParameters.put("ossBucketName", tokenMap.get(endpoint).getBucketName());
        serviceParameters.put("ossObjectName", objectName);
        serviceParameters.put("dataId", UUID.randomUUID().toString());

        VoiceModerationRequest request = new VoiceModerationRequest();
        // Jenis moderasi. audio_media_detection menunjukkan moderasi file audio.
        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 {
        /**
         * Pasangan Kunci Akses Akun Alibaba Cloud memiliki izin untuk semua operasi API. Menggunakan kredensial ini untuk melakukan operasi merupakan operasi berisiko tinggi. Kami menyarankan Anda menggunakan Pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
         * Metode umum untuk mendapatkan variabel lingkungan:
         * Metode 1:
         *     Dapatkan ID AccessKey Pengguna RAM Anda: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
         *     Dapatkan Rahasia AccessKey Pengguna RAM Anda: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
         * Metode 2:
         *     Dapatkan ID AccessKey Pengguna RAM Anda: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
         *     Dapatkan Rahasia AccessKey Pengguna RAM Anda: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
         */
        String accessKeyId = "Kami menyarankan Anda mendapatkan ID AccessKey Pengguna RAM Anda dari variabel lingkungan";
        String accessKeySecret = "Kami menyarankan Anda mendapatkan Rahasia AccessKey Pengguna RAM Anda dari variabel lingkungan";
        // Ubah wilayah dan titik akhir sesuai kebutuhan.
        VoiceModerationResponse response = invokeFunction(accessKeyId, accessKeySecret, "green-cip.ap-southeast-1.aliyuncs.com");
        try {
            // Cetak hasil moderasi.
            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("kode = " + 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("moderasi suara tidak berhasil. kode:" + code);
                    }
                } else {
                    System.out.println("respons tidak berhasil. 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();
        /**
         * Pasangan Kunci Akses Akun Alibaba Cloud memiliki izin untuk semua operasi API. Menggunakan kredensial ini untuk melakukan operasi merupakan operasi berisiko tinggi. Kami menyarankan Anda menggunakan Pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
         * Metode umum untuk mendapatkan variabel lingkungan:
         * Metode 1:
         *     Dapatkan ID AccessKey Pengguna RAM Anda: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
         *     Dapatkan Rahasia AccessKey Pengguna RAM Anda: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
         * Metode 2:
         *     Dapatkan ID AccessKey Pengguna RAM Anda: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
         *     Dapatkan Rahasia AccessKey Pengguna RAM Anda: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
         */
        config.setAccessKeyId("Kami menyarankan Anda mendapatkan ID AccessKey Pengguna RAM Anda dari variabel lingkungan");
        config.setAccessKeySecret("Kami menyarankan Anda mendapatkan Rahasia AccessKey Pengguna RAM Anda dari variabel lingkungan");
        // Ubah wilayah dan titik akhir sesuai kebutuhan.
        config.setRegionId("ap-southeast-1");
        config.setEndpoint("green-cip.ap-southeast-1.aliyuncs.com");
        // Periode timeout koneksi dalam milidetik (ms).
        config.setReadTimeout(6000);
        // Periode timeout baca dalam milidetik (ms).
        config.setConnectTimeout(3000);

        // Catatan: Untuk meningkatkan kinerja moderasi, gunakan kembali instance client. Ini menghindari pembuatan koneksi berulang.
        Client client = new Client(config);

        JSONObject serviceParameters = new JSONObject();
        // taskId yang dikembalikan saat tugas dikirimkan.
        serviceParameters.put("taskId", "ID tugas yang dikembalikan untuk tugas moderasi.");


        VoiceModerationResultRequest voiceModerationResultRequest = new VoiceModerationResultRequest();
        // Jenis moderasi: audio_multilingual_global untuk moderasi audio multibahasa.
        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("kode=" + 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("hasil moderasi suara tidak berhasil. kode:" + result.getCode());
                }
            } else {
                System.out.println("respons tidak berhasil. status:" + response.getStatusCode());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Ambil hasil moderasiAmbil Hasil Moderasi Suara

Membatalkan tugas deteksi stream langsung

import com.alibaba.fastjson.JSONObject;
import com.aliyun.green20220302.Client;
import com.aliyun.green20220302.models.VoiceModerationCancelRequest;
import com.aliyun.green20220302.models.VoiceModerationCancelResponse;
import com.aliyun.green20220302.models.VoiceModerationCancelResponseBody;
import com.aliyun.teaopenapi.models.Config;


public class VoiceModerationCancelDemo {

    public static void main(String[] args) throws Exception {
        Config config = new Config();
        /**
         * Pasangan Kunci Akses Akun Alibaba Cloud memiliki izin untuk semua operasi API. Menggunakan kredensial ini untuk melakukan operasi merupakan operasi berisiko tinggi. Kami menyarankan Anda menggunakan Pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
         * Metode umum untuk mendapatkan variabel lingkungan:
         * Metode 1:
         *     Dapatkan ID AccessKey Pengguna RAM Anda: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
         *     Dapatkan Rahasia AccessKey Pengguna RAM Anda: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
         * Metode 2:
         *     Dapatkan ID AccessKey Pengguna RAM Anda: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
         *     Dapatkan Rahasia AccessKey Pengguna RAM Anda: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
         */
        config.setAccessKeyId("Kami menyarankan Anda mendapatkan ID AccessKey Pengguna RAM Anda dari variabel lingkungan");
        config.setAccessKeySecret("Kami menyarankan Anda mendapatkan Rahasia AccessKey Pengguna RAM Anda dari variabel lingkungan");
        // Ubah wilayah dan titik akhir sesuai kebutuhan.
        config.setRegionId("cn-shanghai");
        config.setEndpoint("green-cip.cn-shanghai.aliyuncs.com");
        // Periode timeout koneksi dalam milidetik (ms).
        config.setReadTimeout(6000);
        // Periode timeout baca dalam milidetik (ms).
        config.setConnectTimeout(3000);

        // Catatan: Untuk meningkatkan kinerja moderasi, gunakan kembali instance client. Ini menghindari pembuatan koneksi berulang.
        Client client = new Client(config);

        JSONObject serviceParameters = new JSONObject();
        // taskId yang dikembalikan saat tugas dikirimkan.
        serviceParameters.put("taskId", "ID tugas yang dikembalikan untuk tugas moderasi.");

        VoiceModerationCancelRequest voiceModerationCancelRequest = new VoiceModerationCancelRequest();
        // Jenis moderasi. audio_media_detection menunjukkan moderasi file audio, dan live_stream_detection menunjukkan moderasi stream audio langsung.
        voiceModerationCancelRequest.setService("live_stream_detection");
        voiceModerationCancelRequest.setServiceParameters(serviceParameters.toJSONString());

        try {
            VoiceModerationCancelResponse response = client.voiceModerationCancel(voiceModerationCancelRequest);
            if (response.getStatusCode() == 200) {
                VoiceModerationCancelResponseBody result = response.getBody();
                System.out.println("requestId=" + result.getRequestId());
                System.out.println("kode=" + result.getCode());
                System.out.println("msg=" + result.getMessage());
                if (200 != result.getCode()) {
                    System.out.println("pembatalan moderasi suara tidak berhasil. kode:" + result.getCode());
                }
            } else {
                System.out.println("respons tidak berhasil. status:" + response.getStatusCode());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.aliyun.green20220302.Client;
import com.aliyun.green20220302.models.VoiceModerationResultRequest;
import com.aliyun.green20220302.models.VoiceModerationResultResponse;
import com.aliyun.green20220302.models.VoiceModerationResultResponseBody;
import com.aliyun.teaopenapi.models.Config;

public class VoiceModerationResultDemo {

    public static void main(String[] args) throws Exception {
        Config config = new Config();
        config.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"));
        config.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
        config.setRegionId("ap-southeast-1");
        config.setEndpoint("green-cip.ap-southeast-1.aliyuncs.com");
        config.setReadTimeout(6000);
        config.setConnectTimeout(3000);

        Client client = new Client(config);

        JSONObject serviceParameters = new JSONObject();
        serviceParameters.put("taskId", "<task-id>");

        VoiceModerationResultRequest request = new VoiceModerationResultRequest();
        request.setService("audio_multilingual_global");
        request.setServiceParameters(serviceParameters.toJSONString());

        try {
            VoiceModerationResultResponse response = client.voiceModerationResult(request);
            if (response.getStatusCode() == 200) {
                VoiceModerationResultResponseBody result = response.getBody();
                if (200 == result.getCode()) {
                    VoiceModerationResultResponseBody.VoiceModerationResultResponseBodyData data = result.getData();
                    System.out.println("taskId: " + data.getTaskId());
                    System.out.println("riskLevel: " + data.getRiskLevel());
                    System.out.println("url: " + data.getUrl());
                    System.out.println("sliceDetails: " + JSON.toJSONString(data.getSliceDetails()));
                } else {
                    System.out.println("Gagal mendapatkan hasil. kode: " + result.getCode());
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Deteksi audio lokal

Gunakan skenario ini ketika file audio berada di mesin lokal tanpa URL publik. SDK pertama-tama mengunggah file ke bucket OSS Content Moderation menggunakan token sementara, lalu mengirimkan tugas moderasi menggunakan path objek OSS.

Instal dependensi

<dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>green20220302</artifactId>
  <version>3.3.3</version>
</dependency>

Kirimkan tugas moderasi

Untuk mengambil hasil, gunakan VoiceModerationResultDemo yang sama dari Deteksi audio yang dapat diakses publik.

Membatalkan tugas deteksi stream langsung

import com.alibaba.fastjson.JSONObject;
import com.aliyun.green20220302.Client;
import com.aliyun.green20220302.models.VoiceModerationCancelRequest;
import com.aliyun.green20220302.models.VoiceModerationCancelResponse;
import com.aliyun.green20220302.models.VoiceModerationCancelResponseBody;
import com.aliyun.teaopenapi.models.Config;


public class VoiceModerationCancelDemo {

    public static void main(String[] args) throws Exception {
        Config config = new Config();
        /**
         * Pasangan Kunci Akses Akun Alibaba Cloud memiliki izin untuk semua operasi API. Menggunakan kredensial ini untuk melakukan operasi merupakan operasi berisiko tinggi. Kami menyarankan Anda menggunakan Pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
         * Metode umum untuk mendapatkan variabel lingkungan:
         * Metode 1:
         *     Dapatkan ID AccessKey Pengguna RAM Anda: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
         *     Dapatkan Rahasia AccessKey Pengguna RAM Anda: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
         * Metode 2:
         *     Dapatkan ID AccessKey Pengguna RAM Anda: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
         *     Dapatkan Rahasia AccessKey Pengguna RAM Anda: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
         */
        config.setAccessKeyId("Kami menyarankan Anda mendapatkan ID AccessKey Pengguna RAM Anda dari variabel lingkungan");
        config.setAccessKeySecret("Kami menyarankan Anda mendapatkan Rahasia AccessKey Pengguna RAM Anda dari variabel lingkungan");
        // Ubah wilayah dan titik akhir sesuai kebutuhan.
        config.setRegionId("cn-shanghai");
        config.setEndpoint("green-cip.cn-shanghai.aliyuncs.com");
        // Periode timeout koneksi dalam milidetik (ms).
        config.setReadTimeout(6000);
        // Periode timeout baca dalam milidetik (ms).
        config.setConnectTimeout(3000);

        // Catatan: Untuk meningkatkan kinerja moderasi, gunakan kembali instance client. Ini menghindari pembuatan koneksi berulang.
        Client client = new Client(config);

        JSONObject serviceParameters = new JSONObject();
        // taskId yang dikembalikan saat tugas dikirimkan.
        serviceParameters.put("taskId", "ID tugas yang dikembalikan untuk tugas moderasi.");

        VoiceModerationCancelRequest voiceModerationCancelRequest = new VoiceModerationCancelRequest();
        // Jenis moderasi. audio_media_detection menunjukkan moderasi file audio, dan live_stream_detection menunjukkan moderasi stream audio langsung.
        voiceModerationCancelRequest.setService("live_stream_detection");
        voiceModerationCancelRequest.setServiceParameters(serviceParameters.toJSONString());

        try {
            VoiceModerationCancelResponse response = client.voiceModerationCancel(voiceModerationCancelRequest);
            if (response.getStatusCode() == 200) {
                VoiceModerationCancelResponseBody result = response.getBody();
                System.out.println("requestId=" + result.getRequestId());
                System.out.println("kode=" + result.getCode());
                System.out.println("msg=" + result.getMessage());
                if (200 != result.getCode()) {
                    System.out.println("pembatalan moderasi suara tidak berhasil. kode:" + result.getCode());
                }
            } else {
                System.out.println("respons tidak berhasil. status:" + response.getStatusCode());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Deteksi audio yang disimpan di OSS

Gunakan skenario ini ketika file audio sudah berada di bucket Alibaba Cloud Object Storage Service (OSS). Berikan akses Content Moderation ke bucket OSS Anda dengan membuat peran layanan di halaman Otorisasi Akses Sumber Daya Cloud.

Instal dependensi

<dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>green20220302</artifactId>
  <version>3.3.3</version>
</dependency>

Kirimkan tugas moderasi

Untuk mengambil hasil, gunakan VoiceModerationResultDemo yang sama dari Deteksi audio yang dapat diakses publik.

Batalkan tugas deteksi stream langsung

import com.alibaba.fastjson.JSONObject;
import com.aliyun.green20220302.Client;
import com.aliyun.green20220302.models.VoiceModerationCancelRequest;
import com.aliyun.green20220302.models.VoiceModerationCancelResponse;
import com.aliyun.green20220302.models.VoiceModerationCancelResponseBody;
import com.aliyun.teaopenapi.models.Config;


public class VoiceModerationCancelDemo {

    public static void main(String[] args) throws Exception {
        Config config = new Config();
        /**
         * Pasangan Kunci Akses Akun Alibaba Cloud memiliki izin untuk semua operasi API. Menggunakan kredensial ini untuk melakukan operasi merupakan operasi berisiko tinggi. Kami menyarankan Anda menggunakan Pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
         * Metode umum untuk mendapatkan variabel lingkungan:
         * Metode 1:
         *     Dapatkan ID AccessKey Pengguna RAM Anda: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
         *     Dapatkan Rahasia AccessKey Pengguna RAM Anda: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
         * Metode 2:
         *     Dapatkan ID AccessKey Pengguna RAM Anda: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
         *     Dapatkan Rahasia AccessKey Pengguna RAM Anda: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
         */
        config.setAccessKeyId("Kami menyarankan Anda mendapatkan ID AccessKey Pengguna RAM Anda dari variabel lingkungan");
        config.setAccessKeySecret("Kami menyarankan Anda mendapatkan Rahasia AccessKey Pengguna RAM Anda dari variabel lingkungan");
        // Ubah wilayah dan titik akhir sesuai kebutuhan.
        config.setRegionId("cn-shanghai");
        config.setEndpoint("green-cip.cn-shanghai.aliyuncs.com");
        // Periode timeout koneksi dalam milidetik (ms).
        config.setReadTimeout(6000);
        // Periode timeout baca dalam milidetik (ms).
        config.setConnectTimeout(3000);

        // Catatan: Untuk meningkatkan kinerja moderasi, gunakan kembali instance client. Ini menghindari pembuatan koneksi berulang.
        Client client = new Client(config);

        JSONObject serviceParameters = new JSONObject();
        // taskId yang dikembalikan saat tugas dikirimkan.
        serviceParameters.put("taskId", "ID tugas yang dikembalikan untuk tugas moderasi.");

        VoiceModerationCancelRequest voiceModerationCancelRequest = new VoiceModerationCancelRequest();
        // Jenis moderasi. audio_media_detection menunjukkan moderasi file audio, dan live_stream_detection menunjukkan moderasi stream audio langsung.
        voiceModerationCancelRequest.setService("live_stream_detection");
        voiceModerationCancelRequest.setServiceParameters(serviceParameters.toJSONString());

        try {
            VoiceModerationCancelResponse response = client.voiceModerationCancel(voiceModerationCancelRequest);
            if (response.getStatusCode() == 200) {
                VoiceModerationCancelResponseBody result = response.getBody();
                System.out.println("requestId=" + result.getRequestId());
                System.out.println("kode=" + result.getCode());
                System.out.println("msg=" + result.getMessage());
                if (200 != result.getCode()) {
                    System.out.println("pembatalan moderasi suara tidak berhasil. kode:" + result.getCode());
                }
            } else {
                System.out.println("respons tidak berhasil. status:" + response.getStatusCode());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Python SDK

Kode sumber: PyPI

Membutuhkan Python 3.6 atau lebih baru.

Deteksi audio yang dapat diakses publik

Instal dependensi

pip install alibabacloud_green20220302==3.2.4

Kirimkan tugas moderasi

# coding=utf-8
import os
import json
from alibabacloud_green20220302.client import Client
from alibabacloud_green20220302 import models
from alibabacloud_tea_openapi.models import Config

config = Config(
    # Muat kredensial dari variabel lingkungan.
    # Jangan hardcode Pasangan Kunci Akses Anda di kode.
    access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
    access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
    connect_timeout=10000,  # ms
    read_timeout=3000,      # ms
    region_id='ap-southeast-1',
    endpoint='green-cip.ap-southeast-1.aliyuncs.com'
)

# Gunakan kembali instance client untuk menghindari pembuatan koneksi berulang.
client = Client(config)

service_parameters = {'url': 'https://example.com/sample.wav'}
request = models.VoiceModerationRequest(
    service='audio_multilingual_global',
    service_parameters=json.dumps(service_parameters)
)

try:
    response = client.voice_moderation(request)
    if response.status_code == 200:
        result = response.body
        if result.code == 200:
            print('taskId:', result.data.task_id)
            # Gunakan taskId untuk polling hasil.
        else:
            print('Permintaan moderasi gagal. kode:', result.code)
except Exception as err:
    print(err)

Ambil hasil moderasi

# coding=utf-8
import os
import json
from alibabacloud_green20220302.client import Client
from alibabacloud_green20220302 import models
from alibabacloud_tea_openapi.models import Config

config = Config(
    access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
    access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
    connect_timeout=10000,
    read_timeout=3000,
    region_id='ap-southeast-1',
    endpoint='green-cip.ap-southeast-1.aliyuncs.com'
)

client = Client(config)

service_parameters = {'taskId': '<task-id>'}
request = models.VoiceModerationResultRequest(
    service='audio_multilingual_global',
    service_parameters=json.dumps(service_parameters)
)

try:
    response = client.voice_moderation_result(request)
    if response.status_code == 200:
        result = response.body
        if result.code == 200:
            data = result.data
            print('taskId:', data.task_id)
            print('riskLevel:', data.risk_level)
            print('sliceDetails:', data.slice_details)
        else:
            print('Gagal mendapatkan hasil. kode:', result.code)
except Exception as err:
    print(err)

Deteksi audio lokal

Instal dependensi

pip install alibabacloud_green20220302==3.2.4

Kirimkan tugas moderasi

# coding=utf-8
import os
import json
import uuid
import time
import oss2
from alibabacloud_green20220302.client import Client
from alibabacloud_green20220302 import models
from alibabacloud_tea_openapi.models import Config
from alibabacloud_tea_util import models as util_models

is_vpc = False
token_dict = {}
bucket = None


def create_client(access_key_id, access_key_secret, endpoint):
    config = Config(
        access_key_id=access_key_id,
        access_key_secret=access_key_secret,
        endpoint=endpoint
    )
    return Client(config)


def init_oss_bucket(is_vpc, upload_token):
    global bucket
    auth = oss2.StsAuth(upload_token.access_key_id, upload_token.access_key_secret, upload_token.security_token)
    end_point = upload_token.oss_internal_end_point if is_vpc else upload_token.oss_internet_end_point
    # Gunakan kembali instance bucket untuk menghindari pembuatan koneksi berulang.
    bucket = oss2.Bucket(auth, end_point, upload_token.bucket_name)


def upload_file(file_path, upload_token):
    init_oss_bucket(is_vpc, upload_token)
    object_name = upload_token.file_name_prefix + str(uuid.uuid1()) + '.' + file_path.split('.')[-1]
    bucket.put_object_from_file(object_name, file_path)
    return object_name


def invoke(access_key_id, access_key_secret, endpoint):
    # Gunakan kembali instance client untuk menghindari pembuatan koneksi berulang.
    client = create_client(access_key_id, access_key_secret, endpoint)
    runtime = util_models.RuntimeOptions()

    file_path = '/path/to/exampleFile.mp3'

    # Dapatkan token unggah sementara (perbarui jika kedaluwarsa).
    upload_token = token_dict.get(endpoint)
    if upload_token is None or int(upload_token.expiration) <= int(time.time()):
        response = client.describe_upload_token()
        upload_token = response.body.data
        token_dict[endpoint] = upload_token

    object_name = upload_file(file_path, upload_token)

    service_parameters = {
        'ossBucketName': upload_token.bucket_name,
        'ossObjectName': object_name,
        'dataId': str(uuid.uuid4())
    }

    request = models.VoiceModerationRequest(
        service='audio_multilingual_global',
        service_parameters=json.dumps(service_parameters)
    )

    try:
        return client.voice_moderation_with_options(request, runtime)
    except Exception as err:
        print(err)


if __name__ == '__main__':
    access_key_id = os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID']
    access_key_secret = os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
    response = invoke(access_key_id, access_key_secret, 'green-cip.ap-southeast-1.aliyuncs.com')
    if response and response.status_code == 200:
        result = response.body
        if result.code == 200:
            print('taskId:', result.data.task_id)

Untuk mengambil hasil, gunakan pola yang sama dari Deteksi audio yang dapat diakses publik.

Deteksi audio yang disimpan di OSS

Buat peran layanan untuk memberikan akses Content Moderation ke bucket OSS Anda di halaman Otorisasi Akses Sumber Daya Cloud.

Instal dependensi

pip install alibabacloud_green20220302==3.2.4

Kirimkan tugas moderasi

# coding=utf-8
import os
import json
from alibabacloud_green20220302.client import Client
from alibabacloud_green20220302 import models
from alibabacloud_tea_openapi.models import Config

config = Config(
    access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
    access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
    connect_timeout=10000,
    read_timeout=3000,
    region_id='ap-southeast-1',
    endpoint='green-cip.ap-southeast-1.aliyuncs.com'
)

client = Client(config)

service_parameters = {
    'ossBucketName': '<your-bucket-name>',
    'ossObjectName': 'voice/sample.mp3',
    'ossRegionId': 'cn-shanghai'
}
request = models.VoiceModerationRequest(
    service='audio_multilingual_global',
    service_parameters=json.dumps(service_parameters)
)

try:
    response = client.voice_moderation(request)
    if response.status_code == 200:
        result = response.body
        if result.code == 200:
            print('taskId:', result.data.task_id)
except Exception as err:
    print(err)

Untuk mengambil hasil, gunakan pola yang sama dari Deteksi audio yang dapat diakses publik.

PHP SDK

Kode sumber: Packagist

Membutuhkan PHP 5.6 atau lebih baru.

Deteksi audio yang dapat diakses publik

Instal dependensi

composer require alibabacloud/green-20220302 3.2.4

Kirimkan tugas moderasi

<?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([]);
/**
 * Pasangan Kunci Akses Akun Alibaba Cloud memiliki izin untuk semua operasi API. Menggunakan kredensial ini untuk melakukan operasi merupakan operasi berisiko tinggi. Kami menyarankan Anda menggunakan Pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
 * Kami sangat menyarankan agar Anda tidak menyimpan ID AccessKey dan Rahasia AccessKey Anda di kode proyek Anda. Hal ini dapat menyebabkan kebocoran Pasangan Kunci Akses dan membahayakan keamanan semua sumber daya dalam akun Anda.
 * Metode umum untuk mendapatkan variabel lingkungan:
 * Dapatkan ID AccessKey Pengguna RAM Anda: getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
 * Dapatkan Rahasia AccessKey Pengguna RAM Anda: getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
 */
$config->accessKeyId = "Kami menyarankan Anda mendapatkan ID AccessKey Pengguna RAM Anda dari variabel lingkungan";
$config->accessKeySecret = "Kami menyarankan Anda mendapatkan Rahasia AccessKey Pengguna RAM Anda dari variabel lingkungan";
// Ubah wilayah dan titik akhir sesuai kebutuhan.
$config->regionId = "ap-southeast-1";
$config->endpoint = "green-cip.ap-southeast-1.aliyuncs.com";
// Atur proxy HTTP.
// $config->httpProxy = "http://10.10.xx.xx:xxxx";
// Atur proxy HTTPS.
// $config->httpsProxy = "http://10.10.xx.xx:xxxx";
// Catatan: Untuk meningkatkan kinerja moderasi, gunakan kembali instance client. Ini menghindari pembuatan koneksi berulang.
$client = new Green($config);

$request = new VoiceModerationResultRequest();
// Jenis moderasi: audio_multilingual_global untuk moderasi audio multibahasa.
$request->service = "audio_multilingual_global";
// taskId yang dikembalikan saat tugas dikirimkan.
$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("kode = " . $body->code);
        print_r("pesan = " . $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("hasil moderasi suara tidak berhasil. kode:" . $body->code);
        }
    } else {
        print_r("respons tidak berhasil. kode:" . $response->statusCode);
    }
} catch (TeaUnableRetryError $e) {
    var_dump($e->getMessage());
    var_dump($e->getErrorInfo());
    var_dump($e->getLastException());
    var_dump($e->getLastRequest());
}
<?php
  require('vendor/autoload.php');

use AlibabaCloud\SDK\Green\V20220302\Models\VoiceModerationRequest;
use AlibabaCloud\Tea\Exception\TeaUnableRetryError;
use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
use AlibabaCloud\SDK\Green\V20220302\Green;

$config = new Config([]);
/**
 * Pasangan Kunci Akses Akun Alibaba Cloud memiliki izin untuk semua operasi API. Menggunakan kredensial ini untuk melakukan operasi merupakan operasi berisiko tinggi. Kami menyarankan Anda menggunakan Pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
 * Kami sangat menyarankan agar Anda tidak menyimpan ID AccessKey dan Rahasia AccessKey Anda di kode proyek Anda. Hal ini dapat menyebabkan kebocoran Pasangan Kunci Akses dan membahayakan keamanan semua sumber daya dalam akun Anda.
 * Metode umum untuk mendapatkan variabel lingkungan:
 * Dapatkan ID AccessKey Pengguna RAM Anda: getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
 * Dapatkan Rahasia AccessKey Pengguna RAM Anda: getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
 */
$config->accessKeyId = "Kami menyarankan Anda mendapatkan ID AccessKey Pengguna RAM Anda dari variabel lingkungan";
$config->accessKeySecret = "Kami menyarankan Anda mendapatkan Rahasia AccessKey Pengguna RAM Anda dari variabel lingkungan";
// Ubah wilayah dan titik akhir sesuai kebutuhan.
$config->regionId = "ap-southeast-1";
$config->endpoint = "green-cip.ap-southeast-1.aliyuncs.com";
// Atur proxy HTTP.
// $config->httpProxy = "http://10.10.xx.xx:xxxx";
// Atur proxy HTTPS.
// $config->httpsProxy = "http://10.10.xx.xx:xxxx";
// Catatan: Untuk meningkatkan kinerja moderasi, gunakan kembali instance client. Ini menghindari pembuatan koneksi berulang.
$client = new Green($config);

$request = new VoiceModerationRequest();
// Jenis moderasi: audio_multilingual_global untuk moderasi audio multibahasa.
$request->service = "audio_multilingual_global";
$serviceParameters = array(
          // File yang akan dimoderasi. Contoh: voice/001.wav
        'ossObjectName' => 'voice/001.wav',
        // Wilayah tempat bucket file yang akan dimoderasi berada. Contoh: cn-shanghai
        'ossRegionId' => 'cn-shanghai',
          // Nama bucket yang menyimpan file yang akan dimoderasi. Contoh: bucket001
        'ossBucketName' => 'bucket001',
        // ID unik data.
        'dataId' => uniqid());

$request->serviceParameters = json_encode($serviceParameters);

$runtime = new RuntimeOptions();
$runtime->readTimeout = 6000;
$runtime->connectTimeout = 3000;

try {
  $response = $client->voiceModeration($request, $runtime);
  print_r($response->body);
  if (200 == $response->statusCode) {
    $body = $response->body;
    print_r("requestId = " . $body->requestId);
    print_r("kode = " . $body->code);
    print_r("pesan = " . $body->message);
    if (200 == $body->code) {
      $data = $body->data;
      print_r("taskId = " . $data->taskId);
    } else {
      print_r("moderasi suara tidak berhasil. kode:" . $body->code);
    }
  } else {
    print_r("respons tidak berhasil. kode:" . $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([]);
/**
 * Pasangan Kunci Akses Akun Alibaba Cloud memiliki izin untuk semua operasi API. Menggunakan kredensial ini untuk melakukan operasi merupakan operasi berisiko tinggi. Kami menyarankan Anda menggunakan Pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
 * Kami sangat menyarankan agar Anda tidak menyimpan ID AccessKey dan Rahasia AccessKey Anda di kode proyek Anda. Hal ini dapat menyebabkan kebocoran Pasangan Kunci Akses dan membahayakan keamanan semua sumber daya dalam akun Anda.
 * Metode umum untuk mendapatkan variabel lingkungan:
 * Dapatkan ID AccessKey Pengguna RAM Anda: getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
 * Dapatkan Rahasia AccessKey Pengguna RAM Anda: getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
 */
$config->accessKeyId = "Kami menyarankan Anda mendapatkan ID AccessKey Pengguna RAM Anda dari variabel lingkungan";
$config->accessKeySecret = "Kami menyarankan Anda mendapatkan Rahasia AccessKey Pengguna RAM Anda dari variabel lingkungan";
// Ubah wilayah dan titik akhir sesuai kebutuhan.
$config->regionId = "ap-southeast-1";
$config->endpoint = "green-cip.ap-southeast-1.aliyuncs.com";
// Atur proxy HTTP.
// $config->httpProxy = "http://10.10.xx.xx:xxxx";
// Atur proxy HTTPS.
// $config->httpsProxy = "http://10.10.xx.xx:xxxx";
// Catatan: Untuk meningkatkan kinerja moderasi, gunakan kembali instance client. Ini menghindari pembuatan koneksi berulang.
$client = new Green($config);

$request = new VoiceModerationResultRequest();
// Jenis moderasi: audio_multilingual_global untuk moderasi audio multibahasa.
$request->service = "audio_multilingual_global";
// taskId yang dikembalikan saat tugas dikirimkan.
$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("kode = " . $body->code);
        print_r("pesan = " . $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("hasil moderasi suara tidak berhasil. kode:" . $body->code);
        }
    } else {
        print_r("respons tidak berhasil. kode:" . $response->statusCode);
    }
} catch (TeaUnableRetryError $e) {
    var_dump($e->getMessage());
    var_dump($e->getErrorInfo());
    var_dump($e->getLastException());
    var_dump($e->getLastRequest());
}
<?php
require('vendor/autoload.php');

use AlibabaCloud\SDK\Green\V20220302\Models\VoiceModerationResponse;
use AlibabaCloud\Tea\Utils\Utils;
use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
use AlibabaCloud\SDK\Green\V20220302\Green;
use AlibabaCloud\SDK\Green\V20220302\Models\VoiceModerationRequest;
use OSS\OssClient;

// Menentukan apakah layanan dideploy di VPC.
$isVPC = false;
// Token yang digunakan untuk mengunggah file.
$tokenArray = array();
// Client yang digunakan untuk mengunggah file.
$ossClient = null;

/**
 * Buat client.
 * @param $accessKeyId
 * @param $accessKeySecret
 * @param $endpoint
 * @return Green
 */
function create_client($accessKeyId, $accessKeySecret, $endpoint): Green
{
    $config = new Config([
        "accessKeyId" => $accessKeyId,
        "accessKeySecret" => $accessKeySecret,
        // Atur proxy HTTP.
        // "httpProxy" => "http://10.10.xx.xx:xxxx",
        // Atur proxy HTTPS.
        // "httpsProxy" => "https://10.10.xx.xx:xxxx",
        "endpoint" => $endpoint,
    ]);
    return new Green($config);
}

/**
 * Buat client untuk mengunggah file.
 * @param $tokenData
 * @return void
 */
function create_upload_client($tokenData): void
{

    global $isVPC;
    global $ossClient;
    // Catatan: Untuk meningkatkan kinerja moderasi, gunakan kembali instance client. Ini menghindari pembuatan koneksi berulang.
    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);
    }
}

/**
 * Unggah file.
 * @param $fileName
 * @param $tokenData
 * @return string
 * @throws \OSS\Core\OssException
 */
function upload_file($filePath, $tokenData): string
{
    global $ossClient;
    //Inisialisasi 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();
    }
    //Unggah file.
    $ossClient->uploadFile($tokenData->bucketName, $objectName, $filePath);
    return $objectName;
}

/**
 * Kirimkan tugas moderasi.
 * @param $accessKeyId
 * @param $accessKeySecret
 * @param $endpoint
 * @return VoiceModerationResponse
 * @throws \OSS\Core\OssException
 */
function invoke($accessKeyId, $accessKeySecret, $endpoint): VoiceModerationResponse
{
    global $tokenArray;
    // Catatan: Untuk meningkatkan kinerja moderasi, gunakan kembali instance client. Ini menghindari pembuatan koneksi berulang.
    $client = create_client($accessKeyId, $accessKeySecret, $endpoint);
    // Buat instance RuntimeObject dan atur parameter runtime.
    $runtime = new RuntimeOptions([]);
    // Path lengkap file lokal. Contoh: D:\\localPath\\exampleFile.mp3.
    $filePath = "D:\\localPath\\exampleFile.mp3";

    //Dapatkan token sementara untuk mengunggah file.
    if (!isset($tokenArray[$endpoint]) || $tokenArray[$endpoint]->expiration <= time()) {
        $token = $client->describeUploadToken();
        $tokenArray[$endpoint] = $token->body->data;
    }

    // Unggah file.
    $objectName = upload_file($filePath, $tokenArray[$endpoint]);

    // Konstruksi parameter moderasi.
    $request = new VoiceModerationRequest();
    // Jenis moderasi: audio_multilingual_global untuk moderasi audio multibahasa.
      $request->service = "audio_multilingual_global";
    // Informasi OSS tentang file audio yang akan dimoderasi.
    $serviceParameters = array(
        'ossObjectName' => $objectName,
        'ossBucketName' => $tokenArray[$endpoint]->bucketName,
        'dataId' => uniqid());
    $request->serviceParameters = json_encode($serviceParameters);
    // Kirimkan tugas moderasi.
    return $client->voiceModerationWithOptions($request, $runtime);
}

/**
* Pasangan Kunci Akses Akun Alibaba Cloud memiliki izin untuk semua operasi API. Menggunakan kredensial ini untuk melakukan operasi merupakan operasi berisiko tinggi. Kami menyarankan Anda menggunakan Pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
* Kami sangat menyarankan agar Anda tidak menyimpan ID AccessKey dan Rahasia AccessKey Anda di kode proyek Anda. Hal ini dapat menyebabkan kebocoran Pasangan Kunci Akses dan membahayakan keamanan semua sumber daya dalam akun Anda.
* Metode umum untuk mendapatkan variabel lingkungan:
* Dapatkan ID AccessKey Pengguna RAM Anda: getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
* Dapatkan Rahasia AccessKey Pengguna RAM Anda: getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
*/
$accessKeyId = 'Kami menyarankan Anda mendapatkan ID AccessKey Pengguna RAM Anda dari variabel lingkungan';
$accessKeySecret = 'Kami menyarankan Anda mendapatkan Rahasia AccessKey Pengguna RAM Anda dari variabel lingkungan';
// Ubah wilayah dan titik akhir sesuai kebutuhan.
$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());
}

Ambil hasil moderasi

Kode contoh untuk membatalkan tugas moderasi stream langsung

<?php
require('vendor/autoload.php');

use AlibabaCloud\SDK\Green\V20220302\Models\VoiceModerationCancelRequest;
use AlibabaCloud\Tea\Exception\TeaUnableRetryError;
use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
use AlibabaCloud\SDK\Green\V20220302\Green;

$config = new Config([]);
/**
 * Pasangan Kunci Akses Akun Alibaba Cloud memiliki izin untuk semua operasi API. Menggunakan kredensial ini untuk melakukan operasi merupakan operasi berisiko tinggi. Kami menyarankan Anda menggunakan Pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
 * Kami sangat menyarankan agar Anda tidak menyimpan ID AccessKey dan Rahasia AccessKey Anda di kode proyek Anda. Hal ini dapat menyebabkan kebocoran Pasangan Kunci Akses dan membahayakan keamanan semua sumber daya dalam akun Anda.
 * Metode umum untuk mendapatkan variabel lingkungan:
 * Dapatkan ID AccessKey Pengguna RAM Anda: getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
 * Dapatkan Rahasia AccessKey Pengguna RAM Anda: getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
 */
$config->accessKeyId = "Kami menyarankan Anda mendapatkan ID AccessKey Pengguna RAM Anda dari variabel lingkungan";
$config->accessKeySecret = "Kami menyarankan Anda mendapatkan Rahasia AccessKey Pengguna RAM Anda dari variabel lingkungan";
// Ubah wilayah dan titik akhir sesuai kebutuhan.
$config->regionId = "cn-shanghai";
$config->endpoint = "green-cip.cn-shanghai.aliyuncs.com";
// Atur proxy HTTP.
// $config->httpProxy = "http://10.10.xx.xx:xxxx";
// Atur proxy HTTPS.
// $config->httpsProxy = "http://10.10.xx.xx:xxxx";
// Catatan: Untuk meningkatkan kinerja moderasi, gunakan kembali instance client. Ini menghindari pembuatan koneksi berulang.
$client = new Green($config);

$request = new VoiceModerationCancelRequest();
// Jenis moderasi. audio_media_detection untuk moderasi file audio, live_stream_detection untuk moderasi stream audio langsung.
$request->service = "audio_media_detection";
// taskId yang dikembalikan saat tugas dikirimkan.
$serviceParameters = array('taskId' => 'au_f_O5z5iaIis3iI0X2oNYj7qa-1x****');

$request->serviceParameters = json_encode($serviceParameters);

$runtime = new RuntimeOptions();
$runtime->readTimeout = 6000;
$runtime->connectTimeout = 3000;

try {
    $response = $client->voiceModerationCancel($request, $runtime);
    print_r($response->body);
    if (200 == $response->statusCode) {
        $body = $response->body;
        print_r("requestId = " . $body->requestId);
        print_r("kode = " . $body->code);
        print_r("pesan = " . $body->message);
        if (200 != $body->code) {
            print_r("pembatalan moderasi suara tidak berhasil. kode:" . $body->code);
        }
    } else {
        print_r("respons tidak berhasil. kode:" . $response->statusCode);
    }
} catch (TeaUnableRetryError $e) {
    var_dump($e->getMessage());
    var_dump($e->getErrorInfo());
    var_dump($e->getLastException());
    var_dump($e->getLastRequest());
}
<?php
require('vendor/autoload.php');

use AlibabaCloud\SDK\Green\V20220302\Models\VoiceModerationResultRequest;
use AlibabaCloud\Tea\Exception\TeaUnableRetryError;
use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
use AlibabaCloud\SDK\Green\V20220302\Green;

$config = new Config([]);
$config->accessKeyId = getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
$config->accessKeySecret = getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
$config->regionId = "ap-southeast-1";
$config->endpoint = "green-cip.ap-southeast-1.aliyuncs.com";

$client = new Green($config);

$request = new VoiceModerationResultRequest();
$request->service = "audio_multilingual_global";
$serviceParameters = ['taskId' => '<task-id>'];
$request->serviceParameters = json_encode($serviceParameters);

$runtime = new RuntimeOptions();
$runtime->readTimeout = 6000;
$runtime->connectTimeout = 3000;

try {
    $response = $client->voiceModerationResult($request, $runtime);
    if (200 == $response->statusCode) {
        $body = $response->body;
        if (200 == $body->code) {
            $data = $body->data;
            echo "taskId: " . $data->taskId . PHP_EOL;
            echo "riskLevel: " . $data->riskLevel . PHP_EOL;
            echo "liveId: " . $data->liveId . PHP_EOL;
            echo "url: " . $data->url . PHP_EOL;
            echo "sliceDetails: " . json_encode($data->sliceDetails) . PHP_EOL;
        }
    }
} catch (TeaUnableRetryError $e) {
    var_dump($e->getMessage());
}

Deteksi audio lokal

Instal dependensi

composer require alibabacloud/green-20220302 3.2.4

Kirimkan tugas moderasi

Untuk mengambil hasil, gunakan pola VoiceModerationResultRequest yang sama dari Deteksi audio yang dapat diakses publik.

Kode contoh untuk membatalkan tugas moderasi stream langsung

<?php
require('vendor/autoload.php');

use AlibabaCloud\SDK\Green\V20220302\Models\VoiceModerationCancelRequest;
use AlibabaCloud\Tea\Exception\TeaUnableRetryError;
use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
use AlibabaCloud\SDK\Green\V20220302\Green;

$config = new Config([]);
/**
 * Pasangan Kunci Akses Akun Alibaba Cloud memiliki izin untuk semua operasi API. Menggunakan kredensial ini untuk melakukan operasi merupakan operasi berisiko tinggi. Kami menyarankan Anda menggunakan Pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
 * Kami sangat menyarankan agar Anda tidak menyimpan ID AccessKey dan Rahasia AccessKey Anda di kode proyek Anda. Hal ini dapat menyebabkan kebocoran Pasangan Kunci Akses dan membahayakan keamanan semua sumber daya dalam akun Anda.
 * Metode umum untuk mendapatkan variabel lingkungan:
 * Dapatkan ID AccessKey Pengguna RAM Anda: getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
 * Dapatkan Rahasia AccessKey Pengguna RAM Anda: getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
 */
$config->accessKeyId = "Kami menyarankan Anda mendapatkan ID AccessKey Pengguna RAM Anda dari variabel lingkungan";
$config->accessKeySecret = "Kami menyarankan Anda mendapatkan Rahasia AccessKey Pengguna RAM Anda dari variabel lingkungan";
// Ubah wilayah dan titik akhir sesuai kebutuhan.
$config->regionId = "cn-shanghai";
$config->endpoint = "green-cip.cn-shanghai.aliyuncs.com";
// Atur proxy HTTP.
// $config->httpProxy = "http://10.10.xx.xx:xxxx";
// Atur proxy HTTPS.
// $config->httpsProxy = "http://10.10.xx.xx:xxxx";
// Catatan: Untuk meningkatkan kinerja moderasi, gunakan kembali instance client. Ini menghindari pembuatan koneksi berulang.
$client = new Green($config);

$request = new VoiceModerationCancelRequest();
// Jenis moderasi. audio_media_detection untuk moderasi file audio, live_stream_detection untuk moderasi stream audio langsung.
$request->service = "audio_media_detection";
// taskId yang dikembalikan saat tugas dikirimkan.
$serviceParameters = array('taskId' => 'au_f_O5z5iaIis3iI0X2oNYj7qa-1x****');

$request->serviceParameters = json_encode($serviceParameters);

$runtime = new RuntimeOptions();
$runtime->readTimeout = 6000;
$runtime->connectTimeout = 3000;

try {
    $response = $client->voiceModerationCancel($request, $runtime);
    print_r($response->body);
    if (200 == $response->statusCode) {
        $body = $response->body;
        print_r("requestId = " . $body->requestId);
        print_r("kode = " . $body->code);
        print_r("pesan = " . $body->message);
        if (200 != $body->code) {
            print_r("pembatalan moderasi suara tidak berhasil. kode:" . $body->code);
        }
    } else {
        print_r("respons tidak berhasil. kode:" . $response->statusCode);
    }
} catch (TeaUnableRetryError $e) {
    var_dump($e->getMessage());
    var_dump($e->getErrorInfo());
    var_dump($e->getLastException());
    var_dump($e->getLastRequest());
}

Deteksi audio yang disimpan di OSS

Buat peran layanan di halaman Otorisasi Akses Sumber Daya Cloud.

Instal dependensi

composer require alibabacloud/green-20220302 3.2.4

Kirimkan tugas moderasi

<?php
require('vendor/autoload.php');

use AlibabaCloud\SDK\Green\V20220302\Models\VoiceModerationRequest;
use AlibabaCloud\Tea\Exception\TeaUnableRetryError;
use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
use AlibabaCloud\SDK\Green\V20220302\Green;

$config = new Config([]);
$config->accessKeyId = getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
$config->accessKeySecret = getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
$config->regionId = "ap-southeast-1";
$config->endpoint = "green-cip.ap-southeast-1.aliyuncs.com";

$client = new Green($config);

$request = new VoiceModerationRequest();
$request->service = "audio_multilingual_global";
$serviceParameters = [
    'ossObjectName' => 'voice/001.wav',
    'ossRegionId' => 'cn-shanghai',
    'ossBucketName' => '<your-bucket-name>',
    'dataId' => uniqid()
];
$request->serviceParameters = json_encode($serviceParameters);

$runtime = new RuntimeOptions();
$runtime->readTimeout = 6000;
$runtime->connectTimeout = 3000;

try {
    $response = $client->voiceModeration($request, $runtime);
    if (200 == $response->statusCode && 200 == $response->body->code) {
        echo "taskId: " . $response->body->data->taskId . PHP_EOL;
    }
} catch (TeaUnableRetryError $e) {
    var_dump($e->getMessage());
}

Untuk mengambil hasil, gunakan pola VoiceModerationResultRequest yang sama dari Deteksi audio yang dapat diakses publik.

Kode contoh untuk membatalkan tugas moderasi stream langsung

<?php
require('vendor/autoload.php');

use AlibabaCloud\SDK\Green\V20220302\Models\VoiceModerationCancelRequest;
use AlibabaCloud\Tea\Exception\TeaUnableRetryError;
use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
use AlibabaCloud\SDK\Green\V20220302\Green;

$config = new Config([]);
/**
 * Pasangan Kunci Akses Akun Alibaba Cloud memiliki izin untuk semua operasi API. Menggunakan kredensial ini untuk melakukan operasi merupakan operasi berisiko tinggi. Kami menyarankan Anda menggunakan Pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
 * Kami sangat menyarankan agar Anda tidak menyimpan ID AccessKey dan Rahasia AccessKey Anda di kode proyek Anda. Hal ini dapat menyebabkan kebocoran Pasangan Kunci Akses dan membahayakan keamanan semua sumber daya dalam akun Anda.
 * Metode umum untuk mendapatkan variabel lingkungan:
 * Dapatkan ID AccessKey Pengguna RAM Anda: getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
 * Dapatkan Rahasia AccessKey Pengguna RAM Anda: getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
 */
$config->accessKeyId = "Kami menyarankan Anda mendapatkan ID AccessKey Pengguna RAM Anda dari variabel lingkungan";
$config->accessKeySecret = "Kami menyarankan Anda mendapatkan Rahasia AccessKey Pengguna RAM Anda dari variabel lingkungan";
// Ubah wilayah dan titik akhir sesuai kebutuhan.
$config->regionId = "cn-shanghai";
$config->endpoint = "green-cip.cn-shanghai.aliyuncs.com";
// Atur proxy HTTP.
// $config->httpProxy = "http://10.10.xx.xx:xxxx";
// Atur proxy HTTPS.
// $config->httpsProxy = "http://10.10.xx.xx:xxxx";
// Catatan: Untuk meningkatkan kinerja moderasi, gunakan kembali instance client. Ini menghindari pembuatan koneksi berulang.
$client = new Green($config);

$request = new VoiceModerationCancelRequest();
// Jenis moderasi. audio_media_detection untuk moderasi file audio, live_stream_detection untuk moderasi stream audio langsung.
$request->service = "audio_media_detection";
// taskId yang dikembalikan saat tugas dikirimkan.
$serviceParameters = array('taskId' => 'au_f_O5z5iaIis3iI0X2oNYj7qa-1x****');

$request->serviceParameters = json_encode($serviceParameters);

$runtime = new RuntimeOptions();
$runtime->readTimeout = 6000;
$runtime->connectTimeout = 3000;

try {
    $response = $client->voiceModerationCancel($request, $runtime);
    print_r($response->body);
    if (200 == $response->statusCode) {
        $body = $response->body;
        print_r("requestId = " . $body->requestId);
        print_r("kode = " . $body->code);
        print_r("pesan = " . $body->message);
        if (200 != $body->code) {
            print_r("pembatalan moderasi suara tidak berhasil. kode:" . $body->code);
        }
    } else {
        print_r("respons tidak berhasil. kode:" . $response->statusCode);
    }
} catch (TeaUnableRetryError $e) {
    var_dump($e->getMessage());
    var_dump($e->getErrorInfo());
    var_dump($e->getLastException());
    var_dump($e->getLastRequest());
}

Go SDK

Deteksi audio yang dapat diakses publik

Instal dependensi

go get github.com/alibabacloud-go/green-20220302/v3@v3.2.4

Kirimkan tugas moderasi

package main

import (
    "encoding/json"
    "fmt"
    openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
    green "github.com/alibabacloud-go/green-20220302/v3/client"
    "github.com/alibabacloud-go/tea/tea"
    "net/http"
)

func main() {
    config := &openapi.Config{
        /**
         * Pasangan Kunci Akses Akun Alibaba Cloud memiliki izin untuk semua operasi API. Menggunakan kredensial ini untuk melakukan operasi merupakan operasi berisiko tinggi. Kami menyarankan Anda menggunakan Pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
         * Kami sangat menyarankan agar Anda tidak menyimpan ID AccessKey dan Rahasia AccessKey Anda di kode proyek Anda. Hal ini dapat menyebabkan kebocoran Pasangan Kunci Akses dan membahayakan keamanan semua sumber daya dalam akun Anda.
         * Metode umum untuk mendapatkan variabel lingkungan:
         * Dapatkan ID AccessKey Pengguna RAM Anda: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
         * Dapatkan Rahasia AccessKey Pengguna RAM Anda: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
         */
        AccessKeyId: tea.String("Kami menyarankan Anda mendapatkan ID AccessKey Pengguna RAM Anda dari variabel lingkungan"),
        AccessKeySecret: tea.String("Kami menyarankan Anda mendapatkan Rahasia AccessKey Pengguna RAM Anda dari variabel lingkungan"),
        // Tentukan wilayah Anda.
        RegionId: tea.String("ap-southeast-1"),
        Endpoint: tea.String("green-cip.ap-southeast-1.aliyuncs.com"),
        // Atur proxy HTTP.
        // HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"),
        // Atur proxy HTTPS.
        // HttpsProxy: tea.String("https://xx.xx.xx.xx:xxxx"),
        /**
         * Atur periode timeout. Periode timeout sisi server untuk seluruh link adalah 10 detik. Atur periode timeout sesuai.
         * Jika nilai ReadTimeout kurang dari waktu pemrosesan sisi server, exception ReadTimeout akan dikembalikan.
         */
        ConnectTimeout: tea.Int(3000),
        ReadTimeout:    tea.Int(6000),
    }
    // Catatan: Untuk meningkatkan kinerja moderasi, gunakan kembali instance client. Ini menghindari pembuatan koneksi berulang.
    client, _err := green.NewClient(config)
    if _err != nil {
        panic(_err)
    }

    serviceParameters, _ := json.Marshal(
        map[string]interface{}{
            "taskId": "<ID Tugas>",
        },
    )
    request := green.VoiceModerationResultRequest{
        // Layanan moderasi suara.
        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("respons berhasil. respons:" + voiceModerationResponse.String())
        if tea.IntValue(tea.ToInt(voiceModerationResponse.Code)) == 200 {
            resultResponseBodyData := voiceModerationResponse.Data
            fmt.Println("respons liveId:" + tea.StringValue(resultResponseBodyData.LiveId))
            fmt.Println("respons sliceDetails:" + tea.ToString(resultResponseBodyData.SliceDetails))
        } else {
            fmt.Println("mendapatkan hasil moderasi suara tidak berhasil. kode:" + tea.ToString(tea.Int32Value(voiceModerationResponse.Code)))
        }
    } else {
        fmt.Println("respons tidak berhasil. status:" + tea.ToString(statusCode))
    }
}
                                
package main

import (
    "encoding/json"
    "fmt"
    openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
    green "github.com/alibabacloud-go/green-20220302/v3/client"
    "github.com/alibabacloud-go/tea/tea"
    "net/http"
)

func main() {
    config := &openapi.Config{
        /**
         * Pasangan Kunci Akses Akun Alibaba Cloud memiliki izin untuk semua operasi API. Menggunakan kredensial ini untuk melakukan operasi merupakan operasi berisiko tinggi. Kami menyarankan Anda menggunakan Pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
         * Kami sangat menyarankan agar Anda tidak menyimpan ID AccessKey dan Rahasia AccessKey Anda di kode proyek Anda. Hal ini dapat menyebabkan kebocoran Pasangan Kunci Akses dan membahayakan keamanan semua sumber daya dalam akun Anda.
         * Metode umum untuk mendapatkan variabel lingkungan:
         * Dapatkan ID AccessKey Pengguna RAM Anda: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
         * Dapatkan Rahasia AccessKey Pengguna RAM Anda: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
         */
        AccessKeyId: tea.String("Kami menyarankan Anda mendapatkan ID AccessKey Pengguna RAM Anda dari variabel lingkungan"),
        AccessKeySecret: tea.String("Kami menyarankan Anda mendapatkan Rahasia AccessKey Pengguna RAM Anda dari variabel lingkungan"),
        // Tentukan wilayah Anda.
        RegionId: tea.String("ap-southeast-1"),
        Endpoint: tea.String("green-cip.ap-southeast-1.aliyuncs.com"),
        // Atur proxy HTTP.
        //HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"),
        // Atur proxy HTTPS.
        //HttpsProxy: tea.String("https://xx.xx.xx.xx:xxxx"),
        /**
         * Atur periode timeout. Periode timeout sisi server untuk seluruh link adalah 10 detik. Atur periode timeout sesuai.
         * Jika nilai ReadTimeout kurang dari waktu pemrosesan sisi server, exception ReadTimeout akan dikembalikan.
         */
        ConnectTimeout: tea.Int(3000),
        ReadTimeout:    tea.Int(6000),
    }
    // Catatan: Untuk meningkatkan kinerja moderasi, gunakan kembali instance client. Ini menghindari pembuatan koneksi berulang.
    client, _err := green.NewClient(config)
    if _err != nil {
        panic(_err)
    }
    // URL file audio yang akan dimoderasi.
    serviceParameters, _ := json.Marshal(
        map[string]interface{}{
            	//Wilayah tempat bucket OSS yang menyimpan file audio berada. Contoh: cn-shanghai.
		"ossRegionId": "cn-shanghai",
		//Nama bucket OSS yang menyimpan file audio. Contoh: bucket001.
		"ossBucketName":"bucket001",
		//Nama objek file audio. Contoh: voice/001.wav.
		"ossObjectName":"voice/001.wav",
		//ID data yang akan dimoderasi.
		"dataId":   uuid.New().String(),
        },
    )
    request := green.VoiceModerationRequest{
        // Layanan moderasi suara.
        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("respons berhasil. respons:" + voiceModerationResponse.String())
        if tea.IntValue(tea.ToInt(voiceModerationResponse.Code)) == 200 {
            voiceModerationResponseData := voiceModerationResponse.Data
            fmt.Println("respons taskId:" + tea.StringValue(voiceModerationResponseData.TaskId))
        } else {
            fmt.Println("moderasi suara tidak berhasil. kode:" + tea.ToString(tea.Int32Value(voiceModerationResponse.Code)))
        }
    } else {
        fmt.Println("respons tidak berhasil. status:" + tea.ToString(statusCode))
    }
}
package main

import (
    "encoding/json"
    "fmt"
    openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
    green "github.com/alibabacloud-go/green-20220302/v3/client"
    "github.com/alibabacloud-go/tea/tea"
    "net/http"
)

func main() {
    config := &openapi.Config{
        /**
         * Pasangan Kunci Akses Akun Alibaba Cloud memiliki izin untuk semua operasi API. Menggunakan kredensial ini untuk melakukan operasi merupakan operasi berisiko tinggi. Kami menyarankan Anda menggunakan Pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
         * Kami sangat menyarankan agar Anda tidak menyimpan ID AccessKey dan Rahasia AccessKey Anda di kode proyek Anda. Hal ini dapat menyebabkan kebocoran Pasangan Kunci Akses dan membahayakan keamanan semua sumber daya dalam akun Anda.
         * Metode umum untuk mendapatkan variabel lingkungan:
         * Dapatkan ID AccessKey Pengguna RAM Anda: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
         * Dapatkan Rahasia AccessKey Pengguna RAM Anda: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
         */
        AccessKeyId: tea.String("Kami menyarankan Anda mendapatkan ID AccessKey Pengguna RAM Anda dari variabel lingkungan"),
        AccessKeySecret: tea.String("Kami menyarankan Anda mendapatkan Rahasia AccessKey Pengguna RAM Anda dari variabel lingkungan"),
        // Tentukan wilayah Anda.
        RegionId: tea.String("ap-southeast-1"),
        Endpoint: tea.String("green-cip.ap-southeast-1.aliyuncs.com"),
        // Atur proxy HTTP.
        // HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"),
        // Atur proxy HTTPS.
        // HttpsProxy: tea.String("https://xx.xx.xx.xx:xxxx"),
        /**
         * Atur periode timeout. Periode timeout sisi server untuk seluruh link adalah 10 detik. Atur periode timeout sesuai.
         * Jika nilai ReadTimeout kurang dari waktu pemrosesan sisi server, exception ReadTimeout akan dikembalikan.
         */
        ConnectTimeout: tea.Int(3000),
        ReadTimeout:    tea.Int(6000),
    }
    // Catatan: Untuk meningkatkan kinerja moderasi, gunakan kembali instance client. Ini menghindari pembuatan koneksi berulang.
    client, _err := green.NewClient(config)
    if _err != nil {
        panic(_err)
    }

    serviceParameters, _ := json.Marshal(
        map[string]interface{}{
            "taskId": "<ID Tugas>",
        },
    )
    request := green.VoiceModerationResultRequest{
        // Layanan moderasi suara.
        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("respons berhasil. respons:" + voiceModerationResponse.String())
        if tea.IntValue(tea.ToInt(voiceModerationResponse.Code)) == 200 {
            resultResponseBodyData := voiceModerationResponse.Data
            fmt.Println("respons liveId:" + tea.StringValue(resultResponseBodyData.LiveId))
            fmt.Println("respons sliceDetails:" + tea.ToString(resultResponseBodyData.SliceDetails))
        } else {
            fmt.Println("mendapatkan hasil moderasi suara tidak berhasil. kode:" + tea.ToString(tea.Int32Value(voiceModerationResponse.Code)))
        }
    } else {
        fmt.Println("respons tidak berhasil. status:" + tea.ToString(statusCode))
    }
}
                                
package main

import (
    "encoding/json"
    "fmt"
    openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
    green20220302 "github.com/alibabacloud-go/green-20220302/v3/client"
    util "github.com/alibabacloud-go/tea-utils/v2/service"
    "github.com/alibabacloud-go/tea/tea"
    "github.com/aliyun/aliyun-oss-go-sdk/oss"
    "github.com/google/uuid"
    "net/http"
    "os"
    "strings"
    "time"
)
//Token yang digunakan untuk mengunggah file.
var TokenMap =make(map[string]*green20220302.DescribeUploadTokenResponseBodyData)
//Client yang digunakan untuk mengunggah file.
var Bucket *oss.Bucket
//Menentukan apakah layanan dideploy di VPC.
var isVPC = false
//Buat client.
func createClient(accessKeyId string, accessKeySecret string, endpoint string) (*green20220302.Client, error) {
    config := &openapi.Config{
    AccessKeyId: tea.String(accessKeyId),
    AccessKeySecret: tea.String(accessKeySecret),
    // Atur proxy HTTP.
    // HttpProxy: tea.String("http://10.10.xx.xx:xxxx"),
    // Atur proxy HTTPS.
    // HttpsProxy: tea.String("https://username:password@xxx.xxx.xxx.xxx:9999"),
    Endpoint: tea.String(endpoint),
    }
    //Catatan: Untuk meningkatkan kinerja moderasi, gunakan kembali instance client. Ini menghindari pembuatan koneksi berulang.
    return green20220302.NewClient(config);
}

//Buat client untuk mengunggah file.
func createOssClient(tokenData *green20220302.DescribeUploadTokenResponseBodyData) {
    if isVPC{
    ossClient, err := oss.New(tea.StringValue(tokenData.OssInternalEndPoint), tea.StringValue(tokenData.AccessKeyId), tea.StringValue(tokenData.AccessKeySecret), oss.SecurityToken(tea.StringValue(tokenData.SecurityToken)))
    if err != nil {
    fmt.Println("Error:", err)
    os.Exit(-1)
    }
    Bucket, _ =ossClient.Bucket(tea.StringValue(tokenData.BucketName));
    }else {
    ossClient, err := oss.New(tea.StringValue(tokenData.OssInternetEndPoint), tea.StringValue(tokenData.AccessKeyId), tea.StringValue(tokenData.AccessKeySecret), oss.SecurityToken(tea.StringValue(tokenData.SecurityToken)))
    if err != nil {
    fmt.Println("Error:", err)
    os.Exit(-1)
    }
    Bucket, _ =ossClient.Bucket(tea.StringValue(tokenData.BucketName));
    }
}

//Unggah file.
func uploadFile(filePath string,tokenData *green20220302.DescribeUploadTokenResponseBodyData) (string,error) {
    createOssClient(tokenData)
    objectName := tea.StringValue(tokenData.FileNamePrefix) + uuid.New().String() + "." + strings.Split(filePath, ".")[1]
    //Unggah file.
    _err := Bucket.PutObjectFromFile(objectName, filePath)
    if _err != nil {
    fmt.Println("Error:", _err)
    os.Exit(-1)
    }
    return objectName,_err
}

func invoke(accessKeyId string, accessKeySecret string, endpoint string) (_result *green20220302.VoiceModerationResponse, _err error) {
    //Catatan: Untuk meningkatkan kinerja moderasi, gunakan kembali instance client. Ini menghindari pembuatan koneksi berulang.
    client, _err := createClient(accessKeyId, accessKeySecret, endpoint)
    if _err != nil {
    return nil,_err
    }
    //Atur parameter runtime. Pengaturan hanya berlaku pada permintaan yang menggunakan instance parameter runtime ini.
    runtime := &util.RuntimeOptions{}
    //Path lengkap file lokal. Contoh: D:\localPath\exampleFile.wav.
    var filePath = "D:\\localPath\\exampleFile.wav"
    //Dapatkan token sementara untuk mengunggah file.
    tokenData,ok:=TokenMap[endpoint];
    if !ok || tea.Int32Value(tokenData.Expiration) <= int32(time.Now().Unix()) {
    //Dapatkan token sementara untuk mengunggah file.
    uploadTokenResponse, _err := client.DescribeUploadToken()
    if _err != nil {
    return nil,_err
    }
    tokenData = uploadTokenResponse.Body.Data
    TokenMap[endpoint] = tokenData
    }
     var objectName, _ = uploadFile(filePath,TokenMap[endpoint])

    //Konstruksi permintaan moderasi audio.
    serviceParameters, _ := json.Marshal(
    map[string]interface{}{
    "ossBucketName": tea.StringValue(TokenMap[endpoint].BucketName),
    "ossObjectName": objectName,
    "dataId":   uuid.New().String(),
    },
    )
    voiceModerationRequest := &green20220302.VoiceModerationRequest{
    // Layanan moderasi suara.
      Service:           tea.String("audio_multilingual_global"),
    ServiceParameters: tea.String(string(serviceParameters)),
    }

    return client.VoiceModerationWithOptions(voiceModerationRequest, runtime)

}

func main() {
    /**
     * Pasangan Kunci Akses Akun Alibaba Cloud memiliki izin untuk semua operasi API. Menggunakan kredensial ini untuk melakukan operasi merupakan operasi berisiko tinggi. Kami menyarankan Anda menggunakan Pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
     * Kami sangat menyarankan agar Anda tidak menyimpan ID AccessKey dan Rahasia AccessKey Anda di kode proyek Anda. Hal ini dapat menyebabkan kebocoran Pasangan Kunci Akses dan membahayakan keamanan semua sumber daya dalam akun Anda.
     * Metode umum untuk mendapatkan variabel lingkungan:
     * Dapatkan ID AccessKey Pengguna RAM Anda: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
     * Dapatkan Rahasia AccessKey Pengguna RAM Anda: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
     */
    var accessKeyId= "Kami menyarankan Anda mendapatkan ID AccessKey Pengguna RAM Anda dari variabel lingkungan";
    var accessKeySecret= "Kami menyarankan Anda mendapatkan Rahasia AccessKey Pengguna RAM Anda dari variabel lingkungan";
    //Ubah wilayah dan titik akhir sesuai kebutuhan.
    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
    }
    //Routing otomatis. Wilayah dialihkan ke 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("respons berhasil. respons:" + body.String())
    if tea.IntValue(tea.ToInt(body.Code)) == 200 {
    result := voiceModerationResponseData.Result
    fmt.Println("respons dataId:" + tea.StringValue(voiceModerationResponseData.DataId))
    for i := 0; i < len(result); i++ {
    fmt.Println("respons label:" + tea.StringValue(result[i].Label))
    fmt.Println("respons confidence:" + tea.ToString(tea.Float32Value(result[i].Confidence)))
    }
    } else {
    fmt.Println("moderasi suara tidak berhasil. status" + tea.ToString(body.Code))
    }
    } else {
    fmt.Print("respons tidak berhasil. status:" + tea.ToString(statusCode))
    }
    }
}
package main

import (
    "encoding/json"
    "fmt"
    openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
    green "github.com/alibabacloud-go/green-20220302/v3/client"
    "github.com/alibabacloud-go/tea/tea"
    "net/http"
)

func main() {
    config := &openapi.Config{
        /**
         * Pasangan Kunci Akses Akun Alibaba Cloud memiliki izin untuk semua operasi API. Menggunakan kredensial ini untuk melakukan operasi merupakan operasi berisiko tinggi. Kami menyarankan Anda menggunakan Pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
         * Kami sangat menyarankan agar Anda tidak menyimpan ID AccessKey dan Rahasia AccessKey Anda di kode proyek Anda. Hal ini dapat menyebabkan kebocoran Pasangan Kunci Akses dan membahayakan keamanan semua sumber daya dalam akun Anda.
         * Metode umum untuk mendapatkan variabel lingkungan:
         * Dapatkan ID AccessKey Pengguna RAM Anda: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
         * Dapatkan Rahasia AccessKey Pengguna RAM Anda: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
         */
        AccessKeyId: tea.String("Kami menyarankan Anda mendapatkan ID AccessKey Pengguna RAM Anda dari variabel lingkungan"),
        AccessKeySecret: tea.String("Kami menyarankan Anda mendapatkan Rahasia AccessKey Pengguna RAM Anda dari variabel lingkungan"),
        // Tentukan wilayah Anda.
        RegionId: tea.String("ap-southeast-1"),
        Endpoint: tea.String("green-cip.ap-southeast-1.aliyuncs.com"),
        // Atur proxy HTTP.
        // HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"),
        // Atur proxy HTTPS.
        // HttpsProxy: tea.String("https://xx.xx.xx.xx:xxxx"),
        /**
         * Atur periode timeout. Periode timeout sisi server untuk seluruh link adalah 10 detik. Atur periode timeout sesuai.
         * Jika nilai ReadTimeout kurang dari waktu pemrosesan sisi server, exception ReadTimeout akan dikembalikan.
         */
        ConnectTimeout: tea.Int(3000),
        ReadTimeout:    tea.Int(6000),
    }
    // Catatan: Untuk meningkatkan kinerja moderasi, gunakan kembali instance client. Ini menghindari pembuatan koneksi berulang.
    client, _err := green.NewClient(config)
    if _err != nil {
        panic(_err)
    }

    serviceParameters, _ := json.Marshal(
        map[string]interface{}{
            "taskId": "<ID Tugas>",
        },
    )
    request := green.VoiceModerationResultRequest{
        // Layanan moderasi suara.
        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("respons berhasil. respons:" + voiceModerationResponse.String())
        if tea.IntValue(tea.ToInt(voiceModerationResponse.Code)) == 200 {
            resultResponseBodyData := voiceModerationResponse.Data
            fmt.Println("respons liveId:" + tea.StringValue(resultResponseBodyData.LiveId))
            fmt.Println("respons sliceDetails:" + tea.ToString(resultResponseBodyData.SliceDetails))
        } else {
            fmt.Println("mendapatkan hasil moderasi suara tidak berhasil. kode:" + tea.ToString(tea.Int32Value(voiceModerationResponse.Code)))
        }
    } else {
        fmt.Println("respons tidak berhasil. status:" + tea.ToString(statusCode))
    }
}
                                

Ambil hasil moderasi

Kode contoh untuk membatalkan tugas moderasi stream langsung

package main

import (
    "encoding/json"
    "fmt"
    openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
    green "github.com/alibabacloud-go/green-20220302/v3/client"
    "github.com/alibabacloud-go/tea/tea"
    "net/http"
)

func main() {
    config := &openapi.Config{
        /**
         * Pasangan Kunci Akses Akun Alibaba Cloud memiliki izin untuk semua operasi API. Menggunakan kredensial ini untuk melakukan operasi merupakan operasi berisiko tinggi. Kami menyarankan Anda menggunakan Pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
         * Kami sangat menyarankan agar Anda tidak menyimpan ID AccessKey dan Rahasia AccessKey Anda di kode proyek Anda. Hal ini dapat menyebabkan kebocoran Pasangan Kunci Akses dan membahayakan keamanan semua sumber daya dalam akun Anda.
         * Metode umum untuk mendapatkan variabel lingkungan:
         * Dapatkan ID AccessKey Pengguna RAM Anda: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
         * Dapatkan Rahasia AccessKey Pengguna RAM Anda: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
         */
        AccessKeyId: tea.String("Kami menyarankan Anda mendapatkan ID AccessKey Pengguna RAM Anda dari variabel lingkungan"),
        AccessKeySecret: tea.String("Kami menyarankan Anda mendapatkan Rahasia AccessKey Pengguna RAM Anda dari variabel lingkungan"),
        // Tentukan wilayah Anda.
        RegionId: tea.String("cn-shanghai"),
        Endpoint: tea.String("green-cip.cn-shanghai.aliyuncs.com"),
        // Atur proxy HTTP.
        // HttpProxy: tea.String("http://10.10.xx.xx:xxxx"),
        // Atur proxy HTTPS.
        // HttpsProxy: tea.String("https://10.10.xx.xx:xxxx"),
        /**
         * Atur periode timeout. Periode timeout sisi server untuk seluruh link adalah 10 detik. Atur periode timeout sesuai.
         * Jika nilai ReadTimeout kurang dari waktu pemrosesan sisi server, exception ReadTimeout akan dikembalikan.
         */
        ConnectTimeout: tea.Int(3000),
        ReadTimeout:    tea.Int(6000),
    }
    // Catatan: Untuk meningkatkan kinerja moderasi, gunakan kembali instance client. Ini menghindari pembuatan koneksi berulang.
    client, _err := green.NewClient(config)
    if _err != nil {
        panic(_err)
    }

    serviceParameters, _ := json.Marshal(
        map[string]interface{}{
            "taskId": "<ID tugas yang akan dibatalkan>",
        },
    )
    request := green.VoiceModerationCancelRequest{
        // Layanan moderasi suara.
        Service:           tea.String("audio_media_detection"),
        ServiceParameters: tea.String(string(serviceParameters)),
    }
    result, _err := client.VoiceModerationCancel(&request)
    if _err != nil {
        panic(_err)
    }
    statusCode := tea.IntValue(tea.ToInt(result.StatusCode))
    if statusCode == http.StatusOK {
        cancelResponseBody := result.Body
        fmt.Println("respons berhasil. respons:" + cancelResponseBody.String())
        if tea.IntValue(tea.ToInt(cancelResponseBody.Code)) != 200 {
            fmt.Println("pembatalan moderasi suara tidak berhasil. kode:" + tea.ToString(tea.Int32Value(cancelResponseBody.Code)))
        }
    } else {
        fmt.Println("respons tidak berhasil. status:" + tea.ToString(statusCode))
    }
}
package main

import (
    "encoding/json"
    "fmt"
    openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
    green "github.com/alibabacloud-go/green-20220302/v3/client"
    "github.com/alibabacloud-go/tea/tea"
    "net/http"
    "os"
)

func main() {
    config := &openapi.Config{
        AccessKeyId:     tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")),
        AccessKeySecret: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")),
        RegionId:        tea.String("ap-southeast-1"),
        Endpoint:        tea.String("green-cip.ap-southeast-1.aliyuncs.com"),
        ConnectTimeout:  tea.Int(3000),
        ReadTimeout:     tea.Int(6000),
    }
    client, err := green.NewClient(config)
    if err != nil {
        panic(err)
    }

    serviceParameters, _ := json.Marshal(map[string]interface{}{
        "taskId": "<task-id>",
    })
    request := green.VoiceModerationResultRequest{
        Service:           tea.String("audio_multilingual_global"),
        ServiceParameters: tea.String(string(serviceParameters)),
    }

    result, err := client.VoiceModerationResult(&request)
    if err != nil {
        panic(err)
    }
    if tea.IntValue(tea.ToInt(result.StatusCode)) == http.StatusOK {
        body := result.Body
        if tea.IntValue(tea.ToInt(body.Code)) == 200 {
            data := body.Data
            fmt.Println("taskId:", tea.StringValue(data.TaskId))
            fmt.Println("riskLevel:", tea.StringValue(data.RiskLevel))
            fmt.Println("liveId:", tea.StringValue(data.LiveId))
            fmt.Println("sliceDetails:", tea.ToString(data.SliceDetails))
        }
    }
}

Deteksi audio lokal

Instal dependensi

go get github.com/alibabacloud-go/green-20220302/v3@v3.2.4

Untuk kode contoh Go lengkap untuk moderasi audio lokal, buatlah menggunakan OpenAPI Explorer.

Kode contoh untuk membatalkan tugas moderasi stream langsung

package main

import (
    "encoding/json"
    "fmt"
    openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
    green "github.com/alibabacloud-go/green-20220302/v3/client"
    "github.com/alibabacloud-go/tea/tea"
    "net/http"
)

func main() {
    config := &openapi.Config{
        /**
         * Pasangan Kunci Akses Akun Alibaba Cloud memiliki izin untuk semua operasi API. Menggunakan kredensial ini untuk melakukan operasi merupakan operasi berisiko tinggi. Kami menyarankan Anda menggunakan Pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
         * Kami sangat menyarankan agar Anda tidak menyimpan ID AccessKey dan Rahasia AccessKey Anda di kode proyek Anda. Hal ini dapat menyebabkan kebocoran Pasangan Kunci Akses dan membahayakan keamanan semua sumber daya dalam akun Anda.
         * Metode umum untuk mendapatkan variabel lingkungan:
         * Dapatkan ID AccessKey Pengguna RAM Anda: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
         * Dapatkan Rahasia AccessKey Pengguna RAM Anda: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
         */
        AccessKeyId: tea.String("Kami menyarankan Anda mendapatkan ID AccessKey Pengguna RAM Anda dari variabel lingkungan"),
        AccessKeySecret: tea.String("Kami menyarankan Anda mendapatkan Rahasia AccessKey Pengguna RAM Anda dari variabel lingkungan"),
        // Tentukan wilayah Anda.
        RegionId: tea.String("cn-shanghai"),
        Endpoint: tea.String("green-cip.cn-shanghai.aliyuncs.com"),
        // Atur proxy HTTP.
        // HttpProxy: tea.String("http://10.10.xx.xx:xxxx"),
        // Atur proxy HTTPS.
        // HttpsProxy: tea.String("https://10.10.xx.xx:xxxx"),
        /**
         * Atur periode timeout. Periode timeout sisi server untuk seluruh link adalah 10 detik. Atur periode timeout sesuai.
         * Jika nilai ReadTimeout kurang dari waktu pemrosesan sisi server, exception ReadTimeout akan dikembalikan.
         */
        ConnectTimeout: tea.Int(3000),
        ReadTimeout:    tea.Int(6000),
    }
    // Catatan: Untuk meningkatkan kinerja moderasi, gunakan kembali instance client. Ini menghindari pembuatan koneksi berulang.
    client, _err := green.NewClient(config)
    if _err != nil {
        panic(_err)
    }

    serviceParameters, _ := json.Marshal(
        map[string]interface{}{
            "taskId": "<ID tugas yang akan dibatalkan>",
        },
    )
    request := green.VoiceModerationCancelRequest{
        // Layanan moderasi suara.
        Service:           tea.String("audio_media_detection"),
        ServiceParameters: tea.String(string(serviceParameters)),
    }
    result, _err := client.VoiceModerationCancel(&request)
    if _err != nil {
        panic(_err)
    }
    statusCode := tea.IntValue(tea.ToInt(result.StatusCode))
    if statusCode == http.StatusOK {
        cancelResponseBody := result.Body
        fmt.Println("respons berhasil. respons:" + cancelResponseBody.String())
        if tea.IntValue(tea.ToInt(cancelResponseBody.Code)) != 200 {
            fmt.Println("pembatalan moderasi suara tidak berhasil. kode:" + tea.ToString(tea.Int32Value(cancelResponseBody.Code)))
        }
    } else {
        fmt.Println("respons tidak berhasil. status:" + tea.ToString(statusCode))
    }
}

Deteksi audio yang disimpan di OSS

Kasus penggunaan

Jika file audio disimpan di OSS Alibaba Cloud, Anda dapat memberikan otorisasi kepada layanan Content Moderation untuk mengakses OSS dengan membuat peran layanan. Voice Moderation 2.0 dapat mengakses file OSS untuk moderasi melalui peran layanan tersebut. Buka halaman Otorisasi Akses Sumber Daya Clouduntuk membuat peran layanan.

  1. Jalankan perintah berikut untuk menginstal dependensi.

    go get github.com/alibabacloud-go/green-20220302/v3@v3.2.4
  2. Gunakan SDK Go.

    • Kode contoh untuk mengirimkan tugas moderasi suara

      package main
      
      import (
          "encoding/json"
          "fmt"
          openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
          green "github.com/alibabacloud-go/green-20220302/v3/client"
          "github.com/alibabacloud-go/tea/tea"
          "net/http"
      )
      
      func main() {
          config := &openapi.Config{
              /**
               * Pasangan Kunci Akses Akun Alibaba Cloud memiliki izin untuk semua operasi API. Kami menyarankan Anda menggunakan Pengguna RAM untuk panggilan API atau O&M rutin.
               * Kami sangat menyarankan agar Anda tidak menyimpan ID AccessKey dan Rahasia AccessKey Anda di kode proyek Anda. Jika tidak, Pasangan Kunci Akses mungkin bocor dan keamanan semua sumber daya dalam akun Anda mungkin terganggu.
               * Metode umum untuk mendapatkan variabel lingkungan:
               * Dapatkan ID AccessKey Pengguna RAM Anda: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
               * Dapatkan Rahasia AccessKey Pengguna RAM Anda: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
               */
              AccessKeyId: tea.String("Kami menyarankan Anda mendapatkan ID AccessKey Pengguna RAM Anda dari variabel lingkungan"),
              AccessKeySecret: tea.String("Kami menyarankan Anda mendapatkan Rahasia AccessKey Pengguna RAM Anda dari variabel lingkungan"),
              // Tentukan wilayah Anda.
              RegionId: tea.String("ap-southeast-1"),
              Endpoint: tea.String("green-cip.ap-southeast-1.aliyuncs.com"),
              // Atur proxy HTTP.
              //HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"),
              // Atur proxy HTTPS.
              //HttpsProxy: tea.String("https://xx.xx.xx.xx:xxxx"),
              /**
               * Timeout sisi server adalah 10 detik. Atur ConnectTimeout dan ReadTimeout sesuai.
               * Jika ReadTimeout kurang dari waktu pemrosesan server, exception ReadTimeout terjadi.
               */
              ConnectTimeout: tea.Int(3000),
              ReadTimeout:    tea.Int(6000),
          }
          // Catatan: Gunakan kembali instance client untuk menghindari pembuatan koneksi berulang.
          client, _err := green.NewClient(config)
          if _err != nil {
              panic(_err)
          }
          // URL audio yang akan dimoderasi.
          serviceParameters, _ := json.Marshal(
              map[string]interface{}{
                  	// Wilayah bucket OSS. Contoh: cn-shanghai
      		"ossRegionId": "cn-shanghai",
      		// Nama bucket OSS. Contoh: bucket001
      		"ossBucketName":"bucket001",
      		// Nama objek file audio. Contoh: voice/001.wav
      		"ossObjectName":"voice/001.wav",
      		// ID data audio yang akan dimoderasi.
      		"dataId":   uuid.New().String(),
              },
          )
          request := green.VoiceModerationRequest{
              // Kode layanan moderasi suara.
              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("respons berhasil. respons:" + voiceModerationResponse.String())
              if tea.IntValue(tea.ToInt(voiceModerationResponse.Code)) == 200 {
                  voiceModerationResponseData := voiceModerationResponse.Data
                  fmt.Println("respons taskId:" + tea.StringValue(voiceModerationResponseData.TaskId))
              } else {
                  fmt.Println("moderasi suara tidak berhasil. kode:" + tea.ToString(tea.Int32Value(voiceModerationResponse.Code)))
              }
          } else {
              fmt.Println("respons tidak berhasil. status:" + tea.ToString(statusCode))
          }
      }
    • Kode contoh untuk mengambil hasil moderasi suara

      package main
      
      import (
          "encoding/json"
          "fmt"
          openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
          green "github.com/alibabacloud-go/green-20220302/v3/client"
          "github.com/alibabacloud-go/tea/tea"
          "net/http"
      )
      
      func main() {
          config := &openapi.Config{
              /**
               * Pasangan Kunci Akses Akun Alibaba Cloud memiliki izin untuk semua operasi API. Kami menyarankan Anda menggunakan Pengguna RAM untuk panggilan API atau O&M rutin.
               * Kami sangat menyarankan agar Anda tidak menyimpan ID AccessKey dan Rahasia AccessKey Anda di kode proyek Anda. Jika tidak, Pasangan Kunci Akses mungkin bocor dan keamanan semua sumber daya dalam akun Anda mungkin terganggu.
               * Metode umum untuk mendapatkan variabel lingkungan:
               * Dapatkan ID AccessKey Pengguna RAM Anda: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
               * Dapatkan Rahasia AccessKey Pengguna RAM Anda: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
               */
              AccessKeyId: tea.String("Kami menyarankan Anda mendapatkan ID AccessKey Pengguna RAM Anda dari variabel lingkungan"),
              AccessKeySecret: tea.String("Kami menyarankan Anda mendapatkan Rahasia AccessKey Pengguna RAM Anda dari variabel lingkungan"),
              // Tentukan wilayah Anda.
              RegionId: tea.String("ap-southeast-1"),
              Endpoint: tea.String("green-cip.ap-southeast-1.aliyuncs.com"),
              // Atur proxy HTTP.
              // HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"),
              // Atur proxy HTTPS.
              // HttpsProxy: tea.String("https://xx.xx.xx.xx:xxxx"),
              /**
               * Timeout sisi server adalah 10 detik. Atur ConnectTimeout dan ReadTimeout sesuai.
               * Jika ReadTimeout kurang dari waktu pemrosesan server, exception ReadTimeout terjadi.
               */
              ConnectTimeout: tea.Int(3000),
              ReadTimeout:    tea.Int(6000),
          }
          // Catatan: Gunakan kembali instance client untuk menghindari pembuatan koneksi berulang.
          client, _err := green.NewClient(config)
          if _err != nil {
              panic(_err)
          }
      
          serviceParameters, _ := json.Marshal(
              map[string]interface{}{
                  "taskId": "<ID Tugas>",
              },
          )
          request := green.VoiceModerationResultRequest{
              // Kode layanan moderasi suara.
              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("respons berhasil. respons:" + voiceModerationResponse.String())
              if tea.IntValue(tea.ToInt(voiceModerationResponse.Code)) == 200 {
                  resultResponseBodyData := voiceModerationResponse.Data
                  fmt.Println("respons liveId:" + tea.StringValue(resultResponseBodyData.LiveId))
                  fmt.Println("respons sliceDetails:" + tea.ToString(resultResponseBodyData.SliceDetails))
              } else {
                  fmt.Println("mendapatkan hasil moderasi suara tidak berhasil. kode:" + tea.ToString(tea.Int32Value(voiceModerationResponse.Code)))
              }
          } else {
              fmt.Println("respons tidak berhasil. status:" + tea.ToString(statusCode))
          }
      }
                                      

C# SDK

Kode sumber: NuGet

Deteksi audio yang dapat diakses publik

Instal dependensi

dotnet add package AlibabaCloud.SDK.Green20220302 --version 3.2.4

Kirimkan tugas moderasi

using Newtonsoft.Json;
using Tea;

namespace AlibabaCloud.SDK.Sample
{
    public class Sample
    {

        /**
         * Gunakan ID AccessKey dan Rahasia AccessKey untuk menginisialisasi 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,
            };
            // Titik akhir layanan.
            config.Endpoint = "green-cip.ap-southeast-1.aliyuncs.com";
            return new AlibabaCloud.SDK.Green20220302.Client(config);
        }

        public static void Main(string[] args)
        {
            // Hard-coding Pasangan Kunci Akses di kode proyek Anda dapat menyebabkan kebocoran Pasangan Kunci Akses dan membahayakan keamanan semua sumber daya dalam akun Anda. Kode berikut hanya untuk referensi. Kami menyarankan Anda menggunakan metode yang lebih aman, seperti menggunakan token Security Token Service (STS).
            /**
            * Pasangan Kunci Akses Akun Alibaba Cloud memiliki izin untuk semua operasi API. Menggunakan kredensial ini untuk melakukan operasi merupakan operasi berisiko tinggi. Kami menyarankan Anda menggunakan Pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
            * Kami sangat menyarankan agar Anda tidak menyimpan ID AccessKey dan Rahasia AccessKey Anda di kode proyek Anda. Hal ini dapat menyebabkan kebocoran Pasangan Kunci Akses dan membahayakan keamanan semua sumber daya dalam akun Anda.
            * Metode umum untuk mendapatkan variabel lingkungan:
            * Dapatkan ID AccessKey Pengguna RAM Anda: Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID")
            * Dapatkan Rahasia AccessKey Pengguna RAM Anda: Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
            */
            string accessKeyId = "Kami menyarankan Anda mendapatkan ID AccessKey Pengguna RAM Anda dari variabel lingkungan",
            string accessKeySecret = 'Kami menyarankan Anda mendapatkan Rahasia AccessKey Pengguna RAM Anda dari variabel lingkungan',  
          	// Catatan: Untuk meningkatkan kinerja moderasi, gunakan kembali instance client. Ini menghindari pembuatan koneksi berulang.
            AlibabaCloud.SDK.Green20220302.Client client = CreateClient(accessKeyId, accessKeySecret);
            // Konstruksi permintaan moderasi suara.
            AlibabaCloud.SDK.Green20220302.Models.VoiceModerationResultRequest voiceModerationResultRequest = new AlibabaCloud.SDK.Green20220302.Models.VoiceModerationResultRequest();
            // Layanan moderasi suara.
            voiceModerationResultRequest.Service="audio_multilingual_global";
            Dictionary<String,Object> task=new Dictionary<string, object>();
            // ID tugas yang hasilnya ingin Anda kueri.
            task.Add("taskId","<ID tugas yang hasilnya ingin Anda kueri>");
            voiceModerationResultRequest.ServiceParameters=JsonConvert.SerializeObject(task);
            // Buat instance RuntimeObject dan atur parameter runtime.
            AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
            runtime.ReadTimeout = 10000;
            runtime.ConnectTimeout = 10000;
            try
            {
                // Kirimkan tugas moderasi suara.
              AlibabaCloud.SDK.Green20220302.Models.VoiceModerationResultResponse response= client.VoiceModerationResultWithOptions(voiceModerationResultRequest, runtime);
            if(response is not null){
                Console.WriteLine("respons statusCode : "+response.StatusCode);
                if (response.Body is not null){
                Console.WriteLine("requestId : " + response.Body.RequestId);
                Console.WriteLine("kode : " + response.Body.Code);
                Console.WriteLine("pesan : " + 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)
            {
                // Cetak error jika perlu.
                AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
                Console.WriteLine("error : " + error);
            }
            catch (Exception _error)
            {
                TeaException error = new TeaException(new Dictionary<string, object>
                {
                    { "message", _error.Message }
                });
                // Cetak error jika perlu.
                AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
                Console.WriteLine("error : " + error);
            }
        }
    }
}
using Newtonsoft.Json;
using Tea;

namespace AlibabaCloud.SDK.Sample
{
    public class Sample
    {

        /**
         * Gunakan ID AccessKey dan rahasia AccessKey untuk menginisialisasi klien.
         * @param accessKeyId
         * @param accessKeySecret
         * @return Klien
         * @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,
            };
            // Titik akhir layanan.
            config.Endpoint = "green-cip.ap-southeast-1.aliyuncs.com";
            
            return new AlibabaCloud.SDK.Green20220302.Client(config);
        }

        public static void Main(string[] args)
        {
            // Menyematkan pasangan Kunci Akses secara langsung dalam kode proyek Anda dapat menyebabkan kebocoran pasangan Kunci Akses dan membahayakan keamanan semua sumber daya di akun Anda. Kode berikut hanya untuk referensi. Kami menyarankan Anda menggunakan metode yang lebih aman, seperti menggunakan token Layanan Keamanan (STS).
            /**
            * Pasangan Kunci Akses dari akun Alibaba Cloud memiliki izin pada semua operasi API. Menggunakan kredensial ini untuk melakukan operasi adalah operasi berisiko tinggi. Kami menyarankan Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
            * Kami sangat menyarankan agar Anda tidak menyimpan ID AccessKey dan rahasia AccessKey Anda dalam kode proyek Anda. Hal ini dapat menyebabkan kebocoran pasangan Kunci Akses dan membahayakan keamanan semua sumber daya di akun Anda.
            * Metode umum untuk mendapatkan variabel lingkungan:
            * Dapatkan ID AccessKey pengguna RAM Anda: Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID")
            * Dapatkan rahasia AccessKey pengguna RAM Anda: Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
            */
            string accessKeyId = "Kami menyarankan Anda mendapatkan ID AccessKey pengguna RAM Anda dari variabel lingkungan",
            string accessKeySecret = 'Kami menyarankan Anda mendapatkan rahasia AccessKey pengguna RAM Anda dari variabel lingkungan',
            // Catatan: Untuk meningkatkan performa moderasi, gunakan kembali instans klien. Ini menghindari pembuatan koneksi berulang.
            AlibabaCloud.SDK.Green20220302.Client client = CreateClient(accessKeyId, accessKeySecret);
            // Buat permintaan moderasi suara.
            AlibabaCloud.SDK.Green20220302.Models.VoiceModerationRequest voiceModerationRequest = new AlibabaCloud.SDK.Green20220302.Models.VoiceModerationRequest();
            // Layanan moderasi suara.
            voiceModerationRequest.Service="audio_multilingual_global";
            Dictionary<String,Object> task=new Dictionary<string, object>();
            // Contoh meneruskan parameter file OSS.
            task.Add("ossBucketName","bucket_01");
            task.Add("ossObjectName","test/sample.wav");
            task.Add("ossRegionId","cn-shanghai");
            voiceModerationRequest.ServiceParameters=JsonConvert.SerializeObject(task);
            // Buat instans RuntimeObject dan atur parameter waktu proses.
            AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
            runtime.ReadTimeout = 10000;
            runtime.ConnectTimeout = 10000;
            try
            {
                // Kirim tugas moderasi suara.
              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)
            {
                // Cetak kesalahan jika perlu.
                AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
                Console.WriteLine("error : " + error);
            }
            catch (Exception _error)
            {
                TeaException error = new TeaException(new Dictionary<string, object>
                {
                    { "message", _error.Message }
                });
                // Cetak kesalahan jika perlu.
                AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
                Console.WriteLine("error : " + error);
            }
        }
    }
}
using Newtonsoft.Json;
using Tea;

namespace AlibabaCloud.SDK.Sample
{
    public class Sample
    {

        /**
         * Gunakan ID AccessKey dan Rahasia AccessKey untuk menginisialisasi 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,
            };
            // Titik akhir layanan.
            config.Endpoint = "green-cip.ap-southeast-1.aliyuncs.com";
            return new AlibabaCloud.SDK.Green20220302.Client(config);
        }

        public static void Main(string[] args)
        {
            // Hard-coding Pasangan Kunci Akses di kode proyek Anda dapat menyebabkan kebocoran Pasangan Kunci Akses dan membahayakan keamanan semua sumber daya dalam akun Anda. Kode berikut hanya untuk referensi. Kami menyarankan Anda menggunakan metode yang lebih aman, seperti menggunakan token Security Token Service (STS).
            /**
            * Pasangan Kunci Akses Akun Alibaba Cloud memiliki izin untuk semua operasi API. Menggunakan kredensial ini untuk melakukan operasi merupakan operasi berisiko tinggi. Kami menyarankan Anda menggunakan Pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
            * Kami sangat menyarankan agar Anda tidak menyimpan ID AccessKey dan Rahasia AccessKey Anda di kode proyek Anda. Hal ini dapat menyebabkan kebocoran Pasangan Kunci Akses dan membahayakan keamanan semua sumber daya dalam akun Anda.
            * Metode umum untuk mendapatkan variabel lingkungan:
            * Dapatkan ID AccessKey Pengguna RAM Anda: Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID")
            * Dapatkan Rahasia AccessKey Pengguna RAM Anda: Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
            */
            string accessKeyId = "Kami menyarankan Anda mendapatkan ID AccessKey Pengguna RAM Anda dari variabel lingkungan",
            string accessKeySecret = 'Kami menyarankan Anda mendapatkan Rahasia AccessKey Pengguna RAM Anda dari variabel lingkungan',  
          	// Catatan: Untuk meningkatkan kinerja moderasi, gunakan kembali instance client. Ini menghindari pembuatan koneksi berulang.
            AlibabaCloud.SDK.Green20220302.Client client = CreateClient(accessKeyId, accessKeySecret);
            // Konstruksi permintaan moderasi suara.
            AlibabaCloud.SDK.Green20220302.Models.VoiceModerationResultRequest voiceModerationResultRequest = new AlibabaCloud.SDK.Green20220302.Models.VoiceModerationResultRequest();
            // Layanan moderasi suara.
            voiceModerationResultRequest.Service="audio_multilingual_global";
            Dictionary<String,Object> task=new Dictionary<string, object>();
            // ID tugas yang hasilnya ingin Anda kueri.
            task.Add("taskId","<ID tugas yang hasilnya ingin Anda kueri>");
            voiceModerationResultRequest.ServiceParameters=JsonConvert.SerializeObject(task);
            // Buat instance RuntimeObject dan atur parameter runtime.
            AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
            runtime.ReadTimeout = 10000;
            runtime.ConnectTimeout = 10000;
            try
            {
                // Kirimkan tugas moderasi suara.
              AlibabaCloud.SDK.Green20220302.Models.VoiceModerationResultResponse response= client.VoiceModerationResultWithOptions(voiceModerationResultRequest, runtime);
            if(response is not null){
                Console.WriteLine("respons statusCode : "+response.StatusCode);
                if (response.Body is not null){
                Console.WriteLine("requestId : " + response.Body.RequestId);
                Console.WriteLine("kode : " + response.Body.Code);
                Console.WriteLine("pesan : " + 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)
            {
                // Cetak error jika perlu.
                AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
                Console.WriteLine("error : " + error);
            }
            catch (Exception _error)
            {
                TeaException error = new TeaException(new Dictionary<string, object>
                {
                    { "message", _error.Message }
                });
                // Cetak error jika perlu.
                AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
                Console.WriteLine("error : " + error);
            }
        }
    }
}
using Newtonsoft.Json;
using Tea;

namespace AlibabaCloud.SDK.Sample
{
    public class Sample
    {

        /**
         * Gunakan ID AccessKey dan Rahasia AccessKey untuk menginisialisasi 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,
            };
            // Titik akhir layanan.
            config.Endpoint = "green-cip.ap-southeast-1.aliyuncs.com";
            return new AlibabaCloud.SDK.Green20220302.Client(config);
        }

        public static void Main(string[] args)
        {
            // Hard-coding Pasangan Kunci Akses di kode proyek Anda dapat menyebabkan kebocoran Pasangan Kunci Akses dan membahayakan keamanan semua sumber daya dalam akun Anda. Kode berikut hanya untuk referensi. Kami menyarankan Anda menggunakan metode yang lebih aman, seperti menggunakan token Security Token Service (STS).
            /**
            * Pasangan Kunci Akses Akun Alibaba Cloud memiliki izin untuk semua operasi API. Menggunakan kredensial ini untuk melakukan operasi merupakan operasi berisiko tinggi. Kami menyarankan Anda menggunakan Pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
            * Kami sangat menyarankan agar Anda tidak menyimpan ID AccessKey dan Rahasia AccessKey Anda di kode proyek Anda. Hal ini dapat menyebabkan kebocoran Pasangan Kunci Akses dan membahayakan keamanan semua sumber daya dalam akun Anda.
            * Metode umum untuk mendapatkan variabel lingkungan:
            * Dapatkan ID AccessKey Pengguna RAM Anda: Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID")
            * Dapatkan Rahasia AccessKey Pengguna RAM Anda: Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
            */
            string accessKeyId = "Kami menyarankan Anda mendapatkan ID AccessKey Pengguna RAM Anda dari variabel lingkungan",
            string accessKeySecret = 'Kami menyarankan Anda mendapatkan Rahasia AccessKey Pengguna RAM Anda dari variabel lingkungan',  
          	// Catatan: Untuk meningkatkan kinerja moderasi, gunakan kembali instance client. Ini menghindari pembuatan koneksi berulang.
            AlibabaCloud.SDK.Green20220302.Client client = CreateClient(accessKeyId, accessKeySecret);
            // Konstruksi permintaan moderasi suara.
            AlibabaCloud.SDK.Green20220302.Models.VoiceModerationResultRequest voiceModerationResultRequest = new AlibabaCloud.SDK.Green20220302.Models.VoiceModerationResultRequest();
            // Layanan moderasi suara.
            voiceModerationResultRequest.Service="audio_multilingual_global";
            Dictionary<String,Object> task=new Dictionary<string, object>();
            // ID tugas yang hasilnya ingin Anda kueri.
            task.Add("taskId","<ID tugas yang hasilnya ingin Anda kueri>");
            voiceModerationResultRequest.ServiceParameters=JsonConvert.SerializeObject(task);
            // Buat instance RuntimeObject dan atur parameter runtime.
            AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
            runtime.ReadTimeout = 10000;
            runtime.ConnectTimeout = 10000;
            try
            {
                // Kirimkan tugas moderasi suara.
              AlibabaCloud.SDK.Green20220302.Models.VoiceModerationResultResponse response= client.VoiceModerationResultWithOptions(voiceModerationResultRequest, runtime);
            if(response is not null){
                Console.WriteLine("respons statusCode : "+response.StatusCode);
                if (response.Body is not null){
                Console.WriteLine("requestId : " + response.Body.RequestId);
                Console.WriteLine("kode : " + response.Body.Code);
                Console.WriteLine("pesan : " + 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)
            {
                // Cetak error jika perlu.
                AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
                Console.WriteLine("error : " + error);
            }
            catch (Exception _error)
            {
                TeaException error = new TeaException(new Dictionary<string, object>
                {
                    { "message", _error.Message }
                });
                // Cetak error jika perlu.
                AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
                Console.WriteLine("error : " + error);
            }
        }
    }
}

Ambil hasil moderasi

using Newtonsoft.Json;
using Tea;

namespace AlibabaCloud.SDK.Sample
{
    public class Sample
    {
        public static AlibabaCloud.SDK.Green20220302.Client CreateClient(string accessKeyId, string accessKeySecret)
        {
            AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config
            {
                AccessKeyId = accessKeyId,
                AccessKeySecret = accessKeySecret,
            };
            config.Endpoint = "green-cip.ap-southeast-1.aliyuncs.com";
            return new AlibabaCloud.SDK.Green20220302.Client(config);
        }

        public static void Main(string[] args)
        {
            string accessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID");
            string accessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET");

            AlibabaCloud.SDK.Green20220302.Client client = CreateClient(accessKeyId, accessKeySecret);

            AlibabaCloud.SDK.Green20220302.Models.VoiceModerationResultRequest request= new AlibabaCloud.SDK.Green20220302.Models.VoiceModerationResultRequest();
            request.Service = "audio_multilingual_global";
            Dictionary<string, object> task = new Dictionary<string, object>();
            task.Add("taskId", "<task-id>");
            request.ServiceParameters = JsonConvert.SerializeObject(task);

            AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
            runtime.ReadTimeout = 6000;
            runtime.ConnectTimeout = 3000;

            try
            {
                AlibabaCloud.SDK.Green20220302.Models.VoiceModerationResultResponse response =
                    client.VoiceModerationResultWithOptions(request, runtime);
                if (response != null && response.Body != null && response.Body.Data != null)
                {
                    if (200 == response.Body.Code)
                    {
                        Console.WriteLine("taskId: " + response.Body.Data.TaskId);
                        Console.WriteLine("liveId: " + response.Body.Data.LiveId);
                        Console.WriteLine("url: " + response.Body.Data.Url);
                        Console.WriteLine("sliceDetails: " + JsonConvert.SerializeObject(response.Body.Data.SliceDetails));
                    }
                }
            }
            catch (TeaException error)
            {
                AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
            }
            catch (Exception _error)
            {
                TeaException error = new TeaException(new Dictionary<string, object>
                {
                    { "message", _error.Message }
                });
                AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
            }
        }
    }
}

Deteksi audio lokal

Instal dependensi

dotnet add package AlibabaCloud.SDK.Green20220302 --version 3.2.4

Instal SDK OSS melalui NuGet: cari Aliyun.OSS.SDK (untuk .NET Framework) atau Aliyun.OSS.SDK.NetCore (untuk .NET Core) di NuGet Package Manager.

Untuk kode contoh C# lengkap untuk moderasi audio lokal, buatlah menggunakan OpenAPI Explorer.

Deteksi audio yang disimpan di OSS

Buat peran layanan di halaman Otorisasi Akses Sumber Daya Cloud.

Instal dependensi

dotnet add package AlibabaCloud.SDK.Green20220302 --version 3.2.4

Kirimkan tugas moderasi

Untuk mengambil hasil, gunakan pola VoiceModerationResultRequest yang sama dari Deteksi audio yang dapat diakses publik.

Node.js SDK

Kode sumber: paket npm.

SDK mendukung tiga skenario moderasi audio.

Deteksi audio yang dapat diakses publik

Kasus penggunaan

Saat file audio dapat diakses melalui URL publik, Voice Moderation 2.0 dapat mengambil file tersebut melalui URL untuk moderasi.

  1. Jalankan perintah berikut untuk menginstal dependensi.

    npm install @alicloud/green20220302@3.2.4

  2. Gunakan SDK Node.js.

    • Kode contoh untuk mengirimkan tugas moderasi suara

      const Green20220302 = require('@alicloud/green20220302');
      const OpenApi = require('@alicloud/openapi-client');
      const Util = require('@alicloud/tea-util');
      // Catatan: Gunakan kembali instance client untuk menghindari pembuatan koneksi berulang.
      // Jika kode proyek bocor, Pasangan Kunci Akses mungkin bocor dan keamanan semua sumber daya dalam akun Anda mungkin terganggu. Kode contoh berikut hanya untuk referensi.
      class Client {
          static createClient() {
              const config = new OpenApi.Config({
                  // Wajib. Pastikan variabel lingkungan dikonfigurasi:  ALIBABA_CLOUD_ACCESS_KEY_ID。
                  accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
                  // Wajib. Pastikan variabel lingkungan dikonfigurasi:  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();
              // Konstruksi objek permintaan
              const voiceModerationRequest = new Green20220302.VoiceModerationRequest({
                  // Kode layanan moderasi suara.
                  "service": "audio_multilingual_global",
                  // URL audio yang akan dimoderasi.
                  "serviceParameters": JSON.stringify({"url":"http://aliyundoc.com/test.flv"})
              });
              // Buat objek konfigurasi runtime
              const runtime = new Util.RuntimeOptions();
              try {
                  // Kirim permintaan dan dapatkan respons
                  const response = await client.voiceModerationWithOptions(voiceModerationRequest, runtime);
                  console.log(JSON.stringify(response.body));
              } catch (error) {
                  // Ini hanya untuk demonstrasi. Tangani exception dengan benar di produksi.
                  // Pesan error
                  console.log('Terjadi kesalahan:', error.message);
              }
          }
      }
      
      Client.main();
    • Kode contoh untuk mengambil hasil moderasi suara

      const Green20220302 = require('@alicloud/green20220302');
      const OpenApi = require('@alicloud/openapi-client');
      const Util = require('@alicloud/tea-util');
      // Catatan: Gunakan kembali instance client untuk menghindari pembuatan koneksi berulang.
      // Jika kode proyek bocor, Pasangan Kunci Akses mungkin bocor dan keamanan semua sumber daya dalam akun Anda mungkin terganggu. Kode contoh berikut hanya untuk referensi.
      class Client {
          static createClient() {
              const config = new OpenApi.Config({
                  // Wajib. Pastikan variabel lingkungan dikonfigurasi:  ALIBABA_CLOUD_ACCESS_KEY_ID。
                  accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
                  // Wajib. Pastikan variabel lingkungan dikonfigurasi:  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();
              // Konstruksi objek permintaan
              const voiceModerationResultRequest = new Green20220302.VoiceModerationResultRequest({
                  // Kode layanan moderasi suara.
                  "service": "audio_multilingual_global",
                  "serviceParameters": JSON.stringify({"taskId":"<ID Tugas hasil moderasi suara yang akan dikueri>"})
              });
              // Buat objek konfigurasi runtime
              const runtime = new Util.RuntimeOptions();
              try {
                  // Kirim permintaan dan dapatkan respons
                  const response = await client.voiceModerationResultWithOptions(voiceModerationResultRequest, runtime);
                  console.log(JSON.stringify(response.body));
              } catch (error) {
                  // Ini hanya untuk demonstrasi. Tangani exception dengan benar di produksi.
                  // Pesan error
                  console.log('Terjadi kesalahan:', error.message);
              }
          }
      }
      
      Client.main();

Deteksi audio lokal

Kasus penggunaan

Saat file audio berada di mesin lokal tanpa URL publik, Anda dapat mengunggahnya ke bucket OSS yang disediakan oleh Content Moderation. Voice Moderation 2.0 dapat langsung mengakses OSS untuk mengambil konten audio guna moderasi.

  1. Jalankan perintah berikut untuk menginstal dependensi.

    npm install @alicloud/green20220302@3.2.4

    Instal SDK OSS:

    npm install ali-oss --save
  2. Gunakan SDK Node.js.

    • Kode contoh untuk mengirimkan tugas moderasi suara

      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");
      // Catatan: Gunakan kembali instance client untuk menghindari pembuatan koneksi berulang.
      // Jika kode proyek bocor, Pasangan Kunci Akses mungkin bocor dan keamanan semua sumber daya dalam akun Anda mungkin terganggu. Kode contoh berikut hanya untuk referensi.
      
      //Apakah layanan dideploy di VPC
      var isVPC = false;
      //Token unggah file
      var tokenDic = new Array();
      //Client unggah file
      var ossClient;
      //Atur titik akhir
      var endpoint = 'green-cip.ap-southeast-1.aliyuncs.com'
      //Path file lokal
      var filePath = 'D:\\test\\voice\\cf02.wav'
      //Kode layanan moderasi
      var service = 'audio_multilingual_global'
      
      class Client {
          static createClient() {
              const config = new OpenApi.Config({
                  // Wajib. Pastikan variabel lingkungan dikonfigurasi:  ALIBABA_CLOUD_ACCESS_KEY_ID。
                  accessKeyId: process.env["ALIBABA_CLOUD_ACCESS_KEY_ID"],
                  // Wajib. Pastikan variabel lingkungan dikonfigurasi:  ALIBABA_CLOUD_ACCESS_KEY_SECRET。
                  accessKeySecret: process.env["ALIBABA_CLOUD_ACCESS_KEY_SECRET"],
                  endpoint: endpoint,
              });
              return new Green20220302.default(config);
          }
      
          // Buat client unggah file
          static getOssClient(tokenData, isVPC) {
              if (isVPC) {
                  ossClient = new OSS({
                      accessKeyId: tokenData['accessKeyId'],
                      accessKeySecret: tokenData['accessKeySecret'],
                      stsToken: tokenData['securityToken'],
                      endpoint: tokenData['ossInternalEndPoint'],
                      bucket: tokenData['bucketName'],
                  });
              } else {
                  ossClient = new OSS({
                      accessKeyId: tokenData['accessKeyId'],
                      accessKeySecret: tokenData['accessKeySecret'],
                      stsToken: tokenData['securityToken'],
                      endpoint: tokenData['ossInternetEndPoint'],
                      bucket: tokenData['bucketName'],
                  });
              }
          }
      
          static async main() {
              const client = Client.createClient();
              // Buat objek konfigurasi runtime
              const runtime = new Util.RuntimeOptions();
              
              //Dapatkan token unggah file
              if (tokenDic[endpoint] == null || tokenDic[endpoint]['expiration'] <= Date.parse(new Date() / 1000)) {
                  var tokenResponse = await client.describeUploadTokenWithOptions(runtime)
                  tokenDic[endpoint] = tokenResponse.body.data;
              }
      
              //Dapatkan client unggah file
          this.getOssClient(tokenDic[endpoint], isVPC)
              var split = filePath.split(".");
              var objectName;
              if (split.length > 1) {
                  objectName = tokenDic[endpoint].fileNamePrefix + uuidv4() + "." + split[split.length - 1];
              } else {
                  objectName = tokenDic[endpoint].fileNamePrefix + uuidv4();
              }
      
              //Unggah file
              const result = await ossClient.put(objectName, path.normalize(filePath));
      
              // Konstruksi objek permintaan
              const voiceModerationRequest = new Green20220302.VoiceModerationRequest({
                  // Kode layanan moderasi。
                  "service": service,
                  // URL audio yang akan dimoderasi.
                  "serviceParameters": JSON.stringify({
                      "ossBucketName": tokenDic[endpoint].bucketName,
                      "ossObjectName": objectName,
                  })
                  });
      
              try {
                  // Kirim permintaan dan dapatkan respons
                  const response = await client.voiceModerationWithOptions(voiceModerationRequest, runtime);
                  console.log(JSON.stringify(response.body));
              } catch (error) {
                  // Ini hanya untuk demonstrasi. Tangani exception dengan benar di produksi.
                  // Pesan error
                  console.log('Terjadi kesalahan:', error.message);
              }
          }
      }
      
      Client.main();
    • Kode contoh untuk mengambil hasil moderasi suara

      const Green20220302 = require('@alicloud/green20220302');
      const OpenApi = require('@alicloud/openapi-client');
      const Util = require('@alicloud/tea-util');
      // Catatan: Gunakan kembali instance client untuk menghindari pembuatan koneksi berulang.
      // Jika kode proyek bocor, Pasangan Kunci Akses mungkin bocor dan keamanan semua sumber daya dalam akun Anda mungkin terganggu. Kode contoh berikut hanya untuk referensi.
      class Client {
          static createClient() {
              const config = new OpenApi.Config({
                  // Wajib. Pastikan variabel lingkungan dikonfigurasi:  ALIBABA_CLOUD_ACCESS_KEY_ID。
                  accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
                  // Wajib. Pastikan variabel lingkungan dikonfigurasi:  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();
              // Konstruksi objek permintaan
              const voiceModerationResultRequest = new Green20220302.VoiceModerationResultRequest({
                  // Kode layanan moderasi suara.
                  "service": "audio_multilingual_global",
                  "serviceParameters": JSON.stringify({"taskId":"<ID Tugas hasil moderasi suara yang akan dikueri>"})
              });
              // Buat objek konfigurasi runtime
              const runtime = new Util.RuntimeOptions();
              try {
                  // Kirim permintaan dan dapatkan respons
                  const response = await client.voiceModerationResultWithOptions(voiceModerationResultRequest, runtime);
                  console.log(JSON.stringify(response.body));
              } catch (error) {
                  // Ini hanya untuk demonstrasi. Tangani exception dengan benar di produksi.
                  // Pesan error
                  console.log('Terjadi kesalahan:', error.message);
              }
          }
      }
      
      Client.main();

Deteksi audio yang disimpan di OSS

Kasus penggunaan

Jika file audio disimpan di OSS Alibaba Cloud, Anda dapat memberikan otorisasi kepada layanan Content Moderation untuk mengakses OSS dengan membuat peran layanan. Voice Moderation 2.0 dapat mengakses file OSS untuk moderasi melalui peran layanan tersebut. Buka halaman Otorisasi Akses Sumber Daya Clouduntuk membuat peran layanan.

  1. Jalankan perintah berikut untuk menginstal dependensi.

    npm install @alicloud/green20220302@3.2.4

  2. Gunakan SDK Node.js.

    • Kode contoh untuk mengirimkan tugas moderasi suara

      const Green20220302 = require('@alicloud/green20220302');
      const OpenApi = require('@alicloud/openapi-client');
      const Util = require('@alicloud/tea-util');
      // Catatan: Gunakan kembali instance client untuk menghindari pembuatan koneksi berulang.
      // Jika kode proyek bocor, Pasangan Kunci Akses mungkin bocor dan keamanan semua sumber daya dalam akun Anda mungkin terganggu. Kode contoh berikut hanya untuk referensi.
      class Client {
          static createClient() {
              const config = new OpenApi.Config({
                  // Wajib. Pastikan variabel lingkungan dikonfigurasi:  ALIBABA_CLOUD_ACCESS_KEY_ID。
                  accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
                  // Wajib. Pastikan variabel lingkungan dikonfigurasi:  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();
              // Konstruksi objek permintaan
              const voiceModerationRequest = new Green20220302.VoiceModerationRequest({
                  // Kode layanan moderasi suara.
                  "service": "audio_multilingual_global",
                  "serviceParameters": JSON.stringify({
                  // Wilayah bucket. Contoh: cn-shanghai
                  "ossRegionId": "cn-shanghai",
                  // Nama bucket. Contoh: bucket001
                  "ossBucketName": "bucket001",
                  // File yang akan dimoderasi. Contoh: voice/001.wav
                  "ossObjectName": "voice/001.wav",})
              });
              });
              // Buat objek konfigurasi runtime
              const runtime = new Util.RuntimeOptions();
              try {
                  // Kirim permintaan dan dapatkan respons
                  const response = await client.voiceModerationWithOptions(voiceModerationRequest, runtime);
                  console.log(JSON.stringify(response.body));
              } catch (error) {
                  // Ini hanya untuk demonstrasi. Tangani exception dengan benar di produksi.
                  // Pesan error
                  console.log('Terjadi kesalahan:', error.message);
              }
          }
      }
      
      Client.main();
    • Kode contoh untuk mengambil hasil moderasi suara

      const Green20220302 = require('@alicloud/green20220302');
      const OpenApi = require('@alicloud/openapi-client');
      const Util = require('@alicloud/tea-util');
      // Catatan: Gunakan kembali instance client untuk menghindari pembuatan koneksi berulang.
      // Jika kode proyek bocor, Pasangan Kunci Akses mungkin bocor dan keamanan semua sumber daya dalam akun Anda mungkin terganggu. Kode contoh berikut hanya untuk referensi.
      class Client {
          static createClient() {
              const config = new OpenApi.Config({
                  // Wajib. Pastikan variabel lingkungan dikonfigurasi:  ALIBABA_CLOUD_ACCESS_KEY_ID。
                  accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
                  // Wajib. Pastikan variabel lingkungan dikonfigurasi:  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();
              // Konstruksi objek permintaan
              const voiceModerationResultRequest = new Green20220302.VoiceModerationResultRequest({
                  // Kode layanan moderasi suara.
                  "service": "audio_multilingual_global",
                  "serviceParameters": JSON.stringify({"taskId":"<ID Tugas hasil moderasi suara yang akan dikueri>"})
              });
              // Buat objek konfigurasi runtime
              const runtime = new Util.RuntimeOptions();
              try {
                  // Kirim permintaan dan dapatkan respons
                  const response = await client.voiceModerationResultWithOptions(voiceModerationResultRequest, runtime);
                  console.log(JSON.stringify(response.body));
              } catch (error) {
                  // Ini hanya untuk demonstrasi. Tangani exception dengan benar di produksi.
                  // Pesan error
                  console.log('Terjadi kesalahan:', error.message);
              }
          }
      }
      
      Client.main();

Panggilan native HTTPS

  • Call method

    URL permintaan layanan: https://green-cip.{region}.aliyuncs.com

    Protokol: HTTPS

    Metode: POST

  • Common request parameters

    Parameter input API Voice Moderation Edisi Tingkat Lanjut mencakup parameter permintaan umum dan parameter spesifik operasi. Parameter permintaan umum wajib untuk setiap pemanggilan API. Tabel berikut menjelaskan parameter permintaan umum.

    Nama

    Tipe

    Wajib

    Deskripsi

    Format

    String

    Ya

    Format respons. Nilai yang valid:

    • JSON(default)

    • XML

    Version

    String

    Ya

    Versi API dalam format YYYY-MM-DD. Versi saat ini: 2022-03-02.

    AccessKeyId

    String

    Ya

    ID AccessKey yang dikeluarkan oleh Alibaba Cloud untuk mengakses layanan.

    Signature

    String

    Ya

    String signature. Untuk metode perhitungan, lihat bagian mekanisme Signature di bawah.

    SignatureMethod

    String

    Ya

    Metode signature. Saat ini, hanya HMAC-SHA1 yang didukung.

    Timestamp

    String

    Ya

    Timestamp permintaan. Tentukan waktu dalam standar ISO 8601 dalam UTC.

    Format: yyyy-MM-ddTHH:mm:ssZ.

    Misalnya, 2022-12-12T09:13:14 (UTC+8) dinyatakan sebagai 2022-12-12T01:13:14Z.

    SignatureVersion

    String

    Ya

    Versi algoritma Signature. Nilai tetap: 1.0.

    SignatureNonce

    String

    Ya

    Bilangan acak unik untuk mencegah serangan replay. Gunakan nilai berbeda untuk setiap permintaan.

    Action

    String

    Ya

    Nilai yang valid:

    • VoiceModeration

    • VoiceModerationResult

  • Common response parameters

    Untuk setiap permintaan API, terlepas dari keberhasilan atau kegagalan, sistem mengembalikan pengidentifikasi unik (RequestId). Parameter respons lainnya bervariasi tergantung pada layanan yang dipanggil.

    {
        "RequestId":"20B935A9-XXXXXXXX-XXXXXXXX0C2",
        "Message":"SUCCESS",
        "Data":{
            "TaskId":"au_f_O5xxxxxxxxxxxxxxqa-1****"
        },
        "Code":200
    }
  • Code examples

    Contoh respons berikut diformat agar mudah dibaca. Respons aktual tidak diformat.

    • Contoh mengirimkan tugas moderasi

      Contoh permintaan

      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"}

      Contoh respons

      {
          "RequestId":"20B935A9-XXXXXXXX-XXXXXXXX0C2",
          "Message":"SUCCESS",
          "Data":{
              "TaskId":"au_f_O5xxxxxxxxxxxxxxqa-1x****"
          },
          "Code":200
      }
    • Contoh mengkueri hasil tugas

      Contoh permintaan

      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****"}

      Contoh respons

      {
          "RequestId":"926AD581-XXXXXXXXXXXXXX-7902AE",
          "Message":"success finished",
          "Data":{
              "SliceDetails":[
                  {
                      "EndTime":6,
                      "StartTime":0,
                      "Text":"Cuaca hari ini bagus.",
                      "Labels":"",
                      "Url":"http://xxxx.aliyuncs.com/cip-media/voice/****.wav"
                  }
              ]
          },
          "Code":200
      }
  • Signature mechanism

    Voice Moderation Edisi Tingkat Lanjut mengotentikasi setiap permintaan akses. Oleh karena itu, Anda harus menyertakan informasi signature (Signature) dalam setiap permintaan. Voice Moderation Edisi Tingkat Lanjut menggunakan enkripsi simetris dengan ID AccessKey dan Rahasia AccessKey untuk memverifikasi identitas pengirim permintaan.

    ID AccessKey dan Rahasia AccessKey dikeluarkan oleh Alibaba Cloud (Anda dapat mengajukan dan mengelolanya di situs web Alibaba Cloud). ID AccessKey mengidentifikasi pengunjung; Rahasia AccessKey adalah kunci yang digunakan untuk mengenkripsi dan memverifikasi string signature. Kunci ini harus dirahasiakan secara ketat.

    Saat mengakses layanan, tandatangani permintaan sebagai berikut:

    1. Buat string kueri terkanonisasi menggunakan parameter permintaan.

      1. Urutkan semua parameter permintaan dalam urutan leksikografis (termasuk parameter permintaan umum dan parameter spesifik operasi, tetapi tidak termasuk parameter Signature itu sendiri).

      2. Lakukan URL encoding terhadap nama parameter dan nilainya menggunakan UTF-8.

        Catatan

        Sebagian besar pustaka encoding URL (seperti java.net.URLEncoder di Java) melakukan encoding berdasarkan tipe MIME application/x-www-form-urlencoded. Anda dapat menggunakan encoding ini lalu mengganti tanda plus (+) dengan %20, tanda bintang (*) dengan %2A, dan %7E kembali menjadi tilde (~) untuk mendapatkan string yang diencode seperti yang dijelaskan di atas.

        Aturan encoding URL adalah sebagai berikut:

        • Karakter A-Z, a-z, 0-9, tanda hubung (-), garis bawah (_), titik (.), dan tilde (~) tidak diencode.

        • Karakter lain diencode sebagai %XY, di mana XY adalah representasi heksadesimal dari kode ASCII karakter tersebut. Misalnya, tanda kutip ganda (") diencode sebagai %22.

        • Karakter UTF-8 yang diperluas diencode sebagai %XY%ZA….

        • Perhatikan bahwa karakter spasi ( ) harus diencode sebagai %20, bukan tanda plus (+).

      3. Hubungkan setiap nama parameter yang diencode dan nilainya dengan tanda sama dengan (=).

      4. Gabungkan pasangan parameter=nilai dalam urutan leksikografis dengan tanda ampersand (&) untuk membentuk string kueri terkanonisasi.

    2. Buat string untuk perhitungan signature menggunakan string terkanonisasi dari langkah a.i:

      StringToSign=
      HTTPMethod + "&" +
      percentEncode("/") + "&" +
      percentEncode(CanonicalizedQueryString)
      Catatan

      Di mana HTTPMethod adalah metode HTTP yang digunakan untuk mengirimkan permintaan, seperti POST. percentEncode(/) adalah nilai yang diperoleh dengan mengencode karakter (/) sesuai aturan encoding URL yang dijelaskan dalam langkah a.ii, yaitu %2F. percentEncode(CanonicalizedQueryString) adalah string yang diperoleh dengan mengencode string kueri terkanonisasi yang dibuat dalam langkah a.i sesuai aturan encoding URL yang dijelaskan dalam langkah a.ii.

    3. Hitung nilai HMAC menggunakan string to sign sebagaimana didefinisikan dalam RFC 2104.

      Catatan

      Catatan: Kunci yang digunakan untuk perhitungan signature adalah Rahasia AccessKey diikuti oleh karakter & (ASCII: 38). Algoritma hash yang digunakan adalah SHA1.

    4. Encode nilai HMAC menggunakan Base64 untuk mendapatkan Signature.

    5. Tambahkan nilai signature sebagai parameter Signature ke parameter permintaan untuk menyelesaikan proses penandatanganan.

      Catatan

      Saat mengirimkan nilai signature ke server Content Moderation sebagai parameter permintaan akhir, encode sesuai RFC 3986, sama seperti parameter lainnya.

Catatan penggunaan

  • Gunakan kembali instance client. Membuat client baru untuk setiap permintaan menciptakan koneksi yang tidak perlu. Inisialisasi satu client per titik akhir dan gunakan kembali di seluruh permintaan.

  • Muat kredensial dari variabel lingkungan. Atur ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET sebagai variabel lingkungan. Jangan hardcode nilai AccessKey di kode Anda.

  • Kedaluwarsa token unggah. Token unggah sementara dari DescribeUploadToken kedaluwarsa. Periksa bidang expiration dan perbarui token sebelum kedaluwarsa.

  • Titik akhir VPC. Jika aplikasi Anda berjalan di VPC, gunakan titik akhir VPC (green-cip-vpc.ap-southeast-1.aliyuncs.com) untuk menghindari biaya egress jaringan publik.

Langkah selanjutnya