语音识别代码报错TypeError:speechtxt()需0个参数却传入1个,如何解决?
解决语音识别代码中的TypeError错误
我正在编写语音识别相关代码,运行程序时触发TypeError错误。以下是我的代码及报错信息:
代码
import pyttsx3 import pyaudio import speech_recognition as sr import webbrowser import datetime import pyjokes def sptext(): recognizer=sr.Recognizer() with sr.Microphone() as source: print("Listening....") recognizer.adjust_for_ambient_noise(source) audio = recognizer.listen(source) try: print("recognizing...") data = recognizer.recognize_google(audio) print(data) except sr.UnknownValueError: print("Not understanding") def speechtxt(): engine = pyttsx3.init() voices = engine.getProperty("voices") engine.setProperty("voice",voices[0].id) rate=engine.getProperty('rate') engine.setProperty('rate',150) engine.say(x) engine.runAndWait() speechtxt("hello")
报错信息
TypeError Traceback (most recent call last) Input In [32], in <cell line: 28>() 26 engine.say(x) 27 engine.runAndWait() ---> 28 speechtxt("hello") TypeError: speechtxt() takes 0 positional arguments but 1 was given
错误原因
speechtxt函数定义时未声明参数,但调用时传入了"hello"参数,导致参数不匹配触发TypeError。- 函数内部使用的变量
x未定义,即使参数问题解决,后续也会触发NameError。
修正方案
给speechtxt函数添加参数x,让调用时传入的字符串能被函数内部正常使用:
修正后的完整代码:
import pyttsx3 import pyaudio import speech_recognition as sr import webbrowser import datetime import pyjokes def sptext(): recognizer=sr.Recognizer() with sr.Microphone() as source: print("Listening....") recognizer.adjust_for_ambient_noise(source) audio = recognizer.listen(source) try: print("recognizing...") data = recognizer.recognize_google(audio) print(data) except sr.UnknownValueError: print("Not understanding") def speechtxt(x): # 添加参数x engine = pyttsx3.init() voices = engine.getProperty("voices") engine.setProperty("voice",voices[0].id) rate=engine.getProperty('rate') engine.setProperty('rate',150) engine.say(x) engine.runAndWait() speechtxt("hello")
内容的提问来源于stack exchange,提问作者user20017494
相关产品推荐
相关产品推荐

