dashscope について
dashscope は、OpenMontage から DashScope の画像生成、テキスト読み上げ、音声認識を利用するスキルです。DashScope ネイティブのエンドポイントを使い、文字単位のタイムスタンプ付き認識にも対応します。
主な機能
- 01サイズと枚数を指定した画像生成
- 02テキストの音声合成
- 03単語単位のタイムスタンプ付き音声認識
- 04モデルと言語設定の指定
活用シーン
- 01動画プロジェクト用の画像素材を作成
- 02音声と声を選んでナレーションを制作
- 03公開音声 URL から字幕用タイミングを生成
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ calesthio/ openmontage --skill dashscopeインストール後、Claude Code で/dashscopeを入力して読み込まれたか確認します。
詳細
DashScope
.env に DASHSCOPE_API_KEY が必要です。https://dashscope.aliyun.com/ で取得してください。
現在の API
重要: DashScope の /compatible-mode/v1/ がサポートしているのは /chat/completions と /embeddings のみです。画像生成、TTS、ASR はすべて DashScope ネイティブのエンドポイントを使用し、OpenAI 互換のパスは使用しません。
3 つのツールはいずれも Authorization: Bearer $DASHSCOPE_API_KEY を使用します。
画像生成
POST https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
- モデル:
qwen-image-2.0-pro(デフォルト)、qwen-image-max、wan2.7-image、z-image-turbo - ボディ:
{model, input: {messages: [{role: "user", content: [{text: "prompt"}]}]}, parameters: {size: "W*H", n, prompt_extend, watermark}} - サイズ形式にはアスタリスクを使用します:
"1024x1024"ではなく"1024*1024" - レスポンス:
output.choices[0].message.content[0].image(URL、有効期間は約 24 時間)。別途ダウンロードが必要です
テキスト読み上げ
POST https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
画像生成と同じエンドポイントを使用し、ボディは異なります。
- モデル:
qwen3-tts-flash(デフォルト)、qwen3-tts-instruct-flash、qwen-tts-2025-05-22 - ボディ:
{model, input: {text, voice: "Cherry", language_type: "Auto"}} - レスポンス:
output.audio.url(WAV、有効期間は約 24 時間)。別途ダウンロードが必要です
単語レベルのタイムスタンプ付き ASR
POST https://dashscope.aliyuncs.com/api/v1/services/audio/asr/transcription
Header: X-DashScope-Async: enable
- モデル:
qwen3-asr-flash-filetrans(qwen3-asr-flashではありません。同期バージョンには単語のタイムスタンプがありません) - ボディ:
{model, input: {file_url: "https://public-url/audio.mp3"}, parameters: {enable_words: true, language_hints: ["zh","en"]}} task_idが返されます →SUCCEEDEDになるまでGET /api/v1/tasks/{task_id}をポーリングします →output.result.transcription_urlをダウンロードします →transcripts[].sentences[].words[]を含む JSON が得られますbegin_time/end_timeのタイムスタンプの単位は ミリ秒です。ツールが秒に正規化します
OpenMontage での使用方法
セレクター経由の画像生成
from tools.graphics.image_selector import ImageSelector
result = ImageSelector().execute({
"preferred_provider": "dashscope",
"prompt": "一只猫坐在沙发上",
"output_path": "projects/my-video/assets/images/cat.png",
})
セレクター経由の TTS
from tools.audio.tts_selector import TTSSelector
result = TTSSelector().execute({
"preferred_provider": "dashscope",
"text": "如果 AI 真的会改变未来,普通人到底该怎么参与?",
"voice": "Cherry",
"output_path": "projects/my-video/assets/audio/narration.wav",
})
ASR を直接使用(字幕用の単語タイムスタンプ)
from tools.analysis.dashscope_asr import DashscopeAsr
result = DashscopeAsr().execute({
"audio_url": "https://example.com/narration.wav",
"output_path": "projects/my-video/assets/audio/transcription.json",
})
# result.data["words"] is a flat list of {text, begin_time_seconds, end_time_seconds}
推奨ワークフロー
- 画像: まずサンプルを生成します。
prompt_extend: true(デフォルト)を確認してください。DashScope がプロンプトを書き換えて、より良い結果を得られるようにします。プロンプトへの忠実な準拠が必要な場合は無効にしてください。 - TTS: ナレーション全体を生成する前に、10~15 秒のサンプルを生成します。全体を生成する前に、音声と話すペースを確認してください。
- ASR: 音声は 誰でもアクセスできる URL に置く必要があります。まず S3 などの公開ホストにアップロードしてください。ローカルパスは明確なエラーとともに拒否されます。
- 字幕:
result.data["words"]から作成します。各単語にはbegin_time_secondsとend_time_secondsがあります。固定の文字数ではなく、言語の意味に基づいて単語を字幕フレーズにまとめてください。
パラメーター
画像(dashscope_image)
prompt(必須):テキストプロンプトmodel:デフォルトはqwen-image-2.0-prosize:デフォルトは"1024*1024"。区切り文字はアスタリスクで、「x」ではありませんn:画像の枚数(1~6)negative_prompt:避けたい要素(最大 500 文字)prompt_extend:デフォルトはtrue。より良い結果を得るためにプロンプトを自動で書き換えますwatermark:デフォルトはfalseseed:再現性を確保するために使用します
TTS(dashscope_tts)
text(必須):合成するテキスト(qwen3-tts-flashでは最大 600 文字)model:デフォルトはqwen3-tts-flashvoice:デフォルトは"Cherry"。ほかの音声には"Ethan"、"Chelsie"などがありますlanguage_type:デフォルトは"Auto"。"Chinese"、"English"、"Japanese"、"Korean"instructions:自然言語による読み上げ指示(qwen3-tts-instruct-flashでのみ使用できます)
ASR(dashscope_asr)
audio_url(必須):誰でもアクセスできる URL が必要ですmodel:qwen3-asr-flash-filetrans(単語のタイムスタンプをサポートする唯一のモデル)language_hints:デフォルトは["zh", "en"]enable_words:デフォルトはtrue。単語レベルのタイムスタンプに必要ですpoll_interval_seconds:デフォルトは5.0timeout_seconds:デフォルトは300
トラブルシューティング
- 画像サイズのエラー:
"WxH"ではなく、アスタリスクを使った"W*H"を指定してください。例:"2048*2048"。 - TTS の音声 URL がない:
output.audio.urlを確認してください。空の場合は、モデル名または音声が間違っている可能性があります。 - ASR の「ファイルにアクセスできません」エラー:
audio_urlはパブリックにアクセス可能である必要があります。DashScope サーバーがファイルを取得するため、ローカルパスや認証が必要な URL は使用できません。 - ASR のポーリングがタイムアウトする:
timeout_secondsを増やしてください(デフォルトは 300)。長い音声ファイルは文字起こしに時間がかかります。 - ASR で単語のタイムスタンプがない:
enable_words: trueが設定され、モデルがqwen3-asr-flash-filetrans(同期型のqwen3-asr-flashではない)であることを確認してください。 - 認証エラー(401):
DASHSCOPE_API_KEYが設定されていることを確認してください。Authorization: Bearer $KEYヘッダーを使用してください。
安全性
API キーをログ、メタデータ、パッチ、プロジェクト成果物に出力または書き込まないでください。.env.example には空の変数名のみを記載してください。このツールの _safe_error() メソッドはエラーメッセージからキーをマスキングします。
コメント
Markdown 対応