import os
import dashscope
dashscope.base_http_api_url = "https://dashscope.aliyuncs.com/api/v1"
#file_url="https://aihuanxin.cn/kunlun/ingress/api/68b329/0afa024051ea4765b95d5405766aa2e8/ai-6d0d567e3d194163aa0c05822759ef42/service-e4e907b73b8641a1b7d0e79ad1017549/download/BAC009S0764W0358.wav"
file_url="http://115.190.192.57/v20260807/BAC009S0764W0358.wav"

messages = [
    {
        "role": "system",
        "content": [
            # 此处用于配置定制化识别的Context
            {"text": ""},
        ]
    },
    {
        "role": "user",
        "content": [
            {"audio": file_url},
        ]
    }
]
response = dashscope.MultiModalConversation.call(
    # 若没有配置环境变量，请用百炼API Key将下行替换为：api_key = "sk-xxx"
    api_key="sk-ws-H.ERIYIDE.QwPD.MEQCIEOfnnXapOxFTSOzVwMjaHG5enM5VQky-i3EOdHKsDxXAiB0jLizolM-xmDjp9Lh5_ri4WCef3iUbFJk5lf2P9G02A",
    model="qwen3-asr-flash",
    messages=messages,
    result_format="message",
    asr_options={
        # "language": "zh", # 可选，若已知音频的语种，可通过该参数指定待识别语种，以提升识别准确率
        "enable_lid":True,
        "enable_itn":False
    }
)

def extract_text(response_data):
    """
    从 API 响应中提取文本内容，若报错则返回错误消息。

    :param response_data: 可以是 JSON 字符串或已解析的 dict
    :return: 提取的文本或错误信息
    """
    # 如果是字符串，先解析为 dict
    if isinstance(response_data, str):
        try:
            data = json.loads(response_data)
        except json.JSONDecodeError:
            return "无效的 JSON 响应"
    else:
        data = response_data

    # 判断是否报错：如果 code 非空 或 message 非空，视为错误
    if data.get("code") or data.get("message"):
        return data.get("message", "未知错误")

    # 尝试提取成功时的文本
    try:
        text = data["output"]["choices"][0]["message"]["content"][0]["text"]
        return text
    except (KeyError, IndexError, TypeError) as e:
        # 如果结构不符合预期，返回错误信息
        return data.get("message", f"解析响应失败: {e}")

print(extract_text(response))
