全部产品
Search
文档中心

Alibaba Cloud Model Studio:API kloning suara CosyVoice

更新时间:Jan 06, 2026

Layanan kloning suara CosyVoice menggunakan model suara generatif skala besar untuk menghasilkan suara kustom yang sangat mirip dan terdengar alami hanya dari cuplikan audio berdurasi 10 hingga 20 detik, tanpa memerlukan pelatihan tradisional. Kloning suara dan sintesis suara merupakan dua langkah berurutan. Dokumen ini menjelaskan parameter API dan detail terkait kloning suara. Untuk sintesis suara, lihat Sintesis suara Real-time - CosyVoice/Sambert.

Penting

Dokumen ini hanya berlaku untuk wilayah China (Beijing). Untuk menggunakan model ini, Anda harus menggunakan Kunci API dari wilayah China (Beijing).

Panduan pengguna: Untuk pengenalan model dan cara memilihnya, lihat Sintesis suara Real-time - CosyVoice/Sambert.

Persyaratan audio

Audio input berkualitas tinggi sangat penting untuk mendapatkan hasil kloning yang berkualitas tinggi.

Item

Persyaratan

Format yang didukung

WAV (16-bit), MP3, M4A

Durasi audio

Direkomendasikan: 10 hingga 20 detik. Maksimum: 60 detik.

Ukuran file

≤ 10 MB

Sample rate

≥ 16 kHz

Saluran suara

Mono / Stereo. Untuk audio stereo, hanya saluran pertama yang diproses. Pastikan saluran pertama berisi ucapan manusia yang valid.

Konten

Audio harus berisi minimal 5 detik pembacaan yang kontinu dan jelas tanpa suara latar. Sisa audio hanya boleh berisi jeda pendek (≤ 2 detik). Seluruh cuplikan audio harus bebas dari musik latar, kebisingan, atau suara lain untuk memastikan kualitas konten bacaan utama. Gunakan audio ucapan normal sebagai input. Jangan mengunggah lagu atau audio bernyanyi untuk memastikan akurasi dan kegunaan suara yang dikloning.

Bahasa

Bervariasi tergantung pada model sintesis suara yang menggerakkan suara tersebut (ditentukan oleh parameter target_model/targetModel):

  • cosyvoice-v2: Bahasa Mandarin Tiongkok, Bahasa Inggris

  • cosyvoice-v3-flash, cosyvoice-v3-plus: Bahasa Mandarin Tiongkok (Mandarin Standar, Kanton, Mandarin Timur Laut, dialek Gansu, dialek Guizhou, dialek Henan, dialek Hubei, dialek Jiangxi, Minnan, dialek Ningxia, dialek Shanxi, dialek Shaanxi, dialek Shandong, Shanghainese, Sichuanese, dialek Tianjin, dialek Yunnan), Bahasa Inggris, Bahasa Prancis, Bahasa Jerman, Bahasa Jepang, Bahasa Korea, Bahasa Rusia

Memulai: Dari kloning hingga sintesis

image

1. Alur kerja

Kloning suara dan sintesis suara adalah dua langkah yang saling terkait namun berbeda. Proses ini mengikuti alur "buat terlebih dahulu, lalu gunakan":

  1. Buat suara

    Panggil API Create voice dan unggah cuplikan audio. Sistem menganalisis audio dan membuat suara kloning unik. Pada langkah ini, Anda harus menentukan target_model / targetModel untuk memilih model sintesis suara yang akan digunakan bersama suara yang dibuat.

    Jika Anda telah membuat suara sebelumnya, Anda dapat melewati langkah ini. Panggil API Query voice list untuk memeriksa suara yang sudah ada.

  2. Gunakan suara untuk sintesis suara

    Panggil API sintesis suara dan masukkan ID suara yang Anda peroleh pada langkah sebelumnya. Model sintesis suara yang ditentukan pada langkah ini harus sama dengan target_model / targetModel yang ditentukan pada langkah sebelumnya.

2. Konfigurasi model dan persiapan

Pilih model yang sesuai dan lengkapi persiapan yang diperlukan.

Konfigurasi model

Saat melakukan kloning suara, tentukan dua model berikut:

  • Model kloning suara: voice-enrollment

  • Model sintesis suara yang akan digunakan bersama suara tersebut:

    Untuk hasil terbaik, gunakan cosyvoice-v3-plus jika sumber daya dan anggaran Anda memungkinkan.

    Versi

    Skenario

    cosyvoice-v3-plus

    Untuk kualitas suara dan ekspresivitas terbaik dengan anggaran yang mencukupi.

    cosyvoice-v3-flash

    Untuk keseimbangan antara performa dan biaya, menawarkan nilai tinggi.

    cosyvoice-v2

    Untuk kompatibilitas dengan versi lama atau skenario dengan persyaratan rendah.

Persiapan

  1. Buat Kunci API: Buat Kunci API. Untuk alasan keamanan, ekspor Kunci API sebagai Variabel lingkungan.

  2. Instal SDK: Pastikan Anda telah menginstal versi terbaru SDK DashScope.

  3. Persiapkan URL audio: Unggah file audio yang memenuhi persyaratan audio ke lokasi yang dapat diakses publik, seperti Object Storage Service (OSS).

3. Contoh end-to-end: Dari kloning hingga sintesis

Contoh berikut menunjukkan cara menggunakan suara kustom yang dihasilkan melalui kloning suara dalam sintesis suara untuk menghasilkan output yang sangat mirip dengan suara aslinya.

  • Prinsip utama: Saat melakukan kloning suara, target_model (model sintesis suara yang akan digunakan bersama suara tersebut) harus sama dengan model sintesis suara yang Anda tentukan saat memanggil API sintesis suara. Jika tidak, sintesis akan gagal.

  • Jangan lupa mengganti AUDIO_URL dalam contoh dengan URL audio aktual Anda.

import os
import time
import dashscope
from dashscope.audio.tts_v2 import VoiceEnrollmentService, SpeechSynthesizer

# 1. Persiapkan lingkungan
# Konfigurasikan Kunci API sebagai variabel lingkungan.
# export DASHSCOPE_API_KEY="sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
dashscope.api_key = os.getenv("DASHSCOPE_API_KEY")
if not dashscope.api_key:
    raise ValueError("Variabel lingkungan DASHSCOPE_API_KEY belum diatur.")

# 2. Tentukan parameter kloning
TARGET_MODEL = "cosyvoice-v3-plus" 
# Berikan awalan yang bermakna untuk suara tersebut.
VOICE_PREFIX = "myvoice" # Hanya digit dan huruf kecil yang diizinkan, kurang dari 10 karakter.
# URL audio yang dapat diakses publik
AUDIO_URL = "https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/cosyvoice/cosyvoice-zeroshot-sample.wav" # URL contoh, ganti dengan URL Anda sendiri.

# 3. Buat suara (tugas asinkron)
print("--- Langkah 1: Membuat pendaftaran suara ---")
service = VoiceEnrollmentService()
try:
    voice_id = service.create_voice(
        target_model=TARGET_MODEL,
        prefix=VOICE_PREFIX,
        url=AUDIO_URL
    )
    print(f"Pendaftaran suara berhasil dikirim. Request ID: {service.get_last_request_id()}")
    print(f"ID Suara yang Dihasilkan: {voice_id}")
except Exception as e:
    print(f"Terjadi kesalahan saat pembuatan suara: {e}")
    raise e
# 4. Periksa status suara secara berkala
print("\n--- Langkah 2: Memeriksa status suara ---")
max_attempts = 30
poll_interval = 10 # detik
for attempt in range(max_attempts):
    try:
        voice_info = service.query_voice(voice_id=voice_id)
        status = voice_info.get("status")
        print(f"Percobaan {attempt + 1}/{max_attempts}: Status suara adalah '{status}'")
        
        if status == "OK":
            print("Suara siap digunakan untuk sintesis.")
            break
        elif status == "UNDEPLOYED":
            print(f"Pemrosesan suara gagal dengan status: {status}. Periksa kualitas audio atau hubungi dukungan teknis.")
            raise RuntimeError(f"Pemrosesan suara gagal dengan status: {status}")
        # Untuk status antara seperti "DEPLOYING", lanjutkan menunggu.
        time.sleep(poll_interval)
    except Exception as e:
        print(f"Terjadi kesalahan saat memeriksa status: {e}")
        time.sleep(poll_interval)
else:
    print("Waktu pemeriksaan habis. Suara belum siap setelah beberapa percobaan.")
    raise RuntimeError("Waktu pemeriksaan habis. Suara belum siap setelah beberapa percobaan.")

# 5. Lakukan sintesis suara menggunakan suara yang dikloning
print("\n--- Langkah 3: Melakukan sintesis suara dengan suara baru ---")
try:
    synthesizer = SpeechSynthesizer(model=TARGET_MODEL, voice=voice_id)
    text_to_synthesize = "Selamat, Anda telah berhasil mengkloning dan mensintesis suara Anda sendiri!"
    
    # Metode call() mengembalikan data audio biner.
    audio_data = synthesizer.call(text_to_synthesize)
    print(f"Sintesis suara berhasil. Request ID: {synthesizer.get_last_request_id()}")

    # 6. Simpan file audio
    output_file = "my_custom_voice_output.mp3"
    with open(output_file, "wb") as f:
        f.write(audio_data)
    print(f"Audio disimpan ke {output_file}")

except Exception as e:
    print(f"Terjadi kesalahan saat sintesis suara: {e}")

Referensi API

Saat menggunakan API yang berbeda, pastikan semua operasi dilakukan menggunakan akun yang sama.

Create voice

Mengunggah file audio untuk kloning guna membuat suara kustom.

Python SDK

Deskripsi API

def create_voice(self, target_model: str, prefix: str, url: str, language_hints: List[str] = None) -> str:
    '''
    Membuat suara kustom baru.
    param: target_model Model sintesis suara yang menggerakkan suara. Nilai ini harus sama dengan model sintesis suara yang digunakan saat Anda memanggil API sintesis suara nanti. Jika tidak, sintesis akan gagal. Model yang direkomendasikan adalah cosyvoice-v3-flash atau cosyvoice-v3-plus.
    param: prefix Nama yang mudah diingat untuk suara (hanya digit, huruf besar dan kecil, serta garis bawah yang diizinkan, maksimal 10 karakter). Gunakan pengenal yang terkait dengan peran atau skenario. Kata kunci ini muncul dalam nama suara yang dikloning. Format nama suara yang dihasilkan adalah: model_name-prefix-unique_identifier, misalnya, cosyvoice-v3-plus-myvoice-xxxxxxxx.
    param: url URL file audio untuk kloning suara. URL harus dapat diakses publik.
    param: language_hints Menentukan bahasa dari audio sampel yang digunakan untuk mengekstraksi fitur suara target. Parameter ini hanya berlaku untuk model cosyvoice-v3-flash dan cosyvoice-v3-plus.
            Parameter ini membantu model mengidentifikasi bahasa audio sampel (audio referensi asli) agar ekstraksi fitur suara lebih akurat dan meningkatkan hasil kloning.
            Jika petunjuk bahasa yang ditentukan tidak sesuai dengan bahasa audio aktual, misalnya menetapkan 'en' untuk file audio berbahasa Mandarin, sistem akan mengabaikan petunjuk tersebut dan mendeteksi bahasa secara otomatis dari konten audio.
            Nilai yang valid: zh (default), en, fr, de, ja, ko, ru. Parameter ini berupa array, tetapi versi saat ini hanya memproses elemen pertama. Kirim hanya satu nilai.
    return: voice_id ID suara. Dapat langsung digunakan untuk parameter voice dalam API sintesis suara.
    '''
Penting
  • target_model: Model sintesis suara yang akan digunakan bersama suara tersebut. Nilai ini harus sama dengan model sintesis suara yang Anda gunakan saat memanggil API sintesis suara. Jika tidak, sintesis akan gagal.

  • language_hints: Menentukan bahasa dari audio sampel yang digunakan untuk mengekstraksi fitur timbre suara target. Parameter ini hanya berlaku untuk model cosyvoice-v3-flash dan cosyvoice-v3-plus.

    Deskripsi: Parameter ini membantu model mengidentifikasi bahasa audio sampel (audio referensi asli) agar ekstraksi fitur suara lebih akurat dan meningkatkan hasil kloning. Jika petunjuk bahasa yang ditentukan tidak sesuai dengan bahasa audio aktual, misalnya menetapkan en untuk file audio berbahasa Mandarin, sistem akan mengabaikan petunjuk tersebut dan mendeteksi bahasa secara otomatis dari konten audio.

    Nilai yang valid:

    • zh: (default)

    • en: Bahasa Inggris

    • fr: Bahasa Prancis

    • de: Bahasa Jerman

    • ja: Bahasa Jepang

    • ko: Bahasa Korea

    • ru: Bahasa Rusia

    Catatan: Parameter ini berupa array, tetapi versi saat ini hanya memproses elemen pertama. Kirim hanya satu nilai.

Contoh permintaan

from dashscope.audio.tts_v2 import VoiceEnrollmentService

service = VoiceEnrollmentService()

# Hindari pemanggilan berulang. Setiap panggilan membuat suara baru. Anda tidak dapat membuat lebih banyak suara setelah mencapai batas kuota.
voice_id = service.create_voice(
    target_model='cosyvoice-v3-plus',
    prefix='myvoice',
    url='https://your-audio-file-url',
    language_hints=['en']
)

print(f"Request ID: {service.get_last_request_id()}")
print(f"ID Suara: {voice_id}")

Java SDK

Deskripsi API

/**
 * Membuat suara kustom baru.
 *
 * @param targetModel Model sintesis suara yang menggerakkan suara. Nilai ini harus sama dengan model sintesis suara yang digunakan saat Anda memanggil API sintesis suara nanti. Jika tidak, sintesis akan gagal. Model yang direkomendasikan adalah cosyvoice-v3-flash atau cosyvoice-v3-plus.
 * @param prefix Nama yang mudah diingat untuk suara (hanya digit, huruf besar dan kecil, serta garis bawah yang diizinkan, maksimal 10 karakter). Gunakan pengenal yang terkait dengan peran atau skenario. Kata kunci ini muncul dalam nama suara yang dikloning. Format nama suara yang dihasilkan adalah: model_name-prefix-unique_identifier, misalnya, cosyvoice-v3-plus-myvoice-xxxxxxxx.
 * @param url URL file audio untuk kloning suara. URL harus dapat diakses publik.
 * @param customParam Parameter kustom. Anda dapat menentukan languageHints di sini.
 *                  languageHints menentukan bahasa dari audio sampel yang digunakan untuk mengekstraksi fitur suara target. Parameter ini hanya berlaku untuk model cosyvoice-v3-flash dan cosyvoice-v3-plus.
 *                  Parameter ini membantu model mengidentifikasi bahasa audio sampel (audio referensi asli) agar ekstraksi fitur suara lebih akurat dan meningkatkan hasil kloning.
 *                  Jika petunjuk bahasa yang ditentukan tidak sesuai dengan bahasa audio aktual, misalnya menetapkan 'en' untuk file audio berbahasa Mandarin, sistem akan mengabaikan petunjuk tersebut dan mendeteksi bahasa secara otomatis dari konten audio.
 *                  Nilai yang valid: zh (default), en, fr, de, ja, ko, ru. Parameter ini berupa array, tetapi versi saat ini hanya memproses elemen pertama. Kirim hanya satu nilai.
 * @return Voice Objek suara yang baru dibuat. Anda dapat memperoleh ID suara menggunakan metode getVoiceId dari objek Voice. ID tersebut dapat langsung digunakan untuk parameter voice dalam API sintesis suara.
 * @throws NoApiKeyException jika Kunci API kosong.
 * @throws InputRequiredException jika parameter yang diperlukan kosong.
 */
public Voice createVoice(String targetModel, String prefix, String url, VoiceEnrollmentParam customParam) throws NoApiKeyException, InputRequiredException
Penting
  • targetModel: Model sintesis suara yang akan digunakan bersama suara tersebut. Nilai ini harus sama dengan model sintesis suara yang Anda gunakan saat memanggil API sintesis suara. Jika tidak, sintesis akan gagal.

  • languageHints: Menentukan bahasa dari audio sampel yang digunakan untuk mengekstraksi fitur timbre suara target. Parameter ini hanya berlaku untuk model cosyvoice-v3-flash dan cosyvoice-v3-plus.

    Deskripsi: Parameter ini membantu model mengidentifikasi bahasa audio sampel (audio referensi asli) agar ekstraksi fitur suara lebih akurat dan meningkatkan hasil kloning. Jika petunjuk bahasa yang ditentukan tidak sesuai dengan bahasa audio aktual, misalnya menetapkan en untuk file audio berbahasa Mandarin, sistem akan mengabaikan petunjuk tersebut dan mendeteksi bahasa secara otomatis dari konten audio.

    Nilai yang valid:

    • zh: (default)

    • en: Bahasa Inggris

    • fr: Bahasa Prancis

    • de: Bahasa Jerman

    • ja: Bahasa Jepang

    • ko: Bahasa Korea

    • ru: Bahasa Rusia

    Catatan: Parameter ini berupa array, tetapi versi saat ini hanya memproses elemen pertama. Kirim hanya satu nilai.

Contoh permintaan

import com.alibaba.dashscope.audio.ttsv2.enrollment.Voice;
import com.alibaba.dashscope.audio.ttsv2.enrollment.VoiceEnrollmentParam;
import com.alibaba.dashscope.audio.ttsv2.enrollment.VoiceEnrollmentService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.Collections;

public class Main {
    private static final Logger logger = LoggerFactory.getLogger(Main.class);

    public static void main(String[] args) {
        String apiKey = System.getenv("DASHSCOPE_API_KEY");
        String targetModel = "cosyvoice-v3-plus";
        String prefix = "myvoice";
        String fileUrl = "https://your-audio-file-url";
        String cloneModelName = "voice-enrollment";

        try {
            VoiceEnrollmentService service = new VoiceEnrollmentService(apiKey);
            Voice myVoice = service.createVoice(
                    targetModel,
                    prefix,
                    fileUrl,
                    VoiceEnrollmentParam.builder()
                    .model(cloneModelName)
                    .languageHints(Collections.singletonList("en")).build());

            logger.info("Pembuatan suara berhasil dikirim. Request ID: {}", service.getLastRequestId());
            logger.info("ID Suara yang Dihasilkan: {}", myVoice.getVoiceId());
        } catch (Exception e) {
            logger.error("Gagal membuat suara", e);
        }
    }
}

RESTful API

Informasi dasar

URL

https://dashscope.aliyuncs.com/api/v1/services/audio/tts/customization

Metode permintaan

POST

Header permintaan

Authorization: Bearer {api-key} // Ganti dengan Kunci API Anda
Content-Type: application/json

Isi pesan

Isi pesan yang berisi semua parameter permintaan adalah sebagai berikut. Anda dapat menghilangkan bidang opsional sesuai kebutuhan:

Penting
  • model: Model kloning suara. Nilainya tetap voice-enrollment.

  • target_model: Model sintesis suara yang menggerakkan suara. Nilai ini harus sama dengan model sintesis suara yang digunakan saat Anda memanggil API sintesis suara nanti. Jika tidak, sintesis akan gagal.

  • language_hints: Menentukan bahasa dari audio sampel yang digunakan untuk mengekstraksi fitur timbre suara target. Parameter ini hanya berlaku untuk model cosyvoice-v3-flash dan cosyvoice-v3-plus.

    Deskripsi: Parameter ini membantu model mengidentifikasi bahasa audio sampel (audio referensi asli) agar ekstraksi fitur suara lebih akurat dan meningkatkan hasil kloning. Jika petunjuk bahasa yang ditentukan tidak sesuai dengan bahasa audio aktual, misalnya menetapkan en untuk file audio berbahasa Mandarin, sistem akan mengabaikan petunjuk tersebut dan mendeteksi bahasa secara otomatis dari konten audio.

    Nilai yang valid:

    • zh: (default)

    • en: Bahasa Inggris

    • fr: Bahasa Prancis

    • de: Bahasa Jerman

    • ja: Bahasa Jepang

    • ko: Bahasa Korea

    • ru: Bahasa Rusia

    Catatan: Parameter ini berupa array, tetapi versi saat ini hanya memproses elemen pertama. Kirim hanya satu nilai.

{
    "model": "voice-enrollment",
    "input": {
        "action": "create_voice",
        "target_model": "cosyvoice-v3-plus",
        "prefix": "myvoice",
        "url": "https://yourAudioFileUrl",
        "language_hints": ["en"]
    }
}

Parameter permintaan

Klik untuk melihat contoh permintaan

Penting
  • model: Model kloning suara. Nilainya tetap voice-enrollment.

  • target_model: Model sintesis suara yang menggerakkan suara. Nilai ini harus sama dengan model sintesis suara yang digunakan saat Anda memanggil API sintesis suara nanti. Jika tidak, sintesis akan gagal.

  • language_hints: Menentukan bahasa dari audio sampel yang digunakan untuk mengekstraksi fitur timbre suara target. Parameter ini hanya berlaku untuk model cosyvoice-v3-flash dan cosyvoice-v3-plus.

    Deskripsi: Parameter ini membantu model mengidentifikasi bahasa audio sampel (audio referensi asli) agar ekstraksi fitur suara lebih akurat dan meningkatkan hasil kloning. Jika petunjuk bahasa yang ditentukan tidak sesuai dengan bahasa audio aktual, misalnya menetapkan en untuk file audio berbahasa Mandarin, sistem akan mengabaikan petunjuk tersebut dan mendeteksi bahasa secara otomatis dari konten audio.

    Nilai yang valid:

    • zh: (default)

    • en: Bahasa Inggris

    • fr: Bahasa Prancis

    • de: Bahasa Jerman

    • ja: Bahasa Jepang

    • ko: Bahasa Korea

    • ru: Bahasa Rusia

    Catatan: Parameter ini berupa array, tetapi versi saat ini hanya memproses elemen pertama. Kirim hanya satu nilai.

curl -X POST https://dashscope.aliyuncs.com/api/v1/services/audio/tts/customization \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
    "model": "voice-enrollment",
    "input": {
        "action": "create_voice",
        "target_model": "cosyvoice-v3-plus",
        "prefix": "myvoice",
        "url": "https://yourAudioFileUrl",
        "language_hints": ["en"]
    }
}'

Parameter

Tipe

Nilai default

Wajib

Deskripsi

model

string

-

Ya

Model kloning suara. Nilainya harus voice-enrollment.

action

string

-

Ya

Jenis operasi. Nilainya tetap create_voice.

target_model

string

-

Ya

Model sintesis suara yang menggerakkan suara. Model yang direkomendasikan adalah cosyvoice-v3-flash atau cosyvoice-v3-plus.

Nilai ini harus sama dengan model sintesis suara yang digunakan saat Anda memanggil API sintesis suara nanti. Jika tidak, sintesis akan gagal.

prefix

string

-

Ya

Nama yang mudah diingat untuk suara (hanya digit, huruf besar dan kecil, serta garis bawah yang diizinkan, maksimal 10 karakter). Gunakan pengenal yang terkait dengan peran atau skenario.

Kata kunci ini muncul dalam nama suara yang dikloning. Format nama suara yang dihasilkan adalah: model_name-prefix-unique_identifier, misalnya, cosyvoice-v3-plus-myvoice-xxxxxxxx.

url

string

-

Ya

URL file audio untuk kloning suara. URL harus dapat diakses publik.

language_hints

array[string]

-

Tidak

Menentukan bahasa dari audio sampel yang digunakan untuk mengekstraksi fitur suara target. Parameter ini hanya berlaku untuk model cosyvoice-v3-flash dan cosyvoice-v3-plus.

Deskripsi: Parameter ini membantu model mengidentifikasi bahasa audio sampel (audio referensi asli) agar ekstraksi fitur suara lebih akurat dan meningkatkan hasil kloning. Jika petunjuk bahasa yang ditentukan tidak sesuai dengan bahasa audio aktual, misalnya menetapkan en untuk file audio berbahasa Mandarin, sistem akan mengabaikan petunjuk tersebut dan mendeteksi bahasa secara otomatis dari konten audio.

Nilai yang valid:

  • zh: (default)

  • en: Bahasa Inggris

  • fr: Bahasa Prancis

  • de: Bahasa Jerman

  • ja: Bahasa Jepang

  • ko: Bahasa Korea

  • ru: Bahasa Rusia

Catatan: Parameter ini berupa array, tetapi versi saat ini hanya memproses elemen pertama. Kirim hanya satu nilai.

Parameter respons

Klik untuk melihat contoh respons

{
    "output": {
        "voice_id": "yourVoiceId"
    },
    "usage": {
        "count": 1
    },
    "request_id": "yourRequestId"
}

Parameter

Tipe

Deskripsi

voice_id

string

ID suara. Dapat langsung digunakan untuk parameter voice dalam API sintesis suara.

Query voice list

Mengambil daftar suara yang telah dibuat menggunakan kueri berhalaman.

Python SDK

Deskripsi API

def list_voices(self, prefix=None, page_index: int = 0, page_size: int = 10) -> List[dict]:
    '''
    Mengkueri semua suara yang telah dibuat.
    param: prefix Awalan kustom untuk suara. Hanya digit dan huruf kecil yang diizinkan, maksimal 10 karakter.
    param: page_index Indeks halaman untuk kueri.
    param: page_size Ukuran halaman untuk kueri.
    return: List[dict] Daftar suara. Termasuk ID, waktu pembuatan, waktu modifikasi, dan status setiap suara. Format: [{'gmt_create': '2025-10-09 14:51:01', 'gmt_modified': '2025-10-09 14:51:07', 'status': 'OK', 'voice_id': 'cosyvoice-v3-myvoice-xxx'}]
    Terdapat tiga status suara:
        DEPLOYING: Sedang ditinjau
        OK: Disetujui dan siap digunakan
        UNDEPLOYED: Tidak disetujui dan tidak dapat digunakan
    '''

Contoh permintaan

from dashscope.audio.tts_v2 import VoiceEnrollmentService

service = VoiceEnrollmentService()

# Filter berdasarkan awalan, atau atur ke None untuk mengkueri semua.
voices = service.list_voices(prefix='myvoice', page_index=0, page_size=10)

print(f"Request ID: {service.get_last_request_id()}")
print(f"Suara yang ditemukan: {voices}")

Contoh respons

[
    {
        "gmt_create": "2024-09-13 11:29:41",
        "voice_id": "yourVoiceId",
        "gmt_modified": "2024-09-13 11:29:41",
        "status": "OK"
    },
    {
        "gmt_create": "2024-09-13 13:22:38",
        "voice_id": "yourVoiceId",
        "gmt_modified": "2024-09-13 13:22:38",
        "status": "OK"
    }
]

Parameter respons

Parameter

Type

Deskripsi

voice_id

string

ID suara.

gmt_create

string

Waktu saat suara dibuat.

gmt_modified

string

Waktu saat suara dimodifikasi.

status

string

Status suara:

  • DEPLOYING: Sedang ditinjau

  • OK: Disetujui dan siap digunakan

  • UNDEPLOYED: Tidak disetujui dan tidak dapat digunakan

Java SDK

Deskripsi API

// Terdapat tiga status suara:
//        DEPLOYING: Sedang ditinjau
//        OK: Disetujui dan siap digunakan
//        UNDEPLOYED: Tidak disetujui dan tidak dapat digunakan
/**
 * Mengkueri semua suara yang telah dibuat. Indeks halaman default adalah 0, dan ukuran halaman default adalah 10.
 *
 * @param prefix Awalan kustom untuk suara. Hanya digit dan huruf kecil yang diizinkan, maksimal 10 karakter. Bisa null.
 * @return Voice[] Array objek Voice. Objek Voice mengenkapsulasi ID suara, waktu pembuatan, waktu modifikasi, dan status.
 * @throws NoApiKeyException jika Kunci API kosong.
 * @throws InputRequiredException jika parameter yang diperlukan kosong.
 */
public Voice[] listVoice(String prefix) throws NoApiKeyException, InputRequiredException 

/**
 * Mengkueri semua suara yang telah dibuat.
 *
 * @param prefix Awalan kustom untuk suara. Hanya digit dan huruf kecil yang diizinkan, maksimal 10 karakter.
 * @param pageIndex Indeks halaman untuk kueri.
 * @param pageSize Ukuran halaman untuk kueri.
 * @return Voice[] Array objek Voice. Objek Voice mengenkapsulasi ID suara, waktu pembuatan, waktu modifikasi, dan status.
 * @throws NoApiKeyException jika Kunci API kosong.
 * @throws InputRequiredException jika parameter yang diperlukan kosong.
 */
public Voice[] listVoice(String prefix, int pageIndex, int pageSize) throws NoApiKeyException, InputRequiredException

Contoh permintaan

Anda harus mengimpor library pihak ketiga com.google.gson.Gson.

import com.alibaba.dashscope.audio.ttsv2.enrollment.Voice;
import com.alibaba.dashscope.audio.ttsv2.enrollment.VoiceEnrollmentService;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.google.gson.Gson;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Main {
    public static String apiKey = System.getenv("DASHSCOPE_API_KEY");  // Jika Anda belum mengonfigurasi variabel lingkungan, ganti ini dengan Kunci API Anda.
    private static String prefix = "myvoice"; // Ganti ini dengan nilai aktual Anda.
    private static final Logger logger = LoggerFactory.getLogger(Main.class);

    public static void main(String[] args)
            throws NoApiKeyException, InputRequiredException {
        VoiceEnrollmentService service = new VoiceEnrollmentService(apiKey);
        // Kueri suara.
        Voice[] voices = service.listVoice(prefix, 0, 10);
        logger.info("Daftar berhasil. Request ID: {}", service.getLastRequestId());
        logger.info("Detail Suara: {}", new Gson().toJson(voices));
    }
}

Contoh respons

[
    {
        "gmt_create": "2024-09-13 11:29:41",
        "voice_id": "yourVoiceId",
        "gmt_modified": "2024-09-13 11:29:41",
        "status": "OK"
    },
    {
        "gmt_create": "2024-09-13 13:22:38",
        "voice_id": "yourVoiceId",
        "gmt_modified": "2024-09-13 13:22:38",
        "status": "OK"
    }
]

Parameter respons

Parameter

Tipe

Deskripsi

voice_id

string

ID suara.

gmt_create

string

Waktu saat suara dibuat.

gmt_modified

string

Waktu saat suara dimodifikasi.

status

string

Status suara:

  • DEPLOYING: Sedang ditinjau

  • OK: Disetujui dan siap digunakan

  • UNDEPLOYED: Tidak disetujui dan tidak dapat digunakan

RESTful API

Informasi dasar

URL

https://dashscope.aliyuncs.com/api/v1/services/audio/tts/customization

Metode permintaan

POST

Header permintaan

Authorization: Bearer {api-key} // Ganti dengan Kunci API Anda
Content-Type: application/json

Isi pesan

Isi pesan yang berisi semua parameter permintaan adalah sebagai berikut. Anda dapat menghilangkan bidang opsional sesuai kebutuhan:

Penting

model adalah model kloning suara. Nilainya tetap voice-enrollment.

{
    "model": "voice-enrollment",
    "input": {
        "action": "list_voice",
        "prefix": "myvoice",
        "page_index": 0,
        "page_size": 10
    }
}

Parameter permintaan

Klik untuk melihat contoh permintaan

Penting

model adalah model kloning suara. Nilainya tetap voice-enrollment.

curl -X POST https://dashscope.aliyuncs.com/api/v1/services/audio/tts/customization \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
    "model": "voice-enrollment",
    "input": {
        "action": "list_voice",
        "prefix": "myvoice",
        "page_index": 0,
        "page_size": 10
    }
}'

Parameter

Tipe

Nilai default

Wajib

Deskripsi

model

string

-

Ya

Model kloning suara. Nilainya tetap voice-enrollment.

action

string

-

Ya

Jenis operasi. Nilainya tetap list_voice.

prefix

string

null

Tidak

Awalan kustom untuk suara. Hanya digit dan huruf kecil yang diizinkan, maksimal 10 karakter.

page_index

integer

0

Tidak

Indeks nomor halaman, dimulai dari 0.

page_size

integer

10

Tidak

Jumlah entri data per halaman.

Parameter respons

Klik untuk melihat contoh respons

{
    "output": {
        "voice_list": [
            {
                "gmt_create": "2024-12-11 13:38:02",
                "voice_id": "yourVoiceId",
                "gmt_modified": "2024-12-11 13:38:02",
                "status": "OK"
            }
        ]
    },
    "usage": {
        "count": 1
    },
    "request_id": "yourRequestId"
}

Parameter

Tipe

Deskripsi

voice_id

string

ID suara.

gmt_create

string

Waktu saat suara dibuat.

gmt_modified

string

Waktu saat suara dimodifikasi.

status

string

Status suara:

  • DEPLOYING: Sedang ditinjau

  • OK: Disetujui dan siap digunakan

  • UNDEPLOYED: Tidak disetujui dan tidak dapat digunakan

Query a specific voice

Mengambil detail suara tertentu.

Python SDK

Deskripsi API

def query_voice(self, voice_id: str) -> List[str]:
    '''
    Mengkueri detail suara tertentu.
    param: voice_id ID suara yang akan dikueri.
    return: List[str] Detail suara, termasuk status, waktu pembuatan, tautan audio, dan lainnya.
    '''

Contoh permintaan

from dashscope.audio.tts_v2 import VoiceEnrollmentService

service = VoiceEnrollmentService()
voice_id = 'cosyvoice-v3-plus-myvoice-xxxxxxxx'

voice_details = service.query_voice(voice_id=voice_id)

print(f"Request ID: {service.get_last_request_id()}")
print(f"Detail Suara: {voice_details}")

Contoh respons

{
    "gmt_create": "2024-09-13 11:29:41",
    "resource_link": "https://yourAudioFileUrl",
    "target_model": "cosyvoice-v3-plus",
    "gmt_modified": "2024-09-13 11:29:41",
    "status": "OK"
}

Parameter respons

Parameter

Type

Deskripsi

resource_link

string

URL audio yang dikloning.

target_model

string

Model sintesis suara yang menggerakkan suara. Model yang direkomendasikan adalah cosyvoice-v3-flash atau cosyvoice-v3-plus.

Nilai ini harus sama dengan model sintesis suara yang digunakan saat Anda memanggil API sintesis suara nanti. Jika tidak, sintesis akan gagal.

gmt_create

string

Waktu saat suara dibuat.

gmt_modified

string

Waktu saat suara dimodifikasi.

status

string

Status suara:

  • DEPLOYING: Sedang ditinjau

  • OK: Disetujui dan siap digunakan

  • UNDEPLOYED: Tidak disetujui dan tidak dapat digunakan

Java SDK

Deskripsi API

/**
 * Mengkueri detail suara tertentu.
 *
 * @param voiceId ID suara yang akan dikueri.
 * @return Voice Detail suara, termasuk status, waktu pembuatan, tautan audio, dan lainnya.
 * @throws NoApiKeyException jika Kunci API kosong.
 * @throws InputRequiredException jika parameter yang diperlukan kosong.
 */
public Voice queryVoice(String voiceId) throws NoApiKeyException, InputRequiredException

Contoh permintaan

Anda harus mengimpor library pihak ketiga com.google.gson.Gson.

import com.alibaba.dashscope.audio.ttsv2.enrollment.Voice;
import com.alibaba.dashscope.audio.ttsv2.enrollment.VoiceEnrollmentService;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.google.gson.Gson;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Main {
    public static String apiKey = System.getenv("DASHSCOPE_API_KEY");  // Jika Anda belum mengonfigurasi variabel lingkungan, ganti ini dengan Kunci API Anda.
    private static String voiceId = "cosyvoice-v3-plus-myvoice-xxx"; // Ganti ini dengan nilai aktual Anda.
    private static final Logger logger = LoggerFactory.getLogger(Main.class);

    public static void main(String[] args)
            throws NoApiKeyException, InputRequiredException {
        VoiceEnrollmentService service = new VoiceEnrollmentService(apiKey);
        Voice voice = service.queryVoice(voiceId);
        
        logger.info("Kueri berhasil. Request ID: {}", service.getLastRequestId());
        logger.info("Detail Suara: {}", new Gson().toJson(voice));
    }
}

Contoh respons

{
    "gmt_create": "2024-09-13 11:29:41",
    "resource_link": "https://yourAudioFileUrl",
    "target_model": "cosyvoice-v3-plus",
    "gmt_modified": "2024-09-13 11:29:41",
    "status": "OK"
}

Parameter respons

Parameter

Tipe

Deskripsi

resource_link

string

URL audio yang dikloning.

target_model

string

Model sintesis suara yang menggerakkan suara. Model yang direkomendasikan adalah cosyvoice-v3-flash atau cosyvoice-v3-plus.

Nilai ini harus sama dengan model sintesis suara yang digunakan saat Anda memanggil API sintesis suara nanti. Jika tidak, sintesis akan gagal.

gmt_create

string

Waktu saat suara dibuat.

gmt_modified

string

Waktu saat suara dimodifikasi.

status

string

Status suara:

  • DEPLOYING: Sedang ditinjau

  • OK: Disetujui dan siap digunakan

  • UNDEPLOYED: Tidak disetujui dan tidak dapat digunakan

RESTful API

Informasi dasar

URL

https://dashscope.aliyuncs.com/api/v1/services/audio/tts/customization

Metode permintaan

POST

Header permintaan

Authorization: Bearer {api-key} // Ganti dengan Kunci API Anda
Content-Type: application/json

Isi pesan

Isi pesan yang berisi semua parameter permintaan adalah sebagai berikut. Anda dapat menghilangkan bidang opsional sesuai kebutuhan:

Penting

model adalah model kloning suara. Nilainya tetap voice-enrollment.

{
    "model": "voice-enrollment",
    "input": {
        "action": "query_voice",
        "voice_id": "yourVoiceId"
    }
}

Parameter permintaan

Klik untuk melihat contoh permintaan

Penting

model adalah model kloning suara. Nilainya tetap voice-enrollment.

curl -X POST https://dashscope.aliyuncs.com/api/v1/services/audio/tts/customization \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
    "model": "voice-enrollment",
    "input": {
        "action": "query_voice",
        "voice_id": "yourVoiceId"
    }
}'

Parameter

Type

Nilai default

Wajib

Deskripsi

model

string

-

Ya

Model kloning suara. Nilainya tetap voice-enrollment.

action

string

-

Ya

Jenis operasi. Nilainya tetap query_voice.

voice_id

string

-

Ya

ID suara yang akan dikueri.

Parameter respons

Klik untuk melihat contoh respons

{
    "output": {
        "gmt_create": "2024-12-11 13:38:02",
        "resource_link": "https://yourAudioFileUrl",
        "target_model": "cosyvoice-v3-plus",
        "gmt_modified": "2024-12-11 13:38:02",
        "status": "OK"
    },
    "usage": {
        "count": 1
    },
    "request_id": "2450f969-d9ea-9483-bafc-************"
}

Parameter

Tipe

Deskripsi

resource_link

string

URL audio yang dikloning.

target_model

string

Model sintesis suara yang menggerakkan suara. Model yang direkomendasikan adalah cosyvoice-v3-flash atau cosyvoice-v3-plus.

Nilai ini harus sama dengan model sintesis suara yang digunakan saat Anda memanggil API sintesis suara nanti. Jika tidak, sintesis akan gagal.

gmt_create

string

Waktu saat suara dibuat.

gmt_modified

string

Waktu saat suara dimodifikasi.

status

string

Status suara:

  • DEPLOYING: Sedang ditinjau

  • OK: Disetujui dan siap digunakan

  • UNDEPLOYED: Tidak disetujui dan tidak dapat digunakan

Update a voice

Memperbarui suara yang sudah ada dengan file audio baru.

Python SDK

Deskripsi API

def update_voice(self, voice_id: str, url: str) -> None:
    '''
    Memperbarui suara.
    param: voice_id ID suara.
    param: url URL file audio untuk kloning suara.
    '''

Contoh permintaan

from dashscope.audio.tts_v2 import VoiceEnrollmentService

service = VoiceEnrollmentService()
service.update_voice(
    voice_id='cosyvoice-v3-plus-myvoice-xxxxxxxx',
    url='https://your-new-audio-file-url'
)
print(f"Pembaruan berhasil dikirim. Request ID: {service.get_last_request_id()}")

Java SDK

Deskripsi API

/**
 * Memperbarui suara.
 *
 * @param voiceId Suara yang akan diperbarui.
 * @param url URL file audio untuk kloning suara.
 * @throws NoApiKeyException jika Kunci API kosong.
 * @throws InputRequiredException jika parameter yang diperlukan kosong.
 */
public void updateVoice(String voiceId, String url)
    throws NoApiKeyException, InputRequiredException

Contoh permintaan

import com.alibaba.dashscope.audio.ttsv2.enrollment.VoiceEnrollmentService;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Main {
    public static String apiKey = System.getenv("DASHSCOPE_API_KEY");  // Jika Anda belum mengonfigurasi variabel lingkungan, ganti ini dengan Kunci API Anda.
    private static String fileUrl = "https://your-audio-file-url";  // Ganti ini dengan nilai aktual Anda.
    private static String voiceId = "cosyvoice-v3-plus-myvoice-xxx"; // Ganti ini dengan nilai aktual Anda.
    private static final Logger logger = LoggerFactory.getLogger(Main.class);
    
    public static void main(String[] args)
            throws NoApiKeyException, InputRequiredException {
        VoiceEnrollmentService service = new VoiceEnrollmentService(apiKey);
        // Perbarui suara.
        service.updateVoice(voiceId, fileUrl);
        logger.info("Pembaruan berhasil dikirim. Request ID: {}", service.getLastRequestId());
    }
}

RESTful API

Informasi dasar

URL

https://dashscope.aliyuncs.com/api/v1/services/audio/tts/customization

Metode permintaan

POST

Header permintaan

Authorization: Bearer {api-key} // Ganti dengan Kunci API Anda
Content-Type: application/json

Isi pesan

Isi pesan yang berisi semua parameter permintaan adalah sebagai berikut. Anda dapat menghilangkan bidang opsional sesuai kebutuhan:

Penting

model adalah model kloning suara. Nilainya tetap voice-enrollment.

{
    "model": "voice-enrollment",
    "input": {
        "action": "update_voice",
        "voice_id": "yourVoiceId",
        "url": "https://yourAudioFileUrl"
    }
}

Parameter permintaan

Klik untuk melihat contoh permintaan

Penting

model adalah model kloning suara. Nilainya tetap voice-enrollment.

curl -X POST https://dashscope.aliyuncs.com/api/v1/services/audio/tts/customization \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
    "model": "voice-enrollment",
    "input": {
        "action": "update_voice",
        "voice_id": "yourVoiceId",
        "url": "https://yourAudioFileUrl"
    }
}'

Parameter

Type

Nilai default

Wajib

Deskripsi

model

string

-

Ya

Model kloning suara. Nilainya tetap voice-enrollment.

action

string

-

Ya

Jenis operasi. Nilainya tetap update_voice.

voice_id

string

-

Ya

ID suara yang akan diperbarui.

url

string

-

Ya

URL file audio untuk memperbarui suara. URL harus dapat diakses publik.

Untuk informasi tentang cara merekam audio, lihat Panduan perekaman.

Klik untuk melihat contoh respons

{
    "output": {},
    "usage": {
        "count": 1
    },
    "request_id": "yourRequestId"
}

Delete a voice

Menghapus suara yang tidak lagi diperlukan untuk mengosongkan kuota Anda. Operasi ini tidak dapat dikembalikan.

Python SDK

Deskripsi API

def delete_voice(self, voice_id: str) -> None:
    '''
    Menghapus suara.
    param: voice_id Suara yang akan dihapus.
    '''

Contoh permintaan

from dashscope.audio.tts_v2 import VoiceEnrollmentService

service = VoiceEnrollmentService()
service.delete_voice(voice_id='cosyvoice-v3-plus-myvoice-xxxxxxxx')
print(f"Penghapusan berhasil dikirim. Request ID: {service.get_last_request_id()}")

Java SDK

Deskripsi API

/**
 * Menghapus suara.
 *
 * @param voiceId Suara yang akan dihapus.
 * @throws NoApiKeyException jika Kunci API kosong.
 * @throws InputRequiredException jika parameter yang diperlukan kosong.
 */
public void deleteVoice(String voiceId) throws NoApiKeyException, InputRequiredException 

Contoh permintaan

import com.alibaba.dashscope.audio.ttsv2.enrollment.VoiceEnrollmentService;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Main {
    public static String apiKey = System.getenv("DASHSCOPE_API_KEY");  // Jika Anda belum mengonfigurasi variabel lingkungan, ganti ini dengan Kunci API Anda.
    private static String voiceId = "cosyvoice-v3-plus-myvoice-xxx"; // Ganti ini dengan nilai aktual Anda.
    private static final Logger logger = LoggerFactory.getLogger(Main.class);
    
    public static void main(String[] args)
            throws NoApiKeyException, InputRequiredException {
        VoiceEnrollmentService service = new VoiceEnrollmentService(apiKey);
        // Hapus suara.
        service.deleteVoice(voiceId);
        logger.info("Penghapusan berhasil dikirim. Request ID: {}", service.getLastRequestId());
    }
}

RESTful API

Informasi dasar

URL

https://dashscope.aliyuncs.com/api/v1/services/audio/tts/customization

Metode permintaan

POST

Header permintaan

Authorization: Bearer {api-key} // Ganti dengan Kunci API Anda
Content-Type: application/json

Isi pesan

Isi pesan yang berisi semua parameter permintaan adalah sebagai berikut. Anda dapat menghilangkan bidang opsional sesuai kebutuhan:

Penting

model adalah model kloning suara. Nilainya tetap voice-enrollment.

{
    "model": "voice-enrollment",
    "input": {
        "action": "delete_voice",
        "voice_id": "yourVoiceId"
    }
}

Parameter permintaan

Klik untuk melihat contoh permintaan

Penting

model adalah model kloning suara. Nilainya tetap voice-enrollment.

curl -X POST https://dashscope.aliyuncs.com/api/v1/services/audio/tts/customization \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
    "model": "voice-enrollment",
    "input": {
        "action": "delete_voice",
        "voice_id": "yourVoiceId"
    }
}'

Parameter

Tipe

Nilai default

Wajib

Deskripsi

model

string

-

Ya

Model kloning suara. Nilainya tetap voice-enrollment.

action

string

-

Ya

Jenis operasi. Nilainya tetap delete_voice.

voice_id

string

-

Ya

ID suara yang akan dihapus.

Klik untuk melihat contoh respons

{
    "output": {},
    "usage": {
        "count": 1
    },
    "request_id": "yourRequestId"
}

Kuota suara dan aturan pembersihan otomatis

  • Batas total: 1.000 suara per akun

    API ini tidak menyediakan fitur untuk mengkueri jumlah total suara. Anda dapat memanggil API Query voice list lalu menghitung jumlah suara dalam respons.
  • Pembersihan otomatis: Jika suara tidak digunakan untuk permintaan sintesis suara apa pun dalam satu tahun terakhir, sistem akan menghapusnya secara otomatis.

Penagihan

  • Kloning suara: Pembuatan, pengkuerian, pembaruan, dan penghapusan suara tidak dikenai biaya.

  • Sintesis suara menggunakan suara kustom: Anda ditagih berdasarkan jumlah karakter teks, lihat Sintesis suara Real-time - CosyVoice/Sambert.

Hak cipta dan legalitas

Anda bertanggung jawab untuk memastikan bahwa Anda memiliki kepemilikan dan hak hukum atas suara yang Anda berikan. Baca Ketentuan Layanan.

Kode kesalahan

Jika Anda mengalami kesalahan, lihat Pesan kesalahan untuk informasi troubleshooting.

FAQ

Fitur

T: Bagaimana cara menyesuaikan laju ucapan dan volume suara kustom?

J: Prosesnya sama seperti suara preset. Saat Anda memanggil API sintesis suara, Anda dapat mengirimkan parameter yang diperlukan. Misalnya, Anda dapat menggunakan speech_rate (Python) atau speechRate (Java) untuk menyesuaikan laju ucapan, dan volume untuk menyesuaikan volume. Untuk informasi lebih lanjut, lihat dokumentasi API sintesis suara (Java SDK / Python SDK / WebSocket API).

T: Bagaimana cara melakukan panggilan dalam bahasa lain, seperti Go, C#, atau Node.js?

J: Untuk manajemen suara, Anda dapat menggunakan RESTful API yang disediakan dalam dokumen ini. Untuk sintesis suara, Anda dapat menggunakan WebSocket API dan mengatur parameter voice ke voice_id yang Anda peroleh dari proses kloning.

Troubleshooting

Jika Anda mengalami kesalahan kode, lihat Kode kesalahan untuk informasi troubleshooting.

T: Mengapa saya tidak dapat menemukan kelas VoiceEnrollmentService?

J: Kesalahan ini terjadi karena versi SDK Anda sudah usang. Instal versi terbaru SDK.

T: Apa yang harus saya lakukan jika hasil kloning suara buruk, berisik, atau tidak jelas?

J: Masalah ini biasanya disebabkan oleh kualitas audio input yang rendah. Lihat Panduan perekaman untuk instruksi tentang cara merekam ulang dan mengunggah audio.