You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

语音转文本正常但调用DeepL API翻译函数报错求助

DeepL API翻译函数报错排查与修复方案

以下是针对代码问题的具体修复点:

1. 修正异常捕获语法错误

main.py中捕获UnknownValueError时多写了括号,正确写法无需括号:

except speech_recognition.UnknownValueError:  # 移除后面的()
    recognizer = speech_recognition.Recognizer()
    continue

2. 补充API请求错误处理逻辑

translator.py未处理API请求失败的场景(如网络异常、密钥无效、响应格式错误),直接访问result["translations"]会触发KeyError。修改后代码:

import requests

def translate_text_deepl(text, target_language):
    api_key = "MY_API_Key"
    # 注意:免费版DeepL API需用此URL,付费版才用api.deepl.com
    url = "https://api-free.deepl.com/v2/translate"
    data = {
        "auth_key": api_key,
        "text": text,
        "target_lang": target_language.upper()  # DeepL要求目标语言为大写,如"EN"
    }
    try:
        response = requests.post(url, data=data)
        response.raise_for_status()  # 触发HTTP错误(如401密钥无效、400参数错误)
        result = response.json()
        return result["translations"][0]["text"]
    except requests.exceptions.RequestException as e:
        print(f"API请求出错: {str(e)}")
        return None
    except KeyError as e:
        print(f"响应解析出错: {str(e)}")
        return None

3. 匹配API密钥与URL

  • 若使用免费版DeepL API,必须将URL改为https://api-free.deepl.com/v2/translate,付费版才使用https://api.deepl.com/v2/translate
  • 确认MY_API_Key替换为实际的DeepL密钥,免费版密钥格式为xxxxxx:fx,付费版为纯字符串

4. 规范目标语言参数格式

DeepL API要求target_lang参数为大写字母(如"EN"而非"en"),代码中加入.upper()确保格式合规。

内容的提问来源于stack exchange,提问作者Tolga Aktas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 00:40:40