Sintesis suara Qwen menghasilkan suara seperti manusia dengan intonasi alami dan penyampaian ekspresif. Layanan ini mendukung berbagai bahasa dan dialek, termasuk dialek Tiongkok, serta memungkinkan keluaran multibahasa menggunakan satu suara. Sistem secara otomatis menyesuaikan nada dan menangani teks kompleks dengan lancar.
Fitur utama
Mendukung keluaran streaming, memungkinkan sintesis dan pemutaran audio secara real-time.
Mendukung berbagai bahasa dan dialek, termasuk dialek Tiongkok.
Menyediakan beragam pilihan suara untuk berbagai kasus penggunaan.
Menawarkan dua metode kustomisasi suara: kloning suara dan desain suara.
Mendukung kontrol instruksi, yang memungkinkan Anda menyesuaikan ekspresivitas ucapan menggunakan instruksi bahasa alami.
Penerapan
Model yang tersedia:
Internasional
Dalam mode penyebaran internasional, titik akhir dan penyimpanan data berada di Wilayah Singapura. Sumber daya komputasi inferensi model dijadwalkan secara dinamis di seluruh dunia, kecuali Tiongkok daratan.
Saat memanggil model berikut, pilih Kunci API untuk Wilayah Singapura:
Qwen3-TTS-Instruct-Flash: qwen3-tts-instruct-flash (versi stabil, saat ini setara dengan qwen3-tts-instruct-flash-2026-01-26), qwen3-tts-instruct-flash-2026-01-26 (versi snapshot terbaru)
Qwen3-TTS-VD: qwen3-tts-vd-2026-01-26 (versi snapshot terbaru)
Qwen3-TTS-VC: qwen3-tts-vc-2026-01-22 (versi snapshot terbaru)
Qwen3-TTS-Flash: qwen3-tts-flash (versi stabil, saat ini setara dengan qwen3-tts-flash-2025-11-27), qwen3-tts-flash-2025-11-27, qwen3-tts-flash-2025-09-18
Tiongkok daratan
Dalam mode penyebaran Tiongkok daratan, titik akhir dan penyimpanan data berada di Wilayah Beijing. Sumber daya komputasi inferensi model terbatas pada Tiongkok daratan.
Saat memanggil model berikut, pilih Kunci API untuk Wilayah Beijing:
Qwen3-TTS-Instruct-Flash: qwen3-tts-instruct-flash (versi stabil, saat ini setara dengan qwen3-tts-instruct-flash-2026-01-26), qwen3-tts-instruct-flash-2026-01-26 (versi snapshot terbaru)
Qwen3-TTS-VD: qwen3-tts-vd-2026-01-26 (versi snapshot terbaru)
Qwen3-TTS-VC: qwen3-tts-vc-2026-01-22 (versi snapshot terbaru)
Qwen3-TTS-Flash: qwen3-tts-flash (versi stabil, saat ini setara dengan qwen3-tts-flash-2025-11-27), qwen3-tts-flash-2025-11-27, qwen3-tts-flash-2025-09-18
Qwen-TTS: qwen-tts (versi stabil, saat ini setara dengan qwen-tts-2025-04-10), qwen-tts-latest (versi terbaru, saat ini setara dengan qwen-tts-2025-05-22), qwen-tts-2025-05-22 (versi snapshot), qwen-tts-2025-04-10 (versi snapshot)
Lihat Daftar model.
Pilih model
Skenario | Model yang direkomendasikan | Alasan |
Suara kustom untuk branding, suara eksklusif, atau perluasan suara sistem (dari deskripsi teks) | qwen3-tts-vd-2026-01-26 | Mendukung desain suara. Buat suara kustom dari deskripsi teks tanpa sampel audio. Ideal untuk merancang suara merek dari awal. |
Suara kustom untuk branding, suara eksklusif, atau perluasan suara sistem (dari sampel audio) | qwen3-tts-vc-2026-01-22 | Mendukung kloning suara. Klon suara dari sampel audio untuk membuat voiceprint merek seperti manusia dengan tingkat kesetiaan dan konsistensi tinggi. |
Produksi konten emosional (audiobook, drama radio, dubbing game/animasi) | qwen3-tts-instruct-flash | Mendukung kontrol instruksi. Gunakan deskripsi bahasa alami untuk mengontrol pitch, kecepatan, emosi, dan kepribadian karakter. Ideal untuk skenario yang memerlukan ekspresi kaya dan penciptaan karakter. |
Navigasi Seluler atau Pengumuman Notifikasi | qwen3-tts-flash | Penagihan per karakter yang sederhana dan transparan. Ideal untuk panggilan frekuensi tinggi dengan teks pendek. |
Dubbing materi kursus pendidikan online | qwen3-tts-flash | Mendukung berbagai bahasa dan dialek untuk memenuhi kebutuhan pengajaran regional. |
Produksi audiobook batch | qwen3-tts-flash | Hemat biaya. Beragam pilihan suara memperkaya ekspresi konten. |
Lihat Perbandingan fitur model.
Memulai
Persiapan
Konfigurasikan Kunci API dan ekspor sebagai Variabel lingkungan.
Jika Anda memanggil layanan menggunakan SDK DashScope, instal versi SDK terbaru. SDK DashScope Java harus versi 2.21.9 atau lebih baru. SDK DashScope Python harus versi 1.24.6 atau lebih baru.
CatatanDalam SDK DashScope Python, antarmuka
SpeechSynthesizertelah disatukan ke dalamMultiModalConversation. Ganti nama antarmuka tersebut. Semua parameter lain tetap kompatibel.
Sintesis suara dengan suara sistem
Contoh berikut melakukan sintesis suara dengan suara sistem.
Keluaran non-streaming
Ambil suara hasil sintesis dari url yang dikembalikan. URL tersebut berlaku selama 24 jam.
Python
import os
import dashscope
# Ini adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ubah URL menjadi: https://dashscope.aliyuncs.com/api/v1
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
text = "Hari ini adalah hari yang indah untuk membangun sesuatu yang dicintai orang!"
# Cara menggunakan antarmuka SpeechSynthesizer: dashscope.audio.qwen_tts.SpeechSynthesizer.call(...)
response = dashscope.MultiModalConversation.call(
# Untuk menggunakan fitur kontrol instruksi, ubah model menjadi qwen3-tts-instruct-flash.
model="qwen3-tts-flash",
# Kunci API untuk wilayah Singapura dan Tiongkok (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="Cherry",
language_type="English", # Sesuaikan jenis bahasa dengan bahasa teks agar pengucapan dan intonasi terdengar alami.
# Untuk menggunakan fitur kontrol instruksi, hapus komentar baris berikut dan ubah model menjadi qwen3-tts-instruct-flash.
# instructions='Berbicara dengan kecepatan relatif cepat dengan intonasi naik yang jelas, cocok untuk memperkenalkan produk fesyen.',
# optimize_instructions=True,
stream=False
)
print(response)Java
Anda perlu mengimpor dependensi Gson. Jika Anda menggunakan Maven atau Gradle, tambahkan dependensi sebagai berikut:
Maven
Tambahkan konten berikut ke pom.xml:
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.13.1</version>
</dependency>Gradle
Tambahkan konten berikut ke build.gradle:
// https://mvnrepository.com/artifact/com.google.code.gson/gson
implementation("com.google.code.gson:gson:2.13.1")import com.alibaba.dashscope.aigc.multimodalconversation.AudioParameters;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.protocol.Protocol;
import com.alibaba.dashscope.utils.Constants;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.URL;
public class Main {
// Untuk menggunakan fitur kontrol instruksi, ubah MODEL menjadi qwen3-tts-instruct-flash.
private static final String MODEL = "qwen3-tts-flash";
public static void call() throws ApiException, NoApiKeyException, UploadFileException {
MultiModalConversation conv = new MultiModalConversation();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// Kunci API untuk wilayah Singapura dan Tiongkok (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: .apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model(MODEL)
.text("Hari ini adalah hari yang indah untuk membangun sesuatu yang dicintai orang!")
.voice(AudioParameters.Voice.CHERRY)
.languageType("English") // Sesuaikan jenis bahasa dengan bahasa teks agar pengucapan dan intonasi terdengar alami.
// Untuk menggunakan fitur kontrol instruksi, hapus komentar baris berikut dan ubah model menjadi qwen3-tts-instruct-flash.
// .parameter("instructions","Berbicara dengan kecepatan relatif cepat dengan intonasi naik yang jelas, cocok untuk memperkenalkan produk fesyen.")
// .parameter("optimize_instructions",true)
.build();
MultiModalConversationResult result = conv.call(param);
String audioUrl = result.getOutput().getAudio().getUrl();
System.out.print(audioUrl);
// Unduh file audio ke mesin lokal Anda.
try (InputStream in = new URL(audioUrl).openStream();
FileOutputStream out = new FileOutputStream("downloaded_audio.wav")) {
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = in.read(buffer)) != -1) {
out.write(buffer, 0, bytesRead);
}
System.out.println("\nFile audio diunduh ke: downloaded_audio.wav");
} catch (Exception e) {
System.out.println("\nGagal mengunduh file audio: " + e.getMessage());
}
}
public static void main(String[] args) {
// Ini adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ubah URL menjadi: https://dashscope.aliyuncs.com/api/v1
Constants.baseHttpApiUrl = "https://dashscope-intl.aliyuncs.com/api/v1";
try {
call();
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}cURL
# ======= Penting =======
# Ini adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ubah URL menjadi: https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
# Kunci API untuk wilayah Singapura dan Tiongkok (Beijing) berbeda. Dapatkan Kunci API: https://www.alibabacloud.com/help/en/model-studio/get-api-key
# === Hapus komentar ini sebelum eksekusi ===
curl -X POST 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3-tts-flash",
"input": {
"text": "Hari ini adalah hari yang indah untuk membangun sesuatu yang dicintai orang!",
"voice": "Cherry",
"language_type": "English"
}
}'Keluaran streaming
Data audio dialirkan dalam format Base64. Paket data terakhir berisi URL file audio lengkap.
Python
# coding=utf-8
#
# Instruksi instalasi pyaudio:
# APPLE Mac OS X
# brew install portaudio
# pip install pyaudio
# Debian/Ubuntu
# sudo apt-get install python-pyaudio python3-pyaudio
# or
# pip install pyaudio
# CentOS
# sudo yum install -y portaudio portaudio-devel && pip install pyaudio
# Microsoft Windows
# python -m pip install pyaudio
import os
import dashscope
import pyaudio
import time
import base64
import numpy as np
# Ini adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ubah URL menjadi: https://dashscope.aliyuncs.com/api/v1
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
p = pyaudio.PyAudio()
# Buat aliran audio.
stream = p.open(format=pyaudio.paInt16,
channels=1,
rate=24000,
output=True)
text = "Hari ini adalah hari yang indah untuk membangun sesuatu yang dicintai orang!"
response = dashscope.MultiModalConversation.call(
# Kunci API untuk wilayah Singapura dan Tiongkok (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"),
# Untuk menggunakan fitur kontrol instruksi, ubah model menjadi qwen3-tts-instruct-flash.
model="qwen3-tts-flash",
text=text,
voice="Cherry",
language_type="English", # Sesuaikan jenis bahasa dengan bahasa teks agar pengucapan dan intonasi terdengar alami.
# Untuk menggunakan fitur kontrol instruksi, hapus komentar baris berikut dan ubah model menjadi qwen3-tts-instruct-flash.
# instructions='Berbicara dengan kecepatan relatif cepat dengan intonasi naik yang jelas, cocok untuk memperkenalkan produk fesyen.',
# optimize_instructions=True,
stream=True
)
for chunk in response:
if chunk.output is not None:
audio = chunk.output.audio
if audio.data is not None:
wav_bytes = base64.b64decode(audio.data)
audio_np = np.frombuffer(wav_bytes, dtype=np.int16)
# Putar data audio secara langsung.
stream.write(audio_np.tobytes())
if chunk.output.finish_reason == "stop":
print("selesai pada: {} ", chunk.output.audio.expires_at)
time.sleep(0.8)
# Bersihkan sumber daya.
stream.stop_stream()
stream.close()
p.terminate()
Java
Anda perlu mengimpor dependensi Gson. Jika Anda menggunakan Maven atau Gradle, tambahkan dependensi sebagai berikut:
Maven
Tambahkan konten berikut ke pom.xml:
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.13.1</version>
</dependency>Gradle
Tambahkan konten berikut ke build.gradle:
// https://mvnrepository.com/artifact/com.google.code.gson/gson
implementation("com.google.code.gson:gson:2.13.1")// Instal versi terbaru SDK DashScope.
import com.alibaba.dashscope.aigc.multimodalconversation.AudioParameters;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.protocol.Protocol;
import com.alibaba.dashscope.utils.Constants;
import io.reactivex.Flowable;
import javax.sound.sampled.*;
import java.util.Base64;
public class Main {
// Untuk menggunakan fitur kontrol instruksi, ubah MODEL menjadi qwen3-tts-instruct-flash.
private static final String MODEL = "qwen3-tts-flash";
public static void streamCall() throws ApiException, NoApiKeyException, UploadFileException {
MultiModalConversation conv = new MultiModalConversation();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// Kunci API untuk wilayah Singapura dan Tiongkok (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: .apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model(MODEL)
.text("Hari ini adalah hari yang indah untuk membangun sesuatu yang dicintai orang!")
.voice(AudioParameters.Voice.CHERRY)
.languageType("English") // Sesuaikan jenis bahasa dengan bahasa teks agar pengucapan dan intonasi terdengar alami.
// Untuk menggunakan fitur kontrol instruksi, hapus komentar baris berikut dan ubah model menjadi qwen3-tts-instruct-flash.
// .parameter("instructions","Berbicara dengan kecepatan relatif cepat dengan intonasi naik yang jelas, cocok untuk memperkenalkan produk fesyen.")
// .parameter("optimize_instructions",true)
.build();
Flowable<MultiModalConversationResult> result = conv.streamCall(param);
result.blockingForEach(r -> {
try {
// 1. Dapatkan data audio yang dikodekan Base64.
String base64Data = r.getOutput().getAudio().getData();
byte[] audioBytes = Base64.getDecoder().decode(base64Data);
// 2. Konfigurasi format audio. Sesuaikan format berdasarkan respons API.
AudioFormat format = new AudioFormat(
AudioFormat.Encoding.PCM_SIGNED,
24000, // Laju sampel. Harus konsisten dengan format yang dikembalikan oleh API.
16, // Kedalaman bit audio
1, // Jumlah saluran suara
2, // Ukuran frame (kedalaman bit/8)
24000, // Laju transmisi data. Harus konsisten dengan laju sampel.
false // Menentukan apakah data dikompresi.
);
// 3. Putar data audio secara real-time.
DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);
try (SourceDataLine line = (SourceDataLine) AudioSystem.getLine(info)) {
if (line != null) {
line.open(format);
line.start();
line.write(audioBytes, 0, audioBytes.length);
line.drain();
}
}
} catch (LineUnavailableException e) {
e.printStackTrace();
}
});
}
public static void main(String[] args) {
// Ini adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ubah URL menjadi: https://dashscope.aliyuncs.com/api/v1
Constants.baseHttpApiUrl = "https://dashscope-intl.aliyuncs.com/api/v1";
try {
streamCall();
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}
cURL
# ======= Penting =======
# Ini adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ubah URL menjadi: https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
# Kunci API untuk wilayah Singapura dan Tiongkok (Beijing) berbeda. Dapatkan Kunci API: https://www.alibabacloud.com/help/en/model-studio/get-api-key
# === Hapus komentar ini sebelum eksekusi ===
curl -X POST 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-H 'X-DashScope-SSE: enable' \
-d '{
"model": "qwen3-tts-flash",
"input": {
"text": "Hari ini adalah hari yang indah untuk membangun sesuatu yang dicintai orang!",
"voice": "Cherry",
"language_type": "Chinese"
}
}'Sintesis suara dengan suara hasil kloning
Kloning suara tidak menyediakan audio pratinjau. Untuk mengevaluasi hasilnya, terapkan suara hasil kloning tersebut pada sintesis suara.
Contoh ini menggunakan suara hasil kloning untuk sintesis suara, menghasilkan keluaran yang sangat mirip dengan suara aslinya. Contoh ini dibangun berdasarkan contoh keluaran non-streaming untuk SDK DashScope, dengan parameter voice diatur ke suara hasil kloning.
Prinsip utama: Model yang digunakan untuk kloning suara (
target_model) harus sama dengan model yang digunakan untuk sintesis suara (model). Jika tidak, sintesis akan gagal.Contoh ini menggunakan file audio lokal
voice.mp3untuk kloning suara. Saat menjalankan kode, gantilah path file dengan milik Anda sendiri.
Python
import os
import requests
import base64
import pathlib
import dashscope
# ======= Konfigurasi konstan =======
DEFAULT_TARGET_MODEL = "qwen3-tts-vc-2026-01-22" # Gunakan model yang sama untuk kloning suara 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 kloning suara
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 suara dan kembalikan parameter suara.
"""
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan: 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}"
# Titik akhir wilayah Singapura. Untuk wilayah Beijing, gunakan: https://dashscope.aliyuncs.com/api/v1/services/audio/tts/customization
url = "https://dashscope-intl.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 suara: {resp.status_code}, {resp.text}")
try:
return resp.json()["output"]["voice"]
except (KeyError, ValueError) as e:
raise RuntimeError(f"Gagal mengurai respons suara: {e}")
if __name__ == '__main__':
# Titik akhir wilayah Singapura. Untuk wilayah Beijing, gunakan: https://dashscope.aliyuncs.com/api/v1
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
text = "Bagaimana cuaca hari ini?"
# Penggunaan antarmuka SpeechSynthesizer: dashscope.audio.qwen_tts.SpeechSynthesizer.call(...)
response = dashscope.MultiModalConversation.call(
model=DEFAULT_TARGET_MODEL,
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan: api_key = "sk-xxx"
api_key=os.getenv("DASHSCOPE_API_KEY"),
text=text,
voice=create_voice(VOICE_FILE_PATH), # Ganti parameter voice dengan suara kustom yang dihasilkan dari kloning
stream=False
)
print(response)Java
Tambahkan dependensi Gson ke proyek Anda.
Maven
Tambahkan konten berikut ke pom.xml:
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.13.1</version>
</dependency>Gradle
Tambahkan konten berikut ke build.gradle:
// https://mvnrepository.com/artifact/com.google.code.gson/gson
implementation("com.google.code.gson:gson:2.13.1")Saat Anda menggunakan sintesis suara dengan suara kustom yang dihasilkan dari kloning suara, konfigurasikan suara sebagai berikut:
MultiModalConversationParam param = MultiModalConversationParam.builder()
.parameter("voice", "your_voice") // Ganti parameter suara dengan suara kustom yang dihasilkan oleh desain suara
.build();import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.utils.Constants;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.file.*;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
public class Main {
// ===== Definisi konstan =====
// Gunakan model yang sama untuk kloning suara dan sintesis suara
private static final String TARGET_MODEL = "qwen3-tts-vc-2026-01-22";
private static final String PREFERRED_NAME = "guanyu";
// Path relatif ke file audio lokal yang digunakan untuk kloning suara
private static final String AUDIO_FILE = "voice.mp3";
private static final String AUDIO_MIME_TYPE = "audio/mpeg";
// Hasilkan URI data
public static String toDataUrl(String filePath) throws IOException {
byte[] bytes = Files.readAllBytes(Paths.get(filePath));
String encoded = Base64.getEncoder().encodeToString(bytes);
return "data:" + AUDIO_MIME_TYPE + ";base64," + encoded;
}
// Panggil API untuk membuat suara
public static String createVoice() throws Exception {
// Kunci API berbeda antara wilayah Singapura dan Beijing. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/zh/model-studio/get-api-key
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan: String apiKey = "sk-xxx"
String apiKey = System.getenv("DASHSCOPE_API_KEY");
String jsonPayload =
"{"
+ "\"model\": \"qwen-voice-enrollment\"," // Jangan ubah nilai ini
+ "\"input\": {"
+ "\"action\": \"create\","
+ "\"target_model\": \"" + TARGET_MODEL + "\","
+ "\"preferred_name\": \"" + PREFERRED_NAME + "\","
+ "\"audio\": {"
+ "\"data\": \"" + toDataUrl(AUDIO_FILE) + "\""
+ "}"
+ "}"
+ "}";
// Titik akhir wilayah Singapura. Untuk wilayah Beijing, gunakan: https://dashscope.aliyuncs.com/api/v1/services/audio/tts/customization
String url = "https://dashscope-intl.aliyuncs.com/api/v1/services/audio/tts/customization";
HttpURLConnection con = (HttpURLConnection) new URL(url).openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Authorization", "Bearer " + apiKey);
con.setRequestProperty("Content-Type", "application/json");
con.setDoOutput(true);
try (OutputStream os = con.getOutputStream()) {
os.write(jsonPayload.getBytes(StandardCharsets.UTF_8));
}
int status = con.getResponseCode();
System.out.println("Kode status HTTP: " + status);
try (BufferedReader br = new BufferedReader(
new InputStreamReader(status >= 200 && status < 300 ? con.getInputStream() : con.getErrorStream(),
StandardCharsets.UTF_8))) {
StringBuilder response = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
response.append(line);
}
System.out.println("Konten respons: " + response);
if (status == 200) {
JsonObject jsonObj = new Gson().fromJson(response.toString(), JsonObject.class);
return jsonObj.getAsJsonObject("output").get("voice").getAsString();
}
throw new IOException("Gagal membuat suara: " + status + " - " + response);
}
}
public static void call() throws Exception {
MultiModalConversation conv = new MultiModalConversation();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// Kunci API berbeda antara wilayah Singapura dan Beijing. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/zh/model-studio/get-api-key
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan: .apikey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model(TARGET_MODEL)
.text("Bagaimana cuaca hari ini?")
.parameter("voice", createVoice()) // Ganti parameter voice dengan suara kustom yang dihasilkan dari kloning
.build();
MultiModalConversationResult result = conv.call(param);
String audioUrl = result.getOutput().getAudio().getUrl();
System.out.print(audioUrl);
// Unduh file audio secara lokal
try (InputStream in = new URL(audioUrl).openStream();
FileOutputStream out = new FileOutputStream("downloaded_audio.wav")) {
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = in.read(buffer)) != -1) {
out.write(buffer, 0, bytesRead);
}
System.out.println("\nFile audio diunduh secara lokal: downloaded_audio.wav");
} catch (Exception e) {
System.out.println("\nGagal mengunduh file audio: " + e.getMessage());
}
}
public static void main(String[] args) {
try {
// Titik akhir wilayah Singapura. Untuk wilayah Beijing, gunakan: https://dashscope.aliyuncs.com/api/v1
Constants.baseHttpApiUrl = "https://dashscope-intl.aliyuncs.com/api/v1";
call();
} catch (Exception e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}Menggunakan timbre desain suara untuk sintesis suara
Fitur desain suara mengembalikan audio pratinjau. Dengarkan pratinjau tersebut untuk memastikan hasilnya sesuai harapan sebelum menggunakannya untuk sintesis. Hal ini mengurangi biaya pemanggilan.
Buat suara kustom dan dengarkan pratinjaunya. Jika puas, lanjutkan. Jika tidak, buat ulang.
Python
import requests import base64 import os def create_voice_and_play(): # Kunci API berbeda antara wilayah Singapura dan Beijing. Dapatkan Kunci API: https://www.alibabacloud.com/help/zh/model-studio/get-api-key # Jika variabel lingkungan belum diatur, ganti baris berikut dengan Kunci API Model Studio Anda: api_key = "sk-xxx" api_key = os.getenv("DASHSCOPE_API_KEY") if not api_key: print("Error: Variabel lingkungan DASHSCOPE_API_KEY tidak ditemukan. Harap atur Kunci API terlebih dahulu.") return None, None, None # Siapkan data permintaan headers = { "Authorization": f"Bearer {api_key}", "Content-Type": "application/json" } data = { "model": "qwen-voice-design", "input": { "action": "create", "target_model": "qwen3-tts-vd-2026-01-26", "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.", "preferred_name": "announcer", "language": "en" }, "parameters": { "sample_rate": 24000, "response_format": "wav" } } # Berikut adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/api/v1/services/audio/tts/customization url = "https://dashscope-intl.aliyuncs.com/api/v1/services/audio/tts/customization" try: # Kirim permintaan response = requests.post( url, headers=headers, json=data, timeout=60 # Tambahkan pengaturan timeout ) if response.status_code == 200: result = response.json() # Dapatkan nama suara voice_name = result["output"]["voice"] print(f"Nama suara: {voice_name}") # Dapatkan data audio pratinjau base64_audio = result["output"]["preview_audio"]["data"] # Dekode data audio Base64 audio_bytes = base64.b64decode(base64_audio) # Simpan file audio secara lokal filename = f"{voice_name}_preview.wav" # Tulis data audio ke file lokal with open(filename, 'wb') as f: f.write(audio_bytes) print(f"Audio disimpan ke file lokal: {filename}") print(f"Path file: {os.path.abspath(filename)}") return voice_name, audio_bytes, filename else: print(f"Permintaan gagal dengan kode status: {response.status_code}") print(f"Konten respons: {response.text}") return None, None, None except requests.exceptions.RequestException as e: print(f"Terjadi error permintaan jaringan: {e}") return None, None, None except KeyError as e: print(f"Error format data respons, field wajib tidak ditemukan: {e}") print(f"Konten respons: {response.text if 'response' in locals() else 'Tidak ada respons'}") return None, None, None except Exception as e: print(f"Terjadi error tak dikenal: {e}") return None, None, None if __name__ == "__main__": print("Mulai membuat suara...") voice_name, audio_data, saved_filename = create_voice_and_play() if voice_name: print(f"\nBerhasil membuat suara '{voice_name}'") print(f"File audio disimpan sebagai: '{saved_filename}'") print(f"Ukuran file: {os.path.getsize(saved_filename)} byte") else: print("\nGagal membuat suara")Java
Tambahkan dependensi Gson ke proyek Anda:
Maven
Tambahkan berikut ke
pom.xmlAnda:<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson --> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.13.1</version> </dependency>Gradle
Tambahkan berikut ke
build.gradleAnda:// https://mvnrepository.com/artifact/com.google.code.gson/gson implementation("com.google.code.gson:gson:2.13.1")PentingUntuk menggunakan suara kustom yang dihasilkan dari desain suara untuk sintesis suara, konfigurasikan suara sebagai berikut:
MultiModalConversationParam param = MultiModalConversationParam.builder() .parameter("voice", "your_voice") // Ganti parameter voice dengan suara kustom yang dihasilkan dari desain suara .build();import com.google.gson.JsonObject; import com.google.gson.JsonParser; import java.io.*; import java.net.HttpURLConnection; import java.net.URL; import java.util.Base64; public class Main { public static void main(String[] args) { Main example = new Main(); example.createVoice(); } public void createVoice() { // Kunci API berbeda antara wilayah Singapura dan Beijing. Dapatkan Kunci API: https://www.alibabacloud.com/help/zh/model-studio/get-api-key // Jika variabel lingkungan belum diatur, ganti baris berikut dengan Kunci API Model Studio Anda: String apiKey = "sk-xxx" String apiKey = System.getenv("DASHSCOPE_API_KEY"); // Buat string body permintaan JSON String jsonBody = "{\n" + " \"model\": \"qwen-voice-design\",\n" + " \"input\": {\n" + " \"action\": \"create\",\n" + " \"target_model\": \"qwen3-tts-vd-2026-01-26\",\n" + " \"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.\",\n" + " \"preview_text\": \"Dear listeners, hello everyone. Welcome to the evening news.\",\n" + " \"preferred_name\": \"announcer\",\n" + " \"language\": \"en\"\n" + " },\n" + " \"parameters\": {\n" + " \"sample_rate\": 24000,\n" + " \"response_format\": \"wav\"\n" + " }\n" + "}"; HttpURLConnection connection = null; try { // Berikut adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/api/v1/services/audio/tts/customization URL url = new URL("https://dashscope-intl.aliyuncs.com/api/v1/services/audio/tts/customization"); connection = (HttpURLConnection) url.openConnection(); // Atur metode dan header permintaan connection.setRequestMethod("POST"); connection.setRequestProperty("Authorization", "Bearer " + apiKey); connection.setRequestProperty("Content-Type", "application/json"); connection.setDoOutput(true); connection.setDoInput(true); // Kirim body permintaan try (OutputStream os = connection.getOutputStream()) { byte[] input = jsonBody.getBytes("UTF-8"); os.write(input, 0, input.length); os.flush(); } // Dapatkan respons int responseCode = connection.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { // Baca konten respons StringBuilder response = new StringBuilder(); try (BufferedReader br = new BufferedReader( new InputStreamReader(connection.getInputStream(), "UTF-8"))) { String responseLine; while ((responseLine = br.readLine()) != null) { response.append(responseLine.trim()); } } // Uraikan respons JSON JsonObject jsonResponse = JsonParser.parseString(response.toString()).getAsJsonObject(); JsonObject outputObj = jsonResponse.getAsJsonObject("output"); JsonObject previewAudioObj = outputObj.getAsJsonObject("preview_audio"); // Dapatkan nama suara String voiceName = outputObj.get("voice").getAsString(); System.out.println("Nama suara: " + voiceName); // Dapatkan data audio yang dikodekan Base64 String base64Audio = previewAudioObj.get("data").getAsString(); // Dekode data audio Base64 byte[] audioBytes = Base64.getDecoder().decode(base64Audio); // Simpan audio ke file lokal String filename = voiceName + "_preview.wav"; saveAudioToFile(audioBytes, filename); System.out.println("Audio disimpan ke file lokal: " + filename); } else { // Baca respons error StringBuilder errorResponse = new StringBuilder(); try (BufferedReader br = new BufferedReader( new InputStreamReader(connection.getErrorStream(), "UTF-8"))) { String responseLine; while ((responseLine = br.readLine()) != null) { errorResponse.append(responseLine.trim()); } } System.out.println("Permintaan gagal dengan kode status: " + responseCode); System.out.println("Respons error: " + errorResponse.toString()); } } catch (Exception e) { System.err.println("Terjadi error selama permintaan: " + e.getMessage()); e.printStackTrace(); } finally { if (connection != null) { connection.disconnect(); } } } private void saveAudioToFile(byte[] audioBytes, String filename) { try { File file = new File(filename); try (FileOutputStream fos = new FileOutputStream(file)) { fos.write(audioBytes); } System.out.println("Audio disimpan ke: " + file.getAbsolutePath()); } catch (IOException e) { System.err.println("Terjadi error saat menyimpan file audio: " + e.getMessage()); e.printStackTrace(); } } }Gunakan suara kustom yang dibuat pada langkah sebelumnya untuk sintesis suara non-streaming.
Contoh ini mengikuti contoh kode "keluaran non-streaming" untuk suara sistem di SDK DashScope. Ganti parameter
voicedengan suara kustom yang dihasilkan dari desain suara. Untuk sintesis streaming unidireksional, lihat Sintesis suara - Qwen.Prinsip utama: Model yang digunakan untuk desain suara (
target_model) harus sama dengan model yang digunakan untuk sintesis suara selanjutnya (model). Jika tidak, sintesis akan gagal.Python
import os import dashscope if __name__ == '__main__': # Berikut adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/api/v1 dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1' text = "Cuaca hari ini seperti apa?" # Cara menggunakan SpeechSynthesizer: dashscope.audio.qwen_tts.SpeechSynthesizer.call(...) response = dashscope.MultiModalConversation.call( model="qwen3-tts-vd-2026-01-26", # Kunci API berbeda antara wilayah Singapura dan Beijing. Dapatkan Kunci API: https://www.alibabacloud.com/help/zh/model-studio/get-api-key # Jika variabel lingkungan belum diatur, ganti baris berikut dengan Kunci API Model Studio Anda: api_key = "sk-xxx" api_key=os.getenv("DASHSCOPE_API_KEY"), text=text, voice="myvoice", # Ganti parameter voice dengan suara kustom yang dihasilkan dari desain suara stream=False ) print(response)Java
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation; import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam; import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult; import com.alibaba.dashscope.exception.ApiException; import com.alibaba.dashscope.exception.NoApiKeyException; import com.alibaba.dashscope.exception.UploadFileException; import com.alibaba.dashscope.utils.Constants; import java.io.FileOutputStream; import java.io.InputStream; import java.net.URL; public class Main { private static final String MODEL = "qwen3-tts-vd-2026-01-26"; public static void call() throws ApiException, NoApiKeyException, UploadFileException { MultiModalConversation conv = new MultiModalConversation(); MultiModalConversationParam param = MultiModalConversationParam.builder() // Kunci API berbeda antara wilayah Singapura dan Beijing. Dapatkan Kunci API: https://www.alibabacloud.com/help/zh/model-studio/get-api-key // Jika variabel lingkungan belum diatur, ganti baris berikut dengan Kunci API Model Studio Anda: .apiKey("sk-xxx") .apiKey(System.getenv("DASHSCOPE_API_KEY")) .model(MODEL) .text("Hari ini adalah hari yang indah untuk membangun sesuatu yang dicintai orang!") .parameter("voice", "myvoice") // Ganti parameter voice dengan suara kustom yang dihasilkan dari desain suara .build(); MultiModalConversationResult result = conv.call(param); String audioUrl = result.getOutput().getAudio().getUrl(); System.out.print(audioUrl); // Unduh file audio secara lokal try (InputStream in = new URL(audioUrl).openStream(); FileOutputStream out = new FileOutputStream("downloaded_audio.wav")) { byte[] buffer = new byte[1024]; int bytesRead; while ((bytesRead = in.read(buffer)) != -1) { out.write(buffer, 0, bytesRead); } System.out.println("\nFile audio diunduh secara lokal: downloaded_audio.wav"); } catch (Exception e) { System.out.println("\nGagal mengunduh file audio: " + e.getMessage()); } } public static void main(String[] args) { try { // Berikut adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/api/v1 Constants.baseHttpApiUrl = "https://dashscope-intl.aliyuncs.com/api/v1"; call(); } catch (ApiException | NoApiKeyException | UploadFileException e) { System.out.println(e.getMessage()); } System.exit(0); } }
Kontrol instruksi
Kontrol instruksi menyesuaikan ekspresivitas ucapan melalui deskripsi bahasa alami. Sesuaikan pitch, kecepatan, emosi, dan timbre tanpa perlu menyetel manual parameter audio.
Model yang didukung: Hanya seri Qwen3-TTS-Instruct-Flash.
Penggunaan: Atur parameter instructions, misalnya, "Berbicara dengan kecepatan relatif cepat dengan intonasi naik yang jelas, cocok untuk memperkenalkan produk fesyen."
Bahasa yang didukung: Teks instruksi hanya mendukung bahasa Tiongkok dan Inggris.
Batas panjang: Maksimal 1.600 token.
Skema penggunaan:
Dubbing audiobook dan drama radio
Dubbing iklan dan video promosi
Dubbing karakter game dan animasi
Asisten Suara Cerdas Emosional
Siaran berita dan dokumenter
Cara menulis deskripsi suara berkualitas tinggi:
Prinsip inti:
Bersifat spesifik, bukan samar: Gunakan kata-kata yang menggambarkan karakteristik suara konkret, seperti "dalam," "jernih," atau "berkecepatan cepat." Hindari istilah subjektif dan tidak informatif seperti "bagus" atau "normal."
Bersifat multidimensi, bukan satu dimensi: Deskripsi yang baik menggabungkan beberapa dimensi, seperti pitch, kecepatan, dan emosi. Deskripsi satu dimensi, seperti hanya "berpitch tinggi," terlalu luas untuk menghasilkan efek yang khas.
Bersifat objektif, bukan subjektif: Fokus pada karakteristik fisik dan persepsi suara itu sendiri, bukan preferensi pribadi. Misalnya, gunakan "berpitch tinggi dan energetik" daripada "suara favorit saya."
Bersifat orisinal, bukan meniru: Gambarkan karakteristik suara daripada meminta peniruan orang tertentu, seperti selebriti atau aktor. Permintaan semacam itu melibatkan risiko hak cipta dan tidak didukung.
Bersifat ringkas, bukan berlebihan: Pastikan setiap kata memberikan makna. Hindari pengulangan sinonim atau penguat yang tidak berarti, seperti "suara yang sangat, sangat bagus."
Referensi dimensi: Gabungkan beberapa dimensi untuk ekspresi yang lebih kaya.
Dimensi
Contoh deskripsi
Pitch
Tinggi, sedang, rendah, berpitch tinggi, berpitch rendah
Kecepatan
Cepat, sedang, lambat, berkecepatan cepat, berkecepatan lambat
Emosi
Ceria, tenang, lembut, serius, hidup, tenang, menenangkan
Karakteristik
Magnetis, jernih, serak, merdu, manis, dalam, kuat
Penggunaan
Siaran berita, sulih suara iklan, audiobook, karakter animasi, asisten suara, narasi dokumenter
Contoh:
Gaya siaran standar: Artikulasi jelas dan tepat, pengucapan bulat sempurna.
Efek emosional progresif: Volume meningkat pesat dari percakapan normal hingga teriakan, dengan kepribadian langsung dan emosi ekspresif yang mudah terangsang.
Keadaan emosional khusus: Nada menangis menyebabkan pengucapan agak cadel dan serak, dengan ketegangan nyata dalam suara tangisan.
Gaya sulih suara iklan: Berpitch tinggi, kecepatan sedang, penuh energi dan daya tarik, cocok untuk sulih suara iklan.
Gaya lembut dan menenangkan: Berkecepatan lambat, dengan pitch lembut dan manis, serta nada hangat yang menenangkan, seperti teman yang peduli.
Referensi API
Perbandingan fitur model
Fitur | Qwen3-TTS-Instruct-Flash | Qwen3-TTS-VD | Qwen3-TTS-VC | Qwen3-TTS-Flash | Qwen-TTS |
Bahasa yang didukung | Bervariasi berdasarkan suara: Tiongkok (Mandarin), Inggris, Spanyol, Rusia, Italia, Prancis, Korea, Jepang, Jerman, Portugis | Tiongkok (Mandarin), Inggris, Spanyol, Rusia, Italia, Prancis, Korea, Jepang, Jerman, Portugis | Bervariasi berdasarkan suara: Tiongkok (Mandarin, Shanghainese, dialek Beijing, dialek Sichuan, dialek Nanjing, dialek Shaanxi, Min Selatan, dialek Tianjin), Kanton, Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea | Bervariasi berdasarkan suara: Tiongkok (Mandarin, Shanghainese, dialek Beijing, dialek Sichuan), Inggris | |
Format audio |
| ||||
Laju sampel audio | 24 kHz | ||||
Kloning suara | |||||
Desain suara | |||||
SSML | |||||
LaTeX | |||||
Kontrol volume | Dapat disesuaikan melalui kontrol instruksi | ||||
Kontrol laju ucapan | Dapat disesuaikan melalui kontrol instruksi | ||||
Kontrol pitch | Dapat disesuaikan melalui kontrol instruksi | ||||
Kontrol bitrate | |||||
Timestamp | |||||
Kontrol instruksi | |||||
Masukan streaming | |||||
Streaming Output | |||||
Batas laju | Permintaan per menit (RPM): 180 | RPM: 180 | RPM: 180 | RPM bervariasi berdasarkan model:
| RPM: 10 Token per menit (TPM), termasuk token input dan output: 100.000 |
Jenis koneksi | SDK Java/Python, API WebSocket | ||||
Harga | Internasional: $0,115/10.000 karakter Tiongkok daratan: $0,115/10.000 karakter | Internasional: $0,115/10.000 karakter Tiongkok daratan: $0,115/10.000 karakter | Internasional: $0,115/10.000 karakter Tiongkok daratan: $0,115/10.000 karakter | Internasional: $0,1/10.000 karakter Tiongkok daratan: $0,114682/10.000 karakter | Tiongkok daratan:
Konversi token: 1 detik audio setara dengan 50 token. Audio kurang dari 1 detik dihitung sebagai 50 token. |
Suara sistem yang didukung
Suara yang didukung bervariasi berdasarkan model. Atur parameter permintaan voice ke nilai yang sesuai di kolom parameter suara pada daftar suara.
| Detail | Bahasa yang didukung | Model yang didukung |
| Nama suara: Cherry Deskripsi: Wanita muda yang ceria, positif, ramah, dan alami (perempuan) | Tiongkok (Mandarin), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
| Nama suara: Serena Deskripsi: Wanita muda yang lembut (perempuan) | Tiongkok (Mandarin), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
| Nama suara: Ethan Deskripsi: Mandarin standar dengan sedikit aksen utara. Ceria, hangat, energetik, dan bersemangat (laki-laki) | Tiongkok (Mandarin), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
| Nama suara: Chelsie Deskripsi: Pacar virtual bergaya dua dimensi (perempuan) | Tiongkok (Mandarin), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
| Nama suara: Momo Deskripsi: Lincah dan nakal, menghibur Anda (perempuan) | Tiongkok (Mandarin), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
| Nama suara: Vivian Deskripsi: Percaya diri, imut, dan sedikit galak (perempuan) | Tiongkok (Mandarin), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
| Nama suara: Moon Deskripsi: Pria tampan dan berani bernama Yuebai (laki-laki) | Tiongkok (Mandarin), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
| Nama suara: Maia Deskripsi: Perpaduan kecerdasan dan kelembutan (perempuan) | Tiongkok (Mandarin), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
| Nama suara: Kai Deskripsi: Spa audio yang menenangkan untuk telinga Anda (laki-laki) | Tiongkok (Mandarin), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
| Nama suara: Nofish Deskripsi: Desainer yang tidak bisa mengucapkan bunyi retrofleks (laki-laki) | Tiongkok (Mandarin), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
| Nama suara: Bella Deskripsi: Gadis kecil yang minum tapi tidak pernah memukul saat mabuk (perempuan) | Tiongkok (Mandarin), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
| Nama suara: Jennifer Deskripsi: Suara perempuan Amerika berkualitas sinematik premium (perempuan) | Tiongkok (Mandarin), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
| Nama suara: Ryan Deskripsi: Penuh ritme, penuh gaya dramatis, menyeimbangkan keaslian dan ketegangan (laki-laki) | Tiongkok (Mandarin), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
| Nama suara: Katerina Deskripsi: Suara wanita dewasa dengan ritme kaya dan mudah diingat (perempuan) | Tiongkok (Mandarin), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
| Nama suara: Aiden Deskripsi: Pemuda Amerika yang mahir memasak (laki-laki) | Tiongkok (Mandarin), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
| Nama suara: Eldric Sage Deskripsi: Tetua yang tenang dan bijaksana—seperti pohon pinus yang teruji, namun pikirannya jernih seperti cermin (laki-laki) | Tiongkok (Mandarin), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
| Nama suara: Mia Deskripsi: Lembut seperti air musim semi, patuh seperti salju segar (perempuan) | Tiongkok (Mandarin), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
| Nama suara: Mochi Deskripsi: Pemuda cerdas dan tanggap—masih memiliki kepolosan anak-anak, namun kebijaksanaannya bersinar (laki-laki) | Tiongkok (Mandarin), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
| Nama suara: Bellona Deskripsi: Suara kuat dan jernih yang menghidupkan karakter—begitu menggugah hingga membuat darah Anda mendidih. Dengan kemegahan heroik dan diksi sempurna, suara ini menangkap seluruh spektrum ekspresi manusia. | Tiongkok (Mandarin), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
| Nama suara: Vincent Deskripsi: Suara serak dan berasap yang unik—hanya satu kalimat sudah menggambarkan pasukan dan kisah heroik (laki-laki) | Tiongkok (Mandarin), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
| Nama suara: Bunny Deskripsi: Gadis kecil yang penuh "kelucuan" (perempuan) | Tiongkok (Mandarin), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
| Nama suara: Neil Deskripsi: Intonasi dasar datar dengan pengucapan tepat dan jelas—pembaca berita profesional (laki-laki) | Tiongkok (Mandarin), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
| Nama suara: Elias Deskripsi: Mempertahankan kekakuan akademis sambil menggunakan teknik bercerita untuk mengubah pengetahuan kompleks menjadi modul pembelajaran yang mudah dicerna (perempuan) | Tiongkok (Mandarin), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
| Nama suara: Arthur Deskripsi: Suara sederhana dan alami yang dipenuhi waktu dan asap tembakau—perlahan membuka kisah desa dan hal-hal unik (laki-laki) | Tiongkok (Mandarin), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
| Nama suara: Nini Deskripsi: Suara lembut dan manja seperti kue beras manis—panggilan "Kakak" yang ditarik panjang begitu manis hingga melelehkan tulang Anda (perempuan) | Tiongkok (Mandarin), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
| Nama suara: Seren Deskripsi: Suara lembut dan menenangkan untuk membantu Anda tertidur lebih cepat. Selamat malam, mimpi indah (perempuan) | Tiongkok (Mandarin), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
| Nama suara: Pip Deskripsi: Anak laki-laki lincah dan nakal penuh keajaiban anak-anak—apakah ini kenangan Anda tentang Shin-chan? (laki-laki) | Tiongkok (Mandarin), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
| Nama suara: Stella Deskripsi: Biasanya suara remaja perempuan yang manis dan melamun—tetapi saat berteriak “Aku mewakili bulan untuk mengalahkanmu!”, ia langsung memancarkan cinta dan keadilan yang tak tergoyahkan (perempuan) | Tiongkok (Mandarin), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
| Nama suara: Bodega Deskripsi: Pria Spanyol yang penuh semangat (laki-laki) | Tiongkok (Mandarin), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
| Nama suara: Sonisa Deskripsi: Wanita Amerika Latin yang ceria dan terbuka (perempuan) | Tiongkok (Mandarin), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
| Nama suara: Alek Deskripsi: Dingin seperti roh Rusia, namun hangat seperti lapisan mantel wol (laki-laki) | Tiongkok (Mandarin), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
| Nama suara: Dolce Deskripsi: Pria Italia yang santai (laki-laki) | Tiongkok (Mandarin), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
| Nama suara: Sohee Deskripsi: Unnie Korea yang hangat, ceria, dan ekspresif secara emosional (perempuan) | Tiongkok (Mandarin), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
| Nama suara: Ono Anna Deskripsi: Teman masa kecil yang cerdas dan bersemangat (perempuan) | Tiongkok (Mandarin), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
| Nama suara: Lenn Deskripsi: Rasional dalam hati, memberontak dalam detail—pemuda Jerman yang mengenakan setelan jas dan mendengarkan post-punk | Tiongkok (Mandarin), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
| Nama suara: Emilien Deskripsi: Kakak laki-laki Prancis yang romantis (laki-laki) | Tiongkok (Mandarin), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
| Nama suara: Andre Deskripsi: Suara laki-laki yang magnetis, alami, dan stabil | Tiongkok (Mandarin), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
| Nama suara: Radio Gol Deskripsi: Penyair sepak bola Radio Gol! Hari ini saya akan berkomentar tentang sepak bola menggunakan nama saya (laki-laki) | Tiongkok (Mandarin), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
| Nama suara: Shanghai - Jada Deskripsi: Bibi Shanghai yang berbicara cepat dan energetik (perempuan) | Shanghainese, Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
| Nama suara: Beijing - Dylan Deskripsi: Pemuda yang dibesarkan di hutong Beijing (laki-laki) | Dialek Beijing, Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
| Nama suara: Nanjing - Li Deskripsi: Guru yoga yang sabar (laki-laki) | Dialek Nanjing, Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
| Nama suara: Shaanxi - Marcus Deskripsi: Wajah lebar, sedikit bicara, hati tulus, suara dalam—rasa autentik Shaanxi (laki-laki) | Dialek Shaanxi, Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
| Nama suara: Min Selatan - Roy Deskripsi: Pria Taiwan yang humoris, langsung, dan hidup (laki-laki) | Min Selatan, Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
| Nama suara: Tianjin - Peter Deskripsi: Crosstalk ala Tianjin, lawan bicara profesional (laki-laki) | Dialek Tianjin, Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
| Nama suara: Sichuan - Sunny Deskripsi: Gadis Sichuan yang manisnya melelehkan hati (perempuan) | Dialek Sichuan, Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
| Nama suara: Sichuan - Eric Deskripsi: Pria Sichuan dari Chengdu yang menonjol dalam kehidupan sehari-hari (laki-laki) | Dialek Sichuan, Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
| Nama suara: Kanton - Rocky Deskripsi: A Qiang yang humoris dan cerdas memberikan obrolan langsung (laki-laki) | Kanton, Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
| Nama suara: Kanton - Kiki Deskripsi: Sahabat perempuan Hong Kong yang manis (perempuan) | Kanton, Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea |
|
FAQ
T: Berapa lama URL file audio berlaku?
J: URL file audio kedaluwarsa setelah 24 jam.