HTTP 経由で全文を音声に変換します。モデルの機能、基本的な呼び出し方法、合成品質の改善方法を説明します。
機能
非リアルタイム音声合成では、1 回の HTTP リクエストでテキスト全体を送信し、非ストリーミング出力または SSE ストリーミング出力を受け取ります。非ストリーミング出力で返される音声 URL の有効期限は 24 時間です。期限内に音声をダウンロードして保存してください。期限切れ後は再合成できます。ストリーミング出力では、音声データがチャンク単位で返されます。
- 言語と方言: 対象の言語に適したモデルと音声を選択するか、指示で方言を指定します。方言をご参照ください。
- 表現の制御: 自然言語の指示で話し方を調整したり、感情タグや非言語音タグを挿入したりできます。指示による制御と感情タグと非言語音タグをご参照ください。
- カスタム音声: 音声クローニングで音声サンプルから、または音声デザインでテキストの説明から音声を作成します。
- 詳細な制御と数式の読み上げ: SSML と LaTeXを使用してポーズや発音を制御したり、数式を音声に変換したりできます。
注記
- 対応する機能はモデルと音声によって異なります。各機能のドキュメントで対応範囲を確認してください。
- テキストを分割して送信する場合は、リアルタイム音声合成を使用します。
利用開始
-
API キーを取得し、環境変数
DASHSCOPE_API_KEYに設定します。例に記載されたリージョンのキーを使用します。 -
ワークスペース専用エンドポイントでは、
YOUR_WORKSPACE_IDをそのリージョンのワークスペース ID に置き換えます。 -
例に必要な依存パッケージをインストールします。
pip install requests
Qwen-Audio-TTS (推奨)
次の例では、シンガポール の qwen-audio-3.1-tts-flash とシステム音声 longanhuan_v3.1 を使用して、非ストリーミング出力とストリーミング出力を示します。
非ストリーミング出力
import os
import requests
response = requests.post(
'https://YOUR_WORKSPACE_ID.ap-southeast-1.maas.aliyuncs.com/api/v1/services/audio/tts/SpeechSynthesizer',
headers={"Authorization": f"Bearer {os.environ['DASHSCOPE_API_KEY']}"},
json={
"model": "qwen-audio-3.1-tts-flash",
"input": {
"text": "Hello, welcome to Alibaba Cloud Model Studio.",
"voice": "longanhuan_v3.1",
"format": "wav",
"sample_rate": 24000
}
},
timeout=60,
)
response.raise_for_status()
audio_url = response.json()["output"]["audio"]["url"]
audio_response = requests.get(audio_url, timeout=60)
audio_response.raise_for_status()
with open("output.wav", "wb") as f:
f.write(audio_response.content)
音声は現在のディレクトリの output.wav に保存されます。
ストリーミング出力
この例では、返された SSE イベントを行単位で表示します。output.audio.data フィールドには、Base64 エンコードされた音声チャンクが含まれます。
import os
import requests
response = requests.post(
'https://YOUR_WORKSPACE_ID.ap-southeast-1.maas.aliyuncs.com/api/v1/services/audio/tts/SpeechSynthesizer',
headers={"Authorization": f"Bearer {os.environ['DASHSCOPE_API_KEY']}", "X-DashScope-SSE": "enable"},
json={
"model": "qwen-audio-3.1-tts-flash",
"input": {
"text": "Hello, welcome to Alibaba Cloud Model Studio.",
"voice": "longanhuan_v3.1",
"format": "wav",
"sample_rate": 24000
}
},
stream=True,
timeout=60,
)
response.raise_for_status()
for line in response.iter_lines():
print(line.decode("utf-8"))
response.close()
CosyVoice
次の例では、北京の cosyvoice-v3-flash とシステム音声 longanyang を使用して、非ストリーミング出力とストリーミング出力を示します。
非ストリーミング出力
import os
import requests
response = requests.post(
'https://YOUR_WORKSPACE_ID.cn-beijing.maas.aliyuncs.com/api/v1/services/audio/tts/SpeechSynthesizer',
headers={"Authorization": f"Bearer {os.environ['DASHSCOPE_API_KEY']}"},
json={
"model": "cosyvoice-v3-flash",
"input": {
"text": "Hello, welcome to Alibaba Cloud Model Studio.",
"voice": "longanyang",
"format": "wav",
"sample_rate": 24000
}
},
timeout=60,
)
response.raise_for_status()
audio_url = response.json()["output"]["audio"]["url"]
audio_response = requests.get(audio_url, timeout=60)
audio_response.raise_for_status()
with open("output.wav", "wb") as f:
f.write(audio_response.content)
音声は現在のディレクトリの output.wav に保存されます。
ストリーミング出力
この例では、返された SSE イベントを行単位で表示します。output.audio.data フィールドには、Base64 エンコードされた音声チャンクが含まれます。
import os
import requests
response = requests.post(
'https://YOUR_WORKSPACE_ID.cn-beijing.maas.aliyuncs.com/api/v1/services/audio/tts/SpeechSynthesizer',
headers={"Authorization": f"Bearer {os.environ['DASHSCOPE_API_KEY']}", "X-DashScope-SSE": "enable"},
json={
"model": "cosyvoice-v3-flash",
"input": {
"text": "Hello, welcome to Alibaba Cloud Model Studio.",
"voice": "longanyang",
"format": "wav",
"sample_rate": 24000
}
},
stream=True,
timeout=60,
)
response.raise_for_status()
for line in response.iter_lines():
print(line.decode("utf-8"))
response.close()
合成品質の改善
言語と発音
数字、略語、記号の読み方が適切でない場合は、language_hints で合成の対象言語を指定するか、hot_fix で発音とテキスト置換を設定します。対象モデルと設定方法は、Qwen-Audio-TTS API または CosyVoice API をご参照ください。
ポーズ、数字の読み方、単語の発音を制御するには SSML を使用します。Qwen-Audio-TTS と CosyVoice の対応モデル、音声、インターフェイス、タグの使い方については、SSML と LaTeXをご参照ください。
指示による制御
リクエストの input に instruction を追加し、合成する言語と、話す速度、感情、話し方を自然言語で指定して、合成音声の表現を制御します。
注記性別、年齢、声質などの特徴を指定して新しい音声を作成する場合や、音声の説明の書き方と例を確認する場合は、音声デザインをご参照ください。
Qwen-Audio-TTS
qwen-audio-3.1-tts-plus、qwen-audio-3.1-tts-flash, qwen-audio-3.0-tts-plus, qwen-audio-3.0-tts-flash のシステム音声、クローン音声、デザイン音声はすべて、合成リクエストの instruction による自然言語の指示に対応しています。
合成品質を向上させるために、instruction に合成する言語と希望する表現を指定することを推奨します。指示で指定する言語は、合成対象のテキストの言語と一致させてください。たとえば、オランダ語のテキストを合成する場合は、次のように設定します:
{"instruction": "请用荷兰话说,每个字都慢慢说"}
CosyVoice
注記CosyVoice の instruction は最大 100 文字です。文字数の計算では、簡体字、繁体字、日本語および韓国語で使う漢字は 1 文字を 2 文字として数えます。句読点、英字、数字、かな、ハングルなどその他の文字は 1 文字として数えます。
| モデル | 対象の音声 | 指示の要件 | 指示テキストの言語 |
|---|---|---|---|
| クローン音声とデザイン音声 システム音声はありません。 | 自然言語による指示。 | 中国語、英語、フランス語、ドイツ語、日本語、韓国語、ロシア語、ポルトガル語、タイ語、インドネシア語、ベトナム語。 |
| システム音声 | 音声一覧の固定の形式と内容を使用します。 クローン音声とデザイン音声は指示による制御に対応していません。 | 音声一覧に指定された言語を使用します。 |
| システム音声 | 音声一覧の固定の形式と内容を使用します。 | 中国語。 |
クローン音声とデザイン音声 | 自然言語による指示。 | 中国語、英語、フランス語、ドイツ語、日本語、韓国語、ロシア語。 |
方言
方言合成を使用すると、河南方言や四川方言などの中国語方言で音声を生成できます。方言の選択方法は、モデルと音声の種類によって異なります。
Qwen-Audio-TTS
- システム音声: Qwen-Audio-TTS 音声一覧から対象の方言に対応する音声を選択します。方言を直接サポートする音声は追加設定が不要です。方言指示に対応する音声では 指示制御パラメーター
instructionを使用します。 - クローン音声: 指示制御パラメーター
instructionで方言を指定します。 - デザイン音声: 方言には対応していません。
方言指示に対応する音声では、リクエストの input に instruction="请讲上海话。" を設定すると、中国語のテキストを上海語で合成できます。
CosyVoice
- システム音声:
longshange_v3など対象の方言を直接サポートする音声、またはlonganhuan_v3など方言指示に対応する音声を選択します。音声一覧の形式に従ってください。 - クローン音声: 指示による制御に対応するモデルで
instructionを使用し、方言を指定します。 - デザイン音声: 方言には対応していません。
注記cosyvoice-v3-plus のクローン音声は、指示による方言の指定に対応していません。
CosyVoice の利用開始の例で、input を次の内容に置き換えると、longanhuan_v3 で河南方言を生成できます。
{
"text": "叫你去买盐,你买回来一袋面,这不是弄啥嘞吗!",
"voice": "longanhuan_v3",
"format": "wav",
"sample_rate": 24000,
"instruction": "请用河南话表达。"
}
Qwen3-TTS では対象の方言に対応するシステム音声を使用します。Qwen3-TTS 音声一覧をご参照ください。
感情タグと非言語音タグ
注記対象モデル:qwen-audio-3.1-tts-plus、qwen-audio-3.1-tts-flash, qwen-audio-3.0-tts-plus, qwen-audio-3.0-tts-flash。
感情タグとパラ言語タグは、音声の感情やスタイルを制御し、指定位置に笑い声やため息などの音を挿入します。追加のパラメーターを使わず、合成対象の text にタグを直接記述します。
使用例
次のテキストは興奮した話し方で始まり、指定した位置で笑い声を挿入してから読み上げを続けます。
[excited]今天的天气真不错![laughing]我们一起出去玩吧!
次のテキストは 2 文目で興奮した話し方に切り替わります。
[serious]请注意安全事项。[excited]好了,现在让我们开始吧!
対応タグ
制御タグ
制御タグは、次の制御タグまでのテキストの感情やスタイルを設定します。長い文が自動分割される場合、効果の範囲は分割されたテキスト単位になります。
| タグ | 説明 |
|---|---|
| 悲しい |
| 驚いた |
| 低く大きな叫び声 |
| 震える |
| 怒った |
| 興奮した |
| 皮肉な |
| 好奇心のある |
| ドラキュラ風 |
| 退屈した |
| 疲れた |
| 軽蔑した |
| 叫ぶ |
| 柔らかい ASMR 音声 |
| 慌てた |
| いたずらっぽい |
| 共感的な |
| ささやく |
| 気の進まない |
| 泣く |
| 真剣な |
| 非常に遅い |
| 非常に速い |
非言語音タグ
非言語音タグは、その位置に音を挿入し、前後のテキストの感情スタイルは変更しません。
| タグ | 説明 |
|---|---|
| 息をのむ |
| ため息 |
| 咳払い |
| くすくす笑う |
| 笑う |
| 咳 |
| 鼻を鳴らす |
対応モデル
シンガポール
このリージョンの API キーとエンドポイントを使用して、次のモデルを呼び出します。
- Qwen-Audio-TTS:
qwen-audio-3.1-tts-plus,qwen-audio-3.1-tts-flash,qwen-audio-3.0-tts-plus,qwen-audio-3.0-tts-flash - Qwen3-TTS:
qwen3-tts-flash
中国(北京)
このリージョンの API キーとエンドポイントを使用して、次のモデルを呼び出します。
- Qwen-Audio-TTS:
qwen-audio-3.1-tts-plus、qwen-audio-3.1-tts-flash,qwen-audio-3.0-tts-plus,qwen-audio-3.0-tts-flash - CosyVoice:
cosyvoice-v3.5-plus,cosyvoice-v3.5-flash,cosyvoice-v3-plus,cosyvoice-v3-flash,cosyvoice-v2 - Qwen3-TTS:
qwen3-tts-flash
システム音声と試聴サンプルは、Qwen-Audio-TTS、CosyVoice、Qwen3-TTS の音声一覧をご参照ください。クローン音声またはデザイン音声は、作成時に指定したターゲットモデルで使用してください。