语音转文本正常但调用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
相关产品推荐
相关产品推荐

