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

Alibaba Cloud Model Studio:音声合成 - Qwen

最終更新日:Apr 01, 2026

Qwen 音声合成は、自然なイントネーションと表現豊かな配信により、人間らしい音声を提供します。中国語の方言を含む複数の言語および方言をサポートし、単一の音声で多言語出力が可能です。システムは自動的にトーンを調整し、複雑なテキストもスムーズに処理します。

主要機能

  • ストリーミング出力をサポートし、リアルタイムでの音声合成および再生が可能です。

  • 中国語の方言を含む複数の言語および方言をサポートします。

  • さまざまなユースケースに対応する幅広い音声を提供します。

  • 音声カスタマイズ方法として、音声クローニングおよび音声デザインの 2 種類を提供します。

  • 命令による制御をサポートしており、自然言語による命令を使用して音声の表現力を調整できます。

適用範囲

利用可能なモデル:

国際

国際デプロイモードでは、エンドポイントおよびデータストレージはシンガポールリージョンに配置されます。モデル推論のコンピューティングリソースは中国本土を除く世界中で動的にスケジュールされます。

以下のモデルを呼び出す際は、シンガポールリージョン用のAPI キーを選択してください。

  • Qwen3-TTS-Instruct-Flash: qwen3-tts-instruct-flash (安定版。現在は qwen3-tts-instruct-flash-2026-01-26 と同等)、qwen3-tts-instruct-flash-2026-01-26 (最新スナップショット版)

  • Qwen3-TTS-VD: qwen3-tts-vd-2026-01-26 (最新スナップショット版)

  • Qwen3-TTS-VC: qwen3-tts-vc-2026-01-22 (最新スナップショット版)

  • Qwen3-TTS-Flash: qwen3-tts-flash (安定版。現在は qwen3-tts-flash-2025-11-27 と同等)、qwen3-tts-flash-2025-11-27、qwen3-tts-flash-2025-09-18

中国本土

中国本土デプロイモードでは、エンドポイントおよびデータストレージは中国 (北京) リージョンに配置されます。モデル推論のコンピューティングリソースは中国本土内に限定されます。

以下のモデルを呼び出す際は、中国 (北京) リージョン用のAPI キーを選択してください。

  • Qwen3-TTS-Instruct-Flash: qwen3-tts-instruct-flash (安定版。現在は qwen3-tts-instruct-flash-2026-01-26 と同等)、qwen3-tts-instruct-flash-2026-01-26 (最新スナップショット版)

  • Qwen3-TTS-VD: qwen3-tts-vd-2026-01-26 (最新スナップショット版)

  • Qwen3-TTS-VC: qwen3-tts-vc-2026-01-22 (最新スナップショット版)

  • Qwen3-TTS-Flash: qwen3-tts-flash (安定版。現在は qwen3-tts-flash-2025-11-27 と同等)、qwen3-tts-flash-2025-11-27、qwen3-tts-flash-2025-09-18

  • Qwen-TTS: qwen-tts (安定版。現在は qwen-tts-2025-04-10 と同等)、qwen-tts-latest (最新版。現在は qwen-tts-2025-05-22 と同等)、qwen-tts-2025-05-22 (スナップショット版)、qwen-tts-2025-04-10 (スナップショット版)

モデル一覧をご参照ください。

モデルの選択

シナリオ

推奨モデル

理由

ブランディング、専用音声、または拡張システム音声のカスタム音声 (テキスト記述から)

qwen3-tts-vd-2026-01-26

音声デザインをサポートしています。音声サンプルなしでテキスト記述からカスタム音声を作成できます。ゼロからブランド音声を設計するのに最適です。

ブランディング、専用音声、または拡張システム音声のカスタム音声 (音声サンプルから)

qwen3-tts-vc-2026-01-22

音声クローニングをサポートしています。音声サンプルから音声をクローンし、高忠実度かつ一貫性のある人間らしいブランドボイスプリントを作成できます。

感情的なコンテンツ制作 (オーディオブック、ラジオドラマ、ゲーム/アニメーションの吹き替え)

qwen3-tts-instruct-flash

命令による制御をサポートしています。自然言語による記述を使用して、ピッチ、速度、感情、キャラクターの個性を制御できます。豊かな表現力とキャラクター作成が必要なシナリオに最適です。

モバイルナビゲーションまたは通知アナウンス

qwen3-tts-flash

シンプルで透明な文字単位の課金です。短いテキストの高頻度呼び出しに最適です。

オンライン教育教材の吹き替え

qwen3-tts-flash

複数の言語および方言をサポートし、地域別の教育ニーズに対応できます。

オーディオブックのバッチ制作

qwen3-tts-flash

コスト効率に優れています。幅広い音声の選択肢により、コンテンツの表現が豊かになります。

モデル機能比較をご参照ください。

はじめに

事前準備

  • API キーを構成し、環境変数としてエクスポートします。

  • DashScope SDK を使用してサービスを呼び出す場合、最新の SDK バージョンをインストールします。DashScope Java SDK はバージョン 2.21.9 以降、DashScope Python SDK はバージョン 1.24.6 以降である必要があります。

    説明

    DashScope Python SDK では、SpeechSynthesizer インターフェイスが MultiModalConversation に統合されています。インターフェイス名を置き換えてください。他のすべてのパラメーターは互換性があります。

システム音声を使用した音声合成

これらの例では、システム音声を使用して音声を合成します。

非ストリーミング出力

返された url から合成された音声を取得します。この URL の有効期限は 24 時間です。

Python

import os
import dashscope

# これはシンガポールリージョンの URL です。中国 (北京) リージョンのモデルを使用する場合は、URL を次のように変更してください: https://dashscope.aliyuncs.com/api/v1
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'

text = "今日は、人々が愛する何かを構築する素晴らしい日です!"
# SpeechSynthesizer インターフェイスの使用方法: dashscope.audio.qwen_tts.SpeechSynthesizer.call(...)
response = dashscope.MultiModalConversation.call(
    # 命令による制御機能を使用する場合は、モデルを qwen3-tts-instruct-flash に変更してください。
    model="qwen3-tts-flash",
    # シンガポールおよび中国 (北京) リージョンの API キーは異なります。API キーの取得: https://www.alibabacloud.com/help/ja/model-studio/get-api-key
    # 環境変数を構成していない場合は、次の行を Model Studio API キーに置き換えてください: api_key = "sk-xxx"
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    text=text,
    voice="Cherry",
    language_type="English", # 正しい発音と自然なイントネーションのため、言語タイプをテキストの言語に合わせてください。
    # 命令による制御機能を使用する場合は、次の行のコメントを解除し、モデルを qwen3-tts-instruct-flash に変更してください。
    # instructions='ファッション商品の紹介に適した、やや速めのスピードと明確な上がり調子で話してください。',
    # optimize_instructions=True,
    stream=False
)
print(response)

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.protocol.Protocol;
import com.alibaba.dashscope.utils.Constants;

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

public class Main {
    // 命令による制御機能を使用する場合は、MODEL を qwen3-tts-instruct-flash に変更してください。
    private static final String MODEL = "qwen3-tts-flash";
    public static void call() throws ApiException, NoApiKeyException, UploadFileException {
        MultiModalConversation conv = new MultiModalConversation();
        MultiModalConversationParam param = MultiModalConversationParam.builder()
                // シンガポールおよび中国 (北京) リージョンの API キーは異なります。API キーの取得: https://www.alibabacloud.com/help/ja/model-studio/get-api-key
                // 環境変数を構成していない場合は、次の行を Model Studio API キーに置き換えてください: .apiKey("sk-xxx")
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                .model(MODEL)
                .text("今日は、人々が愛する何かを構築する素晴らしい日です!")
                .voice(AudioParameters.Voice.CHERRY)
                .languageType("English") // 正しい発音と自然なイントネーションのため、言語タイプをテキストの言語に合わせてください。
                // 命令による制御機能を使用する場合は、次の行のコメントを解除し、モデルを qwen3-tts-instruct-flash に変更してください。
                // .parameter("instructions","ファッション商品の紹介に適した、やや速めのスピードと明確な上がり調子で話してください。")
                // .parameter("optimize_instructions",true)
                .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) {
        // これはシンガポールリージョンの URL です。中国 (北京) リージョンのモデルを使用する場合は、URL を次のように変更してください: https://dashscope.aliyuncs.com/api/v1
        Constants.baseHttpApiUrl = "https://dashscope-intl.aliyuncs.com/api/v1";
        try {
            call();
        } catch (ApiException | NoApiKeyException | UploadFileException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}

cURL

# ======= 重要 =======
# これはシンガポールリージョンの URL です。中国 (北京) リージョンのモデルを使用する場合は、URL を次のように変更してください: https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
# シンガポールおよび中国 (北京) リージョンの API キーは異なります。API キーの取得: https://www.alibabacloud.com/help/ja/model-studio/get-api-key
# === 実行前にこのコメントを削除してください ===

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": "今日は、人々が愛する何かを構築する素晴らしい日です!",
        "voice": "Cherry",
        "language_type": "English"
    }
}'

ストリーミング出力

音声データは Base64 形式でストリーミングされます。最終データパケットには、完全な音声ファイルの URL が含まれます。

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
import base64
import numpy as np

# これはシンガポールリージョンの URL です。中国 (北京) リージョンのモデルを使用する場合は、URL を次のように変更してください: https://dashscope.aliyuncs.com/api/v1
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'

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


text = "今日は、人々が愛する何かを構築する素晴らしい日です!"
response = dashscope.MultiModalConversation.call(
    # シンガポールおよび中国 (北京) リージョンの API キーは異なります。API キーの取得: https://www.alibabacloud.com/help/ja/model-studio/get-api-key
    # 環境変数を構成していない場合は、次の行を Model Studio API キーに置き換えてください: api_key = "sk-xxx"
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # 命令による制御機能を使用する場合は、モデルを qwen3-tts-instruct-flash に変更してください。
    model="qwen3-tts-flash",
    text=text,
    voice="Cherry",
    language_type="English", # 正しい発音と自然なイントネーションのため、言語タイプをテキストの言語に合わせてください。
    # 命令による制御機能を使用する場合は、次の行のコメントを解除し、モデルを qwen3-tts-instruct-flash に変更してください。
    # instructions='ファッション商品の紹介に適した、やや速めのスピードと明確な上がり調子で話してください。',
    # optimize_instructions=True,
    stream=True
)

for chunk in response:
    if chunk.output is not None:
      audio = chunk.output.audio
      if audio.data is not None:
          wav_bytes = base64.b64decode(audio.data)
          audio_np = np.frombuffer(wav_bytes, dtype=np.int16)
          # 音声データを直接再生します。
          stream.write(audio_np.tobytes())
      if chunk.output.finish_reason == "stop":
          print("finish at: {} ", chunk.output.audio.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.protocol.Protocol;
import com.alibaba.dashscope.utils.Constants;
import io.reactivex.Flowable;
import javax.sound.sampled.*;
import java.util.Base64;

public class Main {
    // 命令による制御機能を使用する場合は、MODEL を qwen3-tts-instruct-flash に変更してください。
    private static final String MODEL = "qwen3-tts-flash";
    public static void streamCall() throws ApiException, NoApiKeyException, UploadFileException {
        MultiModalConversation conv = new MultiModalConversation();
        MultiModalConversationParam param = MultiModalConversationParam.builder()
                // シンガポールおよび中国 (北京) リージョンの API キーは異なります。API キーの取得: https://www.alibabacloud.com/help/ja/model-studio/get-api-key
                // 環境変数を構成していない場合は、次の行を Model Studio API キーに置き換えてください: .apiKey("sk-xxx")
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                .model(MODEL)
                .text("今日は、人々が愛する何かを構築する素晴らしい日です!")
                .voice(AudioParameters.Voice.CHERRY)
                .languageType("English") // 正しい発音と自然なイントネーションのため、言語タイプをテキストの言語に合わせてください。
                // 命令による制御機能を使用する場合は、次の行のコメントを解除し、モデルを qwen3-tts-instruct-flash に変更してください。
                // .parameter("instructions","ファッション商品の紹介に適した、やや速めのスピードと明確な上がり調子で話してください。")
                // .parameter("optimize_instructions",true)
                .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,     // フレームサイズ (ビット深度/8)
                        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) {
        // これはシンガポールリージョンの URL です。中国 (北京) リージョンのモデルを使用する場合は、URL を次のように変更してください: https://dashscope.aliyuncs.com/api/v1
        Constants.baseHttpApiUrl = "https://dashscope-intl.aliyuncs.com/api/v1";
        try {
            streamCall();
        } catch (ApiException | NoApiKeyException | UploadFileException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}

cURL

# ======= 重要 =======
# これはシンガポールリージョンの URL です。中国 (北京) リージョンのモデルを使用する場合は、URL を次のように変更してください: https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
# シンガポールおよび中国 (北京) リージョンの API キーは異なります。API キーの取得: https://www.alibabacloud.com/help/ja/model-studio/get-api-key
# === 実行前にこのコメントを削除してください ===

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": "今日は、人々が愛する何かを構築する素晴らしい日です!",
        "voice": "Cherry",
        "language_type": "Chinese"
    }
}'

クローン音声を使用した音声合成

音声クローニングではプレビュー音声を提供しません。結果を評価するには、クローン音声を音声合成に適用してください。

この例では、クローン音声を使用して音声合成を行い、元の音声に近い出力を生成します。DashScope SDK の非ストリーミング出力サンプルに基づいており、voice パラメーターをクローン音声に設定しています。

  • 重要な原則: 音声クローニングに使用するモデル (target_model) は、音声合成に使用するモデル (model) と一致させる必要があります。一致しない場合、合成は失敗します。

  • この例では、音声クローニングにローカル音声ファイル voice.mp3 を使用しています。コードを実行する際は、ファイルパスを自分のものに置き換えてください。

Python

import os
import requests
import base64
import pathlib
import dashscope

# ======= 定数設定 =======
DEFAULT_TARGET_MODEL = "qwen3-tts-vc-2026-01-22"  # 音声クローニングと音声合成で同じモデルを使用します
DEFAULT_PREFERRED_NAME = "guanyu"
DEFAULT_AUDIO_MIME_TYPE = "audio/mpeg"
VOICE_FILE_PATH = "voice.mp3"  # 音声クローニングに使用するローカル音声ファイルの相対パス


def create_voice(file_path: str,
                 target_model: str = DEFAULT_TARGET_MODEL,
                 preferred_name: str = DEFAULT_PREFERRED_NAME,
                 audio_mime_type: str = DEFAULT_AUDIO_MIME_TYPE) -> str:
    """
    音声を作成し、音声パラメーターを返します。
    """
    # 環境変数を構成していない場合は、次の行を置き換えてください: api_key = "sk-xxx"
    api_key = os.getenv("DASHSCOPE_API_KEY")

    file_path_obj = pathlib.Path(file_path)
    if not file_path_obj.exists():
        raise FileNotFoundError(f"音声ファイルが存在しません: {file_path}")

    base64_str = base64.b64encode(file_path_obj.read_bytes()).decode()
    data_uri = f"data:{audio_mime_type};base64,{base64_str}"

    # シンガポールリージョンのエンドポイント。北京リージョンの場合は次を使用: https://dashscope.aliyuncs.com/api/v1/services/audio/tts/customization
    url = "https://dashscope-intl.aliyuncs.com/api/v1/services/audio/tts/customization"
    payload = {
        "model": "qwen-voice-enrollment", # この値は変更しないでください
        "input": {
            "action": "create",
            "target_model": target_model,
            "preferred_name": preferred_name,
            "audio": {"data": data_uri}
        }
    }
    headers = {
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json"
    }

    resp = requests.post(url, json=payload, headers=headers)
    if resp.status_code != 200:
        raise RuntimeError(f"音声の作成に失敗しました: {resp.status_code}, {resp.text}")

    try:
        return resp.json()["output"]["voice"]
    except (KeyError, ValueError) as e:
        raise RuntimeError(f"音声応答の解析に失敗しました: {e}")


if __name__ == '__main__':
    # シンガポールリージョンのエンドポイント。北京リージョンの場合は次を使用: https://dashscope.aliyuncs.com/api/v1
    dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'

    text = "今日の天気はどうですか?"
    # SpeechSynthesizer インターフェイスの使用方法: dashscope.audio.qwen_tts.SpeechSynthesizer.call(...)
    response = dashscope.MultiModalConversation.call(
        model=DEFAULT_TARGET_MODEL,
        # 環境変数を構成していない場合は、次の行を置き換えてください: api_key = "sk-xxx"
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        text=text,
        voice=create_voice(VOICE_FILE_PATH), # 音声パラメーターをクローニングによって生成されたカスタム音声に置き換えます
        stream=False
    )
    print(response)

Java

プロジェクトに Gson 依存関係を追加します。

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")
重要

音声デザインによって生成されたカスタム音声を音声合成に使用するには、音声を以下のように設定します。

MultiModalConversationParam param = MultiModalConversationParam.builder()
                .parameter("voice", "your_voice") // 音声パラメーターをクローニングによって生成されたカスタム音声に置き換えます
                .build();
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.utils.Constants;
import com.google.gson.Gson;
import com.google.gson.JsonObject;

import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.file.*;
import java.nio.charset.StandardCharsets;
import java.util.Base64;

public class Main {
    // ===== 定数定義 =====
    // 音声クローニングと音声合成で同じモデルを使用します
    private static final String TARGET_MODEL = "qwen3-tts-vc-2026-01-22";
    private static final String PREFERRED_NAME = "guanyu";
    // 音声クローニングに使用するローカル音声ファイルの相対パス
    private static final String AUDIO_FILE = "voice.mp3";
    private static final String AUDIO_MIME_TYPE = "audio/mpeg";

    // データ URI を生成します
    public static String toDataUrl(String filePath) throws IOException {
        byte[] bytes = Files.readAllBytes(Paths.get(filePath));
        String encoded = Base64.getEncoder().encodeToString(bytes);
        return "data:" + AUDIO_MIME_TYPE + ";base64," + encoded;
    }

    // 音声作成 API を呼び出します
    public static String createVoice() throws Exception {
        // シンガポールおよび北京リージョンの API キーは異なります。API キーの取得: https://www.alibabacloud.com/help/ja/model-studio/get-api-key
        // 環境変数を構成していない場合は、次の行を置き換えてください: String apiKey = "sk-xxx"
        String apiKey = System.getenv("DASHSCOPE_API_KEY");

        String jsonPayload =
                "{"
                        + "\"model\": \"qwen-voice-enrollment\"," // この値は変更しないでください
                        + "\"input\": {"
                        +     "\"action\": \"create\","
                        +     "\"target_model\": \"" + TARGET_MODEL + "\","
                        +     "\"preferred_name\": \"" + PREFERRED_NAME + "\","
                        +     "\"audio\": {"
                        +         "\"data\": \"" + toDataUrl(AUDIO_FILE) + "\""
                        +     "}"
                        + "}"
                        + "}";

        // シンガポールリージョンのエンドポイント。北京リージョンの場合は次を使用: https://dashscope.aliyuncs.com/api/v1/services/audio/tts/customization
        String url = "https://dashscope-intl.aliyuncs.com/api/v1/services/audio/tts/customization";
        HttpURLConnection con = (HttpURLConnection) new URL(url).openConnection();
        con.setRequestMethod("POST");
        con.setRequestProperty("Authorization", "Bearer " + apiKey);
        con.setRequestProperty("Content-Type", "application/json");
        con.setDoOutput(true);

        try (OutputStream os = con.getOutputStream()) {
            os.write(jsonPayload.getBytes(StandardCharsets.UTF_8));
        }

        int status = con.getResponseCode();
        System.out.println("HTTP ステータスコード: " + status);

        try (BufferedReader br = new BufferedReader(
                new InputStreamReader(status >= 200 && status < 300 ? con.getInputStream() : con.getErrorStream(),
                        StandardCharsets.UTF_8))) {
            StringBuilder response = new StringBuilder();
            String line;
            while ((line = br.readLine()) != null) {
                response.append(line);
            }
            System.out.println("応答内容: " + response);

            if (status == 200) {
                JsonObject jsonObj = new Gson().fromJson(response.toString(), JsonObject.class);
                return jsonObj.getAsJsonObject("output").get("voice").getAsString();
            }
            throw new IOException("音声の作成に失敗しました: " + status + " - " + response);
        }
    }

    public static void call() throws Exception {
        MultiModalConversation conv = new MultiModalConversation();
        MultiModalConversationParam param = MultiModalConversationParam.builder()
                // シンガポールおよび北京リージョンの API キーは異なります。API キーの取得: https://www.alibabacloud.com/help/ja/model-studio/get-api-key
                // 環境変数を構成していない場合は、次の行を置き換えてください: .apikey("sk-xxx")
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                .model(TARGET_MODEL)
                .text("今日の天気はどうですか?")
                .parameter("voice", createVoice()) // 音声パラメーターをクローニングによって生成されたカスタム音声に置き換えます
                .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) {
        try {
            // シンガポールリージョンのエンドポイント。北京リージョンの場合は次を使用: https://dashscope.aliyuncs.com/api/v1
            Constants.baseHttpApiUrl = "https://dashscope-intl.aliyuncs.com/api/v1";
            call();
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}

音声デザインの音色を使用した音声合成

音声デザイン機能はプレビュー音声を返します。合成に使用する前にプレビューを聴き、期待に応えていることを確認してください。これにより、呼び出しコストを削減できます。

  1. カスタム音声を作成し、プレビューします。満足できれば続行し、そうでなければ再作成します。

    Python

    import requests
    import base64
    import os
    
    def create_voice_and_play():
        # シンガポールおよび北京リージョンの API キーは異なります。API キーの取得: https://www.alibabacloud.com/help/ja/model-studio/get-api-key
        # 環境変数が設定されていない場合は、次の行を Model Studio API キーに置き換えてください: api_key = "sk-xxx"
        api_key = os.getenv("DASHSCOPE_API_KEY")
        
        if not api_key:
            print("エラー: DASHSCOPE_API_KEY 環境変数が見つかりません。まず API キーを設定してください。")
            return None, None, None
        
        # リクエストデータを準備します
        headers = {
            "Authorization": f"Bearer {api_key}",
            "Content-Type": "application/json"
        }
        
        data = {
            "model": "qwen-voice-design",
            "input": {
                "action": "create",
                "target_model": "qwen3-tts-vd-2026-01-26",
                "voice_prompt": "A composed middle-aged male announcer with a deep, rich and magnetic voice, a steady speaking speed and clear articulation, is suitable for news broadcasting or documentary commentary.",
                "preview_text": "Dear listeners, hello everyone. Welcome to the evening news.",
                "preferred_name": "announcer",
                "language": "en"
            },
            "parameters": {
                "sample_rate": 24000,
                "response_format": "wav"
            }
        }
        
        # 以下はシンガポールリージョンの URL です。北京リージョンのモデルを使用する場合は、URL を次のように置き換えてください: https://dashscope.aliyuncs.com/api/v1/services/audio/tts/customization
        url = "https://dashscope-intl.aliyuncs.com/api/v1/services/audio/tts/customization"
        
        try:
            # リクエストを送信します
            response = requests.post(
                url,
                headers=headers,
                json=data,
                timeout=60  # タイムアウト設定を追加
            )
            
            if response.status_code == 200:
                result = response.json()
                
                # 音声名を取得します
                voice_name = result["output"]["voice"]
                print(f"音声名: {voice_name}")
                
                # プレビュー音声データを取得します
                base64_audio = result["output"]["preview_audio"]["data"]
                
                # Base64 音声データをデコードします
                audio_bytes = base64.b64decode(base64_audio)
                
                # 音声ファイルをローカルに保存します
                filename = f"{voice_name}_preview.wav"
                
                # 音声データをローカルファイルに書き込みます
                with open(filename, 'wb') as f:
                    f.write(audio_bytes)
                
                print(f"音声をローカルファイルに保存しました: {filename}")
                print(f"ファイルパス: {os.path.abspath(filename)}")
                
                return voice_name, audio_bytes, filename
            else:
                print(f"リクエストがステータスコード {response.status_code} で失敗しました")
                print(f"応答内容: {response.text}")
                return None, None, None
                
        except requests.exceptions.RequestException as e:
            print(f"ネットワークリクエストエラーが発生しました: {e}")
            return None, None, None
        except KeyError as e:
            print(f"応答データ形式エラー、必要なフィールドが不足しています: {e}")
            print(f"応答内容: {response.text if 'response' in locals() else '応答なし'}")
            return None, None, None
        except Exception as e:
            print(f"不明なエラーが発生しました: {e}")
            return None, None, None
    
    if __name__ == "__main__":
        print("音声の作成を開始します...")
        voice_name, audio_data, saved_filename = create_voice_and_play()
        
        if voice_name:
            print(f"\n音声 '{voice_name}' の作成に成功しました")
            print(f"音声ファイルは '{saved_filename}' として保存されました")
            print(f"ファイルサイズ: {os.path.getsize(saved_filename)} バイト")
        else:
            print("\n音声の作成に失敗しました")

    Java

    プロジェクトに Gson 依存関係を追加します。

    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")
    重要

    音声デザインによって生成されたカスタム音声を使用して音声合成を行う場合、次のように音声を構成します。

    MultiModalConversationParam param = MultiModalConversationParam.builder()
                    .parameter("voice", "your_voice") // 音声パラメーターを音声デザインによって生成されたカスタム音声に置き換えます
                    .build();
    import com.google.gson.JsonObject;
    import com.google.gson.JsonParser;
    import java.io.*;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.util.Base64;
    
    public class Main {
        public static void main(String[] args) {
            Main example = new Main();
            example.createVoice();
        }
    
        public void createVoice() {
            // シンガポールおよび北京リージョンの API キーは異なります。API キーの取得: https://www.alibabacloud.com/help/ja/model-studio/get-api-key
            // 環境変数が設定されていない場合は、次の行を Model Studio API キーに置き換えてください: String apiKey = "sk-xxx"
            String apiKey = System.getenv("DASHSCOPE_API_KEY");
    
            // JSON リクエストボディ文字列を作成します
            String jsonBody = "{\n" +
                    "    \"model\": \"qwen-voice-design\",\n" +
                    "    \"input\": {\n" +
                    "        \"action\": \"create\",\n" +
                    "        \"target_model\": \"qwen3-tts-vd-2026-01-26\",\n" +
                    "        \"voice_prompt\": \"A composed middle-aged male announcer with a deep, rich and magnetic voice, a steady speaking speed and clear articulation, is suitable for news broadcasting or documentary commentary.\",\n" +
                    "        \"preview_text\": \"Dear listeners, hello everyone. Welcome to the evening news.\",\n" +
                    "        \"preferred_name\": \"announcer\",\n" +
                    "        \"language\": \"en\"\n" +
                    "    },\n" +
                    "    \"parameters\": {\n" +
                    "        \"sample_rate\": 24000,\n" +
                    "        \"response_format\": \"wav\"\n" +
                    "    }\n" +
                    "}";
    
            HttpURLConnection connection = null;
            try {
                // 以下はシンガポールリージョンの URL です。北京リージョンのモデルを使用する場合は、URL を次のように置き換えてください: https://dashscope.aliyuncs.com/api/v1/services/audio/tts/customization
                URL url = new URL("https://dashscope-intl.aliyuncs.com/api/v1/services/audio/tts/customization");
                connection = (HttpURLConnection) url.openConnection();
    
                // リクエストメソッドとヘッダーを設定します
                connection.setRequestMethod("POST");
                connection.setRequestProperty("Authorization", "Bearer " + apiKey);
                connection.setRequestProperty("Content-Type", "application/json");
                connection.setDoOutput(true);
                connection.setDoInput(true);
    
                // リクエストボディを送信します
                try (OutputStream os = connection.getOutputStream()) {
                    byte[] input = jsonBody.getBytes("UTF-8");
                    os.write(input, 0, input.length);
                    os.flush();
                }
    
                // 応答を取得します
                int responseCode = connection.getResponseCode();
                if (responseCode == HttpURLConnection.HTTP_OK) {
                    // 応答内容を読み取ります
                    StringBuilder response = new StringBuilder();
                    try (BufferedReader br = new BufferedReader(
                            new InputStreamReader(connection.getInputStream(), "UTF-8"))) {
                        String responseLine;
                        while ((responseLine = br.readLine()) != null) {
                            response.append(responseLine.trim());
                        }
                    }
    
                    // JSON 応答を解析します
                    JsonObject jsonResponse = JsonParser.parseString(response.toString()).getAsJsonObject();
                    JsonObject outputObj = jsonResponse.getAsJsonObject("output");
                    JsonObject previewAudioObj = outputObj.getAsJsonObject("preview_audio");
    
                    // 音声名を取得します
                    String voiceName = outputObj.get("voice").getAsString();
                    System.out.println("音声名: " + voiceName);
    
                    // Base64 エンコードされた音声データを取得します
                    String base64Audio = previewAudioObj.get("data").getAsString();
    
                    // Base64 音声データをデコードします
                    byte[] audioBytes = Base64.getDecoder().decode(base64Audio);
    
                    // 音声をローカルファイルに保存します
                    String filename = voiceName + "_preview.wav";
                    saveAudioToFile(audioBytes, filename);
    
                    System.out.println("音声をローカルファイルに保存しました: " + filename);
    
                } else {
                    // エラー応答を読み取ります
                    StringBuilder errorResponse = new StringBuilder();
                    try (BufferedReader br = new BufferedReader(
                            new InputStreamReader(connection.getErrorStream(), "UTF-8"))) {
                        String responseLine;
                        while ((responseLine = br.readLine()) != null) {
                            errorResponse.append(responseLine.trim());
                        }
                    }
    
                    System.out.println("リクエストがステータスコード " + responseCode + " で失敗しました");
                    System.out.println("エラー応答: " + errorResponse.toString());
                }
    
            } catch (Exception e) {
                System.err.println("リクエスト中にエラーが発生しました: " + e.getMessage());
                e.printStackTrace();
            } finally {
                if (connection != null) {
                    connection.disconnect();
                }
            }
        }
    
        private void saveAudioToFile(byte[] audioBytes, String filename) {
            try {
                File file = new File(filename);
                try (FileOutputStream fos = new FileOutputStream(file)) {
                    fos.write(audioBytes);
                }
                System.out.println("音声を次の場所に保存しました: " + file.getAbsolutePath());
            } catch (IOException e) {
                System.err.println("音声ファイルの保存中にエラーが発生しました: " + e.getMessage());
                e.printStackTrace();
            }
        }
    }
  2. 前のステップで作成したカスタム音声を使用して、非ストリーミング音声合成を行います。

    この例は、DashScope SDK のシステム音声向け「非ストリーミング出力」サンプルコードに従っています。voice パラメーターを音声デザインによって生成されたカスタム音声に置き換えています。単方向ストリーミング合成については、「音声合成 - Qwen」をご参照ください。

    重要な原則: 音声デザインに使用するモデル (target_model) は、後続の音声合成に使用するモデル (model) と一致させる必要があります。一致しない場合、合成は失敗します。

    Python

    import os
    import dashscope
    
    
    if __name__ == '__main__':
        # 以下はシンガポールリージョンの URL です。北京リージョンのモデルを使用する場合は、URL を次のように置き換えてください: https://dashscope.aliyuncs.com/api/v1
        dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
    
        text = "今日の天気はどうですか?"
        # SpeechSynthesizer の使用方法: dashscope.audio.qwen_tts.SpeechSynthesizer.call(...)
        response = dashscope.MultiModalConversation.call(
            model="qwen3-tts-vd-2026-01-26",
            # シンガポールおよび北京リージョンの API キーは異なります。API キーの取得: https://www.alibabacloud.com/help/ja/model-studio/get-api-key
            # 環境変数が設定されていない場合は、次の行を Model Studio API キーに置き換えてください: api_key = "sk-xxx"
            api_key=os.getenv("DASHSCOPE_API_KEY"),
            text=text,
            voice="myvoice", # 音声パラメーターを音声デザインによって生成されたカスタム音声に置き換えます
            stream=False
        )
        print(response)

    Java

    import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
    import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
    import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
    import com.alibaba.dashscope.exception.ApiException;
    import com.alibaba.dashscope.exception.NoApiKeyException;
    import com.alibaba.dashscope.exception.UploadFileException;
    
    import com.alibaba.dashscope.utils.Constants;
    import java.io.FileOutputStream;
    import java.io.InputStream;
    import java.net.URL;
    
    public class Main {
        private static final String MODEL = "qwen3-tts-vd-2026-01-26";
        public static void call() throws ApiException, NoApiKeyException, UploadFileException {
            MultiModalConversation conv = new MultiModalConversation();
            MultiModalConversationParam param = MultiModalConversationParam.builder()
                    // シンガポールおよび北京リージョンの API キーは異なります。API キーの取得: https://www.alibabacloud.com/help/ja/model-studio/get-api-key
                    // 環境変数が設定されていない場合は、次の行を Model Studio API キーに置き換えてください: .apiKey("sk-xxx")
                    .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                    .model(MODEL)
                    .text("今日は、人々が愛する何かを構築する素晴らしい日です!")
                    .parameter("voice", "myvoice") // 音声パラメーターを音声デザインによって生成されたカスタム音声に置き換えます
                    .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) {
            try {
                // 以下はシンガポールリージョンの URL です。北京リージョンのモデルを使用する場合は、URL を次のように置き換えてください: https://dashscope.aliyuncs.com/api/v1
                Constants.baseHttpApiUrl = "https://dashscope-intl.aliyuncs.com/api/v1";
                call();
            } catch (ApiException | NoApiKeyException | UploadFileException e) {
                System.out.println(e.getMessage());
            }
            System.exit(0);
        }
    }

命令コントロール

命令コントロールは、自然言語による記述を通じて、話し方の表現力を調整します。音声パラメーターを手動で調整することなく、ピッチ、スピード、感情、音色を調整できます。

サポート対象モデル: Qwen3-TTS-Instruct-Flash シリーズのみ。

使い方instructions パラメーターを設定します。例えば、「ファッション製品の紹介に適した、比較的速いスピードで、はっきりとした上昇イントネーションで話す」のように設定します。

サポート言語: 命令テキストは中国語と英語のみをサポートします。

長さ制限: 最大 1,600 トークン。

利用シーン

  • オーディオブックやラジオドラマの吹き替え

  • 広告・プロモーションビデオの吹き替え

  • ゲームキャラクターやアニメーションの吹き替え

  • 感情豊かなインテリジェント音声アシスタント

  • ドキュメンタリーやニュース放送

高品質な音声記述の作成方法:

  • 基本原則:

    1. 具体的、かつ曖昧でないこと: 「深い」、「はっきりした」、「速いペース」など、具体的な音声特性を表す言葉を使用します。「良い」や「普通」といった主観的で情報価値のない言葉は避けてください。

    2. 多次元的、かつ一次元的でないこと: 良い記述は、ピッチ、スピード、感情など、複数のディメンションを組み合わせたものです。「高音」だけのような一次元的な記述は、範囲が広すぎて特徴的な効果を生み出すことができません。

    3. 客観的、かつ主観的でないこと: 個人的な好みではなく、音そのものの物理的および知覚的な特性に焦点を当てます。例えば、「私のお気に入りの音」ではなく、「高音でエネルギッシュ」のように記述します。

    4. 独創的、かつ模倣的でないこと: 有名人や俳優など、特定の人物の模倣をリクエストするのではなく、音声の特性を記述します。このようなリクエストは著作権リスクを伴うため、サポートされていません。

    5. 簡潔、かつ冗長でないこと: すべての言葉に意味があることを確認します。「とても、とても良い声」のように、同義語を繰り返したり、無意味な強調表現を使用したりすることは避けてください。

  • ディメンションリファレンス: 複数のディメンションを組み合わせて、より豊かな表現を実現します。

    ディメンション

    記述例

    ピッチ

    高、中、低、高音、低音

    スピード

    速い、普通、遅い、速いペース、遅いペース

    感情

    明るい、穏やか、優しい、真面目、活発、落ち着いた、癒し系

    特徴

    磁気のある、はっきりした、かすれた、まろやか、甘い、深い、力強い

    用途

    ニュース放送、広告ナレーション、オーディオブック、アニメーションキャラクター、音声アシスタント、ドキュメンタリーナレーション

  • 例:

    • 標準的な放送スタイル: 明瞭で正確な発音、丸みのある発声。

    • 段階的な感情効果: 通常の会話から叫び声へと音量が急激に増加し、率直な性格で興奮しやすく、感情表現が豊か。

    • 特殊な感情状態: すすり泣くようなトーンにより、発音がやや不明瞭でかすれ、泣き声に顕著な緊張感が伴う。

    • 広告ナレーションスタイル: 高音、中程度のスピードで、エネルギーと魅力に満ちており、広告ナレーションに適している。

    • 優しく癒し系のスタイル: ゆっくりとしたペースで、優しく甘いピッチ、そして思いやりのある友人のような、癒し系の温かいトーン。

API リファレンス

音声合成 - Qwen API リファレンス

音声クローン - API リファレンス

音声デザイン - API リファレンス

モデル機能の比較

機能

Qwen3-TTS-Instruct-Flash

Qwen3-TTS-VD

Qwen3-TTS-VC

Qwen3-TTS-Flash

Qwen-TTS

対応言語

音声(voice)によって異なります:中国語(標準語)、英語、スペイン語、ロシア語、イタリア語、フランス語、韓国語、日本語、ドイツ語、ポルトガル語

中国語(標準語)、英語、スペイン語、ロシア語、イタリア語、フランス語、韓国語、日本語、ドイツ語、ポルトガル語

音声(voice)によって異なります:中国語(標準語、上海語、北京方言、四川方言、南京方言、陝西方言、閩南語、天津方言)、広東語、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

音声(voice)によって異なります:中国語(標準語、上海語、北京方言、四川方言)、英語

音声フォーマット

  • wav:非ストリーミング出力用

  • pcm:ストリーミング出力用(Base64 エンコード)

音声サンプルレート

24 kHz

ボイスクローン

対応していません

対応しています

対応していません

ボイスデザイン

いいえ

対応しています

いいえ

SSML

いいえ

LaTeX

いいえ

音量コントロール

対応しています

命令コントロール

対応していません

話速コントロール

対応しています

命令コントロールを介して調整可能です。命令コントロール

対応していません

ピッチコントロール

対応しています

命令コントロール

いいえ

ビットレートコントロール

いいえ

タイムスタンプ

いいえ

命令コントロール

対応しています

いいえ

ストリーミング入力

対応していません

ストリーミング出力

対応しています

レート制限

分あたりのリクエスト数(RPM):180

RPM:180

RPM:180

RPM はモデルによって異なります:

  • qwen3-tts-flash、qwen3-tts-flash-2025-11-27:180

  • qwen3-tts-flash-2025-09-18:10

RPM:10

分あたりのトークン数(TPM):入力および出力トークンを含む 100,000

接続方式

Java/Python SDK、WebSocket API

料金

国際:$0.115 / 10,000 文字

中国本土:$0.115 / 10,000 文字

国際:$0.115 / 10,000 文字

中国本土:$0.115 / 10,000 文字

国際:$0.115 / 10,000 文字

中国本土:$0.115 / 10,000 文字

国際:$0.1 / 10,000 文字

中国本土:$0.114682 / 10,000 文字

中国本土:

  • 入力コスト:$0.230 / 1,000 トークン

  • 出力コスト:$1.434 / 1,000 トークン

トークン換算:音声 1 秒 = 50 トークン。1 秒未満の音声は 50 トークンとしてカウントされます。

サポートされているシステム音声

サポートされている音声はモデルによって異なります。音声リストの 音声パラメーター 列にある対応する値に、voice リクエストパラメーターを設定してください。

voice パラメーター

詳細

サポート言語

サポートモデル

Cherry

音声名: Cherry

説明: 明るく、前向きで、フレンドリで、ナチュラルな若い女性(女性)

中国語 (標準語)、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Instruct-Flash: qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27、qwen3-tts-flash-2025-09-18

  • Qwen-TTS: qwen-tts、qwen-tts-2025-04-10、qwen-tts-latest、qwen-tts-2025-05-22

Serena

音声名: Serena

説明: 優しい若い女性 (女性)

中国語 (標準語)、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Instruct-Flash: qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27

  • Qwen-TTS: qwen-tts、qwen-tts-2025-04-10、qwen-tts-latest、qwen-tts-2025-05-22

Ethan

音声名: Ethan

説明: 少し北方なまりのある標準中国語。明るく、温かく、エネルギッシュで生き生きとした声 (男性)

中国語 (標準語)、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Instruct-Flash: qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27、qwen3-tts-flash-2025-09-18

  • Qwen-TTS: qwen-tts、qwen-tts-2025-04-10、qwen-tts-latest、qwen-tts-2025-05-22

Chelsie

音声名: Chelsie

説明:二次元の仮想ガールフレンド (女性)

中国語 (標準語)、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Instruct-Flash: qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27

  • Qwen-TTS: qwen-tts、qwen-tts-2025-04-10、qwen-tts-latest、qwen-tts-2025-05-22

Momo

音声名: Momo

説明: 遊び心があり、いたずら好きで、元気が出るような声 (女性)

中国語 (標準語)、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Instruct-Flash: qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27

Vivian

音声名: Vivian

[説明]: 自信に満ちた、かわいらしい、および少し気の強い(女性)

中国語 (標準語)、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Instruct-Flash: qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27

Moon

音声名: Moon

説明: 凛々しくハンサムな男性、 Yuebai (男性)

中国語 (標準語)、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Instruct-Flash: qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27

Maia

音声名: Maia

説明: 知性と優しさの融合 (女性向け)

中国語 (標準語)、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Instruct-Flash: qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27

Kai

音声名: Kai

説明: 耳に心地よいオーディオスパのような声 (男性)

中国語 (標準語)、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Instruct-Flash: qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27

Nofish

音声名: Nofish

説明: そり舌音が発音できないデザイナーの声 (男性)

中国語 (標準語)、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Instruct-Flash: qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27、qwen3-tts-flash-2025-09-18

Bella

音声名: Bella

説明: お酒を飲むが、酔ってもパンチを放つことはない少女(女性)

中国語 (標準語)、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Instruct-Flash: qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27

Jennifer

音声名: Jennifer

説明: 映画品質のプレミアムなアメリカ英語の女性音声 (女性)

中国語 (標準語)、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27、qwen3-tts-flash-2025-09-18

Ryan

音声名: Ryan

説明: リズム感にあふれ、ドラマチックな表現力が爆発し、本物らしさと緊張感のバランスが取れた声 (男性)

中国語 (標準語)、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27、qwen3-tts-flash-2025-09-18

Katerina

音声名: Katerina

説明: 豊かで記憶に残るリズムを持つ、成熟した女性の声 (女性)

中国語 (標準語)、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27、qwen3-tts-flash-2025-09-18

Aiden

音声名: Aiden

説明: 料理が得意なアメリカ英語を話す若い男性の声 (男性)

中国語 (標準語)、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27

Eldric Sage

音声名: Eldric Sage

説明: 松の木のように風雪に耐え、鏡のように明晰な、穏やかで賢明な年長者の声 (男性)

中国語 (標準語)、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Instruct-Flash: qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27

Mia

音声名: Mia

説明: 春の泉のように優しく、新雪のように素直な声 (女性)

中国語 (標準語)、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Instruct-Flash: qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27

Mochi

音声名: Mochi

説明: 子供のような無邪気さを残しつつも、知恵が光る、賢く機転の利く若者の声 (男性)

中国語 (標準語)、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Instruct-Flash: qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27

Bellona

音声名: Bellona

説明: キャラクターに命を吹き込む、パワフルでクリアな声。血が沸き立つほど心を揺さぶり、英雄的な壮大さと完璧な発音で、人間のあらゆる感情表現を捉えます。

中国語 (標準語)、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Instruct-Flash: qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27

Vincent

音声名: Vincent

説明: ユニークなハスキーでスモーキーな声。一言で軍隊や英雄物語を彷彿とさせます (男性)

中国語 (標準語)、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Instruct-Flash: qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27

Bunny

音声名: Bunny

説明: 「可愛さ」が溢れる少女 (女性)

中国語 (標準語)、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Instruct-Flash: qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27

Neil

音声名: Neil

説明: フラットなベースラインのイントネーションと、正確でクリアな発音。最もプロフェッショナルなニュースキャスターの声 (男性)

中国語 (標準語)、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Instruct-Flash: qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27

Elias

音声名: Elias

説明: 学術的な厳密さを保ちながら、ストーリーテリング技術を用いて複雑な知識を分かりやすい学習モジュールに変える声 (女性)

中国語 (標準語)、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Instruct-Flash: qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27、qwen3-tts-flash-2025-09-18

Arthur

音声名: Arthur

説明: 時間とタバコの煙に染まった、素朴で飾り気のない声。村の物語や珍しい話をゆっくりと語りかけます (男性)

中国語 (標準語)、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Instruct-Flash: qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27

Nini

音声名: Nini

説明: 甘い餅菓子のように、柔らかく甘えた声。「お兄ちゃん」という甘い呼びかけは、骨までとろけるようです (女性)

中国語 (標準語)、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Instruct-Flash: qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27

Seren

音声名: Seren

説明: より早く眠りにつけるよう助ける、優しく心地よい声。おやすみなさい、良い夢を (女性)

中国語 (標準語)、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Instruct-Flash: qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27

Pip

音声名: Pip

説明: 子供らしい好奇心に満ちた、遊び好きでいたずら好きな男の子の声。まるで、あの「しんちゃん」を彷彿とさせます (男性)

中国語 (標準語)、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Instruct-Flash: qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27

Stella

音声名: Stella

説明: 普段は甘ったるく、ぼんやりした少女の声ですが、「月に代わっておしおきよ!」と叫ぶと、揺るぎない愛と正義を瞬時に放ちます (女性)

中国語 (標準語)、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Instruct-Flash: qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27

Bodega

音声名: Bodega

説明: 情熱的なスペイン人男性

中国語 (標準語)、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27

Sonrisa

音声名: Sonisa

説明: 明るく、社交的なラテンアメリカ出身の女性(女性)

中国語 (標準語)、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27

Alek

音声名: Alek

説明: ロシアの魂のように冷たいが、ウールのコートの裏地のように温かい声 (男性)

中国語 (標準語)、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27

Dolce

音声名: Dolce

説明: おおらかなイタリア人男性 (男性)

中国語 (標準語)、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27

Sohee

音声名: Sohee

説明: 温かく、陽気で、感情表現豊かな韓国のお姉さんの声 (女性)

中国語 (標準語)、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27

Ono Anna

音声名: Ono Anna

説明: 快活で賢い幼馴染 (女性)

中国語 (標準語)、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27

Lenn

音声名: Lenn

説明: 心は理性的、細部は反抗的。スーツを着てポストパンクを聴くドイツの若者の声 (男性)

中国語 (標準語)、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27

Emilien

音声名: Emilien

説明: ロマンチックなフランスのお兄さんの声 (男性)

中国語 (標準語)、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27

Andre

音声名: Andre

説明: 魅力的で自然、かつ安定した男性の声 (男性)

中国語 (標準語)、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27

Radio Gol

音声名: Radio Gol

説明: サッカーの詩人、Radio Gol! 今日は私の名にかけてサッカーを実況します (男性)

中国語 (標準語)、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27

Jada

音声名: 上海 - Jada

説明: ペースが速く、エネルギッシュな上海のおばさんの声 (女性)

上海語、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27、qwen3-tts-flash-2025-09-18

  • Qwen-TTS: qwen-tts-latest、qwen-tts-2025-05-22

Dylan

音声名: 北京 - Dylan

説明: 北京の胡同 (フートン) 育ちの青年 (男性)

北京語、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27、qwen3-tts-flash-2025-09-18

  • Qwen-TTS: qwen-tts-latest、qwen-tts-2025-05-22

Li

音声名: 南京 - Li

説明: 落ち着いたヨガの先生(男性)

南京語、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27、qwen3-tts-flash-2025-09-18

Marcus

音声名: 陝西 - Marcus

説明: 広い顔、少ない言葉、誠実な心、深い声。本物の陝西の味わいです (男性)

陝西語、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27、qwen3-tts-flash-2025-09-18

Roy

音声名: 閩南 - Roy

説明: ユーモラスで、率直、活発な台湾の男性の声 (男性)

閩南語、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27、qwen3-tts-flash-2025-09-18

Peter

音声名: 天津 - Peter

説明: 天津スタイルの漫才、プロのツッコミ役 (男性)

天津語、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27、and qwen3-tts-flash-2025-09-18

Sunny

音声名: 四川 - Sunny

説明: 心を溶かすほど甘い四川省出身の女性 (女性)

四川語、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27、qwen3-tts-flash-2025-09-18

  • Qwen-TTS: qwen-tts-latest、qwen-tts-2025-05-22

Eric

音声名: 四川 - Eric

説明: 日常生活で目立つ、成都出身の四川人男性 (男性)

四川語、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27、qwen3-tts-flash-2025-09-18

Rocky

音声名: 広東 - Rocky

説明: ユーモラスで機知に富んだ阿強 (A Qiang) がライブチャットを提供します (男性)

広東語、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27、and qwen3-tts-flash-2025-09-18

Kiki

音声名: 広東 - Kiki

説明: 甘い性格の香港人の女の子で親友(女性)

広東語、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

  • Qwen3-TTS-Flash: qwen3-tts-flash、qwen3-tts-flash-2025-11-27、and qwen3-tts-flash-2025-09-18

よくある質問

Q: 音声ファイル URL の有効期間はどのくらいですか?

A: 音声ファイル URL は24時間後に有効期限が切れます。