自然言語の説明からカスタム音声を作成し、プレビューを試聴して音声合成に使用できます。
概要
音声デザインは、迅速なプロトタイプ作成、クリエイティブコンテンツ制作、ゲームキャラクターの音声制作などに適しています。
注記音声の作成に音声サンプルは不要です。既存の音声サンプルから声を再現する場合は、音声クローニングを使用してください。
事前準備
-
ワークスペース ID を取得し、サンプルの
YOUR_WORKSPACE_IDを実際の値に置き換えます。取得方法については、リージョン、サービスのデプロイ範囲、エンドポイントをご参照ください。 -
DashScope SDK と
requestsをインストールします。pip install -U dashscope requests
利用を開始する
Qwen-Audio-TTS と CosyVoice では、音声の作成、プレビュー、基本的な合成の手順は共通です。以下では qwen-audio-3.1-tts-flash を使用します。
- 音声の作成:音声の説明
voice_prompt、プレビューのテキストpreview_text、対象モデルtarget_modelを設定して、音声 ID を取得します。 - プレビュー音声の保存:返された
preview_audio.dataをデコードし、試聴用の WAV ファイルとして保存します。 - 音声合成:返された
voice_idをvoiceに設定し、紐付けられたモデルで音声を合成します。
import base64
import os
import dashscope
import requests
from dashscope.audio.tts_v2 import AudioFormat, SpeechSynthesizer
api_key = os.environ["DASHSCOPE_API_KEY"]
workspace_id = "YOUR_WORKSPACE_ID"
target_model = "qwen-audio-3.1-tts-flash"
# Create a voice and save the returned preview audio.
response = requests.post(
f"https://{workspace_id}.cn-beijing.maas.aliyuncs.com/api/v1/services/audio/tts/customization",
headers={"Authorization": f"Bearer {api_key}"},
json={
"model": "voice-enrollment",
"input": {
"action": "create_voice",
"target_model": target_model,
"voice_prompt": "A calm middle-aged male announcer with a deep, resonant voice, steady speaking pace, and clear articulation, suited for news broadcasts or documentaries.",
"preview_text": "Good evening, everyone. Welcome to the evening news.",
"prefix": "announcer",
"language_hints": ["en"],
},
"parameters": {"sample_rate": 24000, "response_format": "wav"},
},
timeout=120,
)
response.raise_for_status()
output = response.json()["output"]
voice_id = output["voice_id"]
print(f"voice_id: {voice_id}")
with open("preview.wav", "wb") as f:
f.write(base64.b64decode(output["preview_audio"]["data"]))
# Synthesize speech with the same target model and the returned voice ID.
dashscope.api_key = api_key
dashscope.base_websocket_api_url = (
f"wss://{workspace_id}.cn-beijing.maas.aliyuncs.com/api-ws/v1/inference"
)
synthesizer = SpeechSynthesizer(
model=target_model,
voice=voice_id,
format=AudioFormat.WAV_24000HZ_MONO_16BIT,
)
audio = synthesizer.call("The weather is clear today, perfect for a walk outside. Have a wonderful day.")
with open("output.wav", "wb") as f:
f.write(audio)
サンプルを実行すると、プレビュー音声が preview.wav に、合成音声が output.wav に保存されます。出力された音声 ID を保存して、以降の音声合成に使用してください。
HTTP リクエストの例、オプションパラメーター、レスポンスフィールドについては、音声デザイン API リファレンスをご参照ください。合成のパラメーターについては、Qwen-Audio-TTS クライアントイベントをご参照ください。
音声説明の作成ガイド
音声の説明(voice_prompt)で、求める声の特徴を指定します。明確で具体的な説明は、目的に合った音声の生成に役立ちます。
説明の書き方
- 具体的に記述する:「低い声」「澄んだ声」「速めの話し方」など、声の特徴を記述します。「良い声」「普通」などの曖昧な評価は避けます。
- 複数の観点を組み合わせる:性別、年齢、音の高さ、話す速さ、感情などを組み合わせます。「女性の声」だけでは、特徴的な声を指定する情報が不足します。
- 客観的に記述する:「音が高めで活発」など、知覚できる特徴を記述します。「一番好きな声」などの主観的な表現は避けます。
- 独自の声を記述する:有名人や俳優など、特定の人物の模倣を求めず、声の特徴を記述します。モデルは特定の人物を指定した模倣をサポートしておらず、そのようなリクエストは著作権上の問題を生じる可能性があります。
- 簡潔に記述する:同義語の繰り返しや不要な修飾を減らします。
以下の観点を組み合わせて音声を説明できます。
| 要素 | 例 |
|---|---|
性別 | 男性、女性、中性 |
年齢 | 子供 (5〜12 歳)、ティーンエイジャー (13〜18 歳)、若者 (19〜35 歳)、中年 (36〜55 歳)、高齢者 (55 歳以上) |
ピッチ | 高い、中程度、低い、やや高い、やや低い |
話速 | 速い、普通、遅い、やや速い、やや遅い |
感情 | 陽気、穏やか、優しい、真面目、活発、落ち着き、癒やし |
特徴 | 響きのある、歯切れの良い、ハスキー、まろやか、甘い、深い、力強い |
ユースケース | ニュース放送、広告、オーディオブック、アニメキャラクター、音声アシスタント、ドキュメンタリーナレーション |
説明の例
- 標準的な放送スタイル:完璧な発音で、クリアかつ正確なアーティキュレーション
- 若々しく活発な女性の声、速いペースで顕著な上昇イントネーションがあり、ファッション製品の紹介に適している
- 穏やかでゆっくりとしたペースの中年男性の声、深く響きがあり、ニュースの読み上げやドキュメンタリーのナレーションに適している
- 優しく思慮深い 30 歳前後の女性、均一なトーンで、オーディオブックの朗読に適している
- かわいい子供の声、およそ 8 歳の女の子、やや子供っぽい話し方で、アニメキャラクターのナレーションに適している
注記同じ説明でも、生成される音声は異なる場合があります。作成後にプレビュー音声を試聴してください。結果を比較する場合は、複数の音声を生成して適したものを選択できます。
音声の管理
- 音声一覧の取得:既存のカスタム音声を確認します。
- 音声の詳細の照会:紐付けられたモデル、音声の状態などを確認します。
- 音声の削除:不要になった音声を削除してクォータを解放します。
インターフェイスとパラメーターについては、音声デザイン API リファレンスをご参照ください。
対応モデル
中国(北京)
このリージョンの API キーを使用して、以下のモデルを呼び出します。
-
Qwen-Audio-TTS: 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 の音声デザインは、FunAudioGen-VD モデルの機能を使用します。
クォータと制限
-
音声の数:各 Alibaba Cloud Model Studio アカウントで保持できるカスタム音声は最大 1,000 個です。音声クローニングと音声デザインは、モデルにかかわらずこのアカウント単位のクォータを共有します。
注記上限に達すると、音声クローニングまたは音声デザインによる新しい音声作成リクエストは失敗します。不要になった音声を削除してクォータを解放してから、新しい音声を作成してください。
-
音声の説明:
voice_promptは中国語と英語のみをサポートし、最大長は 500 文字です。 -
プレビューのテキスト:
preview_textは中国語と英語のみをサポートし、長さは 15~200 文字です。 -
モデルとの紐付け:作成時に
target_modelを指定して、音声を音声合成モデルに紐付けます。以降の合成では同じモデルを使用してください。
作成した音声は、複数の言語の音声合成に使用できます。対応言語は、対象の音声合成モデルによって異なります。
課金
音声の作成は無料です。
デザインした音声による音声合成は、対象の音声合成モデルに応じて課金されます。料金については、モデルの料金をご参照ください。