Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ErrorComing name错误:name';文本';没有定义_Python_Nameerror_Google Text To Speech_Google Translation Api_Gtts - Fatal编程技术网

Python ErrorComing name错误:name';文本';没有定义

Python ErrorComing name错误:name';文本';没有定义,python,nameerror,google-text-to-speech,google-translation-api,gtts,Python,Nameerror,Google Text To Speech,Google Translation Api,Gtts,它给出了一个错误[第19行,在 translated=translator.translate(text,dest=output\u lang) NameError:未定义名称“text”,但第14行中定义了非常好的文本变量 我的代码请不要复制: import speech_recognition as sr import gtts import playsound recognizer = sr.Recognizer() translator = googletrans.Translator

它给出了一个错误[第19行,在 translated=translator.translate(text,dest=output\u lang) NameError:未定义名称“text”,但第14行中定义了非常好的文本变量

我的代码请不要复制:

import speech_recognition as sr
import gtts
import playsound

recognizer = sr.Recognizer()
translator = googletrans.Translator()
input_lang = 'en'
output_lang = 'es'
try:
    with sr.Microphone() as source:
        print('Speak Now')
        voice = recognizer.listen(source)
        text = recognizer.recognize_google(voice, language=input_lang)
        print(text)
except:
    pass

translated = translator.translate(text, dest=output_lang)
print(translated.text)
converted_audio = gtts.gTTS(translated.text, lang=output_lang)
converted_audio.save('Output.mp3')
playsound.playsound('Output.mp3')
# print(googletrans.LANGUAGES)

请尽快给出解决方案。

try
块失败时,您需要向
text
变量提供一个值,或者只提供一个默认值。我想你可以做如下的事情:

import speech_recognition as sr
import gtts
import playsound

recognizer = sr.Recognizer()
translator = googletrans.Translator()
input_lang = 'en'
output_lang = 'es'
# text = "You can put default text here too in case the try fails"
try:
    with sr.Microphone() as source:
        print('Speak Now')
        voice = recognizer.listen(source)
        text = recognizer.recognize_google(voice, language=input_lang)
        print(text)
except:
    text = "Sorry, I am not able to catch you, please try again."

translated = translator.translate(text, dest=output_lang)
print(translated.text)
converted_audio = gtts.gTTS(translated.text, lang=output_lang)
converted_audio.save('Output.mp3')
playsound.playsound('Output.mp3')
# print(googletrans.LANGUAGES)

似乎正在引发异常,控制将转到
except
块。 由于在except块中未初始化
文本
值,因此出现此错误

如果可能,可以给它一个默认值。
如果没有,那么您可以尝试查找即将发生的异常并解决该异常。

可能是您的代码引发了异常,但由于您没有检查它,因此无法看到它。 在Exception块中检查此项

except Exception as e:
    print(e)

只有在前一行未出现异常时,才会定义文本。你看到打印的文本了吗?也许您需要处理异常。不要捕获您不知道如何处理的错误。如果在输入阶段出现错误,
text
将是未定义的,但您只是向前跳并隐藏错误。例如,如果没有麦克风,代码就没有任何有意义的方法来执行任何操作。在这种情况下,出错失败要比静默失败好。您的问题是您使用
try
除非没有异常类型,否则代码可能会静默失败。尝试删除
Try-except
或在
Try
之前定义
text
。(提示:永远不会)