Skip to main content
Sintesis suara

Voice Design

Voice Design memungkinkan Anda membuat voice kustom hanya dari deskripsi bahasa alami, tanpa memerlukan sampel audio.

Ikhtisar

Voice Design cocok untuk prototipe cepat, produksi konten kreatif, dan pengisi suara karakter game. Alibaba Cloud Model Studio menyediakan Voice Design melalui keluarga model berikut:
  • CosyVoice: Mendukung sintesis suara dan non-real-time. Tersedia di wilayah Beijing (seri v3.5 dan seri v3).
  • Qwen-TTS: Mendukung sintesis suara real-time dan non-real-time dengan batas deskripsi voice yang lebih tinggi (2.048 karakter). Tersedia di wilayah Beijing dan Singapura.
Jika Anda sudah memiliki sampel audio, lihat Voice cloning. Untuk panduan memilih model, lihat Speech synthesis.

Prasyarat

Panduan Cepat Mulai

Voice Design mengikuti alur kerja tiga langkah: deskripsikan, buat, dan gunakan.
  1. Tulis deskripsi voice: Jelaskan karakteristik voice yang diinginkan dalam bahasa alami. Untuk panduan detail, lihat Tulis deskripsi voice.
  2. Buat voice: Panggil API Voice Design. Sistem menghasilkan voice berdasarkan deskripsi Anda dan mengembalikan klip audio pratinjau. Dengarkan audio pratinjau sebelum menggunakan voice tersebut di lingkungan produksi.
  3. Sintesis suara dengan voice tersebut: Panggil API sintesis suara dengan ID voice untuk menghasilkan ucapan.

CosyVoice Voice Design

Contoh berikut menunjukkan cara membuat voice CosyVoice dari deskripsi teks dan menggunakannya untuk sintesis suara.
CosyVoice Voice Design hanya tersedia di wilayah Beijing (seri v3.5 dan seri v3).
Langkah 1: Buat voice dari deskripsi Panggil API dengan dua parameter: voice_prompt untuk deskripsi voice, dan preview_text untuk teks yang dibacakan dalam audio pratinjau.
curl -X POST 'https://{WorkspaceId}.cn-beijing.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.5-plus",
        "voice_prompt": "A composed middle-aged male announcer with a deep, rich and magnetic voice, a steady speaking speed and clear articulation, is suitable for news broadcasting or documentary commentary.",
        "preview_text": "Dear listeners, hello everyone. Welcome to the evening news.",
        "prefix": "announcer"
    },
    "parameters": {
        "sample_rate": 24000,
        "response_format": "wav"
    }
}'
Langkah 2: Mensintesis Ucapan dengan Suara yang Didesain Pada permintaan berikut, gunakan nilai voice_id 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. Dapatkan Kunci API: https://www.alibabacloud.com/help/en/model-studio/get-api-key
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: dashscope.api_key = "sk-xxx"
dashscope.api_key = os.environ.get('DASHSCOPE_API_KEY')

# Konfigurasi berikut untuk wilayah China (Beijing). Ganti "{WorkspaceId}" dengan ID ruang kerja aktual Anda.
dashscope.base_websocket_api_url='wss://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api-ws/v1/inference'

# Gunakan model yang sama untuk desain voice dan sintesis suara
model = "cosyvoice-v3.5-plus"
# Ganti parameter voice dengan voice kustom yang dihasilkan oleh desain voice
voice = "voice_id"

# Buat instance SpeechSynthesizer, dengan meneruskan model, voice, dan parameter permintaan lainnya dalam konstruktor
synthesizer = SpeechSynthesizer(model=model, voice=voice)
# Kirim teks untuk sintesis dan dapatkan audio biner
audio = synthesizer.call("What is the weather like today?")
# Membuat koneksi WebSocket diperlukan saat mengirim teks untuk pertama kali, sehingga latensi paket pertama mencakup waktu penyiapan koneksi
print('[Metric] requestId: {}, first-package 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 Design

Contoh berikut menunjukkan cara membuat voice dan menggunakannya untuk sintesis suara.
Dengarkan audio pratinjau sebelum menggunakan voice untuk sintesis guna memastikan hasilnya dan menghindari biaya API yang tidak perlu.
  • Python
  • cURL
import os
import requests
import dashscope

# ======= Konstanta =======
DEFAULT_TARGET_MODEL = "qwen3-tts-vd-2026-01-26"  # Gunakan model yang sama untuk desain voice dan sintesis suara
DEFAULT_PREFERRED_NAME = "custom_voice"

# Deskripsi voice: jelaskan karakteristik voice yang diinginkan dalam bahasa alami
VOICE_PROMPT = "A young and lively female voice with a fast speaking rate and a noticeably rising intonation, suitable for introducing fashion products."

def create_voice_by_design(voice_prompt: str,
                           target_model: str = DEFAULT_TARGET_MODEL,
                           preferred_name: str = DEFAULT_PREFERRED_NAME) -> str:
    """
    Buat voice kustom berdasarkan deskripsi voice dan kembalikan parameter voice.
    """
    # Kunci API untuk wilayah Singapura dan Beijing berbeda. Dapatkan Kunci API: https://www.alibabacloud.com/help/en/model-studio/get-api-key
    # Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key = "sk-xxx"
    api_key = os.getenv("DASHSCOPE_API_KEY")

    # Wilayah Singapura
    url = "https://dashscope-intl.aliyuncs.com/api/v1/services/audio/tts/customization"
    payload = {
        "model": "qwen-voice-design",
        "input": {
            "action": "create",
            "target_model": target_model,
            "preferred_name": preferred_name,
            "voice_prompt": voice_prompt,
            "preview_text": "Hello everyone, welcome to our live stream! The product we are recommending today is truly amazing."
        },
        "parameters": {
            "sample_rate": 24000,
            "response_format": "wav"
        }
    }
    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"Failed to create voice: {resp.status_code}, {resp.text}")

    result = resp.json()
    preview_audio = result.get("output", {}).get("preview_audio")
    if preview_audio:
        import base64
        audio_data = base64.b64decode(preview_audio["data"])
        with open("preview_audio.wav", "wb") as f:
            f.write(audio_data)
        print(f"Preview audio saved to preview_audio.wav ({len(audio_data)} bytes)")

    try:
        return result["output"]["voice"]
    except (KeyError, ValueError) as e:
        raise RuntimeError(f"Failed to parse voice response: {e}")

if __name__ == '__main__':
    # Wilayah Singapura
    dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'

    voice_id = create_voice_by_design(VOICE_PROMPT)
    print(f"Created voice ID: {voice_id}")

    text = "Hello everyone, welcome to our live stream! The product we are recommending today is truly amazing."
    response = dashscope.MultiModalConversation.call(
        model=DEFAULT_TARGET_MODEL,
        # Kunci API untuk wilayah Singapura dan Beijing berbeda. Dapatkan Kunci API: https://www.alibabacloud.com/help/en/model-studio/get-api-key
        # Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key = "sk-xxx"
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        text=text,
        voice=voice_id,
        stream=False
    )
    print(response)
Deskripsi voice (voice_prompt) menentukan kualitas voice yang dihasilkan. Semakin spesifik dan detail deskripsi Anda, semakin sesuai hasilnya dengan ekspektasi Anda.

Persyaratan dan batasan

  • Batas panjang: Panjang maksimum voice_prompt bervariasi berdasarkan model: hingga 500 karakter untuk CosyVoice dan hingga 2.048 karakter untuk Qwen-TTS.
  • Bahasa yang didukung: Deskripsi voice hanya mendukung bahasa Mandarin dan Inggris.

Prinsip utama

  1. Bersifat spesifik, bukan samar: Gunakan kata-kata yang menggambarkan kualitas suara, seperti "deep," "crisp," atau "fast-paced." Hindari istilah subjektif atau ambigu seperti "nice" atau "normal."
  2. Bersifat multidimensi, bukan satu dimensi: Deskripsi yang baik mencakup beberapa dimensi (seperti jenis kelamin, usia, dan emosi). Hanya mendeskripsikan "female voice" terlalu luas untuk menghasilkan voice yang khas.
  3. Bersifat objektif, bukan subjektif: Fokus pada karakteristik fisik dan perseptual suara. Misalnya, gunakan "high-pitched with an energetic tone" daripada "my favorite voice."
  4. Bersifat orisinal, bukan imitatif: Jelaskan kualitas suara alih-alih meminta peniruan individu tertentu (seperti selebriti atau aktor). Model tidak mendukung peniruan, dan permintaan semacam itu dapat menimbulkan masalah hak cipta.
  5. Bersifat ringkas, bukan redundan: Hindari pengulangan sinonim atau penambahan pengubah yang tidak berarti. Pastikan setiap kata memiliki tujuan yang jelas.

Dimensi deskripsi

Gabungkan dimensi berikut untuk mendeskripsikan voice. Semakin banyak dimensi yang Anda sertakan, semakin akurat hasilnya.

Dimensi

Contoh

Gender

Male, female, neutral

Usia

Child (5-12), teenager (13-18), young adult (19-35), middle-aged (36-55), senior (55+)

Pitch

High, medium, low, slightly high, slightly low

Kecepatan

Fast, medium, slow, slightly fast, slightly slow

Emosi

Cheerful, calm, gentle, serious, lively, composed, soothing

Karakteristik

Resonant, crisp, husky, mellow, sweet, deep, powerful

Kasus penggunaan

News broadcast, advertising, audiobook, animation character, voice assistant, documentary narration

Contoh

  • Gaya siaran standar: artikulasi jelas dan tepat dengan pelafalan sempurna
  • Voice perempuan muda dan hidup, berkecepatan cepat dengan intonasi naik yang jelas, cocok untuk presentasi produk fesyen
  • Voice pria paruh baya tenang dan berkecepatan lambat, dalam dan resonan, cocok untuk membaca berita atau narasi dokumenter
  • Perempuan lembut dan bijaksana, sekitar 30 tahun, nada merata, cocok untuk membaca buku audio
  • Voice anak lucu, sekitar anak perempuan berusia 8 tahun, ucapan sedikit kekanak-kanakan, cocok untuk pengisi suara karakter animasi

Kelola voice kustom

Voice Design mendukung pencantuman daftar voice, melihat detail voice, dan menghapus voice. 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,2. Pembuatan yang gagal tidak dikenai biaya. Kuota gratis (Singapura saja):
    • Anda mendapatkan 10 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,2 per voice.

Model dan wilayah yang didukung

  • Singapura
  • China (Beijing)
Untuk memanggil model berikut, pilih Kunci API dari wilayah Singapura:
  • Qwen-TTS:
    • Qwen3-TTS-VD-Realtime: qwen3-tts-vd-realtime-2026-01-15 (latest snapshot), qwen3-tts-vd-realtime-2025-12-16 (snapshot)
    • Qwen3-TTS-VD: qwen3-tts-vd-2026-01-26 (latest snapshot)
  • CosyVoice Voice Design didukung oleh model FunAudioGen-VD.
  • Teks deskripsi (prompt) yang sama dapat menghasilkan voice yang sedikit berbeda setiap kali. Hasilkan beberapa voice dan pilih yang terbaik.

Referensi API

Referensi API Voice Design

FAQ

Apakah deskripsi voice yang sama selalu menghasilkan voice yang sama?

Tidak selalu. Voice Design melibatkan unsur acak, sehingga deskripsi yang sama dapat menghasilkan voice yang sedikit berbeda setiap kali. Hasilkan beberapa voice, dengarkan, lalu pilih yang terbaik.

Bahasa apa saja yang didukung untuk deskripsi voice?

Saat ini, deskripsi voice (voice_prompt) hanya mendukung bahasa Mandarin dan Inggris. Namun, voice yang dihasilkan dapat mensintesis ucapan dalam berbagai bahasa.

Apa perbedaan antara Voice Design dan Voice Cloning?

Voice Design membuat voice dari awal menggunakan deskripsi teks, tanpa memerlukan sampel audio. Fitur ini cocok untuk merancang identitas voice yang benar-benar baru. Voice Cloning mereplikasi voice berdasarkan sampel audio nyata dan cocok untuk mereproduksi voice orang tertentu. Untuk detailnya, lihat Voice cloning.
Rencana Token (Team Edition)
Model playground
Statistik dan Pemantauan
Asset Center
Dukungan layanan