首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将语音识别集成到PysimpleGUI + Search中的困难

将语音识别集成到PysimpleGUI + Search中的困难
EN

Stack Overflow用户
提问于 2021-01-11 03:00:24
回答 1查看 153关注 0票数 0

最近,我在一个使用TTS的简单搜索引擎上尝试了一下。但是,我尝试在Pysimple中将语音和文本集成到搜索字段中,并且遇到了一个路障。

我可以让pysimpleGUI识别我说的单词,搜索results.However,搜索引擎机制不把我的演讲文本识别为我输入的值,只返回我在演讲中使用的第一个字母。

例如,我说“今天天气怎么样”,它还给了我字母"W“的定义。

这些是我使用的包:

代码语言:javascript
复制
import wolframalpha
import wikipedia
import speech_recognition as sr
r = sr.Recognizer()
m = sr.Microphone()
import PySimpleGUI as sg
import pyttsx3

Pysimple文本窗口中的所有内容。

代码语言:javascript
复制
layout = [  [sg.Text('Welcome Back Sir')],
            [sg.Text('How can I be of assistance'), sg.InputText()],
            [sg.ReadButton('Speak'), sg.Button('Ok'), sg.Button('Cancel')]]

window = sg.Window('Pybot', layout)
engine = pyttsx3.init()

事件循环处理“事件”并获取输入的“值”。

代码语言:javascript
复制
while True:
    event, values = window.read()
    if event in (None, 'Cancel'):
        break
    if event == 'Speak':
        with m as source:
            r.adjust_for_ambient_noise(source)
            audio = r.listen(source)
            values = r.recognize_google(audio, language='en-US')
            print(values)
    try:
        wiki_res = wikipedia.summary(values[0], sentences=2)
        wolfram_res = next(client.query(values[0]).results).text
        engine.say(wolfram_res)
        sg.PopupNonBlocking("Wolfram Result: "+wolfram_res,"Wikipedia Result: "+wiki_res)
    except wikipedia.exceptions.DisambiguationError:
        wolfram_res = next(client.query(values[0]).results).text
        engine.say(wolfram_res)
        sg.PopupNonBlocking(wolfram_res)
    except wikipedia.exceptions.PageError:
        wolfram_res = next(client.query(values[0]).results).text
        engine.say(wolfram_res)
        sg.PopupNonBlocking(wolfram_res)
    except:
        wiki_res = wikipedia.summary(values[0], sentences=2)
        engine.say(wiki_res)
        sg.PopupNonBlocking(wiki_res)

    engine.runAndWait()

    print (values[0])

window.close()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-11 04:04:58

您使用相同的变量values,所以values[0]w

代码语言:javascript
复制
while True:
    event, values = window.read()
...
            values = r.recognize_google(audio, language='en-US')
...

修订代码

代码语言:javascript
复制
while True:
    event, values = window.read()
    if event in (None, 'Cancel'):
        break
    # print(event, values)
    if event == 'Speak':
        with m as source:
            r.adjust_for_ambient_noise(source)
            audio = r.listen(source)
            value = r.recognize_google(audio, language='en-US')
            print(value)
            window[0].update(value)
            window.write_event_value('Ok', '')
    elif event == 'Ok':
        if values[0] == '':
            continue
        try:
            wiki_res = wikipedia.summary(values[0], sentences=2)
            wolfram_res = next(client.query(values[0]).results).text
            engine.say(wolfram_res)
            sg.PopupNonBlocking("Wolfram Result: "+wolfram_res,"Wikipedia Result: "+wiki_res)
        except wikipedia.exceptions.DisambiguationError:
            wolfram_res = next(client.query(values[0]).results).text
            engine.say(wolfram_res)
            sg.PopupNonBlocking(wolfram_res)
        except wikipedia.exceptions.PageError:
            wolfram_res = next(client.query(values[0]).results).text
            engine.say(wolfram_res)
            sg.PopupNonBlocking(wolfram_res)
        except:
            wiki_res = wikipedia.summary(values[0], sentences=2)
            engine.say(wiki_res)
            sg.PopupNonBlocking(wiki_res)

        engine.runAndWait()

window.close()

它会阻塞当音频处理,也许你可以尝试多线程编程,否则GUI将没有响应的时候。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65660829

复制
相关文章

相似问题

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