すべてのプロダクト
Search
ドキュメントセンター

Alibaba Cloud Model Studio:Qwen-TTS 非リアルタイム音声合成 API リファレンス

最終更新日:Oct 27, 2026

非リアルタイム音声合成 (Qwen-TTS) API のリクエストパラメーターと応答フィールドについて説明します。

リクエスト本文

非ストリーミング出力

Python

DashScope Python SDK の SpeechSynthesizer インターフェイスは、現在 MultiModalConversation に統合されています。使用方法とパラメーターは完全に互換性があります。

# 最新バージョンの DashScope SDK をインストールします
import os
import dashscope

# 以下はシンガポールリージョンの構成です。{WorkspaceId} を実際のワークスペース ID に置き換えてください。region の値はリージョンによって異なります。
client = dashscope.Client(
    # シンガポールリージョンと北京リージョンの API キーは異なります。API キーの取得: https://www.alibabacloud.com/help/model-studio/get-api-key
    # 環境変数が設定されていない場合は、次の行を Model Studio API キーに置き換えてください: api_key="sk-xxx"
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    workspace="{WorkspaceId}",
    region="ap-southeast-1",
)

text = "Let me recommend a T-shirt to everyone. This one is really super nice. The color is very elegant, and it's also a perfect item to match. Everyone can buy it without hesitation. It's truly beautiful and very forgiving on the figure. No matter what body type you have, it will look great. I recommend everyone to place an order."
result = client.audio.tts.http.synthesize(
    text,
    model="qwen3-tts-flash",
    voice="Cherry"
)
print(result.audio_url, result.audio_id, result.expires_at)

Java

// 最新バージョンの DashScope SDK をインストールします
import com.alibaba.dashscope.aigc.multimodalconversation.AudioParameters;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.JsonUtils;
import com.alibaba.dashscope.utils.Constants;
public class Main {
    private static final String MODEL = "qwen3-tts-flash";
    public static void call() throws ApiException, NoApiKeyException, UploadFileException {
        MultiModalConversation conv = new MultiModalConversation();
        MultiModalConversationParam param = MultiModalConversationParam.builder()
                .model(MODEL)
                // シンガポールリージョンと北京リージョンの API キーは異なります。API キーの取得: https://www.alibabacloud.com/help/model-studio/get-api-key
                // 環境変数が設定されていない場合は、次の行を Model Studio API キーに置き換えてください: apiKey("sk-xxx")
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                .text("Today is a wonderful day to build something people love!")
                .voice(AudioParameters.Voice.CHERRY)
                .parameter("language_type", "English")
                .build();
        MultiModalConversationResult result = conv.call(param);
        System.out.println(JsonUtils.toJson(result));
    }
    public static void main(String[] args) {
        // シンガポールリージョン
        Constants.baseHttpApiUrl = "https://dashscope-intl.aliyuncs.com/api/v1";
        try {
            call();
        } catch (ApiException | NoApiKeyException | UploadFileException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}

curl

# ======= 重要事項 =======
# シンガポールリージョン
# シンガポールリージョンと北京リージョンの API キーは異なります。API キーの取得: https://www.alibabacloud.com/help/model-studio/get-api-key
# 環境変数が設定されていない場合は、$DASHSCOPE_API_KEY を Model Studio API キー (sk-xxx) に置き換えてください。
# === 実行時にこのコメントを削除してください ===

curl -X POST 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
    "model": "qwen3-tts-flash",
    "input": {
        "text": "Let me recommend a T-shirt to everyone. This one is really super nice. The color is very elegant, and it's also a perfect item to match. Everyone can buy it without hesitation. It's truly beautiful and very forgiving on the figure. No matter what body type you have, it will look great. I recommend everyone to place an order.",
        "voice": "Cherry",
        "language_type": "English"
    }
}'

ストリーミング出力

Python

DashScope Python SDK の SpeechSynthesizer インターフェイスは、現在 MultiModalConversation に統合されています。新しいインターフェイスに切り替えるには、名前を置き換えるだけです。他のすべてのパラメーターは完全に互換性があります。

# DashScope SDK のバージョンは 2.0.1 以降である必要があります。
import os
import dashscope

# 以下はシンガポールリージョンの構成です。{WorkspaceId} を実際のワークスペース ID に置き換えてください。region の値はリージョンによって異なります。
client = dashscope.Client(
    # シンガポールリージョンと北京リージョンの API キーは異なります。API キーの取得: https://www.alibabacloud.com/help/model-studio/get-api-key
    # 環境変数が設定されていない場合は、次の行を Model Studio API キーに置き換えてください: api_key="sk-xxx"
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    workspace="{WorkspaceId}",
    region="ap-southeast-1",
)

text = "Let me recommend a T-shirt to everyone. This one is really super nice. The color is very elegant, and it's also a perfect item to match. Everyone can buy it without hesitation. It's truly beautiful and very forgiving on the figure. No matter what body type you have, it will look great. I recommend everyone to place an order."
for chunk in client.audio.tts.http.stream(
    text,
    model="qwen3-tts-flash",
    voice="Cherry",
):
    # chunk.audio にはデコード済みの音声データ (bytes) が含まれます。chunk.is_final が True の場合、チャンクは完全な音声の URL を保持します
    print(chunk)

Java

// DashScope SDK バージョン 2.19.0 以降が必要です
import com.alibaba.dashscope.aigc.multimodalconversation.AudioParameters;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.JsonUtils;
import com.alibaba.dashscope.utils.Constants;
import io.reactivex.Flowable;
public class Main {
    private static final String MODEL = "qwen3-tts-flash";
    public static void streamCall() throws ApiException, NoApiKeyException, UploadFileException {
        MultiModalConversation conv = new MultiModalConversation();
        MultiModalConversationParam param = MultiModalConversationParam.builder()
                .model(MODEL)
                // シンガポールリージョンと北京リージョンの API キーは異なります。API キーの取得: https://www.alibabacloud.com/help/model-studio/get-api-key
                // 環境変数が設定されていない場合は、次の行を Model Studio API キーに置き換えてください: apiKey("sk-xxx")
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                .text("Today is a wonderful day to build something people love!")
                .voice(AudioParameters.Voice.CHERRY)
                .parameter("language_type", "English")
                .build();
        Flowable<MultiModalConversationResult> result = conv.streamCall(param);
        result.blockingForEach(r -> {System.out.println(JsonUtils.toJson(r));
        });
    }
    public static void main(String[] args) {
        // シンガポールリージョン
        Constants.baseHttpApiUrl = "https://dashscope-intl.aliyuncs.com/api/v1";
        try {
            streamCall();
        } catch (ApiException | NoApiKeyException | UploadFileException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}

curl

# ======= 重要事項 =======
# シンガポールリージョン
# シンガポールリージョンと北京リージョンの API キーは異なります。API キーの取得: https://www.alibabacloud.com/help/model-studio/get-api-key
# 環境変数が設定されていない場合は、$DASHSCOPE_API_KEY を Model Studio API キー (sk-xxx) に置き換えてください。
# === 実行時にこのコメントを削除してください ===

curl -X POST 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-H 'X-DashScope-SSE: enable' \
-d '{
    "model": "qwen3-tts-flash",
    "input": {
        "text": "Let me recommend a T-shirt to you. This one is truly stunning. Its color highlights your elegance and makes it an ideal match for any outfit. You can buy it without hesitation - it looks great on everyone. It flatters all body types. Whether you're tall, short, slim, or curvy, this T-shirt suits you perfectly. We highly recommend ordering it.",
        "voice": "Cherry",
        "language_type": "English"
    }
}'

Base64 エンコードされた音声をリアルタイムで再生する方法は、ストリーミング再生をご参照ください。

modelstring(必須)

モデル名。詳細については、「対応モデル」をご参照ください。

inputobject(必須)

入力パラメーター。

プロパティ

text string (必須)

合成するテキスト。複数言語を混在させた入力をサポートします。最大入力長は 600 文字です。

voice string (必須)

使用する音声。「対応システム音声」をご参照ください。

language_type string (オプション)

合成されるオーディオの言語。デフォルトは Auto です。

  • Auto:入力に複数の言語が含まれている場合、または言語を特定できない場合に使用します。モデルは各言語セグメントの発音を自動的に照合しますが、精度は保証されません。

  • 特定の言語:単一言語のテキストに使用します。言語を指定すると、合成品質が大幅に向上し、通常は Auto よりも良い結果が得られます。有効な値:

    • Chinese
    • English
    • German
    • Italian
    • Portuguese
    • Spanish
    • Japanese
    • Korean
    • French
    • Russian

応答オブジェクト (ストリーミング形式と非ストリーミング形式は同一)

{
    "status_code": 200,
    "request_id": "5c63c65c-cad8-4bf4-959d-xxxxxxxxxxxx",
    "code": "",
    "message": "",
    "output": {
        "text": null,
        "finish_reason": "stop",
        "choices": null,
        "audio": {
            "data": "",
            "url": "http://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/1d/ab/20251218/d2033070/39b6d8f2-c0db-4daa-9073-5d27bfb66b78.wav?Expires=1766113409&OSSAccessKeyId=YOUR_ACCESS_KEY_ID&Signature=YOUR_SIGNATURE",
            "id": "audio_5c63c65c-cad8-4bf4-959d-xxxxxxxxxxxx",
            "expires_at": 1766113409
        }
    },
    "usage": {
        "input_tokens": 0,
        "output_tokens": 0,
        "characters": 195
    }
}

status_code integer

RFC 9110 で定義されている HTTP ステータスコード。一般的な値:
• 200:リクエスト成功。
• 400:リクエストパラメーターが無効。
• 401:認証失敗。
• 404:リソースが見つかりません。
• 500:内部サーバーエラー。

request_id string

このリクエストの一意の識別子。トラブルシューティングに使用します。

code string

失敗時に返されるエラーコード。「エラーコード」をご参照ください。

message string

失敗時に返されるエラーメッセージ。「エラーコード」をご参照ください。

outputobject

モデルの出力。

プロパティ

textstring

常に null。このフィールドは無視してください。

choicesstring

常に null。このフィールドは無視してください。

finish_reasonstring

生成ステータス:

  • null — 生成中です。
  • stop — 生成が正常に終了したか、停止条件が満たされました。

audio object

モデルからのオーディオ出力。

プロパティ

url string

完全なオーディオファイルの URL。有効期間は 24 時間です。非ストリーミングモードでは、応答で直接返されます。ストリーミングモードでは、SSE ストリームの最終チャンクでのみ返されます (中間チャンクにはこのフィールドは含まれません)。

data string

Base64 エンコードされたオーディオデータ。非ストリーミングモードでは、このフィールドは常に空の文字列です (完全なオーディオファイルを取得するには url を使用してください)。ストリーミングモードでは、中間チャンクには Base64 エンコードされたオーディオセグメントが含まれ、最終チャンクは空の文字列を返します (完全なオーディオを取得するには url を使用してください)。

id string

オーディオの一意の識別子。

expires_at integer

URL の有効期限 (UNIX タイムスタンプ)。

usage object

このリクエストの文字数使用量。

プロパティ

output_tokens integer

出力オーディオによって消費されたトークン数。Qwen3-TTS-Flash モデルの場合、このフィールドは常に 0 です。

input_tokens integer

入力テキストによって消費されたトークン数。Qwen3-TTS-Flash モデルの場合、このフィールドは常に 0 です。

characters integer

入力テキストの文字数。Qwen3-TTS-Flash モデルによってのみ返されます。

request_id string

このリクエストの一意の識別子。トラブルシューティングに使用します。

音声のダウンロードと再生

例を実行する前に、API キーを取得して設定し、DashScope SDK をインストールしてください。Python の再生例には PyAudio と NumPy も必要です。PyAudio のインストール方法はコード内のコメントを参照し、NumPy は pip install numpy でインストールしてください。

音声のダウンロード(Java)

Gson 依存関係をインポートする必要があります。Maven または Gradle を使用して追加します。

Maven

pom.xml に以下を追加します。

<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.13.1</version>
</dependency>

Gradle

build.gradle に以下を追加します。

// https://mvnrepository.com/artifact/com.google.code.gson/gson
implementation("com.google.code.gson:gson:2.13.1")
import com.alibaba.dashscope.aigc.multimodalconversation.AudioParameters;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;

import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.URL;

public class Main {
    private static final String MODEL = "qwen3-tts-flash";
    public static void call() throws ApiException, NoApiKeyException, UploadFileException {
        MultiModalConversation conv = new MultiModalConversation();
        MultiModalConversationParam param = MultiModalConversationParam.builder()
                // シンガポールおよび北京リージョンの API キーは異なります。API キーの取得: https://www.alibabacloud.com/help/zh/model-studio/get-api-key
                // 環境変数を構成していない場合は、次の行を Model Studio API キーに置き換えます: .apiKey("sk-xxx")
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                .model(MODEL)
                .text("Today is a wonderful day to build something people love!")
                .voice(AudioParameters.Voice.CHERRY)
                .languageType("English") // 正しい発音と自然なイントネーションを得るため、テキストの言語と一致させることを推奨します。
                .build();
        MultiModalConversationResult result = conv.call(param);
        String audioUrl = result.getOutput().getAudio().getUrl();
        System.out.print(audioUrl);

        // 音声ファイルをローカル記憶域にダウンロード
        try (InputStream in = new URL(audioUrl).openStream();
             FileOutputStream out = new FileOutputStream("downloaded_audio.wav")) {
            byte[] buffer = new byte[1024];
            int bytesRead;
            while ((bytesRead = in.read(buffer)) != -1) {
                out.write(buffer, 0, bytesRead);
            }
            System.out.println("\n音声ファイルが downloaded_audio.wav にダウンロードされました。");
        } catch (Exception e) {
            System.out.println("\n音声ファイルのダウンロードに失敗しました: " + e.getMessage());
        }
    }
    public static void main(String[] args) {
        // 以下はシンガポールリージョンの構成です。
        Constants.baseHttpApiUrl = "https://dashscope-intl.aliyuncs.com/api/v1";
        try {
            call();
        } catch (ApiException | NoApiKeyException | UploadFileException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}

ストリーミング再生

Python

# coding=utf-8
#
# pyaudio のインストール手順:
# APPLE Mac OS X
#   brew install portaudio
#   pip install pyaudio
# Debian/Ubuntu
#   sudo apt-get install python-pyaudio python3-pyaudio
#   or
#   pip install pyaudio
# CentOS
#   sudo yum install -y portaudio portaudio-devel && pip install pyaudio
# Microsoft Windows
#   python -m pip install pyaudio

import os
import dashscope
import pyaudio
import time

# 以下はシンガポールリージョンの構成です。{WorkspaceId} を実際のワークスペース ID に置き換えてください。region の値はリージョンによって異なります。
client = dashscope.Client(
    # シンガポールおよび北京リージョンの API キーは異なります。API キーの取得: https://www.alibabacloud.com/help/model-studio/get-api-key
    # 環境変数を構成していない場合は、次の行を Model Studio API キーに置き換えます: api_key = "sk-xxx"
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    workspace="{WorkspaceId}",
    region="ap-southeast-1",
)

p = pyaudio.PyAudio()
# 音声ストリームを作成
stream = p.open(format=pyaudio.paInt16,
                channels=1,
                rate=24000,
                output=True)

text = "Today is a wonderful day to build something people love!"

for chunk in client.audio.tts.http.stream(
    text,
    model="qwen3-tts-flash",
    voice="Cherry",
    language_type="English",  # 正しい発音と自然なイントネーションを得るため、テキストの言語と一致させることを推奨します。
):
    if chunk.audio:
        # 音声データを直接再生します(chunk.audio にはデコード済みの音声データ (bytes) が含まれます)
        stream.write(chunk.audio)
    if chunk.is_final:
        print(f"finish at: {chunk.expires_at}")
time.sleep(0.8)
# リソースをクリーンアップ
stream.stop_stream()
stream.close()
p.terminate()

Java

Gson 依存関係をインポートする必要があります。Maven または Gradle を使用して追加します。

Maven

pom.xml に以下を追加します。

<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.13.1</version>
</dependency>

Gradle

build.gradle に以下を追加します。

// https://mvnrepository.com/artifact/com.google.code.gson/gson
implementation("com.google.code.gson:gson:2.13.1")
// 最新バージョンの DashScope SDK をインストールしてください。
import com.alibaba.dashscope.aigc.multimodalconversation.AudioParameters;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;
import io.reactivex.Flowable;
import javax.sound.sampled.*;
import java.util.Base64;

public class Main {
    private static final String MODEL = "qwen3-tts-flash";
    public static void streamCall() throws ApiException, NoApiKeyException, UploadFileException {
        MultiModalConversation conv = new MultiModalConversation();
        MultiModalConversationParam param = MultiModalConversationParam.builder()
                // シンガポールおよび北京リージョンの API キーは異なります。API キーの取得: https://www.alibabacloud.com/help/zh/model-studio/get-api-key
                // 環境変数を構成していない場合は、次の行を Model Studio API キーに置き換えます: .apiKey("sk-xxx")
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                .model(MODEL)
                .text("Today is a wonderful day to build something people love!")
                .voice(AudioParameters.Voice.CHERRY)
                .languageType("English") // 正しい発音と自然なイントネーションを得るため、テキストの言語と一致させることを推奨します。
                .build();
        Flowable<MultiModalConversationResult> result = conv.streamCall(param);
        result.blockingForEach(r -> {
            try {
                // 1. Base64 エンコードされた音声データを取得
                String base64Data = r.getOutput().getAudio().getData();
                byte[] audioBytes = Base64.getDecoder().decode(base64Data);

                // 2. 音声フォーマットを構成 (API から返される音声フォーマットに合わせて調整)
                AudioFormat format = new AudioFormat(
                        AudioFormat.Encoding.PCM_SIGNED,
                        24000, // サンプルレート (API から返されるフォーマットと一致させる必要があります)
                        16,    // ビット深度
                        1,     // チャンネル数
                        2,     // フレームサイズ (バイト単位)
                        24000, // フレームレート (サンプルレートと一致させる必要があります)
                        false  // ビッグエンディアン
                );

                // 3. 音声データをリアルタイムで再生
                DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);
                try (SourceDataLine line = (SourceDataLine) AudioSystem.getLine(info)) {
                    if (line != null) {
                        line.open(format);
                        line.start();
                        line.write(audioBytes, 0, audioBytes.length);
                        line.drain();
                    }
                }
            } catch (LineUnavailableException e) {
                e.printStackTrace();
            }
        });
    }
    public static void main(String[] args) {
        // 以下はシンガポールリージョンの構成です。
        Constants.baseHttpApiUrl = "https://dashscope-intl.aliyuncs.com/api/v1";
        try {
            streamCall();
        } catch (ApiException | NoApiKeyException | UploadFileException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}