
Aliyun Wan Digital Human
- 84 installs
- 396 repo stars
- Updated July 18, 2026
- cinience/alicloud-skills
Generates talking, singing, or presentation avatar videos from a single character image and audio using Alibaba Cloud Model Studio wan2.2-s2v.
About
This skill validates a character image then generates image-plus-audio driven speaking, singing, or presenting videos via Model Studio wan2.2-s2v. A developer uses it to make narrated avatar clips, singing portraits, or broadcast-style talking heads.
- Two models: wan2.2-s2v-detect to validate, wan2.2-s2v to generate
- Scenario options talk/sing/perform at 480P or 720P, Beijing region only
Aliyun Wan Digital Human by the numbers
- 84 all-time installs (skills.sh)
- Ranked #811 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-wan-digital-humanAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 84 |
|---|---|
| repo stars | ★ 396 |
| Last updated | July 18, 2026 |
| Repository | cinience/alicloud-skills ↗ |
What it does
Generates talking, singing, or presentation avatar videos from a single character image and audio using Alibaba Cloud Model Studio wan2.2-s2v.
Files
Category: provider
Model Studio Digital Human
Validation
mkdir -p output/aliyun-wan-digital-human
python -m py_compile skills/ai/video/aliyun-wan-digital-human/scripts/prepare_digital_human_request.py && echo "py_compile_ok" > output/aliyun-wan-digital-human/validate.txtPass criteria: command exits 0 and output/aliyun-wan-digital-human/validate.txt is generated.
Output And Evidence
- Save normalized request payloads, chosen resolution, and task polling snapshots under
output/aliyun-wan-digital-human/. - Record image/audio URLs and whether the input image passed detection.
Use this skill for image + audio driven speaking, singing, or presenting characters.
Critical model names
Use these exact model strings:
wan2.2-s2v-detectwan2.2-s2v
Selection guidance:
- Run
wan2.2-s2v-detectfirst to validate the image. - Use
wan2.2-s2vfor the actual video generation job.
Prerequisites
- China mainland (Beijing) only.
- Set
DASHSCOPE_API_KEYin your environment, or adddashscope_api_keyto~/.alibabacloud/credentials. - Input audio should contain clear speech or singing, and input image should depict a clear subject.
Normalized interface (video.digital_human)
Detect Request
model(string, optional): defaultwan2.2-s2v-detectimage_url(string, required)
Generate Request
model(string, optional): defaultwan2.2-s2vimage_url(string, required)audio_url(string, required)resolution(string, optional):480Por720Pscenario(string, optional):talk,sing, orperform
Response
task_id(string)task_status(string)video_url(string, when finished)
Quick start
python skills/ai/video/aliyun-wan-digital-human/scripts/prepare_digital_human_request.py \
--image-url "https://example.com/anchor.png" \
--audio-url "https://example.com/voice.mp3" \
--resolution 720P \
--scenario talkOperational guidance
- Use a portrait, half-body, or full-body image with a clear face and stable framing.
- Match audio length to the desired output duration; the output follows the audio length up to the model limit.
- Keep image and audio as public HTTP/HTTPS URLs.
- If the image fails detection, do not proceed directly to video generation.
Output location
- Default output:
output/aliyun-wan-digital-human/request.json - Override base dir with
OUTPUT_DIR.
References
references/sources.md
interface:
display_name: "Alibaba Cloud AI Video Digital Human"
short_description: "Talking or singing avatar videos from image + audio"
default_prompt: "Use $aliyun-wan-digital-human to complete this ai/video digital-human task on Alibaba Cloud."
- 视频生成总览(万相-数字人): https://help.aliyun.com/zh/model-studio/use-video-generation
- 数字人wan2.2-s2v视频生成API参考: https://help.aliyun.com/zh/model-studio/wan-s2v-api
#!/usr/bin/env python3
"""Prepare a normalized request for Model Studio digital human generation."""
from __future__ import annotations
import argparse
import json
from pathlib import Path
def main() -> None:
parser = argparse.ArgumentParser()
parser.add_argument("--image-url", required=True)
parser.add_argument("--audio-url")
parser.add_argument("--resolution", choices=["480P", "720P"])
parser.add_argument("--scenario", choices=["talk", "sing", "perform"])
parser.add_argument("--detect-only", action="store_true")
parser.add_argument("--output", default="output/aliyun-wan-digital-human/request.json")
args = parser.parse_args()
if args.detect_only:
payload = {
"model": "wan2.2-s2v-detect",
"input": {
"image_url": args.image_url,
},
}
else:
if not args.audio_url:
raise SystemExit("--audio-url is required unless --detect-only is set")
payload = {
"model": "wan2.2-s2v",
"input": {
"image_url": args.image_url,
"audio_url": args.audio_url,
},
"parameters": {},
}
if args.resolution:
payload["parameters"]["resolution"] = args.resolution
if args.scenario:
payload["parameters"]["scenario"] = args.scenario
output = Path(args.output)
output.parent.mkdir(parents=True, exist_ok=True)
output.write_text(json.dumps(payload, ensure_ascii=False, indent=2), encoding="utf-8")
print(json.dumps({"ok": True, "request_path": str(output)}, ensure_ascii=False))
if __name__ == "__main__":
main()