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

OpenAI API及语音识别报错求助:Python新手开发者问题

语音GPT机器人报错问题及解决建议

一、OpenAI库报错:AttributeError: module 'openai' has no attribute 'GPT'

这个问题源于新版OpenAI SDK(v1.x及以上)重构了API结构,旧版代码里的openai.GPT类已被移除。

解决方法:

  1. 确保安装最新版OpenAI库:
pip install --upgrade openai
  1. 替换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无法创建有效音频流,引发后续操作报错。

解决步骤:

  1. 确认麦克风设备索引正确性
    运行以下代码列出所有可用麦克风,找到对应设备的正确索引:
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()
  1. 添加异常处理避免程序崩溃
    修改原代码循环逻辑,增加异常捕获:
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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 10:55:18