
DashScope Media
Generates Qwen images and speech, and transcribes audio with word timestamps.
Install
npx skills add calesthio/OpenMontage --skill dashscope -g -a claude-code -y- Repository
- calesthio/OpenMontage74.3k
- Category
- Media
- Updated
- 7d ago
- License
- AGPL-3.0
- Context cost
- Lightabout 1,418 tokens
- Runs scripts
- No, instructions only
What it does
DashScope (Alibaba Cloud Bailian / 阿里云百炼) integration, image generation (qwen-image-2.0-pro), text-to-speech (qwen3-tts-flash), and ASR with word-level timestamps (qwen3-asr-flash-filetrans). Use when generating images via Qwen-Image, narrating via Qwen-TTS, or transcribing with word-level timestamps via Qwen-ASR.
DashScope
Requires DASHSCOPE_API_KEY in .env. Get one at https://dashscope.aliyun.com/.
Current API
CRITICAL: DashScope's /compatible-mode/v1/ only supports /chat/completions and /embeddings. Image generation, TTS, and ASR all use DashScope-native endpoints, not OpenAI-compatible paths.
All three tools use Authorization: Bearer $DASHSCOPE_API_KEY.
Image Generation
POST https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
- Model:
qwen-image-2.0-pro(default),qwen-image-max,wan2.7-image,z-image-turbo - Body:
{model, input: {messages: [{role: "user", content: [{text: "prompt"}]}]}, parameters: {size: "W*H", n, prompt_extend, watermark}} - Size format uses asterisk:
"1024*1024"not"1024x1024" - Response:
output.choices[0].message.content[0].image(URL, valid ~24h), must download separately
Text-to-Speech
POST https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
Same endpoint as image gen, different body.
- Model:
qwen3-tts-flash(default),qwen3-tts-instruct-flash,qwen-tts-2025-05-22 - Body:
{model, input: {text, voice: "Cherry", language_type: "Auto"}} - Response:
output.audio.url(WAV, valid ~24h), must download separately
ASR with Word-Level Timestamps
POST https://dashscope.aliyuncs.com/api/v1/services/audio/asr/transcription
Header: X-DashScope-Async: enable
- Model:
qwen3-asr-flash-filetrans(NOTqwen3-asr-flash, the sync version has no word timestamps) - Body:
{model, input: {file_url: "https://public-url/audio.mp3"}, parameters: {enable_words: true, language_hints: ["zh","en"]}} - Returns
task_id→ pollGET /api/v1/tasks/{task_id}untilSUCCEEDED→ downloadoutput.result.transcription_url→ JSON withtranscripts[].sentences[].words[] - Timestamps in
begin_time/end_timeare in milliseconds, the tool normalizes to seconds


