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

Alibaba Cloud Model Studio:非リアルタイム音声合成

最終更新日:Jun 04, 2026

非リアルタイム音声合成は、HTTP API を介してテキストを音声(TTS)に変換します。オーディオブック制作、eラーニングのナレーション、コンテンツ制作など、レイテンシ許容度が高いシナリオに適しています。このサービスでは、豊富な音声ライブラリ、多言語対応、音声クローニング、音声デザインなどの機能を提供しています。

概要

HTTP API を使用して、テキスト全体を音声ファイルに変換します。出力モードには、ノンストリーミングとストリーミングの 2 種類があります。

  • ノンストリーミング は、24 時間で有効期限が切れる音声ファイルの URL を返します。ストリーミング は、PCM 音声データをチャンク単位で返します。

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

  • 音声クローニングおよび音声デザインをサポートしており、カスタム音声を作成できます。

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

低レイテンシのストリーミング合成については、「リアルタイム音声合成」をご参照ください。モデルの選択方法については、「音声合成」をご参照ください。

前提条件

作業を開始する前に、以下の準備が完了していることを確認してください。

クイックスタート

各タブでは、異なるモデルファミリーを使用した合成の例を示しています。その他のコード例やパラメーターの詳細については、「API リファレンス」をご参照ください。

Qwen-TTS

このセクションのすべての例では、ビルトイン音声を使用しています。

ノンストリーミング出力

ノンストリーミングモードでは、応答に合成された音声ファイルを指す url フィールドが含まれます。この URL は 24 時間で有効期限が切れます。

Python

import os
import dashscope

# シンガポールリージョンの URL です。WorkspaceId を実際のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'

text = "Today is a wonderful day to build something people love!"
# SpeechSynthesizer の使用方法: dashscope.audio.qwen_tts.SpeechSynthesizer.call(...)
response = dashscope.MultiModalConversation.call(
    # 命令によるコントロール機能を使用する場合は、model を qwen3-tts-instruct-flash に置き換えてください。
    model="qwen3-tts-flash",
    # シンガポールリージョンと中国 (北京) リージョンの API キーは異なります。API キーの取得方法: https://www.alibabacloud.com/help/en/model-studio/get-api-key
    # 環境変数を設定していない場合は、次の行を Alibaba Cloud Model Studio API キーに置き換えてください: api_key = "sk-xxx"
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    text=text,
    voice="Cherry",
    language_type="English", # 正確な発音と自然なイントネーションを確保するため、テキストの言語と一致させることを推奨します。
    # 命令によるコントロール機能を使用する場合は、次の行のコメントを解除し、model を qwen3-tts-instruct-flash に置き換えてください。
    # instructions='Speak at a relatively fast speed with a noticeable rising intonation, suitable for introducing fashion products.',
    # 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/en/model-studio/get-api-key
                // 環境変数を設定していない場合は、次の行を Alibaba Cloud 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") // 正確な発音と自然なイントネーションを確保するため、テキストの言語と一致させることを推奨します。
                // 命令によるコントロール機能を使用する場合は、次の行のコメントを解除し、model を qwen3-tts-instruct-flash に置き換えてください。
                // .parameter("instructions","Speak at a relatively fast speed with a noticeable rising intonation, suitable for introducing fashion products.")
                // .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 です。WorkspaceId を実際のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
        Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
        try {
            call();
        } catch (ApiException | NoApiKeyException | UploadFileException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}

cURL

# ======= 重要 =======
# シンガポールリージョンの URL です。WorkspaceId を実際のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
# === 実行前にこのコメントを削除してください ===

curl -X POST 'https://{WorkspaceId}.ap-southeast-1.maas.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": "Today is a wonderful day to build something people love!",
        "voice": "Cherry",
        "language_type": "English"
    }
}'

ストリーミング出力

ストリーミングモードでは、Base64 エンコードされた PCM セグメントとして音声データが逐次返されます。最後のパケットには、完全な音声ファイルへの 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
#   または
#   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 = "Today is a wonderful day to build something people love!"
response = dashscope.MultiModalConversation.call(
    # シンガポールリージョンと中国 (北京) リージョンの API キーは異なります。API キーの取得方法: https://www.alibabacloud.com/help/en/model-studio/get-api-key
    # 環境変数を設定していない場合は、次の行を Alibaba Cloud Model Studio API キーに置き換えてください: api_key = "sk-xxx"
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # 命令によるコントロール機能を使用する場合は、model を qwen3-tts-instruct-flash に置き換えてください。
    model="qwen3-tts-flash",
    text=text,
    voice="Cherry",
    language_type="English", # 正確な発音と自然なイントネーションを確保するため、テキストの言語と一致させることを推奨します。
    # 命令によるコントロール機能を使用する場合は、次の行のコメントを解除し、model を qwen3-tts-instruct-flash に置き換えてください。
    # instructions='Speak at a relatively fast speed with a noticeable rising intonation, suitable for introducing fashion products.',
    # 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/en/model-studio/get-api-key
                // 環境変数を設定していない場合は、次の行を Alibaba Cloud 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") // 正確な発音と自然なイントネーションを確保するため、テキストの言語と一致させることを推奨します。
                // 命令によるコントロール機能を使用する場合は、次の行のコメントを解除し、model を qwen3-tts-instruct-flash に置き換えてください。
                // .parameter("instructions","Speak at a relatively fast speed with a noticeable rising intonation, suitable for introducing fashion products.")
                // .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,     // フレームサイズ (バイト)
                        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 はシンガポールリージョンを指しています。中国 (北京) リージョンのモデルを使用する場合は、https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation に置き換えてください。
# 注: シンガポールリージョンと中国 (北京) リージョンの API キーは異なります。API キーの取得方法: https://www.alibabacloud.com/help/en/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": "Today is a wonderful day to build something people love!",
        "voice": "Cherry",
        "language_type": "English"
    }
}'

高度な機能

命令によるコントロール

命令ベースのコントロールにより、複雑な音声パラメーターを調整することなく、自然言語による記述でトーン、速度、感情、音色を制御できます。

サポートモデル: Qwen3-TTS-Instruct-Flash ファミリー

使用方法: instructions パラメーターに命令テキストを渡します。

サポート命令言語: 中国語および英語

最大命令長: 1,600 トークン

ユースケース:

  • オーディオブックおよびラジオドラマのボイスオーバー

  • 広告およびプロモーションのボイスオーバー

  • ゲームキャラクターやアニメーションのボイスオーバー

  • 感情表現豊かな音声アシスタント

  • ドキュメンタリーのナレーションおよびニュース放送

高品質な音声記述を作成するためのヒント:

  • 基本原則:

    1. 具体的であり、曖昧ではないこと: 「深みのある」「明瞭な」など、具体的な音声特性を表す語を使用します。「良い」「普通」など主観的または曖昧な語は避けてください。

    2. 多面的であり、一面的ではないこと: 良い記述は複数の側面(性別、年齢、感情など)をカバーします。「女性の声」とだけ書くと、特徴的な音色を生成するには不十分です。

    3. 客観的であり、主観的ではないこと: 音声の物理的および知覚的特性に焦点を当てます。たとえば、「少し高いピッチでエネルギッシュ」のように記述し、「お気に入りの声」のように記述しないでください。

    4. 独創的であり、模倣的ではないこと: 所望の音声特性を記述してください。特定の著名人(セレブや俳優など)の真似を要求しないでください。モデルは模倣をサポートしておらず、著作権リスクが生じる可能性があります。

    5. 簡潔であり、冗長ではないこと: 一語一語に意味を持たせてください。同義語を繰り返したり、無意味な修飾子を重ねたりしないでください。

  • 記述のディメンション:

    以下のディメンションを組み合わせると、より正確な結果が得られます。記述するディメンションが多いほど、出力はより精密になります。

    ディメンション

    記述例

    性別

    男性、女性、中性

    年齢

    子供(5~12 歳)、ティーンエイジャー(13~18 歳)、若い成人(19~35 歳)、中年(36~55 歳)、高齢者(55 歳以上)

    ピッチ

    高め、中程度、低め、やや高め、やや低め

    速度

    速め、普通、遅め、やや速め、やや遅め

    感情

    明るい、落ち着いた、優しい、真剣な、活発な、冷静な、癒し系

    音色

    磁性的な、明瞭な、かすれた、まろやかな、甘い、豊かな、力強い

    ユースケース

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

  • :

    • 標準放送スタイル: 明瞭かつ正確な発音、標準的な発音

    • 若くて活発な女性の声で、やや速いペースと顕著な上がり調子。ファッション製品の紹介に適しています。

    • 落ち着いた中年の男性の声で、ゆっくりとしたペース、深みがあり磁性的な音色。ニュース読み上げやドキュメンタリーのナレーションに適しています。

    • 優しく知的な女性の声で、年齢は約 30 歳、落ち着いたトーン。オーディオブックの朗読に適しています。

    • かわいらしい子供の声で、8 歳くらいの女の子、やや幼い話し方。アニメーションキャラクターのボイスオーバーに適しています。

方言

このセクションでは、モデルに中国語の方言(たとえば、河南語や四川語)で音声を出力させる方法について説明します。設定はモデルおよび音声タイプによって異なります。

Qwen-TTS

  • ビルトイン音声: 方言をサポートするビルトイン音声を使用します。詳細については、音声リストをご確認ください。

  • 音声クローニング: 方言はサポートされていません。

  • 音声デザイン: 方言はサポートされていません。

  • サポート方言: 「Qwen3-TTS」の各モデルの「サポート言語」列をご確認ください。

サポート範囲

利用可能なモデルは デプロイメント範囲 によって異なります。

国際

国際 のデプロイメント範囲を選択した場合、モデル推論の計算リソースは中国本土を除く世界中で動的にスケジュールされます。静的データは選択したリージョンに保存されます。サポートリージョン: シンガポール。

以下のモデルを呼び出すには、シンガポールリージョンの API キー を使用します。

  • Qwen-TTS:

    • 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 キーを使用してください。

  • Qwen-TTS:

    • 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(stable、現在は 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 (スナップショット)

ビルトイン音声

音声はモデルによって異なります。voice パラメーターを、以下の表の voice パラメーター 列の値に設定します。

API リファレンス

よくある質問

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

音声ファイルの URL は生成後 24 時間で有効期限が切れます。新しい URL を取得するには、再度 API を呼び出してください。