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拼写错误,应改为recognizergenerate_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
相关产品推荐
相关产品推荐

