繁体   English   中英

python语音识别中的AttributeError

[英]AttributeError in python speech recognition

import speech_recognition as sr

r = sr.Recognizer()

with sr.Microphone as source:
   print("Say something")
   audio = r.listen(source)
   voice_data = r.recognize_google(audio)
   print(voice_data)

我正在尝试编译这段代码,但它给出了这样的错误:-

Exception has occurred: AttributeError
__enter__
File "C:\Users\admin\Desktop\text to speech\speech to text.py", line 5, in 
<module>
with sr.Microphone as source:

上下文管理器中使用的每个对象都应该在其类中实现一个__enter__方法和一个__exit__方法。 您正在使用的对象sr.Microphone是未实现它们的类的实例。 要解决此问题,您不应该使用上下文管理器(不要使用with ),或者为sr.Microphone的类实现__enter____exit__方法。 您可以在 Python 文档中找到有关上下文管理器的详细说明,或在此处找到更简短的说明。

你只需要使用sr.Microphone()你忘记了括号。 记住麦克风是一种方法。

看起来您的意图不正确。 修复缩进后尝试运行:

import speech_recognition as sr

r = sr.Recognizer()

with sr.Microphone as source:
  print("Say something")
  audio = r.listen(source)
  voice_data = r.recognize_google(audio)
  print(voice_data)

正如@motyzk 回答的那样,上下文管理器应该在其类中实现了一个进入方法和一个退出方法。 但我相信 sr.Microphone 已经有了它。 请检查您是否已安装所有必需的库

我知道这有点晚了,但尝试使用sr.Microphone()而不是sr.Microphone

>>> import speech_recognition as sr
>>> type(sr.Microphone)
<class 'type'>
>>> type(sr.Microphone())
<class 'speech_recognition.Microphone'>

在这里您可以看到sr.Microphone()sr.Microphone之间的区别,因为一个是类型,一个是该类型的实际实例。

类型本身没有在上下文管理器中使用的方法,但类的实例有。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM