OpenAI API及语音识别报错求助:Python新手开发者问题
语音GPT机器人报错问题及解决建议
一、OpenAI库报错:AttributeError: module 'openai' has no attribute 'GPT'
这个问题源于新版OpenAI SDK(v1.x及以上)重构了API结构,旧版代码里的openai.GPT类已被移除。
解决方法:
- 确保安装最新版OpenAI库:
pip install --upgrade openai
- 替换API调用逻辑为新版规范:
原代码中:
response = openai.Completion.create(engine='text-davinci-003', prompt=conversation, max_tokens=100)
改为:
from openai import OpenAI client = OpenAI(api_key=API_KEY) response = client.completions.create(model='text-davinci-003', prompt=conversation, max_tokens=100)
(注:新版SDK将engine参数统一改为model)
二、麦克风相关报错:AssertionError 与 AttributeError: 'NoneType' object has no attribute 'close'
这两个错误的核心是麦克风设备初始化失败,导致with mic as source无法创建有效音频流,引发后续操作报错。
解决步骤:
- 确认麦克风设备索引正确性
运行以下代码列出所有可用麦克风,找到对应设备的正确索引:
import speech_recognition as sr for idx, name in enumerate(sr.Microphone.list_microphone_names()): print(f"设备索引 {idx}: {name}")
将代码中mic = sr.Microphone(device_index=1)的device_index替换为正确值,或直接删除该参数,让系统自动选择默认麦克风:
mic = sr.Microphone()
- 添加异常处理避免程序崩溃
修改原代码循环逻辑,增加异常捕获:
while True: try: with mic as source: print("\nlistening...") r.adjust_for_ambient_noise(source, duration=0.2) audio = r.listen(source) print("no longer listening.\n") except Exception as e: print(f"麦克风异常: {str(e)}") mic = sr.Microphone(device_index=你的正确索引) continue try: user_input = r.recognize_google(audio) except sr.UnknownValueError: print("无法识别语音,请重新说一遍") continue except sr.RequestError as e: print(f"语音识别服务请求失败: {str(e)}") continue # 后续对话逻辑保持不变 prompt = user_name + ": " + user_input + "\n" + bot_name+ ": " conversation += prompt response = client.completions.create(model='text-davinci-003', prompt=conversation, max_tokens=100) response_str = response["choices"][0]["text"].replace("\n", "") response_str = response_str.split(user_name + ": ", 1)[0].split(bot_name + ": ", 1)[0] conversation += response_str + "\n" print(response_str) engine.say(response_str) engine.runAndWait()
内容的提问来源于stack exchange,提问作者Danie Forsell
相关产品推荐
相关产品推荐

