
Aliyun Qwen Tts Voice Clone
- 105 installs
- 396 repo stars
- Updated July 18, 2026
- cinience/alicloud-skills
Clone voices with Alibaba Cloud Model Studio Qwen TTS VC models from sample audio and synthesize text in the cloned timbre.
About
Uses Model Studio Qwen TTS VC models to replicate a voice timbre from enrollment audio and synthesize speech with it. A developer uses it to create and use cloned voices for TTS.
- qwen3-tts-vc and vc-realtime model variants
- Enrollment-from-sample then synthesis with cloned timbre
Aliyun Qwen Tts Voice Clone by the numbers
- 105 all-time installs (skills.sh)
- Ranked #784 of 1,335 Generative Media skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/cinience/alicloud-skills --skill aliyun-qwen-tts-voice-cloneAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 105 |
|---|---|
| repo stars | ★ 396 |
| Last updated | July 18, 2026 |
| Repository | cinience/alicloud-skills ↗ |
What it does
Clone voices with Alibaba Cloud Model Studio Qwen TTS VC models from sample audio and synthesize text in the cloned timbre.
Files
Category: provider
Model Studio Qwen TTS Voice Clone
Use voice cloning models to replicate timbre from enrollment audio samples.
Critical model names
Use one of these exact model strings:
qwen3-tts-vc-2026-01-22qwen3-tts-vc-realtime-2026-01-15
Prerequisites
- Install SDK in a virtual environment:
python3 -m venv .venv
. .venv/bin/activate
python -m pip install dashscope- Set
DASHSCOPE_API_KEYin your environment, or adddashscope_api_keyto~/.alibabacloud/credentials.
Normalized interface (tts.voice_clone)
Request
text(string, required)voice_sample(string | bytes, required) enrollment samplevoice_name(string, optional)stream(bool, optional)
Response
audio_url(string) or streaming PCM chunksvoice_id(string)request_id(string)
Operational guidance
- Use clean speech samples with low background noise.
- Respect consent and policy requirements for cloned voices.
- Persist generated
voice_idand reuse for future synthesis requests.
Local helper script
Prepare a normalized request JSON and validate response schema:
.venv/bin/python skills/ai/audio/aliyun-qwen-tts-voice-clone/scripts/prepare_voice_clone_request.py \
--text "Welcome to this voice-clone demo" \
--voice-sample "https://example.com/voice-sample.wav"Output location
- Default output:
output/ai-audio-tts-voice-clone/audio/ - Override base dir with
OUTPUT_DIR.
Validation
mkdir -p output/aliyun-qwen-tts-voice-clone
for f in skills/ai/audio/aliyun-qwen-tts-voice-clone/scripts/*.py; do
python3 -m py_compile "$f"
done
echo "py_compile_ok" > output/aliyun-qwen-tts-voice-clone/validate.txtPass criteria: command exits 0 and output/aliyun-qwen-tts-voice-clone/validate.txt is generated.
Output And Evidence
- Save artifacts, command outputs, and API response summaries under
output/aliyun-qwen-tts-voice-clone/. - Include key parameters (region/resource id/time range) in evidence files for reproducibility.
Workflow
1) Confirm user intent, region, identifiers, and whether the operation is read-only or mutating. 2) Run one minimal read-only query first to verify connectivity and permissions. 3) Execute the target operation with explicit parameters and bounded scope. 4) Verify results and save output/evidence files.
References
references/sources.md
interface:
display_name: "Alibaba Cloud AI Audio TTS Voice Clone"
short_description: "Qwen voice cloning workflows"
default_prompt: "Use $aliyun-qwen-tts-voice-clone to complete this ai/audio voice cloning task on Alibaba Cloud."
- https://help.aliyun.com/zh/model-studio/qwen-tts-voice-cloning
- https://help.aliyun.com/zh/model-studio/newly-released-models
#!/usr/bin/env python3
"""Prepare and validate normalized request/response for Qwen TTS voice clone."""
from __future__ import annotations
import argparse
import json
import sys
from pathlib import Path
def _load_json(path: str) -> dict:
return json.loads(Path(path).read_text(encoding="utf-8"))
def main() -> None:
parser = argparse.ArgumentParser(description="Prepare tts.voice_clone request and validate response shape")
parser.add_argument("--text", required=True)
parser.add_argument("--voice-sample", required=True)
parser.add_argument("--voice-name")
parser.add_argument("--stream", action="store_true")
parser.add_argument("--output", default="output/ai-audio-tts-voice-clone/request.json")
parser.add_argument("--validate-response", help="Path to JSON response file")
args = parser.parse_args()
req = {
"text": args.text,
"voice_sample": args.voice_sample,
"stream": bool(args.stream),
}
if args.voice_name:
req["voice_name"] = args.voice_name
out = Path(args.output)
out.parent.mkdir(parents=True, exist_ok=True)
out.write_text(json.dumps(req, ensure_ascii=False, indent=2), encoding="utf-8")
result = {"ok": True, "request_path": str(out)}
if args.validate_response:
resp = _load_json(args.validate_response)
if "audio_url" not in resp and "audio_base64_pcm" not in resp:
print(json.dumps({"ok": False, "error": "missing audio_url/audio_base64_pcm"}, ensure_ascii=False))
sys.exit(1)
result["response_valid"] = True
print(json.dumps(result, ensure_ascii=False))
if __name__ == "__main__":
main()