| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- #!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- """CosyVoice 测试 - 排查问题"""
- import requests, json, time, os
- API_KEY = "sk-c25679401ba24c749f53be86b0c9a7a6"
- API_URL = "https://dashscope.aliyuncs.com/api/v1/services/audio/tts/SpeechSynthesizer"
- OUTPUT_DIR = "test-results"
- os.makedirs(OUTPUT_DIR, exist_ok=True)
- def test(text, model, voice, label):
- payload = {
- "model": model,
- "input": {"text": text, "voice": voice, "format": "mp3", "sample_rate": 24000}
- }
- headers = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}
-
- t0 = time.time()
- resp = requests.post(API_URL, headers=headers, json=payload, timeout=60)
- elapsed = time.time() - t0
-
- data = resp.json()
- status = "✅" if resp.status_code == 200 else "❌"
- code = data.get("code", "OK") if resp.status_code != 200 else "OK"
- msg = data.get("message", "") if resp.status_code != 200 else "success"
-
- print(f"{status} [{label}] HTTP {resp.status_code} | {code} | {msg[:80]} | {elapsed:.1f}s")
-
- if resp.status_code == 200:
- audio_url = data.get("output", {}).get("audio", {}).get("url", "")
- chars = data.get("usage", {}).get("characters", 0)
- print(f" 字符数: {chars}, 音频URL: {audio_url[:80]}...")
-
- # 下载
- ar = requests.get(audio_url, timeout=30)
- if ar.status_code == 200:
- fname = os.path.join(OUTPUT_DIR, f"test-{label}-{int(time.time())}.mp3")
- with open(fname, "wb") as f: f.write(ar.content)
- print(f" 已保存: {fname} ({len(ar.content)} bytes)")
-
- return resp.status_code == 200
- print("=" * 50)
- print(" CosyVoice 故障排查")
- print("=" * 50)
- # 尝试不同模型+音色组合
- short_text = "你好,这是一段测试文本。欢迎使用CosyVoice语音合成服务。"
- tests = [
- # model, voice, label
- ("cosyvoice-v3.5-flash", "longanyang", "v3.5-flash+longanyang"),
- ("cosyvoice-v3.5-plus", "longanyang", "v3.5-plus+longanyang"),
- ("cosyvoice-v3-flash", "longanyang", "v3-flash+longanyang"),
- ("cosyvoice-v3.5-flash", "longxiaoxia", "v3.5-flash+longxiaoxia"),
- ("cosyvoice-v1", "longanyang", "v1+longanyang"),
- ("cosyvoice-v3.5-flash", "longyu", "v3.5-flash+longyu"),
- ("cosyvoice-v3-flash", "longyu", "v3-flash+longyu"),
- ]
- for model, voice, label in tests:
- if test(short_text, model, voice, label):
- print(f" >>> 成功组合: model={model}, voice={voice}\n")
- break
|