音声デザインを使用すると、音声サンプルを必要とせず、自然言語の記述だけでカスタム音声を作成できます。
概要
音声デザインは、ラピッドプロトタイピング、クリエイティブコンテンツの制作、ゲームキャラクターのボイスオーバーに適しています。Alibaba Cloud Model Studio は、以下のモデルファミリーを通じて音声デザインを提供します。
-
CosyVoice:リアルタイムの音声合成をサポートします。北京リージョン (v3.5 シリーズおよび v3 シリーズ) で利用可能です。
-
Qwen-TTS:リアルタイムおよび非リアルタイムの音声合成をサポートし、音声記述の上限は 2,048 文字と、より高くなっています。北京およびシンガポールリージョンで利用可能です。
すでに音声サンプルをお持ちの場合は、「音声クローニング」をご参照ください。モデルの選択に関するガイダンスについては、「音声合成」をご参照ください。
前提条件
-
DashScope SDK を通じて API を呼び出すには、最新の SDK をインストールする必要があります。
クイックスタート
音声デザインは、記述、作成、使用の 3 ステップで構成されます。
-
音声記述の作成:希望する音声の特性を自然言語で記述します。詳細なガイダンスについては、「音声記述の作成」をご参照ください。
-
音声の作成:音声デザイン API を呼び出します。システムは記述に基づいて音声を生成し、プレビュー音声クリップを返します。本番で音声を使用する前に、プレビュー音声を確認してください。
-
音声による音声合成:音声 ID を使用して音声合成 API を呼び出し、音声を生成します。
CosyVoice の音声デザイン
次の例は、テキスト記述から CosyVoice の音声を作成し、音声合成を行う方法を示しています。
CosyVoice の音声デザインは、北京リージョン (v3.5 シリーズおよび v3 シリーズ) でのみ利用可能です。
ステップ 1:記述から音声を作成する
API を、音声記述用の voice_prompt と、プレビュー音声で読み上げられるテキスト用の preview_text の 2 つのパラメーターで呼び出します。
curl -X POST 'https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/audio/tts/customization' \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "voice-enrollment",
"input": {
"action": "create_voice",
"target_model": "cosyvoice-v3.5-plus",
"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.",
"prefix": "announcer"
},
"parameters": {
"sample_rate": 24000,
"response_format": "wav"
}
}'
ステップ 2:デザインされた音声で音声を合成する
次のリクエストでは、前のステップで返された voice_id の値を使用します。
# coding=utf-8
import dashscope
from dashscope.audio.tts_v2 import *
import os
# シンガポールリージョンと北京リージョンでは API キーが異なります。API キーの取得: https://www.alibabacloud.com/help/model-studio/get-api-key
# 環境変数を設定していない場合は、次の行を実際の Model Studio API キーに置き換えてください: dashscope.api_key = "sk-xxx"
dashscope.api_key = os.environ.get('DASHSCOPE_API_KEY')
# 次の設定は中国 (北京) リージョン用です。"{WorkspaceId}" を実際のワークスペース ID に置き換えてください。
dashscope.base_websocket_api_url='wss://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api-ws/v1/inference'
# 音声デザインと音声合成には同じモデルを使用します
model = "cosyvoice-v3.5-plus"
# voice パラメーターを、音声デザインで生成されたカスタム音声に置き換えます
voice = "voice_id"
# SpeechSynthesizer をインスタンス化し、コンストラクターにモデル、音声、その他のリクエストパラメーターを渡します
synthesizer = SpeechSynthesizer(model=model, voice=voice)
# 合成するテキストを送信し、バイナリ音声を取得します
audio = synthesizer.call("What is the weather like today?")
# 初めてテキストを送信する際には WebSocket 接続の確立が必要なため、初パケットレイテンシーには接続確立時間が含まれます
print('[Metric] requestId: {}, first-package latency: {} ms'.format(
synthesizer.get_last_request_id(),
synthesizer.get_first_package_delay()))
# 音声をローカルファイルに保存します
with open('output.mp3', 'wb') as f:
f.write(audio)
Qwen-TTS の音声デザイン
次の例は、音声を作成し、音声合成を行う方法を示しています。
合成に音声を使用する前にプレビュー音声で結果を確認し、不要な API コストを回避してください。
Python
import os
import requests
import dashscope
# ======= 定数 =======
DEFAULT_TARGET_MODEL = "qwen3-tts-vd-2026-01-26" # 音声デザインと音声合成には同じモデルを使用します
DEFAULT_PREFERRED_NAME = "custom_voice"
# 音声記述:希望する音声の特性を自然言語で記述します
VOICE_PROMPT = "A young and lively female voice with a fast speaking rate and a noticeably rising intonation, suitable for introducing fashion products."
def create_voice_by_design(voice_prompt: str,
target_model: str = DEFAULT_TARGET_MODEL,
preferred_name: str = DEFAULT_PREFERRED_NAME) -> str:
"""
音声記述からカスタム音声を作成し、voice パラメーターを返します。
"""
# シンガポールリージョンと北京リージョンでは 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")
# シンガポールリージョン
url = "https://dashscope-intl.aliyuncs.com/api/v1/services/audio/tts/customization"
payload = {
"model": "qwen-voice-design",
"input": {
"action": "create",
"target_model": target_model,
"preferred_name": preferred_name,
"voice_prompt": voice_prompt,
"preview_text": "Hello everyone, welcome to our live stream! The product we are recommending today is truly amazing."
},
"parameters": {
"sample_rate": 24000,
"response_format": "wav"
}
}
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"Failed to create voice: {resp.status_code}, {resp.text}")
result = resp.json()
preview_audio = result.get("output", {}).get("preview_audio")
if preview_audio:
import base64
audio_data = base64.b64decode(preview_audio["data"])
with open("preview_audio.wav", "wb") as f:
f.write(audio_data)
print(f"Preview audio saved to preview_audio.wav ({len(audio_data)} bytes)")
try:
return result["output"]["voice"]
except (KeyError, ValueError) as e:
raise RuntimeError(f"Failed to parse voice response: {e}")
if __name__ == '__main__':
# シンガポールリージョン
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
voice_id = create_voice_by_design(VOICE_PROMPT)
print(f"Created voice ID: {voice_id}")
text = "Hello everyone, welcome to our live stream! The product we are recommending today is truly amazing."
response = dashscope.MultiModalConversation.call(
model=DEFAULT_TARGET_MODEL,
# シンガポールリージョンと北京リージョンでは 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"),
text=text,
voice=voice_id,
stream=False
)
print(response)
cURL
ステップ 1:記述から音声を作成する
次の設定はシンガポールリージョン用です。
curl -X POST 'https://dashscope-intl.aliyuncs.com/api/v1/services/audio/tts/customization' \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen-voice-design",
"input": {
"action": "create",
"target_model": "qwen3-tts-vd-2026-01-26",
"preferred_name": "custom_voice",
"voice_prompt": "A young and lively female voice with a fast speaking rate and a noticeably rising intonation, suitable for introducing fashion products.",
"preview_text": "Hello everyone, welcome to our live stream! The product we are recommending today is truly amazing."
},
"parameters": {
"sample_rate": 24000,
"response_format": "wav"
}
}'
ステップ 2:デザインされた音声で音声を合成する
YOUR_VOICE_ID を、前のステップで返された voice の値に置き換えてください。
次の設定はシンガポールリージョン用です。
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-vd-2026-01-26",
"input": {
"text": "Hello everyone, welcome to our live stream! The product we are recommending today is truly amazing.",
"voice": "YOUR_VOICE_ID"
}
}'
音声記述の作成
音声記述 (voice_prompt) は、生成される音声の音質を決定します。記述が具体的で詳細であるほど、期待に近い結果が得られます。
要件と制限
-
長さ制限:
voice_promptの最大長はモデルによって異なります。CosyVoice は最大 500 文字、Qwen-TTS は最大 2,048 文字です。 -
対応言語:音声記述は中国語と英語のみに対応しています。
主な原則
-
具体的であること、曖昧さを避けること:「深みのある」、「歯切れの良い」、「テンポの速い」など、音質を表す言葉を使用します。「良い」や「普通」のような主観的または曖昧な用語は避けてください。
-
多次元的であること、一次元的でないこと:良い記述は、性別、年齢、感情など、複数の次元を含みます。「女性の声」とだけ記述するのは、特徴的な結果を生み出すには広すぎます。
-
客観的であること、主観的でないこと:音声の物理的および知覚的な特性に焦点を当てます。例えば、「私のお気に入りの声」ではなく、「エネルギッシュなトーンの高い声」のように記述します。
-
独創的であること、模倣しないこと:有名人や俳優など、特定の個人の模倣を要求するのではなく、声の質を記述します。モデルは模倣をサポートしておらず、そのようなリクエストは著作権上の問題が生じる可能性があります。
-
簡潔であること、冗長でないこと:同義語を繰り返したり、無意味な修飾語を加えたりすることは避けてください。すべての単語が明確な目的を持つようにしてください。
記述のディメンション
以下のディメンションを組み合わせて音声を記述します。含めるディメンションが多いほど、結果はより正確になります。
|
ディメンション |
例 |
|
性別 |
男性、女性、中性 |
|
年齢 |
子供 (5〜12歳)、ティーンエイジャー (13〜18歳)、若年成人 (19〜35歳)、中年 (36〜55歳)、高齢者 (55歳以上) |
|
ピッチ |
高い、中くらい、低い、やや高い、やや低い |
|
速度 |
速い、中くらい、遅い、やや速い、やや遅い |
|
感情 |
明るい、穏やか、優しい、真面目、生き生きとした、落ち着いた、癒やし系 |
|
特徴 |
響きのある、歯切れの良い、ハスキーな、円熟した、甘い、深い、力強い |
|
ユースケース |
ニュース放送、広告、オーディオブック、アニメキャラクター、音声アシスタント、ドキュメンタリーのナレーション |
例
-
標準的な放送スタイル:完璧な発音で、明瞭かつ正確なアーティキュレーション
-
若々しく生き生きとした女性の声、テンポが速く、語尾が上がるイントネーションが特徴で、ファッション製品の紹介に適している
-
落ち着いた、ゆっくりとしたペースの中年男性の声、深く響きがあり、ニュースの読み上げやドキュメンタリーのナレーションに適している
-
優しく思慮深い 30 歳前後の女性、均一なトーンで、オーディオブックの朗読に適している
-
かわいい子供の声、およそ 8 歳の女の子で、やや幼い話し方で、アニメキャラクターのボイスオーバーに適している
カスタム音声の管理
音声デザインは、音声の一覧表示、音声詳細の表示、音声の削除をサポートしています。API エンドポイントとパラメーターの詳細については、「API リファレンス」をご参照ください。
クォータと課金
音声クォータと自動クリーンアップ
音声の総数制限:各 Alibaba Cloud Model Studio アカウントには、CosyVoice 用に 1,000、Qwen-TTS 用に 1,000 のカスタム音声の上限が個別に設定されています。2 つのクォータは独立してカウントされます。
自動クリーンアップ:音声が 1 年間、いずれの音声合成リクエストでも使用されない場合、システムは自動的にその音声を削除します。
課金ルール
-
CosyVoice:音声の作成は無料です。
-
Qwen-TTS:音声作成ごとに USD 0.2 の費用がかかります。作成に失敗した場合は課金されません。
無料クォータ (シンガポールリージョンのみ):
-
Alibaba Cloud Model Studio をアクティベートしてから最初の 90 日間に、10 回の無料音声作成をご利用いただけます。
-
作成に失敗しても無料クォータは消費されません。
-
音声を削除しても無料クォータは復元されません。
-
無料クォータを使い切るか、90 日間の期間が終了すると、音声作成は 1 音声あたり USD 0.2 で課金されます。
-
対応モデルとリージョン
シンガポール
以下のモデルを呼び出すには、シンガポールリージョンの API キー を選択してください。
-
Qwen-TTS:
-
Qwen3-TTS-VD-Realtime: qwen3-tts-vd-realtime-2026-01-15 (最新スナップショット)、qwen3-tts-vd-realtime-2025-12-16 (スナップショット)
-
Qwen3-TTS-VD: qwen3-tts-vd-2026-01-26 (最新スナップショット)
-
中国 (北京)
以下のモデルを呼び出すには、北京リージョンの API キー を選択してください。
-
CosyVoice:cosyvoice-v3.5-plus、cosyvoice-v3.5-flash、cosyvoice-v3-plus、cosyvoice-v3-flash
-
Qwen-TTS:
-
Qwen3-TTS-VD-Realtime: qwen3-tts-vd-realtime-2026-01-15 (最新スナップショット)、qwen3-tts-vd-realtime-2025-12-16 (スナップショット)
-
Qwen3-TTS-VD: qwen3-tts-vd-2026-01-26 (最新スナップショット)
-
-
CosyVoice の音声デザインは、FunAudioGen-VD モデルを利用しています。
-
同じ記述テキスト (プロンプト) でも、生成ごとにわずかに異なる音声が生成されることがあります。複数の音声を生成し、最適なものを選択してください。
API リファレンス
よくある質問
同じ音声記述で常に同じ音声が生成されますか?
必ずしもそうではありません。音声デザインにはランダム性が含まれるため、同じ記述でも生成ごとにわずかに異なる音声が生成されることがあります。複数の音声を生成し、それらを聞き比べて最適なものを選択してください。
音声記述で対応している言語は何ですか?
現在、音声記述 (voice_prompt) は中国語と英語のみに対応しています。ただし、生成された音声は複数の言語で音声を合成できます。
音声デザインと音声クローニングの違いは何ですか?
音声デザインは、音声サンプルを必要とせず、テキスト記述を使用してゼロから音声を作成します。全く新しい音声アイデンティティをデザインするのに適しています。音声クローニングは、実際の音声サンプルに基づいて音声を複製し、特定の人物の声を再現するのに適しています。詳細については、「音声クローニング」をご参照ください。