Python 将实时语音与Tkinter GUI接口
我想将pocketsphinx livespeech与Python tkinter GUI接口,这样GUI在前端可见,而livespeech在后端工作;livespeech代码总是先运行,直到我停止代码,GUI才会显示;所以我将无法执行我所需的任务Python 将实时语音与Tkinter GUI接口,python,tkinter,speech-recognition,pocketsphinx,Python,Tkinter,Speech Recognition,Pocketsphinx,我想将pocketsphinx livespeech与Python tkinter GUI接口,这样GUI在前端可见,而livespeech在后端工作;livespeech代码总是先运行,直到我停止代码,GUI才会显示;所以我将无法执行我所需的任务 #*********************************** IMPORTING MODULES***************** import tkinter from tkinter import* import tkinte
#*********************************** IMPORTING MODULES*****************
import tkinter
from tkinter import*
import tkinter.messagebox
import sqlite3
import os
from pocketsphinx import LiveSpeech, get_model_path
conn = sqlite3.connect('portal.db')
c = conn.cursor()
window = tkinter.Tk()
window.title("Smart Notice Board")
top = Canvas(window,width=400,height=200)
top.pack(fill=X)
def portal():
print("2")
button_5 = Button(text='PORTAL SYSTEM', height = 2, width=17, activebackground = '#33B5e5', bg = 'brown', fg = 'white',command = portal )
top.create_window(80,80, anchor='nw', window = button_5)
#**************** TEXT TO SPEECH CODE***************
model_path = get_model_path()
speech = LiveSpeech(
verbose=False,
sampling_rate=16000,
buffer_size=2048,
no_search=False,
full_utt=False,
hmm=os.path.join(model_path, 'en-us'),
lm=os.path.join(model_path, '8582.lm'),
dic=os.path.join(model_path, '8582.dict')
)
for phrase in speech:
print(phrase)
a=str(phrase)
if a == "HOME":
print('ok')
portal()
print('1')
结果附在下面;
只有现场演讲
当代码退出时,GUI打开
是时候了解一下我是如何按照你的建议行事的了;在函数中划分这两个代码并在代码中包含\多处理,但结果中唯一的区别是现在它只打开livespeech(代码中的fun2),而不打开tkinter GUI(fun)以前,当代码停止时,它会打开GUI,但现在它不会这样做,GUI应该是主线程。尝试将GUI作为主线程,然后调用livespeech,当我退出代码时,仍然会打开GUI。您可以检查线程和主循环之间管道的正确实现。是时候了解我已按照您的建议采取行动了;在函数中划分这两个代码并在代码中包含\多处理,但结果中唯一的区别是现在它只打开livespeech(代码中的fun2),而不打开tkinter GUI(fun)以前,当代码停止时它会打开GUI,但现在它不会这样做,GUI应该是主线程。尝试将GUI作为主线程,然后调用livespeech,当我退出代码时仍然会打开GUI。您可以检查线程和主循环之间管道的正确实现。