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

Python speech_recognition模块报错:无'recognize'属性的技术问询

Python语音交互代码调试错误解决

运行基于speech_recognition库的Python语音交互代码时,触发错误提示:

An error occurred : module 'speech_recognition' has no attribute 'recognize'

错误根源

代码中这一行写法错误:

recognizer=sr.recognize()

正确写法应为:

recognizer=sr.Recognizer()

Recognizer是库中的类,需首字母大写且加括号实例化对象,小写的recognize并非库的顶层属性,因此触发该错误。

额外代码修正提示

除核心错误外,代码还有几处拼写和调用问题需修正:

  • transcribe_audio_to_test函数中,变量recogizer拼写错误,应改为recognizer
  • generate_response函数中,response["Choices"]的键名应为小写choices,否则会触发KeyError
  • 打印语句中的yuo应为you,resopnse应为response

修正后的完整代码

import openai
import pyttsx3
import speech_recognition as sr
import time 

# Initialize OpenAI API
openai.api_key = "myapikey"
# Initialize the text to speech engine 
engine=pyttsx3.init()

def transcribe_audio_to_text(filename):
    recognizer=sr.Recognizer()
    with sr.AudioFile(filename) as source:
        audio=recognizer.record(source) 
    try:
        return recognizer.recognize_google(audio)
    except:
        print("skipping unknown error")

def generate_response(prompt):
    response= openai.Completion.create(
        engine="text-davinci-003",
        prompt=prompt,
        max_tokens=4000,
        n=1,
        stop=None,
        temperature=0.5,
    )
    return response["choices"][0]["text"]

def speak_text(text):
    engine.say(text)
    engine.runAndWait()

def main():
    while True:
        # Wait for user to say "genius"
        print("Say 'Genius' to start recording your question")
        with sr.Microphone() as source:
            recognizer=sr.Recognizer()
            audio=recognizer.listen(source)
            try:
                transcription = recognizer.recognize_google(audio)
                if transcription.lower()=="genius":
                    # Record audio
                    filename ="input.wav"
                    print("Say your question")
                    with sr.Microphone() as source:
                        recognizer=sr.Recognizer()
                        source.pause_threshold=1
                        audio=recognizer.listen(source, phrase_time_limit=None, timeout=None)
                        with open(filename,"wb") as f:
                            f.write(audio.get_wav_data())
                            
                    # Transcribe audio to text 
                    text=transcribe_audio_to_text(filename)
                    if text:
                        print(f"You said {text}")
                        
                        # Generate the response
                        response = generate_response(text)
                        print(f"ChatGPT says {response}")
                            
                        # Read response aloud
                        speak_text(response)
            except Exception as e:
                print("An error occurred : {}".format(e))

if __name__=="__main__":
    main()

内容的提问来源于stack exchange,提问作者axel cardona vasquez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 14:19:59