Voice Cloning menghasilkan suara kustom yang sangat realistis dari sampel audio berdurasi 10 hingga 20 detik tanpa memerlukan pelatihan model.
Ikhtisar
Voice Cloning memungkinkan Anda membuat asisten suara personalisasi, siaran audio bermerek, dan narasi kustom.
Model Studio mendukung Voice Cloning melalui family model berikut:
-
CosyVoice: Buat voice melalui SDK DashScope atau API HTTP. Mendukung sintesis suara dan non-real-time. Tersedia di wilayah China (Beijing) dan Singapura.
-
Qwen-TTS: Buat voice melalui API HTTP. Mendukung sintesis suara real-time dan non-real-time. Tersedia di wilayah China (Beijing) dan Singapura.
Untuk perbandingan mendetail dan panduan memilih family model, lihat Speech synthesis.
Prasyarat
-
Konfigurasikan Kunci API dan tetapkan sebagai variabel lingkungan.
-
Jika Anda memanggil API melalui SDK DashScope, instal SDK terbaru.
-
Siapkan file audio yang memenuhi Persyaratan audio.
Memulai dengan cepat
Voice cloning mencakup tiga langkah:
-
Siapkan audio: Siapkan file audio yang memenuhi Persyaratan audio.
-
Buat voice: Panggil API Voice Cloning untuk mengunggah audio dan membuat voice. Pada parameter
target_model, tentukan model sintesis suara yang akan di-bind ke voice tersebut. -
Sintesis suara: Panggil API sintesis suara dan masukkan ID voice yang dikembalikan saat Anda membuat voice tersebut.
CosyVoice voice cloning
CosyVoice voice cloning tersedia di wilayah China (Beijing) (seri v3.5, v3, v2, dan v1) dan wilayah Singapura (hanya seri v3).
Langkah 1: Buat suara
Panggil API Voice Cloning untuk mengunggah file audio dan membuat voice. Parameter url adalah URL yang dapat diakses dari file audio; prefix menetapkan awalan untuk nama voice.
URL wilayah China (Beijing). URL berbeda-beda tergantung wilayah.
URL wilayah Singapura. Ganti WorkspaceId dengan ID ruang kerja aktual Anda. URL berbeda-beda tergantung wilayah.
curl -X POST 'https://{WorkspaceId}.ap-southeast-1.maas.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://your-audio-url.wav"
}
}'
Langkah 2: Sintesis suara dengan voice hasil kloning
Ganti voice_id dalam kode berikut dengan nilai yang dikembalikan pada langkah sebelumnya.
# coding=utf-8
import dashscope
from dashscope.audio.tts_v2 import *
import os
# Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk mendapatkan kunci API, kunjungi: https://www.alibabacloud.com/help/en/model-studio/get-api-key
# Jika variabel lingkungan tidak disetel, ganti baris berikut dengan Kunci API Model Studio Anda: dashscope.api_key = "sk-xxx"
dashscope.api_key = os.environ.get('DASHSCOPE_API_KEY')
# URL wilayah Singapura. Ganti WorkspaceId dengan ID ruang kerja aktual Anda. URL berbeda-beda tergantung wilayah.
dashscope.base_websocket_api_url='wss://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api-ws/v1/inference'
# Gunakan model yang sama untuk voice cloning dan sintesis suara
model = "cosyvoice-v3-plus"
# Ganti parameter voice dengan voice kustom yang dihasilkan dari kloning
voice = "voice_id"
# Buat instans SpeechSynthesizer dengan parameter model dan voice
synthesizer = SpeechSynthesizer(model=model, voice=voice)
# Kirim teks untuk sintesis dan dapatkan audio biner
audio = synthesizer.call("How is the weather today?")
# Panggilan pertama menimbulkan latensi tambahan untuk membangun koneksi WebSocket
print('[Metric] requestId: {}, first packet latency: {} ms'.format(
synthesizer.get_last_request_id(),
synthesizer.get_first_package_delay()))
# Simpan audio ke file lokal
with open('output.mp3', 'wb') as f:
f.write(audio)
Qwen-TTS voice cloning
Contoh ini menggunakan file audio lokal voice.mp3. Sebelum menjalankan kode, ganti voice.mp3 dengan path ke file audio Anda.
target_model yang ditetapkan saat pembuatan voice harus persis sama dengan model yang digunakan untuk sintesis suara. Jika tidak, sintesis akan gagal.
Python
import os
import requests
import base64
import pathlib
import dashscope
# ======= Constants =======
DEFAULT_TARGET_MODEL = "qwen3-tts-vc-2026-01-22" # Gunakan model yang sama untuk voice cloning dan sintesis suara
DEFAULT_PREFERRED_NAME = "guanyu"
DEFAULT_AUDIO_MIME_TYPE = "audio/mpeg"
VOICE_FILE_PATH = "voice.mp3" # Path relatif ke file audio lokal yang digunakan untuk voice cloning
def create_voice(file_path: str,
target_model: str = DEFAULT_TARGET_MODEL,
preferred_name: str = DEFAULT_PREFERRED_NAME,
audio_mime_type: str = DEFAULT_AUDIO_MIME_TYPE) -> str:
"""
Buat voice kustom dan kembalikan parameter voice.
"""
# Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk mendapatkan kunci API, kunjungi: https://www.alibabacloud.com/help/en/model-studio/get-api-key
# Jika variabel lingkungan tidak disetel, ganti baris berikut dengan Kunci API Model Studio Anda: api_key = "sk-xxx"
api_key = os.getenv("DASHSCOPE_API_KEY")
file_path_obj = pathlib.Path(file_path)
if not file_path_obj.exists():
raise FileNotFoundError(f"File audio tidak ditemukan: {file_path}")
base64_str = base64.b64encode(file_path_obj.read_bytes()).decode()
data_uri = f"data:{audio_mime_type};base64,{base64_str}"
# URL wilayah Singapura. Ganti WorkspaceId dengan ID ruang kerja aktual Anda. URL berbeda-beda tergantung wilayah.
url = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/audio/tts/customization"
payload = {
"model": "qwen-voice-enrollment", # Jangan ubah nilai ini
"input": {
"action": "create",
"target_model": target_model,
"preferred_name": preferred_name,
"audio": {"data": data_uri}
}
}
headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
resp = requests.post(url, json=payload, headers=headers)
if resp.status_code != 200:
raise RuntimeError(f"Gagal membuat voice: {resp.status_code}, {resp.text}")
try:
return resp.json()["output"]["voice"]
except (KeyError, ValueError) as e:
raise RuntimeError(f"Gagal mengurai respons voice: {e}")
if __name__ == '__main__':
# URL wilayah Singapura. Ganti WorkspaceId dengan ID ruang kerja aktual Anda. URL berbeda-beda tergantung wilayah.
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'
text = "How is the weather today?"
response = dashscope.MultiModalConversation.call(
model=DEFAULT_TARGET_MODEL,
api_key=os.getenv("DASHSCOPE_API_KEY"),
text=text,
voice=create_voice(VOICE_FILE_PATH), # Ganti parameter voice dengan voice kustom yang dihasilkan dari kloning
stream=False
)
print(response)
cURL
Ganti data dengan path aktual ke file audio Anda.
URL wilayah China (Beijing). URL berbeda-beda tergantung wilayah.
Langkah 1: Buat suara
URL wilayah Singapura. Ganti WorkspaceId dengan ID ruang kerja aktual Anda. URL berbeda-beda tergantung wilayah.
curl -X POST 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/audio/tts/customization' \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen-voice-enrollment",
"input": {
"action": "create",
"target_model": "qwen3-tts-vc-2026-01-22",
"preferred_name": "guanyu",
"audio": {
"data": "https://xxx.wav"
}
}
}'
Langkah 2: Sintesis suara dengan voice hasil kloning
Ganti YOUR_VOICE_ID dengan nilai voice dari respons langkah sebelumnya.
URL wilayah China (Beijing). URL berbeda-beda tergantung wilayah.
URL wilayah Singapura. Ganti WorkspaceId dengan ID ruang kerja aktual Anda. URL berbeda-beda tergantung wilayah.
curl -X POST 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3-tts-vc-2026-01-22",
"input": {
"text": "How is the weather today?",
"voice": "YOUR_VOICE_ID"
}
}'
Persyaratan audio
Kualitas audio input secara langsung memengaruhi hasil kloning. Setiap family model memiliki persyaratan audio yang berbeda. Siapkan sampel audio Anda sesuai persyaratan model target.
CosyVoice
|
Item |
Persyaratan |
|
Format yang didukung |
WAV (16-bit), MP3, M4A |
|
Durasi |
Disarankan 10 hingga 20 detik. Maksimal 60 detik. |
|
Ukuran file |
Maksimal 10 MB |
|
Laju sampel |
16 kHz atau lebih tinggi |
|
Saluran |
Mono atau stereo. Untuk audio stereo, hanya saluran pertama yang diproses. Pastikan saluran pertama berisi ucapan yang valid. |
|
Konten |
Audio harus berisi minimal 5 detik ucapan jelas yang kontinu. Jeda singkat pada bagian sisanya tidak boleh melebihi 2 detik. Hindari musik latar, kebisingan ambient, atau suara lain. Gunakan audio ucapan dengan kecepatan normal; jangan unggah lagu atau rekaman bernyanyi. |
|
Bahasa yang didukung |
Bervariasi tergantung model sintesis suara yang ditentukan melalui parameter
|
MiniMax
|
Item |
Persyaratan |
|
Format yang didukung |
MP3, M4A, WAV |
|
Durasi |
Minimal 10 detik. Maksimal 5 menit. |
|
Ukuran file |
Maksimal 20 MB |
|
Konten |
Audio harus berisi ucapan jelas yang kontinu tanpa suara latar. Jeda tidak boleh melebihi 2 detik. Hindari musik latar, kebisingan ambient, atau suara lain selama perekaman. Gunakan audio ucapan dengan kecepatan normal. Jangan unggah rekaman lagu atau bernyanyi. |
|
Bahasa yang didukung |
Tidak ada batasan |
Qwen-TTS
|
Item |
Persyaratan |
|
Format yang didukung |
WAV (16-bit), MP3, M4A |
|
Durasi |
Disarankan 10 hingga 20 detik. Maksimal 60 detik. |
|
Ukuran file |
Kurang dari 10 MB |
|
Laju sampel |
24 kHz atau lebih tinggi |
|
Saluran |
Mono |
|
Konten |
Audio harus berisi minimal 3 detik ucapan jelas yang kontinu. Jeda singkat pada bagian sisanya tidak boleh melebihi 2 detik. Hindari musik latar, kebisingan ambient, atau suara lain. Gunakan audio ucapan dengan kecepatan normal; jangan unggah lagu atau rekaman bernyanyi. |
|
Bahasa yang didukung |
Bahasa Mandarin, Inggris, Jerman, Italia, Portugis, Spanyol, Jepang, Korea, Prancis, Rusia |
Untuk hasil kloning terbaik, ikuti Tips perekaman saat menyiapkan sampel audio Anda.
Tips perekaman
Audio input berkualitas tinggi menghasilkan hasil kloning yang lebih baik.
Peralatan perekaman
Gunakan smartphone, perekam suara digital, atau perangkat perekaman profesional. Untuk hasil terbaik, gunakan perangkat dengan laju sampel 24 kHz atau lebih tinggi.
Lingkungan perekaman
Lokasi
-
Rekam di ruang tertutup kecil berukuran maksimal 10 meter persegi.
-
Lebih baik pilih ruangan dengan material penyerap suara seperti busa akustik, karpet, atau gorden.
-
Hindari aula terbuka, ruang konferensi, ruang kelas, dan ruang lain dengan gema tinggi.
Kontrol kebisingan
-
Kebisingan luar ruangan: Tutup pintu dan jendela untuk menghalangi suara lalu lintas, konstruksi, dan suara eksternal lainnya.
-
Kebisingan dalam ruangan: Matikan AC, kipas angin, ballast lampu neon, dan peralatan lainnya. Untuk mengidentifikasi sumber kebisingan tersembunyi, rekam beberapa detik suara ambient dan putar kembali dengan volume lebih tinggi.
Kontrol gema
-
Gema mengaburkan suara dan mengurangi kejelasan.
-
Kurangi pantulan dari permukaan halus: tutup gorden, buka pintu lemari, dan letakkan pakaian atau selimut di atas meja dan lemari.
-
Gunakan benda berbentuk tidak beraturan seperti rak buku dan furnitur berlapis untuk menyebarkan suara.
Naskah perekaman
-
Tidak ada batasan konten spesifik. Sesuaikan naskah dengan kasus penggunaan target jika memungkinkan.
-
Hindari frasa pendek seperti "Halo" atau "Ya." Gunakan kalimat lengkap.
-
Pertahankan koherensi konten dan hindari jeda sering. Usahakan minimal 3 detik ucapan kontinu tanpa gangguan.
-
Pertahankan kecepatan konsisten selama perekaman. Berbicara terlalu cepat di awal atau akhir dapat menyebabkan suara tersendat pada hasil sintesis.
-
Sertakan ekspresi emosional alami — kehangatan, keramahan, atau keseriusan. Hindari penyampaian robotik.
-
Jangan sertakan konten sensitif seperti materi politik, seksual, atau kekerasan. Hal ini menyebabkan permintaan kloning gagal.
Alur kerja perekaman
Contoh berikut menggunakan kamar tidur biasa sebagai ruang perekaman. Selesaikan langkah-langkah pengurangan kebisingan dan kontrol gema yang dijelaskan di atas, lalu:
-
Tinjau naskah, tentukan nada dan persona, lalu rekam secara alami.
-
Pegang perangkat perekaman sekitar 10 cm dari mulut Anda untuk menghindari distorsi plosif atau sinyal lemah.
Manage custom voices
Setelah membuat voice dengan Qwen-TTS atau CosyVoice, Anda dapat melakukan kueri dan mengelola voice Anda melalui API.
-
List voices: Dapatkan daftar semua voice kustom di bawah akun Anda.
-
Get voice details: Lihat detail voice tertentu, seperti waktu pembuatan dan model sintesis suara yang di-bind.
-
Delete voices: Hapus voice kustom yang tidak lagi Anda perlukan untuk mengosongkan kuota.
Untuk titik akhir API dan detail parameter, lihat Referensi API.
Kuota dan penagihan
Kuota voice dan pembersihan otomatis
Batas total voice: Setiap akun Alibaba Cloud Model Studio memiliki batas terpisah sebanyak 1.000 voice kustom untuk CosyVoice dan 1.000 untuk Qwen-TTS. Kedua kuota dihitung secara independen.
Pembersihan otomatis: Jika voice tidak digunakan dalam permintaan sintesis suara apa pun selama satu tahun, sistem akan menghapusnya secara otomatis.
Aturan penagihan
-
CosyVoice: Pembuatan voice gratis.
-
Qwen-TTS: Setiap pembuatan voice dikenai biaya USD 0,01. Pembuatan yang gagal tidak dikenai biaya.
Kuota gratis (wilayah Singapura saja):
-
Anda mendapatkan 1.000 pembuatan voice gratis selama 90 hari pertama setelah mengaktifkan Alibaba Cloud Model Studio.
-
Pembuatan yang gagal tidak mengurangi kuota gratis.
-
Menghapus voice tidak mengembalikan kuota gratis.
-
Setelah kuota gratis habis atau periode 90 hari berakhir, pembuatan voice ditagih sebesar USD 0,01 per voice.
-
Model dan wilayah yang didukung
Singapura
Gunakan Kunci API wilayah Singapura saat memanggil model berikut:
-
CosyVoice: cosyvoice-v3-plus, cosyvoice-v3-flash
-
Qwen-TTS:
-
Qwen3-TTS-VC-Realtime: qwen3-tts-vc-realtime-2026-01-15 (snapshot terbaru), qwen3-tts-vc-realtime-2025-11-27 (snapshot)
-
Qwen3-TTS-VC: qwen3-tts-vc-2026-01-22 (snapshot terbaru)
-
China (Beijing)
Gunakan Kunci API wilayah China (Beijing) saat memanggil model berikut:
-
CosyVoice: cosyvoice-v3.5-plus, cosyvoice-v3.5-flash, cosyvoice-v3-plus, cosyvoice-v3-flash, cosyvoice-v2
-
Qwen-TTS:
-
Qwen3-TTS-VC-Realtime: qwen3-tts-vc-realtime-2026-01-15 (snapshot terbaru), qwen3-tts-vc-realtime-2025-11-27 (snapshot)
-
Qwen3-TTS-VC: qwen3-tts-vc-2026-01-22 (snapshot terbaru)
-
Referensi API
FAQ
T: Dapatkah saya menggunakan voice yang telah dibuat dengan model sintesis suara berbeda?
Tidak. Voice di-bind ke model sintesis suara tertentu melalui parameter target_model saat pembuatan voice dan tidak dapat digunakan lintas model. Untuk menggunakan rekaman audio yang sama dengan beberapa model, buat voice terpisah untuk setiap model.
T: Berapa lama voice hasil kloning tetap valid?
Voice yang dibuat dengan Qwen-TTS dan CosyVoice berlaku tanpa batas waktu secara default. Jika voice tidak digunakan selama satu tahun, sistem akan menghapusnya secara otomatis. Untuk detailnya, lihat Kuota voice dan pembersihan otomatis. Simpan ID voice Anda dan gunakan API kueri untuk memeriksa apakah voice masih tersedia.
T: Apakah kualitas audio yang buruk memengaruhi hasil kloning?
Ya. Kualitas audio input secara langsung memengaruhi hasil kloning. Kebisingan latar, gema, dan suara yang tumpang tindih semuanya mengurangi kemiripan dan kealamian voice hasil kloning. Ikuti Persyaratan audio dan Tips perekaman saat menyiapkan sampel audio Anda.