Skip to main content
Omni-modal

Qwen-Omni

Model Qwen-Omni menerima input multimodal dan menghasilkan respons berupa teks atau ucapan. Model ini menghasilkan suara yang menyerupai manusia serta mendukung output ucapan dalam berbagai bahasa dan dialek. Kasus penggunaan mencakup moderasi konten, pembuatan teks, pengenalan visual, dan interaksi audio-video.

Wilayah yang didukung:Singapura, Beijing. Gunakan Kunci API untuk wilayah Anda.

Mulai

Prasyarat
  • Dapatkan Kunci API dan atur kunci API sebagai Variabel lingkungan.
  • Model Qwen-Omni hanya mendukung pemanggilan yang kompatibel dengan OpenAI. Anda harus menginstal SDK terbaru. Versi minimum yang diperlukan adalah 1.52.0 untuk OpenAI Python SDK dan 4.68.0 untuk Node.js SDK.
Contoh berikut mengirimkan prompt teks ke API Qwen-Omni dan mengembalikan respons streaming yang mencakup teks dan audio.
import os
import base64
import soundfile as sf
import numpy as np
from openai import OpenAI

# 1. Inisialisasi client
client = OpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"),  # Pastikan variabel lingkungan telah diatur
    # Wilayah Singapura. Ganti {WorkspaceId} dengan ID ruang kerja Bailian Anda. URL bervariasi berdasarkan wilayah.
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
)

# 2. Kirim permintaan
try:
    completion = client.chat.completions.create(
        model="qwen3.5-omni-plus",
        messages=[{"role": "user", "content": "Who are you?"}],
        modalities=["text", "audio"],  # Tentukan output teks dan audio
        audio={"voice": "Tina", "format": "wav"},
        stream=True,  # Harus diatur ke True
        stream_options={"include_usage": True},
    )

    # 3. Proses respons 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}")
Setelah menjalankan kode Python atau Node.js, respons teks akan muncul di konsol dan file audio bernama audio_assistant.wav akan disimpan di direktori yang sama dengan file kode Anda.
Model response:
I am a large language model developed by Alibaba Cloud. My name is Qwen. How can I help you?
Menjalankan kode HTTP akan mengembalikan teks dan data audio yang dikodekan Base64 secara langsung di bidang audio.
data: {"choices":[{"delta":{"content":"I"},"finish_reason":null,"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1757647879,"system_fingerprint":null,"model":"qwen3.5-omni-plus","id":"chatcmpl-a68eca3b-c67e-4666-a72f-73c0b4919860"}
data: {"choices":[{"delta":{"content":"am"},"finish_reason":null,"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1757647879,"system_fingerprint":null,"model":"qwen3.5-omni-plus","id":"chatcmpl-a68eca3b-c67e-4666-a72f-73c0b4919860"}
......
data: {"choices":[{"delta":{"audio":{"data":"/v8AAAAAAAAAAAAAAA...","expires_at":1757647879,"id":"audio_a68eca3b-c67e-4666-a72f-73c0b4919860"}},"finish_reason":null,"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1757647879,"system_fingerprint":null,"model":"qwen3.5-omni-plus","id":"chatcmpl-a68eca3b-c67e-4666-a72f-73c0b4919860"}
data: {"choices":[{"finish_reason":"stop","delta":{"content":""},"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1764763585,"system_fingerprint":null,"model":"qwen3.5-omni-plus","id":"chatcmpl-e8c82e9e-073e-4289-a786-a20eb444ac9c"}
data: {"choices":[],"object":"chat.completion.chunk","usage":{"prompt_tokens":207,"completion_tokens":103,"total_tokens":310,"completion_tokens_details":{"audio_tokens":83,"text_tokens":20},"prompt_tokens_details":{"text_tokens":207}},"created":1757940330,"system_fingerprint":null,"model":"qwen3.5-omni-plus","id":"chatcmpl-9cdd5a26-f9e9-4eff-9dcc-93a878165afc"}

Pemilihan model

  • Seri Qwen3.5-Omni: Paling cocok untuk analisis video panjang, ringkasan rapat, pembuatan keterangan, moderasi konten, dan interaksi audio-video.
    • Batas input: Hingga 3 jam audio atau 1 jam video
    • Kontrol audio: Mendukung penyesuaian volume, laju bicara, dan emosi melalui instruksi
    • Kemampuan visual: Setara dengan Qwen3.5. Memahami gambar, ucapan, efek suara, dan input multimodal lainnya
    • Input multimodal gabungan: Mendukung kombinasi apa pun antara teks dengan gambar, audio, dan video dalam satu permintaan
    • Input multimodal gabungan hanya didukung oleh seri Qwen3.5-Omni. Anda dapat menyertakan data dalam berbagai modalitas—seperti kombinasi gambar, audio, dan teks atau video, gambar, dan teks—dalam satu permintaan yang sama.
  • Seri Qwen3-Omni-Flash: Paling cocok untuk analisis video pendek dan skenario yang sensitif terhadap biaya.
    • Batas input: Input audio dan video hingga 150 detik
    • Mode berpikir: Satu-satunya model seri Qwen-Omni yang mendukung mode berpikir
    • Modalitas input: Hanya mendukung kombinasi teks dengan satu modalitas lain (gambar, audio, atau video).
  • Seri Qwen-Omni-Turbo Seri ini tidak lagi diperbarui dan memiliki fitur terbatas. Kami merekomendasikan migrasi ke seri Qwen3.5-Omni atau Qwen3-Omni-Flash.
SeriDeskripsi audio-videoBerpikir mendalamPencarian webBahasa input audioBahasa output audioSuara yang didukung
Qwen3.5-OmniModel omni-modal generasi terbaruKuatTidak didukungDidukung113
Bahasa: Chinese, English, German, French, Italian, Czech, Indonesian, Thai, Korean, Polish, Japanese, Vietnamese, Finnish, Portuguese, Spanish, Dutch, Russian, Malay, Catalan, Swedish, Turkish, Ukrainian, Romanian, Slovak, Danish, Icelandic, Norwegian (Bokmål), Macedonian, Greek, Hungarian, Galician, Filipino, Croatian, Bosnian, Slovenian, Bulgarian, Kazakh, Belarusian, Latvian, Estonian, Azerbaijani, Uyghur, Swahili, Hindi, Esperanto, Kyrgyz, Tajik, Cebuano, Afrikaans, Arabic, Lithuanian, Javanese, Bengali, Persian, Hebrew, Punjabi, Gujarati, Mongolian, Asturian, Kannada, Marathi, Interlingua, Malayalam, Maltese, Norwegian Nynorsk, Telugu, Urdu, Georgian, Basque, Tamil, Odia, Serbian, MaoriDialek:
Northeastern Mandarin, dialek Guizhou, bahasa Kanton, dialek Henan, bahasa Kanton Hong Kong, bahasa Shanghainese, dialek Shaanxi, dialek Tianjin, bahasa Hokkien Taiwan, dialek Yunnan, dialek Anhui, dialek Fujian, dialek Gansu, dialek Guangdong, dialek Hubei, dialek Hunan, dialek Jiangxi, dialek Shandong, dialek Shanxi, dialek Sichuan, dialek Guangxi, dialek Hainan, dialek Chongqing, dialek Changsha, dialek Hangzhou, dialek Hefei, dialek Yinchuan, dialek Zhengzhou, dialek Shenyang, dialek Wenzhou, dialek Wuhan, dialek Kunming, dialek Taiyuan, dialek Nanchang, dialek Jinan, dialek Lanzhou, dialek Nanjing, bahasa Hakka, Southern Min
36
Bahasa:Chinese, English, German, Italian, Portuguese, Spanish, Japanese, Korean, French, Russian, Thai, Indonesian, Arabic, Vietnamese, Turkish, Finnish, Polish, Hindi, Dutch, Czech, Urdu, Tagalog, Swedish, Danish, Hebrew, Icelandic, Malay, Norwegian, Persian
Dialek:Sichuan dialect, Beijing dialect, Tianjin dialect, Nanjing dialect, Shaanxi dialect, Cantonese, Southern Min
55
Qwen3-Omni-FlashModel berpikir hibridaLebih lemahDidukungTidak didukung19
Bahasa:Chinese, English, German, French, Italian, Thai, Korean, Japanese, Russian, Spanish, PortugueseDialek:Sichuan dialect, Shanghainese, Cantonese, Southern Min, Shaanxi dialect, Nanjing dialect, Tianjin dialect, Beijing dialect
19
Bahasa:Chinese, English, German, French, Italian, Thai, Korean, Japanese, Russian, Spanish, PortugueseDialek:Sichuanese, Shanghainese, Cantonese, Hokkien, Shaanxi dialect, Nanjing dialect, Tianjin dialect, Beijing dialect
17 hingga 49
Bervariasi berdasarkan versi
Qwen-Omni-TurboTidak lagi diperbaruiTidak adaTidak didukungTidak didukungChinese, EnglishChinese, English4
Untuk nama model, ukuran jendela konteks, harga, dan versi snapshot, periksa di Konsol Studio Model. Untuk batasan laju, lihat Pembatasan laju.

Kinerja model

Analisis konten audio dan video

Buat deskripsi lengkap dengan cap waktu untuk video ini.
00:00.000 – 00:02.500Jalan kota yang basah oleh hujan memenuhi bingkai layar lebar. Fotografi eksposur panjang menciptakan garis-garis lampu mobil merah dan biru di atas trotoar basah. Seorang pria sendirian mengenakan mantel panjang gelap dan kemeja terang dengan dasi berjalan menuju kamera di sepanjang trotoar kanan. Tetesan hujan menempel di bahunya dan rambutnya. Setiap langkah menghasilkan suara "plop" yang diredam di atas beton basah. Dengungan elektronik rendah yang mengancam menyertai suara sekitar, sementara hujan yang stabil berderak di sekelilingnya. Grafiti berwarna-warni menutupi dinding bata di sampingnya, dan papan reklame neon bersinar di kejauhan—satu dengan jelas menampilkan tulisan miring oranye-merah bertuliskan "Nice", sedangkan papan vertikal lainnya menunjukkan huruf "AT" di bagian bawahnya.......00:12.300 – 00:14.533Kamera dimiringkan ke bawah. Di dalam sorotan senter, selembar kertas tunggal yang menguning dan tua tergeletak di genangan dangkal, ujung-ujungnya hangus dan sudut-sudutnya melengkung. Paragraf-paragraf bertinta menutupi sebagian besar permukaannya, tetapi kelembapan dan bekas hangus membuat teksnya tidak terbaca. Pria itu berlutut, menjulurkan jari-jari yang mengenakan sarung tangan ke arah dokumen tersebut. Riak-riak menyebar ke luar saat tangannya mendekat. Suara sirene mencapai puncaknya lalu mulai sedikit mereda, sementara dengungan sekitar tetap stabil. Adegan membeku tepat sebelum kertas yang bergetar disentuh, mengakhiri klip.
Hanya sebagian cap waktu yang ditampilkan.

Pemahaman multidialek

Jelaskan karakteristik vokal, keadaan emosional, dan lirik lengkap untuk penyanyi dalam berbagai dialek Tiongkok.
Audio ini menampilkan pertunjukan rap oleh penyanyi dari berbagai wilayah Tiongkok, menampilkan keberagaman dialek yang kaya. Berikut adalah deskripsi detail tentang ciri vokal, keadaan emosional, dan lirik masing-masing penyanyi:Dialek Hangzhou (Wu)Ciri vokal:Suara penyanyi pria ini lembut dan halus, dengan kehalusan dan kehangatan khas dialek Wu. Intonasinya naik dan turun dengan lembut, dan ritmenya ringan dan cepat, menciptakan efek bercerita yang santai.Keadaan emosional:Santai, nyaman, dan penuh kehidupan sehari-hari. Ia menggambarkan gaya hidup Hangzhou yang lambat dan perubahan perkotaan, mengekspresikan kasih sayang terhadap kampung halamannya dan refleksi terhadap perkembangan modern. Secara keseluruhan, ia merasa nyaman dan akrab.Lirik:> Dialek Hangzhou, dengarkan baik-baik! Budaya kami termasuk pelafalan lokal erhua.> Seperti bunga yang mekar di Danau Barat, tidak perlu survei budaya—kami memahaminya paling baik.> Tidak seorang pun dari kalian memahami. 'San bu da men', 'ge'r', 'lao'r', 'fen'r', 'ya'r'... bagaimana orang luar bisa membedakan semua ini?> Ayo pergi! Transportasi cepat—kereta bawah tanah ada di mana-mana. Kita akan memeriksanya.> Menyambut Asia Tenggara dan Thailand, menonton acara "Thirteen Ta". Bangga dengan kota kami, langsung dalam kepribadian.> Jadi kamu hanya datang untuk pengalaman "menyeberangi jembatan", dan karena rasanya berbeda, kamu tidak kembali?
Hanya sebagian hasil yang ditampilkan.

Pembuatan keterangan lirik

Transkripsikan lirik lagu dan berikan cap waktu untuk setiap baris dalam format ini:[00:00:15,020 --> 00:00:28,085] : When you walk through a storm, hold your head up high.[00:00:28,085 --> 00:00:40,200] And don't be afraid of the dark. ......
[00:00:12,680 --> 00:00:16,960] Benang kucing bergoyang melewati cahaya bulan di pepohonan.[00:00:18,400 --> 00:00:22,800] Radiator mendengung lagu-lagu populer tahun 1998.[00:00:24.160 → 00:00:28.080] Waktu memisahkan gelombang panas seperti kabut.[00:00:28,920 --> 00:00:33,000] Neon dari layar bersinar di pangkal hidungku.......[00:03:16,720 --> 00:03:21,680] Kami bersarang di cincin paling lembut dari batang pohon.[00:03:22,400 --> 00:03:27,000] Pernapasan mengubah kehangatan sisa menjadi madu-gula.[00:03:28,160 --> 00:03:33,200] Sofa tenggelam ke bentuk awan-lembut.[00:03:34,000 --> 00:03:38,800] Setiap pori menyerap sinar matahari.[00:04:09,000 --> 00:04:10,020] (Akhir)
Hanya sebagian hasil yang ditampilkan.

Pemrograman audio-video

Penggunaan

Keluaran streaming

Semua permintaan ke Qwen-Omni harus mengatur stream=True.

Konfigurasi model

Konfigurasikan parameter, prompt, dan durasi media untuk menyeimbangkan biaya, kecepatan, dan kualitas.
  • Pemahaman audio-video
  • Pemahaman audio
Kasus penggunaanDurasi video yang direkomendasikanPrompt yang direkomendasikanmax_pixels maksimum yang direkomendasikan
Tinjauan cepat, biaya rendah≤60 menitPrompt sederhana dalam 50 kata230.400
Ekstraksi konten (segmentasi video panjang)≤60 menit921.600~2.073.600
Analisis standar (penandaan video pendek)≤4 menitGunakan prompt terstruktur di bawah ini
Provide a detailed description of the video.
It should explicitly include three sections:
1. A structured chronological storyline of **every noticeable audio and visual detail**
2. A structured list of all visible text. For each text element, include start timestamp, end timestamp, the exact text content, and the appearance characteristics. If no text appears, explicitly state so.
3. A structured speech-to-text transcription, include speaker (corresponding to the character or voice‑over in Section 1, including their accent and tone), exact spoken content, start timestamp, end timestamp, and speaking state (prosody, emotion, and style). If no speech appears, explicitly state so.
Aside from these three required sections, you are free to organize any additional content in any way you find helpful. This additional content can include global information about the entire video or localized information about specific moments. You may choose the topic of this extra content freely.
Output Format:
```
## Storyline
<xx:xx.xxx> - <xx:xx.xxx>
<an unstructured long paragraph in natural language describing what happened during this period, blending both audio and video details.>
<xx:xx.xxx> - <xx:xx.xxx>
<an unstructured long paragraph in natural language describing what happened during this period, blending both audio and video details.>
<xx:xx.xxx> - <xx:xx.xxx>
<an unstructured long paragraph in natural language describing what happened during this period, blending both audio and video details.>
...
## Visible Text
<xx:xx.xxx> - <xx:xx.xxx>
“<element>”: <appearance>
“<element>”: <appearance>
<xx:xx.xxx> - <xx:xx.xxx>
“<element>”: <appearance>
“<element>”: <appearance>
“<element>”: <appearance>
<xx:xx.xxx> - <xx:xx.xxx>
“<element>”: <appearance>
...
## Speakers and Transcript
Speaker profiles:
<speaker> - <profile>
<speaker> - <profile>
<speaker> - <profile>
...
<xx:xx.xxx> - <xx:xx.xxx>
Speaker: <speaker>
State: <description>
Content: “<content>”
<xx:xx.xxx> - <xx:xx.xxx>
Speaker: <speaker>
State: <description>
Content: “<content>”
<xx:xx.xxx> - <xx:xx.xxx>
Speaker: <speaker>
State: <description>
Content: “<content>”
...
## <another section>
<paragraphs>
## <another section>
<paragraphs>
...
```
921.600~2.073.600
Analisis detail halus (beberapa pembicara/scene kompleks)≤2 menit2.073.600
Anda dapat melakukan segmentasi video panjang terlebih dahulu untuk mendapatkan deskripsi detail halus.

Input multimodal gabungan

Input multimodal gabungan hanya didukung oleh seri Qwen3.5-Omni. Anda dapat memberikan data dalam beberapa modalitas, seperti kombinasi apa pun antara gambar, audio, dan teks, atau video, gambar, dan teks, dalam satu permintaan yang sama.
Contoh berikut menunjukkan cara memberikan gambar dan audio dalam satu permintaan untuk analisis multimodal.
  • Kompatibel dengan OpenAI
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
)

completion = client.chat.completions.create(
    model="qwen3.5-omni-plus",
    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": "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": "Describe the image content and tell me what the audio is about."},
            ],
        },
    ],
    modalities=["text", "audio"],
    audio={"voice": "Tina", "format": "wav"},
    stream=True,
    stream_options={"include_usage": True},
)

for chunk in completion:
    if chunk.choices:
        print(chunk.choices[0].delta)
    else:
        print(chunk.usage)

Input modalitas tunggal

Setiap permintaan berisi teks dan satu modalitas lain (video, audio, atau gambar). Semua model Qwen-Omni mendukung ini.
  • Input video dan teks
  • Input audio dan teks
  • Input gambar dan teks
Berikan video sebagai daftar gambar atau file video (dengan dukungan audio).
  • File video (mendukung audio dalam video)
  • Format daftar gambar
  • Jumlah file:
    • Seri Qwen3.5-Omni: Hingga 512 file menggunakan URL publik dan hingga 250 file menggunakan encoding Base64.
    • Seri Qwen3-Omni-Flash dan Qwen-Omni-Turbo: Hanya satu file yang diizinkan.
  • Ukuran file:
    • Menggunakan URL publik:
      • Seri Qwen3.5-Omni: Hingga 2 GB
      • Qwen3-Omni-Flash: Hingga 256 MB
      • Qwen-Omni-Turbo: Hingga 150 MB
    • Menggunakan encoding Base64: String Base64 yang dikodekan harus lebih kecil dari 10 MB
  • Batas durasi:
    • Seri Qwen3.5-Omni: 1 jam
    • Qwen3-Omni-Flash: 150 detik
    • Qwen-Omni-Turbo: 40 detik
  • Format file: MP4, AVI, MKV, MOV, FLV, dan WMV.
  • 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. Dapatkan Kunci API: https://www.alibabacloud.com/help/en/model-studio/get-api-key
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # URL berikut untuk wilayah Singapura. Saat memanggil, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan wilayah.
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
)

completion = client.chat.completions.create(
    model="qwen3.5-omni-plus", # Untuk Qwen3-Omni-Flash, jalankan dalam mode non-thinking.
    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 video about?"},
            ],
        },
    ],
    # Atur modalitas output. Dua opsi yang didukung saat ini: ["text","audio"] dan ["text"]
    modalities=["text", "audio"],
    audio={"voice": "Tina", "format": "wav"},
    # stream harus diatur ke True, jika tidak akan terjadi error.
    stream=True,
    stream_options={"include_usage": True},
)

for chunk in completion:
    if chunk.choices:
        print(chunk.choices[0].delta)
    else:
        print(chunk.usage)

Pencarian web

Seri Qwen3.5-Omni mendukung pencarian web untuk mengambil informasi real-time dan melakukan penalaran.
  • Pencarian web hanya didukung dalam seri Qwen3.5-Omni. Parameter search_strategy hanya menerima agent.
  • Untuk penagihan, lihat kebijakan agent di Penagihan.
Untuk mengaktifkan pencarian web, atur enable_search dan search_strategy ke agent:
  • Kompatibel dengan OpenAI
# Prasyarat:
# pip install openai

import os
from openai import OpenAI

# Inisialisasi client
client = OpenAI(
    # Kunci API berbeda antara wilayah Singapura dan Beijing. Dapatkan Kunci API:https://www.alibabacloud.com/help/en/model-studio/get-api-key
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # URL berikut untuk wilayah Singapura. Saat memanggil, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan wilayah.
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
)

# Kirim permintaan (dengan pencarian web diaktifkan)
try:
    completion = client.chat.completions.create(
        model="qwen3.5-omni-plus",
        messages=[{
            "role": "user",
            "content": "What is today's date and day of the week, and what important holidays are there today?"
        }],
        stream=True,
        stream_options={"include_usage": True},
        # Aktifkan pencarian web
        extra_body={
            "enable_search": True
        }
    )

    print("Model response (with real-time information):")
    for chunk in completion:
        if chunk.choices and chunk.choices[0].delta.content:
            print(chunk.choices[0].delta.content, end="")
    print()

except Exception as e:
    print(f"Request failed:{e}")

Aktifkan/nonaktifkan mode berpikir

Dalam seri Qwen-Omni, hanya model Qwen3-Omni-Flash yang merupakan model berpikir hibrida. Anda dapat menggunakan parameter enable_thinking untuk mengaktifkan atau menonaktifkan mode berpikir:
  • true
  • false (default)
Dalam mode berpikir, output audio tidak didukung.
  • Kompatibel dengan OpenAI
import os
from openai import OpenAI

client = OpenAI(
    # Kunci API untuk wilayah Singapura dan Beijing berbeda. Dapatkan Kunci API: https://www.alibabacloud.com/help/en/model-studio/get-api-key
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # URL berikut untuk wilayah Singapura. Saat memanggil, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan wilayah.
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.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. Output audio tidak didukung dalam mode berpikir. Qwen-Omni-Turbo tidak mendukung enable_thinking.
    extra_body={'enable_thinking': True},

    # Atur modalitas output. Dua opsi yang didukung dalam mode non-thinking: ["text","audio"] dan ["text"]. Hanya ["text"] yang didukung dalam mode berpikir.
    modalities=["text"],

    # Atur suara. Parameter audio tidak didukung dalam mode berpikir.
    # audio={"voice": "Tina", "format": "wav"},
    # stream harus diatur ke True, jika tidak akan terjadi error.
    stream=True,
    stream_options={"include_usage": True},
)

for chunk in completion:
    if chunk.choices:
        print(chunk.choices[0].delta)
    else:
        print(chunk.usage)
data: {"choices":[{"delta":{"content":null,"role":"assistant","reasoning_content":""},"index":0,"logprobs":null,"finish_reason":null}],"object":"chat.completion.chunk","usage":null,"created":1757937336,"system_fingerprint":null,"model":"qwen3-omni-flash","id":"chatcmpl-ce3d6fe5-e717-4b7e-8b40-3aef12288d4c"}
data: {"choices":[{"finish_reason":null,"logprobs":null,"delta":{"content":null,"reasoning_content":"Hmm"},"index":0}],"object":"chat.completion.chunk","usage":null,"reated":1757937336,"system_fingerprint":null,"model":"qwen3-omni-flash","id":"chatcmpl-ce3d6fe5-e717-4b7e-8b40-3aef12288d4c"}
data: {"choices":[{"delta":{"content":null,"reasoning_content":","},"finish_reason":null,"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"reated":1757937336,"system_fingerprint":null,"model":"qwen3-omni-flash","id":"chatcmpl-ce3d6fe5-e717-4b7e-8b40-3aef12288d4c"}
......
data: {"choices":[{"delta":{"content":"Tell me"},"finish_reason":null,"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1757937336,"tem_fingerprint":null,"model":"qwen3-omni-flash","id":"chatcmpl-ce3d6fe5-e717-4b7e-8b40-3aef12288d4c"}
data: {"choices":[{"delta":{"content":"!"},"finish_reason":null,"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1757937336,"systm_fingerprint":null,"model":"qwen3-omni-flash","id":"chatcmpl-ce3d6fe5-e717-4b7e-8b40-3aef12288d4c"}
data: {"choices":[{"finish_reason":"stop","delta":{"content":"","reasoning_content":null},"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1757937336,"system_fingerprint":null,"model":"qwen3-omni-flash","id":"chatcmpl-ce3d6fe5-e717-4b7e-8b40-3aef12288d4c"}
data: {"choices":[],"object":"chat.completion.chunk","usage":{"prompt_tokens":11,"completion_tokens":363,"total_tokens":374,"completion_tokens_details":{"reasoning_tokens":195,"text_tokens":168},"prompt_tokens_details":{"text_tokens":11}},"created":1757937336,"system_fingerprint":null,"model":"qwen3-omni-flash","id":"chatcmpl-ce3d6fe5-e717-4b7e-8b40-3aef12288d4c"}

Percakapan multi-putaran

Saat menggunakan model Qwen-Omni untuk percakapan multi-putaran, perhatikan hal berikut:
  • Pesan Asisten Pesan asisten dalam array pesan hanya dapat berisi data teks.
  • Pesan Pengguna Pesan pengguna dapat berisi teks dan satu modalitas lain. Dalam percakapan multi-putaran, Anda dapat memasukkan modalitas berbeda dalam pesan pengguna yang berbeda.
  • Kompatibel dengan OpenAI
import os
from openai import OpenAI

client = OpenAI(
    # Kunci API untuk wilayah Singapura dan Beijing berbeda. Dapatkan Kunci API: https://www.alibabacloud.com/help/en/model-studio/get-api-key
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # URL berikut untuk wilayah Singapura. Saat memanggil, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan wilayah.
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
)

completion = client.chat.completions.create(
    model="qwen3.5-omni-plus", # Untuk Qwen3-Omni-Flash, jalankan dalam mode non-thinking.
    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": "Tell me about this company."}],
        },
    ],
    # Atur modalitas output. Dua opsi yang didukung saat ini: ["text","audio"] dan ["text"]
    modalities=["text"],
    # stream harus diatur ke True, jika tidak akan terjadi error.
    stream=True,
    stream_options={"include_usage": True},
)

for chunk in completion:
    if chunk.choices:
        print(chunk.choices[0].delta)
    else:
        print(chunk.usage)

Mengurai data audio yang dikodekan Base64

Model Qwen-Omni menghasilkan audio sebagai data streaming yang dikodekan Base64. Selama generasi, pertahankan variabel string dan tambahkan data Base64 dari setiap potongan yang dikembalikan. Setelah generasi selesai, dekode Base64 dari string lengkap untuk mendapatkan file audio. Atau, dekode dan putar setiap potongan secara real time.
# Instruksi instalasi untuk pyaudio:
# APPLE Mac OS X
#   brew install portaudio
#   pip install pyaudio
# Debian/Ubuntu
#   sudo apt-get install python-pyaudio python3-pyaudio
#   atau
#   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. Dapatkan Kunci API: https://www.alibabacloud.com/help/en/model-studio/get-api-key
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # URL berikut untuk wilayah Singapura. Saat memanggil, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan wilayah.
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
)

completion = client.chat.completions.create(
    model="qwen3.5-omni-plus", # Untuk Qwen3-Omni-Flash, jalankan dalam mode non-thinking.
    messages=[{"role": "user", "content": "Who are you?"}],
    # Atur modalitas output. Dua opsi yang didukung saat ini: ["text","audio"] dan ["text"]
    modalities=["text", "audio"],
    audio={"voice": "Tina", "format": "wav"},
    # stream harus diatur ke True, jika tidak akan terjadi error.
    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.content)
    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 generasi berlangsung (komentari 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 secara langsung
#                 stream.write(audio_np.tobytes())
#             except Exception as e:
#                 print(chunk.choices[0].delta.content)

# time.sleep(0.8)
# # Bersihkan sumber daya
# stream.stop_stream()
# stream.close()
# p.terminate()

Input file lokal terenkode Base64

Saat menggunakan encoding Base64 untuk mengirim file, string Base64 yang dikodekan harus lebih kecil dari 10 MB.
  • Gambar
  • Audio
  • Video
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. Dapatkan Kunci API: https://www.alibabacloud.com/help/en/model-studio/get-api-key
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # URL berikut untuk wilayah Singapura. Saat memanggil, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan wilayah.
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
)

# Format encoding 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.5-omni-plus", # Untuk Qwen3-Omni-Flash, jalankan dalam mode non-thinking.
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image_url",
                    "image_url": {"url": f"data:image/png;base64,{base64_image}"},
                },
                {"type": "text", "text": "What scene is depicted in the image?"},
            ],
        },
    ],
    # Atur modalitas output. Dua opsi yang didukung saat ini: ["text","audio"] dan ["text"]
    modalities=["text", "audio"],
    audio={"voice": "Tina", "format": "wav"},
    # stream harus diatur ke True, jika tidak akan terjadi error.
    stream=True,
    stream_options={"include_usage": True},
)

for chunk in completion:
    if chunk.choices:
        print(chunk.choices[0].delta)
    else:
        print(chunk.usage)

Referensi API

Untuk parameter input dan output, lihat Kompatibel dengan OpenAI - Chat.

Penagihan dan batasan laju

Aturan penagihan Qwen-Omni ditagih berdasarkan token yang dikonsumsi di berbagai modalitas (audio, gambar, dan video). Periksa detail penagihan di konsol.
  • Audio
  • Gambar
  • Video
  • Seri Qwen3.5-Omni:
    • Rumus audio input: Total token = Durasi audio (detik) × 7
    • Rumus audio output: Total token = Durasi audio (detik) × 12,5
  • Qwen3-Omni-Flash: Untuk audio input dan output, Total token = Durasi audio (detik) × 12,5
  • Qwen-Omni-Turbo: Untuk audio input dan output, Total token = Durasi audio (detik) × 25
Jika durasi audio kurang dari 1 detik, dihitung sebagai 1 detik.
Kuota gratis Untuk mengklaim, menanyakan, atau menggunakan kuota gratis Anda, lihat Kuota gratis untuk pengguna baru. Batasan laju Untuk aturan pembatasan laju dan FAQ, lihat Pembatasan laju.

Kode error

Jika pemanggilan model gagal dan mengembalikan pesan error, lihat Kode error untuk resolusi.

Daftar suara

Untuk daftar suara model Qwen-Omni, lihat Daftar suara.
Rencana Token (Team Edition)
Model playground
Statistik dan Pemantauan
Asset Center
Dukungan layanan