首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我正在尝试制作一个虚拟助手,但我一直收到错误:"builtins.NameError:名称'r‘未定义“,即使我定义了r

我正在尝试制作一个虚拟助手,但我一直收到错误:"builtins.NameError:名称'r‘未定义“,即使我定义了r
EN

Stack Overflow用户
提问于 2021-05-18 05:21:46
回答 1查看 59关注 0票数 0

我正在尝试制作一个虚拟助手,我使用了tim的基本代码https://www.techwithtim.net/tutorials/voice-assistant/的技术。我试着让助理问你的名字,然后说你叫什么名字。它给了我一个奇怪的变量没有定义的错误,但我定义了它。下面是我的代码:

代码语言:javascript
运行
复制
import os
import time
import playsound
from playsound import *
import speech_recognition as sr
from gtts import gTTS
import pyaudio
import time

def speak(text):
    tts = gTTS(text=text, lang="en")
    filename = "voice.mp3"
    tts.save(filename)
    playsound(filename)


def get_audio():
    r = sr.Recognizer()
    with sr.Microphone() as source:
        audio = r.listen(source)
        said = ""

        try:
            said = r.recognize_google(audio)
            print(said)
        except Exception as e:
            print("Exception: " + str(e))

    return said

text = get_audio()

if "hello" in text:
    speak("hello, what is your name?")
    name = r.recognize_google(audio)
    time.sleep(1)
    ("How are you", name)
    if "good" in text:
        speak("Great! My name is bot by the way!")
time.sleep(99)

我得到的错误是:

代码语言:javascript
运行
复制
builtins.NameError: name 'r' is not defined
EN

回答 1

Stack Overflow用户

发布于 2021-05-18 05:26:42

这是因为当你定义r时,它是一个局部变量。这意味着当函数结束时,变量将被删除。

您要做的是在函数结束时返回变量r。

像这样

代码语言:javascript
运行
复制
import os
import time
import playsound
from playsound import *
import speech_recognition as sr
from gtts import gTTS
import pyaudio
import time

def speak(text):
    tts = gTTS(text=text, lang="en")
    filename = "voice.mp3"
    tts.save(filename)
    playsound(filename)


def get_audio():
    r = sr.Recognizer()
    with sr.Microphone() as source:
        audio = r.listen(source)
        said = ""

        try:
            said = r.recognize_google(audio)
            print(said)
        except Exception as e:
            print("Exception: " + str(e))

    return said, r, audio
text, r, audio = get_audio()


if "hello" in text:
    speak("hello, what is your name?")
    name = r.recognize_google(audio)
    time.sleep(1)
    ("How are you", name)
    if "good" in text:
        speak("Great! My name is bot by the way!")
time.sleep(99)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67577162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档