【发布时间】:2021-03-31 12:54:07
【问题描述】:
我正在 python 和 tkinter 中创建语音助手,并使用 pyinstaller 将其转换为可执行文件。命令行是:
pyinstaller -F -w main.py
这是我的代码:
import pyttsx3
from pyttsx3.drivers import sapi5
import speech_recognition as sr
import time
from tkinter import *
from datetime import datetime
engine = pyttsx3.init()
rate = engine.getProperty("rate")
engine.setProperty("rate", 175)
volume = engine.getProperty("volume")
engine.setProperty("volume", 0.75)
voices = engine.getProperty("voices")
engine.setProperty("voice", voices[2].id)
window = Tk()
var = StringVar()
var1 = StringVar()
class App:
def __init__(self):
window.title("Voice-Assistant")
window.geometry("1280x720")
window.resizable(False, False)
window.iconbitmap(r"C:\Users\itsju\Documents\KarenDef\Projects\Karen10\IconofKaren.ico")
karenW = Frame(window, bg="#3498db")
karenW.place(relwidth=1, relheight=0.5, x=5, y=365)
spokeW = Frame(window, bg="#1a5276")
spokeW.place(relwidth=1, relheight=0.5, x=5)
karenT = Label(karenW, bg="#3498db", fg="white", font=("Consolas", 16), textvariable=var1, wraplength=1230, justify="left")
karenT.place(x=10, y=28)
spokeT = Label(spokeW, bg="#1a5276", fg="white", font=("Consolas", 16), textvariable=var, wraplength=1230, justify="left")
spokeT.place(x=10, y=28)
karenL = Label(karenW, bg="#3498db", fg="white", font=("Calibri 11 bold underline"), text="Karen")
karenL.pack()
spokeL = Label(spokeW, bg="#1a5276", fg="light blue", font=("Calibri 11 bold underline"), text="You")
spokeL.pack()
def talk(self, audio):
var1.set(audio)
window.update()
engine.say(audio)
engine.runAndWait()
def get_command(self):
r = sr.Recognizer()
with sr.Microphone() as source:
var1.set("Listening...")
window.update()
audio = r.listen(source)
spoke = ""
try:
var1.set("Recognizing...")
window.update()
spoke = r.recognize_google(audio, language='nl')
var.set(spoke)
except sr.UnknownValueError:
var1.set("Couldn't get that!")
window.update()
time.sleep(0.25)
var.set("")
except sr.RequestError:
var1.set("Check your internet connection!")
window.update()
time.sleep(0.5)
var.set("")
return spoke.lower()
a = App()
while True:
spoke = get_command()
if 'hello' in spoke:
a.talk("Hello there!")
break
所以当它被转换后,我运行程序,它会在我的应用程序中打印“正在听...”。然后,如果我说“你好”,我的程序应该识别它并说“你好!”背部。虽然,它进入了例外之一!如果我用终端转换我的程序,命令行:pyinstaller -F main.py 没有-w 它工作正常!但我不想打开终端和我的 tkinter 应用程序。
希望有人能帮我解决这个奇怪的问题!谢谢。
【问题讨论】:
-
那么你的意思是,使用终端时没有问题吗?在“窗口”上执行此操作时会出现错误。无论如何,终端会显示什么,比如写了什么或什么
-
没错!如果我在没有“窗口”的情况下转换它并运行它,终端中不会打印或显示任何内容,它只是运行正常。
-
pyinstaller -c -F main.py是什么 -
我试过了,但是终端出现了!然后我试了
pyinstaller -c -F -w main.py居然是同样的问题 -
-c 是控制台的缩写,UDH 表示 -c AND -w。你的问题很奇怪。
标签: python tkinter speech-recognition pyinstaller