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

语音识别代码报错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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 17:05:43