test-aliyun-tts.sh 1.7 KB

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