Model Qwen-Omni menerima kombinasi teks dan satu modalitas lainnya—seperti citra, audio, atau video—sebagai masukan, serta menghasilkan tanggapan dalam bentuk teks atau ucapan. Model ini menyediakan berbagai suara alami dan mendukung keluaran ucapan dalam berbagai bahasa dan dialek. Anda dapat menggunakannya untuk berbagai skenario, seperti pembuatan teks, pengenalan visual, dan asisten suara.
Mulai
Prasyarat
Anda telah mengonfigurasi kunci API dan menambahkannya ke variabel lingkungan.
Model Qwen-Omni hanya mendukung panggilan yang kompatibel dengan OpenAI. Anda harus menginstal versi terbaru SDK. Versi minimum yang diperlukan adalah 1.52.0 untuk OpenAI Python SDK dan 4.68.0 untuk Node.js SDK.
Metode pemanggilan: Qwen-Omni saat ini hanya mendukung keluaran streaming. Parameter stream harus diatur ke True. Jika tidak, terjadi kesalahan.
Contoh berikut menunjukkan cara mengirim teks ke API Qwen-Omni dan menerima tanggapan streaming yang berisi teks dan audio.
import os
import base64
import soundfile as sf
import numpy as np
from openai import OpenAI
# 1. Inisialisasi klien
client = OpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"), # Pastikan variabel lingkungan telah dikonfigurasi
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)
# 2. Mulai permintaan
try:
completion = client.chat.completions.create(
model="qwen3-omni-flash",
messages=[{"role": "user", "content": "Who are you"}],
modalities=["text", "audio"], # Tentukan keluaran teks dan audio
audio={"voice": "Cherry", "format": "wav"},
stream=True, # Harus diatur ke True
stream_options={"include_usage": True},
)
# 3. Proses tanggapan streaming dan dekode audio
print("Model response:")
audio_base64_string = ""
for chunk in completion:
# Proses bagian teks
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")
# Kumpulkan bagian audio
if chunk.choices and hasattr(chunk.choices[0].delta, "audio") and chunk.choices[0].delta.audio:
audio_base64_string += chunk.choices[0].delta.audio.get("data", "")
# 4. Simpan file audio
if audio_base64_string:
wav_bytes = base64.b64decode(audio_base64_string)
audio_np = np.frombuffer(wav_bytes, dtype=np.int16)
sf.write("audio_assistant.wav", audio_np, samplerate=24000)
print("\nAudio file saved to: audio_assistant.wav")
except Exception as e:
print(f"Request failed: {e}")// Persiapan sebelum menjalankan:
// Berlaku universal untuk Windows/Mac/Linux:
// 1. Pastikan Node.js telah diinstal (disarankan versi >= 14)
// 2. Jalankan perintah berikut untuk menginstal dependensi yang diperlukan:
// npm install openai wav
import OpenAI from "openai";
import { createWriteStream } from 'node:fs';
import { Writer } from 'wav';
// Definisikan fungsi konversi audio: konversi string Base64 dan simpan sebagai file audio WAV standar
async function convertAudio(audioString, audioPath) {
try {
// Dekode string Base64 menjadi Buffer
const wavBuffer = Buffer.from(audioString, 'base64');
// Buat aliran penulisan file WAV
const writer = new Writer({
sampleRate: 24000, // Laju sampel
channels: 1, // Saluran tunggal
bitDepth: 16 // Kedalaman 16-bit
});
// Buat aliran keluaran file dan buat koneksi pipeline
const outputStream = createWriteStream(audioPath);
writer.pipe(outputStream);
// Tulis data PCM dan akhiri penulisan
writer.write(wavBuffer);
writer.end();
// Gunakan Promise untuk menunggu file selesai ditulis
await new Promise((resolve, reject) => {
outputStream.on('finish', resolve);
outputStream.on('error', reject);
});
// Tambahkan waktu tunggu ekstra untuk memastikan integritas audio
await new Promise(resolve => setTimeout(resolve, 800));
console.log(`\nAudio file successfully saved as ${audioPath}`);
} catch (error) {
console.error('An error occurred during processing:', error);
}
}
// 1. Inisialisasi klien
const openai = new OpenAI(
{
// Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk informasi selengkapnya, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
apiKey: process.env.DASHSCOPE_API_KEY,
// Berikut ini adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/compatible-mode/v1
baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
}
);
// 2. Mulai permintaan
const completion = await openai.chat.completions.create({
model: "qwen3-omni-flash",
messages: [
{
"role": "user",
"content": "Who are you?"
}],
stream: true,
stream_options: {
include_usage: true
},
modalities: ["text", "audio"],
audio: { voice: "Cherry", format: "wav" }
});
let audioString = "";
console.log("Model response:")
// 3. Proses tanggapan streaming dan dekode audio
for await (const chunk of completion) {
if (Array.isArray(chunk.choices) && chunk.choices.length > 0) {
// Proses konten teks
if (chunk.choices[0].delta.content) {
process.stdout.write(chunk.choices[0].delta.content);
}
// Proses konten audio
if (chunk.choices[0].delta.audio) {
if (chunk.choices[0].delta.audio["data"]) {
audioString += chunk.choices[0].delta.audio["data"];
}
}
}
}
// 4. Simpan file audio
convertAudio(audioString, "audio_assistant.wav");# ======= Catatan Penting =======
# Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk informasi selengkapnya, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
# Berikut ini adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
# === Hapus komentar ini sebelum eksekusi ===
curl -X POST https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3-omni-flash",
"messages": [
{
"role": "user",
"content": "Who are you?"
}
],
"stream":true,
"stream_options":{
"include_usage":true
},
"modalities":["text","audio"],
"audio":{"voice":"Cherry","format":"wav"}
}'
Daftar model
Dibandingkan dengan model Qwen-VL , model Qwen-Omni dapat:
Memahami informasi visual dan audio dalam file video.
Memahami data dalam berbagai modalitas.
Menghasilkan audio.
Model ini juga berkinerja baik dalam pemahaman visual dan audio.
Gunakan Qwen3-Omni-Flash untuk kinerja terbaik. Dibandingkan dengan Qwen-Omni-Turbo (yang tidak lagi diperbarui), Qwen3-Omni-Flash menawarkan peningkatan signifikan:
Mendukung mode berpikir dan non-berpikir. Anda dapat beralih antar mode menggunakan parameter
enable_thinking. Secara default, mode berpikir dinonaktifkan.Untuk keluaran audio dalam mode non-berpikir:
Jumlah suara yang didukung meningkat menjadi 17. Qwen-Omni-Turbo hanya mendukung 4.
Jumlah bahasa yang didukung meningkat menjadi 10. Qwen-Omni-Turbo hanya mendukung 2.
Internasional (Singapura)
Model komersial
Dibandingkan dengan versi sumber terbuka, model komersial menawarkan fitur dan peningkatan terbaru.
Model | Versi | Mode | Jendela konteks | Maks. masukan | Maks. rantai-pikiran | Maks. keluaran | Kuota gratis |
(Token) | |||||||
qwen3-omni-flash Saat ini memiliki kemampuan yang sama dengan qwen3-omni-flash-2025-09-15 | Stabil | Mode berpikir | 65.536 | 16.384 | 32.768 | 16.384 | 1 juta token masing-masing (tidak memandang modalitas) Berlaku selama 90 hari setelah Anda mengaktifkan Model Studio |
Mode non-berpikir | 49.152 | - | |||||
qwen3-omni-flash-2025-09-15 Juga dikenal sebagai qwen3-omni-flash-0915 | Cuplikan | Mode berpikir | 65.536 | 16.384 | 32.768 | 16.384 | |
Mode non-berpikir | 49.152 | - | |||||
Model sumber terbuka
Model | Jendela konteks | Maks. masukan | Maks. keluaran | Kuota gratis |
(Token) | ||||
qwen2.5-omni-7b | 32.768 | 30.720 | 2.048 | 1 juta token (tidak memandang modalitas) Berlaku selama 90 hari setelah mengaktifkan Alibaba Cloud Model Studio. |
China Daratan (Beijing)
Model komersial
Model | Versi | Mode | Jendela konteks | Maks. masukan | Maks. rantai-pikiran | Maks. keluaran | Kuota gratis |
(Tokens) | |||||||
qwen3-omni-flash Saat ini memiliki kemampuan yang sama dengan qwen3-omni-flash-2025-09-15 | Stabil | Mode berpikir | 65.536 | 16.384 | 32.768 | 16.384 | Tidak ada kuota gratis |
Mode non-berpikir | 49,152 | - | |||||
qwen3-omni-flash-2025-09-15 Juga dikenal sebagai qwen3-omni-flash-0915 | Cuplikan | Mode berpikir | 65.536 | 16.384 | 32.768 | 16.384 | |
Mode non-berpikir | 49.152 | - | |||||
Model sumber terbuka
Model | Jendela konteks | Maks. masukan | Maks. keluaran | Kuota gratis |
(Token) | ||||
qwen2.5-omni-7b | 32.768 | 30.720 | 2.048 | Tidak ada kuota gratis |
Catatan penggunaan
Masukan
Modalitas masukan yang didukung:
Dalam satu pesanuser, larikcontentdapat berisi teks dan satu modalitas lainnya, seperti citra, audio, atau video. Larik tersebut tidak dapat berisi beberapa modalitas lainnya sekaligus.
Metode untuk memasukkan data multimodal:
URL Internet
Pengkodean Base64. Untuk informasi selengkapnya, lihat Masukkan file lokal yang dikodekan Base64.
Keluaran
Modalitas keluaran yang didukung: Keluaran audio berupa data terenkripsi
Base64. Untuk informasi selengkapnya tentang cara mengonversinya menjadi file audio, lihat Uraikan keluaran data audio terenkripsi Base64.Modalitas keluaran
modalitiesnilai parameterGaya tanggapan
Teks
["text"] (default)
Lebih formal dan bergaya tertulis.
Teks dan audio
["text","audio"]
Qwen3-Omni-Flash tidak mendukung keluaran audio dalam mode berpikir.
Lebih percakapan. Tanggapan mencakup kata pengisi dan mendorong interaksi lebih lanjut.
Qwen-Omni-Turbo tidak mendukung pengaturan Pesan Sistem saat modalitas keluaran mencakup audio.
Bahasa keluaran audio yang didukung:
Qwen-Omni-Turbo: Hanya mendukung Bahasa Mandarin (Tiongkok) dan Bahasa Inggris.
Qwen3-Omni-Flash (mode non-berpikir): Mendukung Bahasa Mandarin (Tiongkok dan beberapa dialek), Bahasa Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, dan Korea.
Suara audio yang didukung: Anda dapat mengonfigurasi suara dan format file keluaran audio menggunakan parameter
audio. Contoh: audio={"voice": "Cherry", "format": "wav"}:Format file (
format): Hanya dapat diatur ke"wav".Suara audio (
voice): Untuk daftar suara yang didukung setiap model, lihat Daftar suara.
Batasan
Keluaran streaming bersifat wajib: Semua permintaan ke model Qwen-Omni harus mengatur
stream=True.Hanya model Qwen3-Omni-Flash yang merupakan model berpikir hibrida. Untuk informasi tentang cara memanggilnya, lihat Aktifkan atau nonaktifkan mode berpikir. Dalam mode berpikir, keluaran audio tidak didukung.
Aktifkan atau nonaktifkan mode berpikir
Model Qwen3-Omni-Flash adalah model berpikir hibrida. Anda dapat menggunakan parameter enable_thinking untuk mengaktifkan atau menonaktifkan mode berpikir:
true: Mengaktifkan mode berpikir.false(default): Menonaktifkan mode berpikir.
Qwen-Omni-Turbo bukan model berpikir.Kompatibel dengan OpenAI
import os
from openai import OpenAI
client = OpenAI(
# Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk informasi selengkapnya, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
api_key=os.getenv("DASHSCOPE_API_KEY"),
# Berikut ini adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/compatible-mode/v1
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen3-omni-flash",
messages=[{"role": "user", "content": "Who are you"}],
# Aktifkan atau nonaktifkan mode berpikir. Keluaran audio tidak didukung dalam mode berpikir. qwen-omni-turbo tidak mendukung pengaturan enable_thinking.
extra_body={'enable_thinking': True},
# Atur modalitas data keluaran. Dua modalitas didukung dalam mode non-berpikir: ["text","audio"] dan ["text"]. Hanya ["text"] yang didukung dalam mode berpikir.
modalities=["text"],
# Atur suara. Parameter audio tidak didukung dalam mode berpikir.
# audio={"voice": "Cherry", "format": "wav"},
# stream harus diatur ke True untuk menghindari kesalahan.
stream=True,
stream_options={"include_usage": True},
)
for chunk in completion:
if chunk.choices:
print(chunk.choices[0].delta)
else:
print(chunk.usage)import OpenAI from "openai";
const openai = new OpenAI(
{
// Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk informasi selengkapnya, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
apiKey: process.env.DASHSCOPE_API_KEY,
// Berikut ini adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/compatible-mode/v1
baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
}
);
const completion = await openai.chat.completions.create({
model: "qwen3-omni-flash",
messages: [
{ role: "user", content: "Who are you?" }
],
// stream harus diatur ke True untuk menghindari kesalahan.
stream: true,
stream_options: {
include_usage: true
},
// Aktifkan atau nonaktifkan mode berpikir. Keluaran audio tidak didukung dalam mode berpikir. qwen-omni-turbo tidak mendukung pengaturan enable_thinking.
extra_body:{'enable_thinking': true},
// Atur modalitas data keluaran. Dua modalitas didukung dalam mode non-berpikir: ["text","audio"] dan ["text"]. Hanya ["text"] yang didukung dalam mode berpikir.
modalities: ["text"],
// Atur suara. Parameter audio tidak didukung dalam mode berpikir.
//audio: { voice: "Cherry", format: "wav" }
});
for await (const chunk of completion) {
if (Array.isArray(chunk.choices) && chunk.choices.length > 0) {
console.log(chunk.choices[0].delta);
} else {
console.log(chunk.usage);
}
}# ======= Catatan Penting =======
# Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk informasi selengkapnya, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
# Berikut ini adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
# === Hapus komentar ini sebelum eksekusi ===
curl -X POST https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3-omni-flash",
"messages": [
{
"role": "user",
"content": "Who are you?"
}
],
"stream":true,
"stream_options":{
"include_usage":true
},
"modalities":["text"],
"enable_thinking": true
}'
Masukan citra dan teks
Qwen-Omni mendukung beberapa masukan citra. Persyaratan untuk citra masukan adalah sebagai berikut:
Ukuran file citra tunggal tidak boleh melebihi 10 MB.
Jumlah citra dibatasi oleh batas token total model untuk citra dan teks. Jumlah total token untuk semua citra tidak boleh melebihi batas token masukan maksimum model.
Lebar dan tinggi citra harus keduanya lebih besar dari 10 piksel. Rasio aspek tidak boleh melebihi 200:1 atau 1:200.
Untuk informasi tentang jenis citra yang didukung, lihat Pemahaman visual.
Kode contoh berikut menggunakan URL citra dari Internet sebagai contoh. Untuk memasukkan citra lokal, lihat Masukkan file lokal yang dikodekan Base64. Saat ini, hanya panggilan dengan keluaran streaming yang didukung.
Kompatibel dengan OpenAI
import os
from openai import OpenAI
client = OpenAI(
# Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk informasi selengkapnya, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
api_key=os.getenv("DASHSCOPE_API_KEY"),
# Berikut ini adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/compatible-mode/v1
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen3-omni-flash", # Saat model adalah Qwen3-Omni-Flash, jalankan dalam mode non-berpikir.
messages=[
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"
},
},
{"type": "text", "text": "What scene is depicted in the image?"},
],
},
],
# Atur modalitas data keluaran. Dua modalitas didukung: ["text","audio"] dan ["text"].
modalities=["text", "audio"],
audio={"voice": "Cherry", "format": "wav"},
# stream harus diatur ke True untuk menghindari kesalahan.
stream=True,
stream_options={
"include_usage": True
}
)
for chunk in completion:
if chunk.choices:
print(chunk.choices[0].delta)
else:
print(chunk.usage)import OpenAI from "openai";
const openai = new OpenAI(
{
// Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk informasi selengkapnya, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
apiKey: process.env.DASHSCOPE_API_KEY,
// Berikut ini adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/compatible-mode/v1
baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
}
);
const completion = await openai.chat.completions.create({
model: "qwen3-omni-flash", // Saat model adalah Qwen3-Omni-Flash, jalankan dalam mode non-berpikir.
messages: [
{
"role": "user",
"content": [{
"type": "image_url",
"image_url": { "url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg" },
},
{ "type": "text", "text": "What scene is depicted in the image?" }]
}],
stream: true,
stream_options: {
include_usage: true
},
modalities: ["text", "audio"],
audio: { voice: "Cherry", format: "wav" }
});
for await (const chunk of completion) {
if (Array.isArray(chunk.choices) && chunk.choices.length > 0) {
console.log(chunk.choices[0].delta);
} else {
console.log(chunk.usage);
}
}# ======= Catatan Penting =======
# Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk informasi selengkapnya, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
# Berikut ini adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
# === Hapus komentar ini sebelum eksekusi ===
curl -X POST https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen2.5-omni-7b",
"messages": [
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"
}
},
{
"type": "text",
"text": "What scene is depicted in the image?"
}
]
}
],
"stream":true,
"stream_options":{
"include_usage":true
},
"modalities":["text","audio"],
"audio":{"voice":"Cherry","format":"wav"}
}'
Masukan audio dan teks
Hanya satu file audio yang dapat dimasukkan.
Ukuran file
Qwen3-Omni-Flash: Tidak boleh melebihi 100 MB, dengan durasi maksimum 20 menit.
Qwen-Omni-Turbo: Tidak boleh melebihi 10 MB, dengan durasi maksimum 3 menit.
Kode contoh berikut menggunakan URL audio dari Internet sebagai contoh. Untuk memasukkan file audio lokal, lihat Masukkan file lokal yang dikodekan Base64. Saat ini, hanya panggilan dengan keluaran streaming yang didukung.
Kompatibel dengan OpenAI
import os
from openai import OpenAI
client = OpenAI(
# Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk informasi selengkapnya, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
api_key=os.getenv("DASHSCOPE_API_KEY"),
# Berikut ini adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/compatible-mode/v1
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen3-omni-flash",# Saat model adalah Qwen3-Omni-Flash, jalankan dalam mode non-berpikir.
messages=[
{
"role": "user",
"content": [
{
"type": "input_audio",
"input_audio": {
"data": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250211/tixcef/cherry.wav",
"format": "wav",
},
},
{"type": "text", "text": "What is this audio about"},
],
},
],
# Atur modalitas data keluaran. Dua modalitas didukung: ["text","audio"] dan ["text"].
modalities=["text", "audio"],
audio={"voice": "Cherry", "format": "wav"},
# stream harus diatur ke True untuk menghindari kesalahan.
stream=True,
stream_options={"include_usage": True},
)
for chunk in completion:
if chunk.choices:
print(chunk.choices[0].delta)
else:
print(chunk.usage)import OpenAI from "openai";
const openai = new OpenAI(
{
// Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk informasi selengkapnya, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
apiKey: process.env.DASHSCOPE_API_KEY,
// Berikut ini adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/compatible-mode/v1
baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
}
);
const completion = await openai.chat.completions.create({
model: "qwen3-omni-flash", // Saat model adalah Qwen3-Omni-Flash, jalankan dalam mode non-berpikir.
messages: [
{
"role": "user",
"content": [{
"type": "input_audio",
"input_audio": { "data": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250211/tixcef/cherry.wav", "format": "wav" },
},
{ "type": "text", "text": "What is this audio about" }]
}],
stream: true,
stream_options: {
include_usage: true
},
modalities: ["text", "audio"],
audio: { voice: "Cherry", format: "wav" }
});
for await (const chunk of completion) {
if (Array.isArray(chunk.choices) && chunk.choices.length > 0) {
console.log(chunk.choices[0].delta);
} else {
console.log(chunk.usage);
}
}# ======= Catatan Penting =======
# Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk informasi selengkapnya, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
# Berikut ini adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
# === Hapus komentar ini sebelum eksekusi ===
curl -X POST https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen2.5-omni-7b",
"messages": [
{
"role": "user",
"content": [
{
"type": "input_audio",
"input_audio": {
"data": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250211/tixcef/cherry.wav",
"format": "wav"
}
},
{
"type": "text",
"text": "What is this audio about"
}
]
}
],
"stream":true,
"stream_options":{
"include_usage":true
},
"modalities":["text","audio"],
"audio":{"voice":"Cherry","format":"wav"}
}'
Masukan video dan teks
Anda dapat memasukkan video sebagai daftar citra atau file video (dengan pemahaman audio).
Kode contoh berikut menggunakan URL video dari Internet sebagai contoh. Untuk memasukkan video lokal, lihat Masukkan file lokal yang dikodekan Base64. Saat ini, hanya panggilan dengan keluaran streaming yang didukung.
Format daftar citra
Jumlah citra
Qwen3-Omni-Flash: Minimal 2 citra dan maksimal 128 citra.
Qwen-Omni-Turbo: Minimal 4 citra dan maksimal 80 citra.
Kompatibel dengan OpenAI
import os
from openai import OpenAI
client = OpenAI(
# Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk informasi selengkapnya, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
api_key=os.getenv("DASHSCOPE_API_KEY"),
# Berikut ini adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/compatible-mode/v1
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen3-omni-flash", # Saat model adalah Qwen3-Omni-Flash, jalankan dalam mode non-berpikir.
messages=[
{
"role": "user",
"content": [
{
"type": "video",
"video": [
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/xzsgiz/football1.jpg",
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/tdescd/football2.jpg",
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/zefdja/football3.jpg",
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/aedbqh/football4.jpg",
],
},
{"type": "text", "text": "Describe the process shown in this video"},
],
}
],
# Atur modalitas data keluaran. Dua modalitas didukung: ["text","audio"] dan ["text"].
modalities=["text", "audio"],
audio={"voice": "Cherry", "format": "wav"},
# stream harus diatur ke True untuk menghindari kesalahan.
stream=True,
stream_options={"include_usage": True},
)
for chunk in completion:
if chunk.choices:
print(chunk.choices[0].delta)
else:
print(chunk.usage)import OpenAI from "openai";
const openai = new OpenAI(
{
// Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk informasi selengkapnya, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
apiKey: process.env.DASHSCOPE_API_KEY,
// Berikut ini adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/compatible-mode/v1
baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
}
);
const completion = await openai.chat.completions.create({
model: "qwen3-omni-flash", //Saat model adalah Qwen3-Omni-Flash, jalankan dalam mode non-berpikir.
messages: [{
role: "user",
content: [
{
type: "video",
video: [
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/xzsgiz/football1.jpg",
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/tdescd/football2.jpg",
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/zefdja/football3.jpg",
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/aedbqh/football4.jpg"
]
},
{
type: "text",
text: "Describe the process shown in this video"
}
]
}],
stream: true,
stream_options: {
include_usage: true
},
modalities: ["text", "audio"],
audio: { voice: "Cherry", format: "wav" }
});
for await (const chunk of completion) {
if (Array.isArray(chunk.choices) && chunk.choices.length > 0) {
console.log(chunk.choices[0].delta);
} else {
console.log(chunk.usage);
}
}# ======= Catatan Penting =======
# Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk informasi selengkapnya, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
# Berikut ini adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
# === Hapus komentar ini sebelum eksekusi ===
curl -X POST https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen2.5-omni-7b",
"messages": [
{
"role": "user",
"content": [
{
"type": "video",
"video": [
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/xzsgiz/football1.jpg",
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/tdescd/football2.jpg",
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/zefdja/football3.jpg",
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/aedbqh/football4.jpg"
]
},
{
"type": "text",
"text": "Describe the process shown in this video"
}
]
}
],
"stream": true,
"stream_options": {
"include_usage": true
},
"modalities": ["text", "audio"],
"audio": {
"voice": "Cherry",
"format": "wav"
}
}'
Format file video (dapat memahami audio dalam video)
Hanya satu file video yang dapat dimasukkan.
Ukuran file:
Qwen3-Omni-Flash: Dibatasi hingga 256 MB, dengan batas durasi 150 detik.
Qwen-Omni-Turbo: Dibatasi hingga 150 MB, dengan batas durasi 40 detik.
Informasi visual dan audio dalam file video ditagih secara terpisah.
Kompatibel dengan OpenAI
import os
from openai import OpenAI
client = OpenAI(
# Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk informasi selengkapnya, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
api_key=os.getenv("DASHSCOPE_API_KEY"),
# Berikut ini adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/compatible-mode/v1
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen3-omni-flash", # Saat model adalah Qwen3-Omni-Flash, jalankan dalam mode non-berpikir.
messages=[
{
"role": "user",
"content": [
{
"type": "video_url",
"video_url": {
"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241115/cqqkru/1.mp4"
},
},
{"type": "text", "text": "What is the content of the video?"},
],
},
],
# Atur modalitas data keluaran. Dua modalitas didukung: ["text","audio"] dan ["text"].
modalities=["text", "audio"],
audio={"voice": "Cherry", "format": "wav"},
# stream harus diatur ke True untuk menghindari kesalahan.
stream=True,
stream_options={"include_usage": True},
)
for chunk in completion:
if chunk.choices:
print(chunk.choices[0].delta)
else:
print(chunk.usage)import OpenAI from "openai";
const openai = new OpenAI(
{
// Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk informasi selengkapnya, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
apiKey: process.env.DASHSCOPE_API_KEY,
// Berikut ini adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/compatible-mode/v1
baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
}
);
const completion = await openai.chat.completions.create({
model: "qwen3-omni-flash", // Saat model adalah Qwen3-Omni-Flash, jalankan dalam mode non-berpikir.
messages: [
{
"role": "user",
"content": [{
"type": "video_url",
"video_url": { "url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241115/cqqkru/1.mp4" },
},
{ "type": "text", "text": "What is the content of the video?" }]
}],
stream: true,
stream_options: {
include_usage: true
},
modalities: ["text", "audio"],
audio: { voice: "Cherry", format: "wav" }
});
for await (const chunk of completion) {
if (Array.isArray(chunk.choices) && chunk.choices.length > 0) {
console.log(chunk.choices[0].delta);
} else {
console.log(chunk.usage);
}
}# ======= Catatan Penting =======
# Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk informasi selengkapnya, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
# Berikut ini adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
# === Hapus komentar ini sebelum eksekusi ===
curl -X POST https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen2.5-omni-7b",
"messages": [
{
"role": "user",
"content": [
{
"type": "video_url",
"video_url": {
"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241115/cqqkru/1.mp4"
}
},
{
"type": "text",
"text": "What is the content of the video"
}
]
}
],
"stream":true,
"stream_options": {
"include_usage": true
},
"modalities":["text","audio"],
"audio":{"voice":"Cherry","format":"wav"}
}'
Percakapan multi-putaran
Saat menggunakan fitur percakapan multi-putaran Qwen-Omni, perhatikan hal berikut:
Pesan asisten
Pesan asisten dalam larik pesan hanya mendukung data teks.
Pesan pengguna
Pesan pengguna dapat berisi teks dan data dari hanya satu modalitas lainnya. Dalam percakapan multi-putaran, Anda dapat menggunakan modalitas berbeda dalam pesan pengguna terpisah.
Kompatibel dengan OpenAI
import os
from openai import OpenAI
client = OpenAI(
# Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk informasi selengkapnya, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
api_key=os.getenv("DASHSCOPE_API_KEY"),
# Berikut ini adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/compatible-mode/v1
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen3-omni-flash", # Saat model adalah Qwen3-Omni-Flash, jalankan dalam mode non-berpikir.
messages=[
{
"role": "user",
"content": [
{
"type": "input_audio",
"input_audio": {
"data": "https://dashscope.oss-cn-beijing.aliyuncs.com/audios/welcome.mp3",
"format": "mp3",
},
},
{"type": "text", "text": "What is this audio about"},
],
},
{
"role": "assistant",
"content": [{"type": "text", "text": "This audio says: Welcome to Alibaba Cloud"}],
},
{
"role": "user",
"content": [{"type": "text", "text": "Can you tell me about this company?"}],
},
],
# Atur modalitas data keluaran. Dua modalitas didukung: ["text","audio"] dan ["text"].
modalities=["text"],
# stream harus diatur ke True untuk menghindari kesalahan.
stream=True,
stream_options={"include_usage": True},
)
for chunk in completion:
if chunk.choices:
print(chunk.choices[0].delta)
else:
print(chunk.usage)import OpenAI from "openai";
const openai = new OpenAI(
{
// Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk informasi selengkapnya, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
apiKey: process.env.DASHSCOPE_API_KEY,
// Berikut ini adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/compatible-mode/v1
baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
}
);
const completion = await openai.chat.completions.create({
model: "qwen3-omni-flash", // Saat model adalah Qwen3-Omni-Flash, jalankan dalam mode non-berpikir.
messages: [
{
"role": "user",
"content": [
{
"type": "input_audio",
"input_audio": {
"data": "https://dashscope.oss-cn-beijing.aliyuncs.com/audios/welcome.mp3",
"format": "mp3",
},
},
{ "type": "text", "text": "What is this audio about" },
],
},
{
"role": "assistant",
"content": [{ "type": "text", "text": "This audio says: Welcome to Alibaba Cloud" }],
},
{
"role": "user",
"content": [{ "type": "text", "text": "Can you tell me about this company?" }]
}],
stream: true,
stream_options: {
include_usage: true
},
modalities: ["text"]
});
for await (const chunk of completion) {
if (Array.isArray(chunk.choices) && chunk.choices.length > 0) {
console.log(chunk.choices[0].delta);
} else {
console.log(chunk.usage);
}
}# ======= Catatan Penting =======
# Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk informasi selengkapnya, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
# Berikut ini adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
# === Hapus komentar ini sebelum eksekusi ===
curl -X POST https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen2.5-omni-7b",
"messages": [
{
"role": "user",
"content": [
{
"type": "input_audio",
"input_audio": {
"data": "https://dashscope.oss-cn-beijing.aliyuncs.com/audios/welcome.mp3"
}
},
{
"type": "text",
"text": "What is this audio about"
}
]
},
{
"role": "assistant",
"content": [
{
"type": "text",
"text": "This audio says: Welcome to Alibaba Cloud"
}
]
},
{
"role": "user",
"content": [
{
"type": "text",
"text": "Can you tell me about this company?"
}
]
}
],
"stream": true,
"stream_options": {
"include_usage": true
},
"modalities": ["text"]
}'Uraikan keluaran data audio terenkripsi Base64
Keluaran audio dari Qwen-Omni berupa data terenkripsi Base64 yang dikirimkan dalam aliran. Untuk merekonstruksi file audio, Anda dapat menggunakan variabel string untuk mengumpulkan data Base64 dari setiap fragmen saat tiba. Setelah aliran selesai, Anda dapat mendekode string akhir untuk membuat file audio. Atau, Anda dapat mendekode dan memutar setiap fragmen secara real-time saat diterima.
# Instruksi instalasi untuk 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
from openai import OpenAI
import base64
import numpy as np
import soundfile as sf
client = OpenAI(
# Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk informasi selengkapnya, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
api_key=os.getenv("DASHSCOPE_API_KEY"),
# Berikut ini adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/compatible-mode/v1
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen3-omni-flash", # Saat model adalah Qwen3-Omni-Flash, jalankan dalam mode non-berpikir.
messages=[{"role": "user", "content": "Who are you"}],
# Atur modalitas data keluaran. Dua modalitas didukung: ["text","audio"] dan ["text"].
modalities=["text", "audio"],
audio={"voice": "Cherry", "format": "wav"},
# stream harus diatur ke True untuk menghindari kesalahan.
stream=True,
stream_options={"include_usage": True},
)
# Metode 1: Dekode setelah generasi selesai
audio_string = ""
for chunk in completion:
if chunk.choices:
if hasattr(chunk.choices[0].delta, "audio"):
try:
audio_string += chunk.choices[0].delta.audio["data"]
except Exception as e:
print(chunk.choices[0].delta.audio["transcript"])
else:
print(chunk.usage)
wav_bytes = base64.b64decode(audio_string)
audio_np = np.frombuffer(wav_bytes, dtype=np.int16)
sf.write("audio_assistant_py.wav", audio_np, samplerate=24000)
# Metode 2: Dekode saat menghasilkan (hapus komentar kode Metode 1 untuk menggunakan Metode 2)
# # Inisialisasi PyAudio
# import pyaudio
# import time
# p = pyaudio.PyAudio()
# # Buat aliran audio
# stream = p.open(format=pyaudio.paInt16,
# channels=1,
# rate=24000,
# output=True)
# for chunk in completion:
# if chunk.choices:
# if hasattr(chunk.choices[0].delta, "audio"):
# try:
# audio_string = chunk.choices[0].delta.audio["data"]
# wav_bytes = base64.b64decode(audio_string)
# audio_np = np.frombuffer(wav_bytes, dtype=np.int16)
# # Putar data audio langsung
# stream.write(audio_np.tobytes())
# except Exception as e:
# print(chunk.choices[0].delta.audio["transcript"])
# time.sleep(0.8)
# # Bersihkan sumber daya
# stream.stop_stream()
# stream.close()
# p.terminate()// Persiapan sebelum menjalankan:
// Berlaku universal untuk Windows/Mac/Linux:
// 1. Pastikan Node.js telah diinstal (disarankan versi >= 14)
// 2. Jalankan perintah berikut untuk menginstal dependensi yang diperlukan:
// npm install openai wav
//
// Untuk menggunakan fitur pemutaran real-time (Metode 2), Anda juga perlu:
// Windows:
// npm install speaker
// Mac:
// brew install portaudio
// npm install speaker
// Linux (Ubuntu/Debian):
// sudo apt-get install libasound2-dev
// npm install speaker
import OpenAI from "openai";
const openai = new OpenAI(
{
// Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk informasi selengkapnya, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
apiKey: process.env.DASHSCOPE_API_KEY,
// Berikut ini adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/compatible-mode/v1
baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
}
);
const completion = await openai.chat.completions.create({
model: "qwen3-omni-flash", // Saat model adalah Qwen3-Omni-Flash, jalankan dalam mode non-berpikir.
messages: [
{
"role": "user",
"content": "Who are you?"
}],
stream: true,
stream_options: {
include_usage: true
},
modalities: ["text", "audio"],
audio: { voice: "Cherry", format: "wav" }
});
// Metode 1: Dekode setelah generasi selesai
// Memerlukan instalasi: npm install wav
import { createWriteStream } from 'node:fs'; // node:fs adalah modul bawaan Node.js, tidak perlu instalasi
import { Writer } from 'wav';
async function convertAudio(audioString, audioPath) {
try {
// Dekode string Base64 menjadi Buffer
const wavBuffer = Buffer.from(audioString, 'base64');
// Buat aliran penulisan file WAV
const writer = new Writer({
sampleRate: 24000, // Laju sampel
channels: 1, // Saluran tunggal
bitDepth: 16 // Kedalaman 16-bit
});
// Buat aliran keluaran file dan buat koneksi pipeline
const outputStream = createWriteStream(audioPath);
writer.pipe(outputStream);
// Tulis data PCM dan akhiri penulisan
writer.write(wavBuffer);
writer.end();
// Gunakan Promise untuk menunggu file selesai ditulis
await new Promise((resolve, reject) => {
outputStream.on('finish', resolve);
outputStream.on('error', reject);
});
// Tambahkan waktu tunggu ekstra untuk memastikan integritas audio
await new Promise(resolve => setTimeout(resolve, 800));
console.log(`Audio file successfully saved as ${audioPath}`);
} catch (error) {
console.error('An error occurred during processing:', error);
}
}
let audioString = "";
for await (const chunk of completion) {
if (Array.isArray(chunk.choices) && chunk.choices.length > 0) {
if (chunk.choices[0].delta.audio) {
if (chunk.choices[0].delta.audio["data"]) {
audioString += chunk.choices[0].delta.audio["data"];
}
}
} else {
console.log(chunk.usage);
}
}
// Jalankan konversi
convertAudio(audioString, "audio_assistant_mjs.wav");
// Metode 2: Hasilkan dan putar secara real-time
// Anda harus terlebih dahulu menginstal komponen yang diperlukan sesuai dengan instruksi sistem Anda di atas.
// import Speaker from 'speaker'; // Impor pustaka pemutaran audio
// // Buat instance speaker (konfigurasi sesuai dengan parameter file WAV)
// const speaker = new Speaker({
// sampleRate: 24000, // Laju sampel
// channels: 1, // Jumlah saluran suara
// bitDepth: 16, // Kedalaman bit
// signed: true // PCM bertanda
// });
// for await (const chunk of completion) {
// if (Array.isArray(chunk.choices) && chunk.choices.length > 0) {
// if (chunk.choices[0].delta.audio) {
// if (chunk.choices[0].delta.audio["data"]) {
// const pcmBuffer = Buffer.from(chunk.choices[0].delta.audio.data, 'base64');
// // Tulis langsung ke speaker untuk diputar
// speaker.write(pcmBuffer);
// }
// }
// } else {
// console.log(chunk.usage);
// }
// }
// speaker.on('finish', () => console.log('Playback complete'));
// speaker.end(); // Panggil berdasarkan akhir sebenarnya dari aliran APIMasukkan file lokal yang dikodekan Base64
Citra
Contoh ini menggunakan file yang disimpan lokal eagle.png.
import os
from openai import OpenAI
import base64
client = OpenAI(
# Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key.
api_key=os.getenv("DASHSCOPE_API_KEY"),
# URL berikut ini untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan https://dashscope.aliyuncs.com/compatible-mode/v1.
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)
# Format pengkodean Base64
def encode_image(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode("utf-8")
base64_image = encode_image("eagle.png")
completion = client.chat.completions.create(
model="qwen3-omni-flash", # Saat menggunakan model Qwen3-Omni-Flash, jalankan dalam mode non-berpikir.
messages=[
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {"url": f"data:image/png;base64,{base64_image}"},
},
{"type": "text", "text": "What scene does the image depict?"},
],
},
],
# Atur modalitas keluaran. Modalitas yang didukung adalah ["text", "audio"] dan ["text"].
modalities=["text", "audio"],
audio={"voice": "Cherry", "format": "wav"},
# Atur stream ke True. Jika tidak, terjadi kesalahan.
stream=True,
stream_options={"include_usage": True},
)
for chunk in completion:
if chunk.choices:
print(chunk.choices[0].delta)
else:
print(chunk.usage)import OpenAI from "openai";
import { readFileSync } from 'fs';
const openai = new OpenAI(
{
// Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key.
apiKey: process.env.DASHSCOPE_API_KEY,
// URL berikut ini untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan https://dashscope.aliyuncs.com/compatible-mode/v1.
baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
}
);
const encodeImage = (imagePath) => {
const imageFile = readFileSync(imagePath);
return imageFile.toString('base64');
};
const base64Image = encodeImage("eagle.png")
const completion = await openai.chat.completions.create({
model: "qwen3-omni-flash",// Saat menggunakan model Qwen3-Omni-Flash, jalankan dalam mode non-berpikir.
messages: [
{
"role": "user",
"content": [{
"type": "image_url",
"image_url": { "url": `data:image/png;base64,${base64Image}` },
},
{ "type": "text", "text": "What scene does the image depict?" }]
}],
stream: true,
stream_options: {
include_usage: true
},
modalities: ["text", "audio"],
audio: { voice: "Cherry", format: "wav" }
});
for await (const chunk of completion) {
if (Array.isArray(chunk.choices) && chunk.choices.length > 0) {
console.log(chunk.choices[0].delta);
} else {
console.log(chunk.usage);
}
}Audio
Contoh ini menggunakan file yang disimpan lokal welcome.mp3.
import os
from openai import OpenAI
import base64
import numpy as np
import soundfile as sf
import requests
client = OpenAI(
# Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key.
api_key=os.getenv("DASHSCOPE_API_KEY"),
# URL berikut ini untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan https://dashscope.aliyuncs.com/compatible-mode/v1.
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)
def encode_audio(audio_path):
with open(audio_path, "rb") as audio_file:
return base64.b64encode(audio_file.read()).decode("utf-8")
base64_audio = encode_audio("welcome.mp3")
completion = client.chat.completions.create(
model="qwen3-omni-flash", # Saat menggunakan model Qwen3-Omni-Flash, jalankan dalam mode non-berpikir.
messages=[
{
"role": "user",
"content": [
{
"type": "input_audio",
"input_audio": {
"data": f"data:;base64,{base64_audio}",
"format": "mp3",
},
},
{"type": "text", "text": "What is this audio about?"},
],
},
],
# Atur modalitas keluaran. Modalitas yang didukung adalah ["text", "audio"] dan ["text"].
modalities=["text", "audio"],
audio={"voice": "Cherry", "format": "wav"},
# Atur stream ke True. Jika tidak, terjadi kesalahan.
stream=True,
stream_options={"include_usage": True},
)
for chunk in completion:
if chunk.choices:
print(chunk.choices[0].delta)
else:
print(chunk.usage)import OpenAI from "openai";
import { readFileSync } from 'fs';
const openai = new OpenAI(
{
// Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key.
apiKey: process.env.DASHSCOPE_API_KEY,
// URL berikut ini untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan https://dashscope.aliyuncs.com/compatible-mode/v1.
baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
}
);
const encodeAudio = (audioPath) => {
const audioFile = readFileSync(audioPath);
return audioFile.toString('base64');
};
const base64Audio = encodeAudio("welcome.mp3")
const completion = await openai.chat.completions.create({
model: "qwen3-omni-flash", // Saat menggunakan model Qwen3-Omni-Flash, jalankan dalam mode non-berpikir.
messages: [
{
"role": "user",
"content": [{
"type": "input_audio",
"input_audio": { "data": `data:;base64,${base64Audio}`, "format": "mp3" },
},
{ "type": "text", "text": "What is this audio about?" }]
}],
stream: true,
stream_options: {
include_usage: true
},
modalities: ["text", "audio"],
audio: { voice: "Cherry", format: "wav" }
});
for await (const chunk of completion) {
if (Array.isArray(chunk.choices) && chunk.choices.length > 0) {
console.log(chunk.choices[0].delta);
} else {
console.log(chunk.usage);
}
}Video
File video
Contoh ini menggunakan file yang disimpan lokal spring_mountain.mp4.
import os
from openai import OpenAI
import base64
import numpy as np
import soundfile as sf
client = OpenAI(
# Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key.
api_key=os.getenv("DASHSCOPE_API_KEY"),
# URL berikut ini untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan https://dashscope.aliyuncs.com/compatible-mode/v1.
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)
# Format pengkodean Base64
def encode_video(video_path):
with open(video_path, "rb") as video_file:
return base64.b64encode(video_file.read()).decode("utf-8")
base64_video = encode_video("spring_mountain.mp4")
completion = client.chat.completions.create(
model="qwen3-omni-falsh", # Saat menggunakan model Qwen3-Omni-Flash, jalankan dalam mode non-berpikir.
messages=[
{
"role": "user",
"content": [
{
"type": "video_url",
"video_url": {"url": f"data:;base64,{base64_video}"},
},
{"type": "text", "text": "What is she singing?"},
],
},
],
# Atur modalitas keluaran. Modalitas yang didukung adalah ["text", "audio"] dan ["text"].
modalities=["text", "audio"],
audio={"voice": "Cherry", "format": "wav"},
# Atur stream ke True. Jika tidak, terjadi kesalahan.
stream=True,
stream_options={"include_usage": True},
)
for chunk in completion:
if chunk.choices:
print(chunk.choices[0].delta)
else:
print(chunk.usage)import OpenAI from "openai";
import { readFileSync } from 'fs';
const openai = new OpenAI(
{
// Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key.
apiKey: process.env.DASHSCOPE_API_KEY,
// URL berikut ini untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan https://dashscope.aliyuncs.com/compatible-mode/v1.
baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
}
);
const encodeVideo = (videoPath) => {
const videoFile = readFileSync(videoPath);
return videoFile.toString('base64');
};
const base64Video = encodeVideo("spring_mountain.mp4")
const completion = await openai.chat.completions.create({
model: "qwen3-omni-flash", // Saat menggunakan model Qwen3-Omni-Flash, jalankan dalam mode non-berpikir.
messages: [
{
"role": "user",
"content": [{
"type": "video_url",
"video_url": { "url": `data:;base64,${base64Video}` },
},
{ "type": "text", "text": "What is she singing?" }]
}],
stream: true,
stream_options: {
include_usage: true
},
modalities: ["text", "audio"],
audio: { voice: "Cherry", format: "wav" }
});
for await (const chunk of completion) {
if (Array.isArray(chunk.choices) && chunk.choices.length > 0) {
console.log(chunk.choices[0].delta);
} else {
console.log(chunk.usage);
}
}Daftar citra
Contoh ini menggunakan file yang disimpan lokal football1.jpg, football2.jpg, football3.jpg, dan football4.jpg.
import os
from openai import OpenAI
import base64
import numpy as np
import soundfile as sf
client = OpenAI(
# Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key.
api_key=os.getenv("DASHSCOPE_API_KEY"),
# URL berikut ini untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan https://dashscope.aliyuncs.com/compatible-mode/v1.
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)
# Format pengkodean Base64
def encode_image(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode("utf-8")
base64_image_1 = encode_image("football1.jpg")
base64_image_2 = encode_image("football2.jpg")
base64_image_3 = encode_image("football3.jpg")
base64_image_4 = encode_image("football4.jpg")
completion = client.chat.completions.create(
model="qwen3-omni-flash", # Saat menggunakan model Qwen3-Omni-Flash, jalankan dalam mode non-berpikir.
messages=[
{
"role": "user",
"content": [
{
"type": "video",
"video": [
f"data:image/jpeg;base64,{base64_image_1}",
f"data:image/jpeg;base64,{base64_image_2}",
f"data:image/jpeg;base64,{base64_image_3}",
f"data:image/jpeg;base64,{base64_image_4}",
],
},
{"type": "text", "text": "Describe the specific procedure shown in this video."},
],
}
],
# Atur modalitas keluaran. Modalitas yang didukung adalah ["text", "audio"] dan ["text"].
modalities=["text", "audio"],
audio={"voice": "Cherry", "format": "wav"},
# Atur stream ke True. Jika tidak, terjadi kesalahan.
stream=True,
stream_options={"include_usage": True},
)
for chunk in completion:
if chunk.choices:
print(chunk.choices[0].delta)
else:
print(chunk.usage)import OpenAI from "openai";
import { readFileSync } from 'fs';
const openai = new OpenAI(
{
// Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key.
apiKey: process.env.DASHSCOPE_API_KEY,
// URL berikut ini untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan https://dashscope.aliyuncs.com/compatible-mode/v1.
baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
}
);
const encodeImage = (imagePath) => {
const imageFile = readFileSync(imagePath);
return imageFile.toString('base64');
};
const base64Image1 = encodeImage("football1.jpg")
const base64Image2 = encodeImage("football2.jpg")
const base64Image3 = encodeImage("football3.jpg")
const base64Image4 = encodeImage("football4.jpg")
const completion = await openai.chat.completions.create({
model: "qwen3-omni-flash", // Saat menggunakan model Qwen3-Omni-Flash, jalankan dalam mode non-berpikir.
messages: [{
role: "user",
content: [
{
type: "video",
video: [
`data:image/jpeg;base64,${base64Image1}`,
`data:image/jpeg;base64,${base64Image2}`,
`data:image/jpeg;base64,${base64Image3}`,
`data:image/jpeg;base64,${base64Image4}`
]
},
{
type: "text",
text: "Describe the specific procedure shown in this video."
}
]
}],
stream: true,
stream_options: {
include_usage: true
},
modalities: ["text", "audio"],
audio: { voice: "Cherry", format: "wav" }
});
for await (const chunk of completion) {
if (Array.isArray(chunk.choices) && chunk.choices.length > 0) {
console.log(chunk.choices[0].delta);
} else {
console.log(chunk.usage);
}
Referensi API
Untuk informasi tentang parameter masukan dan keluaran Qwen-Omni, lihat Qwen.
Penagihan dan pembatasan laju
Aturan penagihan
Qwen-Omni ditagih berdasarkan jumlah token untuk berbagai modalitas, seperti audio, citra, dan video. Untuk informasi selengkapnya tentang detail penagihan, lihat Daftar Model.
Kuota gratis
Untuk informasi selengkapnya tentang cara mengklaim, menanyakan, dan menggunakan kuota gratis Anda, lihat Kuota gratis untuk pengguna baru.
Pembatasan laju
Untuk informasi tentang aturan pembatasan laju model dan FAQ, lihat Batas laju.
Kode kesalahan
Jika panggilan gagal, lihat Pesan kesalahan untuk pemecahan masalah.
Daftar suara
Model mendukung suara yang berbeda. Untuk menggunakan suara, atur parameter permintaan voice ke nilai yang sesuai di kolom parameter suara pada tabel di bawah ini.
Qwen3-Omni-Flash (mode non-berpikir)
Model Qwen3-Omni-Flash memungkinkan Anda mengatur suara menggunakan parameter voice hanya dalam mode non-berpikir. Dalam mode berpikir, model hanya mendukung keluaran teks.
Nama |
| Efek suara | Deskripsi | Bahasa yang didukung |
Cherry | Cherry | Suara perempuan muda yang ceria, ramah, dan alami. | Bahasa Mandarin, Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea, Thailand | |
Ethan | Ethan | Bahasa Mandarin standar dengan sedikit aksen utara. Suara yang cerah, hangat, dan energetik. | Bahasa Mandarin, Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea, Thailand | |
Nofish | Nofish | Seorang desainer yang tidak menggunakan konsonan retrofleks. | Bahasa Mandarin, Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea, Thailand | |
Jennifer | Jennifer | Suara perempuan premium berbahasa Inggris Amerika bergaya sinematik. | Bahasa Mandarin, Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea, Thailand | |
Ryan | Ryan | Suara ritmis dan dramatis dengan realisme dan ketegangan. | Bahasa Mandarin, Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea, Thailand | |
Katerina | Katerina | Suara perempuan dewasa dan ritmis. | Bahasa Mandarin, Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea, Thailand | |
Elias | Elias | Menjelaskan topik kompleks dengan ketelitian akademis dan narasi yang jelas. | Bahasa Mandarin, Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea, Thailand | |
Shanghai-Jada | Jada | Perempuan ceria dari Shanghai. | Bahasa Mandarin (Shanghainese), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea, Thailand | |
Beijing-Dylan | Dylan | Remaja yang tumbuh di gang-gang Beijing. | Bahasa Mandarin (dialek Beijing), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea, Thailand | |
Sichuan-Sunny | Sunny | Suara perempuan manis dari Sichuan. | Bahasa Mandarin (Sichuanese), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea, Thailand | |
Nanjing-Li | Li | Guru yoga yang sabar. | Bahasa Mandarin (dialek Nanjing), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea, Thailand | |
Shaanxi-Marcus | Marcus | Suara tulus dan dalam dari Shaanxi. | Bahasa Mandarin (dialek Shaanxi), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea, Thailand | |
Man Nan-Roy | Roy | Suara laki-laki muda yang lucu dan ceria dengan aksen Minnan. | Bahasa Mandarin (Min Nan), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea, Thailand | |
Tianjin-Peter | Peter | Suara pelawak pendiam dalam crosstalk Tianjin. | Bahasa Mandarin (dialek Tianjin), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea, Thailand | |
Cantonese-Rocky | Rocky | Suara laki-laki lucu dan jenaka untuk obrolan daring. | Bahasa Mandarin (Kanton), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea, Thailand | |
Cantonese-Kiki | Kiki | Sahabat perempuan manis dari Hong Kong. | Bahasa Mandarin (Kanton), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea, Thailand | |
Sichuan-Eric | Eric | Suara laki-laki tidak konvensional dan rapi dari Chengdu, Sichuan. | Bahasa Mandarin (Sichuanese), Inggris, Prancis, Jerman, Rusia, Italia, Spanyol, Portugis, Jepang, Korea, Thailand |
Qwen-Omni-Turbo
Nama |
| Efek suara | Deskripsi | Bahasa yang didukung |
Cherry | Cherry | Perempuan muda yang ceria, ramah, dan tulus. | Bahasa Mandarin, Inggris | |
Serena | Serena | Perempuan muda yang baik hati. | Bahasa Mandarin, Inggris | |
Ethan | Ethan | Bahasa Mandarin standar dengan sedikit aksen utara. Suara yang cerah, hangat, dan energetik. | Bahasa Mandarin, Inggris | |
Chelsie | Chelsie | Suara pacar virtual bergaya anime. | Bahasa Mandarin, Inggris |
Qwen-Omni sumber terbuka
Nama |
| Efek suara | Deskripsi | Bahasa yang didukung |
Ethan | Ethan | Bahasa Mandarin standar dengan sedikit aksen utara. Suara yang cerah, hangat, dan energetik. | Bahasa Mandarin, Inggris | |
Chelsie | Chelsie | Suara pacar virtual bergaya anime. | Bahasa Mandarin, Inggris |