Qwen-Audio-TTS/Qwen-Audio-Realtime/CosyVoice の音声クローニングは、DashScope Python SDK を使用してアクセスできます。
サービスエンドポイント
SDK はデフォルトで 中国 (北京) リージョン のエンドポイントを使用します。別のリージョンに切り替えるには、クライアントを初期化する前に dashscope.base_http_api_url を設定します。
注記
- API キーはリージョンごとに異なります。対象リージョンに対応する API キーを使用してください。
- リージョン設定はグローバルに適用され、すべての DashScope SDK API コールに影響します。
シンガポール
https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1
{WorkspaceId} を実際の ワークスペース ID に置き換えてください。
中国 (北京)
https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1
{WorkspaceId} を実際の ワークスペース ID に置き換えてください。
重要Alibaba Cloud Model Studio は、中国 (北京) およびシンガポールリージョン向けに、ワークスペース固有の専用ドメインをリリースしました。新しい専用ドメインは、推論リクエストに対して優れたパフォーマンスと高い安定性を提供します。新しい専用ドメインへの移行を推奨します。
- 中国 (北京):
dashscope.aliyuncs.comから{WorkspaceId}.cn-beijing.maas.aliyuncs.comへ - シンガポール:
dashscope-intl.aliyuncs.comから{WorkspaceId}.ap-southeast-1.maas.aliyuncs.comへ
VoiceEnrollmentService クラス
パッケージパス: dashscope.audio.tts_v2.VoiceEnrollmentService
目的::Qwen-Audio-TTS、Qwen-Audio-Realtime、CosyVoice のクローン音色のライフサイクル (作成、照会、更新、削除) を管理します。
コンストラクター
VoiceEnrollmentService()
create_voice() — 音声の作成
メソッドシグネチャ:def create_voice(self, target_model: str, prefix: str, url: str,
language_hints: List[str] = None,
max_prompt_audio_length: float = None,
**kwargs) -> str
パラメーター:
| パラメーター | タイプ | 必須 | 説明 |
|---|---|---|---|
target_model | str | はい | 音色を使用する対象モデル。後続のリクエストでその音色を使用するモデルと一致する必要があります。一致しない場合、リクエストは失敗します。 |
prefix | str | はい | 音声名のプレフィックス。英数字のみ使用できます。最大長は 10 文字です。生成される音声名は、 |
url | str | はい | 音声クローニングに使用する参照音声。公開アクセス可能な URL または |
language_hints | List[str] | いいえ | モデルがサンプル音声の言語を識別し、音声特徴をより正確に抽出してクローニングの品質を向上させるのに役立ちます。指定した言語が実際の音声の言語と一致しない場合 (たとえば、音声が中国語なのに このパラメーターは配列で、要素数は 1 である必要があります。 注記対象モデル:qwen-audio-3.1-tts-plus、qwen-audio-3.1-tts-flash、qwen-audio-3.0-tts-plus、qwen-audio-3.0-tts-flash、qwen-audio-3.1-realtime-plus、qwen-audio-3.0-realtime-plus、qwen-audio-3.0-realtime-flash、cosyvoice-v3.5-plus、cosyvoice-v3.5-flash、cosyvoice-v3-plus、cosyvoice-v3-flash。 クリックしてモデル別の対応言語を表示
デフォルト: ["zh"]。 |
max_prompt_audio_length | float | いいえ | 前処理後の参照音声の最大長 (秒単位)。有効な値: [3.0, 30.0]。 デフォルト: 10.0。 注記対象モデル:qwen-audio-3.1-tts-plus、qwen-audio-3.1-tts-flash、qwen-audio-3.0-tts-plus、qwen-audio-3.0-tts-flash、qwen-audio-3.1-realtime-plus、qwen-audio-3.0-realtime-plus、qwen-audio-3.0-realtime-flash、cosyvoice-v3.5-plus、cosyvoice-v3.5-flash、cosyvoice-v3-flash。 |
enable_preprocess | bool | いいえ | 音声の前処理 (ノイズリダクション、音質向上、音量正規化) を有効にするかどうか。バックグラウンドノイズのある録音の場合は有効にします。静かな環境での録音の場合は、元の音声特徴を保持するために無効にします。 デフォルト: false。 注記対象モデル:qwen-audio-3.1-tts-plus、qwen-audio-3.1-tts-flash、qwen-audio-3.0-tts-plus、qwen-audio-3.0-tts-flash、qwen-audio-3.1-realtime-plus、qwen-audio-3.0-realtime-plus、qwen-audio-3.0-realtime-flash、cosyvoice-v3.5-plus、cosyvoice-v3.5-flash、cosyvoice-v3-flash。 |
enable_volume_normalization | bool | いいえ | 音声クローニングに使用されるサンプル音声の音量を正規化するかどうかを指定します。このパラメーターはキーワード引数として直接渡します。デフォルト値: |
戻り値: str — 音声 ID (voice_id)。
list_voices() — 音声のリスト表示
メソッドシグネチャ:def list_voices(self, prefix: str = None, page_index: int = 0, page_size: int = 10) -> list
パラメーター:
| パラメーター | タイプ | 必須 | 説明 |
|---|---|---|---|
prefix | str | いいえ | 音声名のプレフィックスでフィルタリングします。 |
page_index | int | いいえ | ページインデックス。デフォルト: 0。 |
page_size | int | いいえ | ページサイズ。デフォルト: 10。 |
戻り値: list — 音声のリスト。
query_voice() — 音声詳細の照会
メソッドシグネチャ:def query_voice(self, voice_id: str) -> dict
パラメーター:
| パラメーター | タイプ | 必須 | 説明 |
|---|---|---|---|
voice_id | str | はい | 照会対象の音声 ID。 |
戻り値: dict — 音声の詳細。
update_voice() — 音声の更新
メソッドシグネチャ:def update_voice(self, voice_id: str, url: str) -> None
パラメーター:
| パラメーター | タイプ | 必須 | 説明 |
|---|---|---|---|
voice_id | str | はい | 更新対象の音声 ID。 |
url | str | はい | 新しい参照音声。公開アクセス可能な URL または |
delete_voice() — 音声の削除
メソッドシグネチャ:def delete_voice(self, voice_id: str) -> None
パラメーター:
| パラメーター | タイプ | 必須 | 説明 |
|---|---|---|---|
voice_id | str | はい | 削除対象の音声 ID。 |
コード例
以下の例では、VoiceEnrollmentService クラスを使用して一般的な音声クローニング操作を行う方法を示します。
音声の作成
import dashscope
from dashscope.audio.tts_v2 import VoiceEnrollmentService
# シンガポールリージョンのエンドポイントを使用する例です。"{WorkspaceId}" を実際のワークスペース ID に置き換えてください。
dashscope.base_http_api_url = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1"
TARGET_MODEL = 'qwen-audio-3.0-tts-flash'
voice_prefix = 'myvoice'
url = 'https://your-audio-file-url'
service = VoiceEnrollmentService()
# 頻繁な呼び出しは避けてください。呼び出しごとに新しい音声が作成され、クォータ制限に達するとそれ以上の作成はできなくなります。
voice_id = service.create_voice(
target_model=TARGET_MODEL,
prefix=voice_prefix,
url=url,
max_prompt_audio_length=10,
# enable_preprocess=False,
# enable_volume_normalization=True
)
print(f"リクエスト ID: {service.get_last_request_id()}")
print(f"音声 ID: {voice_id}")
ローカルの WAV ファイルを使用する場合は、上記の url への代入を以下のコードに置き換えてから create_voice を呼び出します。音声の更新時も、Data URI を update_voice の url パラメーターに指定します。sample.wav をローカル音声ファイルのパスに置き換えてください。
import base64
from pathlib import Path
url = "data:audio/wav;base64," + base64.b64encode(
Path("sample.wav").read_bytes()
).decode("ascii")
音声のリスト表示
import dashscope
from dashscope.audio.tts_v2 import VoiceEnrollmentService
# シンガポールリージョンのエンドポイントを使用する例です。"{WorkspaceId}" を実際のワークスペース ID に置き換えてください。
dashscope.base_http_api_url = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1"
service = VoiceEnrollmentService()
# プレフィックスでフィルタリングします。None を指定すると、すべての音声がリストされます。
voices = service.list_voices(prefix='myvoice', page_index=0, page_size=10)
print(f"リクエスト ID: {service.get_last_request_id()}")
print(f"見つかった音声: {voices}")
特定音声の照会
import dashscope
from dashscope.audio.tts_v2 import VoiceEnrollmentService
# シンガポールリージョンのエンドポイントを使用する例です。"{WorkspaceId}" を実際のワークスペース ID に置き換えてください。
dashscope.base_http_api_url = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1"
service = VoiceEnrollmentService()
voice_id = 'qwen-audio-3.0-tts-flash-myvoice-xxxxxxxx'
voice_details = service.query_voice(voice_id=voice_id)
print(f"リクエスト ID: {service.get_last_request_id()}")
print(f"音声の詳細: {voice_details}")
音声の更新
import dashscope
from dashscope.audio.tts_v2 import VoiceEnrollmentService
# シンガポールリージョンのエンドポイントを使用する例です。"{WorkspaceId}" を実際のワークスペース ID に置き換えてください。
dashscope.base_http_api_url = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1"
service = VoiceEnrollmentService()
service.update_voice(
voice_id='qwen-audio-3.0-tts-flash-myvoice-xxxxxxxx',
url='https://your-new-audio-file-url'
)
print(f"更新が送信されました。リクエスト ID: {service.get_last_request_id()}")
音声の削除
import dashscope
from dashscope.audio.tts_v2 import VoiceEnrollmentService
# シンガポールリージョンのエンドポイントを使用する例です。"{WorkspaceId}" を実際のワークスペース ID に置き換えてください。
dashscope.base_http_api_url = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1"
service = VoiceEnrollmentService()
service.delete_voice(voice_id='qwen-audio-3.0-tts-flash-myvoice-xxxxxxxx')
print(f"削除が送信されました。リクエスト ID: {service.get_last_request_id()}")