Package path: dashscope.audio.tts_v2.VoiceEnrollmentServicePurpose: Manage the lifecycle of Qwen-Audio-TTS, Qwen-Audio-Realtime, and CosyVoice cloned voices (create, query, update, and delete).
The target model that uses the voice. It must match the model used in subsequent requests with this voice; otherwise, the requests fail.
prefix
str
Yes
A prefix for the voice name. Only alphanumeric characters are allowed, with a maximum length of 10 characters. The resulting voice name follows this format: {target_model}-{prefix}-{unique_id}.
url
str
Yes
Reference audio for voice cloning. Accepts a publicly accessible URL or a Base64 Data URI, such as data:audio/wav;base64,....
language_hints
List[str]
No
Helps the model identify the language of the sample audio to extract voice features more accurately and improve cloning quality. If the specified language doesn't match the actual audio language (for example, setting en when the audio is in Chinese), the system ignores this value and detects the language automatically. This parameter is an array and must contain exactly one element. Note: Applies to 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 (cosyvoice-v3.5-plus and cosyvoice-v3.5-flash are available only in China North 2 (Beijing)).
The maximum duration (in seconds) of the reference audio after preprocessing. Valid values: [3.0, 30.0]. Default: 10.0. Note: Applies to 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 (cosyvoice-v3.5-plus and cosyvoice-v3.5-flash are available only in China North 2 (Beijing)).
enable_preprocess
bool
No
Whether to enable audio preprocessing (noise reduction, audio enhancement, and volume normalization). Enable this for recordings with background noise. Disable it for recordings in quiet environments to preserve the original voice characteristics. Default: false. Note: Applies to 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 (cosyvoice-v3.5-plus and cosyvoice-v3.5-flash are available only in China North 2 (Beijing)).
enable_volume_normalization
bool
No
Specifies whether to normalize the volume of the sample audio used for voice cloning. Pass this parameter directly as a keyword argument. Default value: False. If you set this parameter to True, the volume of audio synthesized with the created voice may differ from that of audio synthesized with a voice created with this parameter disabled.
import dashscopefrom dashscope.audio.tts_v2 import VoiceEnrollmentService# Singapore (ap-southeast-1). For another region, replace ap-southeast-1 in the URL.# API keys are region-specific. See https://docs.qwencloud.com/developer-guides/getting-started/regionsdashscope.base_http_api_url = "https://ap-southeast-1.maas.qwencloudapi.com/api/v1"TARGET_MODEL = 'qwen-audio-3.0-tts-flash'voice_prefix = 'myvoice'url = 'https://your-audio-file-url'service = VoiceEnrollmentService()# Avoid frequent calls. Each call creates a new voice, and you can't create# more after reaching the quota limit.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"Request ID: {service.get_last_request_id()}")print(f"Voice ID: {voice_id}")
For a local WAV file, replace the url assignment above with the following code before calling create_voice. To update a voice, also pass the Data URI through the url parameter of update_voice. Replace sample.wav with your local audio path.
import dashscopefrom dashscope.audio.tts_v2 import VoiceEnrollmentService# Singapore (ap-southeast-1). For another region, replace ap-southeast-1 in the URL.# API keys are region-specific. See https://docs.qwencloud.com/developer-guides/getting-started/regionsdashscope.base_http_api_url = "https://ap-southeast-1.maas.qwencloudapi.com/api/v1"service = VoiceEnrollmentService()# Filter by prefix, or set to None to list all voicesvoices = service.list_voices(prefix='myvoice', page_index=0, page_size=10)print(f"Request ID: {service.get_last_request_id()}")print(f"Found voices: {voices}")
import dashscopefrom dashscope.audio.tts_v2 import VoiceEnrollmentService# Singapore (ap-southeast-1). For another region, replace ap-southeast-1 in the URL.# API keys are region-specific. See https://docs.qwencloud.com/developer-guides/getting-started/regionsdashscope.base_http_api_url = "https://ap-southeast-1.maas.qwencloudapi.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"Request ID: {service.get_last_request_id()}")print(f"Voice Details: {voice_details}")
import dashscopefrom dashscope.audio.tts_v2 import VoiceEnrollmentService# Singapore (ap-southeast-1). For another region, replace ap-southeast-1 in the URL.# API keys are region-specific. See https://docs.qwencloud.com/developer-guides/getting-started/regionsdashscope.base_http_api_url = "https://ap-southeast-1.maas.qwencloudapi.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"Update submitted. Request ID: {service.get_last_request_id()}")
import dashscopefrom dashscope.audio.tts_v2 import VoiceEnrollmentService# Singapore (ap-southeast-1). For another region, replace ap-southeast-1 in the URL.# API keys are region-specific. See https://docs.qwencloud.com/developer-guides/getting-started/regionsdashscope.base_http_api_url = "https://ap-southeast-1.maas.qwencloudapi.com/api/v1"service = VoiceEnrollmentService()service.delete_voice(voice_id='qwen-audio-3.0-tts-flash-myvoice-xxxxxxxx')print(f"Deletion submitted. Request ID: {service.get_last_request_id()}")