#!/bin/bash # Test Aliyun TTS 3 ways: 默认 / Instruct 正常 / Instruct 慢速 set -e TEXT='窗台上落着几样旧物。一只白瓷杯,杯沿有一道细细的釉裂,里面还留着半盏凉透的茶。' API_KEY=$(grep '^DASHSCOPE_API_KEY=' /data/ai/audio/server/.env | cut -d= -f2) echo "=== A: Qwen-TTS 默认 1.0x (基准) ===" A_RESP=$(curl -sS -m 30 -X POST 'https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \ -H "Authorization: Bearer ${API_KEY}" -H 'Content-Type: application/json' \ -d "{\"model\":\"qwen3-tts-flash\",\"input\":{\"text\":\"${TEXT}\",\"voice\":\"Cherry\"},\"parameters\":{\"format\":\"mp3\",\"sample_rate\":24000}}") A_URL=$(echo "$A_RESP" | python3 -c 'import json,sys; d=json.load(sys.stdin); print(d.get("output",{}).get("audio",{}).get("url","") or "")') echo "URL: $A_URL" [ -n "$A_URL" ] && curl -sS -m 30 -o /tmp/aliyun-A.mp3 "$A_URL" && ls -la /tmp/aliyun-A.mp3 ffmpeg -i /tmp/aliyun-A.mp3 -f null - 2>&1 | grep Duration | head -1 echo echo "=== B: Qwen-TTS Instruct 语速较慢 ===" B_RESP=$(curl -sS -m 30 -X POST 'https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \ -H "Authorization: Bearer ${API_KEY}" -H 'Content-Type: application/json' \ -d "{\"model\":\"qwen3-tts-instruct-flash\",\"input\":{\"text\":\"${TEXT}\",\"voice\":\"Cherry\",\"instructions\":\"语速较慢\"},\"parameters\":{\"format\":\"mp3\",\"sample_rate\":24000}}") B_URL=$(echo "$B_RESP" | python3 -c 'import json,sys; d=json.load(sys.stdin); print(d.get("output",{}).get("audio",{}).get("url","") or "")') echo "URL: $B_URL" echo "Raw response (truncated):" echo "$B_RESP" | head -c 500 echo